day 25

一.单例模式:

方法一.

p = "1.1.1.1"
port = 3306
class Mysql:
    __instance=None
    def __init__(self,ip,port):
        self.ip=ip
        self.port=port
    @classmethod
    def from_conf(cls):
        if cls.__instance==None:
            cls.__instance=cls(ip,port)

        return  cls.__instance

obj1=Mysql.from_conf()
obj2=Mysql.from_conf()
obj4=Mysql("12212",2333)
print(obj1)
print(obj2)
print(obj4)

方法二:(装饰器)

ip = "1.1.1.1"
port = 3306

def auth(cls):
    cls.__instance = cls(ip, port)
    def wrapper(*args, **kwargs):
        if args or kwargs:
            res = cls(*args, **kwargs)
            return res
        else:
            return  cls.__instance
    return wrapper

@auth
class Mysql:
    __instance = None

    def __init__(self, ip, port):
        self.ip = ip
        self.port = port


obj1=Mysql()
obj2=Mysql()
obj4=Mysql("1.1.1.1",3306)
print(obj1)
print(obj2)
print(obj4)

方法三:(元类)

ip = "1.1.1.1"
port = 3306
class Mymeta(type):
    def __init__(self,class_name,class_base,class_dic):
       self.__instance=self(ip,port)
    def __call__(self, *args, **kwargs):
        if args or kwargs:
            obj=self.__new__(self)
            self.__init__(obj, *args, **kwargs)
            return  obj
        return  self.__instance

class Mysql(metaclass=Mymeta):
    def __init__(self,ip,port):
        self.ip=ip
        self.port=port

obj1=Mysql()
obj2=Mysql()
obj3=Mysql("1.1.1.1",3306)

print(obj1)
print(obj2)
print(obj3)

方法四:(导入模块的方式)

p="1.1.1.1.1"
port=3306

class Mysql:
    print("run ....")
    def __init__(self,ip,port):
        self.ip=ip
        self.port=port
instance=Mysql(ip,port)


from settins import Mysql,instance

obj=Mysql("1.1.1",3306)
obj1=instance
obj2=instance
print(obj1)
print(obj2)
print(obj)

二.网络编程简介:

1.目标:编写一个c/s架构的软件
c/s : Client--------------基于网络------------Server
b/s: Browser---------------基于网络------------Server

2.服务端需要遵循的原则:
    1.服务端与客户端都需要一个唯一的地址,但是服务端的地址必须固定/绑定
    2.对外一直提供服务,稳定运行
    3.服务端应该支持开发

3.网络:目的是为了数据的交互(通信)
如何实现通信:
    1.建立好底层的物理连接介子
    2.有一套统一的通信标准,称之为互联网协议

4.互联网协议:
物理层:高低电频  电缆 双绞线
数据链路层:以太网协议(enternet) mac地址 以广播的形式传递下消息(只可以在局域网内使用)
网络层:ip协议  ip  可以定位到世界上的某一台主机
传输层:tcp/udp协议 port 端口  可以定位到世界上的某一个主机上的某一个程序
用户层:用户自己写的协议

    ip+mac可以标识全世界范围内独一无二的一台计算机的位置
    port可以标识一台计算机之上唯一的一个基于网络通信的应用软件
    ip+mac+port:可以标识全世界范围内独一无二的一个应用软件(基于网络通信)
原文地址:https://www.cnblogs.com/jxl123/p/9549666.html