手撕源码
阿康不会敲代码
这个作者很懒,什么都没留下…
展开
-
muduo网络库:1---muduo简介之(详解muduo线程池模型)
threadInitCallback_ 是一个Task类型,当不为空的时候调用初始化,在线程池没结束的时候从队列中取任务出来执行。tar还会手动释放线程池,因为stop不当是析构的时候调用,不使用只想停止所有任务但不析构的时候也可以调用。再看看线程池的构建和初始化,c++的线程池构建一般都时用构造函数,muduo库的线程池会命一个名。双条件变量控制流程,是因为他有一个任务的上线,tars没用任务上线用的是单条件变量。muduo 线程池的成员变量和tars的差不多。销毁线程池,和停止线程池。原创 2023-04-03 15:22:33 · 461 阅读 · 0 评论 -
手撕腾讯的tars框架的线程池
TODO。原创 2023-04-03 14:47:33 · 140 阅读 · 0 评论 -
kcp源码剖析 (3)
搜索入队的函数iqueue_entry 可以发现在调用ikcp_parse_ack时候 会处理snd_buf中的数据。上文发现了queue读取的时候希望buf是要有序的,那buf里的分片是否是有序的呢,不是可以选择重传了吗。是否是重传后插入到对应的位置然后在一口气写到queue中呢。在ikcp_input函数中调用。原创 2023-03-27 16:29:55 · 452 阅读 · 0 评论 -
kcp源码剖析+kcp应用层组包 (2)
在ikcp_recv中只用sn是rcv_nxt需要的段序号的时候,才会入队,这就保证了有序性。上文说道分段保持有序,可以先联想一下tcp是怎么保存接受的包有序的。原创 2023-03-27 15:45:14 · 449 阅读 · 0 评论 -
kcp源码剖析 (1)
kcp怎么学习,按照学习技术的三部曲那就开始第一步会用,下载kcp源码kcp的代码很简单就一个ikcp.c 和一个ikcp.h官方提提供了一个测试文件test.cppkcp的工作流程是kcp是不提供和网络层相关的代码的,是一个纯算法所以第一步就是封装一个output,需要四个参数,buf len 显而易见是要发送的数据和数据长度kcp参数基本上用不上,user是相当于上下文,下面代码就是将user传入了结构体,而结构体中保存了数据如:sockfd下面放出完整代码。原创 2023-03-27 14:00:51 · 591 阅读 · 0 评论 -
内存池的实现4 alloc内存池
alloc 内存池优点: :本质是定长内存池的改进,分配和释放的效率高。可以解决一定长度内存分配的问题。缺点 :存在内碎片的问题,且将一块大内存切小以后,申请大内存无法使用,别的FreeList挂了很多空闲的内存块而分配不到,但是其他的FreeList缺不够分配。在多线程并发场景下,可能会导致线程安全的问题,可以通过加锁解决,但是锁竞争激烈,申请释放效率会降低。所以内存池主要是为了减少cookie 节省内存 不是为了提高效率...原创 2022-06-23 17:01:03 · 121 阅读 · 0 评论 -
内存池的实现3 固定大小的allocator单线程内存配置器
值得注意的是 到目前为止的内存配置器都是只支持单线程的 要对多线程支持得上锁,下面固定大小 的大小是allocate_1 的大小为基准原创 2022-06-23 16:52:07 · 240 阅读 · 0 评论 -
内存池的实现2 类专用的内存适配器
B类增加了嵌入指针原创 2022-06-23 16:38:59 · 80 阅读 · 0 评论 -
内存池的实现1 :重载
重载operator new 和 delete new原创 2022-06-23 16:36:01 · 108 阅读 · 0 评论 -
手撕源码 SQL解析器 sqlparser
怎么有效的手撕代码呢?源代码:https://gitee.com/owen-lee/sql-parser/tree/master原创 2022-06-23 16:27:10 · 233 阅读 · 0 评论 -
手撕源码 alloc
手撕源码 alloc原创 2022-06-23 10:19:20 · 298 阅读 · 0 评论 -
如何提高阅读源码的能力并且手撕源码
怎么有效的手撕代码呢?原创 2022-06-23 10:18:21 · 184 阅读 · 0 评论