
java面试
java面试知识点,偏理论
qq_36594703
这个作者很懒,什么都没留下…
展开
-
Mybatis的一级缓存和二级缓存详解
BS架构里面,用户的所有操作都是对数据库的增删改查,其中查询的操作是最多的,但如果用户想要某个数据时每次都去数据库查询,这无疑会增加数据库的压力,而且获取时间效率也会降低,所以为了解决这些问题,缓存应用而生,使用了缓存之后,服务器只需要查询一次数据库,然后将数据保存到服务器主机的内存中,以后读取时就直接取内存中的数据,而不需要每次都查数据库,这种方案除了降低数据库压力之外,还提高了响应速度。打印结果:(2次查询,但是日志显示只查询了一次数据库, 第二次是从缓存中获取的数据,至此,二级缓存已开启!转载 2024-02-28 16:59:45 · 195 阅读 · 0 评论 -
redis哨兵模式原理
为了实现redis集群的高可用,redis经历了好几次迭代,从最开始的主从模式,到哨兵模式,再到现在的集群模式,可以说架构的优化越来越好,那本篇文章就介绍一下redis的哨兵模式,不过我司其实使用的是cluster模式,这里就当学习一下。本文介绍了什么是哨兵模式,以及哨兵模式中如何选择领头sentinel来做故障转移和故障转移的过程,之后又介绍了哨兵模式的一些问题,一般来说吧,如果redis中的数据量不是很大都可以使用这种模式,比如就几个G的数据,使用哨兵模式没什么问题。原创 2023-06-02 10:53:18 · 886 阅读 · 0 评论 -
SpringBoot启动自动装配过程
springboot启动自动装配原创 2022-09-06 14:11:29 · 395 阅读 · 0 评论 -
查询数据库某个字段重复出现的数据
select card_id,count(*) as count from mer_verify_card group by card_id having count>1;SELECT*FROMmer_verify_cardWHERE card_id IN(SELECTcard_idFROMmer_verify_cardGROUP BY card_idHAVING COUNT(1) > 1)原创 2022-03-15 13:53:24 · 2719 阅读 · 0 评论 -
Redis 分布式锁过期了,但业务还没有执行完,怎么办
面试官:你们系统是怎么实现分布式锁的?我:我们使用了redis的分布式锁。具体做法是后端接收到请求后加入一个分布式锁,如果加锁成功,就执行业务,如果加锁失败就等待锁或者拒绝请求。业务执行完成后释放锁。面试官:能说一下具体使用的命令吗?我:我们使用的是SETNX命令,具体如下:SETNX KEY_NAME VALUE设置成功返回1,设置失败返回0。如下图,客户端1加锁成功,客户端2获取锁失败:面试官:这样设置会不会有问题呢?如果加锁成功的客户端挂了怎么办?我:比如上图中的客户端1挂了,这个锁就不能原创 2022-03-15 13:44:44 · 6946 阅读 · 4 评论 -
Spring循环依赖
怎么解决 Spring bean 的循环依赖?通过三级缓存提前拿到未初始化的对象。第一级缓存:用来保存实例化、初始化都完成的对象第二级缓存:用来保存实例化完成,但未初始化完成的对象第三级缓存:用来保存一个对象工厂,提供一个匿名内部类,用于创建二级缓存中的对象假设一个简单的循环依赖场景,A、B互相依赖a.创建A对象,实例化的时候把A对象工厂放入三级缓存b.A注入属性时,发现依赖B,转而去实例化Bc.同样创建对象B,注入属性时发现依赖A,一次从一级到三级缓存查询A,从三级缓存通过原创 2021-12-20 13:41:31 · 525 阅读 · 0 评论 -
重试神器Retryer
一、使用组件首先在项目中引入maven依赖: <dependency> <groupId>com.github.rholder</groupId> <artifactId>guava-retrying</artifactId> <version>2.0.0</version> </dependency>下面通过一个例子,来看如何使用该组件:// .原创 2021-08-31 16:20:38 · 448 阅读 · 0 评论 -
SimpleDateFormat类线程不安全及解决方案
public class SimpleDateFormatTest01 { private static final int EXECUTE_COUNT = 1000; private static final int THREAD_COUNT = 20;// private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");// private static Lock.原创 2021-06-16 14:42:54 · 337 阅读 · 0 评论 -
AQS源码详解
https://blog.youkuaiyun.com/TZ845195485/article/details/109210263转载 2020-12-20 17:03:32 · 373 阅读 · 0 评论 -
3中让线程等待和唤醒的方法
3种让线程等待和唤醒的方法1.使用Object中的wait()方法让线程等待,使用Object中的notify方法唤醒线程2.使用JUC包中Condition的await()方法让线程等待,使用signal()方法唤醒线程3.LockSupport类可以阻塞当前线程以及唤醒指定被阻塞的线程Object类中wait( )和notify( )实现线程的等待唤醒1.wait和notify方法必须要在同步块或同步方法里且成对出现使用。 wait和notify方法两个都去掉同步代码块后看运行效果出现异常情况原创 2020-12-20 17:01:50 · 1267 阅读 · 0 评论 -
优秀平滑轮询算法
public class WeightRoundRobin { private static Map<String,Weight> weightMap = new HashMap<>(); public static String getServer(){ int totalWeight = 0; for(Integer weight:WEIGHT_LIST.values()){ totalWei...原创 2020-12-06 17:22:05 · 229 阅读 · 0 评论 -
Spring Bean的生命周期
1.Bean的建立,由BeanFactory读取Bean定义文件,并生成各个实例,BeanDefinition2.Setter注入,执行Bean的属性依赖注入3.BeanNameAware的setBeanName(),如果实现该接口,则执行其setBeanName方法4.BeanFactoryAware的setBeanFactory()如果实现该接口,则执行setBeanFactory方法5.BeanPostProcessor的processBeforeInitiallizaiton()如果原创 2020-11-21 16:40:08 · 175 阅读 · 0 评论 -
手写HashMap
public class MyHashMap<K,V> { private Entry[] table; private static Integer CAPACITY = 8; private int size = 0; public MyHashMap(){ this.table = new Entry[CAPACITY]; } public int size(){ return size; } .原创 2020-11-21 16:29:49 · 176 阅读 · 0 评论 -
java面试一
1.数据库的三范式?①第一范式:数据库表的每个字段都是不可分割的②第二范式:数据库表的非主属性完全依赖于主键③第三范式:不存在非主属性对关键字的传递函数依赖关系。2.mysql表中有多少触发器?6个,before insert,after insert,before update,after update,before delete, after delete3.mysql有关权限的表都有哪几个?mysql服务器通过权限表来控制用户对数据库的访问,权限表存在mysql数据库里,由mysq原创 2020-07-05 17:36:52 · 164 阅读 · 0 评论 -
redis的bitmap,hyperloglog,geo数据结构
1.getbit key offset:获取指定key对应偏移位上的Bit值2.setbit key offset value:设置指定key对应偏移位上的bit值,value只能为0或13.Bitop op(and,or,not,xor) destkey key1[key2...]对指定key按位进行交,并,非,异或操作,并将结果保存到destkey中4.bitcount key [...原创 2020-04-19 20:03:18 · 504 阅读 · 0 评论 -
redis内存淘汰策略之定期删除原理
原创 2020-04-18 20:55:25 · 1695 阅读 · 2 评论 -
redis持久化的AOF重写机制
1.手动通过命令在后台开始重写功能:bgrewriteaof2.AOF自动重写方式自动重写触发条件设置:①auto-aof-rewrite-min-size size②auto-aof-rewrite-percentage percent自动重写触发对比参数(运行指令Info Persistence获取)①aof_current_size②aof_base_size自动重写触发条件...原创 2020-04-18 20:52:04 · 873 阅读 · 0 评论 -
redis知识脑图
原创 2020-04-12 15:48:02 · 272 阅读 · 0 评论 -
redis五种数据结构应用场景
Hash应用场景1.以电商购物车为例:以用户id为key,商品id为field,商品数量为value添加商品-》hset cart:1001 10088 1增加1088商品数量-》hincrby cart:1001 10088 1获取1088商品数量-》hget cart:1001 10088获取购物车的商品总数-》hlen cart:1001删除1088商品-》hdel ...原创 2020-04-11 20:07:12 · 719 阅读 · 1 评论 -
mybatis相关面试题
1.mybatis加载mappers文件有几种方式?最先加载的是那种方式?(package)标题原创 2020-04-04 21:10:01 · 224 阅读 · 0 评论