摘要: Epoch Based Reclamation Epoch Based Reclamation epoch based reclamation 算法参考文档: http://www.cs.toronto.edu/~tomhart/papers/tomhart_thesis.pdf https://a 阅读全文
posted @ 2022-10-21 23:56 如果的事 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 内存对齐 先了解下C/C++基本类型的字节占用情况, alignas 关键字 #pragma pack(N) pragma pack 规定的对齐长度,实际使用的规则是: 结构(如struct,union,或者class )内部的数据成员,第一个放在偏移为0的地方,以后每个数据成员的对齐,按照#pra 阅读全文
posted @ 2022-05-06 18:45 如果的事 阅读(341) 评论(0) 推荐(0) 编辑
摘要: Hazard Pointer 先看个例子: int *p = new int(2);void reader() { if (nullptr != p) { //nullptr是C++11中引入的 cout << *p << endl; }}void writer() { delete p; p = 阅读全文
posted @ 2022-05-06 15:18 如果的事 阅读(168) 评论(0) 推荐(0) 编辑
摘要: Thread Local Storage 我们知道多线程共享同一个进程的地址空间,对全局变量来说,某一个线程对其修改会影响其他所有线程。 如果我们需要一个变量在每个线程中都能访问,并且值在每个线程中互不影响,这就是 Thread Local Storage(TLS,也称 “线程私有数据”)。 Lin 阅读全文
posted @ 2021-07-13 16:13 如果的事 阅读(917) 评论(0) 推荐(0) 编辑
摘要: 广告索引(定向)的布尔表达式 在搜索领域,索引是一项非常重要的技术,直接影响到查询的效率,其基本的流程是:文章先进行分词、计算权重,然后利用词和文档的信息建立倒排索引,在查询的时候,得到符合条件的文档的id集合,然后利用正排索引返回文档的详细信息。 在计算广告中,广告主通常会定义广告投放的条件,例如 阅读全文
posted @ 2021-05-14 19:38 如果的事 阅读(1472) 评论(0) 推荐(0) 编辑
摘要: C++ 浮点数的存储与精度 先看个例子(如下),我们看下int、float、double在内存的二进制表示 #include<stdio.h> #include <stdlib.h> #include <string.h> #include<cstdlib> bool isLittleEndian( 阅读全文
posted @ 2021-01-09 17:23 如果的事 阅读(3926) 评论(0) 推荐(1) 编辑
摘要: 端口复用与惊群效应 REUSEADDR 假设同一个机器上有2个套接字,分别bind到 ip1:port1、ip2:port2,如果 port1 == port2,则第二个bind的套接字会有"Address already in use"的错误。 为了允许多个套接字绑定到同一个port上,可以打开S 阅读全文
posted @ 2021-01-07 19:45 如果的事 阅读(943) 评论(0) 推荐(0) 编辑
摘要: 简单排序 冒泡排序 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。 直观表达,每一趟遍历,将一个最大的数移到序列末尾。 void bubbleSort(int* array, int len) { for (int n = 0 阅读全文
posted @ 2020-12-20 16:44 如果的事 阅读(114) 评论(0) 推荐(0) 编辑
摘要: C++ Singleton Lazy Singleton C++11的一个Lazy Singleton(懒汉)版本: class Singleton { public: Singleton(const Singleton&) = delete; Singleton& operator=(const 阅读全文
posted @ 2020-12-01 12:33 如果的事 阅读(1035) 评论(0) 推荐(0) 编辑
摘要: clone linux 创建线程(pthread_create)和进程(fork)的过程非常类似,都是主要依赖 clone 函数,只不过传入的参数不同而已。 如此一来,内核只需要实现一个 clone函数,就既能创建进程,又能创建线程了,例如; 创建进程: clone(SIGCHLD) 创建线程: c 阅读全文
posted @ 2020-11-30 18:29 如果的事 阅读(2053) 评论(0) 推荐(0) 编辑