Windows Socket I/OÄ£ÐÍ ÒÔ¼° Linux EpollÄ£ÐÍ
±¾Îļòµ¥½éÉÜÁ˵±Ç°WindowsÖ§³ÖµÄ¸÷ÖÖSocket I/OÄ£ÐÍ£¬Èç¹ûÄã·¢ÏÖÆäÖдæÔÚʲô´íÎóÇëÎñ±Ø´Í½Ì¡£
Ò»£ºselectÄ£ÐÍ
¶þ£ºWSAAsyncSelectÄ£ÐÍ
Èý£ºWSAEventSelectÄ£ÐÍ
ËÄ£ºOverlapped I/O ʼþ֪ͨģÐÍ
Î壺Overlapped I/O Íê³ÉÀý³ÌÄ£ÐÍ
Áù£ºIOCPÄ£ÐÍ
ÀϳÂÓÐÒ»¸öÔÚÍâµØ¹¤×÷µÄÅ®¶ù£¬²»Äܾ³£»ØÀ´£¬ÀϳºÍËýͨ¹ýÐżþÁªÏµ¡£ËûÃǵÄÐŻᱻÓʵÝԱͶµÝµ½ËûÃǵÄÐÅÏäÀï¡£
ÕâºÍSocketÄ£Ðͷdz£ÀàËÆ¡£ÏÂÃæÎÒ¾ÍÒÔÀϳ½ÓÊÕÐżþΪÀý½²½âSocket I/OÄ£ÐÍ~~~
Ò»£ºselectÄ£ÐÍ
Àϳ·dz£Ïë¿´µ½Å®¶ùµÄÐÅ¡£ÒÔÖÁÓÚËûÿ¸ô10·ÖÖÓ¾ÍÏÂÂ¥¼ì²éÐÅÏ䣬¿´ÊÇ·ñÓÐÅ®¶ùµÄÐÅ~~~~~
ÔÚÕâÖÖÇé¿öÏ£¬"ÏÂÂ¥¼ì²éÐÅÏä"È»ºó»Øµ½Â¥Éϵ¢ÎóÁËÀϳÂÌ«¶àµÄʱ¼ä£¬ÒÔÖÁÓÚÀϳÂÎÞ·¨×öÆäËû¹¤×÷¡£
selectÄ£ÐͺÍÀϳµÄÕâÖÖÇé¿ö·Ç³£ÏàËÆ£ºÖܶø¸´Ê¼µØÈ¥¼ì²é......Èç¹ûÓÐÊý¾Ý......½ÓÊÕ/·¢ËÍ.......
ʹÓÃÏß³ÌÀ´selectÓ¦¸ÃÊÇͨÓõÄ×ö·¨£º
procedure TListenThread.Execute;
var
addr : TSockAddrIn;
fd_read : TFDSet;
timeout : TTimeVal;
ASock,
MainSock : TSocket;
len, i : Integer;
begin
MainSock := socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
addr.sin_family := AF_INET;
addr.sin_port := htons(5678);
addr.sin_addr.S_addr := htonl(INADDR_ANY);
bind( MainSock, @addr, sizeof(addr) );
listen( MainSock, 5 );
while (not Terminated) do
begin
FD_ZERO( fd_read );
FD_SET( MainSock, fd_read );
timeout.tv_sec := 0;
timeout.tv_usec := 500;
if select( 0, @fd_read, nil, nil, @timeout ) > 0 then //ÖÁÉÙÓÐ1¸öµÈ´ýAcceptµÄconnection
begin
if FD_ISSET( MainSock, fd_read ) then
begin
for i:=0 to fd_read.fd_count-1 do //×¢Ò⣬fd_count <= 64£¬Ò²¾ÍÊÇ˵selectÖ»ÄÜͬʱ¹ÜÀí×î¶à64¸öÁ¬½Ó
begin
len := sizeof(addr);
ASock := accept( MainSock, addr, len );
if ASock <> INVALID_SOCKET then
....//ΪASock´´½¨Ò»¸öеÄỊ̈߳¬ÔÚеÄÏß³ÌÖÐÔÙ²»Í£µØselect
end;
end;
end;
end; //while (not self.Terminated)
shutdown( MainSock, SD_BOTH );
closesocket( MainSock );
end;
¶þ£ºWSAAsyncSelectÄ£ÐÍ
ºóÀ´£¬ÀϳÂʹÓÃÁË΢Èí¹«Ë¾µÄÐÂʽÐÅÏä¡£ÕâÖÖÐÅÏä·Ç³£ÏȽø£¬Ò»µ©ÐÅÏäÀïÓÐеÄÐżþ£¬¸Ç´Ä¾Í»á¸øÀϳ´òµç»°£ºÎ¹£¬´óÒ¯£¬ÄãÓÐеÄÐżþÁË£¡´Ó´Ë£¬ÀϳÂÔÙÒ²²»±ØÆµ·±ÉÏÏÂÂ
Ïà¹ØÎĵµ£º
Ê±ÇøÉ趨:
Ö÷ÒªÎļþ
/etc/sysconfig/clock
Óñ±¾©Ê±¼äµÄÕýÈ·ÄÚÈÝÓ¦¸ÃÊÇ
TIMEZONE="Asia/Beijing"
DEFAULT_TIMEZONE="Asia/Beijing"
ͬʱȷ±£ /etc/localtimeÎļþÊÇ/usr/share/zoneinfo/Asia/BeijingµÄ¿½±´
±£³Ö¸üÐÂ:
ÔÚ/etc/crontabÖмÓÈëÒ»ÐÐ
10 5 * * * root /usr/sbin/ntpdate 221.139.48.11 && /sbin/ ......
limits.conf Îļþʵ¼ÊÊÇ Linux PAM£¨²åÈëʽÈÏ֤ģ¿é£¬Pluggable Authentication Modules£©ÖÐ pam_limits.so µÄÅäÖÃÎļþ£¬¶øÇÒÖ»Õë¶ÔÓÚµ¥¸ö»á»°¡£
limits.confµÄ¸ñʽÈçÏ£º
username|@groupname type resource limit
username|@groupname£ºÉèÖÃÐèÒª±»ÏÞÖÆµÄÓû§Ãû£¬×éÃûÇ°Ãæ¼Ó@ºÍÓû§ÃûÇø±ð¡£Ò²¿ÉÒÔÓÃͨÅä·û*À´×öËùÓÐÓû§ ......
Áí£ºÒªÊµÏÖijһЩlinux×Ô´øÃüÁîÏàͬµÄ¹¦ÄÜ£¬£¨±ÈÈ磺ҪʵÏÖÔÚlinuxϲéѯcpuµÄÕ¼ÓÃÂÊ£¬linuxµÄÃüÁîÊÇtop£©, ¿ÉÒԲο¼Ò»Ï¸ÃÃüÁî(top)µÄlinuxÔ´Â룬
ת×Ôhttp://hi.baidu.com/yanjinbin/blog/item/3d25ebdd29756fea76c6381f.html
# which reboot <---whichÖ¸Áî»áÔÚ»·¾³±äÁ¿$PATHÉèÖõÄĿ¼Àï²éÕÒ·ûºÏÌõ¼þµÄ ......
Ò»¡¢ ǰÑÔ
LVMÊÇÂß¼¾í¹ÜÀí£¨Logical Volume Manager£©µÄ¼ò³Æ£¬ËûÊǽ¨Á¢ÔÚÎïÀí´æ´¢É豸֮ÉϵÄÒ»¸ö³éÏó²ã£¬ÔÊÐíÄãÉú³ÉÂß¼´æ´¢¾í,ºÍÖ±½ÓʹÓÃÎïÀí´æ´¢ÔÚ¹ÜÀíÉÏÏà±È,ÌṩÁ˸üºÃÁé»îÐÔ¡£
LVM½«´æ´¢ÐéÄ⻯,ʹÓÃÂß¼¾í,Äã²»»áÊÜÏÞÓÚÎïÀí´ÅÅ̵ĴóС,ÁíÍâ,ºÍÓ²¼þÏà¹ØµÄ´æ´¢ÉèÖñ»ÆäÒþ²Ø,ÄãÄܲ»ÓÃÍ£Ö¹Ó¦ÓûòÐ¶ÔØÎļþϵͳÀ´µ÷Õû¾í´ó ......
´ó¼Ò¶¼ÖªµÀ£¬ÎϾÓÀïС±´ÊǸãc++µÄ£¬½á¹û×îºóÀÏÆÅ¸øÈ˵±ÁËСÈý
¾ÍΪÁËÕâ¸öÒýÆð¹ã´óÍøÓѵÄÈÈÒ飬µ«±È½ÏÒ»ÏÂÎÒÃÇ»¹ÊǺܲ»´íµÎ¡£ÔÚÈÕ±¾£¬¸ãLinuxµÄÒ²µÃÅÄAV¡£ÓÐͼÓÐÕæÏà
³ÌÐòÔ±ÐÖµÜÃÇ£¬²»Òª±§Ô¹ÁË£¬±È±ÈСÈÕ±¾£¬ÎÒÃǵĴ¦¾³ºÃ¶àÁËO(∩_∩)O¹þ¹þ~ ......