- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 网络IO管理
epoll_ctl有三个操作EPOLL_CTL_ADD、EPOLL_CTL_MOD和EPOLL_CTL_DEL,分别对应注册文件描述符与关注的事件、修改文件描述符关注的事件和删除注册节点。poll与select类似,select是用三个集合来返回哪些文件描述符可读/可写/有异常,而poll对于每个监控的文件描述符,对于返回状态用标记位来表示。epoll相对于poll来说,事件的触发与时间的处理并不是同步的,而是异步,使得服务器程序的用户态可以只关注已经触发事件的文件描述符。去处理不同连接的请求,那么是。..
2022-07-27 12:23:59
330
原创 Makefile和CMake
如果把这个目录copy到另外的目录上作为备份,因为这些中间文件和makefile组成的工程指向的路径是原来的目录上,所以当我们修改源文件编译的时候,编译的源文件是原来目录上的源文件。如果没有这个声明,make程序会把clean当做是文件,所以如果存在clean文件的时候,那么运行这个规则的时候就会当做文件存在而不执行命令。file文件系统操作,GLOB是把与模式匹配的文件的文件名加入到变量中,GLOB_RECURSE与GLOB类似,但会在匹配的文件的目录中的子目录递归地把匹配的文件的文件名加入到变量中。..
2022-07-22 11:24:40
1496
原创 c++11中的atomic与执行顺序问题的讨论
对于读屏障,运行时,读屏障之前的已经加入到storebuffer的修改操作会被标记,如果storebuffer的所有修改操作还未收到回复而清空掉,那么读屏障之后的修改操作就会加入到storebuffer中,cache中对应的缓存行还是原来的值而不是storebuffer的值。如果存在一个c指令不依赖于a指令也不依赖于b指令,那么处理器优化就可以把c指令重排到a指令之前,这样子有利于减少流水线停止来等待b指令完成的时间。内存屏障可以使得屏障前后的指令不被编译器优化和处理器优化重排。...
2022-07-18 15:32:42
521
原创 c++11新特性的线程相关
1、thread在c++11之后,标准库有对于子线程的支持。要运用thread就要链接线程库,编译的时候要添加选项“-lpthread”。thread就是用于多线程编程的。thread的基本用法如下:2、互斥量互斥量有好几种:mutex、timed_mutex、recursive_mutex、recursive_timed_mutex、shared_mutex(c++17)、shared_timed_mutex(c++14)。用法:timed_mutex与mutex大同小异,timed_mute
2022-07-13 10:07:37
420
原创 hash的讨论
hash函数与冲突处理。哈希表布隆过滤器hyperloglog(redis)分布式一致性hash负载因子:哈希数组存储的元素/哈希数组的长度。哈希冲突:不同的key值利用哈希函数算出相同的addr冲突解决方式:1、链表法:a、头插法(一般用于数据库,数据库因为认为刚刚插入的元素最近会更加容易访问到)b、尾插法c、当链表过长可以把链表转化成红黑树或者avl树。2、开放地址法:...
2022-04-10 15:13:16
399
原创 c/c++中int类型的负数用强制类型转化为long long类型的讨论
今天遇到一个问题,想分享一下,以下是运行代码:#include <iostream>int main(int argn, char ** argc){ int int_num = 0xffffff00; //1 unsigned int uint_num = (unsigned int)(int_num); unsigned long long ull_num = (unsigned long long)(uint_num); long lo
2022-03-02 00:11:50
2919
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人