981 1 分钟 wspstart

# 操作缓存和数据库的时候有三个问题需要考虑: # 1、删除缓存还是更新缓存? ① 更新缓存的话,每次更新数据库都需要更新缓存,无效写操作操作。② 删除缓存的话,更新数据库时让缓存失效,查询时再更新缓存。结合两者的优缺点 **,最优者为②**,减少无效的写操作。 # 2、 如何保证缓存与数据库的操作的同时成功和失败? ① 单体项目,将缓存与数据库操作放在一个事务中② 分布式系统,利用 TCC 等分布式事务方案 # 3、先操作缓存还是先操作数据库? ① 先删除缓存,再操作数据库②...
1.1k 1 分钟 wspstart

# 1、缓存穿透 # 1、定义 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会被打到数据库上。 # 2、产生原因 自身业务代码问题 恶意攻击,爬虫造成空命中 # 3、常见的两种解决方案 # 缓存空对象 优点:实现简单,维护方便缺点:① 额外的内存消耗② 可能造成短期的不一致 # 布隆过滤器 优点:内存占用较少,没有多余 Key 缺点:① 实现复杂② 存在误判可能 补充:布隆过滤器,当再布隆过滤器中获取数据说是不存在时,那一定是不存在的,但是如果说是存在的话,数据实际上说不定是不存在的。所以使用布隆过滤器也可能会出现缓存穿透问题。 # 增强 id...
678 1 分钟 wspstart

# 1、json 序列化时忽略 NULL? yaml 文件配置: spring: jackson: default-property-inclusion: non_null # JSON 处理时忽略非空字段# 2、 为什么使用 Session 的方式登录不需要返回登录凭证? 因为使用 session 的话,浏览器第一次访问服务器,服务器会生成一个 key 为 JSESSIONID 的 cookie 的信息并会创建一个 SESSIONID 为 JSESSIONID 的 session。这样下次浏览器请求就会携带 cookie,并携带 JSESSIONID 信息,会找到与之匹配的...