一、MySQLhttps://blog.csdn.net/qq_41029923/article/details/1001421161. 事务特性① 四种事务特性ACID原子性、一致性、隔离性、持久性② 四种隔离级别读未提交、读已提交、可重复读、串行③ 七种传播行为保证在同一事务中PROPAGION_REQUIRED、PROPAGION_SUPPORTS、PROPAGION_MANDATORY支持当前事务如果不存在就新建一个默认、就不使用事务、抛异常保证没有在同一事务中PROPAGION_REQUIRES_NEW 如果有事务存在挂起当前事务创建一个新的事务PROPAGION_NOT_SUPPORTED 以非事务运行如果事务存在挂起当前事务PROPAGION_NEVER 以非事务运行如果有事务存在抛出异常PROPAGION_NESTED 如果当前事务存在则嵌套事务执行。2. B树 B-树B树特点①所有数据都保存在叶子节点且叶子结点本身依关键字的大小自小而大顺序链接非叶子结点作为叶子结点的索引搜索总是到叶子结点结束不可能在非叶子结点命中 ②有n棵子树的非叶子结点中含有n个关键字(即非叶子结点的子树指针与关键字个数相同)这些关键字不保存数据只用来索引所有数据都保存在叶子节点 ③同一个数字会在不同节点中重复出现根节点的最大元素就是b树的最大元素B-树B树特点① 关键字分布在整棵树中② 任何一个关键字出现且只出现在一个节点中③ 搜索可能在非叶子节点结束3. 聚集索引 非聚集索引 回表聚集索引 因为数据行与索引键“聚在一起”数据就是索引的一部分。聚簇索引的特点是数据与索引一体化存储即数据行直接存储在索引的叶子节点中且数据按照主键的顺序进行物理存储 。这使得聚簇索引在查询时具有极高的效率尤其是对于主键查询和范围查询。一张表只能有一个聚簇索引因为数据的物理存储顺序只能有一种。非聚簇索引 也称为二级索引其索引存储的是主键值而不是实际的数据行 。当使用非聚簇索引进行查询时首先会根据索引找到对应的主键值然后再通过主键值在聚簇索引中查找实际的数据行整行这个过程称为回表查询 。非聚簇索引支持多列组合索引适用于多个字段联合查询的场景。当查询字段完全被索引覆盖时可以避免回表从而显著提升查询性能如果查询需要的列 都在二级索引里或索引里包含它们那就不需要回表这叫 覆盖索引。回表当使用非聚簇索引进行查询时首先会根据索引找到对应的主键值然后再通过主键值在聚簇索引中查找实际的数据行整行这个过程称为回表查询覆盖索引对于非聚簇索引如果查询的列 都被包含在索引列中即查询字段完全被索引覆盖时称为覆盖索引可以避免回表从而显著提升查询性能。4. 图片能否存储用什么数据类型详细参考https://editor.csdn.net/md/?articleId100142116可以存储但不推荐。最佳实践图片上传 → 保存到 OSS / 文件服务器 → 把图片 URL 字符串存入 VARCHAR 字段一般业务规范图片、文件优先存对象存储OSS、MinIO数据库只保存文件 URL 地址二、Redishttps://editor.csdn.net/md/?articleId1001426441. 数据结构① 五种基本数据类型String字符串、List列表、Hash散列、Set集合、ZsetSorted Set有序集合② 还有几种高级结构Bitmap 位图、HyperLogLog 基数统计、Stream 消息流另外还有 Geo-Geospatial地理位置用于经纬度计算。2. 缓存穿透 缓存击穿 缓存雪崩① 缓存穿透是 查不到解决1.设置布隆过滤器、2.缓存空对象② 缓存击穿是查的太多、量太大一个空档期将所有的东西全部砸在了服务器上解决1.设置热点数据永不过期、2.加互斥锁③ 缓存雪崩是指在某一个时间段缓存集中过期失效或者redis崩了所有的东西全部砸在了服务器上。解决1.Redis高可用、2.限流降级、3.数据预热3. Redis 淘汰策略volatile-lru、volatile-ttl、volatile-random从已设置过期时间的数据集中挑选最近最少使用的数据、即将过期的数据、随机挑选数据淘汰allkeys-Iru、allkeys-random从数据集中挑选最近最少使用的数据、随机挑选数据淘汰no-enviction禁止驱逐默认策略不淘汰如果内存已满添加数据是报错三、 Python中线程、进程、协程Java中进程和线程https://blog.csdn.net/qq_41029923/article/details/998617671. 进程操作系统资源分配的最小单位拥有独立内存进程之间相互隔离2. 线程CPU 调度的最小单位属于进程共享进程资源。3. 协程用户态的 “微线程”用户程序代码控制由程序手动调度 单线程内资源共享不经过操作系统内核开销极小。总结进程是操作系统资源分配的最小单位内存相互独立可以绕过 GIL 实现多核并行线程是 CPU 调度单位共享进程资源受 GIL 限制仅适用于 IO 密集型任务协程是用户态微线程由程序自行调度切换开销最小适合高并发网络 IO 场景。一个程序下至少有一个进程一个进程下至少有一个线程一个进程下也可以有多个线程来增加程序的执行速度。GIL 是 Python 全局解释器锁保证同一时刻只有一个线程执行 CPU 代码所以多线程无法利用多核做 CPU 并行运算。