GaryLee's Blog
并发 2023.09.10
synchronized的锁升级过程是怎样的?
一、synchronized锁变化历程 在JDK 1.6及之前的版本中,synchronized锁是通过对象内部的一个叫做监视器锁monitor(也称对象锁)来实现的。当一个线程请求对象锁时,如果该对象没有被锁住,线程就会获取锁并继续执行。
2023-09-10
并发 2023.09.10
synchronized和ReentrantLock有什么区别?
一、synchronized和ReentrantLock有什么区别?synchronized和ReentrantLock的区别有以下几点: 底层实现:synchronized是Java关键字,ReentrantLock是Java API
2023-09-10
场景题 2023.09.10
如何提升接口的性能?
一、如何发现接口的性能问题?可以通过压测结合日志的方式去分析接口的瓶颈点,然后去针对性优化。 二、接口性能优化方案 数据库优化:《如何排查慢SQL问题?》、《如何进行SQL调优?》 引入缓存中间件:对于查询结果一样的请求,为了减少数据库压力
2023-09-10
数据结构 2023.09.10
什么是跳表?
一、什么是跳表?跳表其实就是多层链表,用来解决单层链表复杂度较高的问题。 跳表的特点: 多层链表组成 每一层链表都是有序的 最后一层链表包含所有数据 第二层链表开始包含前面层所有数据 … 二、跳表操作1、插入跳表插入逻辑跟链表一样的是要
2023-09-10
Redis 2023.09.10
Redis中的Zset是怎么实现的?
一、什么是Zset?Zset(也叫Sorted Set)是Redis中的一种数据结构,支持传member和score两个字段,同时支持按照score排序。 常见命令: 添加成员:zadd <key> <score>
2023-09-10
Mybatis 2023.09.09
Mybatis中有哪些占位符?区别是什么?
一、Mybatis中有哪些占位符?Mybatis有两个占位符,分别是#{}和${} 二、Mybatis中#{}和${}有什么区别?-- #{} select id from #{table} where id = #{id} -- ${}
2023-09-09
并发 2023.09.08
ThreadLocal是什么?实现原理呢?
一、ThreadLocal是什么?ThreadLocal是java.lang包下的一个类,用来解决高并发下线程安全的问题,具体是通过为每一个线程创建一份共享变量的副本来保证各个线程之间的变量的访问和修改互不影响。 比如一次用户的页面请求操作
2023-09-08
Spring 2023.09.08
Spring中Bean的作用域有哪些?
一、Spring中Bean的作用域Spring中支持以下五种Bean的作用域: singleton(默认):单例,也就是Spring容器中只会有一个Bean实例 prototype:每次获取都会创建一个新的Bean实例 request:每
2023-09-08
Kafka 2023.09.06
Kafka如何解决消息积压问题?
一、Kafka如何解决消息积压问题?首先分析一下消息积压问题的原因,如果不是系统BUG导致的,那就需要优化消费端的逻辑,来提高消费速率。 如果是系统BUG导致的,那么需要先修复系统BUG,然后再做临时扩容来消费大量的积压消息,具体步骤如下:
2023-09-06
JVM 2023.09.06
JVM运行时数据区域是怎样的?
一、JVM运行时数据区域是怎样的?JVM运行时数据区域组成有以下几项: 堆:线程共享,用于存放对象实例,同时还用于垃圾回收 虚拟机栈:线程私有,用于存放局部变量(每次方法调用都会创建一个栈帧,用于存放局部变量表、操作数栈、动态链接、返回地
2023-09-06
Spring 2023.09.06
Spring事务
一、什么是事务?参考《MySQL事务》 二、Spring支持哪些事务管理类型?Spring支持两种类型的事务管理: 编程式事务管理:用户需要通过编程的方式手动管理事务的开启、提交、回滚等操作(比较灵活,但是比较难维护) 声明式事务管理:用
2023-09-06
Redis 2023.09.05
Redis的持久化机制是怎样的?
一、Redis提供了哪些持久化机制?Redis提供了两种持久化的机制,分别是RDB和AOF(在Redis 4.0之后采用混合方式)。 二、RDB和AOF有什么区别?1、RDBRDB是将Redis内存中的数据定期保存到磁盘中,防止数据在Red
2023-09-05
8 / 16