自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (2)
  • 收藏
  • 关注

原创 brpc源码分析--bvar组件(五)

bvar中很重要的一个组件,bvar除了是一个性能优秀的计数器,设计的最重要的使用场景就是监控,通过了解bvar::Adder和bvar::LatencyRecorder两个类,基本就能比较好的掌握其设计。从源码也能看出为了追求高性能做了很多优化。

2024-05-08 10:52:15 792

原创 brpc硬核篇-bthread协程源码分析(四)

brpc实现了M:N用户级线程,即N个pthread系统线程去调度执行M个协程(M远远大于N),一个pthread有其私有的任务队列,队列中存储等待执行的若干协程,一个pthread执行完任务队列中的所有协程后,也可以去其他pthread的任务队列中拿协程任务,即work-steal,这样的话如果一个协程在执行较为耗时的操作时,同一任务队列中的其他协程有机会被调度到其他pthread上去执行,从而实现了全局的最大并发,充分利用多核。

2024-05-08 10:47:12 792

原创 GDB基础使用

GDB 是 GNU Debugger 的简称,是 GNU 软件系统中的标准调试器。

2023-06-28 11:42:23 2000

原创 Redis源码解析--从set hello world学起

​ 之前理解Redis都是停留在八股文(自己也整理了不少)的认知,开这个系列还是希望自己能对Redis有更深的理解。并且矫正之前八股文中,认知有偏差的信息。本篇Redis中持久化,集群、lua脚本、订阅发布、事务等先不做分析。先从服务端的角度全局分析如何实现。主要还是对 Redis 网络模型进行分析,因此会分为这几个部分:注册事件、建立连接、接收请求、解析请求、 执行请求、响应请求等。

2023-06-19 10:00:37 275

原创 redis源码解析–字典(dict结合实例分析)

dict (dictionary 字典),通常的存储结构是Key-Value形式的,通过Hash函数对key求Hash值来确定Value的位置,因此也叫Hash表,是一种用来解决算法中查找问题的数据结构,默认的算法复杂度接近O(1),它的key通常来说是String类型的,但是Value可以是 String、Set、ZSet、Hash、List等不同的类型。所以它也需要考虑所有hashtable所有的问题,如何组织K-V、如何解决键冲突、扩容策略及扩容方式……。

2023-06-16 16:24:06 252

原创 [译] 写一个简单的内存分配器(替换glibc中的malloc函数)

申请的内存块是连续的。如果大小不满足,我们调用malloc()来获取一块被要求大小的内存块,然后使用memcpy()将老内存块的内容拷贝至新的内存块上。代码实现主要为了演示内存分配器的基本工作原理,所以和工业级内存分配器相比,缺少非常多的性能优化,分配内存时也不会按页对齐,但是至少,我们构建的内存分配器是可以工作的。但是释放一块内存的首先前提是,我们知道这块内存的大小。这里,我们做了个快速的乘法结果溢出的检查,然后调用malloc(),并且通过memset()函数将申请的内存内部的值都初始化为0。

2023-05-24 16:47:34 347

原创 BRPC源码分析之(三)--客户端源码分析

brpc客户端调用过程基本就是这样,相信认真看完这篇文章。你对客户端肯定会有一定的收获。之前我们已经分析介绍brpc服务端。后续分析brpc协程,socket套接字资源管理等。关注我,我是dandyhuang。也可wx收dandyhuang_,有什么问题我们可以一起探讨交流。

2023-05-02 11:08:57 691

转载 线程局部存储-pthread_getspecific和pthread_setspecific使用

转载。

2023-04-10 17:37:36 870

原创 grpc-go彻底弄清http2协议如何解析

大家如果理解了tcp协议的大致流程,那么h2协议就不难理解从最开始学习http2的协议,了解client端是先发送HEAD帧,在发送DATA帧数据。一开始可能一直陷入为什么DATA的数据没有接受完,就可以处理业务逻辑。并且回调启协程没有太注意看。recvMsg中read的嵌套非常深。种种原因,叠加在一起,一开始确实一头雾水。不过拨开云雾,逐层慢慢分析,思路还是比较清晰的。client©先和server(S)建立h2握手(settting帧),回复ack。后C继续发送HEAD帧。

2023-01-30 12:07:03 448

原创 内存模型-Memory Model

Cache line是Cache和RAM交换数据的最小单位,通常为64 Byte。当 CPU 把内存的数据载入Cache时,会把临近的共64 Byte的数据一同放入同一个Cache line,因为空间局部性:临近的数据在将来被访问的可能性大。由于CPU Cache缓存数据最小的单位是一个Cache Line(64节),如果两个Core读取了同一个Cache Line,并对Cache Line中的数据频繁读写,就会有的问题。

2023-01-17 20:23:47 1903

原创 go runtime 基础学习-go:linkname

之前在看mutex、channel等源码的时候,发现很多都会调用,,等。当你跳转过去后,会发现没有实际的实现。类似c++中的.h文件。其实,可以理解为runtime.go包里头,为其声明。实现则为在阅读golang源码的时候,也可以看到很多go:linkname指令,理解这个指令有助于我们更好的理解golang代码的底层逻辑。

2022-12-08 15:22:23 361

原创 C++ protobuf反射特征工程正确姿势

搞定这篇protobuf反射不用愁

2022-11-14 11:45:45 1151 2

原创 golang ants协程池源码分析

整理思路还是很清晰的,submit从队列中获取goworker,并启动goroutine,等待任务插入。这里过期的时候,将w放到了sync.pool中,避免每次过期,都需要重新创建Pool。其余就是比较正常的,goroutine检测task任务,队列的存储等。

2022-11-09 10:24:42 464

原创 golang sync.pool源码分析无锁队列实现

Put只能从对头插入,并且每个p只能插入自己的队列,所以可以理解为线程安全的。Get获取先从private -> shared -> 循环其他P -> victim cache -> NewpoolLocal和GMP中的P大小一致,GMP中的思想,尽可能的提高性能。多个地方使用无锁思想。这里特别强调为什么每个p来说,是单个生产者,多个消费者模式。并且只能队头插入,如果对尾也可以插入,这种做法是无法做到无锁操作的。

2022-11-09 10:22:32 762

原创 redigo连接池源码解析

如果没有连接池管理,如每次请求,协程都创建一个连接,那么当请求量巨大时,产生非常大的浪费并且可能会导致高负载下的异常发生,最终导致所有服务都不可用。当Pool.get获取的连接,并没有保存在连接池中,而是当activeConn.Close()时,才调用put,保存连接。因为上面的条件如果都校验成功,说明链表头部有数据,我们只需pop出来,之后返回activeConn,即我们成功后去了一个连接。当pool中设置了Wait,当连接满时(p.ch获取不到数据),会等待直到池中有空闲连接,就会通知ch。

2022-11-09 10:21:37 394

原创 golang im实战入门

学了这篇文章,搞定im不成问题

2022-10-27 10:12:01 1712

原创 golang rate令牌桶源码分析实现

golang令牌桶实现

2022-09-13 14:18:28 448

原创 brpc server端异步回包源码分析(二)

整个逻辑处理,还是比较清晰。收到回调函数,在处理完业务逻辑后,校验一些包的合法性等。就直接调用writev函数回包给客户端了。至此,整个服务端的处理逻辑我们都分析完了,下期我们来分析一下brpc 客户端是如何调用的。

2022-09-04 11:06:03 535

原创 Brpc 服务端收包源码分析(一)

万字解析brpc服务端收包解析整个过程

2022-08-21 15:31:22 1078 1

qrencode二维码生成

用于各种平台的二维码生成,有makefile等的输写,应用于嵌入式,本人已经在mini2440和海思3520D使用过,可以使用

2015-04-28

avi格式转换

用于avi的转换,读写操作,本人NVR研发,亲自试用过。

2015-04-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除