今日内容:

  单例模式的四种方法

  网络编程的介绍

单例模式:

  什么是单例模式?

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

  为何要用单例模式?

    可以节省内存资源

  如何用单例模式?

方式一:利用绑定方法

文件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:可以标识全世界范围内独一无二的一个应用软件(基于网络通信)
 

day 30的更多相关文章

  1. 总结30个CSS3选择器

    或许大家平时总是在用的选择器都是:#id  .class  以及标签选择器.可是这些还远远不够,为了在开发中更加得心应手,本文总结了30个CSS3选择器,希望对大家有所帮助. 1 *:通用选择器 ;; ...

  2. 值得收藏!国外最佳互联网安全博客TOP 30

    如果你是网络安全从业人员,其中重要的工作便是了解安全行业的最新资讯以及技术趋势,那么浏览各大安全博客网站或许是信息来源最好的方法之一.最近有国外网站对50多个互联网安全博客做了相关排名,小编整理其中排 ...

  3. CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率

    CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率 当场景中有比较复杂的模型时,条件渲染能够加速对复杂模型的渲染. 条件渲染(Conditio ...

  4. 30分钟学会XAML

    1.狂妄的WPF 相对传统的Windows图形编程,需要做很多复杂的工作,引用许多不同的API.例如:WinForm(带控件表单).GDI+(2D图形).DirectX API(3D图形)以及流媒体和 ...

  5. Shell脚本编程30分钟入门

    Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...

  6. ViEmu 3.6.0 过期 解除30天限制的方法

    下载:链接: http://pan.baidu.com/s/1c2HUuWw 密码: sak8 删除下面2个地方 HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{B9CDA4 ...

  7. AlloyTouch全屏滚动插件发布--30秒搞定顺滑H5页

    原文链接:https://github.com/AlloyTeam/AlloyTouch/wiki/AlloyTouch-FullPage-Plugin 先验货 插件代码可以在这里找到. 注意,虽然是 ...

  8. C#求斐波那契数列第30项的值(递归和非递归)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)

    前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...

  10. 精选30道Java笔试题解答

    转自:http://www.cnblogs.com/lanxuezaipiao/p/3371224.html 都 是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我 ...

随机推荐

  1. ES6--JavaScript的第六个版本

    一.新的变量声明方式 let/cons 与var不同,新的变量声明方式带来了一些不一样的特性,其中最重要的两个特性就是提供了块级作用域与不再具备变量提升. 若是对变量提升不怎么了解的话可以去参考我的其 ...

  2. php 去除所有空格 包括中文空格圆角空格

    有的中文的半角,圆角空格或者段落符显示为空白的.可以用正则来处理 preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/","" ...

  3. Python 排错UnicodeEncodeError 'ascii' codec can't encode character 错误解决方法

    Python UnicodeEncodeError 'ascii' codec can't encode character 错误解决方法   by:授客 QQ:1033553122 错误描述: py ...

  4. java持有对象【2】ArrayList容器续解

    此为JDK API1.6.0对ArrayList的解释. ArrayList 使用java泛型创建类很复杂,但是应用预定义的泛型很简单.例如,要想定义用来保存Apple对象的ArrayList,可以声 ...

  5. Android Application中的Context和Activity中的Context的异同

    一.Context是什么: 1.Context是维持Android程序中各组件能够正常工作的一个核心功能类,我们选中Context类 ,按下快捷键F4,右边就会出现一个Context类的继承结构图啦, ...

  6. [Linux]《鸟哥的私房菜》笔记 (缓慢更新)

    暂时不更新了..这几天一看起书来发现内容很多,这样写blog太慢,也没意义.所以现在是每天看书,在笔记本上记笔记,再配合着<操作系统>和 linux内核 加深理解.往后会以心得体会为主写一 ...

  7. [我的阿里云服务器] —— WordPress Permalink Settings

    前言: 固定链接(Permalink)是博客日志.分类及其他博客内容列表的永久URL. 别人可以通过固定链接链接到你的文章上,你也可以在email中发送某篇日志的链接. 所有日志的URL应为永久性.固 ...

  8. 前端构建工具Gulp使用总结

    1.安装准备 1.1 Node.js安装 在安装Gulp之前首先的安装Node.js, 安装教程详见Node.js 安装配置 1.2 npm安装 在安装node的时候会自动安装npm模块管理器,详见n ...

  9. MSSQL段落还原脚本

    --段落还原:数据库损坏范围比较大,跨多个数据文件甚至跨文件组的时候,我们不得不恢复整个数据库.--这时如果数据库特别大,数据库恢复时间将会很长.但我们可以使用SQL Server提供的段落还原,来逐 ...

  10. 【JAVA】使用 jedis操作redis——连接、存储数据、切库等

    本篇运用Java调用jedis包(jedis在线文档API ),做简单操作实例. 安装jedis 1. 2.9.0 jar 版本下载: jedis-2.9.0.jar 2. 新建项目,添加该驱动包 连 ...