- 博客(20)
- 收藏
- 关注
原创 关于ACE的日志问题
<br />昨天在做一个小工具的时候,发现ACE_DEBUG在主线程里输出到STDERR和文件都没问题,但在子线程里就只输出到STDERR,不写文件。查看了半天源代码后发现,svc.conf里配置的信息只对ACE_Thread_Manager管理的线程起作用,因为我程序的子线程是在另外一个动态库中生成的,我只是实现库开放接口里的内容,所以折腾了一个来小时。。。最后只能自己另外起个线程来管理自定义的日志输出了。。。
2010-10-30 16:15:00 722
原创 一段代码。。。
#include #include #include using namespace std;static const int DEFAULT_NUMBER = 10;static const int DEFAULT_VALUE = 0;vector obj(10,0);ACE_THR_FUNC_RETURN func(void* param){ int index = *(int*)param; for(int i = 0 ; i {
2010-10-24 19:55:00 691
转载 ACE的ACE_Logging_Strategy类中的一个多线程安全问题的发现及解决过程
/************************************* 版权声明* 本文为本人原创,本人拥有此文的版权。鉴于本人持续受益于开源软件社区,* 本人声明:任何个人及团体均可不受限制的转载和复制本文,无论是否用于盈利* 之目的,但必须在转载及复制时同时保留本版权声明,否则为侵权行为,本人保* 留追究相应法律责任之权利。* speng2005@gmail.com*
2010-10-08 14:29:00 1966 1
转载 配置开发支持高并发TCP连接的Linux应用程序全攻略
<br />1、修改用户进程可打开文件数限制<br /><br /> 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:<br /> [speng@as4 ~]$ ulimit -n<br /> 1024<br
2010-10-08 13:41:00 705
原创 试用CMake,感觉不错
<br />总结一下,初学者可以先看看CMake Practice,已经有热心网友翻译成中文版了,还不错。另外可以参考下Apache的Qpid项目,里面也是用的cmake,很有参考意义。
2010-09-28 10:34:00 607
原创 VS2005自动关闭的解决方法
<br />我的X61距离上一次重装系统(XP SP3)已经一年了,VS2005也一直使用得好好的。今天心血来潮装了个IE8,重启后再打开项目,VS2005在load project进度条跑到最后的时候,自动关闭了,什么提示都没有。花了一个小时时间才解决这个问题。。。为了避免下次再浪费一小时,总结一下自己解决的方法以及在网上搜罗到的方法。<br /> <br />方法一,如果装了VMWare,把VMware Authorization Service、VMware DHCP Service、VMware N
2010-09-27 12:35:00 1994
转载 “云计算”学习笔记
<br />最近“云计算”的概念喧嚣尘上,甚是热闹。各路英雄纷纷出来鼓吹“云计算”,如google、Intel、微软、Cisco等等,大家都说云计算的前景多么的好。只有少数不识时务者站出来反对云计算,如Gnu的教父。<br />下面我对这个“概念”通俗的理解:(1)云计算是一种商业模式,计算运营商为用户提供公共的计算服务,不需要用户自己去购买设备建立和维护自己的计算基础设施,而是购买运营商提供的服务;(2)云计算是一套技术体系,这套体系包括云计算硬件、云计算软件、以及各种软硬件接口的标准。(3)云计算是一个
2010-09-11 14:13:00 979
原创 当出现大量timewait状态的连接时,该如何处理?
<br />1.当不在意丢失少量数据时,可以使用SO_LINGER。<br />2.windows下,修改注册表,将timewait的时间减少到一个恰当的值。linux下,修改内核里timewait的时间到一个恰当的值,重新编译内核。<br />3.linux下,修改以下两个参数<br />/proc/sys/net/ipv4/tcp_tw_reuse:此参数表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接。<br />/proc/sys/net/ipv4/tcp_tw_rec
2010-09-06 13:52:00 1827
原创 关于10055错误
<br />在windows下做网络开发的,在测试或者产品正式运营时随时有可能碰到这个错误,错误信息是:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。<br />病根在错误信息里已经描述了(系统缓冲区空间不足或队列已满),那么怎么解决这个错误呢?总结下在网上搜索到,以及在朋友遇到这个问题时的解决方法。<br />1,netstat查看是否有大量处于timewait状态的连接,如果有,那么:a,参考SO_LINGER的使用,能避免timewait状态。b,如果对数据丢失很敏感,那么建议修改注册表中
2010-08-28 10:44:00 8186 1
原创 文档(注释)的重要性
<br />切记切记,尤其是做ACE开发,很多接口里的实现也许和你想象的不一样,千万不要有思维定势。如果一个函数没有使用过,记得先看头文件里的注释。这方面ACE还算做得不错的,以后也得把看注释养成习惯,吃过很多次亏了!
2010-08-23 14:49:00 666
转载 以下均“剽窃”自我的偶像猫哥的博客,仅用做笔记
<br />1.ACE5.7.8在vs2010正式版下不可用<br /><br />不解释了,下面的转的一段话说得比较清楚了。<br />It says that you can #define errno WSAGetLastError() and has the following example:<br />r = recv(...);<br />if (r == -1 /* (but see below) */<br /> && WSAGetLastError()
2010-08-21 10:07:00 845
原创 墨菲定律(Murphy's Law)
有可能出错的事情,一定会出错(Anything that can go wrong will go wrong)。所以,在日常开发中,如果发现有可能导致BUG或者感觉不太对(这个就靠经验了,有时候还是有点灵验的)的地方一定要趁早修正。不要因为目前还没有爆发就偷懒,因为问题迟早会凸显出来,这个懒始终是偷不掉的,甚至也许日后处理起来会麻烦许多倍。
2010-05-24 10:24:00 714
原创 ACE的动态库服务编写要点
1,需要定义宏ACE_BUILD_SVC_DLL2,需要包含ACE/svc_export.h头文件3,用户类必须直接或间接的派生自ACE_Service_Object4,声明服务工厂,ACE_SVC_FACTORY_DECLARE(CLS_NAME),实际上是声明_make_CLS_NAME接口5,实现类中必须的接口,如init、fini6,定义服务工厂,ACE_SVC_FAC
2010-01-23 09:23:00 737
原创 再次否定自己的认识(有关DCL)
从熟悉设计模式开始,就一直希望能看到线程安全的单件模式在C++中的完美实现,兼顾性能与安全。在MCD中强迫自己看完整整一章关于线程安全的单件模式实现方案,以为DCL可以做到,不用每次都lock,可是,事实证明C++中的DCL依然是有问题的。原理刚看明白,和CPU的乱序执行以及cache一致性有关,大家google一下就知道了(貌似C++还是有办法让DCL起作用,那就是使用memory ba
2010-01-21 10:15:00 493
转载 ACE_DEBUG的匹配符
* Format a message to the thread-safe ACE logging mechanism. Valid * options (prefixed by %, as in printf format strings) include: * - A: print an ACE_timer_t value (which could be eithe
2009-12-17 15:44:00 654
原创 分享一下我的G-reader
订阅的几个个人觉得价值比较高的中文邮件列表以及站点,个人博客下次再总结。 :) http://groups.google.com/group/dev4server/创建者大宝sodme在csdn也有博客,服务器开发方面很不错的邮件列表,很多讨论都比较有深度 http://groups.google.com/group/pongba/创建者pongda在csdn应该也是名人了
2009-12-07 15:13:00 876
原创 有关delete this
使用delete this的场合:对象是从第三方库中通过工厂生成,比如MFC、COM、ACE等,提供类似destroy的接口,客户程序员只能使用destroy来销毁对象,而不应该直接delete对象指针。state模式中,状态对象生成依赖其自身的next_state对象后,主动请求销毁自身,可以使用delete this。简单的说,这一手法就是在对象不是显式new出来的,并且在需要请求
2009-12-03 19:42:00 663
原创 Heap Corruption detected
出现此种情况,应该是堆栈溢出,一般是分配一个数组空间,在采用下标赋值的时候,下标越界导致的,在delete []的时候,会报错。举个简单的例子char* a = new char[2];a[0] = 1;a[1] = 2;a[2] = 3;delete []a;这个例子只能说明原理,总之,出现此种错误,应该仔细分析下标操作是否正确,或者memcpy中,源类型
2009-12-03 19:35:00 819
原创 UNIX网络编程
TCP三路握手步骤:前提:服务器必须准备好接受外来的连接,这通过调用socket、bind和listen函数来完成,称为被动打开。1.客户通过调用connet进行主动打开。这引起客户TCP发送一个SYN分节(表示同步),它告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号。一般情况下SYN不携带数据,它只含有一个IP头部、一个TCP头部及可能有的TCP选项。2.服务器必须确认客
2009-12-03 19:23:00 694
原创 ACE_Reactor框架随笔之一
ACE_Reactor在注册ACE_Event_Handler派生类对象时,注意要重写ACE_Event_Handler的get_handle函数。因为基类中,此虚函数只是简单的返回ACE_INVALID_HANDLE,不知道设计者是怎么考虑的,并没有将此函数设计成纯虚函数。另外,ACE_Event_Handler的schedule_timer接口中,第三个参数是相对时间(ACE_Timer_
2009-12-03 19:12:00 622
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人