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