- 浏览: 375329 次
- 性别:
- 来自: 苏州
-
最新评论
-
u013189503:
来个密码吧
[C++][Logging] 项目中写日志模块的实现 -
wyf_vc:
来个密码啊!!
[C++][Logging] 项目中写日志模块的实现
文章列表
发现《Windows网络编程技术》中还是有不少很不错的东西哦,比如说类似Ipconfig的demo。贴出来学习一下。
#include <windows.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <time.h>
void main(void) {
DWORD Err;
PFIXED_INFO pFixedInfo;
DWORD FixedInfoSize = 0;
PIP_ADAPTER_INFO ...
转自http://dark-c.at/blog/?p=79
单例模式,顾名思义,此模式下的对象实例永远只有一个.很多初学者感觉这个模式的用处不大.但实际上,这个模式的应用非常广泛.
很多情况下,我们会很自然的使用单例的方式来实现功能,如全局内存池;全局资源管理器;某个全局的工具类工厂...在UI开发上,同一时间点上仅会出现一个实例的对话框,也可以使用单例实现.
单例的类图很简单:
它的目的,就是给程序提供一个全局唯一的访问点,用于访问某些资源;固定的算法或唯一的对象等.
单例模式的构建方式主要有两种:饿汉方式与懒汉方式.也就是静态初始化的单例与运行时根据需要初始化的单例 ...
1 什么是线程池?
2
class CJobImpl{public: virtual void DoJob()=0;};class CJob : public CJobImpl{public: virtual void DoJob();};typedef list JobList;class CThreadImpl{public: friend class CThreadPool;public: virtual void Run(HANDLE thread) = 0 ; virtual void AddJob(CJobImpl* newJob) = ...
本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们 ...
在我们所熟悉的STL中,vector有自己的一套分配策略。
1)当vector被创建的时候,vector会根据用户的设置进行分配内存;通常申请的内存空间是制定值的两倍;
2)当vector插入数据的时候,如果内存空间不足,它会自动重新申请一块内存(2倍于当前大小),然后把原来的内存内容拷贝到新的内存中区,最后在释放原来的内存空间;
3)动态释放内存就导致一个问题的出现,那就是迭代器失效,因为vector已经偷偷的把地址给换了;
所以我们使用迭代器的原则是:
(1)尽量不做写的工作;
(2)不可避免使用写工作的时候,在做完写工作的同时必须重新初始化迭代器;
这部分是测试代码:
typed ...
http://www.cppblog.com/mzty/archive/2006/09/21/12790.html
与虚拟内存一样,内存映射文件可以用来保留一个地址空间的区域,并将物理存储器提交给该区域。它们之间的差别是,物理存储器来自一个已经位于磁盘上的文件,而不是系统的页文件。一旦该文件被映射,就可以访问它,就像整个文件已经加载内存一样。
内存映射文件可以用于3个不同的目的:
• 系统使用内存映射文件,以便加载和执行.exe和DLL文件。这可以大大节省页文件空间和应用程序启动运行所需的时间。
• 可以使用内存映射文件来访问磁盘上的数据文件。这使你可以不必对文件执行I/O操作,并且可以 ...
http://www.cnblogs.com/yawer/archive/2007/11/27/973909.html
dynamic_cast—多态类型的转化
表达式:dynamic_cast(expression)把操作数expression转化为一个type-id对象。type-id必须是一个指针或者是一个引用。如果type-id是一个指针,那么expression必须是 ...
问题
每个人、事物在不同的状态下会有不同表现(动作),而一个状态又会在不同的表现下转移到下一个不同的状态(State)。最简单的一个生活中的例子就是:地铁入口处,如果你放入正确的地铁票,门就会打开让你通过。在出口处也是验票,如果正确你就可以ok,否则就不让你通过(如果你动作野蛮,或许会有报警(Alarm),:))。
有限状态自动机(FSM)也是一个典型的状态不同,对输入有不同的响应(状态转移)。通常我们在实现这类系统会使用到很多的Switch/Case语句,Case某种状态,发生什么动作,Case另外一种状态,则发生另外一种状态。但是这种实现方式至少有以下两个问题:
1)当状态数目不是很多的时候 ...
本来打算只是些一点点关于static函数的东西,搜索了一下,发现有篇文章写的不错,那么就学习下,顺便调试一下。
link:http://www.vckbase.com/document/viewdoc/?id=1720
C++的static有两种用法:面向过程程序设计中的static和面向 ...
昨天一个偶然机会,看到一篇文章,是关于C++ socket server和client传输报文的。 然后就联想到以前做的报文传输,就联想到把十六进制流转换为二进制制流进行传输,最大的好处就是减少网络传输 的负载。 例如,”1234ab“字符串一般存储占用6个byte,可是转换为 0x12 0x34 0xab,这样就只需要3个byte,一样达到 预期的效果,现在就不废话了,把写的测试代码贴出来,有兴趣的,一起看看。
/*! ************************************************************** ...
关于这宏定义函数的用法,现在不是特别常见,但是在特殊情况下还是很有用的。
定义如下:
class StringBuilder
{
public:
StringBuilder(const char8_t* str);
virtual ~StringBuilder();
...
virtual StringBuilder& operator<<(const char8_t* value) { return operator+(value); }
virtual StringBuilder& operator& ...
参考
http://blog.sina.com.cn/s/blog_7003af290100scir.html
inline函数是C++引入的机制,目的是解决使用宏定义的一些缺点。
1.为什么要引入内联函数(内联函数的作用)
用它替代宏定义,消除宏定义的缺点。宏定义使用预处理器实现,做一 ...
List
双向链表
每一个结点都包括一个信息快Info、一个前驱指针Pre、一个后驱指针Post。可以不分配必须的内存大小方便的进行添加和删除操作。使用的是非连续的内存空间进行存储。
优点:(1) 不使用连续内存完成动态操作。
(2) 在内部方便的进行插入和删除操作
(3) 可在两端进行push、pop
缺点:(1) 不能进行内部的随机访问,即不支持[ ]操作符和vector.at()
(2) 相对于verctor占用内存多
测试目的:
(1) 熟悉了解STL List基本使用方法;
(2) 熟悉函数 ...
1. Base64使用A--Z,a--z,0--9,+,/ 这64个字符. 2. 编码原理:将3个字节转换成4个字节( (3 X 8) = 24 = (4 X 6) )先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了. 3. 解码原理:将4个字节转换成3个字节.先读入4个6位(用 ...
- 2009-10-19 14:49
- 浏览 1137
- 评论(0)