摘要: 在 C 语言中,container_of 是一个宏定义,可以通过指向结构体中的成员来获取该结构体的地址。它的定义如下: #define container_of(ptr, type, member) \ ((type *)((char *)(ptr) - offsetof(type, member) 阅读全文
posted @ 2023-04-07 10:48 阿玛尼迪迪 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 对于前置单目运算符,重载函数没有形参,对于后置单目运算符,重载函数有一个int型形参。这个int型参数在函数体中并不使用,纯粹是用来区别前置与后置,因此参数表中可以只给出类型名,没有参数名。 1 #include <iostream> 2 3 using namespace std; 4 5 cla 阅读全文
posted @ 2021-03-07 15:54 阿玛尼迪迪 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 一、当为取地址操作符重载 取地址成员函数是“类的六大默认成员函数之一”。其分为两种,普通取地址操作符和const取地址操作符。 取地址是什么意思呢?就是返回当前对象的地址,对于成员函数来讲,this指针就是它的地址。 将'&'重载重载为成员函数时,是否需要传参? Date* operator&() 阅读全文
posted @ 2021-03-07 15:33 阿玛尼迪迪 阅读(1247) 评论(0) 推荐(0) 编辑
摘要: 一、std::thread类 (一)thread类摘要及分析 class thread { // class for observing and managing threads public: class id; using native_handle_type = void*; thread() 阅读全文
posted @ 2021-03-07 14:39 阿玛尼迪迪 阅读(1582) 评论(0) 推荐(0) 编辑
摘要: 《一文读懂C++右值引用和std::move》 阅读全文
posted @ 2021-03-02 21:29 阿玛尼迪迪 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 一、前言 缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进程A产生数据发给另外一个进程B,进程B需要对进程A传的数据进行处理并写入文件,如果B没有处理完,则A要延迟发送。为了保证进程A减少等待时间,可以在A和B之间采用一个缓冲区,A每次将数据存放在缓冲区中,B每次 阅读全文
posted @ 2021-02-28 15:28 阿玛尼迪迪 阅读(441) 评论(0) 推荐(0) 编辑
摘要: 1、首先使用top命令定位到CPU占用高的进程PID 执行top命令,列出所有进程的情况,然后按大写的'P',按CPU占用大小降序显示进程信息 2、获取线程信息,并找到CPU占用高的线程 ps -mq pid -o THREAD,tid,time | sort -rn 3、将需要的线程ID转换为16 阅读全文
posted @ 2021-02-25 19:49 阿玛尼迪迪 阅读(2120) 评论(0) 推荐(0) 编辑
摘要: 单生产者和单消费者的情况下可以不要锁,但是memory barrier还是需要的。 考虑下面一个简单的情况,初始时,data未初始化,flag = 0; 生产者线程: data = 1; flag = 1; 消费者线程: while(!flag) {}; read data; 这段代码意思是消费者等 阅读全文
posted @ 2021-02-20 14:10 阿玛尼迪迪 阅读(1158) 评论(0) 推荐(0) 编辑
摘要: 什么是CMake 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果 阅读全文
posted @ 2021-01-20 20:31 阿玛尼迪迪 阅读(1856) 评论(0) 推荐(0) 编辑
摘要: Nginx在1.9.0版本发布以前如果要想做到基于TCP的代理及负载均衡需要通过打名为nginx_tcp_proxy_module的第三方patch来实现,该模块的代码托管在github上网址:https://github.com/yaoweibin/nginx_tcp_proxy_module/ 阅读全文
posted @ 2021-01-04 11:17 阿玛尼迪迪 阅读(234) 评论(0) 推荐(0) 编辑