• 网络编程理论知识


    类的继承使用

    在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协议

    三次握手
    客户端 向 服务端 发送请求
    服务端 回复 客户端 收到请求 确认请求 合并为一次
    客户点 向 服务端 发送收到

    四次挥手
    客户端 向 服务端 发送请求
    服务端 回复 客户端 收到请求 确认请求 合并为一次
    客户端 向 服务端 发送收到

    客户端 向 服务端 发送数据 (此时自己的数据会复制一份 等待对方确认后才会清空)
    服务端 收到 客户端的 数据 并发送 确认消息
    
    四次挥手:
    客户端 向 服务端 发送取消请求
    
    服务端 发送 客户端 收到消息
    
            此时 的服务端不会直接停止 而是 将客户端未处理完的数据 处理完 后将数据发送给客户端 
    
    服务端 发送处理好的数据 客户端
    客户端 发送收到 服务端
    趁自己还没死 多折腾折腾
  • 相关阅读:
    交换机模拟器
    bootstrap-分页-默认分页
    bootstrap-分页-默认分页
    bootstrap-分页-默认分页
    交易系统查询带上for update
    集成开发环境(IDE) Mix介绍
    Dapp及相关开发工具介绍
    区块链技术视频网站EthCast.com上线
    区块链:最小可行区块链原理解析1
    账户、交易核心概念及投注合约解析
  • 原文地址:https://www.cnblogs.com/lddragon/p/11312772.html
Copyright © 2020-2023  润新知