自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DJLDYHZSZ的博客

慢一点,或许会更快。

  • 博客(20)
  • 收藏
  • 关注

原创 从源码角度看Mybatis如何解析mapper.xml

mapper.xml配置mybatis-config.xml 配置文件中的<mappers>节点会告诉 MyBatis 去哪些位置查找映射配置文件。根据mybatis官网mapper有如下四种配置方式:在mybatis源码中, XMLConfigBuilder.mapperElement(root.evalNode(“mappers”));负责解析节点,具体源码如下: private vo...

2019-06-13 15:41:26 1024

原创 Mybatis初始化详解

简介:MyBatis 初始化的主要工作是加载井解析 mybatis-config.xml 配置文件、映射配置文件以及相关的注解信息。mybatis-config.xml配置内容:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config ...

2019-06-10 18:03:09 609

原创 支付宝手机网页支付流程解析

添加支付宝SDK依赖各个版本的依赖地址:maven依赖下面以版本3.4.49.ALL为例: <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>3.4.49....

2019-06-06 11:59:41 982 3

原创 如何优雅的使用java线程池

简介:在java开发中我们对“池”的概念并不陌生,常见的有数据库连接池、线程池、对象池、常量池等等,其作用基本上就是避免频繁的创建和回收,造成资源浪费,线程池也不例外。创建线程池的好处:降低创建线程和销毁线程的性能开销。提高响应速度,当有新任务需要执行是不需要等待线程创建就可以立马执行。合理的设置线程池大小可以避免因为线程数超过硬件资源瓶颈带来的问题。创建线程池:阿里java开发...

2019-05-28 15:16:22 932

原创 TreeMap原理剖析

简介:TreeMap是基于红黑树(一种自平衡的二叉查找树)实现的一个有序性的Map。注意该类并不是线程安全的,可以使用Collections.synchronizedSortedMap方法包装TreeMap使之转化成线程安全的map。要了解TreeMap必须先了红黑树原理。TreeMap类图结构:红黑树的介绍红黑树(Red-Black Tree,简称R-B Tree),是一种特殊的平衡二...

2019-05-25 15:38:29 315

原创 JAVA生成和解析二维码

目的:通过谷歌的zxing工具生成支付宝和微信均可扫描的二维码。步骤:1 添加maven依赖地址: https://mvnrepository.com/artifact/com.google.zxing/core<dependency> <groupId>com.google.zxing</groupId> <artifactId...

2019-05-23 19:30:57 370

原创 HashTable和HashMap的区别

HashTable和HashMap的区别:1 该类实现了一个哈希表,HashTable的key和value都不可以为null。HashMap中key和value均可为null。2 HashTable默认初始容量11,负载因子0.75;HashMap默认初始容量16,负载因子0.75。Hashtable不要求底层数组的容量一定要为2的整数次幂,扩容后的大小: old2+1;而HashMap则要求...

2019-05-21 16:32:20 169

原创 ConcurrentHashMap原理解析

简介:ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap,数据结构(1.7到1.8)变更为了数组+单向链表+红黑树的结构,取消了 segment 分段设计,直接使用 Node 数组来保存数据。类图结构:...

2019-05-21 10:02:22 293

原创 HashMap深度解析

简介:基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 HashTable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间...

2019-05-20 10:29:17 213

原创 CyclicBarrier原理解析

简介:CyclicBarrier顾名思义是循环栅栏,和CountDownLatch非常功能非常相似,它也可以实现线程间的计数等待,但是它比CountDownLatch功能更加强大:它的内存屏障可以循环使用,它可以在等待的线程被释放之后重新使用。示例:public class CyclicBarrierTest { // 创建CyclicBarrier 示例,并初始化需要等待的线程数量...

2019-05-16 10:43:07 183

原创 CountDownLatch深度解析

说明:CountDownLatch可以看成是一个倒计数器。用给定的计数初始化,计数器的初始值为线程的数量,每当一个线程调用countDown(),计数器的值就会减1。 await方法用于阻塞当前线程,直到计数器为0时才恢复执行,并且任何后续的await 调用立即返回。CountDownLatch是一次性的,计数器的值只能在构造方法中初始化一次,之后没有任何机制再次对其设置值,当CountDow...

2019-05-15 15:50:39 404

原创 ThreadLocal深度剖析

ThreadLocal作用:为每个线程创建一个副本,然后当前线程修改了该副本的值后而不会影响其他线程的值,各个变量之间相互不影响。注意:每个线程在获取实例中的值时,必须先对改值进行初始化,否知获得的值为null。代码示例如下:public class ThreadLocalTest {// 通过set()方法初始化private static final ThreadLocal tlIn...

2019-05-14 17:59:38 202

原创 Volatile关键字详解

java内存模型的三个基本特征:原子性:是指一个操作是不可中断的。即使是多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。可见性:是指当一个线程修改了某一个共享变量的值,其他线程是否能够立即知道这个修改。显然,对于串行来说,可见性问题是不存在的。有序性:在并发时,程序的执行可能会出现乱序。给人的直观感觉就是:写在前面的代码,会在后面执行。有序性问题的原因是因为程序在执行时,可能...

2019-05-13 14:21:55 223

原创 谈谈我对Synchronized的理解

说明:Synchronized 是Java语言的关键字,其作用是对同步的代码加锁,使得在同一时间只能有一个线程进入代码,从而达到同步的目的。使用实例:Synchronized有多重用法,其范例如下:注意:只有共享资源的读写,才有必要进行同步,例如方法中的局部变量(线程栈独有)无需同步。...

2019-05-10 16:42:57 439

原创 Thread.currentThread.getName和this.getName的区别

this:this关键字指向的是当前对象的引用,主要有三个应用:(1)this调用本类中的属性,也就是类中的成员变量;(2)this调用本类中的其他方法;(3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。Thread.currentThread:currentThread() 只是Thread 的一个静态方法。返回的正是执行当前代码指令的线程引用,源码如下: /*...

2019-05-09 15:56:50 347

原创 Integer源码解析

说明:Integer类包装一个对象中的原始类型int的值。 类型为Integer的对象包含一个单一字段,其类型为int 。此外,该类还提供了一些将int转换为String和String转换为int ,以及在处理int时有用的其他常量和方法。int 数据类型是32位、有符号的以二进制补码表示的整数。类图结构:源码解析:package java.lang;public final clas...

2019-05-07 20:07:21 254

原创 Short源码解析

说明:Short类在一个对象中包含一个基本类型short的值。 类型为Short的对象包含一个类型为short的单个字段。此外,该类还提供了几种将short转换为String和String转换为short ,以及在处理short时有用的其他常数和方法。short 数据类型是 16 位、有符号的以二进制补码表示的整数。类图结构:源码解析:package java.lang;public ...

2019-05-07 15:17:50 407

原创 Byte源码解析

说明:Byte类在一个对象中包含一个基本类型byte的值。 类型为Byte的对象包含一个单一字段,其类型为byte 。此外,该类还提供了一些将byte转换为String和String转换为byte ,以及在处理byte时有用的其他常量和方法。类图结构:源码如下:package java.lang;public final class Byte extends Number imple...

2019-05-07 11:44:40 507

原创 Object源码解析

Object类源码解析Class Object是类Object结构的根。 每个班都有Object作为超类。 所有对象(包括数组)都实现了这个类的方法。源码如下:package java.lang;public class Object {private static native void registerNatives();static { registerNatives()...

2019-05-07 09:32:38 145

原创 MyBatis设计模式之单例模式

mybatis 源码中单例模式如下:1 获取ErrorContext 实例。ErrorContext是用在每个线程范围内的单例,用于记录该线程的执行环境错误信息。ErrorContext的单例实现代码:​​...

2019-04-30 15:53:53 1411

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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