首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
就想叫yoko
掘友等级
程序员
https://github.com/q191201771
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
27
文章 27
沸点 0
赞
27
返回
|
搜索文章
最新
热门
redis源码阅读之面向哈希表优化
2020年了,给自己加个任务,把redis代码完整读一遍。我新建了一个github项目(地址在文章末尾),会在redis源码之上增加注释,后续也会为其中一些值得拎出来说的点单独写文章。 首先,科普一下哈希表(hash table)的常规实现。一般来说,哈希表基于数组实现,数组的…
[译] Go语言使用TCP_NODELAY控制发包流量
编写健壮且高性能的网络服务需要付出大量的努力。提高服务性能的方式有很多种,比如优化应用层的代码,更进一步,还可以看看垃圾回收器,操作系统,网络传输,以及部署我们服务的硬件是否有优化空间。 TCP/IP协议栈中的一些算法会影响到服务性能。本文将简单介绍其中的Nagle算法,与Na…
利用CPU cache特性优化Go程序
大家都知道,内存的速度远快于磁盘的速度,但事实上,跟CPU的处理速度相比,内存还是太慢了。CPU不愿意老是等内存,于是就有了CPU cache。CPU cache的速度比内存快数十倍。 CPU cache位于CPU和内存之间,CPU读取数据时,并不是直接从内存读取,而是先从CP…
[译] Go开源项目BigCache如何加速并发访问以及避免高额的GC开销
几天前,我读了一篇关于BigCache的文章,我对它是如何做到以下两点十分感兴趣: 加速并发访问 避免高额的GC开销 于是我去阅读了它的代码。我觉得它的做法很赞,所以我写了这篇文章来与你分享。 BigCache 是一个快速,支持并发访问,自淘汰的内存型缓存,可以在存储大量元素时…
[译] TCP的SYN队列和Accept队列
首先我们必须明白,处于“LISTENING”状态的TCP socket,有两个独立的队列: SYN队列(SYN Queue) Accept队列(Accept Queue) 这两个术语有时也被称为“reqsk_queue”,“ACK backlog”,“listen backlo…
Go语言源码阅读之bytes.Buffer
Go标准库中的bytes.Buffer(下文用Buffer表示)类似于一个FIFO的队列,它是一个流式字节缓冲区。 我们可以持续向Buffer尾部写入数据,从Buffer头部读取数据。当Buffer内部空间不足以满足写入数据的大小时,会自动扩容。 流式字节缓冲区一般会有两个下标…
[译] Go语言结构体中属性的顺序将影响结构体的大小
在Go语言中,结构体的大小取决于内部属性的类型以及它们的排列顺序。 上面这个结构体的大小和下面这个结构体的大小是不同的,尽管它们只是属性的定义顺序不同。 为什么会这样?可以把内存想象成是由一个一个固定大小的小盒子组成的。如果结构体的某个属性的大小大于当前盒子剩余的大小,那个这个…
[译] linux内存管理之RSS和VSZ的区别
RSS是Resident Set Size(常驻内存大小)的缩写,用于表示进程使用了多少内存(RAM中的物理内存),RSS不包含已经被换出的内存。RSS包含了它所链接的动态库并且被加载到物理内存中的内存。RSS还包含栈内存和堆内存。 VSZ是Virtual Memory Siz…
[译] Go语言如何使用条件编译
当开发需要依赖底层平台或处理器体系特性的Go包时,提供对应的特定实现是非常有必要的。 Go没有预处理,没有宏定义系统,不可以像c语言那样使用#define来控制是否包含平台相关的特定代码。作为替代,Go使用go/build包中定义的标签系统(system of tags)和命名…
Go语言pprof备忘录
Go语言pprof备忘录
下一页
个人成就
文章被点赞
40
文章被阅读
36,275
掘力值
703
关注了
0
关注者
1,201
收藏集
1
关注标签
1
加入于
2019-05-30