2023-07-05总结

目录

1.代码走读的含义?

2.python中常见的异常有哪些?

3.main方法的作用?

4.PEP8规范

5.redis乐观锁

6.redis持久化是什么

7.redis的数据类型

8.什么是redis事务

9.redis的过期策略

10.redis的缓存雪崩

11.布隆过滤器的解释?

12.Aiohttp是什么?

13.元类是什么?

14.__next__和__iter__的作用?

15.type和isinstance区别?


1.代码走读的含义?

"代码走读"是指阅读和理解代码的过程,通过仔细阅读代码,了解代码的功能、逻辑和结构。代码走读的目的是为了更好地理解代码的工作原理、发现潜在的问题和改进点,并为代码的维护、修改和扩展提供基础。

2.python中常见的异常有哪些?

  • Exception:所有异常类的基类。
  • TypeError:类型错误,当操作或函数应用于不适当类型的对象时引发。
  • ValueError:值错误,当函数接收到正确类型的对象,但值不合适时引发。
  • IOError:输入/输出错误,当发生与输入/输出操作相关的错误时引发。
  • IndexError:索引错误,当使用无效的索引访问序列或容器中的元素时引发。
  • KeyError:键错误,当在字典中使用无效的键时引发。

3.main方法的作用?

在 Python 中,main 方法是一个常用的程序入口点,它具有特殊的作用和功能。main 方法通常用于定义脚本的顶层执行逻辑,它是程序的主要入口,包含了要在程序启动时执行的代码。


4.PEP8规范

PEP 8 是 Python 社区广泛接受的一份代码风格指南,它详细规定了 Python 代码的编写风格和约定。PEP 8 的目的是提供一致、易读和易于维护的代码风格,以促进 Python 代码的可读性和可维护性。


5.redis乐观锁

在 Redis 中,乐观锁是一种实现并发控制的机制,用于处理多个客户端并发访问共享数据时的并发冲突问题。乐观锁的基本思想是,通过在更新操作之前和之后进行状态检查,来判断是否发生了冲突


6.redis持久化是什么

Redis 持久化是指将 Redis 数据存储在硬盘上,以便在服务器重启或崩溃后能够恢复数据。


7.redis的数据类型

Redis 支持多种数据类型,每种类型都有不同的特点和用途。以下是 Redis 支持的主要数据类型:

  1. 字符串(String):字符串是 Redis 最基本的数据类型,可以存储任意二进制数据,例如文本、图片、序列化对象等。字符串类型的值最大可以存储 512MB。

  2. 列表(List):列表是一个有序的字符串元素集合。可以在列表的两端进行插入和删除操作,支持按索引获取元素,还可以进行范围操作,如获取子列表。

  3. 集合(Set):集合是一个无序、唯一的字符串元素集合。支持添加、删除、判断元素是否存在,以及求交集、并集、差集等集合操作。

  4. 有序集合(Sorted Set):有序集合是一个有序的字符串元素集合,每个元素关联一个分数,通过分数进行排序。支持按分数范围获取元素,以及根据元素获取分数等操作。

  5. 哈希表(Hash):哈希表是一个键值对集合,其中的键和值都是字符串类型。可以对单个键进行增、删、改、查操作,也可以获取所有键值对。

  6. Bitmaps:位图是由二进制位组成的数据结构,可以对位图进行位操作,如设置、清除、统计位的数量等。


8.什么是redis事务

Redis 事务是一系列 Redis 命令的有序执行集合,可以一次性、原子性地执行多个命令。在 Redis 事务中,一组命令会作为一个单独的操作执行,期间不会被其他客户端的命令中断。

Redis 事务具有以下特性:

  1. 原子性:Redis 事务中的所有命令要么全部执行成功,要么全部执行失败,保证了多个命令的原子性。

  2. 隔离性:在事务执行期间,其他客户端发送的命令不会被插入到事务的命令序列中,保证了事务的隔离性。

  3. 一致性:事务中的命令要么全部执行,要么全部不执行,不会导致数据不一致的情况。


9.redis的过期策略

Redis 有两种主要的过期策略:惰性删除和定期删除。

  1. 惰性删除:当访问一个带有过期时间的键时,Redis 会先检查该键是否过期,如果过期则删除键并返回空值。这种方式被称为惰性删除,因为过期检查是在键被访问时进行的。这种策略确保了被访问的键始终是有效的,但可能导致过期键在一段时间内仍然存在于内存中。

  2. 定期删除:Redis 使用定期删除策略来主动删除已经过期的键。它以一定的频率,每隔一段时间检查一部分键是否过期,如果发现过期键,则删除这些键。定期删除策略可以确保过期键及时地从内存中删除,释放空间。

Redis 使用了一种折中的策略来处理过期键的删除,即结合了惰性删除和定期删除。惰性删除保证了被访问的键始终是有效的,而定期删除则清理已过期的键,防止它们长时间占用内存。


10.redis的缓存雪崩

Redis 缓存雪崩是指在缓存中的大量键同时失效或过期,导致大量的请求直接打到后端数据库,从而引起数据库压力剧增,甚至造成数据库宕机的情况。

缓存雪崩通常发生在以下情况下:

  1. 大量缓存同时过期:当缓存中的大量键同时过期时,如果没有合理的处理机制,所有对这些键的请求都会直接访问数据库,造成数据库压力剧增。

  2. 缓存服务器故障:如果缓存服务器发生故障,无法提供服务,那么所有请求都会直接访问数据库。


11.布隆过滤器的解释?

布隆过滤器是一种空间效率高、支持快速判断元素是否存在的数据结构。它基于哈希函数和位数组实现,主要用于判断一个元素是否属于一个集合,常用于缓存、搜索引擎、垃圾邮件过滤等场景。


12.Aiohttp是什么?

Aiohttp 是一个用于编写异步网络服务器和客户端的 Python 库,基于 asyncio 实现。它提供了异步的 HTTP 客户端和服务器的功能,使得在 Python 中进行高性能的网络通信变得更加简单和高效。


13.元类是什么?

在 Python 中,类是对象,而元类则用于创建这些类。元类可以控制类的创建过程,可以定义类的属性、方法以及特殊行为。通过定义元类,我们可以在创建类的时候动态地修改类的定义。


14.__next__和__iter__的作用?

next() 函数:它用于获取迭代器中的下一个元素。每次调用 next() 函数,都会从迭代器中返回下一个元素。如果迭代器耗尽,即没有更多的元素可供获取,则会抛出 StopIteration 异常

__iter__ 是一个迭代器方法,用于返回一个迭代器对象。

当类的实例需要支持迭代操作时,我们可以在类中定义 __iter__ 方法,使该类的实例成为可迭代对象。


15.type和isinstance区别?

type() 函数用于返回对象的具体类型,不考虑继承关系。

isinstance() 函数用于检查对象是否是指定类或其子类的实例,考虑继承关系。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值