- 博客(1100)
- 收藏
- 关注
原创 C++ Qt开发学习规划路线
C++ Qt是一个基于C++语言的跨平台应用程序开发框架,具有丰富的UI组件和API库。Qt包括了许多模块,如Qt Core、Qt GUI、Qt Network等,每个模块都提供了一系列的类和函数。Qt还提供了集成开发环境(IDE)Qt Creator,使得开发人员可以通过它来创建、编译、调试和部署Qt应用程序。
2023-04-26 22:23:41
2350
1
原创 腾讯 C++ 一面被拷打:进程线程区别?还有多线程多进程该咋选
最后再回到面试题:其实没有 “绝对该用多进程” 或 “绝对该用多线程” 的场景 —— 关键是看业务需要什么。要隔离故障,就用多进程拆模块(媒体解码、安全沙箱);要高效并发,就用多线程做细粒度执行(信令转发、同房间解码);二者配合,就是 “用多进程搭好安全的架子,用多线程填高效的细节”。记住:面试官问这题,不是要你背答案,而是要你证明 —— 你懂技术的本质,还能结合业务写出关键代码,落地到实际场景。把 “图示 + 代码” 讲清楚,把 “腾讯会议的场景” 带进去,这题就稳了。往期文章推荐。
2025-12-04 16:06:53
353
原创 C++ 完美转发:3 大核心原理 + 5 个避坑技巧
在函数模板中,将参数传递给被调用函数时,保持参数的原始值类别(左值 / 右值)和 const/volatile 属性不变,同时避免不必要的对象拷贝。// 通用事件处理器public:// 注册回调:接收任意可调用对象(函数、lambda、函数对象)// 触发事件:完美转发参数给所有回调// 完美转发参数private:// 测试回调函数// 注册回调});// 触发事件:传递不同类型的参数return 0;
2025-11-27 21:58:46
917
原创 Qt 实战:即时通讯项目
本文将带你从 0 到 1 完成一个基于 Qt 的 即时通信项目(先用TCP做一个简单的即时通讯,后深度扩展【见Part 6】),覆盖与测试。
2025-11-08 15:44:48
940
原创 vector、list、deque:C++ 序列容器核心解析
优先选择 vector:除非有明确的双端操作或中间修改需求,vector 是 “默认最优选择”—— 它的缓存友好性和内存效率远超其他容器;谨慎使用 list:仅在 “频繁中间插入 / 删除” 且 “遍历需求低” 的场景下使用,避免因 “缓存命中率低” 导致性能问题;deque 作为均衡选择:当需要 “双端操作 + 随机访问” 时,deque 是最佳选择,但需注意其非连续内存的限制;结合算法选择:若需使用std::sort()(需随机访问迭代器),排除 list;
2025-11-07 15:50:13
825
原创 快手C++二面真题:详解static_assert底层原理
static_assert的本质是 “编译器在特定阶段对常量表达式的条件校验”,其价值不仅在于 “提前发现错误”,更在于 “零运行时开销” 与 “模板友好性”。从 C++11 的基础语法,到 C++20 与consteval、模块的协同,static_assert始终是 C++ 编译时编程的核心工具。条件合法性:确保参数是编译时可求值的常量表达式,规避未定义行为;检查时机:理解模板实例化的延迟特性,避免误判约束生效时机;工程适配:结合编译器差异、跨平台需求、新标准特性,平衡检查粒度与编译效率。
2025-11-03 15:46:43
732
原创 C++ 虚函数的使用开销以及替代方案
虚函数是 C++ 动态多态的基石,但其性能开销并非总是可忽略。框架设计、运行时扩展场景优先使用虚函数高频调用、内存受限场景优先选择模板、CRTP 等静态方案简单行为切换可采用std::function或函数指针在设计类层次结构时,先考虑是否真的需要多态性。如果不需要,避免使用虚函数。如果需要,合理使用虚函数,并在必要时考虑现代C++的替代方案。记住,"不要为了多态而多态",每个虚函数都有其代价。
2025-10-29 15:44:09
731
原创 基于原子操作的 C++ 高并发跳表实现
无锁编程是高并发 C++ 开发的核心技能,而跳表是无锁数据结构的 “入门经典”—— 其简单的结构能让我们聚焦于原子操作的核心逻辑,而非数据结构本身的复杂性。掌握本文的设计思想后,可进一步探索无锁队列、无锁哈希表等更复杂的并发数据结构,应对更高阶的性能挑战。点击下方关注【Linux教程】,获取 大厂技术栈学习路线、项目教程、简历模板、大厂面试题pdf文档、大厂面经、编程交流圈子等等。专注Linux C/C++技术讲解~更多 务实、能看懂、可复现 的技术文章和学习包尽在【Linux教程】
2025-10-21 21:30:13
721
原创 C++析构顺序:局部对象与继承结构的深度解析
自动管理对象(局部、静态、成员)遵循 “构造反序” 的默认规则,无需手动干预;手动管理对象(堆对象)需按资源依赖控制delete顺序,智能指针是最佳实践;复杂场景(继承、容器)需关注虚析构、声明顺序等细节,避免依赖冲突。咱们在写代码时,无需死记所有规则,只需抓住 “资源安全释放” 的核心目标:确保被依赖的资源后释放,优先使用自动管理方式(局部对象、智能指针),就能避免 90% 以上的析构相关问题。只有理解底层逻辑,才能在复杂场景中做出正确选择,写出安全、高效的 C++ 代码。
2025-10-18 15:12:39
705
原创 Qt C++ 教程:无边框窗体 + 自定义标题栏 + 圆角 + 拖拽拉升 + 阴影
Q_OBJECTpublic:protected:private:// 记录鼠标按下时相对于窗口左上角的偏移说明继承自 QWidget,构建基础窗口;定义两个受保护的事件处理函数,用于捕获鼠标行为;使用 dragPosition 存储拖动起始点与窗口坐标之间的偏移量。功能说明自定义标题栏替代系统默认标题栏,支持自由布局与样式定制三按钮控制最小化、最大化/还原、关闭,通过信号与主窗口通信动态图标切换窗口最大化时,“最大化按钮”自动变为“还原图标”拖动移动。
2025-10-13 16:26:15
1171
原创 Qt、wxWidgets、FLTK 怎么选?C++ 跨平台 GUI 工具选型全解析
项目需要极低资源占用(如嵌入式设备)。开发者熟悉 C++,且需要快速启动和简单 API。需要自定义图形渲染(如 OpenGL 集成)。项目需要丰富控件和商业支持。目标平台多样(包括移动端)。需要快速开发复杂 UI(如 Qt Quick)。项目需要原生控件外观和跨平台兼容性。开发者偏好MVC 架构和模块化设计。往期推荐用Qt+FFmpeg手写一个视频播放器(附完整代码)C/C++实战:KVStore存储项目Qt C++ 实现无边框窗体/自定义标题栏/圆角/窗口拖拽拉升和阴影。
2025-09-25 16:32:05
1472
原创 用 Qt+FFmpeg 手写视频播放器,完整代码直接拿
最近有粉丝问我:“想自己做个视频播放器,Qt能搞定吗?答案是肯定的在Qt中,有多种方式可以实现播放器功能。今天咱们就用Qt+FFmpeg,开发一个视频播放器。
2025-09-23 15:03:56
677
原创 C++造轮子:手搓 List 容器
/ 普通迭代器// 常迭代器代码解析:begin():返回指向第一个实际数据节点的迭代器(即头节点的下一个节点)end():返回指向哨兵节点(头节点)的迭代器,这就是遍历的终点!为什么end()是头节点?因为我们的链表是双向循环的,遍历完最后一个节点后,它的next就是头节点!const重载:为const list对象提供只读访问能力核心思想:利用哨兵节点作为统一的"终点标志",让空链表和非空链表的遍历逻辑完全一致!空链表时,begin()也等于end()(都指向头节点)
2025-09-18 16:24:22
1168
原创 C++内存对齐实战:揭秘结构体大小的计算逻辑
内存对齐是计算机底层硬件高效、安全访问数据的基石。深入理解其原理(硬件要求、性能优势)和规则(有效对齐值 n、成员放置、整体补齐),对于编写高性能、可移植且内存高效的 C/C++ 代码至关重要。可以通过 alignas (C++11)、#pragma pack、__attribute__ 等工具干预对齐,但必须清醒认识其带来的空间开销和潜在的 ABI 兼容性风险,尤其是在跨模块或跨编译器协作时。优化结构体成员顺序是减少填充浪费最直接有效的手段。往期推荐。
2025-09-10 15:27:14
736
原创 解密Redis速度神话:从I/O多路复用到零拷贝
Redis 的卓越性能源于其核心设计的多重优势:基于内存的数据存储实现了极快的读写速度;单线程事件循环模型有效避免了上下文切换和锁竞争,保障了操作的原子性与系统稳定性;简洁高效的数据结构(如字符串、哈希、集合、有序集合等)配合高度优化的算法,极大提升了数据处理效率;同时,灵活的持久化机制(RDB 和 AOF)在保证高性能的同时,兼顾了一定程度的数据持久性与恢复能力。得益于这些特性,Redis 能够轻松支持每秒数十万次的并发操作,成为高并发、低延迟应用场景的理想选择。
2025-08-14 16:09:17
1154
原创 数据库面试精讲:MySQL 核心问题梳理
对(a, b, c)建索引,查询条件是a、ab、abc都可以走索引;bc不行。遇到范围查询(>、<、like等)后面的字段就失效了。如下图,对(a, b) 建立索引,a 在索引树中是全局有序的,而 b 是全局无序,局部有序(当a相等时,会根据b进行排序)。当a的值确定的时候,b是有序的。例如a = 1时,b值为1,2是有序的状态。当执行时a和b字段能用到索引。而对于查询条件时,a字段能用到索引,b字段则用不到索引。
2025-08-09 16:42:41
942
原创 C++协程实战:异步编程代码实现
/ 默认使用严格分离模式// 宽容分离模式,出错会记录日志这段代码主要是为了简化命名空间引用、类型声明和操作符使用,减少重复代码,提升可读性。使用 while(true) 实现了一个轮询逻辑。每次调用 FetchPayResult 查询支付状态。如果成功就返回结果,否则等一会再查。所有过程都在协程中进行,完全非阻塞,结构清晰。等待后台推送的支付结果信号。支持超时机制,防止无限等待。成功收到信号则返回结果,失败则返回超时或错误码。
2025-08-02 22:00:08
981
原创 Qt纯代码设计UI实例分析
Q_OBJECTprivate://UI 创建与初始化//初始化信号与槽的链接//Underline 的clicked(bool)信号的槽函数//Italic 的clicked(bool)信号的槽函数//Bold 的clicked(bool)信号的槽函数//设置字体颜色public:在 QWDlgManual 类的 private 部分,声明了界面上的各个组件的指针变量,这些界面组件都需要在 QWDlgManual 类的构造函数里创建并在窗体上布局。
2024-10-28 17:44:45
1120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅