Java基础知识
文章平均质量分 86
喝酸奶舔盖儿的土鳖
事情都是有双面性的。
展开
-
图结构(三)- 邻接表无向图
一、邻接表无向图的介绍邻接表无向图是指通过邻接表表示的无向图。上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7条边。上图右边的矩阵是G1在内存中的邻接表示意图。每一个顶点都包含一条链表,该链表记录了"该顶点的邻接点的序号"。例如,第2个顶点(顶点C)包含的链表所包原创 2015-01-27 16:19:11 · 1978 阅读 · 0 评论 -
排序算法(二)- 快速排序
一、快速排序介绍快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序流程:(1) 从数列中挑出一个基准值。(2) 将所有比基准值小的摆放在基准原创 2015-01-23 06:30:17 · 409 阅读 · 0 评论 -
排序算法(一)- 冒泡排序
一、冒泡排序介绍冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!二、冒泡排序图文说原创 2015-01-23 06:17:02 · 413 阅读 · 0 评论 -
(七)Tomcat源码解析 - Servlet 工作原理解析
Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础。因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的基本要求。本文将带你认识 Java Web 技术是如何基于 Servlet 工作,你将知道:以 Tomcat 为例了解 Servlet 容器是如何工作的?一个 Web 工程在 Servlet转载 2015-02-28 15:47:59 · 949 阅读 · 0 评论 -
(一)Tomcat源码解析 - Apache与Tomcat
一、Apache(Web服务器)Apache源于NCSAhttpd服务器,经过多次修改,由于其跨平台和安全性被广泛使用,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它原创 2015-02-12 15:45:58 · 688 阅读 · 0 评论 -
(二)Tomcat源码解析 - Tomcat架构详解
一、ServerIn the Tomcat world, a Server represents the whole container. Tomcat provides a default implementation of the Server interface., and this is rarely customized by users.在tomcat的世界里,一个serv原创 2015-02-12 15:53:59 · 565 阅读 · 0 评论 -
(六)Tomcat源码解析 - Tomcat 系统架构与设计模式(二)-设计模式分析
原文链接:http://www.ibm.com/developerworks/cn/java/j-lo-tomcat2/这个分为两个部分的系列文章研究了 Apache Tomcat 服务器的系统架构以及其运用的很多经典设计模式。第 1 部分 分析了 Tomcat 的工作原理,第 2 部分将分析 Tomcat 中运用的许多经典设计模式,如模版模式、工厂模式和单例模式等。通过学习它们的实践转载 2015-02-28 15:31:30 · 589 阅读 · 0 评论 -
(四)Tomcat源码解析 - 一次request与response的过程
Tomcat最本质就是一个能运行JSP/Servlet的Web服务器 ,如果真正的想了解tomcat它的运转机制,最典型的应用就是用户通过浏览器访问服务器,Tomcat接收到请求后转发给Servlet,由Servlet处理完成之后,把结果返回给客户端。今天分析tomcat一次request与response的过程。最简单的方式是,Hello World! 进入debug模式。Tomcat处理原创 2015-02-28 11:46:09 · 1702 阅读 · 0 评论 -
(三)Tomcat源码解析 - Tomcat基础知识介绍
一、Tomcat目录结构1、bin: 存放启动和关闭tomcat脚本 Catalina:主要的脚本,用以启动和停止服务,供其他脚本调用。 Cpappent:其他脚本调用该脚本在Tomcat启动前动态设置classpath,允许用户在同一个安装下通过设置配置文件来重写该配置参数,各用户之间的设置互不影响。Digest:该脚本用于创建同期管理验证的摘要密码,通过加密密码提高安全性,原创 2015-02-26 13:14:10 · 585 阅读 · 0 评论 -
(五)Tomcat源码解析 - Tomcat 系统架构与设计模式(一)-工作原理
这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用的很多经典设计模式。本文是第 1 部分,将主要从 Tomcat 如何分发请求、如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析 Tomcat 的工作原理,这也是一个 Web 服务器首要解决的关键问题。本文以 Tomcat 5 为基础,也兼顾最新的 Tomcat 6 和 Tomcat 4。转载 2015-02-28 14:55:41 · 558 阅读 · 0 评论 -
(九)Tomcat源码解析 - WebApp类加载机制原理分析
在一般的业务开发中我们可能较少接触和使用ClassLoader,但是在进行框架级程序开发时,设计良好的类加载机制能够实现更好地模块划分和更优的设计,如Java模块化技术OSGi就是通过为每个组件声明独立的类加载器来实现组件的动态部署功能。在Tomcat的代码实现中,为了优化内存空间以及不同应用间的类隔离,Tomcat通过内置的一些类加载器来完成了这些功能。原创 2015-03-03 17:01:54 · 605 阅读 · 0 评论 -
(八)Tomcat源码解析 - Tomcat类加载器原理
在JVM系列中说到JVM的类加载过程,tomcat类加载器是依赖于JVM类加载器的。 首先了解一下双亲委派模型原理:类加载器是树形结构,那加载类时就需要定义类到底由当前加载器还是父加载器去搜索加载。JVM加载模型的工作过程是: 如果一个类加载器收到了类加载的请求,它不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成。 每一个层次的类加载器都是原创 2015-03-03 16:38:09 · 492 阅读 · 0 评论 -
(十)Tomcat源码解析 - Tomcat总结
通过这一系列的tomcat源码的学习,了解到tomcat的定义、组成、工作原理及过程,总结来说,tomcat本质可以理解为一个容器。推荐一本书《深入剖析tomcat》中文英文版均可,里面讲述了tomcat的更加本质,更加透彻的理论原理。接下来研究“网络协议”这个版块,然后继续讲tomcat原理的本质。Tomcat源码解析(待续)。原创 2015-03-12 17:34:48 · 419 阅读 · 0 评论 -
常用正则表达式
正则表达式用于字符串处理、表单验证等场合,实用高效、本文收集了一些常用的表达式:匹配中文字符的正则表达式: [u4e00-u9fa5] -- 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^x00-xff] -- 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)匹配空白行的正则表达式:ns*r --原创 2015-04-14 17:24:30 · 349 阅读 · 0 评论 -
session和cookie的辨析
session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述和辨析,希望能与大家共同探讨下。 session和cookie的最大区别在于session是保存在服务端的内存里面,而cookie保存于浏览器或客户转载 2015-04-17 14:39:34 · 429 阅读 · 0 评论 -
javascript方法大收集
转载:http://www.woween.com/f2e/2013/08/26/javascript-method-to-collect.html转载 2015-07-11 22:15:22 · 445 阅读 · 0 评论 -
排序算法(三)- 直接插入排序
一、直接插入排序算法介绍直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。二、直接插入排序图文说明代码如下:/* * 直接插入排序原创 2015-01-25 12:42:02 · 618 阅读 · 0 评论 -
(十)Spring事务处理 - IoC容器的事务处理源码分析
Spring事务处理主要分以下三个主要的过程:(1)读取和处理在Spring IoC容器中配置的事务处理属性,并转化为Spring事务处理所需要的内部数据结构。(2)Spring事务处理模块实现的统一的事务处理过程。这个通用的事务处理过程包括:处理事务配置属性;事务配置属性与线程绑定等。(3)底层事务处理实现。Spring中底层事务处理的实现交由PlatformTransact原创 2015-02-10 16:25:41 · 1331 阅读 · 0 评论 -
(十二)Spring事务处理 - 事务处理的实现
在Spring的事务处理中,通用的事务处理流程框架是由抽象事务管理器AbstractPlatformTransactionManager来提供,而具体的底层事务处理实现,由PlatformTransactionManager的具体实现类来实现,如 DataSourceTransactionManager 、JtaTransactionManager和 HibernateTransactionMan原创 2015-02-10 17:01:15 · 1468 阅读 · 0 评论 -
图结构(四)- 邻接矩阵有向图
一、邻接矩阵有向图的介绍邻接矩阵有向图是指通过邻接矩阵表示的有向图。上面的图G2包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了",,,,,,,,"共9条边。上图右边的矩阵是G2在内存中的邻接矩阵示意图。A[i][j]=1表示第i个顶点到第j个顶点是一条边,A[i][j]=0则表示不是一条边;而A[i][j]表示的是第i行第j列的值;例如,A[1,2]=1,表示第原创 2015-01-27 16:33:26 · 1706 阅读 · 0 评论 -
排序算法(四)- 希尔排序
一、希尔排序介绍希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成若干个组子序列,所有距离为gap的倍数的记录放在同一个组中;然后,对各组内的元素进行直接插入排序原创 2015-01-27 14:14:43 · 1269 阅读 · 1 评论 -
排序算法(五)- 选择排序
一、选择排序介绍选择排序(Selection sort)是一种简单直观的排序算法。它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。二、选择排序图文说明选择排序代码:/* * 选择排序 * * 参数说明: *原创 2015-01-27 14:33:54 · 512 阅读 · 0 评论 -
图结构(六)- 深度优先搜索与广度优先搜索
一、深度优先搜索的图文介绍1. 深度优先搜索介绍图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。 若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复原创 2015-01-27 18:59:01 · 479 阅读 · 0 评论 -
图结构(五)- 邻接表有向图
一、邻接表有向图的介绍邻接表有向图是指通过邻接表表示的有向图。上面的图G2包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了",,,,,,,,"共9条边。上图右边的矩阵是G2在内存中的邻接表示意图。每一个顶点都包含一条链表,该链表记录了"该顶点所对应的出边的另一个顶点的序号"。例如,第1个顶点(顶点B)包含的链表所包含的节点的数据分别是"2,4,5";而这"2,4,5"分别原创 2015-01-27 18:03:48 · 2925 阅读 · 0 评论 -
排序算法(六)- 归并排序
一、归并排序的介绍将两个的有序数列合并成一个有序数列,我们称之为"归并"。归并排序(Merge Sort)就是利用归并思想对数列进行排序。根据具体的实现,归并排序包括"从上往下"和"从下往上"2种方式。1. 从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这些数列两两合并;得到若干个长度为4的有序数列,再将它们两两原创 2015-01-27 15:48:05 · 516 阅读 · 0 评论 -
图结构(七)- Kruskal算法
一、最小生成树在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。例如,对于如上图G4所示的连通网可以有多棵权值总和不相同的生成树。二、克鲁斯卡尔算法介绍克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法。 基本思想:按照权值从小到大的顺序选择n-1条边,并保证这n-原创 2015-01-27 19:59:16 · 616 阅读 · 0 评论 -
图结构(八)- Prim算法
一、普里姆算法介绍普里姆(Prim)算法,是用来求加权连通图的最小生成树的算法。 基本思想 对于图G而言,V是所有顶点的集合;现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T存放G的最小生成树中的边。 从所有uЄU,vЄ(V-U) (V-U表示出去U的所有顶点)的边中选取权值最小的边(u, v),将顶点v加入集合U中,将边(u, v)加入集合T中,如此不断重复,原创 2015-01-27 20:16:47 · 460 阅读 · 0 评论 -
HashMap与HashTable(一)-源代码
一、HashMap源代码:/* * %W% %E% * * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.ut原创 2014-12-25 14:32:43 · 760 阅读 · 0 评论 -
HashMap与HashTable(三)-区别与联系
Hashtable和 HashMap做为 Map的基本特性 两者都实现了Map接口,基本特性相同- 对同一个Key,只会有一个对应的value值存在- 如何算是同一个Key? 首先,两个key对象的hash值相同,其次,key对象的equals方法返回真内部数据结构Hashtable和HashMap的内部数据结构相转载 2014-12-26 06:20:15 · 566 阅读 · 0 评论 -
堆结构(三) - 斜堆的原理与实现
一、斜堆的介绍斜堆(Skew heap)也叫自适应堆(self-adjusting heap),它是左倾堆的一个变种。和左倾堆一样,它通常也用于实现优先队列;作为一种自适应的左倾堆,它的合并操作的时间复杂度也是O(lg n)。它与左倾堆的差别是:(1) 斜堆的节点没有"零距离"这个属性,而左倾堆则有。(2) 斜堆的合并操作和左倾堆的合并操作算法不同。斜堆的合并操作(1) 如原创 2015-01-16 06:06:52 · 855 阅读 · 0 评论 -
图结构(二)- 邻接矩阵无向图
一、邻接矩阵无向图的介绍邻接矩阵无向图是指通过邻接矩阵表示的无向图。上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7条边。由于这是无向图,所以边(A,C)和边(C,A)是同一条边;这里列举边时,是按照字母先后顺序列举的。上图右边的矩阵是G1在内存中的邻接矩阵示意图。A[i原创 2015-01-22 06:27:27 · 994 阅读 · 0 评论 -
图结构(一)- 图的理论基础
一、图的基本概念1、图的定义定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为"顶点(vertex)",而点与点之间的连线则被成为"边或弧"(edege)。通常记为,G=(V,E)。2、图的分类根据边是否有方向,将图可以划分为:无向图和有向图。2.1、无向图上面的图G0是无向图,无向图的所有的边都是不区分方向的原创 2015-01-16 06:26:43 · 607 阅读 · 0 评论 -
国外程序员整理的Java资源大全
构建这里搜集了用来构建应用程序的工具。•Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配置,所以维护起来相当困难。•Gradle:Gradle采用增量构建。Gradle通过Groovy编程而不是传统的XML声明进行配置。Gradle可以很好地配合Maven进转载 2015-02-10 15:57:45 · 688 阅读 · 0 评论 -
(十一)Spring事务处理 - 事务处理的过程
Spring的声明式事务处理的即开即用特性为用户提供了很大的方便,在使用Spring时,我们绝大多数情况下还是使用其声明式事务处理。声明式事务处理涉及Spring框架对事务处理的统一管理,以及对并发事务和事务属性的处理,是一个比较复杂的过程,下面了解一下Spring框架声明式事务处理功能的具体实现。一、事务的创建原创 2015-02-10 16:50:28 · 5260 阅读 · 1 评论 -
HashMap与HashTable(二)-HashMap原理与实现
HashMap在Java开发中有着非常重要的角色地位,每一个Java程序员都应该了解HashMap。主要从源码角度来解析HashMap的设计思路,并且详细地阐述HashMap中的几个概念,并深入探讨HashMap的内部结构和实现细节,讨论HashMap的性能问题。1. HashMap设计思路以及内部结构组成HashMap设计思路 Map是一种以键值对存储数据的原创 2014-12-25 15:50:49 · 2008 阅读 · 3 评论