局部static变量

静态局部变量有以下特点:(1)该变量在全局数据区分配内存;(2)静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;(3)静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为 0;(4)它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作


蓄水池抽样算法

有一个在大数据下很现实的例子:“给出一个数据流,这个数据流的长度很大或者未知。并且对该数据流中数据只能访问一次。请写出一个随机选择算法,使得数据流中所有数据被选中的概率相等。”解决这个问题既需要算法设计,又需要一些概率论知识,因此对于大多数人,起码包括我,这不是一个立刻就能想出答案的问题。解决这个问


std::shared_mutex

说明C++14中引入std::shared_mutexstd::shared_mutex用于管理可转移和共享所有权的互斥对象,适用场景比较特殊:一个或多个读线程同时读取共享资源,且只有一个写线程来修改这个资源,这种情况下才能从shared_mutex获取性能优势。shared_lock是read l


std::tie

说明std::tie : 创建左值引用的 tuple,或将 tuple 解包为独立对象可以对std::tuple以及std::pair进行解包返回值含左值引用的 std::tuple 对象。示例void std_tie_test(){using RetTuple = std::tuple<st


C printf可变参数的实现原理

可变参数原理由于函数参数是存放在栈中的,而且是从左到右依次入栈(参数的地址从左到右依次增大),从右到左依次初始化,所以,函数的参数位置是确定的,一旦我们知道了某一个参数的地址我们就可以获得所有参数的地址。printf实现void MyPrint(const char* format, ...){va


C++17 filesystem

filesystem简介filesystem是c17新增的特性,可以很方便的对路径进行操作,遍历以及文件信息获取。注:vs在vs2017后开始对c17支持,vs2015及之前的版本不支持C++17头文件:#include <filesystem>using namespace std::


差分数组

简介今天在做leetcode每日一题的时候,又学到了一个特殊的数组《差分数组》,链接