快速失败(fail-fast)与安全失败(fail-safe)

2018-10-16
阅读 4 分钟
8.3k
当一个或多个线程正在遍历一个集合Collection的时候(Iterator遍历),而此时另一个线程修改了这个集合的内容(如添加,删除或者修改)。这就是并发修改的情况。

JVM内存模型与运行时数据区域

2018-10-15
阅读 4 分钟
5.9k
一、java内存模型 java定义内存模型的目的是:为了屏蔽各种硬件和操作系统的内存访问之间的差异。 java内存模型规定了所有的变量都存储在主内存中,每条线程拥有自己的工作内存,工作内存保存了主内存中变量的副本。 线程对变量操作只能在工作内存中进行,不能直接读写主内存的变量。 不同线程之间的变量访问需要通过主...

Java中线程的5种状态

2018-10-15
阅读 2 分钟
2.9k
每一个线程就是一个任务,我们要执行一个任务,这个任务如果完成了,那么我们的程序功能就得到了实现。因为只有一个CPU,也就是说只有一个干活的人。那么我们开始了那么多的任务,CPU就需要频繁地切换任务来执行,这样我们就能更好地理解任务的一些状态了。

Java中的Set

2018-10-12
阅读 2 分钟
1.5k
HashSet与LinkedHashSet的关系就如同HashMap和LinkedHashMap一样。HashSet内部保存了一个HashMap对象来存储。

TCP的3次握手与4次挥手

2018-10-10
阅读 5 分钟
2.3k
TCP协议是运输层协议的一种,它提供可靠的数据传输服务。TCP连接时全双工通信,这意味通信的双方都可以同时发送和接收数据,这有助于我们理解下面的握手与挥手过程!

OSI七层网络结构图和TCP/IP的四层网络结构图

2018-10-10
阅读 4 分钟
4.4k
OSI的七层结构图是制定的标准,但是在现实中并没有被广泛采用;TCP/IP的5层是为了方便学习而假设出来的;现实中广泛使用的是TCP/IP的四层网络结构图。

Java中的泛型T

2018-10-07
阅读 1 分钟
4.7k
Java中的泛型T 一、问题: {代码...} 这个方法签名中有3个T,乍一看第2、3个T都能理解,就是第一个T是什么意思呢? 答案: 其实第2、3个T我们的理解不准确。我们先来看下面的这个方法签名: {代码...} 这时候你就恍然大悟了,原来这里的T是我们自己的类,而不是泛型啊!如果我们没有一个叫做T的类,那么方法声明就会报错...

Java中的序列化tips

2018-09-26
阅读 1 分钟
1.3k
1.当2个进程在进行远程通信时,相互发送数据,数据都是以二进制的形式传送的。如果我们要传输对象的话,就需要把对象转化为字节数组(二进制数据),接收方接收后反序列成对象。目的在于,传送对象的状态,也就是属性值

Java中的动态代理

2018-09-26
阅读 3 分钟
3.1k
对于静态代理,我们已经很熟悉了。我们拥有一个抽象类,真实类继承自抽象类并重写其业务方法,代理类持有真实类的对象实例,在重写业务方法中通过调用真实类的方法,并且添加自己的逻辑。这样代理类就实现了对真实类的行为代理。

二叉树

2018-09-26
阅读 3 分钟
1.7k
完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。

tomcat与nginx的反向代理,https过程分析

2018-09-26
阅读 10 分钟
7.9k
原先,自己有多个项目需要部署在linux上时,我的做法(新手的做法)是:在linux上只有一个tomcat服务器,我们把多个项目如project-1.war、project-2.war、project-3.war(一般都是.war包的形式)都传输到这个tomcat的webapps/目录下;在启动tomcat后,tomcat自动解压war包成文件夹,然后我们通过地址+项目名的方法来访问...

Java中的Map

2018-09-26
阅读 2 分钟
2.3k
这2个Map是我们最常见的map。LinkedHashMap内部使用了双向链表来维护元素的顺序,所以遍历的时候取出来的元素顺序和插入顺序一致,而HashMap就不是。

Java中的Queue与Deque

2018-09-26
阅读 3 分钟
13.6k
Queue接口作为队列数据结构,java在实现的时候,直接定义了Deque接口(双端队列)来继承Queue接口,并且只实现Deque接口。这样java中的双端队列就囊括了队列、双端队列、堆栈(Deque接口又定义了Stack的操作方法)这3种角色的功能。

Java中的List集合

2018-09-26
阅读 6 分钟
2.6k
List接口的实现类 List表示有序的集合(元素可以重复),根据索引来寻找元素,放入其中的元素的存储顺序和放入顺序是一致的。 ArrayList 0.继承自AbstractList,拥有通用的方法如Iterator迭代器。实现了List接口。 1.底层是transient Object[] elementData 数组。可以看到默认大小是10。 2.不同的初始化方式,有一点区别...

好用的java.util.Objects类

2018-08-12
阅读 3 分钟
6.4k
在jdk1.7中,新增了一个工具类,就是java.util.Objects类。它有3个简单的封装方法,对于平常的使用来说挺有用的,分别是:hashCode、equals、toString这3个方法。

java项目中的classpath到底是什么

2018-07-28
阅读 2 分钟
112.1k
在java项目中,你一定碰到过classpath,通常情况下,我们是用它来指定配置/资源文件的路径。在刚开始学习的时候,自己也糊里糊涂,但是现在,是时候弄清楚它到底是指什么了。

http请求(GET/POST)时,url/参数编码的过程分析

2018-07-28
阅读 4 分钟
32.6k
http请求(GET/POST)时,url/参数编码的过程分析 这个实验,是在采用ssm框架的基础上演示的。 在前端向后端发出http请求时,有时候当我们采用GET方式时,参数会被编码在url后面。那么这个url是如何编码解码的呢? http请求的发出,以及编码过程 下面在chrome浏览器和postman下模拟请求,用fiddler来监控请求发出信息。 ...

Java中的获取文件的物理绝对路径,和读取文件

2018-07-21
阅读 4 分钟
20.2k
获取文件的绝对路径,读取该文件 一、文件目录打印图 下面的文件目录图,是项目中文件的位置信息;下面的例子是按照这个图来演示的。 {代码...} 项目打包发布后的目录结构:(要注意的是,我们操作的文件状态是下面这个目录的情形!) {代码...} 二、properties文件介绍 以下内容引自Wikipedia: .properties 文件是一种和...

表单中的method为get和post的解读

2018-07-21
阅读 1 分钟
3.9k
form表单中的method方法,其值get/post,对应的http协议中的GET和POST传送方法。即指明的是http协议传送请求报文的方式。

表单form的提交和servlet的取值

2018-07-21
阅读 8 分钟
9.6k
在表单传值和后台进行交流的时候,一个最大的坑就是中文的乱码问题了。这个坑的具体分析不过多阐述,最佳实践就是: 使用post 方式进行数据的提交,后台设置字符集过滤器,对request、response 的字符集都设置为utf-8 。

Java以及web相关的路径全面解析

2018-07-21
阅读 3 分钟
4k
绝对路径就是文件或目录在硬盘上真正的路径,例如:C:\xyz\test.txt 代表了test.txt文件的绝对路径。还有http://localhost/learnjsp/login.jsp 也是绝对路径。

GSON - JSON的拓展

2018-07-21
阅读 9 分钟
4.4k
GSON弥补了JSON的许多不足的地方,在实际应用中更加适用于Java开发。在这里,我们主要讲解的是利用GSON来操作java对象和json数据之间的相互转换,包括了常见的对象序列化和反序列化的知识。

JSON - 前后端数据交互的标准

2018-07-21
阅读 1 分钟
2.5k
JSON 一、介绍 官方JSON介绍 WIKI百科。 JavaScript object notation(记号法)。 JSON: JSON数据具有2种形式,一种是无序的key-value对的集合(对象),另一种是有序的值的集合(数组)。 {string : value, ...} object {代码...} [value, ...] array {代码...} value的值形式有7种: object、array number、string、...

MySQL-浅谈存储引擎

2018-07-17
阅读 6 分钟
2.1k
之所以有多个存储引擎,是因为我们对表的使用场景并不总是相同的,有时候可能我们需要频繁的select 和insert操作,而有的时候可能需要频繁的update 操作。这个时候,不同引擎的数据表table 就有着不同的性能了。