![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++服务器开发精髓笔记
文章平均质量分 51
从操作系统原理角度讲解进行C++服务器开发所需掌握的技术栈
lyc201219
我见过,我记录
展开
-
线程的基本概念及常见问题
提到线程,就不得不提到进程。一个进程代表计算机中实际运行的一个程序原创 2023-03-02 16:24:03 · 151 阅读 · 0 评论 -
gdb实用调试技巧
gdb的一些实用调试技巧原创 2023-03-02 10:59:21 · 619 阅读 · 0 评论 -
使用gdb调试多进程程序
这里说的多进程程序指的是一个进程使用 Linux 系统调用 fork 函数产生的子进程,没有相互关联的进程调试指的是gdb调试单个进程。原创 2023-03-01 17:13:57 · 565 阅读 · 0 评论 -
使用gdb调试多线程程序
使用gdb调试多线程程序原创 2023-03-01 16:44:39 · 982 阅读 · 0 评论 -
gdb常用命令详解
gdb中一些常用命令的基础用法原创 2023-03-01 15:00:49 · 3231 阅读 · 0 评论 -
gdb调试
调试是开发过程中不可或缺的工作,在Linux编程中通常使用gdb来调试C/C++程序。原创 2023-03-01 10:48:05 · 211 阅读 · 0 评论 -
makefile与CMake
我们在Windows机器上编译和调试C/C++程序时可以使用Visual Studio,在Linux机器上编译 C/C++程序时最终使用的是 gcc/g++,当然,在调试时使用gdb。我们一般使用makefile文件组织大型C/C++或者含有多个C/C++文件的项目,有人认为makefile不太方便,于是发明了CMake。原创 2023-03-01 10:17:21 · 1574 阅读 · 0 评论 -
stl中的智能指针类详解
C/C++最为人诟病的是内存泄露问题,后来的大多数语言都内置了内存分配与释放功能,有的甚至对语言的使用者屏蔽了内存指针这一概念。这里对此不置褒贬,手动分配与释放内存有利有弊,自动分配与释放内存亦如此,这是两种不同的设计哲学。原创 2023-02-27 15:08:19 · 577 阅读 · 0 评论 -
stl容器新增的实用方法
因为std::map中元素的key是唯一的,所以在实际开发中经常会有这样一类需求:向某个 map中插入元素时需要先检测 map中指定的 key是否存在,不存在时做插入操作,存在时直接取来使用;或者在指定的key不存在时做插入操作,存在时做更新操作。在C++17中,map提供了一个try_emplace方法,该方法会检测指定的key是否存在,如果存在,则什么也不做。std::map的try_emplace方法与insert_or_assign方法。原位构造与容器的emplace系列函数。原创 2023-02-13 17:37:03 · 75 阅读 · 0 评论 -
Range-based循环语法
因此,在上面例子的老式语法中,iter是一个指针类型(std::pair*),使用 iter->second 去引用键值;而在for-each 语法中,iter 与容器中元素的数据类型(std::pair)相同,因此使用iter.second可直接引用键值。◎ 在 for-each 语法中,对于复杂的数据类型,迭代器是原始数据的拷贝,而不是原始数据的引用。原创 2023-02-13 17:19:37 · 87 阅读 · 0 评论 -
Range-based循环语法
◎ for-each中的迭代器类型与数组或集合中元素的类型完全一致,而原来使用老式语法迭代 stl容器(如 std::map)时,迭代器 iter的类型是 stl容器中元素的指针类型。在这个循环中,begin-expr返回的迭代子__begin 需要支持自增操作,且每次循环时都会与end-expr返回的迭代子__end做判不等比较,在循环内部通过调用迭代子的解引用(*)操作取得实际的元素。◎ 在 for-each 语法中,对于复杂的数据类型,迭代器是原始数据的拷贝,而不是原始数据的引用。原创 2023-02-13 16:29:06 · 322 阅读 · 0 评论 -
final、override关键字和=default、=delete语法
final、override关键字和=default、=delete语法原创 2023-02-13 16:00:42 · 139 阅读 · 0 评论 -
C++17注解标签(attributes)
在C++98/03时代,不同的编译器使用不同的注解为代码增加了一些额外的说明,读者可能在各种C/C++代码中见过#pragma、__declspec、__attribute等注解。然而,不同的编译器对于同一功能可能使用不同的注解,导致我们需要为不同的编译器编写不同的注解代码。从C++11开始,新的语言标准统一制定了一些常用的注解标签原创 2023-02-13 15:10:56 · 262 阅读 · 0 评论 -
统一的类成员初始化语法与std::initializer_list<T>
统一的类成员初始化语法与std::initializer_list<T>原创 2023-02-13 14:47:43 · 184 阅读 · 0 评论 -
pimpl惯用法
在日常开发中,类的public方法提供了对外接口供第三方使用,每个函数的具体实现都在XXX.cpp里,对第三方不可见。对于提供给第三方的库,库作者一般需要提供.h文件给使用者。提供像XXX.h这样的头文件给第三方使用时, .h文件中类的大量成员变量和私有函数都暴露了这个类的太多实现细节,很容易让使用者看出其实现原理。原创 2023-02-08 14:21:22 · 394 阅读 · 0 评论 -
C++RAII惯用法
RAII(Resource Acquisition Is Initialization,资源获取就是初始化)原创 2023-02-08 14:01:15 · 110 阅读 · 0 评论