摘要: 导包顺序 阅读全文
posted @ 2020-12-08 11:51 azi-v 阅读(113) 评论(0) 推荐(0) 编辑
摘要: Go的plugin .so文件的生成 首先创建一个mingTest包,包中创建remainder.go文件 文件内容如下: package main import "fmt" func GetRemainder() { fmt.Println(150%500) } remainder.go文件作为生 阅读全文
posted @ 2020-12-08 11:42 azi-v 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 左移右移 const ( // 将 1 左移 100 位来创建一个非常大的数字 // 即这个数的二进制是 1 后面跟着 100 个 0 Big = 1 << 100 // 再往右移 99 位,即 Small = 1 << 1,或者说 Small = 2 Small = Big >> 99 ) 阅读全文
posted @ 2020-12-08 11:35 azi-v 阅读(61) 评论(0) 推荐(0) 编辑
摘要: for range for循环的range形式可遍历切片或映射。 当使用 for 循环遍历切片时,每次迭代都会返回两个值。第一个值为当前元素的下标,第二个值为该下标所对应元素的一份副本。 for 循环语句 初始化语句:在第一次迭代前执行 条件表达式:在每次迭代前求值 后置语句:在每次迭代的结尾执行 阅读全文
posted @ 2020-12-08 11:28 azi-v 阅读(59) 评论(0) 推荐(0) 编辑
摘要: interface底层实现 struct Eface { Type* type; void* data; }; struct Iface { Itab* tab; void* data; }; interface实际上就是一个结构体,包含两个成员: 指向具体数据的指针 类型信息 struct Typ 阅读全文
posted @ 2020-12-08 10:51 azi-v 阅读(60) 评论(0) 推荐(0) 编辑
摘要: Goroutine可以动态的伸缩栈的大小,最小2-4kb,最大1GB 阅读全文
posted @ 2020-12-08 10:49 azi-v 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 原子操作就是并发编程中“最小的且不可并行化”的操作。有多个并发体对一个共享资源的操作是原子操作的话,同一时刻最多只能有一个并发体对该资源进行操作。 阅读全文
posted @ 2020-12-08 10:47 azi-v 阅读(177) 评论(0) 推荐(0) 编辑
摘要: CSP channel 带缓冲与不带缓冲的区别 无缓存的Channel上的发送操作总在对应的接收操作完成前发生. 有缓存的Channel相当于一个消息队列,先进先出 range和close 发送者可以通过close关闭一个信道来表示没有需要发送的值了。接收者可以通过为接收表达式分配第二个参数来测试信 阅读全文
posted @ 2020-12-08 10:45 azi-v 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 限流中间件 实现方式 计数器法 滑动窗口 漏桶算法 令牌桶算法 漏桶算法 假设有有个容积大小固定的过滤器,过滤器的入口处流量大小不设限制,容器出口的流量大小固定; 过滤器代表漏桶 过滤器入口表示客户端连接过来的请求 过滤器出口表示通过了限流中间件的客户端请求 因为过滤器容积固定,所以当出口流出的速率 阅读全文
posted @ 2020-12-08 10:37 azi-v 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 查询场景 查询单值数组 查询数组中必须包含某个值 假设在orders集合中,文档包含tags数组字段,现在需要查询tags数组字段中包含red元素的所有文档,那么搜索条件可以写为: {"tags":"red"} 查询内嵌文档数组 查询对象数组中包含某个对象字段必须等于某个值 假设在lessons集合 阅读全文
posted @ 2020-12-08 10:24 azi-v 阅读(283) 评论(0) 推荐(0) 编辑