if text == 'Start':
self.buttonOK.SetLabelText('End') elif text == 'End':
self.buttonOK.SetLabelText('Start')
app = wxGUI() app.MainLoop()
9.3 Éè¼ÆÒ»¸ö´°Ì壬ģÄâQQµÇ¼½çÃæ£¬µ±Óû§ÊäÈëºÅÂë123456ºÍÃÜÂë654321ʱÌáʾÕýÈ·£¬·ñÔòÌáʾ´íÎó¡£
´ð£ºPython 2.7.8´úÂëÈçÏ£¬
import wx
class wxGUI(wx.App): def OnInit(self):
frame = wx.Frame(parent=None, title='Login', size=(250,150), pos=(350,350)) panel = wx.Panel(frame, -1)
label1 = wx.StaticText(panel, -1, 'UserName:', pos=(0,10), style=wx.ALIGN_RIGHT) label2 = wx.StaticText(panel, -1, 'Password:', pos=(0,30), style=wx.ALIGN_RIGHT)
self.textName = wx.TextCtrl(panel, -1, pos=(70,10), size=(160,20)) self.textPwd = wx.TextCtrl(panel, -1, pos=(70,30), size=(160,20),style=wx.TE_PASSWORD)
buttonOK = wx.Button(panel, -1, 'OK', pos=(30,60))
self.Bind(wx.EVT_BUTTON, self.OnButtonOK, buttonOK) buttonCancel = wx.Button(panel, -1, 'Cancel', pos=(120,60))
self.Bind(wx.EVT_BUTTON, self.OnButtonCancel, buttonCancel) buttonOK.SetDefault()
frame.Show() return True
def OnButtonOK(self, event):
usrName = self.textName.GetValue() usrPwd = self.textPwd.GetValue()
if usrName=='123456' and usrPwd=='654321': wx.MessageBox('Right') else:
wx.MessageBox('Wrong') def OnButtonCancel(self, event): pass app = wxGUI() app.MainLoop()
µÚ10ÕÂ ÍøÂç³ÌÐòÉè¼Æ
10.1 ¼òµ¥½âÊÍTCPºÍUDPÐÒéµÄÇø±ð¡£ ´ð£º
TCPÐÒéÊÇÃæÏòÁ¬½ÓµÄ¡¢¾ßÓÐÖÊÁ¿±£Ö¤µÄ¿É¿¿´«ÊäÐÒ飬µ«¿ªÏú½Ï´ó£»UDPÐÒéÊǾ¡×î´óÄÜÁ¦´«ÊäµÄÎÞÁ¬½ÓÐÒ飬¿ªÏúС£¬³£ÓÃÓÚÊÓÆµÔÚÏߵ㲥£¨Video On Demand, VOD£©Ö®ÀàµÄÓ¦Óá£TCPÐÒéºÍUDPÐÒ鲢ûÓÐÓÅÁÓÖ®·Ö£¬½ö½öÊÇÊÊÓó¡ºÏÓÐËù²»Í¬¡£
10.2 ͬѧ֮¼äºÏ×÷±àдUDPͨÐųÌÐò£¬·Ö±ð±àд·¢ËͶ˺ͽÓÊÕ¶Ë´úÂ룬·¢ËͶ˷¢ËÍÒ»¸ö×Ö·û´®¡°Hello world!¡±¡£¼ÙÉè½ÓÊÕ¶ËÔÚ¼ÆËã»úµÄ5000¶Ë¿Ú½øÐнÓÊÕ£¬²¢ÏÔʾ½ÓÊÕÄÚÈÝ¡£
´ð£ºÊ×ÏÈʹÓÃipconfig/allÃüÁî²é¿´±¾»úIPµØÖ·£¬È»ºó·Ö±ð±àдÏÂÃæµÄ´úÂ룬²¢½«ÆäÖеÄIPµØÖ·Ì滻ΪÏàÓ¦µÄIPµØÖ·¡£
½ÓÊÕ¶Ë´úÂ룺
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind((\ #¿Õ×Ö·û´®±íʾ±¾»úÈκοÉÓÃIPµØÖ· data, addr=s.recvfrom(1024) # »º³åÇø´óСΪ1024×Ö½Ú print ' received message:%s' % data #ÏÔʾ½ÓÊÕµ½µÄÄÚÈÝ s.close( )
·¢ËͶ˴úÂ룺
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(\¼ÙÉè10.20.52.248ÊǽÓÊÕ¶ËÖ÷»úµÄIPµØÖ· s.close( )
10.3 ¼òµ¥½éÉÜsocketÄ£¿éÖÐÓÃÓÚTCP±à³ÌµÄ³£Ó÷½·¨¡£
TCPÒ»°ãÓÃÓÚÒªÇó¿É¿¿Êý¾Ý´«ÊäµÄ³¡ºÏ¡£±àдTCP³ÌÐòʱ¾³£ÐèÒªÓõ½µÄsocketÄ£¿é·½·¨Ö÷ÒªÓУº
? ? ? ? ? ?
connect(address)£ºÁ¬½ÓÔ¶³Ì¼ÆËã»ú send(bytes[,flags])£º·¢ËÍÊý¾Ý recv(bufsize[,flags])£º½ÓÊÕÊý¾Ý bind(address)£º°ó¶¨µØÖ·
listen(backlog)£º¿ªÊ¼¼àÌý£¬µÈ´ý¿Í»§¶ËÁ¬½Ó accept()£ºÏìÓ¦¿Í»§¶ËµÄÇëÇó
10.4 ±àд´úÂë¶ÁÈ¡ËѺüÍøÒ³Ê×Ò³ÄÚÈÝ¡£
´ð£º
>>> import urllib.request >>> dir(urllib.request)
>>> fp = urllib.request.urlopen('http://www.sohu.com.cn') >>> dir(fp)
>>> print(fp.read(100)) >>> fp.close()
10.5 ÔÚ×Ô¼ºµÄ»úÆ÷ÉÏÅäÖÃIISÒÔÖ§³ÖPython½Å±¾µÄÔËÐУ¬È»ºóʹÓÃPython±àд½Å±¾£¬ÔËÐкóÔÚÍøÒ³ÉÏÏÔʾ¡°Hello world!¡±¡£
´ð£ººËÐÄ´úÂëΪ
print 'Status: 200 OK'
print 'Content-type: text/html' print
print '
print '
Hello world!' print '
'
print ''
µÚ11Õ ´óÊý¾Ý´¦Àí
11.1 ¼òµ¥½éÉܳ£¼ûµÄ´óÊý¾Ý´¦Àí¿ò¼Ü¡£ ´ð£ºÖ÷ÒªÓÐÈýÖÖ£¬
? MapReduce£º·Ö²¼Ê½¼ÆËã¿ò¼Ü£¬¿ÉÒÔ½«µ¥¸ö´óÐͼÆËã×÷Òµ·ÖÅ䏸¶ą̀¼ÆËã»úÖ´ÐУ¬¿ÉÒÔÔÚ¶Ìʱ¼äÄÚÍê³É´óÁ¿¹¤×÷£¬ÓÈÆäÊʺÏÊýÖµÐÍºÍ±ê³ÆÐÍÊý¾Ý£¬µ«ÐèÒª¶ÔÐÐÒµÁìÓò¾ßÓÐÒ»¶¨Àí½âºóÖØÐ´Ëã·¨À´Íê³ÉÌØ¶¨µÄÒµÎñ´¦ÀíÒªÇó¡£MapReduceµÄÃû×ÖÓɺ¯Êýʽ±à³ÌÖг£ÓõÄmapºÍreduceÁ½¸öµ¥´Ê×é³É¡£MapReduceÔÚ´óÁ¿½Úµã×é³ÉµÄ¼¯ÈºÉÏÔËÐУ¬¹¤×÷Á÷³ÌÊÇ£ºµ¥¸ö×÷Òµ±»·Ö³ÉºÜ¶àС·Ý£¬ÊäÈëÊý¾ÝÒ²±»ÇÐÆ¬²¢·Ö·¢µ½Ã¿¸ö½Úµã£¬Ã¿¸ö½ÚµãÖ»ÔÚ±¾µØÊý¾ÝÉÏ×öÔËË㣬¶ÔÓ¦µÄÔËËã´úÂë³ÆÎªmapper£¬Õâ¸ö¹ý³Ì¼´map½×¶Î£»Ã¿¸ömapperµÄÊä³öͨ¹ýijÖÖ·½Ê½×éºÏ£¬¸ù¾ÝÐèÒª¿ÉÄÜÔÙ½øÐÐÖØÐÂÅÅÐò£¬ÅÅÐòºóµÄ½á¹ûÔÙ±»ÇзֳÉС·Ý²¢·Ö·¢µ½¸÷¸ö½Úµã½øÐÐÏÂÒ»²½´¦Àí£¬Õâ¸ö¹ý³Ì±»³ÆÎªreduce½×¶Î£¬¶ÔÓ¦µÄ´úÂë³ÆÎªreducer¡£²»Í¬ÀàÐ͵Ä×÷Òµ¿ÉÄÜÐèÒª²»Í¬ÊýÁ¿µÄreducer£¬²¢ÇÒ£¬ÔÚÈκÎʱºò£¬Ã¿¸ömapper»òreducerÖ®¼ä¶¼²»½øÐÐͨÐÅ£¬Ã¿¸ö½ÚµãÖ»¸ºÔð´¦Àí×Ô¼ºµÄÊÂÎñ£¬²¢ÇÒÖ»ÔÚ·ÖÅäµ½±¾µØµÄÊý¾Ý¼¯ÉϽøÐÐÔËËã¡£
? Hadoop£ºHadoopÊÇMapReduce¿ò¼ÜµÄÒ»¸öÃâ·Ñ¿ªÔ´ÊµÏÖ£¬²ÉÓÃJavaÓïÑÔ±àд£¬Ö§³ÖÔÚ´óÁ¿»úÆ÷ÉÏ·Ö²¼Ê½´¦ÀíÊý¾Ý¡£³ýÁË·Ö²¼Ê½¼ÆËãÖ®Í⣬Hadoop»¹×Ô´ø·Ö²¼Ê½Îļþϵͳ£¬¿ÉÒÔÔÚÉÏÃæÔËÐжàÖÖ²»Í¬ÓïÑÔ±àдµÄ·Ö²¼Ê½³ÌÐò¡£HadoopÔÚ¿ÉÉìËõÐÔ¡¢½¡×³ÐÔ¡¢¼ÆËãÐÔÄܺͳɱ¾ÉϾßÓÐÎÞ¿ÉÌæ´úµÄÓÅÊÆ£¬ÊÂʵÉÏÒѳÉΪµ±Ç°»¥ÁªÍøÆóÒµÖ÷Á÷µÄ´óÊý¾Ý·ÖÎöƽ̨¡£
? Spark£ºSparkÊÇÒ»¸öÕë¶Ô³¬´óÊý¾Ý¼¯ºÏµÄµÍÑÓ³Ù¼¯Èº·Ö²¼Ê½¼ÆËãϵͳ£¬±ÈMapReduce¿ì40±¶×óÓÒ¡£SparkÊÇHadoopµÄÉý¼¶°æ±¾£¬¼æÈÝHadoopµÄAPI£¬Äܹ»¶ÁдHadoopµÄHDFS HBASE ˳ÐòÎļþµÈ£¬ÓëÖ®²»Í¬µÄÊǽ«½á¹û±£´æÔÚÄÚ´æÖС£ Hadoop×÷ΪµÚÒ»´ú²úƷʹÓÃÁËHDFS£¬µÚ¶þ´ú¼ÓÈëÁËCacheÀ´±£´æÖÐ¼ä¼ÆËã½á¹û£¬µÚÈý´úÔòÊÇSpark³«µ¼µÄÁ÷¼¼ÊõStreaming¡£
11.2 ÔËÐб¾ÕÂÖдúÂë²¢Àí½âMapReduce±à³Ì˼·¡£ ´ð£ºÂÔ
Ïà¹ØÍÆ¼ö£º