- 博客(17)
- 收藏
- 关注
原创 在Socket层中封装代理服务
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class
2010-03-31 11:00:00 822
转载 epoll使用方法
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define _
2009-01-05 11:24:00 1202
转载 优化epoll_ctl
epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它不会复用文件描述符集合来传递结果而迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll的
2009-01-05 09:57:00 3233
转载 说说大型高并发高负载网站的系统架构(更新)
转载请保留出处:俊麟 Michael’s blog (http://www.toplee.com/blog/?p=71)Trackback Url : http://www.toplee.com/blog/wp-trackback.php?p=71 我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,又在MOP处理过大型社区猫扑大杂烩的架构升级等工作,同
2008-12-29 15:08:00 1016
转载 TCP 相关参数解释
TCP 相关参数解释 tcp_syn_retries :INTEGER默认值是5对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。(对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接,是由tcp_retries1 决定的)tcp_synack_retries :INTEGER默
2008-12-29 09:16:00 753
原创 一个解除TCP连接的TIME_WAIT状态限制的简便方法
/************************************* 版权声明* 本文为本人原创,本人拥有此文的版权。鉴于本人持续受益于开源软件社区,* 本人声明:任何个人及团体均可不受限制的转载和复制本文,无论是否用于盈利* 之目的,但必须在转载及复制时同时保留本版权声明,否则为侵权行为,本人保* 留追究相应法律责任之权利。*
2008-12-26 09:14:00 1444
转载 配置开发支持高并发TCP连接的Linux应用程序全攻略
1、修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制: [speng@as4 ~]$ ulimi
2008-12-26 09:08:00 1052
转载 Slackware12.1硬盘安装
1、前期准备工作下载slackware-12.1-install-dvd.iso文件和grub4dos软件,解压slackware-12.1-install-dvd.iso文件,我这里是到(f:/slk121目录下)并把isolinux目录下的initrd文件和kernels/hugesmp.s目录下的[注:我本人用的是kernels/huge.s]bzImage到c:/slackware目录下
2008-07-18 11:11:00 891
转载 VC275
1 toolbar默认位图左上角那个点的颜色是透明色,不喜欢的话可以自己改。2 VC++中 WM_QUERYENDSESSION WM_ENDSESSION 为系统关机消息。3 Java学习书推荐:《java编程思想》4 在VC下执行DOS命令 a. system("md c://12"); b. WinExec("Cmd.exe /C md c://12", SW_HID
2008-06-10 15:18:00 1523
原创 全局钩子中使用postmessage
我只是想解释一下为什么需要使用一个共享的数据段,如下:#pragma data_seg("mydata") //编译器识别的指令用以在虚拟内存中开辟一个数据段存放该指令下面的数据HINSTANCE glhInstance=NULL; //DLL实例(或者说模块)的句柄。HHOOK glhHook=NULL;
2008-06-05 13:15:00 1226
原创 Tinyxml的内存析构
Tinyxml的值在使用时最好是new出来的,因为其在析构的时候会遍历整个树,将树中的节点析构掉。但是没有在树中的节点将不会被自动施放,正是这种半自动的释放带来了问题。ReplaceChild()方法中,我们插入的值是否需要释放呢,通过查看内部的代码,它是clone一个然后加入树的,也就是说,原来的值如果是new出来就需要释放。void set_node(TiXmlElement* element
2008-06-05 13:13:00 1024
转载 C++开源跨平台类库集
在如下的库支持下,开发的系统可以很方便移植到当前大部分平台上运行而无需改动,只需在对应的平台下 用你喜欢的编译器 重新编译即可经典的C++库 STLport-------SGI STL库的跨平台可移植版本,在以前有些编译器离符合 标准比较远的情况下 那时还是有用的,当然目前vc71已经比较接近标准了, 故目前不怎么用它了。 Boost---------准
2008-06-05 13:12:00 520
转载 VC lib链接错误的总结
通过dumpbin /DIRECTIVES my.lib查看lib的缺省标准库版本然后调整自己的缺省标准库版本来适应第3方库 若要使用此运行时库 请忽略这些库 单线程 (libc.lib) libcmt.lib、ms
2008-06-05 13:11:00 938
原创 RichEdit2.0的设置字体中Dual-font特性怎么处理
在richedit20下,设置字体为某中文字体(比如楷体),输入汉字确实是楷体,但是一旦输入英文字符(在任何位置),这些英文字符字体立即变成了Arial字体(而且有意思的是,如果再输入汉字,汉字仍然是楷体的)。这不是bug,这是RichEdit2.0的特性。 Dual-font: support The keyboard can automatically switch
2008-06-05 13:10:00 1457 1
转载 线程间通讯
一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。使用全局变量进行通信由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。对于标准类型的全局变量,我们
2008-06-05 13:04:00 457
原创 教训
修改老代码时一定要注意不要忘记修改相关构造函数(2小时)结构中含有string时不要用memset来初始化,会有16个字节的内存泄露(3小时) 类内变量前面要加m_,或者类内函数传递参数的命名风格要与变量名有区别,不然在多重继承的时候可能由于2者重名而产生难以发现的问题。(2小时) 结构体struct中有string时,sizeof(struct)是初始化时的大小(string为28),其大小不随
2008-06-05 12:57:00 458
原创 拷贝构造和赋值函数(pushback调用拷贝构造函数)
pushback并非调用赋值函数,而是调用拷贝构造函数 RoleBasicInfo & operator =(const RoleBasicInfo & tmprolebasicinfo); (非 RoleBasicInfo & operator =(RoleBasicInfo & tmprolebasicinfo);) db_friend_t::db_friend_t(const db_
2008-06-05 12:48:00 952
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人