- 博客(0)
- 资源 (10)
- 收藏
- 关注
linux 架构了一个简单的通讯服务器
linux 架构了一个简单的通讯服务器
简单介绍如下:
1.本实例使用了最基本的linux信号量。
2.本实例建造了一个简单的基类线程,供派生建造线程使用。
3.本实例建造了一个简单的监听线程,监听客户端的信息请求。
4.本实例建造了一个服务器消息发送线程,供服务器发送信息给客户端。
5.本实例建造了一个基本的队列,供存放,提取信息使用。
本DEMO麻雀虽小却五脏俱全,演示了linux服务器建造需要的基本元素。linux服务器架构都需要这些功能块元素的。
另外,这个DEME没有严格的测试过,是本人闲来无事随便写写的,仅供参考。
2012-03-30
如何判断电脑存储模式
大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中
小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节
返回1 大端格式
返回0 小端格式
2012-03-30
c++ 建造者模式实例
建造者模式:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表现。这就是建造者模式。
建造者模式可以把一个产品的内部表象与产品的生成过程分隔开来,从而可以使一个建造过程就可以生成具有不同内部表象的产品对象。
如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节都不需要了解。
下面的例子,以求职人来公司应聘,HR需要把他的求职简历输入电脑做存档。
首先HR是不可能让求职人自己在电脑上输入的。所以肯定需要求职人写在纸上然后HR来输入。
但是如果HR给他一张白纸,然后口头告诉他应该填什么什么,让他自己在白纸上
一项项的填上,这样就很容易出问题,首先他可能记不全所有的内容,其次填写的规范很难统一。再输入电脑肯定就是错误的数据。
所以HR应该定制一个简历的表单模板,然后给求职人按表单栏位规范填写,然后再根据填好的表单输入电脑就OK了。
这个过程其实就是个典型的建造者模式,首先电脑里的存档资料的构建过程,求职者完全不需要了解,他只需要关心那个固定的表单格式怎么填就好。
这里产品的内部表象就是就是电脑里的存档,而产品的生产过程就是求职者按表单填写纸面简历。
这里显然实现的把一个产品的内部表象与产品的生成过程分隔开来,然后不同的简历对应不同的电脑存档,这也实现了一个建造过程就可以生成具有不同内部表象的产品对象。
2012-03-30
C++ 代理模式实例
代理模式:
为其他对象提供一种代理以控制对这个对象的访问。
代理模式的主要作用是,用来控制真实对象的访问权限,也就是完全对外隐藏真实对象。以及在调用真实对象时,代理还可以额外的处理另外的事。
比如下面的例子里,Pursuit追求者想通过GiveGift接口函数送礼物给Girl,但是因为害羞不好意思开口。
所以有ProxyFriend好友代理,帮Pursuit送礼物,同样实现GiveGift方法,但是在方法里调用了Pursuit::GiveGift,这样对于Girl和Main函数来说,
Pursuit就被完全隐藏了,并且ProxyFriend还可以额外的在帮助Pursuit送出礼物的同时,帮Pursuit去表白。
2012-03-30
C++ 实现装饰模式实例
装饰模式:
装饰模式是为已有功能动态的添加更多功能的一种方法。
如果需要为一个主类里添加新的字段,新的方法和新的逻辑,而这些新加入的东西仅仅是为了满足一些只在某种特定情况下才会执行的特殊行为,
那么就可以把每个要装饰的功能放在单独的类中,并让这个类包装他所要装饰的对象,因此,当需要执行某个特殊行为的时候,
客户代码就可以在运行时根据需要有选择的,按顺序的使用装饰功能。
装饰功能的最大好处是能有效的把主类的核心职责和辅助的装饰功能完全的区分开,并且可以去除相关的类中重复的装饰逻辑。
下面的例子,说明了对Person主类,提供DoneDressing出门动作函数,
但是如果我们想在出门之前做其他的事情,则可以通过装饰模式来动态的实现,比如洗澡,擦皮鞋,戴帽子,而不需要直接改动出门动作的代码。
2012-03-30
c++ 设计模式 简单工厂模式
简单工厂模式:
具体实现了一个计算器的代码,首先计算器应该具备对两个数字进行运算的功能,而运算的方法可以有很多种(最基础的有加,减,乘,除),
并且代码易于移植,这里是个console的应用台界面,也应该可以直接移植到MFC里面使用
基于需求,可以把分成3个大模块。
1.界面实现方法,在main函数中
2.对所有运算类型的管理类OperationFactory,其中约定每种运算方法对应的应该创建的对象
3.实际的运算方法类,派生自Operation
这样,如果要实现一个MFC的计算器,则只需要把相关的类拷贝过去就好,而不需要再次去实现代码。
如果要新增一个开平方根的算法,则只需要新增一个OperationSqrt类,然后在OperationFactory里关联就可以。
如果需要修改除法里屏蔽除零的错误,则只需要去修改OperationDiv类就可以。
2012-03-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人