1. 程式人生 > >多繼承c3算法與網路編程

多繼承c3算法與網路編程

一個 方式 切換 時也 lose 成功 pytho 進程調用 bject

  • 一、多繼承c3算法
    • 1、經典類與新式類
      • 在python2之中,可以編寫經典類和新式類,但是在python3之中編寫的都是新式類
      • 新式類,若自己和自己的前輩但凡有一個繼承object,那麽此類則為新式類
    • 2、經典類和新式類的查找方法
      • 經典類,深度優先的查找方式,即一條路走到黑,在先左後右的大方針之下,每一條查找到底在切換另一條線路
      • 新式類,c3算法,使用Foo.__mro__可以查看Foo類的繼承順序,和__super__類似
    • 3、c3算法
      • 首先我們需要將每一條線路都寫出來,大方針還是由左至右,ru:Foo:Foo+(B,C,D,F,G)+(I,G,D,G,W)
      • 獲取其中第一個括號的表頭,和其他表的表中除開表頭的類比較,沒有相同的就放在繼承裏面,如果純在就不變,使用下一個表的表頭進行比較
        class A(object):
            pass
        
        class B(A):
            pass
        
        class C(B):
            pass
        
        class D(object):
            pass
        
        class E(D,C):
            pass
        
        class F(object):
            pass
        
        class G(F):
            pass
        
        class H(C,G):
            pass
        
        class Foo(E,H):
            pass
        
        """
        L(Foo + L(E)  + L(H) )
        L(E) = E,D,C,B,A,object
        L(H) = H,C,B,A,G,F,object
        Foo = (object) + (G,F,object)
        Foo,E,D,H,C,B,A,G,F,object
        """
        

  • 二、網路編程
    • 1、架構的分類:
      • 1、C/S架構,有客戶端的架構,client---》server
      • 2、B/S架構,沒有客戶端,在網站上的架構,browser----->server
    • 2、如何進行數據交互
      • 1、內部局域網類:交換機會分配至多256個ip地址(windows查ip:在cmd中輸入ipconfig;mac中查ip在終端中輸入:ifconfig。
      • 2、公網ip則需要花錢租借
      • 3、相互通訊的本質還是互相發送高低電頻
    • 3、網路編程socket模塊
      • 1、服務端
        • 首先創建socket模塊. server=socket.socket( )
        • 綁定一個ip地址.server.bind( ( ip地址,端口號) ),端口號是自己設置的,客戶端需要提供一致的端口號才能進行通行,不同的進程調用的端口號不一樣
        • 設置最大隊列人數:server.listen( 數量)
        • 然後便可以等待客戶來連接,ret = server.accpept( ),此刻程序會陷入一個阻塞,若是一直未有客戶端成功連接便會一直等下去
        • 若是有客戶連接,程序便走下去,此刻我們打印這個ret,會得到一個元組,裏面有兩個元素,第一個是客戶端與服務端連接的對象,通常我們會使用conn來接他,另一個是客戶端的地址信息,通常我們會用addr來接收它
        • conn叫全雙工管道,可以簡單的理解為一個傳送介質,需要知道的事,這個介質是有客戶端提供
        • 接下來我們便可以進行收發信息,接受信息時也會有阻塞,data=conn.recv(裏面是服務端通過介質獲取信息時,一次性最大的獲取量,一般設置為1024字節);發送消息為,conn.send(必須是字節型),而且記住,有發必須有收,在客戶端和服務端收發必須相互對應,不然程序便會堵塞
        • 最後記得關閉介質conn.close( )
        • 關閉服務器需使用server.close( )
      • 2、客戶端
        • 1、同樣是先建立客戶端client=socket.socket( )
        • 2、client.connect( ( "服務器地址",端口號) ),向服務端發送鏈接請求,程序走到這同樣會有阻塞,會一直嘗試鏈接知道鏈接成功
        • 3、client.send(字節類型),發送消息,data=client.recv( 1024),收消息
        • 4、關閉客戶端client.close( )
      • 3、在py3中,收發信息默認的都是字節數,在py2中默認的收發的都是字符串,這是由於py3中字符串默認為unicode,故發送字節更加節約空間

多繼承c3算法與網路編程