golang
文章平均质量分 72
keydous
笔记而已
展开
-
关于ZeroMQ
ZeroMQZMQ是一个传输层,socket lib,底层的网络通信库,在socket api上进行了封装,将网络通讯、进程通讯和线程通讯抽象成统一的API接口ZMQ和Socket区别Socket是端到端(1:1),ZMQ是N:MZMQ用于node和node通信三种模式应答模式(类似半双工)使用REQ-REP套接字发送和接受消息是需要遵循一定规律的。客户端首先使用zmq_send()发送消息,再用zmq_recv()接收,如此循环。如果打乱了这个顺序(如连续发送两次)则会报错。类似地,原创 2021-08-09 23:24:34 · 325 阅读 · 0 评论 -
Golang map和 sync.Map
Golang map和 sync.Mapmap底层实现和扩容机制sync.map安全机制1. map和java中hashmap一样,Go中的map是基于哈希来实现的,同样也是采用链地址法来解决法系冲突,采用的是数组+链表的方式来表达map,这一点和java不同,java是通过数组+链表+红黑树来实现的。1.1. 结构体hmaptype hmap struct { count int //当前保存元素的个数 flags uint8 B uint8 /原创 2021-08-01 22:05:16 · 1071 阅读 · 0 评论 -
golang 垃圾回收机制
golang 垃圾回收机制术语allocatorcollector自动内存管理机制一般包含allocator(分配器)和collector(回收器)。allocator负责为应用代码分配对象,而collector则负责寻找存活的对象,并释放不再存活的对象mutatormutate的是变化的意思,mutator就是改变者,在GC里,指的是改变对象之间引用关系的实体,可以简单的理解为我们写的的应用程序(运行我们写的代码的线程, 协程)。golang垃圾回收算法-三色标记法三色标记是以标记原创 2021-07-11 12:52:48 · 321 阅读 · 0 评论 -
goroutine调用机制
goroutine调用机制1. GPM模型G:理解为任务,代表着一个goroutineP:理解为处理器,每个M都在P上面运行,数量是GOMAXPROCS,最大256M:理解为线程,创建M时都会在底层创建线程,G都是在M上运行2. gorountine过程goroutine执行时,相对应的就是创建一个任务,这个任务进入到队列中(全局队列)如果有空闲的处理器,则会创建线程来循环执行任务。该线程会先从本地队列中获取任务,如果本地队列中没有任务了,再从全局队列中获取(获取的数量=全局队列任务量原创 2021-07-11 12:50:45 · 267 阅读 · 1 评论 -
golang中byte和rune
golang中byte和runebytebyte alias for uint81byte = 8bit强调数据是raw datarunerune alias for int32int32 = 4byte表示Unicode的code pointuint8 the set of all unsigned 8-bit integers (0 to 255)int32 the set of all signed 32-bit integers (-214748原创 2021-06-30 10:06:25 · 116 阅读 · 0 评论