- 博客(14)
- 资源 (5)
- 收藏
- 关注
原创 rapidjson 简单封装
rapidjson 简单封装https://github.com/miloyip/rapidjson 简介RapidJSON是一个C++的JSON解析器及生成器。它的灵感来自RapidXml。RapidJSON小而全。它同时支持SAX和DOM风格的API。SAX解析器只有约500行代码。 RapidJSON快。它的性能可与strlen()相比。可支持SSE2/SSE4.2加速。 RapidJS
2016-06-18 17:36:46
3816
原创 c++11 你需要知道这些就够了
c++11新特性举着火把寻找电灯今天我就权当抛砖引玉,如有不解大家一起探讨。有部分内容是引用自互联网上的内容,如有问题请联系我。T&& 右值引用 std::move右值引用出现之前我们只能用const引用来关联临时对象(右值)所以我们不能修临时对象的内容,右值引用的出现就让我们可以取得临时对象的控制权,终于可以修改临时对象了!int main()
2016-01-20 17:16:33
29672
1
原创 深度剖析 函数指针
声明:以下代码全部在windows7 vs2010环境下编译通过,并执行无误。全局函数指针是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数。函数指针的声明方法:数据类型标志符(指针变量名)(形参列表);一般函数的声明为: intfu
2015-06-23 18:55:44
1695
原创 类似 nginx 编译时生成函数链表
以下代码可能需要一定的c/c++基础。common.h#pragma oncetypedef int (*pt)(void);void init_2();2.cpp#include #include "common.h"using namespace std;static pt next_pt;extern pt top_pt;int filter_2
2015-06-23 18:16:05
1015
原创 mysql order by的一个小坑
order by 大量数据的时候,mysql会把临时排序数据放在 /tmp 目录下。造成目录写满,返回失败。这么个小坑没有什么好说的,写在这里备忘一下。
2015-05-22 19:32:10
897
原创 C++ 超短字符串比较
最近这几天的工作中用到了C++字符串比较。在一次运行中需要做海量的字符串相等的比较。而且字符串都是3-5字节长度的字符串,在这里在占用了太多的CPU资源。 如何快速比较短字符串,这里也是有方法的。(学习了nginx字符串比较) 首先思路转化,字符串比较在CPU指令中是逐字节比较,比如有”abc”和“abd”这两个字符串做是否相同的比较。需要执行三次一字节的比较指令。而
2015-01-25 16:06:44
1898
原创 多线程计数器——原子操作
众所周知,多线程下计数存在着计数不正确的问题。这个问题的根源在于多个线程对同一个变量可以同时访问(修改)。这样就造成了修改后的结果不一致。 首先在这里先强调一点,volatile 关键字并不能提供多线程安全访问。因为有volatie修饰的变量,每次操作时遵循下面动作: 从内存取值 ---> 放入寄存器 ---> 操作 --->写回内存 这几个步骤不是原子的操作在任意两个
2014-09-28 17:33:50
6776
原创 成员函数作为线程函数调用
遇到的问题 我们在编程中需要把数据封装成一个类,调用pthread_create 利用成员函数去创建一个线程往往是不成功的!error: argumentof type ‘void* (Threadpool::)(void*)’ does not match ‘void* (*)(void*)’出现类型不匹配的问题。因为pthread_create需要的参数类型为voi
2014-09-14 16:53:49
3915
1
原创 C++ 重载赋值操作符operator=的高级议题
C++ class perator= 重载赋值操作符。关于重载赋值操作符的例子网上已经是一搜一大把了,在这里我就不做这些介绍了,只给大家总结一下对于这个操作符的基本注意事项。1. 首先在函数中做if(this == & rhs);//判断是否是自我赋值;2. 返回值类型为T& 不可为const T&。3. 返回值为*this ,满足
2014-09-07 15:48:31
2298
原创 简单的Boost::asio 高性能C/S服务器模型
Boost::Asio 在底层封装的了操作系统的高效I/O模型。实现了很高的并发量和吞吐量。其中操作系统主要实现了两种I/O模型Reactor和Proactor。接下来探讨一下两种I/O多路复用模式:一般地,I/O多路复用机制都依赖于一个事件多路分离器(EventDemultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Eve
2014-08-17 21:16:10
4399
原创 C++高效日志类(库)
前段时间在做毕业设计需要有一个功能模块是写日志,为了配合高性能服务器不拖延服务器的效率所以必须要写出一个十分高效确不太占用系统资源的日志类。经过参考前辈们写的资料加上自己不断地研究改进,现在完成了一个C++高效日志的类。经过我本人的测试发现该类库可以在WINDOWS平台、多线程环境下出色完成写日志的任务,可以达到50M/S的日志输出量。同时做了日志切割,当日志文件大小达到设定值时自动切入下一个
2014-07-04 21:36:51
2504
原创 C++随机数解析
深度解读如何生成大范围随机数前几天在做毕业设计的时候需要用到随机数,发现随机数并不“随机”。Rand生成的都是伪随机数。随机数介绍先来看看rand的函数原型及用法#include int rand( void );功能: 函数返回一个在零到RAND_MAX 之间的伪随机整数。例如:srand( time(NULL) );
2014-06-04 15:03:20
1254
原创 C++数组名内涵深度剖析
指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"的误解。数组名的正常使用首先我要跟大家
2014-04-17 23:00:21
967
3
原创 C++ 函数指针浅析
声明:以下代码全部在windows7 vs2010环境下编译通过,并执行无误。目录全局函数指针...1指向成员函数的函数指针...3 全局函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数。函数指针的声明方法:数据
2014-01-14 13:25:06
1344
C++高效日志类(库)
2014-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人