- 博客(3)
- 收藏
- 关注
原创 Redis 内容
先来看一个常见的缓存使用方式:读请求来了,先查下缓存,缓存有值命中,就直接返回;缓存没命中,就去查数据库,然后把数据库的值更新到缓存,再返回。读取缓存缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。通俗点说,读请求访问时,缓存和数据库都没有某个值,这样就会导致每次对这个值的查询请求都会穿透到数据库,这就是缓存穿透。业务不合理的设计。
2024-03-10 10:37:54
1706
1
原创 常见算法面试题
所以状态dp[i][j]一定等于dp[i-1][j]或者dp[i-1][j-1]的最小值+triangle[i][j]所以状态dp[i][j]一定等于dp[i+1][j]或者dp[i+1][j+1]的最小值+triangle[i][j]triangle[i][j]一定会经过triangle[i-1][j]或者triangle[i-1][j-1],在未排序的数组中找到第 k 个最大的元素。3. 转换方程:dp[i][j]=min(dp[i-1][j],dp[i-1][j-1])+triangle[i][j]
2024-03-09 17:26:56
1408
原创 JVM - 学习资料
简图详细图英文版中文版什么时候需要自定义类加载器?在Java的日常应用程序开发中,类的加载几乎是由上述3种类加载器相互配合执行的,在必要时,我们还可以自定义类加载器,来定制类的加载方式。那为什么还需要自定义类加载器?隔离加载类(比如说我假设现在Spring框架,和RocketMQ有包名路径完全一样的类,类名也一样,这个时候类就冲突了。不过一般的主流框架和中间件都会自定义类加载器,实现不同的框架,中间价之间是隔离的)修改类加载的方式扩展加载源(还可以考虑从数据库中加载类,路由器等等不同的地方)
2024-03-09 16:55:53
888
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人