-
openFeign的主要作用
基于http请求,通过负载均衡获取其他服务的ip和端口执行接口
-
SpringCould中的重要组件
注册中心、配置中心、网关、熔断器
-
mysql索引
分为主键索引、二级索引……
-
B+树的优势
-
建索引考虑哪些方面
索引区分度,索引失效的问题,不建冗余的索引,考虑业务是否需要频繁新增修改而查询较少的情况下不建索引
-
虽然走了索引但是还是很慢
索引区分度低,相同数据太多
-
数据量小为什么要分成多个服务
-
微服务和单体应用如何选择
-
excel导入导出数据量比较大的话怎么考虑设计
考虑内存,做成分段上传下载
-
synchronized 和 ReentrantLock 的区别
两者的共同点:
- 都是用来协调多线程对共享对象、变量的访问
- 都是可重入锁,同一线程可以多次获得同一个锁
- 都保证了可见性和互斥性
两者的不同点:
11. ReentrantLock 显式的获得、释放锁,synchronized 隐式获得释放锁 22. ReentrantLock 可响应中断、可轮回,synchronized 是不可以响应中断的,为处理锁的 不可用性提供了更高的灵活性 33. ReentrantLock 是 API 级别的,synchronized 是 JVM 级别的 44. ReentrantLock 可以实现公平锁 55. ReentrantLock 通过 Condition 可以绑定多个条件 66. 底层实现不一样, synchronized 是同步阻塞,使用的是悲观并发策略,lock 是同步非阻塞,采用的是乐观并发策略 77. Lock 是一个接口,而 synchronized 是 Java 中的关键字,synchronized 是内置的语言 实现。 88. synchronized 在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生; 而 Lock 在发生异常时,如果没有主动通过 unLock()去释放锁,则很可能造成死锁现象, 因此使用 Lock 时需要在 finally 块中释放锁。 99. Lock 可以让等待锁的线程响应中断,而 synchronized 却不行,使用 synchronized 时, 等待的线程会一直等待下去,不能够响应中断。 1010. 通过 Lock 可以知道有没有成功获取锁,而 synchronized 却无法办到。 1111. Lock 可以提高多个线程进行读操作的效率,既就是实现读写锁等。
-
synchronized原理上是怎么实现的
-
服务发现用什么
-
redis用于哪方面
用户登录后的session信息缓存jwt的token为key,用户信息为value
-
redis的数据类型
- String
- Hash
- Set
- ZSet
- List