单例与网络编程介绍

一.单例模式

多次实例化的结果指向同一个实例


#setting.py
IP=1.1.1.2
PORT=3306

1.1单例实现方法一:

import setting
class MySQL:
    __isinstace=None
    def __init__(self,IP,PORT):
        self.IP=IP
        self.PORT=PORT


    @classmethod
    def from_conf(cls):
        if cls.__isinstace is None:
            cls.__isinstace=cls(setting.IP,setting.PORT)
        return cls.__isinstace

obj1=MySQL.from_conf()
obj2=MySQL.from_conf()
obj3=MySQL('1.2.31.1',3306)

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

单例实现方法二:

def singleton(cls):
    __isinstace=cls(setting.IP,setting.PORT)
    def wrapper(*args,**kwargs):
        if args or kwargs:
            obj=cls(*args,**kwargs)
            return obj
        return __isinstace
    return wrapper

@singleton
class MySQL:
    def __init__(self,IP,PORT):
        self.IP=IP
        self.PORT=PORT

obj1=MySQL('1.2.13.',3309)
obj2=MySQL()
obj3=MySQL()
print(obj1)
print(obj2)
print(obj3)

单例实现方法三:

class Mymeta(type):
    def __init__(self,class_name,class_bases,class_dic):
        self.__instance=self(setting.IP,setting.PORT)

    def __call__(self, *args, **kwargs):
        if args or kwargs:
            obj=self.__new__(self)
            self.__init__(obj,*args,**kwargs)
            return obj
        else:
            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.3',3302)
print(obj1)
print(obj2)
print(obj3)

单例实现方法四:

#singleton.py

import setting

class Foo:
    def __init__(self,IP,PORT):
        self.IP=IP
        self.PORT=PORT

isinstace=Foo(setting.IP,setting.PORT)
         

def f1():
    from singleton import isinstace
    print(isinstace)

def f2():
    from singleton import isinstace
    print(isinstace)

def f3():
    from singleton import Foo
    obj=Foo('1.2.13.1',3307)
    print(obj)

f1()
f2()
f3()

二.网络编程介绍

2.1架构模式

C/S: Client--------基于网络----------Server(客户/服务)
B/S: Browser-------基于网络----------Server(浏览器/服务)

2.2服务端遵循原则

1.服务端和客户段都需要有一个稳定的地址,且服务端地址必须固定/绑定

2.对外必须稳定运行,一直提供服务

3.支持并发

2.3网络

建立网络目的是为了数据交互(通信)

建立方法:

  1. 建立底层通信物理连接介质

  2. 建立一套统一的通信标准,即互联网协议

2.4互联网协议

可以理解为计算机界的英语

2.5地址组合含义

ip+mac可以标记全世界唯一的一个计算机地址

port可以标记一台计算机上的某一个基于网络通信的应用软件

ip+mac+port可以标记全世界唯一的一个基于网络通信应用软件

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值