c++11

基本 函数定义 返回值类型 函数名(参数列表) //函数头 { 函数体 } 函数声明 返回值类型 函数名(参数列表); ODR规则 ODR = One Definition Rule(单一定义规则),C++ 程序有一个核心规则: 一个变量、函数、类型,在整个程序中必须满足定义规则 禁止: // a.cpp int g_value = 10; // b.cpp int g_value = 20; 在链接的时候会出现multiple definition of g_value,违反了ODR ...

August 3, 2026 · 6 min

template

可变参数模板 声明可变参数模板的时候需要在typename或class 后面带上省略号... 声明一个参数包,这个参数包中可以包含0到任意个板参数。 在模板定义的右边,可以将参数包展开成一个一个独立的参数。 template<typename... T> void f(T... args) { coout << sizeof...(args) <<endl; } f(); f(1,2); f(1,2,""); ZLMediaKit的模板 ...

June 26, 2026 · 2 min

thread

线程管理的基础 启动线程 std::thread 可传函数、函数对象、lambda 正确写法 void background_task() { /* ... */ } std::thread t(background_task); // 传函数指针,不要加 () // 或 std::thread t(&background_task); // 显式取地址,等价 函数名在表达式中会 衰变为函数指针,正好符合 std::thread 对 callable 的要求。 ...

June 11, 2026 · 3 min

design

单例模式 Service Locator 这实际上是属于一种全局获取依赖对象的设计模式,可以理解为“我不通过构造函数传进来,而是到一个全局注册中心里去拿对象。” Meyer’s Singleton 经典代码: class StreamManager { public: static StreamManager& instance() { static StreamManager obj; return obj; } private: StreamManager() {} }; //使用 CmsStreamManager::instance().start(); 缺点 隐式依赖 RecordController(controller) //它内部还依赖: CmsStreamManager::instance() 生命周期不可控 谁创建? 谁销毁? 什么时候初始化?全隐藏。 ...

May 21, 2026 · 1 min

ZLMediakit

April 27, 2026 · 0 min

ZLToolKit

ZLToolKit源码框架 主要分为Thread、Poller、Network、Util四大部分。 Thread文件夹 TaskExecutor.h 有cpu负载计算,Task函数指针模板,任务执行器管理,管理任务执行线程池 ...

April 27, 2026 · 3 min

openssl

April 22, 2026 · 0 min