自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (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 1097

原创 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 1022

原创 TCP三次握手及关闭时的2MSL分析

TCP/IP三次握手四次挥手,是非常重要的,这个链接与关闭过程也是很简单的,但为什么是三次握手?以及为什么要等待2MSL的状态?大部分人也许听到这个问题就蒙了,这篇博客就综合《TCP/IP详解:卷一》来分析一下原因:下面看TCP三次握手四次挥手的原理图:1.为什么要三次握手?     为了避免已失效的连接报文段又到达可服务器。考虑这样一个正常的情况:   假设TCP连接是两

2015-08-20 17:48:31 1865 1

原创 40个Java集合面试问题和答案

1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。集合框架的部分优点如下:

2015-08-18 16:19:56 1883

原创 全面解读java虚拟机(面试考点大全)d

学习java以来,jvm的原理已经看过好多遍了,但是许多知识点都串不起来。今天我把jvm相关知识整理了一下,看完之后肯定会对JVM非常的清楚。JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理。冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操作码和地址码组成,操作码决定了操作类型和所操作

2015-08-18 11:54:43 4803

原创 Socket编程系列

整理了整理以前写的博客,将Socket编程的博客都集锦在这里,以便阅读方便。                                       基本套接字TCP和UDP                       socket的底层创建与关闭                       揭秘Socket与底层数据传输实现

2015-08-16 09:14:27 863

原创 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 899

转载 java NIO、BIO、AIO全面剖析

在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号问题1什么是同步?2什么是异步?3什么是阻塞?4什么是非阻塞?5什么是同步阻塞?6什么是同步非阻塞?7什么是异步阻塞?8什么是异步非阻塞?散仙

2015-08-15 19:29:24 2276 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 878

原创 Tomcat源码解析系列

学web也有一段时间了,为了从底层了解web应用在Tomcat中的运行,决定看一下Tomcat的源码参见《How Tomcat works》    和大牛博客,对大体架构有了一定的了解,但是具体细节还是不大清楚,以后随着对这方面的深入再具体看吧。下面是解析的Tomcat系列:Tomcat源码解析(一)下载源码与导入eclipseTomcat总体架构(Tomcat源码解析系列

2015-08-11 21:06:21 3619

原创 Tomcat 设计模式总结(Tomcat源代码阅读系列之八)

本篇我们将来分析一下Tomcat中所涉及到设计模式,本文我们将主要来分析外观模式,观察者模式,责任链模式,模板方法模式,命令模式。 在开始本文之前,笔者先说明一下对于设计模式的一点看法。笔者曾经经常看到网上有人讨论设计模式,也偶尔会遇到有人非要严格按照GOF设计模式的类图以及其中的角色去套用别人的设计,只要类图不一样,或者角色多了或者少了就会觉得怎么和官方定义的模式不一样,其实这都是对设计模式

2015-08-11 20:55:13 5827 2

原创 Tomcat Session管理机制(Tomcat源码解析七)

前面几篇我们分析了Tomcat的启动,关闭,请求处理的流程,tomcat的classloader机制,本篇将接着分析Tomcat的session管理方面的内容。在开始之前,我们先来看一下总体上的结构,熟悉了总体结构以后,我们在一步步的去分析源代码。Tomcat session相光的类图如下:通过上图,我们可以看出每一个StandardContext会关联一个Manager,

2015-08-11 11:22:18 3887

原创 Tomcat类加载器机制(Tomcat源码解析六)

要说Tomcat的Classloader机制,我们还得从Bootstrap开始。在BootStrap初始化的时候,调用了org.apache.catalina.startup.Bootstrap#initClassLoaders方法,这个方法里面创建了3个ClassLoader,它们分别是commonLoader,catalinaLoader,sharedLoader,其中catalinaLoad

2015-08-11 10:28:48 4905 2

原创 Tomcat请求处理过程(Tomcat源码解析五)

前面已经分析完了Tomcat的启动和关闭过程,本篇就来接着分析一下Tomcat中请求的处理过程。在开始本文之前,咋们首先来看看一个Http请求处理的过程,一般情况下是浏览器发送http请求->建立Socket连接->通过Socket读取数据->根据http协议解析数据->调用后台服务完成响应,详细的流程图如上图所示,等读者读完本篇,应该就清楚了上图所表达的意思。Tomcat既是一个Http

2015-08-11 09:25:31 8006 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 4522

原创 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 9839 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 10139

原创 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 4092 2

原创 (二)线程同步基础

1.使用 synchronized实现同步方法  如果一个对象已经用synchronized声明,那么只允许一个执行线程访问它,如果其他线程试图访问这个对象的其他方法,它将被挂起,直到第一个线程执行完正在运行的方法。被synchronized声明的方法就是临界区。 对于非静态的方法被synchronized修饰后,同一时间内只能有一个线程访问这个对象的synchronized方法。即,每一

2015-08-07 17:46:01 582

原创 java并发编程实战手册(一)线程管理

本文主要是以知识点的形式对java多线程进行了解,学习java多线程的基础,本文参考书籍《java并发编程实战手册》,若有兴趣想研究跟高级的多线程思想,可以阅读《java并发编程实战》。线程管理     1.线程的创建和运行  java线程的创建有三种方式,可能大部分人只知道常用的两种:    1.继承Thread类,并且覆盖run()方法。    2.创建一个实现Runnab

2015-08-07 15:28:31 700

原创 (一)java内存区域与内存溢出

内存模型   java虚拟机在执行java程序的过程中把他所管理的内存划分为若干个不同的数据区域。包括:程序计数器、java虚拟机栈、本地发放栈、java堆、方法区。内存模型如图: 程序计数器一块较小的内存空间,它是当前线程所执行的字节码的行号指示器,字节码解释器工作时通过改变该计数器的值来选择下一条需要执行的字节码指令,分支、跳转、循环等基础功能都要依

2015-07-28 17:20:03 947

原创 javaNIO原理(含代码)及与 同步阻塞IO 、伪异步IO比较

一.同步阻塞IO        BIO就是阻塞式的IO,网络通信中对于多客户端的连入,服务器端总是与客户端数量一致的线程去处理每个客户端任务,即,客户端与线程数1:1,并且进行读写操作室阻塞的,当有你成千上完的客户端进行连接,就导致服务器不断的建立新的线程,最后导致低通资源不足,后面的客户端不能连接服务器,并且连接入的客户端并不是总是在于服务器进行交互,很可能就只是占用着资源而已。二.

2015-05-26 20:06:00 6446

原创 DBCP数据库连接池原理分析

在比较大的项目中,需要不断的从数据库中获取数据,java中则使用JDBC连接数据库,但是获取数据库的连接可是相当耗时的操作,每次连接数据库都获得 、销毁数据库连接,将是很大的一个开销。为了解决这种开销,则使用了对象池的技术。程序启动时,先创建一定数量的数据库连接对象,然后只要一用到就直接从对象池中取出连接对象,然后使用完成后不对其销毁,而是再返回到对象池中,这样使连接池对象能反复使用,虽然增加了启

2015-05-25 10:39:55 2957

原创 揭秘Socket与底层数据传输实现

揭秘socket      什么是socket?socket字面意思其实就是一个插口或者套接字,包含了源ip地址、源端口、目的ip地址和源端口。但是socket在那个位置呢 ,在TCP/IP网络的四层体系和OSI七层好像都找不到他的影子,那么下面看一张图就可以明白了。       Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket

2015-05-24 11:18:50 16207 1

原创 socket的底层创建与关闭

Tcp连接的创建与关闭         看了网络编程的的东西,并且做了一个QQ的项目。socket编程也算是入门了,但是只是会用还是不行的,必须了解底层的实现,这篇博客就把底层的实现总结一遍。网络传输都是通过底层的TCP协议实现的,这个协议真的是很庞大,想要了解TCP的协议内容可以看一下《TCP/IP:卷一》的TCP部分,写的真是相当的经典,这里就不对TCP协议做过多的说明了,后续肯定会加上的

2015-05-23 19:43:46 3001

原创 基本套接字TCP和UDP

TCP的Java支持     协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议、TCP协议和UDP协议。现在TCP/IP协议族中的主要socket类型为流套接字(使用TCP协议)和数据报套接字(使用UDP协议)。    TCP协议提供面向连接的服务,通过它建立的是可靠地连接。Java为

2015-05-06 08:07:32 4173

原创 2015年阿里实习生面试总结

2015年阿里实习生招聘总结                就在这学期作为大三的我,本想在这个学期安安静静的学习,9月份再参加招聘,偶然在朋友那里听到了阿里实习生招聘的消息,我还是挺喜欢阿里这个公司的,氛围好,于是就网申投简历,然后笔试,再到面试,下面就说一下重点吧。       我上午在北京的面试,被HRjj领进到面试官前面,当时就觉得 这公司好豪华,就很想留在里面,但是往往越是想留在的

2015-05-03 09:56:22 1084 3

原创 KMP算法详解

KMP算法详解

2015-04-05 16:11:13 1048

原创 优于KMean聚类的 快速聚类算法(Clustering by fast search and find of density peaks_Science2014)

package com.java.html;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;i

2015-03-08 21:46:50 1807 1

原创 计算机几何 凸包 线段相交 最接近点对

package Algorithms;import java.util.Arrays;import java.util.Comparator;import java.util.Stack;/** * 算法导论 ,计算几何学,主要包括 线段的方向关系,沿着线段前进向某一个点拐弯时 左转还是右转,以及 两条线段(注意不是直线)是否相交。 以及 * 凸包(最小封闭凸多边形) 最接近点对等

2014-12-13 22:56:49 1325

转载 很特别的动态规划教程

对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产生错误理解的地方,让你难得读懂的地方,请跟贴指出,谢谢! ----第一节----初识动态规

2014-11-26 19:03:38 569

原创 分治问题集锦

自从学习《算法导论》以来已经有一段时间了,这段时间真可谓心酸,感觉web比算法简单多了,都是一些重复性的配置,但是看算法也是为了秋招的时候能去个好公司啊,所以一定要坚持下去。目前为止,基本的算法思想数据结构等都看完了,剩下的那些,真的不大容易看,总结来说《算法导论》真是经典,每一个理论都讲得很细,让人理解的很透彻,但是本科生读这本书也是很难的,所以最好能在上研究生的时候研究完,鄙人因为不大喜欢考研

2014-11-26 17:36:07 768

原创 K-Mean聚类算法

1.C++实现#include #include #include #include #include #include #include #include #include using namespace std;typedef vector StrVec; //字符串向量typedef vector IntVec; //整数向量typedef vector > I

2014-11-24 19:10:01 978 2

原创 图论 邻接链表存储 BFS DFS 拓扑排序 最小生成树 KRUSKAL PRIM

package Algorithms;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;import java.util.Stack;public class Graphic {    public static class Vertex{

2014-11-22 12:01:28 1748

原创 不相交集合(并查集)

不相交集合(两集合中没有相交元素),因为只能 进行合并和查找所求元素所在的集合,因此被称为并查集,至于怎么标志哪一个集合,可以使用集合的头结点(使用链表表示并查集),若果返回的元素一样则表示为同一个集合。如果使用森林表示,则用根节点代表这一个集合。只连接两个根节点即可。  这一般应用 在无向图的连通分量和一些图的算法中。下面说明两种实现方式:   1.  不相交森林(数组实现)森林

2014-11-20 21:42:56 3662

原创 最小优先队列实现赫夫曼树 贪心策略

使用 最小优先队列存放要编码的key,和合并之后内部节点,注意最小优先队列,获得最小值时会把最小是删掉,下面是java实现。package Algorithms;class MinQueue>{ int heapSize; T[] heap; int capacity; public MinQueue(int capaticty) { this.capacity=capatic

2014-11-16 17:10:37 994

原创 浅谈动规贪心 与0-1背包和分数背包问题

首先介绍一下动态规划...设计一个动态规划算法,通常可按照以下几个步骤进行:(1) 找出最优解的性质,并刻画其结构特征。(2) 递归地定义最优解的值(3) 以自底而上的方式计算出最优值(4) 根据计算最优值时得到的信息,构造一个最优解。对于一个给定的问题,若具有以下两个性质,则可以考虑用动态规划法来求解。(1) 最优子结构。如果一个问题的最优解中包含了其子问题的最优解,

2014-11-14 19:05:32 2535

原创 贪心策略 活动安排 会场安排

会场安排问题: 假设要用很多个教室对一组活动进行调度。我们希望使用尽可能少的教室来调度所有的活动。请给出一个有效的贪心算法,来确定哪一个活动应使用哪一个教室。(这个问题也被成为区间图着色(interval-graph coloring)问题。我们可作出一个区间图,其顶点为已知的活动,其边连接着不兼容的活动。为使任两个相邻结点的颜色均不相同,所需的最少颜色对应于找出调度给定的所有活动所需的最少教

2014-11-13 22:05:40 1234

原创 最长回文子序列

动态规划最关键的就是构造数组或者矩阵,找出递归式,怎么由子问题最优解求出原问题最优解,注意要找出所有的子问题(知道子问题求解方法),自底向上。/**最长回文子序列:算法类似于最长公共子序列 * 求解关键:构造递归式和找出所有的最优子结构 * * @param s:输入的字符串 * @param i,j:查找回文的子串

2014-11-12 17:55:29 892

原创 动态规划 钢条分割 矩阵链乘 最长公共子序列 最优二叉树

1.动态规划               动态规划的方法与方法类似,英文“dynamic programming”,这里的programming不是程序的意思,而是一种表格法。都是通过组合子问题的解来解决原问题,分治方法将划分为互不相交的子问题,递归的求解子问题,再将它们的解组合起来求出原问题的解。与之相反动态规划应用于子问题的重叠情况,即不同的子问题具有公共的子问题,子问题的求解是递归进行

2014-11-06 21:06:01 1267

Tomcat源码

Tomcat源码,官方下载,可以使用,绝对没问题 ,请放心下载

2015-08-09

fast Clustering

基于快速聚类和密度分析的算法 优于K-Means

2014-12-02

算法导论英文版

算法导论英文版这里有详细的英文版 是学习 算法的神书

2014-11-04

算法导论第三版课后答案

算法导论第三版课后答案_2-25章.pdf 苏安发导论

2014-11-04

空空如也

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

TA关注的人

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