day8整理总结

1.tcp的三次挥手和四次握手

三次握手:

  1. 第一次握手:客户端发送一个带有SYN标志的TCP报文段给服务器,并指明初始序列号(Sequence Number)
  2. 第二次握手:服务器收到客户端的SYN报文段后,会发送一个带有SYN/ACK标志的TCP报文段给客户端,同时确认客户端的初始序列号,并指定自己的初始序列号
  3. 第三次握手:客户端收到服务器的SYN/ACK报文段后,会发送一个带有ACK标志的TCP报文段给服务器,确认收到服务器的确认,并指明自己的初始序列号

四次挥手:

  1. 第一次挥手:当应用程序决定要关闭连接时,客户端发送一个带有FIN标志的TCP报文段给服务器,表示不再发送数据
  2. 第二次挥手:服务器收到客户端的FIN报文段后,发送一个带有ACK标志的TCP报文段给客户端,确认收到客户端的关闭请求
  3. 第三次挥手:服务器发送一个带有FIN标志的TCP报文段给客户端,表示服务器也不再发送数据
  4. 第四次挥手:客户端收到服务器的FIN报文段后,发送一个带有ACK标志的TCP报文段给服务器,确认收到服务器的关闭请求

2.Python中的内置函数

  1. print(): 打印输出内容
  2. input(): 读取用户的输入
  3. len(): 返回对象(字符串、列表、元组等)的长度
  4. type(): 返回对象的类型
  5. str(): 将对象转换为字符串
  6. int(): 将对象转换为整数
  7. float(): 将对象转换为浮点数
  8. list(): 将可迭代对象转换为列表
  9. tuple(): 将可迭代对象转换为元组
  10. dict(): 创建一个字典
  11. range(): 生成一个指定范围的整数序列
  12. sum(): 对可迭代对象进行求和
  13. max(): 返回可迭代对象中的最大值
  14. min(): 返回可迭代对象中的最小值
  15. abs(): 返回数值的绝对值

3.python常见的异常类

  1. SyntaxError: 语法错误,通常是代码书写错误导致的
  2. IndentationError: 缩进错误,通常是代码缩进不正确导致的
  3. NameError: 名称错误,使用了未定义的变量或函数名
  4. TypeError: 类型错误,如使用了不支持的操作或参数类型不匹配
  5. ValueError: 值错误,当一个对象传入一个函数时,这个对象的类型是正确的,但值不合适
  6. IndexError: 索引错误,尝试访问一个不存在的索引
  7. KeyError: 键错误,尝试访问字典中不存在的键
  8. FileNotFoundError: 文件未找到错误,尝试打开或访问不存在的文件
  9. ZeroDivisionError: 除零错误,尝试进行除以零的运算
  10. AttributeError: 属性错误,尝试访问不存在的属性或方法
  11. ImportError: 导入错误,导入模块失败或找不到指定的模块
  12. IOError: 输入/输出错误,读写文件或数据时发生的错误
  13. KeyboardInterrupt: 键盘中断,当用户中断程序执行时抛出的异常
  14. OverflowError: 溢出错误,数值运算超出了所能表示的范围
  15. MemoryError: 内存错误,尝试分配超过可用内存的对象。

4.什么是匿名函数

匿名函数,也称为 lambda 函数,是一种没有明确名称的函数。它是在编程语言中用来简化代码和处理一些简单任务的一种方式

匿名函数没有独立的定义和命名过程,通常在需要使用函数的地方直接定义和调用。它可以作为参数传递给其他函数、存储在变量中或者直接执行

匿名函数的特点包括:

  1. 没有函数名:不需要像普通函数那样定义函数名
  2. 简洁性:可以将简单的函数逻辑写在一行代码中
  3. 临时性:只在需要的地方定义和使用,无需额外的命名和管理

在许多编程语言中,匿名函数通常以关键字 "lambda" 开头,并紧随其后的是参数列表和函数体。匿名函数可以用来处理迭代、排序、回调等场景,以及编写更简洁、易读的代码

需要注意的是,匿名函数通常用于处理简单、一次性的逻辑,如果函数逻辑复杂或需要重复使用,建议使用普通的具名函数来定义

5.什么是redis

redis是一个使用c语言编写的开源,高性能的非关系型的键值对数据库

redis可以存储键和五种不同类型之间的映射,键的类型只能是字符串值

支持五种数据类型:字符串,列表,集合,有序集合,散列表

6.redis的优缺点

优点:

  1. 高性能:Redis 的数据存储在内存中,读写速度非常快,适合处理高并发的场景。它支持对数据进行缓存,可以提高访问速度,并减轻后端数据库的负载

  2. 多种数据结构支持:Redis 不仅支持简单的键值存储,还支持丰富的数据结构,如列表、集合、哈希和有序集合等。这使得开发者可以更灵活地处理不同类型的数据

  3. 持久化支持:Redis 支持将数据持久化到磁盘上,以防止服务器重启或宕机时数据的丢失。它提供了两种持久化方式,分别是 RDB(快照)和 AOF(日志追加),开发者可以根据需求选择合适的方式

  4. 分布式计算:Redis 提供了主从复制和集群功能,可以将数据复制到多个节点,实现数据备份和容灾。这样可以增加系统的可用性和可靠性

  5. 丰富的功能特性:除了基本的数据存储和获取外,Redis 还提供了发布/订阅、事务支持、分布式锁等功能。这些功能可以帮助开发者构建更强大和复杂的应用

缺点:

  1. 数据量受限:Redis 将数据存储在内存中,因此受到可用内存的限制。当数据量较大时,需要考虑到服务器内存的大小和成本

  2. 单线程模型:Redis 使用单线程处理请求,这意味着在某些高并发场景下可能存在性能瓶颈。尽管 Redis 内部采用了多路复用技术来提高并发性能,但在特定场景下仍可能出现性能问题

  3. 无结构查询支持:与传统的关系型数据库相比,Redis 不支持像 SQL 这样的结构化查询语言。虽然 Redis 提供了一些基本的查询操作,但不如关系型数据库那样强大和灵活

  4. 持久化效率:Redis 的持久化方式对性能有一定的影响,持久化写入磁盘会带来额外的 I/O 操作。在一些对 I/O 效率要求较高的场景下,可以选择关闭持久化或者使用更高级别的存储引擎

7.什么是redis持久化

Redis 持久化是指将 Redis 中的数据在某种形式下保存到磁盘上,以便在 Redis 重启后能够恢复数据。持久化可以确保数据的持久性和可靠性,防止数据丢失

Redis 提供了两种持久化方式:

  1. RDB(Redis Database)持久化:RDB 是一种快照式持久化方式,它会将 Redis 内存中的数据定期或手动地保存到一个二进制文件(.rdb 文件)中。RDB 持久化的优点是生成的文件紧凑、自描述性强,适合用于数据备份和灾难恢复。可以通过配置文件设置 RDB 持久化的触发机制和保存频率

  2. AOF(Append-Only File)持久化:AOF 持久化是一种追加日志式持久化方式,它会将 Redis 的写命令追加到一个日志文件(appendonly.aof 文件)中。当 Redis 重启时,会通过重新执行日志文件中的命令来还原数据。AOF 持久化的优点是数据更加持久和安全,可以避免数据丢失。可以通过配置文件设置 AOF 持久化的触发机制和刷盘频率(fsync 策略)

8.redis如何实现乐观锁

Redis 的乐观锁是基于 WATCH 命令和事务(MULTI/EXEC)来实现的。WATCH 命令用于监视给定的键,如果在事务执行期间,被监视的键被其他客户端所改动,那么事务将被打断。通过检查事务执行结果中的 nil 值,可以判断是否发生了冲突,从而决定如何处理

9.redis布隆过滤器是什么

Redis 布隆过滤器(Bloom Filter)是一种用于快速判断一个元素是否存在于集合中的数据结构,它通过使用位数组和多个哈希函数来实现。布隆过滤器的主要特点是空间效率高且查询速度快,但会存在一定的误判率

布隆过滤器的优点是占用的空间相对较小,且查询速度非常快。它适用于需要判断元素是否存在或者可能存在的场景,例如缓存穿透、垃圾邮件过滤、URL 去重等。然而,布隆过滤器也存在一定的误判率(即误认为元素存在于布隆过滤器中,但实际上不存在),因此不适用于需要百分之百准确性的场景

在 Redis 中,可以通过使用布隆过滤器插件(RedisBloom)来实现布隆过滤器功能。RedisBloom 提供了一组用于操作布隆过滤器的命令,例如创建布隆过滤器、插入元素、查询元素等。通过使用 RedisBloom,可以方便地在 Redis 中使用布隆过滤器来解决实际问题

布隆过滤器由两部分组成:

  1. 位数组(Bit Array):用来表示布隆过滤器的容器,通常通过 Redis 的字符串类型实现。每个位数组的位都初始设置为 0

  2. 多个哈希函数(Hash Functions):用来将待验证的元素映射到位数组上的多个位置。通常使用多个相互独立的哈希函数来实现

10.python的元类

目录

1.tcp的三次挥手和四次握手

2.Python中的内置函数

3.python常见的异常类

4.什么是匿名函数

5.什么是redis

6.redis的优缺点

7.什么是redis持久化

8.redis如何实现乐观锁

9.redis布隆过滤器是什么

10.python的元类


在 Python 中,元类(metaclass)是用于创建类的类。它是一种高级特性,允许我们在定义类时自定义类的行为

元类的主要作用是控制类的创建过程,可以拦截类的定义、修改类的属性和方法,甚至可以替换类的实现。通过定义元类,我们可以对类进行自定义的元编程操作

在 Python 中,可以使用 type 内置函数来创建元类。type 函数接受三个参数:类名、基类元组(可选)、类属性字典。通过调用 type 函数并传递这些参数,就可以动态创建一个类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值