03 2020 档案
摘要:面试题redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 常见的有两个问题:• 往 redis 写入的数据怎么没了?可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了。我的天,同学,你问这个问题就说明 redis 你就没用对啊
阅读全文
摘要:springboot + redis + 注解 + 拦截器 实现接口幂等性校验 一、概念 幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次比如: 订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多次回调, 必须处理重复
阅读全文
摘要:Redis3.0以后的版本虽然有了集群功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,今天就来带大家看看redis高可用集群如何做水平扩展,原始集群(见下图)由6个节点组成,6个节点分布在三台机器上,采用三主三从的模式 1、启动集群 # 启动整个集群 /usr/lo
阅读全文
摘要:作者:图灵-诸葛老师 1、Redis集群方案比较 l 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,
阅读全文
摘要:Redis 基础数据结构 Redis 有 5 种基础数据结构,分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)。 string (字符串) 字符串 string 是 Redis 最简单的数据结构。Redis 所有的数据结构都是以唯
阅读全文
摘要:什么场景下用表锁 InnoDB默认采用行锁,在未使用索引字段查询时升级为表锁。MySQL这样设计并不是给你挖坑。它有自己的设计目的。即便你在条件中使用了索引字段,MySQL会根据自身的执行计划,考虑是否使用索引(所以explain命令中会有possible_key 和 key)。如果MySQL认为全
阅读全文
摘要:一、MySQL索引底层的实现 索引是帮助MySQL高效获取数据的排好序的数据结构; 上图中有一张表,表名为 t ,表中有7条数据;使用 select * from t where t.clo2 = 89 查询; 1、若表中没有创建索引,则会全表扫描,一条一条的遍历查询,需要遍历 6 次,查询一行数据
阅读全文
摘要:创建 test 测试表 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c1` varchar(10) DEFAULT NULL, `c2` varchar(10) DEFAULT NULL, `c3` varchar(10)
阅读全文
摘要:使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈; 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL; 注意:如果 from 中包含子查询,仍会执行该子查询,将结果放
阅读全文
摘要:一、什么是回表查询? 这先要从InnoDB的索引实现说起,InnoDB有两大类索引: 聚集索引(clustered index) 普通索引(secondary index) InnoDB聚集索引和普通索引有什么差异? InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个
阅读全文
摘要:结论(以innodb为例) a、非聚簇索引存储了对主键的引用,如果select字段不在非聚簇索引内,就需要跳到主键索引(上图中从右边的索引树跳到左边的索引树),再获取select字段值 b、如果非聚簇索引值重复率高,那么查询时就会大量出现上图中从右边跳到左边的情况,导致整个流程很慢 c、如果wher
阅读全文
摘要:说一下Spring的事务传播行为spring事务的传播行为说的是,当多个事务同时存在的时候,spring如何处理这些事务的行为。 ① PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。 ② PROPAGATION_SU
阅读全文
摘要:摘抄自:https://zhuanlan.zhihu.com/p/81195864 以下单线程仅指Redis负责存取这块的线程只有一个,而非Redis中只有一个进程) 我先给个我的结论,单线程的Redis在瓶颈是cpu的io时(这不是大多数应用的实际应用场景),确实速度会比多线程慢。但是,我们实际应
阅读全文
摘要:通知、增强处理(Advice) 通知、增强处理(Advice) 就是你想要的功能,也就是上说的安全、事物、日子等。你给先定义好,然后再想用的地方用一下。包含Aspect的一段处理代码 连接点(JoinPoint) 连接点(JoinPoint) 这个就更好解释了,就是spring允许你是通知(Advi
阅读全文
摘要:摘抄自:https://www.cnblogs.com/gocode/p/analysis-source-code-of-ConcurrentHashMap.html 1.引子 并发编程中使用HashMap可能导致程序死循环。因为多线程会put方法添加键值对时将导致HashMap的Entry链表形成
阅读全文
摘要:static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; return (n < 0) ? 1 :
阅读全文
摘要:2019年JVM面试都问了什么?快看看这22道面试题!(附答案解析) 一. Java 类加载过程? Java 类加载需要经历一下 7 个过程: 1. 加载 加载是类加载的第一个过程,在这个阶段,将完成一下三件事情: • 通过一个类的全限定名获取该类的二进制流。 • 将该二进制流中的静态存储结构转化为
阅读全文
摘要:通过注解的方式来进行Spring4 MVC开发时,我们都会在配置文件中加入<mvc:annotation-driven/>标签,这个配置会自动注册了一个 RequestMappingHandlerMapping、一个RequestMappingHandlerAdapter、以及一个Exception
阅读全文
摘要:Worker(Runnable firstTask) { setState(-1); // inhibit interrupts until runWorker this.firstTask = firstTask; this.thread = getThreadFactory().newThrea
阅读全文
摘要:内部类什么是内部类?在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类。内部类本身就是类的一个属性,与其他属性定义方式一致。 内部类的分类有哪些内部类可以分为四种:成员内部类、局部内部类、匿名内部类和静态内部类。 静态内部类定义在类内部的静态类,就是静态内部类。 public c
阅读全文
摘要:switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。从 Java5 开始,Java 中引入了枚举类型,expr 也可以是 enum 类型,从
阅读全文
摘要:https://blog.csdn.net/ThinkWon/article/details/104588551
阅读全文
摘要:为什么要讲容量设置为2的N次放 1 h&(length-1)=h%length length必须为2的N次方 2 位运算符耗时:2640ms 取模运算:25157 (取模运算太耗费时间) 3 数组扩容,大量rehash(取模)
阅读全文
摘要:ArrayList : 默认大小: private static final int DEFAULT_CAPACITY = 10; 扩容后数量:int newCapacity = oldCapacity + (oldCapacity >> 1); 加上原来的一半HashMap:默认大小:static
阅读全文