
C++笔记
文章平均质量分 68
爱好学习的青年人
学习学习再学习
展开
-
手撕代码 C++11线程池 极简80行代码
好几篇面试的文章看到要手撕线程池和消费者、生产者的所以先准备个答案生产者消费者#include <iostream>#include <queue>#include <thread>#include <condition_variable>#include <semaphore>#include <mutex>using namespace std;// 生产者消费者template <class T>原创 2022-03-05 22:11:08 · 930 阅读 · 0 评论 -
模拟编译器,手动优化虚函数(有点鸡肋)
模拟编译器,手动优化虚函数(顺便学习perf和虚函数)原创 2022-02-22 00:39:07 · 657 阅读 · 0 评论 -
C++中三种类成员初始化方式
之前很少见到声明时初始化,才发现是C++11后支持的新特性,做个记录在C++11之后,声明时初始化->初始化列表->构造函数初始化因此假如三种初始化方式同时存在的话,那么最后保留的成员变量值肯定是构造函数中初始化的值。声明时初始化的使用场景一个优点是直观,你在声明的时候顺便给一个初始值,bravo,别人在看你代码的时候,点一下调到声明也能看到你赋予的初始值,不用再去看构造函数那里给的什么值第二个优点更有用了,比如你要定义多个构造函数,每个构造函数都用列表初始化的方法初始化,麻烦。.原创 2022-02-15 23:43:29 · 635 阅读 · 0 评论 -
C++ condition_variable的 notify_one()和notify_all() 区别
c++ notify_one()和notify_all() 区别转载 2022-02-12 13:41:48 · 501 阅读 · 0 评论 -
海量数据求重复次数topk示例代码 (小内存) 哈希分文件 + 哈希统计 + 小顶堆
海量数据求重复次数topk示例代码 (小内存) 哈希分文件 + 哈希统计(小文件) + 小顶堆题目:数据的重复次数最大/最小的前K个/第K个哈希统计(map) + 堆排分割有一个大文件,内存限制200M,求文件中重复次数最多的前10个大文件 =》 小文件大文件里面的数据 =》 哈希映射 =》 把数据离散的放入小文件当中#include <iostream>#include <vector>#include <queue>#include <u原创 2022-02-02 17:10:06 · 788 阅读 · 0 评论 -
基于 C++ 11的带返回值的线程池
线程池 完全基于 C++ 11目标 用C++ 11 的多线程 实现一个 带返回值且接收可变参数的 线程池组件:信号量类(C++11线程不包含)、返回值类、线程类、线程池类、任务类架构设计main函数执行过程基本组件信号量class Semaphore{public: Semaphore(int limit = 0) :resLimit_(limit) {} ~Semaphore() = default; // 获取一个信号量资源 void wait() { st原创 2022-02-01 17:03:11 · 1539 阅读 · 0 评论 -
emplace_back 和 push_back 的区别
emplace_back 和 push_back 的区别C++11 STLemplace_back 和 push_back涉及知识点万能引用 / 引用折叠,完美转发,移动构造函数原创 2022-01-18 14:07:38 · 672 阅读 · 0 评论 -
weak_ptr 的几个应用场景 —— 观察者、解决循环引用、弱回调
weak_ptr 弱智能指针Effecvive Modern C++使用std: :weak_ptr 来代替可能空悬的 std:: shared_ptr 。std: :weak_ptr 可能的用武之地包括缓存,观察者列表,以及进免 std: : shared _ptr 指针环路 。文章目录weak_ptr 弱智能指针weak_ptr 观察者 —— 基本功能weak_ptr解决循环引用问题 —— 引用对象,用weak_ptr线程安全的对象回调与析构 —— 弱回调替代方案std: :weak_p原创 2021-12-30 16:52:30 · 4570 阅读 · 0 评论 -
SGI STL allocate 2.9版 代码移植 用于 visual studio 2019平台编译
SGI STL allocate 2.9版,简单地移植了下代码,可以用在项目里,主要难点是解决自己写的allocator与容器的适配问题,debug基本都可以解决。另外改用C++mutex和lock_guard改写nginx锁(线程安全)。原创 2021-12-06 12:38:51 · 298 阅读 · 0 评论 -
NGINX 内存池 源码剖析
NGINX 内存池 源码刨析剖析nginx的内存池源码,讲解原理实现以及该内存池设计的应用场景原创 2021-12-05 19:01:33 · 2554 阅读 · 2 评论 -
第二講:std::allocator
第二講:std::allocator標準庫的興起,意味我們可以擺脫內存管理的繁複瑣屑,直接使用容器。但是容 器背後的分配器(allocator)攸關容器的速度效能和空間效能。我將比較 Visual C++, Borland C++, GNU C++標準庫中的 allocator,並深入探索其中最精巧的 GNU C++ allocator 的設計。西北有高楼,上与浮云齐G4.9 std::allocator 标准分配器之实现和以前的分配器一样 用 operator::new 和 operator原创 2021-12-03 15:21:19 · 1215 阅读 · 0 评论 -
SGI STL allocate 源码剖析
SGI STL allocate源码刨析文章目录SGI STL allocate源码刨析空间配置器的相关定义重要类型和变量定义重要的辅助接口函数重要的函数接口二级空间配置器 allocate函数_S_refill函数_S_chunk_allocdeallocate一级空间配置器 allocatereallocate 扩容或者缩容总结通过剖析SGI STL二级空间配置器内存池源码深入理解其实现原理防止小块内存频繁的分配,释放,造成内存很多的碎片出来,内存没有更多的连续的大内存块。所以应用对于小块内原创 2021-12-03 15:20:32 · 1049 阅读 · 0 评论 -
C++ 内存管理 —— 第一講:C++ 內存構件
C++ 内存管理侯捷老师的课程内容,做了个简单的记录文章目录第一講:C++ 內存構件四个层面基本構件 new delete expressionmalloc的cookie机制arrary new、arrary deleteoperator new[]和operator delete[]placement new —— 定位new重载basic_string 使用new(extra) 扩充申请量per-class allocator 每个class一个 allocatorper-class allocat原创 2021-12-01 21:43:53 · 1128 阅读 · 0 评论 -
C++版mysql数据库连接池
手写数据库连接池文章目录手写数据库连接池关键技术点项目背景连接池功能点介绍MySQL Server参数介绍功能实现设计连接池代码及详细介绍连接池构造函数获取单例生产者线程消费者线程接口定时线程(回收连接)压力测试测试代码和配置文件:Connection 操作代码返回的 是一个含connection的shared_ptr对象关键技术点MySQL数据库编程、单例模式、queue队列容器、C++11多线程编程、线程互斥、线程同步通信(mutex、条件变量)和 unique_lock、基于CAS的原子整原创 2021-12-01 13:19:29 · 2250 阅读 · 0 评论 -
C++11 智能指针入门
文章目录智能指针shared_ptrweak_ptrshared_ptr使用陷阱unipue_ptr特殊说明总结关于C++11 make_shared以及shared_ptr的区别可以看看这篇博客 https://www.jianshu.com/p/03eea8262c11智能指针c++标准库有四种智能指针:std:://a)auto_ptr (c++98): unique_ptr(c++11); shared_ptr(c++11) ; weak _ptr(c++1l);帮助我们进行动态分配原创 2021-11-13 00:32:40 · 1426 阅读 · 0 评论 -
STL标准库和泛型编程 笔记
C++ Standard Library C++,标准库Standard Template Library STL,标准模板库文章目录STL 体系结构基础介绍容器 —— 结构与分类使用容器dequeassociative container分配器 allocatorSTL 体系结构与内核分析OOP VS GP采用GP:Operator Overloading 和 模板的特化分配器 allocator先谈operator new() 和 malloc()分配器保证所带来的开销容器,结构与分原创 2021-09-10 14:04:33 · 831 阅读 · 1 评论 -
STL - map 仿
map setSTL map底层是 红黑树实现一个支持 for auto 语法的二叉排序树类有begin() end() 有++ 重载set 实现1、用模板改造原有实现2、进行高级封装,支持set操作 (无需添加其他操作了)封装map过程中的问题set 存 int 索引 intmap 存<int, int> 索引 int#include <iostream>#include <cstdio>#inc原创 2021-08-29 16:17:03 · 107 阅读 · 0 评论 -
STL - sort仿
sortSTL中的sort 用了什么排序方法,各种排序方法如何配合1、大于16 深度未超标,使用快排分区 深度超标,堆排序2、小于16 停止上述过程快排分区 —— 组间有序,组内无序第一个组的元素小于第二组元素最后一轮 在16的组内使用插入排序代码的test2中模仿了stl的排序 使用了1、快排的3点取中法 + 优化的插入排序2、快排的3点取中法 +希尔排序比未尝优化的快排 稍快```cpp#include <iostream>#include <cs原创 2021-08-29 16:12:00 · 122 阅读 · 0 评论