zoukankan      html  css  js  c++  java
  • python全栈脱产第30天------单例模式、网络编程简介

    一、单例模式

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

      用途:减少内存占用

      

    # 单例模式实现方式一:
    '''
    import settings

    class MySQL:
    __instance=None
    def __init__(self, ip, port):
    self.ip = ip
    self.port = port

    @classmethod
    def from_conf(cls):
    if cls.__instance is None:
    cls.__instance=cls(settings.IP, settings.PORT)
    return cls.__instance
    obj1=MySQL.from_conf()
    obj2=MySQL.from_conf()
    obj3=MySQL.from_conf()
    # obj4=MySQL('1.1.1.3',3302)
    print(obj1)
    print(obj2)
    print(obj3)
    # print(obj4)
    '''

    # 单例模式实现方式二:
    '''
    import settings

    def singleton(cls):
    _instance=cls(settings.IP,settings.PORT)
    def wrapper(*args,**kwargs):
    if len(args) !=0 or len(kwargs) !=0:
    obj=cls(*args,**kwargs)
    return obj
    return _instance
    return wrapper

    @singleton #MySQL=singleton(MySQL) #MySQL=wrapper
    class MySQL:
    def __init__(self, ip, port):
    self.ip = ip
    self.port = port

    # obj=MySQL('1.1.1.1',3306) #obj=wrapper('1.1.1.1',3306)
    # print(obj.__dict__)

    obj1=MySQL() #wrapper()
    obj2=MySQL() #wrapper()
    obj3=MySQL() #wrapper()
    obj4=MySQL('1.1.1.3',3302) #wrapper('1.1.1.3',3302)
    print(obj1)
    print(obj2)
    print(obj3)
    print(obj4)
    '''

    # 单例模式实现方式三:
    '''
    import settings

    class Mymeta(type):
    def __init__(self,class_name,class_bases,class_dic):
    #self=MySQL这个类
    self.__instance=self(settings.IP,settings.PORT)

    def __call__(self, *args, **kwargs):
    # self=MySQL这个类
    if len(args) != 0 or len(kwargs) != 0:
    obj=self.__new__(self)
    self.__init__(obj,*args, **kwargs)
    return obj
    else:
    return self.__instance

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


    obj1=MySQL()
    obj2=MySQL()
    obj3=MySQL()
    obj4=MySQL('1.1.1.3',3302)
    print(obj1)
    print(obj2)
    print(obj3)
    print(obj4)
    '''
    # 单例模式实现方式四:
    def f1():
    from singleton import instance
    print(instance)

    def f2():
    from singleton import instance,MySQL
    print(instance)
    obj=MySQL('1.1.1.3',3302)
    print(obj)

    f1()
    f2()
    二、网络编程简介
      1.目标:编写一个C/S架构的软件
        C/S:Client------基于网络------Server
        B/S:Browser------基于网络------Server
      2.服务端需遵循的原则:
        (1)服务端与客户端都需要唯一的地址,但是服务端的地址必须是固定/绑定
        (2)对外一直提供服务,稳定运行
        (3)服务端应该支持并发
      3.网路
        网络建立的目的是为了数据交互(通信)
        实现:1.建立好底层的物理连接介质  2.有一套统一的通信标准,称之为互联网协议
      4.互联网协议:就是计算机界的英语
        OSI七层协议:应用层、运输层、网络层、链路层、物理层
        ip+mac可以标识全世界范围内独一无二的一台计算机的位置
        port可以标识一台计算机之上唯一的一个基于网络通信的应用软件
        ip+mac+port:可以标识全世界范围内独一无二的一个应用软件(基于网络通信)
  • 相关阅读:
    android数据恢复
    UVA 690 Pipeline Scheduling
    2017 国庆湖南 Day4
    2017 国庆湖南 Day5
    2017 国庆湖南 Day6
    2017国庆 清北学堂 北京综合强化班 Day1
    2017 国庆湖南Day2
    bzoj 2962 序列操作
    UVA 818 Cutting Chains
    UVA 211 The Domino Effect
  • 原文地址:https://www.cnblogs.com/zhouyi0316/p/9550729.html
Copyright © 2011-2022 走看看