zoukankan      html  css  js  c++  java
  • 学习日记0828单例 OSI七层协议

    单例的四种实现方式:

    配置文件settings

    IP = 1.1.1.1
    PORT = 8080

      实现方式一(内置方法):

    
    
    import settings

    class
    Foo: _instance = None def __init__(self,IP,ROPT): self.IP = IP self.ROPT = PORT @classmethod def from_conf(cls): if not _instance: cls._instance = cls(settings.IP,setting.ROPT) return cls._instance
    obj1= Foo.from_conf()
    obj2 = Foo.from_conf()
    obj3 = Foo(223,456)

      实现方式二(装饰器):

        原理是:被装饰器装饰的类或者行数,在被调用时实际上是调用了装饰器中的 wrapper,而整个装饰器只会在检测到@的时候执行一次

      import settings

    def dl(cls):
        _instance = cls(settings.IP,settings.PORT)  
        def wrapper(*args,**kwargs):
            if args or kwargs:
                obj = cls(*args,**kwargs)
                return obj
            else:
            return _instance
        return wrapper  
    @dl
    def Foo():
      def __init__(self,IP,ROPT):
            self.IP = IP
            self.ROPT = PORT

    obj1 = Foo()
    obj2 = Foo()
    obj3 = Foo(123,566)

      

      实现方式三(元类):

        原理:元类中的__class__可以控制类被创建后再次的再次调用

    class Mymeta(type):
        def __init__(self,class_name,class_base,class_dic):
            self.__instance = self(settings.IP,settings.PORT)
        
        def __class__(self,*args,**kwargs):
            if args or kwargs:
                obj = self.__new__(self)
                self.__init__(obj,*args, **kwargs)
                return obj
            else:
                return self.__instance
    
    class Foo(metaclass=Mymeta):
        def __init__(self,ip,jk):
            self.ip = ip
            self.jk = jk
    
    obj1 = Foo()
    obj2 = Foo()
    print(obj1)
    print(obj2)

      实现方式四(调用模块):

        原理:模块只会被导入一次,以后的每次导入都是基于上一次的导入的结果而进行

      module.py文件

    import settings
    class Foo:
        def __init__(self,IP,PORT):
            self.IP = IP
            self.PORT = PORT
    _instance = Foo(settings.IP,settings.PORT)
    import module
    
    obj1 = module._instance
    obj2 = module._instance
    obj3 = module.Foo(123,456)

     网络编程(简介):

      C/S:Client--------基于网络---------Server

      B/S:Browser-----基于网络---------Server

      OSI七层协议:也可以总结为5层

        1 应用  2 传输层  3 网络层  4 数据链路层  5 物理层

      2 服务端

        1 服务端与客户端都需要有唯一的地址,但是服务端的地址必须固定/绑定

        2 对外一直提供稳定的服务,稳定运行

        3 服务端应该支持并发

  • 相关阅读:
    Yii增删改查
    10个超级有用、必须收藏的PHP代码样例
    yii源码分析I、II
    Yii源码阅读笔记
    Yii源码阅读笔记
    Yii源码阅读笔记
    当浏览器输入url的时候发生了什么
    js模块化值之seaJS
    js判断字符串中的英文和汉字
    display:table-cell的惊天作用,直接惊呆你!
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/9548689.html
Copyright © 2011-2022 走看看