开源框架学习及使用
文章平均质量分 71
fmt/boost/libevent/spdlog等
back2childhood
cpp/java/macos
展开
-
高性能定时器--时间轮/多级时间轮
运行原理指针指向轮子上的一个槽,轮子以恒定的速度顺时针转动,每转动一步就指向下一个槽(虚线指针指向的槽),每次转动称为一个tick,一个tick的时间称为时间轮的槽间隔slot interval,即心搏时间。该时间轮转一周的时间是槽数槽间隔(Nsi)。每个槽指向一个定时器链表,每条链表上的定时器具有相同的特征:他们的定时时间相差N*si的整数倍。时间轮正是利用这个关系将定时器散列到不同的链表中,假如现在指针指向槽cs,我们要添加一个定时时间为ti的定时器,则该定时器将被插入槽timer slot对应的链原创 2023-05-03 17:34:16 · 1069 阅读 · 0 评论 -
高性能定时器介绍及代码逐行解析--时间堆
socket选项SO_RCVTIMEO和SO_SNDTIMEOSIGALRM信号I/O复用系统调用的超时参数。原创 2023-05-03 16:11:44 · 1022 阅读 · 1 评论 -
C++数据库连接池逐行解析libmysqlclient
在处理用户注册,登录请求的时候,我们需要将这些用户的用户名和密码保存下来用于新用户的注册及老用户的登录校验,相信每个人都体验过,当你在一个网站上注册一个用户时,应该经常会遇到“您的用户名已被使用”,或者在登录的时候输错密码了网页会提示你“您输入的用户名或密码有误”等等类似情况,这种功能是服务器端通过用户键入的用户名密码和数据库中已记录下来的用户名密码数据进行校验实现的。同样注意在对连接池操作时(获取,释放),要用到锁机制,因为它被所有线程共享。原创 2023-05-03 00:28:08 · 728 阅读 · 0 评论 -
C++ 简易线程池代码逐行解析
多线程任务中可能会频繁创建线程,这将会导致大量的资源消耗,线程池是一种帮助开发者更简单更高效的控制并发的技术。程序一开始变初始化若干线程并让他们保持休眠,直到有任务发来,线程接收到条件变量便被唤醒去执行任务。原创 2023-03-15 15:40:19 · 287 阅读 · 1 评论 -
spdlog库安装及使用
spdlog/fmt原创 2023-04-27 15:40:17 · 272 阅读 · 0 评论