- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 AOP框架实现之一
AOP实现的关键是动态织入,实现技术就是拦截目标方法,只要拦截了目标方法,我们就可以在目标方法执行前后做一些非核心逻辑,。 通过继承方式来实现拦截的话,需要派生基类并且实现基类接口,这增加了程序的耦合性。为了降低耦合性,这里采用模板来约束。 要求:每个切面必须有Before(Args...)或After(Args...)方法,用来处理核心逻辑执行前后的非核心逻辑。
2016-08-02 10:26:29 353
原创 c++11之function_traits
function_traits例:int func(int a,string b);function_traits::function_type; //获取函数类型 int _cdecl(int, string)function_traits::return_type; //intfunction_traits::arity; //2function_traits::arg_t
2016-07-28 19:56:49 2806
原创 c++11 之可变参数模板
目的:包含0到任意个模板参数声明可变参数模板需要在typename或class 后面加上省略号“...”一、可变参数模板函数templatevoid f(T...args){ cout}可变参数展开有两种方式:1.通过递归的模板函数来将参数展开2.通过逗号表达式和初始化列表方式展开参数包对于1介绍一种通过type_traits来展开并打印参数包,
2016-07-28 14:16:18 6686 1
原创 如何在VS2013中打印内存泄露信息
1,在程序开始的地方,一般是main函数开头处设置#ifndef _CRTDBG_MAP_ALLOC#define _CRTDBG_MAP_ALLOC#endif_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);2 将new 封装起来#ifdef NDEBUG#define DBG_
2016-07-27 19:35:17 634
原创 boost智能指针 与 内存分配
1. boost::scoped_ptr 这个智能指针只能在本作用域里使用,不能转让写下原型是最好的:templateclass scoped_ptr{ private: T* ptr; scoped_ptr(scoped_ptr const & ); scoped_ptr& operator=(scoped_ptr const&);
2016-07-27 13:28:19 534
原创 c++11 之type_traits
1.type_traits-类型萃取 (1)type_traits可以在一定程度上消除 switch-case 或者 if-else语句,降低程序的复杂度(2)可以在编译期就检查出是否是正确类型1.1基本的type_traits定义编译期常量 struct GetLeftSize{ static const int value =1;}或 st
2016-07-25 18:57:21 1713 1
原创 接收到含有结束符的字符怎么办
目的:将含有结束符'\0'的char*变量保存到string中string str_replace;str_replace.resize(dw_byte_read);memcpy(const_cast(str_replace.c_str()), str, dw_byte_read);
2016-07-25 17:46:50 394
原创 串口通信--两个主机之间
前提:硬件:两个主机之间通过串口线相连,中间有个串口转换器软件:已经打开COM1端口目标:两台pc之间可以通过串口通信要求:串口线应该用交叉线,非直连线。直通一般用于延长PC与设备,将2、3、5分别连接2、3、5,因为PC上一般为公头,而设备上多为母头,所以正好它们是通用的,既可用于延长也可用于连接;交叉一般用于PC与PC对接,将2对3、3对2、5对5,一般两头都是
2016-07-25 17:42:29 1318
转载 Windows核心编程HOOK部分(好酷)
http://blog.chinaunix.net/uid-26275986-id-3203048.html
2016-03-21 16:38:36 588
转载 多线程中的锁系统(三)-WaitHandle、AutoResetEvent、ManualResetEvent
http://bbs.it-home.org/thread-30922-1-8.html
2016-03-13 15:55:48 285
原创 volatile关键字的作用
volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。 搜索volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volati
2016-03-11 15:46:41 231
原创 领导者追随者模式
适用条件:多线程处理任务过程:有一个线程作为领导者,等待事件的发生;其他的线程作为追随者,仅仅是睡眠。 假如有事件需要处理,领导者会从追随者中指定一个新的领导者,自己去处理事件。 唤醒的追随者作为新的领导者等待事件的发生。 处理事件的线程处理完毕以后,就会成为追随者的一员,直到被唤醒成为领导者。 假如需要处理的事件太多,而线程数量不够(能够动态创建线程处理另当别论),则有的
2016-03-11 09:54:09 1751
windows核心编程第五版
2016-03-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人