- 博客(20)
- 资源 (4)
- 收藏
- 关注
原创 HashMap源码剖析
大部分思路都是一样的 ,只是一些细节不一样,源码中都标了出来。jdk容器源码还是挺简单的。public class HashMap extends AbstractMap implements Map, Cloneable, Serializable{ //容量默认值 static final int DEFAULT_INITIAL_CAPACITY = 16;
2015-08-21 17:47:51 1112
原创 HashTable源码剖析
package java.util;import java.io.*;public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable { //transient不能被序列化 数据部分 private transient Entry[] tab
2015-08-21 16:16:00 1056
原创 TCP三次握手及关闭时的2MSL分析
TCP/IP三次握手四次挥手,是非常重要的,这个链接与关闭过程也是很简单的,但为什么是三次握手?以及为什么要等待2MSL的状态?大部分人也许听到这个问题就蒙了,这篇博客就综合《TCP/IP详解:卷一》来分析一下原因:下面看TCP三次握手四次挥手的原理图:1.为什么要三次握手? 为了避免已失效的连接报文段又到达可服务器。考虑这样一个正常的情况: 假设TCP连接是两
2015-08-20 17:48:31 1910 1
原创 40个Java集合面试问题和答案
1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。集合框架的部分优点如下:
2015-08-18 16:19:56 1901
原创 全面解读java虚拟机(面试考点大全)d
学习java以来,jvm的原理已经看过好多遍了,但是许多知识点都串不起来。今天我把jvm相关知识整理了一下,看完之后肯定会对JVM非常的清楚。JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理。冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操作码和地址码组成,操作码决定了操作类型和所操作
2015-08-18 11:54:43 4851
原创 Socket编程系列
整理了整理以前写的博客,将Socket编程的博客都集锦在这里,以便阅读方便。 基本套接字TCP和UDP socket的底层创建与关闭 揭秘Socket与底层数据传输实现
2015-08-16 09:14:27 877
原创 ArrayList源码解析
本片博客只解析了源码的关键部分,其余可自行查看。注意此容器是线程不安全的,且注意Fail-fast机制public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable{ private static final long s
2015-08-16 00:56:15 908
转载 java NIO、BIO、AIO全面剖析
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号问题1什么是同步?2什么是异步?3什么是阻塞?4什么是非阻塞?5什么是同步阻塞?6什么是同步非阻塞?7什么是异步阻塞?8什么是异步非阻塞?散仙
2015-08-15 19:29:24 2320 3
原创 JDK容器 Vector源码剖析
/* * %W% %E% * * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.util;/** * The {@co
2015-08-13 23:25:35 887
原创 Tomcat源码解析系列
学web也有一段时间了,为了从底层了解web应用在Tomcat中的运行,决定看一下Tomcat的源码参见《How Tomcat works》 和大牛博客,对大体架构有了一定的了解,但是具体细节还是不大清楚,以后随着对这方面的深入再具体看吧。下面是解析的Tomcat系列:Tomcat源码解析(一)下载源码与导入eclipseTomcat总体架构(Tomcat源码解析系列
2015-08-11 21:06:21 3771
原创 Tomcat 设计模式总结(Tomcat源代码阅读系列之八)
本篇我们将来分析一下Tomcat中所涉及到设计模式,本文我们将主要来分析外观模式,观察者模式,责任链模式,模板方法模式,命令模式。 在开始本文之前,笔者先说明一下对于设计模式的一点看法。笔者曾经经常看到网上有人讨论设计模式,也偶尔会遇到有人非要严格按照GOF设计模式的类图以及其中的角色去套用别人的设计,只要类图不一样,或者角色多了或者少了就会觉得怎么和官方定义的模式不一样,其实这都是对设计模式
2015-08-11 20:55:13 5897 2
原创 Tomcat Session管理机制(Tomcat源码解析七)
前面几篇我们分析了Tomcat的启动,关闭,请求处理的流程,tomcat的classloader机制,本篇将接着分析Tomcat的session管理方面的内容。在开始之前,我们先来看一下总体上的结构,熟悉了总体结构以后,我们在一步步的去分析源代码。Tomcat session相光的类图如下:通过上图,我们可以看出每一个StandardContext会关联一个Manager,
2015-08-11 11:22:18 3908
原创 Tomcat类加载器机制(Tomcat源码解析六)
要说Tomcat的Classloader机制,我们还得从Bootstrap开始。在BootStrap初始化的时候,调用了org.apache.catalina.startup.Bootstrap#initClassLoaders方法,这个方法里面创建了3个ClassLoader,它们分别是commonLoader,catalinaLoader,sharedLoader,其中catalinaLoad
2015-08-11 10:28:48 4946 2
原创 Tomcat请求处理过程(Tomcat源码解析五)
前面已经分析完了Tomcat的启动和关闭过程,本篇就来接着分析一下Tomcat中请求的处理过程。在开始本文之前,咋们首先来看看一个Http请求处理的过程,一般情况下是浏览器发送http请求->建立Socket连接->通过Socket读取数据->根据http协议解析数据->调用后台服务完成响应,详细的流程图如上图所示,等读者读完本篇,应该就清楚了上图所表达的意思。Tomcat既是一个Http
2015-08-11 09:25:31 8096 3
原创 Tomcat关闭过程(Tomcat源码解析四)
我们在Tomcat启动过程(Tomcat源代码阅读系列之三)一文中已经知道Tomcat启动以后,会启动6条线程,他们分别如下:"ajp-bio-8009-AsyncTimeout" daemon prio=5 tid=7f8738afe000 nid=0x115ad6000 waiting on condition [115ad5000]"ajp-bio-8009-Acceptor-0"
2015-08-10 20:31:52 4564
原创 tomcat的启动过程(Tomcat源码解析(三))
Tomcat组件生命周期管理在Tomcat总体结构 (Tomcat源代码解析之二)中,我们列出了Tomcat中Server,Service,Connector,Engine,Host,Context的继承关系图,你会发现它们都实现了org.apache.catalina.Lifecycle接口,而org.apache.catalina.util.LifecycleBase采用了模板方法模式
2015-08-10 17:49:35 9907 6
原创 Tomcat总体架构(Tomcat源码解析系列二)
Tomcat即是一个HTTP服务器,也是一个servlet容器,主要目的就是包装servlet,并对请求响应相应的servlet,纯servlet的web应用似乎很好理解Tomcat是如何装载servlet的,但,当使用一些MVC框架时,如spring MVC、strusts2,可能就找不出servlet在哪里?其实spring MVC框架就是一整个servlet,在web.xml中配置如下:
2015-08-10 09:56:48 10249
原创 Tomcat源码解析(一)下载源码与导入eclipse
自从写web程序以来,web程序是如何在Tomcat中运行的一直困惑着我,不知道底层的运行机制是无法真正理解web的,所以就开始研究Tomcat源码,Tomcat是一个轻量级的java服务器,再结合《How Tomcat works》和网上大牛博客之后,也算知道了内部的运行架构。 首先去官网下载Tomcat源码,我下载的是apache-tomcat-7.0.63-src(在这里下载),因
2015-08-09 11:46:56 4125 2
原创 (二)线程同步基础
1.使用 synchronized实现同步方法 如果一个对象已经用synchronized声明,那么只允许一个执行线程访问它,如果其他线程试图访问这个对象的其他方法,它将被挂起,直到第一个线程执行完正在运行的方法。被synchronized声明的方法就是临界区。 对于非静态的方法被synchronized修饰后,同一时间内只能有一个线程访问这个对象的synchronized方法。即,每一
2015-08-07 17:46:01 588
原创 java并发编程实战手册(一)线程管理
本文主要是以知识点的形式对java多线程进行了解,学习java多线程的基础,本文参考书籍《java并发编程实战手册》,若有兴趣想研究跟高级的多线程思想,可以阅读《java并发编程实战》。线程管理 1.线程的创建和运行 java线程的创建有三种方式,可能大部分人只知道常用的两种: 1.继承Thread类,并且覆盖run()方法。 2.创建一个实现Runnab
2015-08-07 15:28:31 711
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人