- 博客(26)
- 收藏
- 关注
原创 比较常用的随机函数
<br />double rnd(unsigned int x){static double c = 262147.0, t, i , r = 34359738365.0/549755813888.0;if (x == 1)r = r * c - (long)(r * c);elsefor (i = 1; i <= -x; i++)r = r * c - (long)(r * c);return r; }
2010-09-13 03:12:00
839
原创 如何用Shell脚本修改crontab
<br />crontab -l > /tmp/crontab.bak<br />echo 'something new...' >> /tmp/crontab.bak<br />crontab /tmp/crontab.bak
2010-09-09 16:21:00
12687
1
原创 MySQL 多级查询
需求1:在一个select 查询集中再次查询 SELECT * FROM (SELECT field FROM table) AS alias 需要注意后面的alias,在mysql中,这是必须的 需求2:一个查询集的结果不在另一个查询集中 SELECT feild1 FROM table1 WHERE feild1 NOT IN (SELECT fie
2010-03-16 03:38:00
4674
原创 MySQL触发器解决方案历程
最近,项目中用到mysql,由于数据量非常大,每天的数据量在百万级,考虑到mysql数据库处理性能以及数据属性,决定保存足够多的查询数据即可,距当前时间最久远的数据直接删除,无需进行备份。 头脑中冒出的第一个想法就是,能否利用mysql中的触发器,检查数据表大小,如果超过预设长度,则删除部分数据。CREATE TRIGGER tg AFTER INSERT ON traffic_
2010-03-07 13:20:00
1180
转载 HTTP Range头域
Range头域 Range头域可以请求实体的一个或者多个子范围。例如, 表示头500个字节:bytes=0-499 表示第二个500字节:bytes=500-999 表示最后500个字节:bytes=-500 表示500字节以后的范围:bytes=500- 第一个和最后一个字节:bytes=0-0,-1 同时指定几个范围
2009-07-27 10:48:00
4545
原创 很别致的链表
#include #include #include using namespace std;class A { public: A(int n):val(n){} protected: int val; }; class B:public A { public: B(int n):A(n) { pB=(n>0? new B(n-1):0);
2009-01-10 20:37:00
817
转载 如何判断socket已经断开
最近在做一个服务器端程序,C/S结构。功能方面比较简单就是client端与server端建立连接,然后发送消息给server。我在server端会使用专门的线程处理一条socket连接。这就涉及到一个问题,如果socket连接断开(异常,正常)后,我如何才能感知到?server端这边是绝对被动的,sever端不能主动断开连接。也没有连接链路维持包之类的。client端发送数据的时间也是不定
2008-12-04 08:59:00
4015
1
原创 Libtorrent源代码阅读小札
ses.start_dht()->ses_imp.start_dht(),session_impl是session的实现。跟踪进去,m_dht = new dht::dht_tracker(m_io_service, m_dht_settings, m_listen_interface.address(), startup_state),session_impl会在start_dht
2008-11-20 11:36:00
3457
2
原创 一道算法题的诸多思路(摘记)
只允许使用一个循环,先输出1至10内的奇数,然后输出其中的偶数 结果应该是这样的: 1 3 5 7 9 2 4 6 8 int main(){ FILE *f[]={fopen("con","w"),fopen("con","w")}; for(int i=1;i return 0; } 1) #include void main(()
2008-11-19 08:50:00
632
转载 关于阅读源代码
阅读源代码对于程序员来说是提高技术实力和业务知识最好的方法,那么我们怎样阅读源代码就是我们 首先要解决的问题。 阅读源代码就像管理一家大的公司,关键在于管理者卓越的领导意识。作为阅读源代码的人也应该有良好的意识,在阅读源代码时才能事半功倍。养成良好的阅读习惯。 阅读方法如下:1***************************************
2008-11-18 14:16:00
675
原创 linux下多线程程序的链接选项问题
在利用automake自动生成makefile文件的过程中如果我们需要链接linux的多线程库那么需要在makefile.am中添加链接选项LIBS+=lpthread 如果需要链接boost::thread库则需要添加LIBS+=lboost_thread 否则,会出现undefined reference to 的链接错误
2008-11-17 13:16:00
788
转载 关于Linux下时间编程的问题
1. Linux下与时间有关的结构体 struct timeval { int tv_sec; int tv_usec; }; 其中tv_sec是由凌晨开始算起的秒数,tv_usec则是微秒(10E-6 second)。 struct timezone { int tv_minuteswest; int tv_dsttime; };
2008-11-17 13:15:00
552
转载 gethostbyname的用法
使用这个东西,首先要包含2个头文件:#include #include struct hostent *gethostbyname(const char *name);这个函数的传入值是域名或者主机名,例如"www.google.com","wpc"等等。传出值,是一个hostent的结构(如下)。如果函数调用失败,将返回NULL。struct hostent { char *h_name
2008-11-11 10:27:00
1073
转载 Socket send函数和recv函数详解
int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字
2008-11-11 09:10:00
17490
4
转载 【send/sendto/sendmsg系统调用】
功能描述:发送消息。send只可用于基于连接的套接字,send 和 write唯一的不同点是标志的存在,当标志为0时,send等同于write。sendto 和 sendmsg既可用于无连接的套接字,也可用于基于连接的套接字。除了套接字设置为非阻塞模式,调用将会阻塞直到数据被发送完。用法: #include #include ssize_t send(int sock, cons
2008-11-11 09:03:00
1728
转载 关于unicode,mbcs,utf8,charset,encoding等相关概念的说明
好像第一次遇到跟字符集有关的问题大概应该是在7年前,第一次写java,总是会出现编码转换的问题,动不动就乱码,基本上,本着实用主义的态度,以盲人摸象的手法,总算是能够解决问题的。这些年来,不停的会遇到编码方面的问题,随着每一次解决问题,都感觉多揭开了一点笼罩在这一堆乱七八糟的东西上面的迷雾,然而,直到去年年中,我仍然没有完全搞明白这堆乱七八糟的名词和概念之间,究竟是怎样的关系。 去年年中开始的项目
2008-11-07 19:29:00
1494
转载 Windows下程序向Linux下移植实践
一、问题的提出 在程序员中有这样一个说法,若一个程序不能移植到Linux下,那这个程序将看不到未来。由于Linux操作系统源码公开是的,开发库等辅助工具都是源码公开的,这样就减少了程序的不可预知性,而且出现错误可以大家一起修正、完善,而Windows平台下所有的操作系统Api就给了个接口,即使出现莫名奇妙的错误也只能望着接口兴叹了。再加上Linux操作系统本身和它上面的许多工具软
2008-11-07 11:01:00
3848
转载 Socket程序从Windows移植到Linux
socket相关程序从windows移植到linux下需要注意的 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h 错误处理:errno.h 2)初始化 windows下需要用WSAStartup linux下不需要 3)关闭socket windows下closesocket(...) linux下
2008-11-07 10:53:00
793
转载 Select()系统调用及文件描述符集fd_set的应用
在网络程序中,一个进程同时处理多个文件描述符是很常见的情况。select()系统调用可以使进程检测同时等待的多个I/O设备,当没有设备准备好时,select()阻塞,其中任一设备准备好时,select()就返回。select()的调用形式为:#include #include int select(int maxfd, f
2008-11-07 09:40:00
757
转载 Sleep和WaitForSingleObject ,WaitForMultipleObjects
VOID Sleep(DWORD dwMilliseconds); 该函数可使线程暂停自己的运行,直到dwMilliseconds过去为止。 关于Sleep函数,有下面几个重要问题值得注意: * 调用Sleep,可使线程自愿放弃它剩余的时间片。 * 系统将在大约的指定毫秒数内使线程不可调度。 * 你可以调用Sleep,并且为dwMilliseconds参数传递INFINITE。这将告诉系统永远不
2008-11-06 14:33:00
692
转载 windows进程间通信
var $tag=; var $tag_code=990cad2eb1081e9384e6914c04fce99a; 分类:C++摘 要 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编写多进程/多线程程序成为现代程序设计的一个重要特点
2008-11-04 11:41:00
644
转载 浅谈P2P终结者原理及其突破
P2P终结者按正常来说是个很好的网管软件,但是好多人却拿它来,恶意的限制他人的流量,使他人不能正常上网,下面我们就他的功能以及原理还有突破方法做个详细的介绍!我们先来看看来自在网上PSP的资料:P2P终结者是由Net.Soft工作室开发的一套专门用来控制企业网络P2P下载流量的网络管理软件。软件 针对目前P2P软件过多占用带宽的问题,提供了一个非常简单的解决方案。软件基于底层协议分析处理
2008-11-03 16:25:00
2090
4
转载 boost::thread线程创建方式总结
最近在做一个消息中间件里面涉及到多线程编程,由于跨平台的原因我采用了boost线程库。在创建线程时遇到了几种线程创建方式现总结如下: 首先看看boost::thread的构造函数吧,boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象; (2)explicit thread(const boost::function0& threadfunc
2008-11-03 10:52:00
14245
2
原创 FD_SET预定义宏
概述:在XFree86的实现中,为了屏蔽在不同的平台下对fd操作上的差异。通过条件编译的技术重新定义了一类对fd操作的宏。如下:FD_SET(n,p) // 在fd_set中设置一个fdFD_CLR(n,p) // 在fd_set中清楚对应的fdFD_ISSET(n,p) // 判断fd是否在fd_set集合中FD_ZERO(p) // 对fd_set置空XFD_ANYSET
2008-10-29 17:14:00
1150
转载 BT协议分析
一 BT系统的组成结构 1 普通的Web服务器: 例如Apache或IIS服务器2 一个静态的种子文件: 即.Torrent文件,采用Bencoding编码3 Tracker服务器: 追踪下载同一文件的用户4 终端用户的Web浏览器:用于下载种子文件5 BT客户端: 例如BitCommet,BitSpirit 二 种
2008-10-14 09:23:00
3821
转载 车票出售系统——多线程
#include using namespace std;DWORD WINAPI Fun1Proc(LPVOID lpParameter);//thread dataDWORD WINAPI Fun2Proc(LPVOID lpParameter);//thread dataint index=0;int tickets=10;HANDLE hMutex;void main(){ HAND
2008-10-07 21:40:00
660
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人