编程语言 / C++
文章平均质量分 78
liuchangyu23
探路者
展开
-
基于Boost::asio库的网络编程实现基础
最近正在开发一个网络打印服务器程序,使用Boost::asio库来实现服务端。下面详细介子绍asio库的使用方法,仅用来总结学习经验。如有不对的地方请大家指正.废话少说,直接进入主题。对于一个网络程序的服务器端我们需要提供的是服务器的address,和服务开放的端口号port。在asio库中首先我们必须使用一个io_service类来支持所有的IO功能。需要注意到是我们必须调用io_servi原创 2009-08-01 01:23:00 · 13973 阅读 · 0 评论 -
C++的static关键字
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include转载 2009-08-15 18:58:00 · 470 阅读 · 0 评论 -
如何快速生成 UUID GUID
问题的由来: 我们经常会遇到需要一些特殊的值来指定一些特殊的变量,而且这个值要绝对的唯一。在windows下被称作GUID,其实GUID是微软对Distributed coumputing environment (DCE) universally unique identifier 的实现,而在Linux下则称作UUID。不论它叫什么名字,表达的意愿都是原创 2009-08-26 15:08:00 · 14904 阅读 · 1 评论 -
BOOST::bind 如何使用
boost::bind 是标准函数std::bind1st和std::bind2nd的泛型。它支持函数、函数对象、函数指针和成员函数指针。它可以绑定任何参数到一个具体的值或者函数到预定义好的位置。-----------------在函数和函数指针中使用-----------------int f(int a, int b){ return a + b;}原创 2009-09-14 13:27:00 · 3805 阅读 · 0 评论 -
Windows之内存映射文件
=====================Windows之内存映射文件=====================几乎每个应用程序都要处理文件,但要处理好并不容易。应用程序到底是先应该打开文件、再读取文件,最后关闭文件呢,还是应该先打开文件,再用一个缓存算法来读取和写入文件的不同部分?Windows为我们提供了一个两全其美的解决方案---内存映射文件。内存映射文件允许开发人员预订一块地址原创 2009-09-15 21:05:00 · 2621 阅读 · 0 评论 -
如何使用BOOST信号(一)
Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 <!-- /* St原创 2009-09-23 14:19:00 · 6029 阅读 · 1 评论 -
如何使用BOOST信号(二)
Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 <!-- /* St原创 2009-09-23 15:09:00 · 2001 阅读 · 0 评论 -
AOP,面向切面编程
AOP,面向切面编程 举一个最简单的例子说明什么是面向切面编程,银行柜员机程序,它实现的商业逻辑很简单,如果客户取钱就在客户的帐户上做减法,如果存钱就做加法。这样的开发任务交给程序员他最开心,因为这对他来说小菜一碟。而实际上银行和客户对只实现这2个功能的程序是不放心的,于是就引进了事务处理保证操作的完整性、日志功能完成报表稽核,这时程序员就要郁闷了:要分析每转载 2009-10-15 12:57:00 · 1243 阅读 · 0 评论 -
如何解决类的相互包含,实现模块的独立
在软件设计过程中,到处充满着陷阱,程序结构设计的不合理,会让你花费成倍的时间在一个死胡同里苦苦的寻找出路。下面详细解释一下如何解决常见的类相互包含的解决方法,使得模块的完全独立。假设有两个类classA 、classB。classA 中包含classB。例如 #include "classB.h"#include using namespace std; clas原创 2009-12-11 10:27:00 · 1454 阅读 · 0 评论 -
log4cplus 分级显示控制
前不久已经整理过一篇关于log4cplus介绍和使用基础的文章。这次来看看如何更好的使用log4cplus这个功能强大的日志系统吧。 ### 层次结构 ### 在log4cplus中,所有logger都通过一个层次化的结构(其实内部是hash表)来组织的。有一个Root级别的logger,可以通过以下方法获取:Logger root = Logger::原创 2009-08-11 22:25:00 · 2106 阅读 · 0 评论 -
DUMA (Detect Unitended Memory Access) 介绍
### DUMA 介绍 ### DUMA是一个开源的库,用来检测C/C++程序中缓冲区是否溢出。这个库是由Buce Perens 写的Electric Fence库的一个字库,另外添加了一些功能。 它可以帮助程序员检测到一些通常的程序bugs:--- 超过一个动态分配内存缓冲的头或者尾。--- 在返回一个动态分配的缓冲到堆中后使用了它。--- 检测内存泄漏。--原创 2009-08-11 12:52:00 · 2518 阅读 · 0 评论 -
C++ 重载操作符基础
概念: 通过操作符重载,可以针对类类型的操作数定义不同的操作符版本。如果只依靠使用IO使用命名函数以下的情况将无法避免。 cout.print("The sum of ").print(v1).print(" and "). print(v2).print(" is ").print(v1+v2). printO("/n").flush();而通过操作符重载可以使编写和阅读程序容易得多。 co原创 2009-08-02 16:23:00 · 1423 阅读 · 0 评论 -
Boost::Thread 多线程的基础知识
Boost.Thread可以使用多线程执行可移植C++代码中的共享数据。它提供了一些类和函数来管理线程本身,还有其它一些为了实现在线程之间同步数据或者提供针对特定单个线程的数据拷贝。头文件:#include 线程定义boost::thread 类是负责启动和管理线程。每个boost::thread对象代表一个单独的执行线程,是不可拷贝的。由于它是可以被移动到,所以它们可以被保存到会改变大小的容翻译 2009-08-03 23:31:00 · 8143 阅读 · 0 评论 -
using namespace 详解
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。 所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。 一 : 和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不转载 2009-08-06 18:54:00 · 1832 阅读 · 0 评论 -
log4cxx 用法详解
log4cxx是一个不错的库,利用配置文件就可以很灵活的使用它。 说说具体用法,首先当然是在你的C++代码中写上Log的各种东西了 log4cxx是一个不错的库,利用配置文件就可以很灵活的使用它。 说说具体用法,首先当然是在你的C++代码中写上Log的各种东西了 #include #include #include int _tmain(int argc, _TCHAR* a转载 2009-08-06 19:09:00 · 10996 阅读 · 1 评论 -
log4cpp 快速实现你的日志系统
Logcpp/Logc++ 用法详解Logcplusplus(使用上常被称作Logc++)。它的存在简化了在C++应用程序中建立日志和跟踪处理。当你的程序超过500行,或者运行一个后台程序或服务时,如果你不想因为调试程序而绞尽脑汁的话,或是当你需要回到一个月前的某个状态,那你就使用跟踪。那么C++应用程序是如果跟踪的呢。如果你使用的是面向过程的语言,比如C,你可能还需要使用以前的:#ifdef原创 2009-08-06 22:33:00 · 8889 阅读 · 0 评论 -
Debug 和 Release 编译方式的本质区别
一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /转载 2009-08-06 23:59:00 · 3508 阅读 · 0 评论 -
Linux 信号与信号处理分析
-相关核心概念 1.信号(signal)是向进程发送的软件通知,通知进程有事件发生。2.引发信号的事件发生时,信号就被创建了(generate)了。3.进程根据信号采取行动时,信号就被传递(deliver)了。 4.信号的生命期(lifetime)就是信号的创建和传递之间的时间间隔。5.已经生成但还未被传递的信号被称为挂起(pending)的信号。 如果在传递信号时,原创 2009-08-10 01:06:00 · 1839 阅读 · 0 评论 -
C++ 快速实现开源日志系统-Log4cplus
##################### C++ 快速实现开源日志系统-Log4cplus ######################## ### 说 明 ### 由于网络上对 log4cplus讲解的文档并不多,而且或多或少都有些缺陷、疏漏或者错误。本文是根据本人实践经验加上前人的指点而总结的,目的只是为了能对Log4cplus有个直观的了解。想要深入的了解需要查看更多原创 2009-08-10 23:14:00 · 6023 阅读 · 1 评论 -
C++ 高级主题之模板特化
我们很难写出所有可能被实例化的类型都合适的模板。某些情况下,通用模板定义对于某个类型可能是完全错误的,所以我们需要能够实现处理某些特殊情况,特化的概念变是如此。compare函数和Queue类是这个问题的很好例子。因为与C风格字符串一起使用时,他们都不能正确工作。 template int compare(const T &v1,const T &v2){ if(v1原创 2009-08-09 15:08:00 · 952 阅读 · 0 评论 -
PGP 加密算法在安全电子邮件中的应用
[摘要]随着互联网应用的日益普及,电子邮件信息成为交流方式之一,随之而来的有安全性的考虑。通过探讨基于PGP(Pretty GoodPrivacy)的一种加密方法,以及其算法和加密过程,并进一步论述了其安全性。 [关键词]PGP 电子邮件系统 加密5 中图分类号:TN99文献标识码:A文章编号:1671-797 (2008) 0110014-01 随着互联网应用的普及和发展,电子转载 2010-05-04 14:38:00 · 5136 阅读 · 0 评论