6 JHON_YUAN

尚未进行身份认证

记录自己最近一年的学习情况。

等级
TA的排名 7w+

java里面的锁详解

1、为什么要用锁      在了解为什么要用锁之前需要了解两个概念,线程安全和线程不安全,线程安全指的是多个线程对共享变量访问时的结果和单线程下顺序对共享变量访问的结果是一致的,是符合预期的;而线程不安全指的是多个线程对共享变量访问的结果每次都是不确定的。为了保证线程安全这里又几种方法,第一个不用共享变量,各自用各自的变量就不会有线程...

2018-10-31 15:11:29

HashMap 的常见用法及对应源码详解

1、介绍HashMap是一个散列表,存储的内容是键值对(HashMap),存储结构由数组加单向链表组成的,如图: 2、使用这里说明一些hashmap的用法和对应的源码解析,这里使用的的jdk1.7版本。 1、定义HashMap<String, String> hashMap = new HashMap<>();HashMap<Stri

2018-10-31 15:11:22

JAVA内存区域

1、运行时数据区     java运行时数据区可以分为以下几个部分,程序计数器,虚拟机栈,本地方法栈,堆,和堆中的方法区。如下图所示: 其中程序计数器、本地方法栈和虚拟机栈是线程私有的,方法区和堆是线程共享的,其中方法区是堆的逻辑组成部分。 1.1、程序计数器  &n

2018-10-31 15:11:11

java类加载机制

1、类加载过程     类的生命周期如下图所示: 可以看到类的生命周期包含了加载、验证、准备、解析、初始化、使用、卸载七个步骤,其中验证、准备和解析可以叫做一步连接。其中类的加载过程是前面的步,加载、验证、准备、解析和初始化。接下来详细介绍每个步骤要干的事情。首先是加载,加载要完成三件事情,首先将通过一个类的全限定名获取到类的class文...

2018-10-31 15:11:03

代理模式

1、静态代理     代理模式是客户不直接访问到委托类,实现与委托类之间的解耦,并且代理类可以给委托类添加一些额外的功能例如日志、权限等。静态代理是指代理类是在编译阶段就生成class文件的代理模式,工程结构如下: 第一个包中是动态代理用到的日志类,第二个包中委托类和静态代理类,第三

2018-10-31 15:10:56

java多线程编程详细入门教程

1、概念     线程是jvm调度的最小单元,也叫做轻量级进程,进程是由线程组成,线程拥有私有的程序技术器以及栈,并且能够访问堆中的共享资源。这里提出一个问题,为什么要用多线程?有一下几点,首先,随着cpu核心数的增加,计算机硬件的并行计算能力得到提升,

2018-10-31 15:10:49

java线程池详细入门教程即源码解析

1、线程池概念     线程池是线程的集合,通过线程池我们不需要自己创建线程,将任务提交给线程池即可。为什么要使用线程池,首先,使用线程池可以重复利用已有的线程继续执行任务,避免线程在创建和销毁时造成的消耗。其次,由于没有线程创建和销毁时的消耗,可以提高系统响应速度。最后,通过线程可以对线程进行合理的管理,根据系统的承受能力调整可运

2018-10-31 15:10:41

CocurrentHashMap实现原理及源码解析

1、CocurrentHashMap概念     结构图:2、CocurrentHashMap与HashMap区别3、通过源码分析CocurrentHashMap的实现

2018-10-31 15:10:34

JVM垃圾回收

1、哪些数据是垃圾     java语言和C/C++很大的不同就是后者是程序员自己管理内存,自己开辟内存空间和释放内存空间,而java是虚拟机来管理内存,由虚拟机对内存进行开辟和释放。首先,java栈中的数据是根据方法的调用出栈和入栈的,一般不用虚拟机回收,方法区中的数据大多是一些描述信息,常量等,一般情况也不用回收,而频繁需要回收

2018-10-31 15:10:26

剑指offer二叉树题型解析

题目四:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。...

2018-10-31 15:10:18

spring学习之IOC的学习

1、xml配置文件模板创建一个applicationContext.xml的文件,内容如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/sch

2018-10-31 15:10:02

springmvc学习

1、Springmvc框架原理springmvc的框架原理以及通过框架原理进行配置在我的另外一篇博客中已经进行了详细的讲解:Springmvc工作原理及通过原理进行配置 这不多介绍,直接介绍一些常见的只是使用。 2、redirectredirect叫做界面的重定向,也就是浏览器重新进行界面跳转,页面的url会改变。在spring中的用法: @RequestMappin...

2018-07-25 10:50:38

mybatis学习

1、mybatis框架介绍首先看框架结构图: 如图所示:使用通过mybatis访问数据库首先需要一个SqlSessionFactory来创建SqlSession,而SqlSessionFactory的创建需要mybatis的配置文件,这个配置文件中配置了数据源、数据库事务等mybatis的运行环境以及映射文件(在后面整合了spring后数据源、事务、映射等重要信息基本都在spring中配...

2018-07-23 10:41:10

Spring学习之AOP

1、AOP的概念AOP全拼Aspect Oriented Programming,意思是面向切面编程,是对面向对象编程的一个补充,AOP是由动态代理实现,将那些与业务无关却被多个业务共同调用的逻辑给抽取和封装起来,形成切面。常用的地方如权限检查,日志输出等情况。如图: 2、AOP的注解配置第一步编写切面类:public class LogInterceptor { ...

2018-07-18 16:37:15

spring学习之环境搭建

1、maven工程创建 这样便创建完成。 2、pom文件配置pom文件中主要添加spring的jar包,测试类jar包,jsp servlet的jar包具体文件如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins...

2018-07-17 10:28:14

HashMap的死循环解析

HashMap死循环问题图解     在HashMap的数组真实长度达到阈值后,会调用扩容方法: void resize(int newCapacity) { Entry[] oldTable = table; int oldCapacity = oldTable.length; i...

2018-05-16 15:17:15

单例模式

1、懒汉式     懒汉式实现代码:class Singleton2{ private static Singleton2 singleton2 = null; private Singleton2(){} public static synchronized Singleton2 getInstance() {...

2018-05-08 10:10:25

工厂模式

1、简单工厂模式     简单工厂模式即是将我们之前需要自己新建的对象,通过工厂来产生,并且每个产品对应着一个工厂。实现如下,首先看工程结构: 第一个包里面包含了一个工厂接口和两个不同产品的工厂,第二个包里面包含了一个移动的接口和两个移动的实现类。最后一个包是测试:Factory factory = new CarFactory(...

2018-05-07 23:15:37

HashSet 的常见用法及对应源码介绍

1、介绍HashSet是一个没有重复元素的集合,无序的,他事通过HashMap实现的,所以他也是线程不安全的。接下来介绍使用。 2、使用1、构造方法HashSet<Integer> hashSet = new HashSet<>();HashSet<Integer> hashSet2 = new HashSet<>(20);Ha...

2018-04-04 09:40:02

队列

1、介绍同栈一样,队列也是一种线性存储结构,先入先出(FIFO),队列只能在队尾执行添加操作,在队头进行删除操作。 2、数组实现(可以存任何类型)①、接口interface Queue<T>{ public void push(T data); public T pop(); public T peek(); public bool...

2018-04-03 23:20:33

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!