- 博客(45)
- 资源 (3)
- 收藏
- 关注
原创 类加载器
类加载器概述 前面一直在介绍类加载的过程,都是一些概念性的东西,但这些概念很重要。接下来我们来进行一些实战,研究一下类加载器。看清楚这是类加载器,不是类加载过程。 什么是类加载器 类加载器特点 1. 什么是类加载器 简单的说类加载器就是将.class文件加载进虚拟机并生成对应的Class对象。 下面这段话是摘自深入理解Java虚拟...
2018-08-08 15:49:53
265
原创 类加载 之01 类的加载时机
类加载 之01 类的加载时机概要 概述:什么是类加载 类的生命周期 类的初始化 1. 概述 我们知道class文件存储描述java文件中的对应的信息,(这是相对Java来说的,class不只可以描述java代码)但是现在只是存储了必要的信息,如果要运行,最终都是要加载到虚拟机之后才能运行和使用。 什么是类加载? 虚拟机把描述类的数据从cla...
2018-08-06 20:38:58
213
原创 类加载之 02 类加载的过程
类加载之 02 类加载的过程概述 下面按照类加载的顺序来进行说明整个这类加载过程。 加载 连接(验证、准备和解析) 初始化 1. 加载 加载:查找并加载类的二进制数据的过程。 加载的过程描述: 通过类的全限定名定位 .class文件,并获取其二进制字节流。 把字节流所代表的静态存储结构转换为方法区的运行时数据结...
2018-08-06 20:29:36
245
原创 class 文件结构
class 文件结构概要 首先我明确一点,如果你希望明白class文件中每个字段的具体内容是什么,最好就别看这篇博客,我主要关注的是整体格式,没有具体研究每个字段中具体的定义和表示。 什么是class文件,为什么需要class文件 class文件基本结构 class 文件之魔数与class文件的版本 常量池 访问标志 类索引、父类索引与接口索引集...
2018-08-06 18:00:03
228
原创 springMVC整合mybatis
springMVC整合mybatis概要 本篇主要记录使用注解来整合springMVC和mybatis 项目整体结构 需要导入的依赖 SpringMVC配置 整合Mybatis 1. 项目整体结构 2.需要导入的依赖 <properties> <project...
2018-08-02 22:27:39
540
原创 java多线程系列-JUC线程池之 01 线程池架构
java多线程系列-JUC线程池之 01 线程池架构概要 线程池整体架构介绍 简单示例 1. 线程池整体架构介绍 1. Executor Executor将任务的执行和任务的创建分离开来。他提供了执行的接口,是来执行任务的。只要提交的任务实现了Runnable接口,就可以将此任务交给Executor来执行,这个接口只包含一个函数,...
2018-07-24 16:09:46
301
原创 java多线程系列之 08 ThreadLocal
java多线程系列之 08 ThreadLocal概要 ThreadLocal介绍 基本用法 ThreadLocal引起的内存泄漏 ThreadLocal 介绍 ThreadLocal提供了线程本地变量,它可以保证访问到的变量属于当前线程,每个线程都保存有一个变量副本,每个线程的变量都不同,而同一个线程在任何时候访问这个本地变量的结果都是一致的。...
2018-07-13 17:51:03
148
原创 java多线程系列 07 ThreadGroup
java多线程系列之07 ThreadGroup概要 ThreadGroup 介绍 基本API的使用与介绍 1. ThreadGroup 介绍 在java的多线程处理中有线程组ThreadGroup的概念,ThreadGroup是为了方便线程管理出现了,可以统一设定线程组的一些属性,比如setDaemon,设置未处理异常的处理方法,设置统一的安全策略...
2018-07-13 17:50:46
449
原创 java多线程系列 06 线程优先级和守护线程
java多线程系列 06 线程优先级和守护线程概要 线程优先级的介绍 线程优先级的示例 守护线程的示例 1. 线程优先级的介绍 java 中的线程优先级的范围是1~10,默认的优先级是5。“高优先级线程”会优先于“低优先级线程”执行。 java 中有两种线程:用户线程和守护线程。可以通过isDaemon()方法来区别它们:如果返回fa...
2018-07-13 17:50:23
154
转载 java多线程系列 05 interrupt()和线程终止方式
Java多线程系列 05 interrupt()和线程终止方式概要 interrupt()说明 终止线程的方式 终止线程的示例 1. interrupt()说明 在介绍终止线程的方式之前,有必要先对interrupt()进行了解。 关于interrupt(),java的djk文档描述如下:http://docs.oracle.com/jav...
2018-07-13 17:50:03
172
原创 java 多线系列之 04 线程让步和join
java 多线系列之 04 线程让步和join概要 yield()介绍以及示例 yield() 与 wait()的比较 join() 介绍及示例 1. yield介绍以及示例 yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,...
2018-07-13 17:49:43
263
原创 java多线程系列 02 synchronized 关键字
java多线程系列 02 sychronized关键字概要 Sychronized 基本用法 sychronized基本规则 对象锁和类索 1. sychronized基本用法 sychronized主要由俩种用法,一种是用来修饰方法,另外一种是用来修饰代码块。 synchronized方法示例 public synchron...
2018-07-13 17:45:45
171
原创 java多线程系列 01基本概念以及实现方式
java 多线程的基本概念以及实现方式概要 线程的基本概念 常用的实现多线程的方式 Thread中start()和run()的区别 1. 线程的基本概念 线程状态图 说明: 线程共包括以下5种状态。 新建状态(New) : 线程对象被创建后,就进入了新建状态。例如,Thread thre...
2018-07-13 17:36:17
143
原创 Java 集合系列07之 Stack详细介绍
概要 本篇博客将主要学习Stack。Stack很简单,就是一些简单的栈操作,他继承Vector。 主要内容如下: Stack 介绍 Stack 源码解析 1. Stack介绍 Stack简介 Stack是栈。它的特性是:先进后出(FILO)。 Stack是继承Vector,因此Stack的数据结构和Vector很相似。...
2018-03-07 21:29:18
251
原创 Java集合系列06之 Vector详细介绍
概要 学完ArrayList和LinkedList,我们接着学习Vector。学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码;最后再通过实例来学会使用它。 Vector介绍 Vector数据结构 Vector源码解析 Vector遍历方式 1. Vector 介绍 Vector 简介 Vector 是矢量...
2018-03-07 20:51:12
346
原创 java 枚举
Java 枚举概要 本篇博客的内容如下 使用背景 枚举定义和使用 枚举的总结 深度分析Java的枚举类型—-枚举的线程安全性及序列化问题 1. 使用背景 在java语言还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组int常量。之前通常利用public final static 方法定义。下面是一个小案例,分别用1 表示春...
2018-03-07 10:58:53
153
原创 Java集合系列05 之LinkedList详细介绍
概要 本篇博客我们将继续学习集合框架。这一篇我们接着学习Lis的实现类—LinkedList。 主要内容 LinkedList介绍 Queue 介绍 Deque介绍 LinkedList数据结构 LinkedList源码分析 LinkedList遍历方式 LinkedList使用示例 1. LinkedList介绍 L
2018-02-01 15:06:04
339
1
原创 Java 集合系列04之 fail-fast总结
概要 前面已经讲解了Arraylist,但是留下了一个知识点没有说明,Iterator的fail-fast机制。本篇博客主要讲解一下这个机制。 主要内容: Fail-fast简介 fail-fast示例 fail-fast解决办法 fail-fast原理 解决fail-fast的原理 1. Fail-fast简介 下面是Jav
2018-02-01 15:05:14
242
原创 Java 集合系列03 之ArrayList
概要 本篇博客主要的内容是介绍ArrayList的使用和对其源码进行分析,并比ArrayList不同迭代器之间的性能 内容包括: ArrayList 简介 ArrayList数据结构 ArrayList源码分析 ArrayList遍历方式分析 toArray 异常 ArrayList 基本使用示例 1. ArrayList 简介
2018-02-01 15:03:55
185
原创 java集合系列 02 Collection
java集合系列 02 Collection概要 首先,对Collection进行说明。下面是Collection的继承关系的主要类图,(这里只列举了抽象类和接口,来说明Collection的整体结构) Collection是一个接口,它主要的俩个分支是:List 和Set。 List和Set都是接口,他们继承于Collection。 Li
2018-01-31 15:44:55
169
原创 泛型中extends和super的区别
泛型中 extends 和 super 的区别这俩个主要用于对参数的保护,如果你看过Java api 源码的话,你经常看到方法参数类似上面的写法。概要 类型擦除 逆变与协变 ? 的用法 extends 的用法 super的用法 PECS原则 类型擦除 import java.util.*;public class main{ p...
2018-01-23 21:09:42
792
原创 java 8 系列之 03 流介绍
主要内容 本篇主要是初步了解一下Stream是什么,有哪些种类,初步接触一下。 流是什么 流与集合 流操作种类 流是什么 流简介 流(Stream)是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个,有点像sql语句已经定义好了一部分可以使用函数,然后组合使用即可)。此外还可以透
2018-01-22 15:53:11
176
原创 java 8 系列之02 Lambda表达式
在刚开始学习使用Lambda表达式的时候,你就把Lambda表达式类比成匿名类,把你写的每一个Lambda表达式相对应的匿名内部类都写出来。然后你把其中方法里面的语句和参数列表提取出来,按照Lambda表达式的格式写出来,就是Lambda表达式。主要内容 初步使用及Lambda表达式的格式 函数式接口 类型检查以及类型推断 方法引用 复合Lambda表达式
2018-01-22 10:39:06
278
原创 java 8 系列之 01 行为参数化
本篇博客的主要内容 明白什么是行为参数化,介绍几种行为参数化的方式,为下一节学习Lambda打下基础。什么事行为参数化 在软件工程中,一个众所周知的问题就是,不管你做什么,用户的需求肯定会变。比方说, 有个应用程序是帮助农民了解自己的库存的。这位农民可能想有一个查找库存中所有绿色苹果的 功能。但到了第二天,他可能会告诉你:“其实我还想找出所有重量超过150克的苹果。”又过
2018-01-19 14:50:39
480
原创 java 中Comparable 和 Comparator 比较
首先你不要觉得俩个接口很神秘的样子,其实只是你还不会用而已。这俩个接口是Java源代码中定义的俩个接口来方便进行排序。你只要在类中实现了这俩个接口,就可以调用java中提供的一些工具类来进行排序,类如Collections.sort() ,Arrays.sort()方法。这些方法中已经默认只要你实现了这俩个接口,该类就可以调用这俩个接口中定义的方法来进行排序。Comparable 简介Co
2018-01-19 13:20:58
171
原创 泛型中 ? super T 和 ? extends T 的区别
泛型中 ? super T 和 ? extends T 的区别概要 类型擦除 ? 的用法 extends 的用法 super的用法 类型擦除 import java.util.*;public class main{ public static void main(String[] args){ Class c1 = new Ar
2018-01-17 10:46:11
275
原创 深入理解java虚拟机之 01 java 内存结构
java 内存结构 最近在看深入理解java虚拟机这本书,所以想写写自己看这本书的总结。 首先引用这本书里面的一句话:Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外的人想进去,墙内的想出来。感觉很诗意,有点像《围城》里面的一句话:城里的人想出来,城外的人想进去。 废话不多说了,我本篇博客的主要内容如下: java内存结构(运
2017-12-29 13:23:00
263
原创 java集合系列 02 Collection
java集合系列 02 Collection概要 首先,对Collection进行说明。下面是Collection的继承关系的主要类图,(这里只列举了抽象类和接口,来说明Collection的整体结构) Collection是一个接口,它主要的俩个分支是:List 和Set。 List和Set都是接口,他们继承于Collection。 List是有序队列
2017-12-28 17:18:09
220
转载 HTTP 协议中的 Transfer-Encoding
HTTP 协议中的 Transfer-Encoding本文作为我的博客「HTTP 相关」专题新的一篇,主要讨论 HTTP 协议中的 Transfer-Encoding。这个专题我会根据自己的理解,以尽量通俗的讲述,结合代码示例和实际场景来说明问题,欢迎大家关注和留言交流。Transfer-Encoding,是一个 HTTP 头部字段,字面意思是「传输编码」。实际上,HTTP 协议中还有另外一个头部与
2017-12-27 15:09:52
31405
2
转载 HTTP 协议中的Content-Encoding
HTTP 协议中的Content-Encoding 主要内容 Content-Encoding 是什么 内容编码格式gzip 和 deflate Content-Encoding 是什么 Accept-Encoding 和Content-Encoding是HTTP中用来对采用哪种编码格式传输正文进行协定的一对头部字段。 工作原理如下: 首先
2017-12-27 15:08:09
55768
1
原创 JWT(JSON WEB TOKEN)是什么
JWT(JSON WEB TOKEN)是什么 JSON Web Token(JWT)是一种开放标准RFC 7519 ,他定义了一种压缩、独立的JSON对象,可以安全地将信息以JSON对象的形式传递给各方。这个信息可以被验证和信任,因为他是通过数字签名的。JWTs签名可以通过一个私钥(使用HMAC算法)或者使用RSA的公钥/私钥对签名。 首先解释一些概念: Compact:由于
2017-12-26 15:48:31
756
原创 java 中 Iterator 和 Iterable 区别
java 中 Iterator 和 Iterable 区别Iterator(迭代器) 作为一种设计模式,迭代器可以用于遍历一个对象,而开发人员不用去了解这个对象的底层结构。 这里就不仔细说迭代器这种设计模式,因为我们主要的目的是探索java中Iterator和 Iterable之间的区别用法 首先来说一下他们各自是怎么使用,不会用谈什么都是瞎搞。 Iterator用法
2017-12-23 20:19:01
891
原创 lab1
简介 这个实验主要是帮助理解MapReduce,并带我们走进分布式的大门,是一个很好的实验。 首先你需要整体阅读MapReduce这篇文章,并理解主要思想。虽然现在MapReduce已经不是那么流行,但是作为分布式的入门文章和实验,我觉得是很不错的。基本上把分布式的主要思想都涉猎了。 主要机制如图 Map worker读入1个文件,处理后生成n(re
2017-12-21 10:24:32
984
转载 从对象创建和引用小议解耦
应用场景 为方便后续介绍,本文假设一个计算器的应用。 初始设计由以下几部分组成: 计算器界面类 CalculatorUI该类接受用户输入的表达式,执行一些输入校 验工作,并将合法的表达式传递到具体的分析器,最终将计算结果返回给用户。 语法分析器接口,ExpressionEvaluator及其实现类ExpressionEvaluatorImpl,其承担实际的计算工
2017-12-20 14:46:44
188
原创 Lab 1:MapReuce
这个实验主要是帮助理解MapReduce,并带我们走进分布式的大门,是一个很好的实验。首先你需要整体阅读MapReduce这篇文章,并理解主要思想。虽然现在MapReduce已经不是那么流行,但是作为分布式的入门文章和实验,我觉得是很不错的。起码把分布式的主要思想都涉猎了。
2017-12-02 21:49:39
205
原创 简介
本系列博客是我在学习MIT 6.824课程课程所做的笔记。 课程是一个非常好的分布式入门课程,每堂课都讲一个新的分布式系统模型,没有教材,每堂课都是直接讲论文。老师是MIT PDOS的神牛Robert Morris (这人就是当年因为发明蠕虫病毒而蹲监然后回MIT当教授的神人)和Frans Kaashoek。这些分布式系统都是实际用在各个大公司里的系统,比如说Spark, GFS,PNUTS。
2017-12-02 10:19:21
292
翻译 Linearizability 与 Serializability 对比
本文是我在学习mit6.824课程时,看到的一篇英文博客。由于本人的英语只能算是个菜鸟,如果你的英语水平还行的话,最好去看原文:原文地址 在数据库和分布式系统的交替操作中,Linearizability 和 Serializability 是俩个比较重要的属性,并且也是比较容易弄混的。本文希望能给出一个简单容易理解的俩者之间实际的差异。Linearizability: single-oper
2017-11-21 17:08:06
1405
转载 为什么volatile不能保证原子性
预备知识原子操作 简单来说,原子操作(atomic)就是不可分割的操作,在计算机中,就是指不会因为新城调度被打断的操作。 比如,简单的赋值就是一个原子操作: m = 6 //这是个原子操作 假如m原先的值为0,那么对于这个操作,要么执行成功m编程了6,要么没执行m还是0,而不会出现诸如m=3,这种中间状态。 但是声明并赋值就不是一个原子操作: i
2017-11-07 14:05:58
664
原创 bootstrap-datepicker 位置错误问题
bootstrap-datepicker 是个不错的时间插件,最近在用的时候却出现了点问题:日历框的位置不对。1. 问题描述2.解决方案修改js文件
2017-05-31 15:34:51
2096
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人