你们持久层框架用的什么?
为什么用Mybatis-plus,有什么好处?
1.逻辑删除:
- 逻辑删除允许数据恢复,因为记录并没有真正从数据库中删除。
- 如果需要恢复数据,可以将
is_deleted
字段更新为false
。
2.乐观锁插件(Optimistic Locker)
乐观锁插件用于解决并发更新时的数据一致性问题,通过版本号机制实现。
3.自动填充(Meta Object Handler)
自动填充功能用于在插入或更新数据时自动填充某些字段,如创建时间、更新时间等。
4.代码生成器(Code Generator)
代码生成器可以帮助开发者快速生成实体类、Mapper 接口、Service 接口及其实现类等代码。
B+树的结构?
-
节点类型:
- 根节点:树的顶层节点,可能包含数据或仅包含索引。
- 内部节点:包含索引信息,用于指导搜索路径,但不存储实际数据。
- 叶子节点:存储实际数据或指向数据的指针,并且叶子节点之间通过指针连接,形成一个有序链表。
-
节点结构:
- 每个节点包含多个键值对(key-value pairs)。
- 内部节点的键值对形式为
(key, child_pointer)
,其中key
是索引值,child_pointer
指向子节点。 - 叶子节点的键值对形式为
(key, data_pointer)
,其中key
是索引值,data_pointer
指向实际数据或存储实际数据。
-
节点大小:
- 每个节点的大小通常是固定的,通常为一个磁盘块的大小(例如4KB)。
- 节点的大小决定了每个节点可以存储的键值对数量,从而影响树的高度。
-
树的高度:
- B+树的高度较低,通常为3到5层,这使得查找、插入和删除操作的时间复杂度为O(log n)。
char 和varchar的区别?
最大长度:char最大长度是255,varchar的最大长度是65535
定长:char是定长的,不够255是要使用空格填充的,varchar是非定长的。
查找效率:char的查找效率更高,varchar的查找效率较低。是因为varchar是要计算内容占用的长度的,而char不会。