- 博客(151)
- 收藏
- 关注
原创 全网首发!!C++20新特性全在这一张图里了
前面我写了C++11、C++14、C++17新特性系列文章,大家可以移步到这里↓↓↓《C++11新特性,所有知识点都在这了!》《C++14新特性的所有知识点全在这儿啦!》《他来了,他来了,C++17新特性精华都在这了》没错,就差C++20新特性了,今天终于出炉啦。目录语言特性比较运算<=>对于 (a <=> b),如果a > b ,则运算结果>0,如果a < b,则运算结果<0,如果a==b,则运算结果等于0,注意.
2021-04-11 19:25:44
1771
原创 c++11新特性,所有知识点都在这了!
这篇文章基本上涵盖了c++11的所有新特性,并有详细代码介绍其用法,对关键知识点做了深入分析,对重要的知识点我单独写了相关文章并附上了相关链接,我还准备了完整版c++新特性脑图,有需要可以去我的gz号回复 “新特性” 下载,见文章最后。auto & decltype关于C++11新特性,最先提到的肯定是类型推导,C++11引入了auto和decltype关键字,使用他们可以在编译期就推导出变量或者表达式的类型,方便开发者编码也简化了代码。 auto:让编译器在编译器就推导出变量的类型,
2020-05-11 20:27:49
1823
原创 有意思的新特性:void_t
最近发现了一个有意思的特性:void_t。它的原理其实就是利用SFINAE和模板优先找特化去匹配的特性,估计大家应该看示例代码就能明白。看着它很简单,但它搭配SFINAE却可以在模板元编程中发挥巨大作用。
2025-12-23 20:15:00
679
原创 推荐使用C++17新特性optional
之前交流群里看到老王在聊 C++ 的 tuple,说 tuple 非常好用,我在群里向老王推荐使用 optional,但没想到,老王居然不知道 optional,所以我想,有必要输出一篇文章介绍下 optional。希望更多的人都能在开发中用上 optional 这种高级实用的特性。作者:程序喵cpp 学习仓库:GitHub - chengxumiaodaren/cpp-learning。
2025-12-22 19:16:07
819
原创 推荐个 C++ 练习平台
C++ Training Hub 并不是简单的刷题仓库,而是一套完整、系统的 C++ 练习体系。从基础语法到现代 C++ 特性,再到并发和模板编程,覆盖面非常全面。无论是刚入门,还是已经有经验想补齐短板,这个项目都值得花时间完整走一遍。真正坚持做完这些练习,对 C++ 的理解会有一个明显的台阶式提升。
2025-12-18 20:15:00
938
原创 SQLITE问题整理
用过sqlite的朋友都知道,在数据库目录会有xxx.db文件,你可能看到过,其实数据库不只有xxx.db,有时候还会有xxx.db-shm、xxx.db-wal、xxx.db-journal等文件,你有想过这些文件的作用是什么吗?db-wal文件:需要手动开启wal模式,开启wal模式后,数据库修改日志会先写在wal文件中,事务提交后,会写在db文件中,主要用作协调并发访问。db-shm文件:用于共享内存和协调并发访问,存储了数据库连接中的锁信息和同步机制,数据库启用WAL模式后创建,数据库关闭时删除。
2025-12-17 20:45:00
435
原创 C++多线程入门
条件变量是C++11引入的一种同步机制,它可以阻塞一个线程或者个线程,直到有线程通知或者超时才会唤醒正在阻塞的线程,条件变量需要和锁配合使用,这里的锁就是上面介绍的。函数,假如线程函数执行时间较长,此时线程对象的生命周期结束调用析构函数清理资源,这时可能会发生crash,这里有两种解决办法,一个是调用。函数将会阻塞主线程,直到线程函数执行结束,线程函数的返回值将会被忽略。,将线程和线程对象分离,这里需要注意,如果线程已经和对象分离,那我们就再也无法控制线程什么时候结束了,不能再通过。
2025-12-15 20:45:00
727
原创 记录va_list重复使用导致的crash
这里明确说明,arg在vsnprintf后,会变成不确定的状态。所以才有了在Windows上可以正常运行,在iOS上会异常退出的问题。经过分析定位后发现,这里重复使用了va_list并且在vsnprintf后还继续使用了ap,进而导致的crash。通过查看文档:https://port70.net/~nsz/c/c11/n1570.html#7.21.6.8。最近遇到了个奇怪的问题,同样的代码,在Windows 下正常运行,在iOS下必现crash。
2025-12-11 20:32:52
272
原创 Duff‘s device
你可能会问,减少了 while 循环条件的判断,但是增加了 switch 判断的次数,这不也会增加开销吗?直接看一段伪代码,常规的我们循环展开的代码就像这样,step 为 1,在 while 循环中逐个判断条件,如果 count 为 80,那就需要循环 80 次条件判断。Duff’s Device 同样可以应用于任何其他大小的展开循环,不仅仅是上面示例中的 8 的倍数,你也可以改成其他数字。循环展开的基本思想是通过减少循环条件判断的次数来减少循环中执行的指令数量,有时可以减少在循环中花费的时间。
2025-12-10 17:55:36
611
原创 13条大型C++项目编码规范
在大型项目中,代码规范非常重要。特别是同一个团队,同一个项目,一定要有严格的编码规范,团队所有开发人员统一使用同一套编码规范为准则进行开发。它不仅能够保证代码的可读性和可维护性,还能提高开发效率,减少错误的发生。
2025-12-08 20:05:36
734
原创 C++ MCP 服务器实现
这个项目是对跨平台 AI 工具调用的全新解决方案。无论是文件操作、数据库查询,还是 API 调用,借助 MCP 协议,AI 与外部工具的连接都会变得前所未有的简单。通过统一的标准协议,AI 只需要一次实现,即可支持多个平台,彻底告别碎片化的生态!
2025-12-05 17:54:50
778
原创 CMake入门教程
表示CMake要求的最低版本号,如果你的CMake用到了高版本特有的功能,需要指定版本号要求用户升级才可以使用。,所以这里可以看到详细的命令信息,你也完全可以复制上面的命令来执行,也可以生成可执行程序的。掌握了上面几点后,再学习CMake就简单了,其实CMake到最后也是会变成命令行来执行。目录中,那怎么链接这个库,这里有两块需要指定,一个是指定链接库所在的目录(使用。文件,可以在这个文件里添加内容,比如要构建上面的程序,可以这样写。,同时在另一个源文件中定义它的实现,这种程序怎么编译?
2025-12-03 19:45:00
651
原创 C/C++中最快的json库
yyjson是一款高性能的JSON库,完全采用ANSI C(C89)编写,确保了跨平台的兼容性。它不仅在现代CPU上能够以每秒数GB的速度读写JSON数据,还严格遵循RFC 8259 JSON标准,确保了严格的数字格式和UTF-8验证。
2025-12-02 19:08:17
800
原创 源码揭秘:move的作用究竟是什么?
std::move将对象转换为右值引用,启用移动语义,通过移动构造或赋值函数转移资源,避免拷贝操作,提高性能。虽然std::move后的对象可能不可用,但这取决于移动函数的实现。
2025-12-01 20:07:33
229
原创 为什么有了dmp,就可以解析出具体哪行发生的崩溃?
Windows程序崩溃,可以自己调用API或者系统生成对应的dmp,我们拿到dmp后,可以用于调试定位问题,一般情况下都可以定位到具体是哪行代码出现的崩溃。
2025-11-28 18:20:51
575
原创 C++ invoke与function的区别
`invoke` 是 C++17 标准引入的一个函数模板,用来调用可调用对象(Callable Object,如函数指针、函数对象、成员函数指针等)并返回结果。
2025-11-25 17:20:53
731
原创 详细介绍下客户端这个方向
客户端,简单来说,就是为用户提供本地服务的程序,通常和服务器配合运行。在C/S模式下,客户端负责与服务器进行交互,接收和展示数据。比如,我们在访问一个网站时,输入的域名会先进行DNS解析,找到对应的IP地址,然后与服务器通信,获取所需资源。
2025-11-24 18:38:13
843
原创 推荐个C++高性能内存分配器
在现代多线程应用程序中,高效的内存管理至关重要。Google开发的TCMalloc(Thread-Caching Malloc)正是一个为此设计的内存分配器,它通过减少锁竞争和优化内存使用,提供了卓越的性能和可扩展性。
2025-11-21 20:33:32
886
转载 万字长文,深度剖析数组
数组是编程中最基础、最重要的数据结构之一,无论你使用哪种编程语言,都离不开数组的使用。本文将带你深入理解数组的方方面面,从最基础的概念到高级应用,让你真正掌握这个强大的数据结构。
2025-11-20 21:14:11
23
原创 我为客户端正名
兄弟们是不是经常看到“客三消”、“客户端天花板低”这种论调。是不是感觉身边的同学、网上的帖子,个个都在冲后端、冲算法,好像不做后端就低人一等,职业生涯一眼望到头?
2025-11-19 21:02:54
883
转载 C++ 中的常见的动态内存问题
详细介绍一下 C++ 中常见的内存管理问题,如内存泄漏、悬空指针和双重释放等,并提供了预防这些问题的最佳实践。通过使用智能指针、RAII、静态分析工具和动态检查工具,程序员可以有效避免内存错误,提升程序的安全性和稳定性。
2025-11-18 19:45:00
35
原创 ++i和i++的区别?哪种更高效?
在C++中,++i(前缀递增)和 i++(后缀递增)的主要区别在于返回值和性能:前者先递增再返回,后者先返回再递增。对于内置类型性能相同,但在自定义类型中,++i更高效,因为后者会产生临时对象。循环和函数中优先使用前缀递增,只有在需要原始值时才使用后缀递增。
2025-11-17 19:30:17
404
原创 前方高能!多图详解函数调用的底层原理
函数调用过程中涉及调用栈、栈帧、寄存器和汇编指令的协作,文章详细展示了调用者压栈、被调用者建立和销毁栈帧、返回值传递及寄存器恢复的全过程,并结合图示与汇编代码帮助理解底层执行机制。
2025-09-22 18:58:33
578
原创 为什么要使用dynamic_cast
dynamic_cast主要用于处理多态类型(即包含虚函数的类)的安全向下转型。与static_cast相比,它提供了运行时类型检查,确保转换的安全性。
2025-09-19 20:15:00
939
原创 内存泄露、死锁检测工具来了
做C、C++开发的朋友应该都知道,C、C++中的内存是手动管理的,手动内存管理是一把双刃剑,虽然提供了极致性能,但可能由于开发者的一点点疏忽,就导致内存泄露。据非官方统计,全球每年因内存泄露导致的系统崩溃事故超过120万次。
2025-09-18 20:15:00
647
原创 为什么多态一定需要指针或者引用才可触发?
多态只有在通过指针或引用操作对象时才会生效,因为值传递或直接赋值会导致**对象切片**:派生类的部分被截掉,只保留基类部分,虚函数也退化为基类版本。这也是为什么在函数参数和容器中常用引用或指针来避免切片,保证多态行为正确触发。
2025-09-17 21:30:00
1028
原创 推荐一个最强C++基础库
POCO 是一个功能强大的 C++ 基础库,跨平台、开源,专注于网络和常见开发需求,支持多种安装方式(CMake、vcpkg、Conan),常与 Boost 搭配使用,适合从嵌入式到服务器的广泛场景。
2025-09-16 20:45:00
348
原创 推荐一个最好的高性能日志库
推荐一个超高性能的 C++ 日志库 —— NanoLog,它支持纳秒级延迟与每秒数千万条日志,通过编译期优化和离线解压实现极低开销,非常适合高并发场景。
2025-09-15 19:45:00
1061
原创 推荐阅读这个高端库的源代码
Loki库由《Modern C++ Design》作者开发,是一个以模板元编程实现设计模式的高端C++库,提供单例、工厂和内存池等组件,极致灵活、零开销,值得学习其源码与编程思想。
2025-09-12 20:30:00
778
原创 究竟什么时候用shared_ptr,什么时候用unique_ptr?
`std::unique_ptr`用于独占所有权,适合没有共享需求的场景;`std::shared_ptr`用于共享所有权,适合多个对象共享资源,但需注意循环引用;`std::weak_ptr`解决循环引用问题。通常,优先使用`unique_ptr`,共享资源时选择`shared_ptr`,并通过`make_unique`和`make_shared`提高安全性。
2025-09-11 20:30:00
901
原创 C++14新特性,C++11的小修小补
C++14 在 C++11 的基础上引入了二进制字面量、泛型 lambda、返回类型推导等新特性,提升了语言表达力和性能。同时,增强了 constexpr 支持,增加了 std::make_unique 和用户自定义字面量等库功能,改进了代码简洁性和可维护性。
2025-09-10 19:45:00
578
原创 推荐个万能C++项目模板,效率大幅提升!
新建一个C++项目通常需要大量的准备工作和样板代码,特别是对于包含测试、可执行文件和持续集成的现代C++项目。这个模板是多个项目经验的结晶,旨在减少搭建现代C++项目所需的工作量。
2025-09-09 20:30:00
471
原创 C++开发必须要了解placement new的这些技巧
placement new 是 C++ 中一种用于在预先分配的内存地址上构造对象的机制,不涉及内存分配。它允许开发者手动控制内存的使用和生命周期,常用于内存池、共享内存和嵌入式系统中。
2025-09-08 20:45:00
249
转载 现代C++学习蓝图:一条从游戏编程入门到架构级精通的必经之路
本文旨在提出一个经过精心设计的、结构化的学习方案,通过三本权威著作的组合,为不同阶段的C++学习者与开发者铺设一条从激发兴趣、构建基础到实现专业精通的清晰路径。
2025-09-08 15:20:10
99
转载 解锁游戏开发技能树:从《C++游戏编程入门》开始
在众多游戏开发语言中,C++ 凭借其卓越的性能和对硬件的底层控制能力,长期以来一直是专业游戏开发,尤其是大型3A游戏开发领域的首选语言。
2025-09-07 15:22:08
78
转载 拥抱未来:为什么《C++23高级编程(第6版)》是每个C++开发者的必读经典?
随着C++23标准的正式发布,这门语言再次迎来了激动人心的进化。对于每一位严肃的C++开发者而言,如何快速、准确地掌握这些新特性,并将其融入到现代化的软件工程实践中,成为了一个新的挑战。此时,一本权威、全面且与时俱进的参考书籍就显得至关重要。
2025-09-06 13:37:52
218
1
原创 分享个C++线程池的实现源码
本文介绍了一个功能完整的C++线程池,支持核心线程与缓存线程管理、任务调度、异常处理和优雅关闭。通过代码示例演示了如何使用线程池处理任务,并优化了性能,适用于高并发场景。
2025-09-05 21:00:00
295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅