pythonʹÓÃSocketServers
SocketServersÄ£¿éΪһ×ésocket·þÎñÀඨÒåÁËÒ»¸ö»ùÀ࣬Õâ×éÀàѹËõºÍÒþ²ØÁ˼àÌý¡¢½ÓÊܺʹ¦Àí½øÈëµÄsocketÁ¬½ÓµÄϸ½Ú¡£
1¡¢SocketServers¼Ò×å
TCPServerºÍUDPServer¶¼ÊÇSocketServerµÄ×ÓÀ࣬ËüÃÇ·Ö±ð´¦ÀíTCPºÍUDPÐÅÏ¢¡£
×¢Ò⣺SocketServerÒ²ÌṩUnixStreamServer(TCPServerµÄ×ÓÀà)ºÍUNIXdatagramServer(UDPServerµÄ×ÓÀà)£¬ËüÃǶ¼ÈçͬÆä¸¸ÀàÒ»Ñù³ýÁËÔÚ´´½¨¼àÌýsocketʱʹÓÃAF_UNIX´úÌæÁËAF_INET¡£
ĬÈÏÇé¿öÏ£¬socket·þÎñÒ»´Î´¦ÀíÒ»¸öÁ¬½Ó£¬µ«ÊÇÄã¿ÉÒÔʹÓÃThreadingMixINºÍForkingMixInÀàÀ´´´½¨ÈÎÒ»SocketServerµÄÏ̺߳Í×Ó½ø³Ì¡£Êµ¼ÊÉÏ£¬SocketServerÄ£¿éÌṩÁËһЩ¶ÔЩÓÐÓõÄÀàÀ´½â¾öÄãµÄÂé·³£¬ËüÃÇÊÇ£ºForkingUDPServer¡¢ForkingTCPServer¡¢ThreadingUDPServer¡¢ThreadingTCPServer¡¢ThreadingUnixStreamServerºÍThreadingUnixDatagramServer¡£
SocketServerÒÔͨ³£µÄ·½·¨´¦Àí½øÈëµÄÁ¬½Ó£»ÒªÊ¹Ëü¸üÓÐÓã¬ÄãÓ¦¸ÃÌṩÄã×Ô¼ºµÄÇëÇó´¦ÀíÆ÷Àà¸øËüÒÔ±ãËü´«µÝÒ»¸ösocketÈ¥´¦Àí¡£SocketServerÄ£¿éÖеÄBaseRequestHandlerÀàÊÇËùÓÐÇëÇó´¦ÀíÆ÷µÄ¸¸Àà¡£¼ÙÉ裬ÀýÈçÄãÐèҪдһ¸ö¶àÏ̵߳ĵç×ÓÓʼþ·þÎñÆ÷£¬Ê×ÏÈÄãÒª´´½¨Ò»¸öMailRequestHandler£¬ËüÊÇBaseReques ......
¡¡¡¡ÉÏ´Îѧϰ¹ýmarshalÄ£¿éÓÃÓÚÐòÁл¯ºÍ·´ÐòÁл¯£¬µ«marshalµÄ¹¦ÄܱȽϱ¡Èõ£¬Ö»Ö§³Ö²¿·ÖÄÚÖÃÊý¾ÝÀàÐ͵ÄÐòÁл¯/·´ÐòÁл¯£¬¶ÔÓÚÓû§×Ô¶¨ÒåµÄÀàÐ;ÍÎÞÄÜΪÁ¦£¬Í¬Ê±marshal²»Ö§³Ö×ÔÒýÓÃ(µÝ¹éÒýÓÃ)µÄ¶ÔÏóµÄÐòÁл¯¡£ËùÒÔÖ±½ÓʹÓÃmarshalÀ´ÐòÁл¯/·´ÐòÁл¯¿ÉÄܲ»ÊǺܷ½±ã¡£»¹ºÃ£¬python±ê×¼¿âÌṩÁ˹¦Äܸü¼ÓÇ¿´óÇÒ¸ü¼Ó°²È«µÄpickleºÍcPickleÄ£¿é¡£ ¡¡¡¡cPickleÄ£¿éÊÇʹÓÃCÓïÑÔʵÏֵģ¬ËùÒÔÔÚÔËÐÐЧÂÊÉϱÈpickleÒª¸ß¡£µ«ÊÇcPickleÄ£¿éÖж¨ÒåµÄÀàÐͲ»Äܱ»¼Ì³Ð£¨Æäʵ´ó¶àÊýʱºò£¬ÎÒÃDz»ÐèÒª´ÓÕâЩÀàÐÍÖм̳С££©¡£cPickleºÍpickleµÄÐòÁл¯/·´ÐòÁл¯¹æÔòÊÇÒ»ÑùµÄ£¬ÎÒÃÇ¿ÉÒÔʹÓÃpickleÐòÁл¯Ò»¸ö¶ÔÏó£¬È»ºóʹÓÃcPickleÀ´·´ÐòÁл¯¡£Í¬Ê±£¬ÕâÁ½¸öÄ£¿éÔÚ´¦Àí×ÔÒýÓÃÀàÐÍʱ»á±äµÃ¸ü¼Ó¡°´ÏÃ÷¡±£¬Ëü²»»áÎÞÏÞÖÆµÄµÝ¹éÐòÁл¯×ÔÒýÓöÔÏ󣬶ÔÓÚͬһ¶ÔÏóµÄ¶à´ÎÒýÓã¬ËüÖ»»áÐòÁл¯Ò»´Î¡£ÀýÈ磺 1 import marshal, pickle 2 3 list = [1] 4 list.append(list) 5 byt1 = marshal.dumps(list) #³ö´í, ÎÞÏÞÖÆµÄµÝ¹éÐòÁл¯ 6 byt2 = pickle.dumps(list) #No problem pickleµ ......
C++Àà¿â½éÉÜ
ÔÙ´ÎÌåÏÖÁËC++±£³ÖºËÐÄÓïÑÔµÄЧÂÊͬʱ´óÁ¦·¢Õ¹Ó¦ÓÿâµÄ·¢Õ¹Ç÷ÊÆ!!ÔÚC++ÖУ¬¿âµÄµØÎ»ÊǷdz£¸ßµÄ¡£C++Ö®¸¸ Bjarne
StroustrupÏÈÉú¶à´Î±íʾÁËÉè¼Æ¿âÀ´À©³ä¹¦ÄÜÒªºÃ¹ýÉè¼Æ¸ü¶àµÄÓï·¨µÄÑÔÂÛ¡£ÏÖʵÖУ¬C++µÄ¿âÃÅÀà·±¶à£¬½â¾öµÄÎÊÌâÒ²ÊǼ«Æä¹ã·º£¬¿â´ÓÇáÁ¿¼¶µ½ÖØ
Á¿¼¶µÄ¶¼ÓС£²»ÉÙ¶¼ÊÇÈÃÈËÑÛ½ç´ó¿ª£¬Òà»òÊÇÍû¶øÉú̾µÄ˼ά½Ü×÷¡£ÓÉÓÚ¿âµÄÊýÁ¿·Ç³£ÅӴ󣬶øÇÒÏÞÓÚ±ÊÕßˮƽ£¬ÆäÖкܶಢ²»Á˽⡣ËùÒÔÎÄÖÐËùÌáµÄһЩ¿â¶¼ÊDZÈ
½ÏÖøÃûµÄ´óÐͿ⡣
±ê×¼¿â
±ê×¼¿âÖÐÌṩÁËC++³ÌÐòµÄ»ù±¾ÉèÊ©¡£ËäÈ»C++±ê×¼¿âËæ×ÅC++±ê×¼ÕÛÌÚÁËÐí¶àÄֱ꣬µ½±ê×¼µÄ³ǫ̈²ÅÕýʽ¶¨ÐÍ£¬µ«ÊÇÔÚ±ê×¼¿âµÄʵÏÖÉÏÈ´ºÜÁîÈËÐÀοµÃ¿´µ½¶àÖÖʵÏÖ£¬²¢ÇÒÒѱ»Êµ¼ùÖ¤Ã÷ΪÓй¤Òµ¼¶±ðÇ¿¶ÈµÄ¼Ñ×÷¡£
1¡¢ Dinkumware C++ Library
²Î¿¼Õ¾µã£ºhttp://www.dinkumware.com/'>http://www.dinkumware.com/
P.J. Plauger±àдµ ......
C++Àà¿â½éÉÜ
ÔÙ´ÎÌåÏÖÁËC++±£³ÖºËÐÄÓïÑÔµÄЧÂÊͬʱ´óÁ¦·¢Õ¹Ó¦ÓÿâµÄ·¢Õ¹Ç÷ÊÆ!!ÔÚC++ÖУ¬¿âµÄµØÎ»ÊǷdz£¸ßµÄ¡£C++Ö®¸¸ Bjarne
StroustrupÏÈÉú¶à´Î±íʾÁËÉè¼Æ¿âÀ´À©³ä¹¦ÄÜÒªºÃ¹ýÉè¼Æ¸ü¶àµÄÓï·¨µÄÑÔÂÛ¡£ÏÖʵÖУ¬C++µÄ¿âÃÅÀà·±¶à£¬½â¾öµÄÎÊÌâÒ²ÊǼ«Æä¹ã·º£¬¿â´ÓÇáÁ¿¼¶µ½ÖØ
Á¿¼¶µÄ¶¼ÓС£²»ÉÙ¶¼ÊÇÈÃÈËÑÛ½ç´ó¿ª£¬Òà»òÊÇÍû¶øÉú̾µÄ˼ά½Ü×÷¡£ÓÉÓÚ¿âµÄÊýÁ¿·Ç³£ÅӴ󣬶øÇÒÏÞÓÚ±ÊÕßˮƽ£¬ÆäÖкܶಢ²»Á˽⡣ËùÒÔÎÄÖÐËùÌáµÄһЩ¿â¶¼ÊDZÈ
½ÏÖøÃûµÄ´óÐͿ⡣
±ê×¼¿â
±ê×¼¿âÖÐÌṩÁËC++³ÌÐòµÄ»ù±¾ÉèÊ©¡£ËäÈ»C++±ê×¼¿âËæ×ÅC++±ê×¼ÕÛÌÚÁËÐí¶àÄֱ꣬µ½±ê×¼µÄ³ǫ̈²ÅÕýʽ¶¨ÐÍ£¬µ«ÊÇÔÚ±ê×¼¿âµÄʵÏÖÉÏÈ´ºÜÁîÈËÐÀοµÃ¿´µ½¶àÖÖʵÏÖ£¬²¢ÇÒÒѱ»Êµ¼ùÖ¤Ã÷ΪÓй¤Òµ¼¶±ðÇ¿¶ÈµÄ¼Ñ×÷¡£
1¡¢ Dinkumware C++ Library
²Î¿¼Õ¾µã£ºhttp://www.dinkumware.com/'>http://www.dinkumware.com/
P.J. Plauger±àдµ ......
ÔÚÍøÉÏËѲ»µ½¹ØÓÚ Ascii ºÍ bcd»¥Ïàת»¯µÄÎÄÕ£¬ÓÚÊÇ×Ô¼ºÐ´ÁËÒ»¸ö£¬ºÍ´ó¼Ò·ÖÏíÏ¡£
ûÓп¼Âǵ½Ð§ÂÊ£¬Äܹ»ÓÅ»¯µÄµØ·½Íû´ó¼ÒÌá³ö
"""
AscII×Ö·ûת»»ÎªBCD×Ö·û
"""
def asc2bcd(inAsc, pad_L0_R1 = 0):
#È«²¿×ª»»Îª´óд£¬ÎªºóÃæµÄת»»Ìṩ·½±ã
inAsc = inAsc.upper()
print inAsc
#ÅжÏÈç¹û·ÇżÊý¸ö×Ö·ûʱ£¬×ó²¹0£¬»¹ÊÇÓÒ²¹0
import copy
if(len(inAsc)%2 == 1):
if(pad_L0_R1 == 0):
inAsc = copy.copy('0'+inAsc)
if(pad_L0_R1 == 1):
inAsc = copy.copy(inAsc+'0')
#¼ì²âÊäÈëµÄp×Ö·û´®ÖÐÊÇ·ñ¶¼Îª0-9 a-f A-F ÖеÄ×Ö·û
for i in inAsc:
& ......
½ñÌìÔÚ¿´ LippmanµÄ¡¶Éî¶È̽Ë÷C++¶ÔÏóÄ£ÐÍ¡·£¬ºöÈ»ÏëgoogleÒ»ÏÂLippmanÓëBjarne StroustrupµÄ¸öÈ˹ØÏµÈçºÎ¡£ÒòΪÎÒ¿´BSдµÄTCPLµÄǰÑÔÖдÓÀ´Ã»ÓÐÌáµ½¹ýLippman£¬ÊDz»ÊÇLippmanÔÚBSÑÛÖв¢Ã»ÓÐʲôµØÎ»ÄØ£¿½á¹ûûÓв鵽ʲôÓÐÓõÄÐÅÏ¢£¬µ¹ÊÇ¿´µ½ÃÏÑÒµÄһƪ2004ÄêµÄ²©¿Í——¡¶Stan LippmanÓ¡Ïó¼Ç
¡·£¬ÎÄÕÂдµÃ²»´í¡£²»¹ý£¬ºóÃæµÄ»ØÌûÕæÊÇ¿´ÁËÈÃÈ˵¹Î¸¿Ú¡£Ò»Ð©·´MSµÄ“¶·Ê¿”ÔÚ³³³³ÄÖÄÖ£¬»¹ÓÐÈ˶ÔÃÏÑÒµÄÃèÊöLippmanµÄ·¢Òô¶ÎÂ侾ס²»·Å¡£²»¹ýÊÇÆª¸öÈ˲©¿Í£¬³ýÁ˼¼Êõ¾ÍûÓбðµÄ¶«Î÷Âð£¿ÕæÊÇÓØ¸¯°¡£¡ÎÒ¹¤×÷ºó£¬´ó²¿·Öʱ¼ä¶¼ÊÇÓÃC++£¬ÎÒÒ²×ÔÈÏΪÊÇC++ÉçȺÖеÄÒ»Ô±¡£Èç¹ûÎÒÃÇC++ÉçȺÖж¼ÊÇÕâôһЩƫ¼¤¡¢Óظ¯µÄ´ÓÒµÕߣ¬ÎÒÕæÎªÎÒÊÇC++³ÌÐòÔ±¸Ðµ½²ÑÀ¢¡£
×îÈÃÎҸе½Õ𾪵ĻØÌûÊÇÏÂÃæÕâλÌÀèºÏÈÉúµÄ£¬´ó¼ÒÒ²¿ÉÒÔ¿´µ½»ØÌûʱ¼äÊÇ2004Äê9ÔÂ23ÈÕ¡£ÄÚÈÝÈçÏ£º
ÌÀèº
·¢±íÓÚ2004Äê9ÔÂ23ÈÕ 18:39:00
¾Ù±¨
IP:
ÎÒËµÄØ£¬¿´ÁËÌ켫µÄ²É·Ã£¬ÎÒ»¹ÔÚÄÉÃÆ¡¶³ÌÐòÔ±¡·Ôõô»áûÓз´Ó³£¡
C++£¬°¦£¬Ò»¸öûÂäµÄ¹ó×å¡£ËäÈ»²»»áÏñ6000ÍòÄêǰµÄ¿ÖÁúÄÇÑùÁ¢¿ÌÏûʧ£¬µ«Ò²²»»áºÃµ½ÄÇÀïÈ¥ÁË£¡£¡
ÖÁ ......
ÎÄ / À£¨¹âÓî¹ãÕ꣩
·½·¨¶à̬ÓëÀàÐͶà̬
Á˽â OOP µÄͬѧ¶ÔÀàÐͶà̬¶¼ºÜÊìϤÁË¡£»°Ëµ£¬ÀàÐͶà̬֮¶à̬±ãÌåÏÖÔÚ·½·¨ÉÏ£¬ÄÇ·½·¨¶à̬ÓÖÊÇÂïÍæ¶ù£¿ÀàÐͶà̬֮ÀàÐÍÖ¸µÄÊǶÔÏñµÄÀàÐÍ£¬Æä·½·¨ÊÇÊܶÔÏñÔ¼ÊøµÄ¡£·½·¨¶à̬±ãÊDz»ÊܶÔÏñÀàÐÍÔ¼ÊøµÄ¶à̬¡£¾ßÌåÇø±ðÔÚ£º
·½·¨¶à̬ÎÞÐè¼Ì³Ð£»ÀàÐͶà̬±ØÐëʵÏÖ½Ó¿Ú»òÀà¼Ì³Ð¡£
·½·¨¶à̬²»¹ÜÄãÊÇË£¬Ö»ÔÚºõÄãÄܸÉÂÀàÐͶà̬½²¾¿Äã³ö×ÔºÎÃźÎÅÉ¡£
·½·¨¶à̬µÄ¶ÔÏñ¼æÈÝÐÔÖ»ÐèÆäʵÏÖÔËÐÐÆÚ±»Êµ¼Êµ÷Óõķ½·¨²¿·Ö£»ÀàÐͶà̬µÄ¶ÔÏñ¼æÈÝÐÔÒªÇó A is-a B£¬Ò²¼´²»¹ÜÓõÃ×ÅÓò»×Å£¬Ö»ÒªÄã°ÝÁËʦ¸µ£¬¾ÍµÃÈ«²¿ÊµÏÖ¡£
Duck typing Óë·½·¨¶à̬
Duck typing ÊÇÖÖ¶¯Ì¬ÓïÑԵijÌÐòÉè¼Æ·ç¸ñ£¬ÓÃÒÔʵ¼ù·½·¨¶à̬¡£¸ÅÄîÌá³öÕß James Whitcomb Riley ͬѧÈçÊÇ˵£º
µ±¿´µ½Ò»Ö»Äñ×߯ðÀ´ÏñѼ×Ó£¬ÓÎÆðÓ¾À´ÏñѼ×Ó£¬½ÐÆðÀ´Ò²ÏñѼ×Ó£¬ÄÇÕâÖ»Äñ¾Í¿ÉÒÔ±»µ±×öѼ×Ó¡£
Duck typing ²¢²»¹Ø×¢¶ÔÏñµÄÀàÐÍ£¬¶øÊǹØ×¢Æä±íÏÖ¡£ÎÒÃÇÈÃij¸ö¶ÔÏñÈ¥“×ßÁ½²½¶ù”£¬È¥“ÓÎÁ½Ï”£¬È¥“½ ......