摘要: Epoll基本介绍在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define__FD_SETSIZE1024表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。epoll的接口非常简单,一共就三个函数:1.in 阅读全文
posted @ 2012-07-16 20:14 腾云生 阅读(847) 评论(1) 推荐(0) 编辑
摘要: Editor's note: This article refers to the Java Memory Model before it was revised for Java 5.0; statements about memory ordering may no longer be correct. However, the double-checked locking idiom is still broken under the new memory model. For more information on the memory model in Java 5.0, s 阅读全文
posted @ 2012-07-16 14:21 腾云生 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 程序中常用方法列表: (1)Socket(AddressFamily af,SocketType st,ProtocolType pt) 创建套接字,并且返回新建套接字句柄st。对于客户端来说,也是在本地创建套接字。 (2)bind(IPEndPoint iep) 对于服务器方的程序来说,建立的套接字必须要绑定到本地计算机的IP地址和端口号上。 (3)listen(int backlog) 这个方法用于等待客户端发出连接的请求,待其执行完则说明服务器方已经准备好受 来自客户端的连接。 其中的backlog参数是指用户的连接数,超过连接数的 其他客户不得与服务器方进一步通信。 (4)accep. 阅读全文
posted @ 2012-05-29 20:37 腾云生 阅读(829) 评论(0) 推荐(0) 编辑
摘要: 服务器端代码:[c-sharp]usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Threading;namespacemultithreadservTest{classThreadtcpserver{/*本程序中采用了多线程技术,可以应付多客户的需求。首先,程序的主线程也就是程序的入口即Main()函数,*当执行到Accept方法时,线程变会阻塞;当有新连接时,就创建相应的消息服务线程 阅读全文
posted @ 2012-05-29 20:32 腾云生 阅读(4427) 评论(0) 推荐(2) 编辑
摘要: 一、把web项目copy到%TOMCAT_HOME%webapps下面就OK 了。有种更优秀方法就是设定虚拟目录,即把项目的目录映射到tomcat中。这样项目不需要再放到tomcat下,而且带来方便,方法如下:1,找到%TOMCAT_HOME%/conf/server.xml,(即tomcat的安装目录下面相关的文件)打开此xml文件,在 <host> </host>之间加入如下代码:<Context path="" reloadable="true" debug="0" docBase="D: 阅读全文
posted @ 2012-05-25 14:09 腾云生 阅读(873) 评论(0) 推荐(0) 编辑
摘要: 1.显示系统已经安装的组件,和可以安装的组件:#yum grouplist2.如果系统安装之初采用最小化安装,没有安装xwindow,那么先安装:#yum groupinstall "X Window System"3.安装GNOME桌面环境yum groupinstall "GNOME Desktop Environment"4.安装KDE桌面环境yum groupinstall "KDE (K Desktop Environment)"5.卸载GNOME桌面环境yum groupremove "GNOME Desktop 阅读全文
posted @ 2012-05-24 11:52 腾云生 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 1. ACE_Reactor的创建ctor: ACE_Reactor (ACE_Reactor_Impl *implementation = 0, int delete_implementation = 0);你可以自己创建一个ACE_Reactor但是大多数时候,我们都是通过调用ACE_Reactor::instance()这个静态方法来返回唯一的实例。ACE_Reactor*ACE_Reactor::instance(void){ACE_TRACE("ACE_Reactor::instance");if(ACE_Reactor::reactor_==0) //1{//P 阅读全文
posted @ 2012-05-16 10:08 腾云生 阅读(664) 评论(0) 推荐(0) 编辑
摘要: 状态模式状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。要点:1. 策略模式和状态模式是双胞胎,它们有相同的类图,但是它们的意图不同。策略模式是围绕可以互换的算法来成功创建业务的,然而状态模式是通过改变对象内部的状态来帮助对象控制自己的行为.2. Context将与状态相关的操作委托给当前的Concrete State对象处理。3. Context可将自身作为一个参数传递给处理该请求的状态对象。这使得状态对象在必要时可访问Context。4. Context或Concrete State类都可决定哪个状态是另外哪一个的后继者,以及是在何种条件下进行状态转换。也就是说 阅读全文
posted @ 2012-05-14 14:06 腾云生 阅读(197) 评论(0) 推荐(0) 编辑