摘要:
一、前言 缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进程A产生数据发给另外一个进程B,进程B需要对进程A传的数据进行处理并写入文件,如果B没有处理完,则A要延迟发送。为了保证进程A减少等待时间,可以在A和B之间采用一个缓冲区,A每次将数据存放在缓冲区中,B每次 阅读全文
摘要:
1、首先使用top命令定位到CPU占用高的进程PID 执行top命令,列出所有进程的情况,然后按大写的'P',按CPU占用大小降序显示进程信息 2、获取线程信息,并找到CPU占用高的线程 ps -mq pid -o THREAD,tid,time | sort -rn 3、将需要的线程ID转换为16 阅读全文
摘要:
单生产者和单消费者的情况下可以不要锁,但是memory barrier还是需要的。 考虑下面一个简单的情况,初始时,data未初始化,flag = 0; 生产者线程: data = 1; flag = 1; 消费者线程: while(!flag) {}; read data; 这段代码意思是消费者等 阅读全文
摘要:
什么是CMake 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果 阅读全文
摘要:
Nginx在1.9.0版本发布以前如果要想做到基于TCP的代理及负载均衡需要通过打名为nginx_tcp_proxy_module的第三方patch来实现,该模块的代码托管在github上网址:https://github.com/yaoweibin/nginx_tcp_proxy_module/ 阅读全文
摘要:
在常规运维工作中,经常会运用到负载均衡服务。负载均衡分为四层负载和七层负载,那么这两者之间有什么不同? 一、什么是负载均衡 1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可 阅读全文
摘要:
描述 nginx实现tomcat集群后会出现这样的情形,登录时请求由tomcat1处理,而跳转到首页时负载到了tomcat2,而tomcat2中又没有tomcat1中的登录信息,又会需要登录,这样会造成登录死循环。如何解决呢? 方法一:复制session信息 原理:讲道理,这个方法比较蠢,就是有几个 阅读全文
摘要:
常量表达式 常量表达式(const expression)是指值不会改变并且在编译过程就能得到计算结果的表达式。显然,字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。 一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定,例如: 1 const int max_ 阅读全文
摘要:
当一个类的对象向该类的另一个对象赋值时,就会用到该类的赋值构造函数。 当没有重载赋值构造函数(赋值运算符)时,通过默认赋值构造函数来进行赋值操作 A a; A b; b = a; 注意:这里a,b对象是已经存在的,是用a对象来赋值给b的。 赋值运算符的重载声明如下: A& operator = (c 阅读全文
摘要:
c++ std中set与unordered_set区别和map与unordered_map区别类似,其底层的数据结构说明如下: 1、set基于红黑树实现,红黑树具有自动排序的功能,因此map内部所有的数据,在任何时候,都是有序的。 2、unordered_set基于哈希表,数据插入和查找的时间复杂度 阅读全文