日常学习
文章平均质量分 76
枫辰215
这个作者很懒,什么都没留下…
展开
-
redis性能的排查
关于 redis 性能的排查 我首先能想到的方面是 以下几个 (可以类比数据库sql变慢的原因): redis 在大部分情况下都会使用单线程来完成指令操作,那么在一些命令中会导致变慢,他会阻塞其他指令 比如key * (改用 SCAN) redis 作为一个内存数据库,那么如果数据都在内存中可以获得,那么速度是很快的,但是如果涉及到要到磁盘去进行读取 速度就很很慢。 查看慢日志 查看慢的那些命令 1. 进行排查,是否redis是否真的慢了 在服务内部集成链路追踪,查看对应方法在调用redis 服务时是否原创 2021-06-23 20:04:51 · 256 阅读 · 0 评论 -
二分查找详解
历程 一开始业务量小的数据,单体应用直接去操纵数据库进行读写的操作,就可以完成操作,相对简单。 在后期,业务量的增长,导致数据库查询耗时较大,在这时候使用redis等分布式缓存,来提高效率。 随着数据量不断增大,导致分布式缓存压力过大,所以在分布式缓存中,可以在添加一层本地缓存来减少分布式缓存的压力。 数据量还在不断增大,为了避免继续出现问题,需要使用CPU缓存来继续提高应用的缓存能力 不同阶段出现的问题 使用分布式缓存 使用分布式缓存确实提高了应用的能力,但是架构变得复杂了,也会带来喝多问题 数据一致原创 2021-06-10 17:07:35 · 114 阅读 · 0 评论 -
回溯算法概览
在leetCode 中涉及到回溯的题目中 有以下几个基本题目, 39.组合总和 40. 组合总和 II 46. 全排列 47. 全排列 II 77.组合 78. 子集 90. 子集 II 通过这些题目,我们可以容易的整理出回溯的基本模版 46.全排列 问题是这样的 :给定一个 没有重复数字的序列,返回其所有可能的全排列。 整体的回溯树如下图所示: 当前在红色节点上,我们选择的列表有1,3。由于2在后面,2将无法选择。那么就便变成了树的遍历 代码如下: class Solution { List&l原创 2021-04-30 14:28:59 · 121 阅读 · 0 评论 -
Spring事务源码阅读(一)
Spring事务 注解一:@EnableTransactionManagement @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(TransactionManagementConfigurationSelector.class) public @interface EnableTransactionManagement { /** 是否使用cglib代理 默认是jdk代理 这个参数 也会原创 2021-04-18 15:00:45 · 89 阅读 · 0 评论 -
AOP结合redis实现自动存取
Redis自定义注解@RedisSimpleCache 注解的作用 在使用过程中,不需要进行Redis中是否有数据的判断,就如同正常的查询数据库一般,当内容在数据库中不存在的情况下,会执行代码,在得到结果之后,再将数据存储中Redis中 注解的实现 使用Aop的技术,在方法中执行前查询数据,发现数据没有存在于数据库中,执行方法后,将数据存储中Redis的 具体的实现步骤 AOP拦截注解过的方法后,先去校验中key是否存在, 存在的话,执行后续方法,判断方法返回的类型,来确定序列化以及反序列化的规则 将Re原创 2021-03-30 22:48:46 · 186 阅读 · 0 评论 -
redis Sentinel 部署以及spring boot集成
Sentinel sentinel(哨兵) 是一种redis的解决方案,可以由多个Sentinel实例组成的Sentinel系统可以监视多个主服务器,以及这些主服务器之下的从服务器,同时如果主服务器下线之后,就会通过推举将从服务器升级为主服务器。 这里不推荐在一个机器上使用docker来搭建一个redis Sentinel系统,只要是考虑到使用docker之后,之后集成到spring boot之后,sentinel得到了一个内网地址,spring boot无法连接 redis 主从 修改主配置文件 po原创 2021-03-22 08:05:54 · 849 阅读 · 0 评论 -
跳表
结论 跳表是一个二维的链表,通过牺牲一部分空间来换取比链表更快的速度。 从链表开始 链表在查找数据的时候,我们需要从头往后进行遍历,时间复杂度为O(n),如果我们为了提高链表在查找时候的效率引入了跳表的结构,就是构建了一个二维的链表。 我们通过将提取一条有序的链表上的若干个节点,在其之上构建出了一层新的链表,通过先检索上层的链表来一步步的缩小范围,直到最后确定位置。 跳表的遍历 拿上图举例, 假设我们需要找到数据 8,那么遍历的步骤如下 从L2的第一个节点出发,找到该条链表中小于等于数据8的最大值,也就原创 2021-03-10 14:22:42 · 523 阅读 · 0 评论