自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 深入剖析linux内核epoll源码与原理

rbtree 用来存储所有 io 的数据,方便快速通过io_fd 查找. 对于 rbtree 何时添加:执行 epoll_ctl EPOLL_CTL_ADD 操作,将 epitem 添加到 rbtree 中。关于水平触发与边沿触 发放在 epoll 回调函数执行的时候,如果为 EPOLLET(边沿触发),与之前的 event 对比,如 果发生改变则调用 epoll 回调函数,如果为 EPOLLLT(水平触发),则查看 event 是否为 EPOLLIN, 即可调用 epoll 回调函数。

2023-09-02 20:44:29 217

原创 深入剖析池式基础组件---------线程池(手撕线程池代码)

深入剖析池式基础组件---------线程池(手撕线程池代码)

2023-08-28 01:15:52 218 2

原创 深入浅出谈谈网络reactor模式与百万并发

网络reactor模式与服务器网络连接百万并发的实现讲解

2023-08-13 01:42:17 288 2

原创 深入剖析linux 网络io多路复用

而在用户进程这边,整个进程会被阻塞。所以,blocking IO 的特点就是在 IO 执行的两个阶段(等待数据和拷贝数据两个阶段)都被 block 了,所以服务器端的进程就被阻塞在accept()函数这里,一种解决方法是将accept()后的程序放在另外的线程中处理,让accept()继续监听,但这会涉及到线程的创建与销毁,有性能延迟,而创建一个线程池是对应的方法。在linux系统中,涉及到不同资源之间的信息交换的行为叫做io,比如,内存io,磁盘io,网络io就是用户程序与内核程序之间的网络信息交换。

2023-08-10 00:33:59 176 2

原创 深入浅出谈谈网络协议栈的实现原理

在Linux系统中,stdin的文件为0,stdout为1,stderror为2,如果系统没有其他的fd处理,返回的fd将为3,在创建一个socket,创建成功,则fd=4;调用close方发送finish包,表明想要关闭该连接,j进入fin_wait1阶段,另一方发送ack确认包,这时候主动方进入fin_wait2阶段,确认自己的网络信息处理是否完毕,完成后,被动方发送finish包,确认无网络数据处理, 主动方将发送ack确认包,说明网络数据处理完毕。如果bind()失败,则返回负数。

2023-08-09 00:08:38 141 1

原创 谈谈处理海量数据的数据结构-——Hash与BloomFilter

而hash算法的思想是先将元素通过hash函数进行一个区间映射,对元素样本进行拆分,缩小了某一元素查找的样本量,在进行区间类的元素比较,从而确定该样本有该元素。siphash( redis6.0 当中使用,rust 等大多数语言选用的 hash 算法来实现 hashmap,sipHash的设计考虑了安全性和性能之间的平衡,既能够提供足够的安全性,又能够在大多数应用场景下保持高速的计算速度。高可用性:当节点发生故障或增加时,只需调整少量的虚拟节点映射关系,不会导致大规模的数据迁移,从而提高了系统的可用性。

2023-07-30 16:35:11 147 4

原创 谈谈一种广泛使用的数据结构——红黑树

讲讲红黑树

2023-07-29 19:04:25 178

原创 使用C++11新特性实现的线程池

分享一个C++11新特性实现的线程池,感兴趣的朋友,可以在自己的IDE上运行,学习。

2023-05-28 18:14:17 278 1

原创 使用C++11新特性构建一个线程池

讲解C++11特性:原子变量,异步操作,回调方法,可变模板参数

2023-05-27 23:49:46 264 1

原创 使用C++11特性实现一个高效线程池

如果wait包含第二个参数,如果第二个参数不满足,那么wait将解锁互斥量并堵塞到本行,直到某 一个线程调用notify_one或notify_all为止,被唤醒后,wait重新尝试获取互斥量,如果得不到,线 程会卡在这里,直到获取到互斥量,然后继续判断第二个参数,如果表达式为false,wait对互斥 量解锁,然后休眠,如果为true,则进行后面的操作。如果条件满足则向下执行;解锁正在等待当前条件的线程中的一个,如果没有线程在等待,则函数不执行任何操作,如果正在等的线程多余一个,则唤醒的线程是不确定的。

2023-05-23 18:53:10 257

原创 谈谈右值引用与移动语义

一文搞懂为什么有右值引用和移动语义

2023-05-05 23:17:47 320

原创 谈谈C++智能指针

weak_ptr 是一种不控制对象生命周期的智能指针, 它指向一个 shared_ptr 管理的对象. 进行该对象的内存管理的是那个强引用的shared_ptr, weak_ptr只是提供了对管理对象的一个访问手段。weak_ptr 设计的目的是为配合 shared_ptr 而引入的一种智能指针来协助 shared_ptr 工作, 它只可以从 一个 shared_ptr 或另一个 weak_ptr 对象构造, 它的构造和析构不会引起引用记数的增加或减少。一个智能指向指针对象的指针,该对象在堆区;

2023-05-04 16:47:03 713 2

空空如也

空空如也

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

TA关注的人

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