Q1. 联合唯一索引 | 如何从数据库层面杜绝重复数据出现?
对于 thumb 表,使用联合唯一索引
thumb
CREATE UNIQUE INDEX idx_userId_blogId ON thumb (userId, blogId);
Q2. 循环依赖 | 为什么要在 BlogServiceImpl 导入 ThumbService 上加 @Lazy
BlogServiceImpl
ThumbService
@Lazy
Q3. 锁 | 点赞接口加锁对象是什么?对用户加锁还是对帖子加锁?
Q4. 字符串对象锁 | 点赞接口的锁具体如何处理?
synchronized (("LOCK-USERID-" + loginUser.getId().toString()).intern())
"LOCK-USERID-" + loginUser.getId().toString()
intern()
Q5. 序列化 | 对于 Redis 数据的存储使用序列化是怎么样的?
key
hash filed
value
Long
Integer
String
Q6. 类型转换 | Object 向 Long 的转化优化方式
Object
Long.valueOf(object.toString())
object
((Number) object).longValue()
toString()
longValue()
JVM
Q7. 常量 | 定义常量的最佳方式?
"Do not use interfaces for constants. Interfaces are for defining types and behaviors, not for storing data." — Effective Java Item 18
"Do not use interfaces for constants. Interfaces are for defining types and behaviors, not for storing data."
— Effective Java Item 18
Interface
Class - public static final String
Q8. Redis | 数据键值对是如何设计的?
使用了 Hash 的数据类型,遵循格式 Key-Filed-Value,以下是相关解释
Key-Filed-Value
public static final String USER_THUMB_KEY_PREFIX = "thumb:"
Q9. MybatisPlus | thumb_id 的获取流程?
@TableId(type = IdType.AUTO) private Long id;
Deleting the wiki page "Home" cannot be undone. Continue?