自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 URLClassLoader

自定义目录标题package com.example.demo;import org.junit.Test;import java.io.*;import java.net.URL;import java.net.URLClassLoader;import java.nio.file.Paths;import java.util.*;import java.util.jar.JarEntry;import java.util.jar.JarFile;public class T

2020-05-14 00:21:14 165 5

原创 【Java8】 行为化参数

### 需求​ 有一个苹果集合appleList ,筛选出红色的苹果 。苹果实体类如下public class Apple { private String color; private int weight; //getter and setter}解决方案一写一个过滤红色苹果的方法即可: public static List<Apple> filterRedAppl

2017-06-25 21:13:47 360

原创 [设计模式] 构建者模式

构建器模式主要是来解决多个属性对象创建的问题,为多个属性的对象创建提供了一个很好的解决方案,使得客户端的代码更容易书写。

2017-03-25 14:57:24 281

原创 [设计模式] 简单工厂/工厂方法/抽象工厂

简单工厂、工厂方法、抽象工厂常见的这几种设计模式介绍及相应的使用场景

2017-03-01 23:51:34 226

原创 [设计模式] 单例模式

单例模式是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。在Java中,这个模式需要注意主要是线程安全问题。

2017-02-27 17:01:57 213

原创 [JVM] 类加载机制

类加载器时虚拟机重要一部分,负责将class文件加载到虚拟机中,只有在虚拟机中class文件才能发挥其作用,文本将了解类加载的基本机制,加深对虚拟机的理解。

2017-02-24 13:33:45 234

原创 [JVM] 垃圾回收机制

JAVA与C++的一个区别在于Java是基于JAVA虚拟机的,JAVA虚拟机会帮我们自动回收内存,那么JAVA虚拟机是怎么实现垃圾回收的呢。

2017-02-22 16:49:17 183

原创 分布式Session解决方案

分布式Session的几种解决方案及优缺点

2017-02-06 10:53:37 271

原创 [Java并发] AbstractQueuedSynchronizer实现(一)

AbstractQueuedSynchronizer是 ReentrantLock,CountDownLatch等的底层实现的框架。

2017-01-12 17:16:38 277

原创 [Java并发] ThreadLocal原理

ThreadLocal内部原理、内存泄漏分析、及弱引用Key的原因分析

2017-01-06 09:48:00 440

原创 [Mybatis] Mapper接口原理分析

上篇文章中,是直接用SqlSession.selectList()去执行一条SQL的,但是作为 一个ORM框架,我们往往是调用接口去执行,如下所示:“` InputStream inputStream = Resources.getResourceAsStream(“mybatis-config.xml”); SqlSessionFactoryBuilder builder =

2016-12-29 12:39:26 692

原创 [Mybatis] Mybatis运作流程分析

因为机缘关注起来Mybatis,本文将探索Mybatis的整体执行流程,了解其大概是如何运作的。Mybatis示例 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactoryBuilder builder = new SqlSessionFactoryB

2016-12-28 17:47:34 299

原创 String操作符 “+” 原理

public class StringOperator { public static void main(String[] args) { String a = "a"; String b = "b"; String ab = a+b; }}代码如上,很简单,使用javap -c 反编译看下。 本文使用的是JDK 1.8

2016-12-05 19:10:59 691 2

原创 SpringMVC源码分析(二)-URL映射的注册

​ 首先我们来看下AbstractHandlerMethodMapping这个类,它实现了InitializingBean接口,里面有个afterPropertiesSet()方法。这个接口是spring-beans这个组件的内容,想一想,平时使用搭建SpringMVC的时候,是不是把这个jar包也扔到项目里头了?对于spring-beans这个组件在这里就 不拓展了,我们只要知道实现了Init

2016-12-04 17:25:08 1220

原创 [MySQL] 聚簇索引

​ 聚簇索引并不是一种单独的索引类型,而是一种数据存储的方式。聚簇索引表(InnoDB)的数据是放在叶子节点,而非聚簇索引(MyISAM)的的叶子节点是存放指向数据行的指针。​ 要是每个索引列都存放着数据,那么将产生巨大的存储消耗,故一般只有在主键列的索引(主键索引)的叶子节点存放着数据,其它非主键索引叶子节点将指向主键索引,如果没有主键,将会选择一个唯一非空作为聚簇索引,如还是没

2016-11-26 12:13:23 335

原创 [MySQL] 索引类型

MySQL的索引是由存储引擎层实现的,而不是服务器层实现的。所以,不同的存储引擎支持的索引是不一样的。常见的索引类型B+ 树索索引以B树来实现,特性是非叶子结点只存储键,叶子字节存储数据(聚簇索引)或者指向数据的物理地址(非聚簇索引)。适用于全键值,键值范围,及最左前缀键只查找。对于多列索引值只适合于最左前缀查找。哈希索引Memory支持哈希索引,哈希索引是基于哈希表实现的,存储引擎将所有的索引列计

2016-11-25 10:03:46 293

原创 SpringMVC源码分析(一)

为什么要看SpringMVC源码工作中使用公司内部封装的框架,入参处理繁琐,响应方法还要进行XML配置,卧槽,还是多个XML的配置,这感觉完全是以前的老古董的东西,用起来心都碎了。想想以前用的SpringMVC,使用体验完爆现在使用的框架,让人好想了解其内部是如何实现的。基于上面的疑惑,带着下面三个疑问去阅读SpringMVC框架:请求如何映射到RequestMapping方法,参数如何传递怎样

2016-11-21 18:50:55 362

原创 AtomicInteger源码分析

要解决什么问题最常需要解决的问题是i++ 这个语义在多线程中是不安全的。虽然从语法上看上去是一个操作,实际上分为了三步。取出i的值,i+1,将i+1的计算结果赋值给i。假设i的初始值为5,一种不安全的情况如下: - 1 2 3 4 5 6 线程1 i(5) i+1(6) i(6) 线程2 i(5) i+1(6)

2016-11-17 22:21:53 228

原创 Java多线程: CAS

悲观锁与乐观锁悲观锁:悲观锁思想认为如果多个线程中使用共享资源,则它们肯定会同时进行修改从而引起冲突,悲观锁的解决方式是共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程。synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。乐观锁:乐观锁思想认为如果多个线程使用共享资源,它们修改应该是有先后顺序的,不会同时进行修改,如果真的有冲突则后面修改失败。乐

2016-11-16 17:38:05 1413

原创 ConcurrentModificationException异常分析

什么是ConcurrentModificationException集合如ArrayList在迭代时进行修改则会报出ConcurrentModificationException异常如何实现首先看下modCount,这个值是在ArrayList创建的时候初始化为0,并且对集合进行更新操作(add,remove等)时不断递增,确保每次进行更新操作后modCount的值都是不一样的,下面是remove(

2016-11-15 21:26:33 214

原创 [MySQL] MySQL使用utf8mb4字符集

MySQL使用utf8mb4字符集更改配置文件my.ini[client]port=3306default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld] character-set-client-handshake = FALSE collation-server = utf8mb4_un

2016-10-08 21:19:59 356

空空如也

空空如也

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

TA关注的人

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