类的继承使用
在Python中 导入模块json 但是json只能序列化 dict | list, tuple str int, float True False None
但是我们想序列化一个类或者一个对象
例如我们导入模块datetime中的datetime 和 time 用字典保存 {'1':datetime.tody(), "2": date.today()}
如果我们来序列化这个字典 会直接报错 此时就需要 使用类的继承来重写父类的属性
# 导入模块
import json
from datetime import datetime, date
# 可以使用json的JSONencoder来查看他可以序列化的数据类型
print(json.JSONEncoder)
# 生成一个类 继承 JSONEncoder
class Myjson(json.JSONEncoder):
# 重写父类方法 o就是他内部自动传的参数 (需要序列化的..)
def default(self,o):
# 判断他的父类是否为 date
if isinstands(o,date):
retuern o.strftime('%Y %m %d %X')
elif isinstands(o,datetime):
retuern o.strftime('%Y %m %d %X')
else:
return super().default(self,o)
res = {'c1':datetime.today(),'c2':date.today()}
print(json.dumps(res,cls=MyJson))
# 以后如果遇到一个类的一个方法很好用 你想拥有 就可以使用继承来修改
网络编程理论知识
软件开发架构分为 cs架构和bs架构
cs架构 client(客户端) ---------------基于网络-----------server(服务端)
bs架构 browser(浏览器)--------------基于网络------------ server(服务端) bs架构本质也是cs架构
且手机端看上去cs架构比较火 但是 bs架构已经崛起了 例如支付宝 微信 的小程序 他们的目的是 统一接口
服务端: 24小时提供服务的 支持并发 唯一的地址 且固定 对外提供服务 稳定运行
客户端: 什么时候想体验服务就去心仪的 服务端寻求服务
网络编程的发展史 任何先进的技术都来源于军事
网络
想实现远程通信的条件 第一个必备的是 底层的物理连接介质!
计算机与计算机之间想要实现远程通信除了有物理连接介质之外还需要有 一套公共的标准/协议
osi七层协议
应用层 可以分为 应用层 表示层 会话层
传输层
网络层
数据链路层
物理层
物理层
基于电信号传输的二进制 1100100100
数据链路层
1规定电信号的分组方式
2规定了任何一台接入互联网的计算机都必须有一块网卡 每一块网卡上都有 独一无二的编号
12位16进制数 前六位是厂商编号 后六位是流水线编号 我们称之为 mac地址
以上两点称之为以太网协议![局域网](D:飞秋feiqRecv Files网络编程局域网.png)
交换机
基于网络传输的特点 通信全靠吼 带来的缺点是 广播风暴!! 基于以太网协议通信 不能跨局域网通信
广域网 通过网关到路由器实现了局域网之间的互联
互联网是有多个局域网彼此之间连接而成的
网络层
ip协议 规定只要是接入互联网的计算机都必须有一个ip地址 ip地址的 特点 点分十进制 最小为 0.0.0.0 最大为 255.255.255.255 ip地址目前有两个版本 : IPV4 IPV6 (因为ipv4已近不能表示现在所有的计算机了 所以推出ipv6版本)
ip地址是动态分配的
传输层
tcp/udp 他们都是基于端口工作的协议 端口(port)
计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通信
端口:用来唯一标识一台计算机上的某个应用程序
端口号的范围:0~65535
注意:0~1024这些都是操作系统默认使用的端口号
建议:使用8000之后的端口
MySQL默认端口:3306
Redis默认端口:6379
django默认端口:8000
flask默认端口:5000
端口号是动态分配的
第一次起qq分配到的是8989
将qq关闭再次启动端口号可能就变了
ip地址:用来唯一标识接入互联网的一台计算机
port端口:用来唯一标识一台计算机上的某个应用程序
ip+port:唯一标识接入互联网一台计算机上的某个应用程序
tcp传输协议可靠的原因在于他有返回机制
发送消息之后 对方必须确认收到消息后才会将数据从内存中清空 否则会在限定的时间内 没隔一段时间发送一次
应用层
HTTP协议
带 s 表示安全
FTP协议
三次握手
客户端 向 服务端 发送请求
服务端 回复 客户端 收到请求 确认请求 合并为一次
客户点 向 服务端 发送收到
四次挥手
客户端 向 服务端 发送请求
服务端 回复 客户端 收到请求 确认请求 合并为一次
客户端 向 服务端 发送收到
客户端 向 服务端 发送数据 (此时自己的数据会复制一份 等待对方确认后才会清空)
服务端 收到 客户端的 数据 并发送 确认消息
四次挥手:
客户端 向 服务端 发送取消请求
服务端 发送 客户端 收到消息
此时 的服务端不会直接停止 而是 将客户端未处理完的数据 处理完 后将数据发送给客户端
服务端 发送处理好的数据 客户端
客户端 发送收到 服务端