
C++学习
文章平均质量分 89
晰烟
追风赶月莫停留,平芜尽处是春山。
展开
-
C++11轻松打印本地时间
将这个时间值进行转换,这样就能获取到一个本地时钟的相对时间值。这个函数会给我们返回一个转换后的指针(对于这个指针背后的内存不用我们多操心,因为其是一个静态对象,并不是从堆上分配的内存),这样我们就能完成最终的打印。想要对时间进行统计就需要调用C库,并且我们要考虑这样的调用是否能很好的封装到我们的类中。本节,我们将会使用本地时间,并对本地时间进行打印,还会给时间加上不同的偏移,这些操作很容易使用。这个STL时钟类是唯一一个能将时间点的值转换成一个时间结构体的类型,其能将时间点以能够看懂的方式进行输出。原创 2023-03-04 11:00:21 · 1605 阅读 · 1 评论 -
现代C++并行与并发笔记 附C++17线程池实现项目实战
C++11 之前,C++原生不支持并发和并发。但这并不意味着无法对线程进行操作, 只不过需要使用系统库的API进行操作(因为线程与操作系统是不可分开的)。随着C++11标准的完成,我们有了,其能给予我们可以在所有操作系统 上可移植的线程操作。为了同步线程,C++11也添加了互斥量,并且对一些RAII类 型的锁进行了封装。另外,也能够灵活的在线程间,进行 唤醒操作。另一些有趣的东西就是std::async和——我们可以将普通的函数封装 到std::async中,可以在后台异步的运行这些函数。原创 2023-01-12 13:00:42 · 1607 阅读 · 2 评论 -
SGI STL 二级空间配置源码刨析
当我们new一个对象时,实际做了两件事情:在SGI中,这两步独立出了两个函数:allocate申请内存,construct调用构造函数。这两个函数分别在和中。SGI STL的二级空间配置器,把128 字节的内存,通过一级空间配置器malloc和free进行管理。第一级就不用讲了。在STL的第二级配置器中多了一些机制,避免太多小区块造成的内存碎片,小额区块带来的不仅是内存碎片,配置时还有额外的负原创 2022-12-04 20:56:58 · 505 阅读 · 0 评论 -
More Effective C++ 阅读笔记 解释清晰
More Effective C++ 阅读笔记 解释清晰原创 2022-07-13 19:53:22 · 830 阅读 · 0 评论 -
Effective C++阅读笔记 具备复杂条款样例
教你如何写出现代高效的C++代码,Effective C++阅读笔记原创 2022-07-09 16:58:45 · 295 阅读 · 0 评论 -
一文搞懂C++临时对象优化 附详细样例
C语言和C++在程序执行中,都是通过调用一系列的函数来实现的。并且,很多时候,编译器会帮助我们做一系列的事情,比如(在编译类的成员方法的时候,编译器默认添加 this 指针,以此来确定是哪一个对象调用了该成员方法)。得益于编译器或者说系统帮助我们做的一系列事情,我们可以更加方便地使用C++。但是凡事有利必有弊,因为系统有时候会自己调用一系列的函数,从另一个角度来说,也一定程度上降低了效率。而我们想要提高C++的执行效率,就需要了解程序(主要是对象)使用过程中都调用了哪些方法。VS2019 x86环境下,编原创 2022-06-30 00:56:16 · 501 阅读 · 1 评论 -
C++ mysql连接池 附带讲解与详细注释源码
MySQL数据库编程、单例模式、queue队列容器、C++11多线程编程、线程互斥、线程同步通信和unique_lock、基于CAS的原子整形、智能指针shared_ptr、lambda表达式、生产者-消费者线程模型原创 2022-06-29 15:29:34 · 827 阅读 · 5 评论 -
一文看懂Ngnix内存池源码 附带详细讲解,清晰结构图
可以先看一下大概过程:首先Ngnix内存池分为主内存池和其他内存池,主内存用来管理其他内存池,和自身初始具有的能够分配的内存。**但主内存池和其他内存池在结构定义上是一样的,**都是下面代码块中的 ,**且具有别名 ,**只不过其他内存池再被创建的时候,会被分割,将除去成员 以外的部分作为可分配内存。如下图所示,图中主内存池和其他内存池在大小上可能具有迷惑性,但实际上主内存池和其他内存池所占的大小是一样的,只不过可分配内存不一样。这里是各结构体中的关系:是一个分流函数,按一个标准分割大块内存分配原创 2022-06-28 15:54:40 · 995 阅读 · 0 评论 -
易上手的Makefile文件简介与基本语法
简单的概括一下Makefile 中的内容,它主要包含有五个部分,分别是:显式规则说明了,如何生成一个或多的的目标文件。这是由 Makefile 的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。由于我们的 make 命名有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写 Makefile,这是由 make 命令所支持的。在 Makefile 中我们要定义一系列的变量,变量一般都是字符串,这个有点像C语言中的宏,当 Makefile 被执行时,其中的变量都会被扩展到相应的引用位置上。其包原创 2022-06-21 16:54:50 · 272 阅读 · 0 评论 -
一文讲清 RPC是什么?和HTTP什么关系?
RPC:Remote Procedure Call,远程过程调用是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。为什么要用RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统间的通讯,甚至不同的组织间的通讯,由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用。也便于微服务的划分,根据业务模块做了不同的拆分,像用户的服原创 2022-06-10 01:16:28 · 355 阅读 · 0 评论 -
C++ thread_local 关键字
C++11中有如下几种存储类型:如下代码所示输出:原创 2022-06-09 14:24:07 · 280 阅读 · 0 评论 -
一文让你搞懂 C语言可变参数 VA_LIST原理详解
在学习C++高性能框架Sylar时遇到的新知识,特以此记录,另外对于C/C++宏的基本使用不太清晰的小伙伴可以看我的这篇博客 C/C++宏的基本使用方法附例子讲解 是在C语言中解决变参问题的一组宏,变参问题是指参数的个数不定,可以是传入一个参数也可以是多个;可变参数中的每个参数的类型可以不同,也可以相同;可变参数的每个参数并没有实际的名称与之相对应,用起来是很灵活。首先在函数里定义一具 型的变量 ,这个变量是指向参数的指针 ,通过指针运算来调整访问的对象;然后用 宏初始化变量刚定义的 变量 ,实际上原创 2022-06-08 13:39:57 · 5764 阅读 · 0 评论 -
C/C++宏的基本使用方法附例子讲解
宏是C/C++所支持的一种语言特性,我对它最初的印象就是它可以替换代码中的符号,最常见的例子便是定义一个圆周率,之后在代码中使用 来代替具体圆周率的值。确实如此,宏提供了一种机制,能够使你在编译期替换代码中的符号或者语句。当你的代码中存在大量相似的、重复的代码时,使用宏可以极大的减少代码量,便于书写。...原创 2022-06-07 21:40:16 · 9121 阅读 · 1 评论 -
C/C++ linux C/C++静态库与动态库详解(附类go语言gin框架——wfrest库的推荐与链接使用)
文章目录什么是库GCC编译器基本参数ar命令为什么需要库(library)静态库静态库的创建静态库使用动态库/共享库动态库的创建动态库使用原因及解决库的工作原理解决wfrestwfrest 库的获取采用动态库采用静态库什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。回顾一原创 2022-05-26 12:26:11 · 1089 阅读 · 0 评论 -
C++ STL模板库用法查询及一些常见面试题(自用)
C++STL模板库文章目录C++STL模板库用法查询Array1.使用2.创建3.成员函数Vector1.使用2. 创建3.成员函数deque1.使用2. 创建3.成员函数list1.使用2. 创建3.成员函数map1.使用2.创建3.成员函数multimap1.使用2.创建3.成员函数set1.使用2.创建3.成员函数multiset1.使用2.创建3.成员函数无序关联式容器stack1.使用2.创建3.成员函数queue1.使用2.创建3.成员函数priority_queue1.使用2.创建3.成员函原创 2022-04-29 14:53:42 · 1544 阅读 · 0 评论 -
堆——神奇的优先队列 大根堆小根堆详解,附小根堆C++代码实现与STL相关
文章目录前置知识堆操作小根堆插入代码实现小根堆删除代码实现测试代码STL实现——priority_queue1.使用2.创建3.成员函数前置知识堆是一个完全二叉树(最后一层可以不满,上面的每一层都是满的。一个结点若只有一个孩子结点,那一定是它的左孩子。如下图)这是一个逻辑上基于完全二叉树、物理上一般基于线性数据结构(如数组、向量、链表等)的一种数据结构。完全二叉树最重要的性质:如果n个节点的完全二叉树的节点按照层次并按从左到右的顺序从0开始编号,对于人一个绩点都有:序号为0的节点是根对原创 2022-04-03 17:33:14 · 7597 阅读 · 2 评论 -
C++11新标准面试题精选
C++11新标准面试题精选文章目录C++11新标准面试题精选1、C++ 11有哪些新特性?2、auto、decltype和decltype(auto)的用法3、C++中NULL和nullptr区别4、智能指针的原理、常用的智能指针及实现**环形引用**5、说一说你了解的关于lambda函数的全部知识7、说说你了解的auto_ptr作用9、手写实现智能指针类需要实现哪些函数?1、C++ 11有哪些新特性?nullptr替代 NULL引入了 auto 和 decltype 这两个关键字实现了类型推导原创 2022-03-28 10:20:36 · 9109 阅读 · 1 评论