
Golang
文章平均质量分 65
探索谈论Golang语言
赛尔号副船长
凡事有交代,件件有着落,事事有回音。
展开
-
prometheus索引文件
Prometheus 的索引磁盘格式通过组织符号表、标签值索引、时间序列索引和倒排索引,使得大规模时序数据的存储和查询变得高效。希望这个详细的解释和例子能帮助你更好地理解 Prometheus 的索引磁盘格式!如果有更多问题,欢迎继续提问。原创 2024-05-26 23:39:50 · 441 阅读 · 0 评论 -
Golang RPC实现-day02
7天学习Golang RPC原创 2024-05-15 22:12:56 · 510 阅读 · 0 评论 -
Golang RPC实现-day01
学习Golang RPC原创 2024-05-15 00:00:31 · 517 阅读 · 0 评论 -
Golang Gin框架
Gin底层使用的是net/http的逻辑,net/http主要是说,当来一个网络请求时,,比如Get、Post等请求方式都对应不同的一颗。,采用了前缀树的实现方案,不同请求方法对应一颗。开启另一个协程去处理后续(类似epoll)。,他的处理逻辑就像一个环,对于函数程序。如果你学过Java的话,其实。,相同请求方式的都在同一棵。主要是给大家一个基本概念。原创 2024-04-02 12:36:49 · 622 阅读 · 0 评论 -
Golang Context是什么
Context可以用来保存一些账户信息,包括用户名、邮箱等多个接口可能需要的公共信息。1、首先说一下Context的基本作用,然后在讨论他的实现。Context的结构我们可以看一张图。的数据,子Context是。,我们可以看看他的结构体。,并且Context B会。是一个管道,负责接收。原创 2024-04-02 12:28:04 · 1453 阅读 · 0 评论 -
Golang 切片作为函数参数底层原理解析(一)
后续我们再讲哈希表传参为什么和切片不一样,主函数一直都接收到另一个函数对哈希表的赋值行为,哪怕在另一个函数发生了孔融行为。,追加元素前后,指针变量指向的结构体应该不是同一个,但是运行结果发现,追加元素前后,或者全程指向的。Data指针、长度、容量的值,不影响结构体本身的地址,但是结果告诉我,他变了,这是为什么?一个是底层数据指针,注意我这里说的是指针,或者说Data的值(地址)本身是可以变化的,切片传递后,是用新的一个形参接收传递过来的值,随后发生了扩容行为。可以发现,在test1函数内,发生了。原创 2024-03-27 13:31:04 · 841 阅读 · 0 评论 -
Golang 哈希表作为函数参数底层原理解析(二)
不过你可能会疑惑,初始化时候哈希表大小是0,添加元素不是会发生扩容行为吗,发生了扩容行为,行参map的buckets应该是指向新的桶,和原map的buckets不是同一个啊,为什么原map还能看到。可以看到,Golang的参数传递都是值传递,在testMap函数中,哈希表发生了扩容行为,但是哈希表并不像切片一样,主函数的哈希表。那为什么,行参map的buckets应该是指向新的桶,和原map的buckets不是同一个,为什么原map还能看到。,指针作为参数传递的时候,其实是复制的地址,也就是。原创 2024-03-27 17:41:34 · 495 阅读 · 0 评论 -
Golang 内存管理和垃圾回收底层原理(二)
就是在删除一个对象引用链后插入一个屏障进行标记的行为,具体删除后屏障的过程不多进行解释,他的缺点就是。,如果有太多的对象需要进行标记,可能会导致用户程序感觉到卡顿,造成服务。,无论是Java还是Golang,在标记指令前,都会插入一个叫“但是,对于栈上的变量,由于屏障是一种消耗时间的行为,为了保证栈。”的优缺点,避免二次标记和精度缺失的问题,对于。的,那么对于栈上的需要回收的对象,需要在完成。的特点,所以对于栈上的变量的标记,是。原创 2024-03-30 15:44:43 · 450 阅读 · 0 评论 -
Golang 内存管理和垃圾回收底层原理(一)
那页堆是干嘛的,如果你是学过Java,也可以直接理解成堆,不过既然是讲Golang,我们给出一个稍微规范一点的定义,他就是。,还有底层的虚拟内存,虚拟内存我们不用太关心,可以看成操作系统那一层面的内容。前面我们已经说了,内存管理单元在各级内存空间中,是如何进行管理的,那么。Golang申请内存单元的行为,根据申请内存大小分为了微小大对象,针对。哈哈,有说的不对的地方敬请指教,写文不易,给俺一个。,其实和操作系统的内存管理的道理是相同的。的,可以一个看到共性,对于。,对于资源的占用,都是要。原创 2024-03-30 16:20:42 · 468 阅读 · 0 评论 -
Golang Channel底层实现原理
首先,我们看Channel的结构体简要介绍管道结构体中,几个关键字段在Golang中,管道是分为有缓冲区的管道和无缓冲区的管道。这里简单提一下,缓冲区大小为1的管道和无缓冲区的管道的区别,如果是缓冲区大小为1的管道,发送者A发送数据后,发送者A可以去干其它行为,但是别的发送者想发送数据,会阻塞。对于发送者A来说,这是一个非阻塞行为。无缓冲区的管道的区别,发送者A发送数据后,发送者A会被阻塞,直到管道数据被读取,发送者A才会被唤醒,对于发送者A来说,这是一个阻塞行为。回归正题,buf是一个指针变量,当有缓冲区原创 2024-03-30 17:14:14 · 1079 阅读 · 1 评论 -
Golang 哈希表底层实现原理
简单介绍一下结构体中几个关键的字段,原创 2024-03-30 23:03:13 · 757 阅读 · 0 评论 -
Golang和Java对比
Golang和Java对比原创 2024-03-30 23:15:07 · 602 阅读 · 0 评论