自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 QT 学习之路 图片显示

突然不想写了。。。。。。。。。

2016-07-28 11:16:05 420

原创 如何在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

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除