# classmethod 单例模式
# class Singleton:
#
# __instance = None
#
# @classmethod
# def singleton(cls):
#
# if not cls.__instance:
#
# cls.__instance = cls()
#
# return cls.__instance
# __new__:
# class Singleton:
#
# __instance = None
#
# def __new__(cls, *args, **kwargs):
#
# if not cls.__instance:
#
# # 造一个空对象
# cls.__instance = object.__new__(cls)
#
# return cls.__instance
#
#
# obj1 = Singleton()
# obj2 = Singleton()
# obj3 = Singleton()
# print(obj1)
# print(obj2)
# print(obj3)
网络编程
软件开发架构:
c/s架构:Client:客户端 Server:服务端
比如:微信,qq客户端
软件的使用稳定,节省网络资源
缺点:
安装麻烦,用户体验差
软件的每一次更新,用户都需要重新下载或更新版本
b/s架构: Browser:(本质上也是一个客户端):浏览器
Server:服务器
比如浏览器上输入一个网址
优点:软件使用方便,无需根治软件更新去下载
缺点:
比如网络不稳定,软件的使用就不稳定
比较流行:b/s架构,用户体验好
客户端与服务端
服务端:24小时不间断提供服务。
客户端:客户想要找服务,就会访问浏览器(比如微信小程序)
三 往后学习的脉络 - 学习网络编程, 并发编程, 数据库 ----》 可以开发一套 C/S架构的软件。
- 学习前端(html/css/js), web框架(Django) ----》 可以开发一套 B/S架构的软件。
语言是人与人之间沟通的介质
协议是计算机与计算机之间沟通的介质
网络编程:
如何实践远程通信---》物理链接介质 电话---》电话线
纯屏电脑---》网线
笔记本电脑---》网线,网卡
电脑与电脑的通信:互联网协议
让所有生产商的电脑都遵循这套协议,实现所有电脑之间无照爱通信
互联网协议是计算机界的语言
六 互联网协议(OSI七层协议):
- OSI七层协议:
- 应用层
- 会话层
- 表示层
- 传输层
- 网络层
- 数据链路层
- 物理层
- 此时需要关注的是5层: 由下到上记
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层
- 1)物理层:
- 获取到对象计算机的电信号数据
0101010111
010: 你
1011: 爱
101: 我
问题: 无法获取具体数据内容,将电信号数据扔给数据链路层
- 2)数据链路层:
- 我要知道数据是什么?
- 我要知道数据是给谁的?
- “以太网协议”:
1)规定一套分组的方式:
获取电信号真实数据。
电信号是一个数据包。
head: 18个字节
- 6: 发送者
- 6: 接收者
- 6: 数据类型
data:
- 电信号具体的数据
2) 每一台电脑必须要有一个网卡(电脑插入网线的地方):
- 每一块网卡都会有一串世界上独一无二的数字:
- 12位16进制的数字,称之为 "mac地址" :
- 前6位: 产商号
- 后6位: 流水号
mac地址作用(*******):
标识全世界上一台独一无二的计算机。
“以太网协议”:
- 工作的方式:
- 单播:
- 广播:
缺点:
- 广播风暴
- 只能在局域网内实现通信, 无法跨局域实现通信
总结:
- mac地址: 标识全世界上一台独一无二的计算机。
3) 网络层:
- 实现全世界某一台计算之间的通信
- ip地址(ip协议):
- 点分十进制的数字组成
- 180.101.49.11
- 最小范围: 0.0.0.0
- 最小范围: 255.255.255.255
- ip的版本:
- IPV4:
- IPV6:
- ip的作用:(*******)
用于表示全世界某一台计算机的位置,局域网的位置。