- 博客(993)
- 收藏
- 关注
原创 5 天即曝 CVE:Linux 内核 Rust 代码的首轮安全考验
Rust 的价值在于 "大幅降低安全风险的同时,不牺牲性能与灵活性"。随着 Rust 在 Linux 内核中的应用逐渐深入,类似的 "初期磨合漏洞" 可能还会出现,但这正是技术演进的必经之路 —— 而 Rust 带来的安全红利,终将在长期实践中逐渐显现。往期文章推荐为什么很多人劝退学 C++,但大厂核心岗位还是要 C++?【大厂标准】Linux C/C++ 后端进阶学习路线音视频流媒体高级开发-学习路线C++ Qt学习路线一条龙!(桌面开发&嵌入式开发)Linux内核学习指南,硬核修炼手册。
2025-12-20 15:22:33
1004
原创 比互斥锁更灵活?深入 C++ 信号量的高效线程同步机制
1.1、本质定义限制并发访问共享资源的线程 / 进程数量;协调多个执行单元的执行顺序,避免数据竞争。P 操作(Wait):尝试申请资源,计数器减 1;若计数器为负,当前线程 / 进程阻塞,进入等待队列;V 操作(Post):释放资源,计数器加 1;若存在等待线程 / 进程,唤醒其中一个(公平性由实现决定)。信号量机制本质上是一种"许可"机制,通过许可的数量来控制同时访问共享资源的线程数量。1.2、核心特性。
2025-12-04 15:25:30
713
原创 一文吃透 C++ 虚函数表:多态的底层密码
在没有调试器的场景(如生产环境日志),可通过代码手动遍历 vtable,打印虚函数地址,辅助定位问题。public:public:} // 新增虚函数// 遍历vtable:打印所有虚函数地址(直到NULL)// 1. 获取vptr:GCC下obj的地址就是vptr的地址cout << "vptr地址:" << (void*)vptr << endl;// 2. 遍历vtable:直到条目为NULL(GCC下vtable末尾有NULL标记)vptr[i]!= nullptr;
2025-11-27 21:43:00
1181
原创 C++ 面试考点:头文件循环包含从原理到实战
陷阱:宏会导致意外的副作用(如LOG(a++))和类型安全问题。解决方案函数类型未调用该函数调用该函数核心原因普通函数✅ 无 Bug❌ 链接错误强符号缺失,链接器找不到实现虚函数❌ 可能链接错误❌ 链接错误虚表生成依赖实现地址模板函数✅ 无 Bug(未实例化)❌ 编译 / 链接错误实例化依赖实现代码内联函数✅ 无 Bug❌ 编译 / 或链接错误内联展开需实现,否则退化为普通函数。
2025-11-26 19:52:24
692
原创 Qt 择业纠结?嵌入式 vs 桌面开发两个赛道,你选对了吗?
想试嵌入式:做一个简易智能家居控制面板(用 Qt 对接模拟传感器,实现灯光 / 温度控制)想试桌面开发:做一个跨平台 Excel 数据可视化工具(用 Qt Charts 展示数据,支持 Windows/macOS 运行)如果已经有 C++/Qt 基础,或者正在纠结具体行业(比如不知道车联网嵌入式要不要学),欢迎在评论区留言你的情况,帮你精准分析!
2025-11-10 16:21:02
743
原创 C++ 内存泄露怎么查?原理 + 实战
在深入排查前,我们需先明确 “什么是内存泄漏”“它会造成什么危害”,以及 “如何区分不同类型的泄漏”—— 这是后续排查的基础。1. 什么是内存泄漏?内存泄漏指程序在堆上分配的内存,失去所有有效指针引用后,无法被释放并重新利用的现象。堆内存由开发者手动管理(new/malloc分配,delete/free释放),一旦指针丢失,操作系统无法回收这部分内存,导致内存资源永久浪费。// 堆上分配内存,指针p指向该内存// 未执行delete p;函数结束后p被销毁,堆内存失去引用,造成泄漏++i) {
2025-11-08 15:21:42
886
原创 告别纸上谈兵!动手攻克服务器百万级并发
相比 select/poll,epoll 有三大核心优势,直接解决高并发场景的痛点:特性epollFD 数量限制最大 1024(select)无上限(仅受系统资源限制)事件通知方式轮询所有 FD(O (n))仅通知活跃 FD(O (1))触发模式仅水平触发(LT)支持边缘触发(ET)+ 水平触发(LT)水平触发(LT):只要 FD 有数据未处理,就会持续触发事件(适合新手,不易丢数据)。边缘触发(ET):仅在 FD 状态变化时触发一次(需一次性读 / 写尽数据,效率更高,本文选用)
2025-11-07 15:32:51
908
原创 不愧是腾讯,面试的质量太高了(C++)
gRPC 是 Google 开源的高性能 RPC 框架HTTP/2.0 提供基础能力:二进制分帧、多路复用、头部压缩,解决 HTTP/1.x 的队头阻塞问题;gRPC 在 HTTP/2.0 之上封装:定义服务接口(.proto)、使用 Protobuf 序列化数据、支持四种调用模式(简单 RPC、服务端流、客户端流、双向流)。// 简单RPC:获取用户信息// 请求消息// 响应消息// 使用proto3语法// 命名空间,避免类名冲突// 字段ID(序列化时的标识,不可重复)
2025-11-03 15:15:52
631
原创 终于吃透 C++!移动语义、左值、右值、引用,这次彻底搞懂了
C++ 的左值、右值、移动语义、完美转发这些概念看似复杂,但核心逻辑是 “为了效率”—— 从 “拷贝” 到 “移动”,再到 “编译器优化”,本质都是为了减少不必要的资源开销。最后用一张表总结核心概念的关系:概念核心作用关键语法 / 函数左值代表 “持久对象”,可寻址变量、*p、返回左值引用的函数右值代表 “临时对象”,可窃取资源字面量、临时对象、std::move左值引用修改实参、减少拷贝Type&右值引用支撑移动语义,绑定右值Type&&移动语义窃取右值资源,避免拷贝。
2025-10-30 14:56:09
677
原创 自己啃 C/C++ 指针的一点心得,尽量讲透,感兴趣的看看~
指针是存储内存地址的变量。数据类型* 指针变量名;int* p_int;// 指向int类型的指针// 指向char类型的指针// 指向double类型的指针注意:*在声明中表示这是一个指针类型,而不是解引用操作符。类型本质内存占用声明示例指针数组(int* arr [3])数组3 * 指针大小数组指针(int (*p)[3])指针指针大小6.6、函数指针和指针函数函数指针是 “指针”(指向函数),指针函数是 “函数”(返回值为指针)。int a = 10;// 普通变量。
2025-10-29 14:52:12
553
原创 小米 C++ 校招二面:epoll/poll/select 区别与底层实现解析
I/O多路复用(I/O Multiplexing)是一种单线程管理多个I/O流的技术。核心思想是:操作系统提供一种机制,允许一个进程同时监视多个文件描述符(fd),当其中任意一个fd就绪(可读或可写)时,应用程序能够立即得到通知并进行相应操作。读就绪:内核接收缓冲区中有数据(可调用read读取,不会阻塞);写就绪:内核发送缓冲区有空闲空间(可调用write写入,不会阻塞);异常就绪:FD 发生异常(如连接断开、错误)。核心优势资源高效:单个线程处理多个连接,减少内存占用和上下文切换。
2025-10-21 20:51:52
1054
原创 为什么很多人劝退学 C++,但大厂核心岗位还是要 C++?
C++ 不是一门 “适合所有人” 的语言,但它是一门 “能带你走到技术深处” 的语言。如果你只是想 “尽快找个工作”,那 Java、Python 确实更适合你;但如果你对 “计算机底层”“性能优化” 有执念,享受 “榨干硬件性能” 的快感,那 C++ 会是你最好的选择。记住:C++ 的学习没有 “捷径”,前两年可能会觉得 “难”“慢”,但一旦你吃透它,你会发现 —— 那些陡峭的学习曲线,最终都会变成你职业路上的 “护城河”。往期文章推荐知识点精讲:深入理解C/C++指针总被 “算法” 难住?
2025-10-18 14:35:59
888
原创 难倒很多人的阿里面试题:千万级订单表新增字段,该怎么处理?
优先选:gh-ost(无锁、轻量、安全,大部分场景通用)、原生 Online DDL(简单字段,MySQL 8.0+);次选:逻辑迁移 + 双写(超大规模表、核心交易表,允许开发改造)、PT-OSC(无 gh-ost 时的替代方案);特殊选:分区滑动窗口(已分区表)、停机维护(小业务 / 紧急情况)。方案选择决策树(快速匹配)
2025-10-13 15:31:31
796
原创 备战字节 C++ 一面:enum 和 enum class 的区别你必须掌握
备战字节 C++ 一面:enum 和 enum class 的区别你必须掌握
2025-09-23 14:44:13
1048
原创 用 Redis 实现分布式锁——C++ 高并发编程必备指南
要说分布式系统里最让人头大的事儿,保证资源不被瞎抢肯定算一个!而 Redis 这货作为高性能的键值存储,在分布式锁这块可是老熟人了,用得特别广。咱都知道,分布式环境下想控住并发,那必须得靠分布式锁。今天就来唠唠,用 Redis 搞分布式锁时,有哪些坑得避开,哪些关键点得拿捏住。
2025-09-18 15:50:48
1127
原创 C++左值与右值:从基础概念到核心应用
当模板参数是 T&& ,并且 T 需要被编译器推导时,T&& 就成了通用引用(也叫万能引用)。void relay(T&& arg) // 这里的T&&就是通用引用// ...能绑定左值,也能绑定右值,还会通过 T 的推导结果记录原始值类别。
2025-09-10 14:46:20
1114
原创 C++17无锁编程实战
ABA 问题就像生活中 “没察觉的变化”:你出门前把手机放桌上(值 A),回来一看手机还在(还是 A),以为没人动过,其实室友拿起来玩了会儿又放回去了 —— 手机位置没变,但状态可能变了(比如电量少了、多了条消息)。在无锁编程里,这可能出大问题。线程 A 想删除节点 A,先读 A 的 next 指针(假设是 B);线程 B 突然把 A 删了,释放了 A 的内存,又新建了一个节点 A(地址相同),让新 A 的 next 也是 B;
2025-09-04 22:03:09
1052
原创 内存池技术全解:突破C++性能瓶颈的底层方案
今天我们聊内存池~内存池这玩意儿,看着不起眼,其实是程序性能的“隐形大佬”。它不声不响地帮你把内存管得明明白白,让你的程序跑得飞起。下次你写代码,别再只会new new new了,学点“批发思维”,搞个内存池,说不定就从“卡顿少年”进化成“丝滑战神”了!
2025-09-01 20:23:54
795
原创 深挖 TCP/IP 协议,计算机网络
要说现在网络世界里最牛掰的存在,那 TCP/IP 协议绝对得算一个,简直就是互联网的顶梁柱,全球的电脑能互相串门、传消息,全靠它撑着。今儿个咱就好好扒一扒这 TCP/IP 协议的架子、干活的门道,再整点实际例子,保准让你把这复杂玩意儿整明白。估计不少哥们儿以为 TCP/IP 就是个协议,要么就是 TCP 和 IP 俩兄弟的合称,其实它是一整个,人称“网络江湖十二钗”,
2025-08-22 15:25:20
798
原创 现代C++协程开发实战:从原理到异步编程完整实现
/ 默认使用严格分离模式constexpr cross::comm::TolerantDetachedType tol_detached;// 宽容分离模式,出错会记录日志using boost::asio::use_awaitable;这段代码主要是为了简化命名空间引用、类型声明和操作符使用,减少重复代码,提升可读性。使用实现了一个轮询逻辑。每次调用查询支付状态。如果成功就返回结果,否则等一会再查。所有过程都在协程中进行,完全非阻塞,结构清晰。等待后台推送的支付结果信号。
2025-08-09 16:14:50
819
原创 Linux内核剖析:构建专家级系统认知的七项修炼
兄弟们,今天咱们来聊聊Linux内核这个"庞然大物"!Linux内核不像编程语言,可以几个月速通;它是一个庞大的系统,需要系统性学习 + 持续实践,才能真正掌握。无论是云计算、嵌入式系统、驱动开发、网络安全还是高性能计算等领域,Linux 内核都扮演着不可或缺的角色。因此,掌握 Linux 内核对于任何希望深入了解计算机底层工作原理的技术人员来说都是至关重要的。本篇文章将为大家提供一条分享Linux、Unix、C/C++后端开发、面试题等技术知识讲解。
2025-08-06 22:12:23
691
原创 C++ Qt网络编程实战:跨平台TCP调试工具开发
功能API创建服务器监听端口获取客户端关闭连接close()常用信号触发条件有新客户端连接时触发。
2025-07-30 20:34:11
1294
2
原创 Linux网络编程必修课:五种I/O模型
欢迎各位文章底部关注我,每天专注分享Linux、Unix、 C/C+ +后端开发、面试题等技术知识讲解在当今这个数据驱动的时代,无论是 Web 服务器、数据库系统,还是嵌入式设备,都离不开一个核心操作——输入/输出(I/O)。而作为后端开发、系统编程、甚至是性能调优的核心战场,Linux 的 I/O 模型无疑是我们必须掌握的基础知识之一。I/O = 等待 + 拷贝,而且等待的时间往往比拷贝还长!所以,提升 I/O 效率的关键,就是减少等待时间。
2025-07-28 21:15:22
666
原创 应届生冲!小红书 C++ 校招面试
原理:独占所有权模型,不支持复制,但支持移动语义线程安全:本身不是线程安全的,跨线程共享时必须加锁保护用途:适用于单一拥有者管理资源的场景。多路搜索树;每个节点既存关键字也存数据;所有叶子节点在同一层;插入/删除可能导致分裂或合并;支持随机查找,适合数据库索引。基于红黑树实现;保证按键排序;插入/查找时间复杂度为 O(log n);适用于需要排序的场景。链接器会按照命令行中库的顺序选择第一个找到的定义,忽略后续重复定义。
2025-07-23 21:28:45
739
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅