- 博客(19)
- 资源 (17)
- 收藏
- 关注
原创 设计模式(六)策略模式Strategy
意图:定义一个系列算法,把他们一个个封装起来,并且使它们可互相替换。使得算法可以独立于使用它的客户。传统C++方法实现:#include #include using namespace std;class Strategy{public: virtual void doAlgorithm(void)=0; virtual ~Strategy(){}protected:
2016-03-31 19:06:41 917
原创 Boost中的单例模式
boost库实现了一个单利模式,并区分返回的是const & 还是非const &。如果返回的是const & ,则必然已经是线程安全的。如果返回的是非 const &,则不是线程安全的,需要自己注意加锁哦。代码:#includeusing namespace std;#include "boost/serialization/singleton.hpp"using name
2016-03-31 18:11:30 1616
原创 C++11 函数调用操作符重载 function 加减乘除四则运算计算器
function+bind可以实现按值传递函数对象,从而消灭多态,消灭回调。参考:《C++ Primer 第五版中文版》《Linux 多线程服务端编程》代码:#include #include #include #include using namespace std;int add(int i,int j) { return i+j;}class divide{p
2016-03-31 17:56:08 2492 2
原创 多线程同步的开发
介绍根据多线程同步原理中介绍的内容可知,多线程开发就是要让多个线程正确的访问临界资源,实现多线程同步。所以,一般的同步策略最简单的就是:使用互斥体(mutex)来管理临界资源(与临界资源同时定义,生命期相同,作用域相同),互斥体提供P、V操作(获取,获取不到就等待;释放,唤醒等待的线程)。不同的线程使用锁(Guard)来自动调用(构造函数、析构函数)互斥体的P、V操作,从而实现同步。互
2016-03-29 19:45:12 953
原创 设计模式(五)桥接模式Bridge == Pointer To Implementation
意图:将抽象部分与实现部分分离,使它们都可以独立的变化。(核心在抽象,为了应对变更才有了不同的实现)示例代码:接口类samplesample.h#pragma once#include "boost/smart_ptr.hpp"using namespace boost;class imp;//只需要生命无需包含源文件class sample{public: s
2016-03-16 22:59:49 1424
原创 23种设计模式:现代C++实现 V2.0
适配器模式Adapter意图:接一个类的接口转换为客户希望的另一个接口。例子:用deque实现栈或者队列桥接模式Bridge意图:将抽象部分与实现部分分离,使它们都可以独立的变化。(核心在抽象,为了应对变更才有了不同的实现)例子:Windows各种窗口使用成员指针来指向具体的实现类示例代码代理模式Proxy意图:为对象提供一种代理以控制对这个对象的访问。(核心是被代
2016-03-16 22:26:38 7666
原创 设计模式(四)std::function助力抽象工厂和工厂方法
抽象工厂Abstract Factory意图:用工厂类的不同成员函数来返回不同类型的对象。这些不同的对象往往是有着共同的基类,最终是想利用多态。而多态已经被function+bind取代,所以这个模式没啥意义!特点:使用智能指针获取对象,而不是暴露原始指针。代码:#include "boost/smart_ptr.hpp"#include "boost/wea...
2016-03-16 11:44:57 4302
原创 设计模式(三)观察者模式Observer(发布订阅)
观察者模式的目的是让博客更新之后,所有订阅了博客的人都能得到通知这里使用了只能指针来实现,从而完整的解决了资源管理的问题。Blog.h#pragma once#include #include using namespace std;#include #include "boost/weak_ptr.hpp"//#include "Observer.h"这里不能包含头文件
2016-03-15 11:51:51 1672 1
原创 weak_ptr基本用法
weak_ptr主要是配合share_ptr来实现应用计数,同时不会发生循环引用。参考:http://www.cnblogs.com/TianFang/archive/2008/09/20/1294590.html#include "boost/smart_ptr.hpp"#include "boost/weak_ptr.hpp"#includeusing namespace st
2016-03-13 14:41:37 3199
原创 多线程同步的原理
参考多线程执行进程在活动中会相互制约所有进程都是相互独立的进程之间以异步并发方式执行同步同步是进程共同完成一项任务时互相发生的关系同步进程之间具有合作关系执行的时候必须按照一定顺序协调进行互斥互斥是进程之间共同完成一项任务时,由于竞争同一种资源,发生的互相排斥的关系互斥进程之间不具备时间次序的关系临界资源一次只允许一个进程
2016-03-12 22:19:26 1772
原创 C++常用知识列表
头文件C++标准头文件算法STL全排列算法next_permutation和prev_permutation内存管理shared_ptr让C++程序和new delete彻底说拜拜
2016-03-11 17:16:23 777
原创 常用SQL语句汇总
SQL取整、四舍五入SQL UPDATESQL空值替换 ISNULLCASE WHEN 两种用法GROUP BY分组与聚合函数* join日期与字符转换 SQL中的空值NULLCREATE TABLE创建表SQL UNION 和 UNION ALL 操作符 INSERT INTO SELECT
2016-03-03 11:25:21 693
原创 ACE的约定
ACE的内存与资源管理建立在一些约定之上,这些约定并没有单独的章节去介绍。这里统一归纳一下消息队列ACE_Message_Queue消息队列中的消息ACE_Message_Block:(1)创建:伴随业务创建堆对象(2)释放:谁使用,谁负责释放,使用完使用release方法释放服务处理器ACE_Event_Handler(1)创建:伴随业务创建堆对象(2)ope
2016-03-01 23:28:39 1141
原创 ACE_Event_Handler
详细介绍原文地址ACE_Event_Handler是ACE中的所有反应式事件处理器的基类。这个类提供了以下能力:它定义输入事件、输出事件、异常事件、定时器事件以及信号事件的挂钩方法。它的挂钩方法允许应用以许多方式扩展事件处理器子类,而不必改变框架。它对面向对象回调的使用简化了“数据”与“对这些数据进行操作的挂钩方法”的关联它对对象的使用还使“一个事件源(或成组事件源)”与“事件
2016-03-01 09:59:01 1310
RabbitMQ C++ Client on Windows
2014-04-10
C++ Network Programming Volume 2.chm
2014-03-05
Aho算法的C++实现
2010-12-20
汇编编译器 集成开发环境 适用于初学者循序渐进学习asm2010
2010-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人