- 博客(85)
- 收藏
- 关注
原创 从 TCP 90μs 到 SHM 28μs:我的 RPC 框架零拷贝优化历程
在做这次 TCP → SHM 的迁移之前,我对进程间通信的理解就是"socket 一发一收"。做完之后才意识到——即使是本机 loopback,走 TCP 也要穿过整条内核网络栈,中间每一步拷贝和系统调用都是成本,SHM 本质上就是把"中间人"全去了,两个进程直接在同一块内存上干活。严格来说,SHM 数据路径上从用户 Buffer memcpy 到 ring buffer 这一步仍然是 CPU 拷贝,不算"零拷贝"。
2026-07-24 20:16:52
587
原创 通讯录完善版本(详细讲解+源码)
经过长达六个月的时间,年迈的博主终于想起来,通讯录还需要完善,那么这篇文章就对我们的初代通讯录(初代通讯录(详细讲解+代码)_化学系通讯录最简单三个步骤-CSDN博客)进行完善,增加动态更新内存的内容,以及建立一个文件,将通讯录的信息保存下来;
2025-04-25 20:44:43
1575
57
原创 深入理解自旋锁与互斥锁:原理、区别与应用场景
互斥锁是一种阻塞型锁,当一个线程尝试获取已被其他线程持有的互斥锁时,该线程会被操作系统挂起,进入睡眠状态,直到锁被释放后才被唤醒。自旋锁是一种非阻塞型锁,当一个线程尝试获取已被其他线程持有的自旋锁时,该线程会在一个循环中不断尝试获取锁,而不是被挂起。自旋锁和互斥锁自旋锁:适合短时间等待、多核环境、实时性要求高的场景互斥锁:适合长时间等待、单核环境、需要节省CPU的场景在实际开发中,应该根据性能测试结果和具体业务需求来选择合适的同步机制。现代编程语言和框架通常提供了更高级的抽象,如读写锁条件变量信号量。
2026-08-23 16:08:58
320
原创 K 个一组翻转链表
public:while (end!= ne) {ne = cur;cur = tmp;cur = prev;i < k;++i) {if (!cur)prev = end;
2026-08-09 17:24:32
148
原创 深入理解 std::list::splice:接口详解与实战示例
是操作链表时一把高效的"瑞士军刀"。清晰区分splice三种用法的适用场景。在需要合并、分割或在链表间移动元素时,熟练地选择正确的重载。理解其常数时间或线性时间的复杂度特性,并能在实际项目中加以应用,提升程序效率。下次当你面对需要操作链表节点指针的场景时,不妨先想想是否可以用splice来优雅地解决。
2026-08-08 19:38:54
332
原创 最长有效括号
dp:class Solution {public: int longestValidParentheses(string s) { int n = s.size(); vector<int> dp(n + 1, 0); int maxcnt = 0; for (int i = 1; i < n; ++i) { if (s[i] == ')') { if (s[i-1] == '(')
2026-07-26 17:18:00
180
原创 最长回文子串
public:if (n < 2)return s;gbry = len;start = l;--l;++r;i < n;++i) {pick(i,i);
2026-07-23 10:46:46
244
原创 在排序数组中查找元素的第一个和最后一个位置
public:elser = mid-1;left = l;elsel = mid+1;right = r;
2026-04-04 11:20:22
56
原创 kruskal
int n,m;int x,y,z;}a[M];i<=m;++i){cnt++;cin>>n>>m;i<=n;i<=m;++i){kruskal();return 0;
2026-03-31 17:21:05
39
原创 网络延迟时间
public:pq;pq.pop();if (st[u])continue;if (!i < n;++i) {return -1;return res;
2026-03-29 22:40:03
194
原创 大臣的旅费
/ 经过 cur 的最长路径 = 最长的两条子路径之和。// 只有一条子路径,该路径本身就是经过 cur 的路径。0:y[sz-1];// 返回从 cur 向下能到达的最远距离。//叶子节点且不是根,返回0。// 存放从 cur 向下的所有路径长度。//往下递归寻求最大路径和。
2026-03-29 20:25:18
389
原创 单源最短路径
int n,m,s;i<=n;dist[s]=0;pq.pop();st[u]=true;if(!i<m;++i){int u,v,w;dijkstra();i<=n;return 0;
2026-03-28 22:37:05
224
原创 分割等和子集
/枚举从0-n-1的数的组合能不能和为target dp[i][j]表示前i+1个元素能不能组成和为j。if (num > j) {//如果这个数比枚举到的数大,拿不了。if (sum % 2 == 1)//如果总和是奇数,不行。dp[i][0]=1;
2026-03-23 20:30:24
168
1
空空如也
学习c语言一个星期,记录一下
2024-10-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅