- 博客(50)
- 收藏
- 关注
原创 【Redis实现分布式锁】
Redis实现分布式锁 案例问题1:单机版没加锁问题2:分布式部署后,单机锁还是出现超卖现象,需要分布式锁问题3:出异常的话,可能无法释放锁,必须要在代码层面finally释放锁问题4:服务器宕机了问题5:设置key+过期时间分开了,必须要合并成一行具备原子性问题6:删除了别人的锁问题7:finally块的判断+del删除操作不是原子性的问题8:确保redisLock过期时间大于业务执行时间的问题综上:单机案例加锁关键逻辑解锁关键逻辑多机案例基于setnx的分布式锁有什么缺点?容错率公式:锁的种类单机
2022-04-23 17:15:12 548
原创 【算法题】一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
2022-03-31 21:14:09 1646
原创 设计模式——模板模式
模板模式模板方法模式基本介绍模板方法模式的原理类图常见的应用场景模板方法模式基本介绍模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行 它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单说,模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一 个算法的结构,就可以重定义该算法的某些特定步骤这种类型的设计模式属于类行为型模式。模板方法模
2022-03-15 20:12:19 74
原创 synchronized的使用与原理
synchronized的使用与原理实现原理synchronized修饰同步代码块synchronized修饰普通方法synchronized修饰静态方法实现原理JVM 是通过进入、退出 对象监视器(Monitor) 来实现对方法、同步块的同步的,而对象监视器的本质依赖于底层操作系统的 互斥锁(Mutex Lock) 实现。具体实现是在编译之后在同步方法调用前加入一个monitor.enter指令,在退出方法和异常处插入monitor.exit的指令。对于没有获取到锁的线程将会阻塞到方法入口处,直
2022-03-05 13:29:51 277
原创 Mybatis常见面试题
Mybatis 的运行流程通过Resource加载mybatis主配置文件,sqlSessionFactorybiuder构建出sqlSessionFactory对象,通过sqlSessionFactory获取sqlSession对象,获取接口的代理对象,执行增删改查方法。Mybatis的一级缓存二级缓存Mybatis的一级缓存是指Session缓存。一级缓存的作用域默认是一个SqlSession。一级缓存默认开启。也就是在同一个SqlSession中,执行相同的查询SQL,第一次会去数据库进行查
2022-03-05 13:21:12 647
原创 Redis的持久化
Redis的持久化1. RDB(Redis DataBase)RDB备份的执行流程命令save VS bgsave2. AOF(Append Only File)AOF持久化流程Redis 提供了2个不同形式的持久化方式。RDB(Redis DataBase)AOF(Append Of File)1. RDB(Redis DataBase)在指定的时间间隔内将内存中的数据集快照写入磁盘,它恢复时是将快照文件直接读到内存里RDB备份的执行流程Redis会单独创建(fork)一个子进程(写时复
2022-03-02 15:30:57 205
原创 synchronize和volatile的区别
synchronize和volatile的区别volatile只能用于修饰变量,synchronize可以用于修饰方法、代码块。随着jdk技术的发展,synchronize在执行效率上会得到较大提升,所以synchronize在项目过程中还是较为常见的;多线程访问volatile不会发生阻塞;而synchronize会发生阻塞;volatile能保证变量在私有内存和主内存间的同步,但不能保证变量的原子性;synchronize可以保证变量原子性;volatile是变量在多线程之间的
2022-02-16 22:20:32 306
原创 MySQL的存储引擎
MySQL的存储引擎常见的存储引擎有哪些?MyISAM和InnoDB的区别?常见的存储引擎有哪些?InnoDB 引擎:具备外键支持功能的事务存储引擎MyISAM 引擎:主要的非事务处理存储引擎Memory 引擎:置于内存的表Merge引擎:管理多个MyISAM表构成的表集合NDB引擎:MySQL集群专用存储引擎MyISAM和InnoDB的区别?MySQL在5.5之后,采用InnoDB引擎,5.5之前使用MyISAM做默认存储引擎...
2022-02-13 15:08:42 208
原创 【 Java 8 & 11新特性】
Java 8 新特性文章目录Java 8 新特性1.Lambda表达式1.1 语法2.函数式(Functional)接口2.1 java内置的4大核心函数式接口3.方法引用与构造器引用3.1方法引用的使用3.2构造器引用和数组引用4.强大的Stream API4.1 Stream的实例化4.2 Stream中间操作4.3 Stream终止操作5.Optional类6. 其他新特性1.Lambda表达式举例1 @Test public void test1(){ Runnable r1
2022-01-07 18:35:58 346
原创 JUC—CompletableFuture笔记
CompletableFuture笔记1. Future和Callable接口Future接口定义了操作异步任务执行一些方法,如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕等。Callable接口中定义了需要有返回的任务需要实现的方法。应用: 比如主线程让一个子线程去执行任务,子线程可能比较耗时,启动子线程开始执行任务后,主线程就去做其他事情了,过了一会才去获取子任务的执行结果。2. FutureTask本源的Future接口相关架构FutureTa
2022-01-01 02:06:56 498
原创 Java集合原理
Java集合原理ArrayList的底层操作机制源码分析Vector的底层源码\扩容机制LinkedList源码解析HashSet\HashMap的底层源码LinkedHashSet的底层机制TreeSet源码解读TreeMap源码解读
2021-12-31 18:30:30 531
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人