Time模块补充知识
date和datetime区别是什么?
date 就是年月日
datetime就是年月时时分秒
以下代码为什么会报错?
import json
from datetime import datetime,date
print(datetime.today())
print(date.today())
"""
TypeError: Object of type 'datetime' is not JSON serializable
"""
因为datetime 和 data所传出的类型并不是json默认能处理的 不能被json序列化
原理json 处理数据类型用的类是JSONEcoder 你不往dumps里面传cls的类 他就默认用JSONEcoder
JSONEcoder这个类的方法default 定义了他不能序列化时返回的内容
可以自己写一个类去继承JSONEcoder,并重写其中的default方法
class MyJson(json.JSONEncoder):
def default(self, o):
if isinstance(o,datetime):
return o.strftime('%Y-%m-%d %X')
elif isinstance(o,date):
return o.strftime('%Y-%m-%d')
else:
return super().default(self,o)
res = {'c1':datetime.today(),'c2':date.today()}
print(json.dumps(res,cls=MyJson))
# {"c1": "2019-08-06 20:38:50", "c2": "2019-08-06"}
重写过的default方法不仅能使json处理datetime.todat()和date.today()
还能控制指定输出的形式
网络编程
软件开发架构
c/s架构(client/server)
c: 客户端
s: 服务器
b/s架构(browser/server)
b: 浏览器
s: 服务器
ps:b/s架构本质也是c/s架构
手机端看上去c/s架构( 即客户端装在手机上 )比较火,实际上b/s( 即手机端的APP相当于一个浏览器,服务都在网页上 )已经在崛起。
微信支付宝都在做一件事:统一接口
可以预见的是,手机端之后肯定也是b/s比较火。
服务端和客户端的特点?
服务端:24小时不间断提供服务
客户端:什么时候想体验服务,就去找相应的服务端去请求服务
学习网络编程的用处,以及开发一个b/s架构的软件需要什么?
学习网络编程 就可以开发一个c/s架构的软件
并发,数据库,前端,Django 就可以开发一个b/s架构的软件
网络编程的发展史
任何先进的技术最早都来源于军事
回到过去
- 早期的电话 电话线
- 大屁股电脑 网线
- 笔记本电脑 无线电话
要想实现远程第一个需要的是:物理连接介质
人要想实现无障碍交流必须说统一的语言
>>> 英文
计算机与计算机之间要想实现远程通信除了有物理连接介质之外还需要
>>> 一套公共的标准/协议
Osi 七层协议
应表会传网数物
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
Osi五层协议
应用层
传输层
网络层
数据链路层
物理连接层
1. 物理连接层
基于电信号传输010101二进制数据
2. 数据链路层
a. 规定了电信号的分组方式
b. 任何一台接入互联网的计算机都必须有一块网卡
每一块网卡都刻有世界上独一无二的编号
12位16进制数
前6位厂商编号
后6位流水线编号
这12位数叫mac地址
ps: 以上两点合称为“以太网协议”
交换机
基于以太网协议通信
不能跨局域网通信
3. 网络层
IP协议
规定了只要是接入互联网的计算机都必须有一个IP地址
ip地址特点:点分十进制
ip地址最小:0.0.0.0
ip地址最大:255.255.255.255
ip地址目前有两个版本:IPV4
IPV6
(由于IPV4已经不够表示目前存在的计算机了所以推出了IPV6版本)
IP地址是动态分配的
4. 传输层
TCP\UDP都是基于端口工作的协议
端口(port)
计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通信
端口:用来唯一标识一台计算机上的某个应用程序
端口号的范围:0~65535
注意:0~1024这些都是操作系统默认使用的端口号
建议:使用8000之后的端口
MySQL默认端口:3306
Redis默认端口:6379
django默认端口:8000
flask默认端口:5000
端口号是动态分配的
第一次起qq分配到的是8989
将qq关闭再次启动端口号可能就变了
总结
ip地址
:用来唯一标识接入互联网的一台计算机
port端口
:用来唯一标识一台计算机上的某个应用程序
ip+port
:唯一标识接入互联网一台计算机上的某个应用程序
5. 应用层
HTTP协议
FTP协议
TCP协议
流式协议,可靠协议
基于TCP协议通道
TCP协议传输数据之所以可靠,就在于使用了双向通道
三次握手四次挥手
三次握手建立连接
四次挥手断开连接