
C++
文章平均质量分 64
iw1210
这个作者很懒,什么都没留下…
展开
-
用C语言打印日志(Log)
用C语言打印日志(Log)直接上源代码。log.h 文件:/** log.h **/#ifndef __LOG_H__#define __LOG_H__#include "stdio.h"#include "string.h"#include "stdlib.h"#include "time.h"#include "stdarg.h"#include "unist转载 2016-12-13 00:08:46 · 27686 阅读 · 3 评论 -
程序设计中几种常见的命名规则
程序设计中几种常见的命名规则1. 匈牙利命名法(Hungarian)广泛应用于象 Microsoft Windows 这样的环境中。 Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一 位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。 匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀, 标识出原创 2015-04-25 14:02:45 · 2378 阅读 · 0 评论 -
STL容器类型
STL 容器目录vector模板函数表deque模板函数表list模板函数表set关联容器函数表multiset关联容器函数表map关联容器函数表multimap关联容器函数表queue配接器函数表priority_queue配接器函数表stack配接器函数表 vector模板函数表简介vector对象是stl提供转载 2015-04-08 12:24:00 · 954 阅读 · 0 评论 -
【 程序运行时出现莫名奇妙的异常现象的原因之总结 】
【 程序运行时出现莫名奇妙的异常现象的原因之总结 】1. 第三方的库与对应的 .h 文件版本不一致。解决办法:确定库和对应的 .h 文件版本一致后,重新编译程序。原创 2015-03-13 17:35:25 · 2174 阅读 · 0 评论 -
ACE的SOCKET通信:handle_input 函数的返回值不能随便写!
ACE的SOCKET通信:handle_input 函数的返回值不能随便写!如果用ACE做两个SOCKET客户端(Client),并且重载handle_input函数,返回数值3。运行发现先触发handle_input的那个Client对象一直接收服务器数据正常;另一个Client对象在服务器发送数据时也不会触发handle_input。如果把handle_input的返回值改为0后,两个原创 2015-04-21 11:26:07 · 2973 阅读 · 0 评论 -
线程池
什么是线程池? 诸如web服务器、数据库服务器、文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务。构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务。但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的转载 2015-04-03 17:34:46 · 546 阅读 · 0 评论 -
Windows系统下等待线程退出的方法
Windows系统下等待线程退出的方法 示例代码:#include#include#include#includeDWORD WINAPI ThreadFunc(LPVOID lpParam){ printf("本线程已经结束\n"); return 0;}void main(){ int t; // t 是未原创 2015-03-13 17:30:05 · 8440 阅读 · 1 评论 -
定义一个函数模板,为指定的数据类型分配内存。
定义一个函数模板,为指定的数据类型分配内存。 实例如下: #include #include typedef struct _TEST{ int n; char buf[100]; }TEST;template T* fun(){ return (T*)malloc(sizeof(T原创 2015-02-10 13:57:29 · 895 阅读 · 0 评论 -
设计模式:Inheritance(继承) 和 Delegation(委托)
设计模式:Inheritance(继承) 和 Delegation(委托)今天继续讲Design Pattern的内容。所谓 Design Pattern,翻译过来就是设计模式,是OO语言的一些基本运用。今天介绍Design Pattern中的两个基本概念,Inheritance(继承) 和Delegation(委托)。先定义一个位图类:class CBitmap {.原创 2014-06-23 10:27:40 · 5419 阅读 · 0 评论 -
ACE中创建线程的方法
ACE中创建线程的方法一、使用线程管理器类 ACE_Thread_Manager 创建线程。1. 使用 spawn 函数创建。#include "ace/Thread_Manager.h"void thread_start(void* arg){ printf("Running thread..\n");}int ACE_TMAIN (int argc, ACE_原创 2014-06-20 16:03:15 · 3042 阅读 · 0 评论 -
示例解析 C++ 的 new / delete 和 new [] / delete [] 之用法
示例解析 C++ 的 new / delete 和 new [] / delete [] 之用法 实例代码: #include #include // #include #define _CRTDBG_MAP_ALLOC#include #ifdef _DEBUG#define new new(_NORMAL_BLOCK,__FILE__,__LIN原创 2015-05-21 19:29:22 · 820 阅读 · 0 评论 -
C++ 的 new 和 delete : new operator, operator new, placement new, delete operator, operator delete
C++ 的 new 和 delete :new operator, operator new, placement new, delete operator, operator delete1. new operatornew operator 完成了两件事情:用于申请内存和初始化对象。例如:string* ps = new string("abc");2.operator n原创 2015-05-23 17:15:18 · 513 阅读 · 0 评论 -
用C语言读取配置文件
用C语言读取配置文件/*** readcfg.c ***/#include #include #include #include #include #define KEYVALLEN 100/* 删除左边的空格 */static char * l_trim(char * szOutput, const char *szInput){ assert(szInput原创 2016-12-05 16:31:54 · 1923 阅读 · 0 评论 -
Linux下用管道执行base64命令加密解密字符串
Linux下用管道执行base64命令加密解密字符串直接上实例代码,用base64加密解密字符串。test.c 文件:#include #include #include #define MAXL_BASE64CODE 1024int base64_encode(const char* str, char* out){ int n=0; FILE* fp=原创 2016-12-29 16:42:25 · 3018 阅读 · 0 评论 -
Linux下获取程序绝对路径(全路径)的方法
Linux下获取程序绝对路径(全路径)的方法直接上源代码:/*** NAME: getAbsopath* DESC: 获取程序的绝对路径* REMK: Absopath - Absolute path*/char* getAbsopath(){ static char buf[PATH_MAX]; int i; int len = readlink("/p原创 2017-01-04 16:21:32 · 8268 阅读 · 0 评论 -
Makefile 教程
Makefile 教程一、先来个入门实例两个源文件 helloworld.c 和 test.c :$ lshelloworld.c test.c源代码:helloworld.c#includevoid printHelloWorld(){ printf("Hello World.\n"); return;}test.c#includee原创 2016-12-05 18:40:27 · 586 阅读 · 0 评论 -
值得推荐的C/C++开源框架和库
值得推荐的C/C++开源框架和库 转自:http://www.cnblogs.com/lidabo/p/5514155.html- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言转载 2016-08-02 14:15:11 · 3240 阅读 · 2 评论 -
用VIM浏览源代码之跳转到函数/数据类型/变量的定义处
用VIM浏览源代码之跳转到函数/数据类型/变量的定义处1. 先查看是否安装了ctags用which命令检查:# which ctags/usr/bin/which: no ctags in (/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin) // 说明没安装ctags。用r原创 2016-08-01 00:34:30 · 8344 阅读 · 0 评论 -
TCP协议点对点(P2P)通讯(或者说NAT穿越)的实现方案
TCP协议点对点(P2P)通讯(或者说NAT穿越)的实现方案由于TCP的NAT穿越比较麻烦,而且还没有UDP的NAT穿越通用,需要点对点通讯的需求都可以用UDP的NAT穿越完成实现,所以就不亲自实践了。下面就直接转载一篇比较好的关于TCP的NAT穿越的文章。转自:http://www.cnblogs.com/regedit/articles/829725.html其实很转载 2016-07-24 20:56:51 · 9727 阅读 · 1 评论 -
UDP协议点对点(P2P)通讯(或者说NAT穿越)实例
UDP协议点对点(P2P)通讯实例。【实验环境】一个服务端Server,两个客户端:Client1和Client2 。Server和Client1在Linux系统上运行,Client2在Windows上运行。Server端源代码:#include #include #include #include #include #include原创 2016-07-24 11:41:59 · 10627 阅读 · 1 评论 -
[Windows] 通过任务管理器查看程序是否有内存泄漏
在 Windows 系统下运行程序的Debug版,可以通过任务管理器看出程序是否有内存泄漏。演示程序的代码:#include #include // #include #define _CRTDBG_MAP_ALLOC#include #ifdef _DEBUG#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)原创 2015-05-22 11:04:05 · 9389 阅读 · 0 评论 -
ACE前摄器Proactor模式示例程序
ACE前摄器Proactor模式示例程序服务器端代码:原创 2014-06-13 17:18:05 · 1173 阅读 · 0 评论 -
ACE_Reactor::register_handler 调用 WSAEventSelect 系统函数, WSAEventSelect 函数自动把关联的 socket 设置为非阻塞模式。
ACE_Reactor::register_handler 调用 WSAEventSelect 系统函数, 而 WSAEventSelect 函数自动把socket事件设置为非阻塞模式。看MSDN里的描述:The WSAEventSelect function automatically sets socket s to nonblocking mode, regardless of th原创 2014-07-09 16:28:37 · 1521 阅读 · 0 评论 -
对ACE反应器Reactor模式的示例程序分析
在ACE 6.0.0 里提供了一个Reactor示例程序,分析在原创 2014-06-17 17:28:32 · 1126 阅读 · 0 评论 -
ACE中的UDP通讯
ACE中的UDP通讯,不罗嗦,直接上代码。原创 2014-07-01 20:14:48 · 2073 阅读 · 1 评论 -
ACE 示例中的 ACE_DEBUG 不在窗口输出信息的原因
ACE 的Log_Msg_TestE:\zpz\alysrc\ACE-6.0.0\ACE_wrappers\tests原创 2014-06-11 11:15:17 · 1406 阅读 · 0 评论 -
在VS2008下用ACE创建及使用DLL(动态链接库)
在VS2008下用ACE创建及使用DLL(动态链接库)下面是 ACE-6.0.0 提供的原创 2014-06-09 15:41:53 · 1209 阅读 · 0 评论 -
如果类的析构函数在main函数返回后调用,内存泄漏检测函数应该放在这个析构函数的末尾。
如果由类的析构函数在main函数返回后调用,内存泄漏检测函数应该放在这个析构函数的末尾。举例说明如下原创 2014-06-07 11:14:17 · 1056 阅读 · 0 评论 -
模板类、类模板、函数模板、模板函数、函数指针、指针函数、数组指针、指针数组
在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用。下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误。这几个词是: 函数指针——指针函数 数组指针——指针数组 类模板——模板类 函数模板——模板函数 最终在使用中,我们就可以让它们实至名归,名正言顺。 1.函数指针——指针函数 函数指针的重点是指针。表转载 2014-07-18 14:01:37 · 599 阅读 · 0 评论 -
看ACE如何劫持main函数
看ACE如何劫持main函数用过ACE的都知道,程序的main函数必须写成int main (int argc, char *argv[])的形式,这是为什么呢,看了ACE的源码才知道,原来是……看ace/OS_main.h中的一段代码,就会恍然大悟: # define main \ace_main_i (int, char *[]); \ACE_BEG转载 2014-06-06 18:57:46 · 1735 阅读 · 0 评论 -
VS2008 中右键“转到定义”弹出“未定义符号” 的解决办法。
VS2008 中右键“转到定义”弹出“未定义符号” 的解决办法。 先关掉工程,把工程目录里的 .ncb 格式的文件删掉,再重新打开工程就OK了,据说是个BUG。原创 2014-07-17 09:08:14 · 6043 阅读 · 0 评论 -
ACE 服务配置:静态服务 和 动态服务
ACE允许运行时动态地配置服务和流,无论它们是静态地链接进用户程序中,还是其对象是从共享库中动态地加载,既可以配置服务(一个对象代表一个服务),也可以配置流(基于配置文件而非编译时期装配模块)。运行时配置的益处在于:● 多种类型的服务可以链接进程序中,也可以从共享库中动态地加载,通过配置文件决定运行时需要激活哪些服务;● 在服务初始化时传入不同的参数或指定专用的配置文件转载 2014-06-23 17:44:45 · 2797 阅读 · 0 评论 -
设计模式:Interface Inheritance (接口继承)和 Implementation Inheritance(实现继承)
设计模式:Interface Inheritance (接口继承)和 Implementation Inheritance(实现继承)先阅读《具体类、抽象类、接口》:http://blog.youkuaiyun.com/iw1210/article/details/33727491纯虚函数(pure virtual):派生类继承这个函数,并实现该函数。虚函数(impure virtual):派生类原创 2014-06-23 12:27:15 · 2431 阅读 · 0 评论 -
用ACE的Reactor模式实现网络通讯的例子
用ACE的Reactor模式实现网络通讯的例子,不罗嗦,直接上代码原创 2014-07-01 19:42:45 · 4900 阅读 · 0 评论 -
ACE动态服务配置的实例代码分析
ACE-6.0.0提供的动态服务配置实例原创 2014-06-10 20:48:06 · 2149 阅读 · 0 评论 -
修改ACE的Reactor模式示例中的参数后测试,依据测试结果,猜测Reactor似乎可以突破62个事件的限制。但是...
【猜测】ACE的Reactor模式示例中,事件,可以分批 Reactor超过62限制,但会有事件漏掉。原创 2014-06-19 16:24:32 · 749 阅读 · 0 评论 -
在Windows系统下,ACE中的 Reactor 最终调用 WaitForMultipleObjects 函数,Priority Reactor 和 Proactor 最终调用 select 函数。
在Windows系统下,ACE中的Reactor最终调用系统的WaitForMultipleObjects函数原创 2014-06-19 18:50:34 · 899 阅读 · 0 评论 -
ACE中的两种I/O多路复用模式 Reactor 和 Proactor 的比较
ACE中的两种I/O多路复用模式:Reactor 和 Proactor一般情况下,I/O 复用机制需要事件分离器(event demultiplexor)。事件分离器的作用,即将那些读写事件源分发给各读写事件的处理者,就像送快递的在楼下喊:谁的什么东西送了,快来拿吧。开发人员在开始的时候需要在分离器那里注册感兴趣的事件,并提供相应的处理者(event handlers),或者是回调函数;事转载 2014-06-18 12:46:25 · 1305 阅读 · 0 评论 -
各种设计模式的形象描述
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 设计模式的书相信很多人都看过。对于设计模式这样一种方法,相信不同的人有不同的理解。我在这里写的博客只是我个人对设计模式的粗浅认识。文中肯定存在很多的不足和不成熟之处,希望朋友们谅解。望大家多多指正,谢谢!01)C语言和设计模式(继承、封装、多态)02)C语言和转载 2014-06-17 12:14:28 · 782 阅读 · 0 评论 -
用ACE的Reactor模式实现网络通讯时,ACE内部用WSAEventSelect函数把网络事件与一个事件对象关联起来,目的是为了后面用WaitForMultipleObjects函数统一处理。
用ACE的Reactor模式实现网络通讯时,ACE内部用WSAEventSelect函数把网络事件与一个事件对象关联起来,目的是为了后面用WaitForMultipleObjects函数统一处理。原创 2014-07-07 18:26:44 · 1184 阅读 · 0 评论