day 08

本文介绍了网络通信的OSI/7层模型及其主要协议,RESTfulAPI的设计原则,特别是幂等性操作。讨论了Python中的序列化和反序列化模块pickle与json,以及匿名函数lambda的使用。同时,解释了Python类异常、type()和isinstance()的区别,TCP的三次握手和四次挥手过程。此外,还涵盖了Python的魔法方法概念,Redis的数据类型,Python内置函数的功能,以及列表和元组的差异以及Python的自省能力。
摘要由CSDN通过智能技术生成

目录

1.OSL / 7层网络模型及协议

2.restful api 设计中的幕等性操作

3.python序列化和反序列化的内置模块

4.匿名函数

5.python中的类异常

6.python中 type() 和 isinstance() 的区别

7.tcp 的 三握四挥

8.python 的 魔法方法

9.redis 中数据类型

10.python的内置函数

11.列表和元组的区别

12.python 的自省


1.OSL / 7层网络模型及协议

         应用层(为应用出现提供服务)(协议:HTTP,TFTP,FTP,NFS,WAIS,SMTP)

        表示层(数据格式转化,数据加密)(协议:Tenet,Rlogin,SNMP,Gopher)

        会话层(建立,管理和维护会话)(协议:SMTP,DNS)

        传输层(建立,管理和维护端到端的连接)(协议:TCP,UDP)

        网络层(IP选址及路由选择)(协议:IP,ICMP,ARP,RARP,AKP,UUCP)

        数据链路层(提供戒指访问和链路管理)(协议:FDDL,Ethernet,Arpanet,PDN,SLIP,PPP)

        物理层(物理层)(协议:IEEE802.1A,IEEE802.0到IEEE802.11)

2.restful api 设计中的幕等性操作

        幂等操作指的是对同一资源的多次请求产生的最终结果是一致的。简单来说,无论对一个资源进行多少次相同的操作,所产生的影响都应该是相同的。
        使用恰当的HTTP方法:使用符合语义的HTTP方法来表示操作的类型。


            GET方法通常用于获取资源,且应该是幂等的。
            POST方法通常用于创建新资源,不是幂等的。
            PUT方法通常用于更新或替换资源,应该是幂等的。
            DELETE方法用于删除资源,通常也应该是幂等的。

3.python序列化和反序列化的内置模块

  

        pickle使用了Python特定的序列化和反序列化机制,它会将Python对象转换为字节流进行存储或传输,并且可以将字节流重新转换回原始的Python对象。pickle模块提供了dump()load()等函数来执行序列化和反序列化操作。

        json(JavaScript Object Notation)是一种轻量级的数据交换格式,可读性高并且易于理解。它使用文本格式表示复杂数据结构,通常用于在不同平台之间进行数据传输。json模块提供了dump()load()等函数来执行序列化和反序列化操作。

        需要注意的是,pickle和json是两种不同的序列化和反序列化机制,它们使用不同的编码格式和处理方式。pickle是Python特定的机制,只能在Python环境中使用,而json是一种通用的数据交换格式,可以在多种编程语言中使用。

4.匿名函数

        匿名函数(Anonymous Function),也被称为lambda函数,是一种没有名称的函数。它是一种简化代码的方式,在不需要定义完整函数的情况下,直接使用一个函数表达式来完成特定的任务。

        在Python中,可以使用lambda关键字创建匿名函数。匿名函数的语法如下:

        lambda 参数: 表达式

        其中,参数是函数的输入参数,而表达式是函数的返回值。匿名函数可以有多个参数,用逗号分隔。

        以下是一个示例,展示了如何使用匿名函数计算两个数的和:

        add = lambda x, y: x + y result = add(5, 3) print(result)

        # 输出:8

        在上述示例中,我们使用lambda函数定义了一个名为add的匿名函数,它接受两个参数x和y,并返回它们的和。然后,我们调用add函数,并传入参数5和3,将结果赋给result变量,并打印出结果。

        匿名函数通常用于简短的函数逻辑或作为高阶函数的参数,以提供更简洁的代码实现。

5.python中的类异常

        

  1. Exception(所有异常的基类)
  2. AssertionError(断言语句失败时引发的异常)
  3. AttributeError(当对象没有属性或无效属性时引发的异常)
  4. ImportError(导入模块或对象失败时引发的异常)
  5. IndexError(索引超出序列范围时引发的异常)
  6. KeyError(字典中查找无效键时引发的异常)
  7. TypeError(操作或函数应用于不适当类型的对象时引发的异常)
  8. ValueError(传递给函数的参数无效时引发的异常)
  9. ZeroDivisionError(除以零时引发的异常)
  10. FileNotFoundError(尝试打开不存在的文件时引发的异常)

这些是常见的类异常

6.python中 type() 和 isinstance() 的区别

        type() 函数返回的是一个对象的类型,可以返回对象所属类的类型信息,

                例如:type(3) 返回 <class ' int '> ,表示整数类型

        isinstance() 函数用于检查一个对象是否是指定类型或其子类的实例,它返回一个布尔值,如果对象是指定类型或其种类的实例,返回True ,否则返回False 

                例如:isinstance(3,int) 返回True, 表示整数3是整数类型的实例

7.tcp 的 三握四挥

        

三次握手
TCP协议位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP协议采纳三次握手策略。

三次握手原理:

第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端;

第2次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了;

第3次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束。

其中:SYN标志位数置1,表示建立TCP连接;ACK标志表示验证字段。

四次挥手​​​​​​​原理:

第1次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态;

第2次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态;

第3次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态;

第4次挥手:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,服务端进入CLOSED状态,完成四次挥手。

在不考虑其中其中各种数据包和报文简单的话是

        3握

        1 . 客户端向服务器发送消息(查看服务器是否在线,能否连接)

        2.  服务器向客户端发送消息 (在线可连接)

        3 . 客户端向服务端发送消息 (OK 在不考虑其他原因下 ,已经处于连接状态了)

        

        4挥

        1 . 客户端向服务器发送消息 (数据拿完了,能不能断连接)

        2 . 服务器向客户端发送消息 (等等,我看看有没有剩下的)

        3 . 服务器向客户端发送消息 (好了,没了 ,断吧)

        4. 客户端向服务器发送消息 (知道了 , 此刻断开连接了)

8.python 的 魔法方法

         __new__        :类的构造器,创建初始化后的基本实例对象 == 类的框架

        __init__         :类的数据初始化方法,给实例化对象添加属性

        __del__        类的析构器,用来在实例销毁前使用,释放资源

        __call__        :将实例对象声明为一个方法调用,保护内部实现

        __getattr__        :获取某个属性时使用

        __setattr__        :设置某个属性时使用

9.redis 中数据类型

        字符串(String):存储一个字符串值。可以对整个字符串或字符串的一部分执行操作,例如获取、设置、追加等。

    列表(List):按照插入顺序存储一个有序的字符串元素集合。可以在列表的两端进行插入、删除和访问操作。

    集合(Set):存储一组唯一的、无序的字符串元素。可以执行集合的交集、并集、差集等计算操作。

    有序集合(Sorted Set):与集合类似,但每个元素都关联了一个分数(score),根据分数的大小进行排序。可用于存储排行榜、优先级队列等场景。

    哈希表(Hash):存储键值对的无序散列表。可以对单个字段或整个哈希表执行操作,例如获取、设置、删除等。

    位图(Bitmap):使用二进制位来存储和操作数据。可以进行按位的逻辑操作,如与、或、非等。

    地理空间索引(Geospatial Index):存储地理位置坐标的数据类型。可以进行地理位置的查询和计算。

10.python的内置函数

            len():返回容器(字符串、列表、元组等)中元素的数量。
            print():将指定的对象输出到控制台。
            input():从用户控制台接收输入,并以字符串形式返回。
            int():将一个对象转换为整数。
            float():将一个对象转换为浮点数。
            str():将一个对象转换为字符串。
            type():返回对象的类型。
            range():生成一个整数序列。
            max():返回给定对象中的最大值。
            min():返回给定对象中的最小值

11.列表和元组的区别

        1.可变性(Mutability):列表是可变的(mutable),意味着可以修改、添加或删除其中的元素。而元组是不可变的(immutable),一旦创建后,就不能修改其中的元素。
    2.语法表示:列表使用方括号([])来表示,元素之间用逗号分隔。例如:[1, 2, 3]。而元组使用圆括号(())来表示,元素之间也用逗号分隔。例如:(1, 2, 3)。
    3.使用场景:由于元组是不可变的,所以在需要保持数据的不可变性和安全性的场景中更适用,例如用于存储常量或函数参数。列表则更适用于需要频繁修改或扩展元素的场景,例如存储动态数据。
    4.性能:元组的访问和迭代比列表更快,这是因为元组的不可变性使得Python可以对其进行一些优化
 

12.python 的自省

        是指程序员所写的程序咋爱运行时,可以获得对象的类型

        dir : 获取当前对象的内部属性

        typr :查看当前对象的类型

        hasattr :判断对象是否包含某个属性

        getattr :获取对象的属性

        isinstance :判断对象是否是某个类的实例

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值