- 博客(9)
- 收藏
- 关注
原创 MyBatis 与 Spring 整合
第一步,就是要准备项目的依赖 jar 包:MyBatis 的包(MyBatis )Spring 的 jar 包(Spring )MyBatis 与 Spring 的整合 jar 包(mybatis-spring )mysql-connector-java-5.1.21.jarjunit-4.12.jar第二步,编写 Spring 的配置文件:加载数据库连接文件 “db.properties” 中的数据,建立数据源配置 sqlSessionFactory 会话工厂对象<?xml v
2021-02-24 20:22:45
84
原创 MyISAM 引擎和Innodb 引擎的底层实现
1.Innodb 引擎的底层实现(聚集索引方式)InnoDB 是聚集索引方式,因此数据和索引都存储在同一个文件里。首先 InnoDB 会根据主键 ID 作为 KEY 建立索引 B+树,如左下图所示,而 B+树的叶子节点存储的是主键 ID 对应的数据,比如在执行 select * from user_info where id=15 这个语句时,InnoDB 就会查询这颗主键 ID 索引 B+树,找到对应的 user_name=‘Bob’。这是建表的时候 InnoDB 就会自动建立好主键 ID 索引树,这
2020-12-05 11:39:08
671
原创 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore的区别用法
一.CountDownLatch用法CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch类只提供了一个构造器:public CountDownLatch(int count) { }; //参数count为计数值这3个方法是CountDownLatch类中最重要的方法:public vo
2020-11-28 11:29:07
116
原创 Concurrenthashmap的实现原理分析
我们都知道HashTable是线程安全的类,因为使用了Synchronized来锁整张Hash表来实现线程安全,让线程独占;ConcurrentHashMap的锁分离技术就是用多个锁来控制对Hash表的不同部分进行修改,因为我可能只需要对一小块部分进行操作,而如果锁整张表开销太大了,其内部实现就是用Semgent来控制的,每个Semgent都是一个小的HashTable,他们有自己的锁;ConcurrentHashMap就是在HashMap的基础上多了一个数组,数组的每个元素就是Segment;Segm
2020-11-27 16:08:40
71
原创 javaCopyOnWriterArrayList分析
CopyOnWriterArrayList的类图属性方法CopyOnWriterArrayList<E>lock:ReentrantLockarray:Object[]add():voidset(): Esize: intisEmpty():booleanE remove()iterator(): iterator ReentranLock独占锁来保证只有一个线程对array就行修改,只有一个线程可以获取CopyOnWriteArrayList的无参构造函数,创建了一个大
2020-11-25 21:14:37
221
原创 ReentranLock的原理
ReentranLock是Java并发包中提供的一个可重入的锁,RenentranLock和synchronized都是类似的。同样具有可重性,ReebtranLock增加了一些扩展功能它可以实现公平锁,1.可重入性/公平锁/非公平锁可重入性就是可以支持一个线程对锁的重复获取,原生的synchronized就具有可重入性,一个用synchronized修饰的递归方法,当线程在执行期间,它是可以反复获取到锁的,而不会出现自己把自己锁死的情况。ReentrantLock也是如此,在调用lock()方法时,
2020-11-24 21:01:14
354
原创 线程详解
一.进程与线程进程:操作系统上一个正在运行中的程序,如:QQ,微信,eclipse,记事本....线程:线程是进程内部的一个执行线索,一个进程内部可以由一道多个线程组成,每个线程有自己 独立的内存空间,多个线程可以在自己内存空间执行任务进程:QQ线程:同时和多个人聊天二.线程的优缺点优点:多线程的并发执行,可以提高程序的效率 并发:操作系统会将时间片分为很多个时间点,在每一个时间点上只允许一个线程进入到cpu中 执行任务,因为时间片被划分足够细,所以从
2020-11-23 20:59:44
192
原创 HashMap的实现原理及常用方法
1.概述HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null键和null值,因为Key不允许重复,因此只能有一个键为null,还有就是HashMap不能保证放入元素的顺序,因为HashMap是无序的,和放入的顺序并不能相同2.继承关系 public class HashMap<K,V>extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable3HashM
2020-11-16 21:32:22
404
原创 2020-11-12
1.ArrayList的实现(1)ArrayLIst定义只定义两个私有属性类。private transient Object[] elementData;elementData存储ArrayList内的元素private int size;size表示它包含的元素的数量。(2)构造方法ArrayList提供了三种方式的构造器。1. ArrayList带容量大小的构造函数。public ArrayList(int initialCapacity) {super();if (initia
2020-11-12 19:23:14
43
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人