数据结构
文章平均质量分 95
zhangshen023
github.com/zhangshen023
展开
-
了解一下Go中的“sb“代码?
一、前言相信很多java程序员都背过或者用过StringBuilder或者StringBuffer这种sb代码。最近工作需要查看Helm的源码的时候,注意到一个特别使用的字符串连接的方法strings.Builder,咋一看特别像java的StringBuilder,所以研究了下它,以及了解了下其他连接字符串的方法,结果发现确实strings.Builder的效果显著。二、内容1.首先我放出我了解的几个方法,并给出在我本地电脑跑benchmark的效果,点击查看代码:①.传统的+号连接func原创 2021-06-22 22:47:43 · 1929 阅读 · 0 评论 -
json:源码解密序列化(二)
文章目录前言一、获取编码器方法二、自定义序列化:TextMarshaler三、编码html标签四、数字如何序列化成字符串:{"age":18} => {"age":"18"}四、匿名结构体的花花肠子1.加了json的tag的匿名结构体和没加tag的匿名结构体2. "-"和"-,"3.2个嵌套的匿名结构体有相同的字段4.匿名结构体的字段和匿名结构体所在结构体的字段相同五、map的序列化支持的key类型六、循环的结构体会报错七、最后说明下一些不被支持的结构体总结前言上一篇博客《json:你或许还不知道原创 2020-12-23 10:40:32 · 419 阅读 · 1 评论 -
go基础之map-迭代(四)
go基础之map-迭代(二)写在之前hiter结构体当前迭代的桶为空(刚开始迭代)迭代下个k/v正常情况溢出情况扩容情况的迭代总结写在之前在文章《go基础之map-写在前面(一)》的示例代码for k, v := range m3 { fmt.Println(k, v)}就是go的map的迭代方法,查看该代码的字节码,发现它调用了底层runtime.mapiterinit方法。本篇会详细分析map的迭代方法。如果想详细查看源码的注释,可以查看我的GitHub,欢迎批评指正。我的打算是把一些常原创 2020-12-03 00:32:13 · 1044 阅读 · 0 评论 -
go基础之map-删除(三)
go基础之map-删除(三)重点详细解析go的map对应的结构体hmapbucket的结构体bmapmap的整体结构总结重点在上篇文章《go基础之map-增和改(二)》已经非常详细的描述了定位key所在的桶以及它所在桶的位置,如果对上篇有所了解之后,该偏博客理解起来就会非常容易。总的来说map的删除主要做了2件事:定位key所在的位置,并且删除key,清除value的内存数据;尝试标记该key所在桶里面的元素为emptyRest,如果该桶处在逸出桶,那么就尝试向前遍历桶的元素为emptyRest。原创 2020-12-02 21:24:35 · 1246 阅读 · 2 评论 -
go基础之map-增和改(二)
go基础之map-增和改(二)写在之前环境说明makemap_small和makemap的区别总结写在之前在上篇文章《go基础之map-写在前面(一)》介绍了map的数据结构,本篇会详细介绍map的增和改的代码实现,由于增和改的实现基本上差不多,所以就纳到一起分析了。如果想详细查看源码的注释,可以查看我的GitHub,欢迎批评指正。我的打算是把一些常用的数据结构都分析一遍,如果有志同道合的人,可以联系我。环境说明我的具体调试环境在《go基础之map-写在前面(一)》](https://blog.cs原创 2020-11-29 11:49:18 · 5040 阅读 · 4 评论 -
go基础之map-写在前面(一)
go基础之map-写在前面(一)为什么分析map我的环境功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入为什么分析map在计算机编程语言当中,用的最多的数据结构估计就是map。map以他近乎o(1)的查找效率和修改效率让他在大多原创 2020-11-25 16:16:16 · 1847 阅读 · 6 评论