自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除