摘要: 数据库锁 1、行级锁 行级锁是一种排他锁,防止其他事务修改此行;在使用以下语句时,Oracle 会自动应用行级锁: 1. INSERT、UPDATE、DELETE、SELECT … FOR UPDATE [OF columns] [WAIT n | NOWAIT]; 2. SELECT … FOR 阅读全文
posted @ 2020-11-13 15:58 springcode 阅读(162) 评论(0) 推荐(0)
摘要: 锁的细分、重入锁、偏向锁等 一、重入锁 也叫递归锁,指的是同一线程外层函数获得锁之后,内层递归函数仍然有获取该锁的代码,但不受影响,lock和synchronized都是可重入锁。 public class Test implements Runnable{ public synchronized 阅读全文
posted @ 2020-11-13 15:55 springcode 阅读(588) 评论(0) 推荐(0)
摘要: 锁对比 一、公平锁与非公平锁 公平锁指的是锁的分配机制是公平的,通常是先到先得,RenntrantLock可以在构造函数中定义公平和非公平 非公平锁,随机、就近原则分配锁的机制,线程过来后会先自旋,尝试直接获取到锁,获取不到再去排队。非公平锁的效率要更高。 二、ReentrantLock和Synch 阅读全文
posted @ 2020-11-13 13:54 springcode 阅读(113) 评论(0) 推荐(0)
摘要: JVM类加载机制 一、概述 JVM类加载机制分为五个部分:加载、验证、准备、解析、初始化。 1.1、加载 加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的对象,作为方法区这个类的各种数据的入口。注意这里不一定非要从一个Class文件获取,这里既可以从ZIP包中读取,也可以在运行时 阅读全文
posted @ 2020-11-12 23:59 springcode 阅读(133) 评论(0) 推荐(0)
摘要: 锁 一、悲观锁和乐观锁 乐观锁:每次去拿数据时都默认不会有其他线程修改数据,所以每次都不会加锁,但在更新数据的时候会比对一下数据有没有被修改,如果被修改,重新拿取数据,没有则修改数据,乐观锁一般使用CAS机制实现。适用于读多的场景 悲观锁:每次拿取数据都认为会有线程修改我的数据,所以每次都会上锁,阻 阅读全文
posted @ 2020-11-12 18:29 springcode 阅读(136) 评论(0) 推荐(0)
摘要: 多线程细节讲解 一、终止线程的四种方式 1、正常运行结束 2、使用退出标志退出线程 一般run方法执行完,线程应该正常结束,但是常常有些线程是伺服线程(即只有获得某种信号,才会停止的线程)最常见的就是在while循环当中的线程,设置一个boolean类型的标志,来退出循环。 之所以使用volatil 阅读全文
posted @ 2020-11-12 16:32 springcode 阅读(230) 评论(0) 推荐(0)
摘要: 多线程 一、实现方式 Thread、runable、callable、线程池 四大线程池:newCachedThreadPool、newFixedThreadPool、newScheduledThreadPool、newSingleThreadExecutor. newCachedThreadPoo 阅读全文
posted @ 2020-11-12 15:52 springcode 阅读(94) 评论(0) 推荐(0)
摘要: 集合整理 一、概述 集合顶层分为 Collection和Map 其中Collection分为list和set list有Arraylist、vector、linkedlist ArrayList存取有序,可重复,底层是用数组,查询速度快,增删速度慢,线程不安全,扩容倍数是1.5倍+1 vector存 阅读全文
posted @ 2020-11-11 21:30 springcode 阅读(126) 评论(0) 推荐(0)
摘要: 设计模式 转载:http://c.biancheng.net/view/1333.html 一、概念 软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以 阅读全文
posted @ 2020-11-10 15:53 springcode 阅读(112) 评论(0) 推荐(0)
摘要: Redis缓存机制的一致性实现 一、概述 Redis缓存机制的一致性就是说数据库的数据要跟Redis中的数据保持一致。 二、实现方式 方式一:先更新数据库,再更新缓存场景 方式二:先更新缓存,再更新数据库场景 方式三:先删除缓存,再更新数据库的场景 方式四:先更新数据库,再删除缓存场景 方式五:最佳 阅读全文
posted @ 2020-11-09 20:16 springcode 阅读(1132) 评论(0) 推荐(0)