python的基础知识

目录

1.python中常见报错

2.redis数据类型

3.OSI七层协议

4.TOP三次握手四次挥手

5.__init__和__new__的区别

6.redis雪崩处理办法

7.redis过期策略

8.type和interface的区别

9.匿名函数

10.redis事务

11.iter()内置方法


1.python中常见报错


        1.ValueError(数值错误): 当一个函数接收到一个不合适的参数或参数值时,会引发ValueError异常.
        2.TypeError (类型错误): 当操作或函数应用于不兼容的类型时,会引发TypeError异常。
        3.IndexError (索引错误): 当使用无效的索引访问序列(如列表、字符串等)中的元素时,会引发IndexError异常。
        4.KeyError(键错误): 当使用一个字典中不存在的键访问字典元素时,会引发KeyError异常.
        5.FileNotFoundError (文件未找到错误) : 当尝试打开一个不存在的文件时,会引发FileNotFoundError异常。
        6.I0Error (输入/输出错误) : 当发生输入/输出操作失败时,会引发IOError异常。
        7.ZeroDivisionError (除委错误) : 当尝试以委作为除数进行除法运算时,会ZeroDivisionError异。

2.redis数据类型


        常用:

         1.字符串 (String) : 存储字符串或二进制数据。
          2. 列表 (List) : 有序的字符串元素集合,可以在头部或尾部插入、删除元素。

         3.哈希 (Hash) : 类似于关联数组,存储字段和值的映射关系
         4.集合(Set): 无序的唯一元素集合,支持添加、删除和计算交集、并集等操作。
         5.有序集合(Sorted Set) : 与集合类似,每个元素关联一个分数,通过分数排序,支持按范围获取元素。

        不常用:
             6.位图(Bitmap) : 用于位操作的数据结构,可以进行位的设置、清除、计数和逻辑运算等。
             7.布隆过滤器 (Bloom Filter) : 用于高效地检查元素是否存在的数据结构,有一定的误判率。
            8.流(Stream) : 按照时间顺序记录和消费消息的数据结构,类似于消息队列。11.基数估计 (Count-Min sketch) : 用于统计数据的数据结构,可以进行快速的近似计数操作。

3.OSI七层协议


1、物理层:物理层处于OSI参考模型的最低层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以透明地传送比特流。

2、数据链路层:数据链路层在物理层提供比特流传输服务的基础上,在通信实体之间建立数据链路连接,传送以帧为单位的数据,通过差错控制、流量控制方法,变有差错的物理线路为无差错的数据链路。

3、网络层:网络层主要任务是通过执行路由选择算法,为报文分组通过通信子网选择最适当的路径。它是OSI参考模型七层中最复杂的一层。

4、传输层:传输层是向用户提供可靠的端到端服务,透明地传送报文。

5、会话层:会话层的主要目的是组织同步的两个会话用户之间的对话,并管理数据的交换。

6、表示层:表示层主要用于处理两个通信系统间信息交换的表示方式,它包括数据格式变换、数据加密与解密、数据压缩与恢复等功能。

7、应用层:应用层是OSI参考模型的最高层。应用层不仅要提供应用进程所需要信息交换和远程操作,而且还要作为应用进程的用户代理,完成一些为进行语义上有意义的信息交换所必须的功能。

4.TOP三次握手四次挥手


TCP三次握手:

客户端向服务端发送一个带有 SYN(同步)标志的连接请求报文段。
服务端收到请求后,向客户端发送一个带有 SYN/ACK(同步/确认)标志的确认报文段,表示服务端同意建立连接。
客户端收到确认报文段后,再向服务端发送一个带有 ACK(确认)标志的报文段,表示客户端确认连接建立。
服务端收到确认报文段后,连接建立完成,双方可以开始传输数据。
TCP四次挥手:

客户端发起关闭连接请求,发送一个带有 FIN(结束)标志的报文段。
服务端收到请求后,向客户端发送一个带有 ACK 标志的确认报文段,表示服务端收到关闭请求。
服务端继续发送剩余数据,待数据发送完毕后,向客户端发送一个带有 FIN 标志的报文段。
客户端收到服务端的关闭请求后,发送一个带有 ACK 标志的确认报文段,双方确认关闭连接。


5.__init__和__new__的区别


__new__是一个静态方法,而__init__是一个实例方法.
返回值的不同:__new__方法会返回一个创建的实例,而__init__什么都不返回.
执行顺序的不同:只有在__new__返回一个cls的实例时后面的__init__才能被调用.
功能上的不同:当创建一个新实例时调用__new__,初始化一个实例时用__init__.


6.redis雪崩处理办法


        1.保持缓存层的高可用性

                使用Redis 哨兵模式或者Redis 集群部署方式,即便个别Redis 节点下线,整个缓存层依然可以使用。除此之外,还可以在多个机房部署 Redis,这样即便是机房死机,依然可以实现缓存层的高可用。

        2.限流降级组件

                无论是缓存层还是存储层都会有出错的概率,可以将它们视为资源。作为并发量较大的分布式系统,假如有一个资源不可用,可能会造成所有线程在获取这个资源时异常,造成整个系统不可用。降级在高并发系统中是非常正常的,比如推荐服务中,如果个性化推荐服务不可用,可以降级补充热点数据,不至于造成整个推荐服务不可用。常见的限流降级组件如 Hystrix、SenTInel 等。

        3.缓存不过期

                Redis 中保存的 key 永不失效,这样就不会出现大量缓存同时失效的问题,但是随之而来的就是Redis 需要更多的存储空间。

        4.优化缓存过期时间

                设计缓存时,为每一个 key 选择合适的过期时间,避免大量的 key 在同一时刻同时失效,造成缓存雪崩。

7.redis过期策略


        1,定时过期

                每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。

        2,惰性过期

                只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。

        3,定期过期

                每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果。

8.type和interface的区别


        type() 函数返回对象的具体类型,而 isinstance()函数则检查对象是否是指定类型或其子类的实例。
        type() 返回的是对象的类型,是一个类对象的实例,而 isinstance()返回的是一个布尔值,表示对象是否是指定类型或其子类的实例。
 

9.匿名函数


        匿名函数是指没有名字的函数,它主要应用在需要一个函数、但是又不想费神去命名这个函数的场合。通常情况下,这样的函数只使用一次。

        使用方法:

# 使用匿名函数计算两个数的和
add = lambda x, y: x + y
 
# 调用匿名函数
result = add(3, 5)
print(result)


10.redis事务


        单独的隔离操作:

                事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

        没有隔离级别的概念:

                队列中的命令没有提交之前都不会实际被执行,因为事务提交前任何指令都不会被实际执行。

        不保证原子性 :

                事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚。

11.iter()内置方法


        iter()是一个内置函数,用于将可迭代对象转换为迭代器。可迭代对象是一种可以被迭代的对象,例如列表、元组、字符串等。迭代器是一种特殊的对象,它可以在迭代过程中逐个返回元素,而不是一次性返回所有元素。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值