zoukankan      html  css  js  c++  java
  • day 30

    今日内容:

      单例模式的四种方法

      网络编程的介绍

    单例模式:

      什么是单例模式?

        单例模式就是经过多次实例化,指向的是同一实例

      为何要用单例模式?

        可以节省内存资源

      如何用单例模式?

    方式一:利用绑定方法

    文件q

    ###############################

    ip = '1.1.1.1'

    port = 8080

    ###############################

    ###############################

    import q

    class SQL:

      instance = None

      def __init __(self,ip,port)

        self.ip = ip

        self.port = port

      @classmethod

      def func(cls)

        if not cls.instance:

          cls.instance = cls(q.ip,q.port)

        return cls.instance

    obj1 = SQL.func()

    obj2 = SQL.func()

    obj3 = SQL.func()

    print(obj1)

    print(obj2)

    print(obj3)

    ###############################

    方式二:利用装饰器

    ##################################

    def func(cls)

      instance = cls(q.ip,q.port)

      def wrapper(*args,**kwargs):

        if args or kwargs:

          res = cls(*args,**kwargs)

          return res

        else:

          return instance

      return wrapper

    @func

    class SQL:

      def __init__(self,ip,port):

        self.ip = ip

        self.port = port

    obj1 = SQL()

    obj2 = SQL()

    obj3 = SQL()

    print(obj1)

    print(obj2)

    print(obj3)

    ###################################

    方式三:利用元类

    ###################################

    import q

    class Mymate(type):

      def __init__(self,class_name,class_class,class_dic)

        self.instance = self

      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 SQL(metaclass = Mymate):

      def __init__(self,ip,port):

        self.ip = ip 

        self.port = port

    obj1 = SQL()

    obj2 = SQL()

    obj3 = SQL()

    print(obj1)

    print(obj2)

    print(obj3)

    ###################################

    方式四:利用模块导入

    文件:singleton

    ###################################

    import q

    class SQL:

      def __init__(self,ip,port):

        self.ip = ip 

        self.port = port

    instance = SQL(q.ip,q.port)

    ###################################

    ###################################

    import singleton

    obj1 = singleton.instance

    obj2 = singleton.instance

    obj3 = singleton.instance

    print(obj1)

    print(obj2)

    print(obj3)

    ###################################

    网络编程之OSI七层介绍:

    1、目标:编写一个C/S架构的软件

        C/S:client-----------基于网络-------------Sever
    B/S:browser----------基于网络-------------Sever
    2、服务端需要遵循的原则:
    1、服务端与客户端都需要有唯一的地址,但是服务端的地址必须固定/绑定
    2、对外一直提供服务,稳定运行
    3、服务端应该支持并发
    3、网络
    网络建立的目的是为数据交互(通信)
    如何实现通信:
    1.建立好底层的物理连接介质
    2.有一套统一的通信标准,称之为互联网协议

    4、互联网协议:就是计算机界的英语
    OSI七层协议
    物理层:电信号
    数据链路层:MAC地址
    网络层:IP地址
    传输层:port端口号
    应用层:程序员自己写的协议或者是统一的协议
      ip+mac可以标识全世界范围内独一无二的一台计算机的位置
      port可以标识一台计算机之上唯一的一个基于网络通信的应用软件
      ip+mac+port:可以标识全世界范围内独一无二的一个应用软件(基于网络通信)
     
  • 相关阅读:
    Oracle数据库的权限、用户、角色管理
    linux address already in use:make_sock:could not bind to address [::]:80
    linux上ln命令详细说明
    IPhone多线程下载器,支持多种主题
    Android 开发从入门到精通
    iOS开发视频教程下载/iphone开发视频教程下载
    oscocos2d游戏开发基础进度条开发笔记
    分享10个Android游戏源码,要的赶紧来哈
    android中点中overlay弹出带尾巴的气泡的实现
    分享20个Android游戏源码,希望大家喜欢哈!
  • 原文地址:https://www.cnblogs.com/yaoxiaofeng/p/9550714.html
Copyright © 2011-2022 走看看