自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 收藏
  • 关注

原创 书签-java开发超级工具集

url:http://book.51cto.com/art/201001/177819.htm

2010-06-22 15:10:24 148

原创 java虚拟机参数

http://wangdei.iteye.com/blog/204621JVM调优总结 -Xms -Xmx -Xmn -Xsshttp://www.diybl.com/course/3_program/java/javajs/2008630/129292.html

2009-09-27 07:33:22 114

原创 C3P0

c3p0配置http://breezee.blog.51cto.com/101744/35977

2009-09-24 10:52:16 109

原创 关于集群配置

http://www.easywayserver.com/tomcat-clustering.htm#Session-Maintenance

2009-09-22 13:34:40 111

电子书

Core Java 2 Volume I - Fundamentals, Seventh Edition.pdfCore Java 2 Volume II - Advanced Features, Seventh Edition.pdf

2008-07-06 00:33:37 128

图-最小路径

这里使用的是Dijkstra来计算最短路径。事实上Dijkstra完成时,指定节点到所有节点的最小路径均已求出。算法简述如下:准备好两个辅助性数据结构:1 ParentLength : 用来记录到当前节点之前的父节点,与到当前节点的最小路径2 Path: 记录指定节点到所有节点的ParentLength。初始化时,所有的ParentLength的父节点都为指定的起始节点,长度都是INFIN...

2008-05-28 00:40:26 175

图-代权最小树

图中代权的最小树的问题如下:如果N个城市之间(图中的顶点)要修公路(图中的边)以使所有的城市联通,求怎样修可以使得公路的总长最小?以上问题中的N个城市之间可以用图中的顶点表示,公路可以图中的边表示,公路的长度用边长表示,公路是双向的。问题就转换为在有N个顶点中的双向代权图中求得一个最小树。这里的代权指的边的长度,这与以前的不代权的最小树生成算法有很大的区别。算法描述如下:    任选...

2008-05-27 00:07:52 156

图-每一对端点间的最小距离

与传递闭包问题非常相似的一个问题是,能不能给出一个矩阵,根据矩阵可以以时间代价O(n)的方式得到在一个有向代权图中任意指定端点之间的最短距离。求的这个矩阵的问题被称为每一对端点间的最小距离问题。这里采用的是Floyd算法,它与WalShall算法非常相似:如果A可以到达B,距离为x,且C可以到达A,距离为y,则求得C可以到达B,距离为 z = x + y,z小于如果c到B的原来的距离,则用...

2008-05-26 00:24:38 134

图-传递闭包

图的传递闭包是指修正后的邻接矩阵表示的图。(见Graph 图-邻接矩阵法)在多个顶点的有向图中,每个顶点可以到按照方向到达一定的节点,这叫图的连通性。有种方法直接告诉我们,图中的两个节点是否可以联通,这里说的是WarShall算法。WarShall的基本原理是,如果A可以到达B,且C可以到达A,则C可以到达B。通过对邻接矩阵的修正可以做到这点。随然这里举例是将两步可并成一步,但数学上可以证明...

2008-05-23 07:57:42 1183

图-拓扑排序

当每个任务有前后置关系时,需要找到一种满足前后置关系的路线,将任务完成。如果将每个任务看成一个节点,任务之间的前后置关系表示为有向图时,这种路线顺序叫做为图进行拓扑排序。也叫关键路径分析。这里的图用邻接矩阵法表示,算法的关键是:1 找到一个没有后继的顶点2 在图中删除它,放入结果数组中3 重复 步骤 1 ,步骤 2 直到图中没有多余的节点。如果图中出现环装结构,则算法无法进行,因为此时...

2008-05-22 00:54:38 83

图-最小树

如果一个图中所有点都是联通的,求最小树可以将图遍历完成,这里的最小是指边最少,跟边长没有关系。算法利用深度优先遍历,记载每个遍历过的节点,将节点按照遍历顺序记录下来就是所谓的最小树。关于深度优先遍历请参见深度优先遍历。不过这里奇怪的是:假如所有节点之间是双向联通的,只用生成一个数组,装入所有的节点,例如{'a','b','c','d','d'}然后每两个点之间的线段就是最小树的结果,即a...

2008-05-21 00:08:56 409

图-广度优先遍历

这里的图的广度优先遍历算法利用了队来实现。图的深度遍历原则:1 如果有可能,访问所有领接的未访问的节点,标记它们,并把它们放入队中。2 当不能执行规则 1 时,如果对不为空,则从队中弹出头元素。重新执行规则 13 如果不能执行规则 1 和规则 2 时,则完成了遍历。代码中的图使用的是Graph 图-邻接矩阵法来表示,其他的表示法请见:Graph 图-邻接表法代码中的Queue为辅助...

2008-05-20 00:11:28 110

图-深度优先遍历

这里的图的深度优先算法利用了栈来实现。图的深度遍历原则:1 如果有可能,访问一个领接的未访问的节点,标记它,并把它放入栈中。2 当不能执行规则 1 时,如果栈不为空,则从栈中弹出一个元素。3 如果不能执行规则 1 和规则 2 时,则完成了遍历。代码中的图使用的是Graph 图-邻接矩阵法来表示,其他的表示法请见:Graph 图-邻接表法代码中的Stack为辅助结构,用来记载访问过的...

2008-05-19 00:14:44 103

递归-全排列

将指定数组全排列打印,此处使用递归算法。其核心是,轮流将数组中每个数字放在第一位上,然后调用剩下n-1个数字的全排列。以此形成递归。以下是代码:class Arrangement { public static void main(String[] args) { int[] a = {1,2,3,4}; print(a,0,true); }...

2008-05-16 21:00:49 97

递归-组合

求指定数据的组合,这里的指定数据用一个数组模拟所有可以选择的数据这个问题与背包问题解法相似,在任何一个时间点上可以将此问题划分为两个类似的子问题:组合中包含当前数据的,和组合中不包含当前数据的。组合中包含当前数据的:在剩下的可选数据求得可能的n-1个元素的组合。组合中不包含当前数据的:在剩下的可选数据求得可能的n个元素的组合。组合可以看成另外一种背包问题,见递归-背包问题。代码如下:求...

2008-05-15 01:12:59 129

递归-背包问题

背包问题有许多种形式,最简单的背包问题形式:现在有一堆石头,(比如重量为2,6,8,10),一个背包中可以装指定的重量(比如14)的石头,请问背包中可以放入的石头的组合。代码中假设石头是个源数组,背包是目标数组。算法中使用分治的想法将此问题递归为两个小范围的问题。针对第n个石头,背包问题可以分解为两种组合的何:含第n个石头的背包的组合,与不含n个石头的背包的组合,1.假设含第n个石头,背包...

2008-05-14 00:10:04 295

递归-汉诺塔

汉诺塔问题。这里顺便可以求出一共需要搬运的次数。以下是汉诺塔问题的解法:class Hanoi { public static void main(String[] args) { int times = hanoi(3,'a','b','c'); System.out.println("一共搬运" + times + "次"); } //from: 搬运的起点, to:搬运...

2008-05-13 00:13:03 94

递归-求幂

计算幂,n^m,其中n为底数,m为幂当m取值比较大时如果采用m个n相乘的办法,计算显得冗长。可以采用以下方法重新组织算法:n^m == n^((m/2) * 2)n^m == (n^(m/2))^2假设如果可以求得temp = n^(m/2),则n^m = temp * temp这里采用了递归的做法,将n^m问题转换成为n^(m/2)的问题,将近减少了一半运算量。特殊情况是m不...

2008-05-12 00:08:15 303

递归-二分法查找

二分法查找是建立在针对有序数组的查找,这里使用的是递归的算法,算法本身比较简单,这里就不再叙述。二分法查找的时间效率为O(log n)代码如下:class BinarySearch { public static void main(String[] args) { int[] a = {2,3,4,5,6,7,8,9,10,13,17,18,24,56,78}; System.o...

2008-05-11 02:03:58 89

递归-阶乘

用递归算法求得阶乘。阶乘用迭代可以更有效的求得。这里只是演示递归的算法。下面是代码。 1. class Factorial { 2. public static void main(String[] args) { 3. for(int i=1; i<10; i++) System.out.print(getNext(i) + " ");...

2008-05-10 15:45:51 102

数组练习2

现在游戏规则如下:500个小孩首尾相连拉成一个圆圈,从第0个小孩起,依次报数,每当数到3,该小孩退出圈,下一个小孩接着从1开始报数。如此下去圈中的小孩越来越少,求最后一个小孩是哪一个。代码采用两种方法解决这个问题。代码如下:class Children { public static void main(String[] args) { play2(); play1(); }...

2008-05-09 00:39:28 122

排序-堆

堆排序的时间效率与快速排序相同,也为O(n * log n)。空间上没有使用多余的空间。基于数组堆的相关定义算法见Heap 堆排序基于以下假设:    如果一个节点的两个子堆是正确,可以通过下降trickleDown使得堆恢复正常。    一个无序数组的n/2~n的数字可以看成为没有子堆的正确的堆。    对从n/2-1  至 0的元素依次调用trickleDown,可以将一个无序...

2008-05-08 08:34:20 84

排序-基数

基数排序是种与众不同的排序方法,它不是基于比较和交换。其理论时间效率是O(n)。基数排序的基本想法是将每个数字按照一定的基数拆分,然后根据每一位将数据反复排序。例如:    代排序数组:{7,3,1,5,4}    基数:2用基数表示源排序数组:{111,011,001,101,100}首先按照第0位(从右边数起),根据0位是0,还是1将数组中数据放入0队列或1队列中,然后再将数据从两个队列中取...

2008-05-07 00:24:17 77

排序-快速

快速排序是通用排序中(针对内存中)最为流行的算法,其时间效率为O(n * log n)。其关键算法是基于划分的排序。划分只将数组中任意一个元素作为枢纽值,经过交换,使得数组中排列成所有小于枢纽的数值都在枢纽左边,而所有大于枢纽的数值都在枢纽右侧,然后返回枢纽的位置。注意,枢纽的选择可以是任意的。快排选择将给定数组范围的的第一个数字作为枢纽,然后将数组分为两部分,大于枢纽的,小于枢纽的。然后对...

2008-05-06 00:39:37 78

排序-希尔

插入排序对基本有序的数组效果非常好,但是对于通常情况则表现一般。假设最小的数字在最右边,升序排序时,这个数则要经过n次交换比较换到最左边。希尔排序则是对插入排序的很好的修正。而且在希尔排序很少出现最坏状况。希尔排序通过对数组 以一定间隔相隔的位置 进行插入排序,以达到让数据快速出现在它应该出现的位置的周围,使数组逐步接近基本有序。随着间隔的减少,数组越来越接近基本有序,最后间隔为1时,变成标准...

2008-05-05 00:17:58 93

排序-归并

归并排序的时间效率为O(n * log n)算法假设两个已有序的数组,将其归并成一个有序的数组(见merge函数)。算法将数组分为前后两部分,对这两部分递归调用归并排序,然后将这两部分再合并。算法的空间效率不高,需要多耗费一倍的空间。class Merge { public static void main(String[] args) { int[] a = {3,2,5,2,0,6...

2008-05-03 17:57:33 79

排序-插入

插入排序算法比冒泡和选择略微复杂些,但效率好些。插入排序总是假设指定位置的左边的数组是有序的,而后将指定位置的值插入左边的有序数组。指定的位置从下标1开始,每次循环递增1,直到数组结束。插入排序的比较次数与交换次数的时间效率均为O(n^2),确切的说是O(n^2 / 4),比冒泡排序快一倍。对于一个基本有序数组,由于内循环基本都是空循环,插入排序的效率接近O(n),但对于完全逆序数组,...

2008-05-02 23:30:02 85

Tree 红黑树

红黑树是一种二叉平衡树搜索树,相关背景知识此处不再叙述。节点与关键值之间的关系与普通二叉树一致,只是在插入时要保证红黑规则,如果插入过程中违反了红黑规则,树则会通过自我调整,改变树的结构和节点的颜色,使之满足红黑规则。满足红黑规则的树是平衡树。红黑规则如下:1. 每一个节点不是黑的就是红的2. 根总是黑的3. 红色节点的子节点必定是黑的,反之未必4. 从根到叶节点或空子节点的每条路径...

2008-05-01 17:23:34 72

排序-冒泡

冒泡排序的算法此处不在叙述。冒泡排序比较与交换的时间效率都是O(n^2)。下面提供冒泡排序的Java代码。代码足够简单,没有加注释。class Bubble { public static void main(String[] args) { int[] a = {6,3,2,6,3,2,9,7}; sort(a); print(a);...

2008-04-28 22:00:44 101

递归-三角数字

三角数字是这样一组数字:1 3 6 10 15 21 28 36 45......其中第n个数字等于n-1个数字的值加上n。此处用递归算法求三角数字。(要求得该数字不一定要使用递归,迭代来的效率更高一些)下面是代码:class Triangle {    public static void main(String[] args) {        for(int i=1; i<...

2008-04-27 19:47:04 244

排序-选择

选择排序,原理与冒泡类似,相比之下,交换的时间效率为O(n),比较的时间效率依然为O(n^2)代码如下,程序简单,没有提供注释。 class Select { public static void main(String[] args) { int[] a = {2,4,6,3,6,2,6,4,9}; sort(a); print(...

2008-04-27 17:44:47 85

Tree 2-3 平衡搜索树

与2-3-4树相似,2-3 平衡树是一种搜索树。但由于每个节点最多有两个数据,分裂算法需要新插入数据的参与,这导致算法与2-3-4树有一定的差异。每个节点可能会有2,3,4个子节点,对应可能会有1,2,3个数据。子节点数=数据数 + 1,不可能有空节点。插入数据时,树向下遍历以得到恰当的叶子节点时,数据均插入叶子节点,如果子节点需要分裂,则进行节点分裂,分裂产生的...

2008-04-25 00:21:16 207

Tree 2-3-4 平衡搜索树

2-3-4 平衡树是一种搜索树。每个节点可能会有2,3,4个子节点,对应可能会有1,2,3个数据。子节点数=数据数 + 1,不可能有空节点。插入数据时,数据均插入叶子节点,树在向下遍历以得到恰当的叶子节点时,每遇到满的节点,则进行节点分裂,当分裂向上累积致根节点位置,根节点分裂,所有叶子节点的层高都增加一层,以此原理来保证树的平衡。此树没有实现删除数据的算法,如果需要,可考虑将数据标志为作废的...

2008-04-20 10:53:27 170

Graph 图-邻接表法

用邻接表法表示的双向图(改单向容易,只要修改connect,disconect方法)。此处只是表示数据结构,没有相关算法。其中Vertex是辅助类表示顶点,其中包含一个boolean变量isVisited表示是否遍历过。Graph表示图,实际存储顶点,以及顶点之间的关系,用一个数组存储顶点,另一个数组中存放与对应的顶点的相连的的顶点的下标。大部分的代码实际是辅助代码,其中包括:Verte...

2008-04-17 00:08:30 390

Graph 图-邻接矩阵法

用邻接矩阵法表示的双向图(改单向容易,只要修改connect,disconect方法)。此处只是表示数据结构,没有相关算法。其中Vertex是辅助类表示顶点,其中包含一个boolean变量isVisited表示是否遍历过。Graph表示图,实际存储顶点,以及顶点之间的关系(用二维数组表示)另一个实现请请参见class Vertex { private Object value; p...

2008-04-16 22:56:47 602

反射的效率

用下面这个例程测试同样的赋值通过反射方式,和通过普通方式(set方法)下的效率差别。在作者当前的系统下(Linux:ubuntu7.10 java-sun-6):反射赋值:set方式 =  170:1  或者  171:2效率差别还是比较明显。import java.lang.reflect.*;class Person { private int age; publi...

2008-04-16 18:18:15 586

Heap 堆

这里的堆不是java中内存分配的堆。只是一种数据结构。堆是二叉满树,满足条件:父节点的键值大于两个子节点的键值,这不同于二叉搜索树(见Tree),堆对于实现优先级队列是一种好的方式,相对于利用数组的优先级队列,利用链表的优先级队列来说,其插入与删除的效率都是O(log n)此堆的实现使选择数组作为内部数据结构,使得此堆能容纳的数据有限,但找到最下一层的作右子节点比交方便。用数组存储树时,求...

2008-04-16 00:28:46 66

HashTable 基于链表地址法

功能上于前面两个HashTable(-),HashTable(二)一致,但实现上采用的链表表示每个Hash桶的位置,这样理论上不用考虑容量问题。实际中HashTable中的每个SortLink太长会导致效率低下,因此HashTable的初始大小比较重要。链表使用的是有序链表SortLink,这样查找,删除的效率会提高一半,但是新增则会从O(1)降到链表的平均长度的一半。考虑链表不是太长,所以...

2008-04-15 00:49:16 214

HashTable 基于开放地址法(二)

与前一个HashTable基本相同(方法说明请参照它),只是当发生Hash冲突时,采用再用哈希法探测步长。前面当发生Hash冲突时,直接看当前位置下一个有没有空位,这相当于步长为一,但这容易产生聚集,大的聚集产成后Hash的效率会下降,采用Hash法采用的是使用不同的Hash函数来产生一个新的步长。新的hash有以下要求非0与第一个Hash函数不同除此之外:这个HashTable的s...

2008-04-14 19:40:45 130

HashTable 基于开放地址法

该HashTable基于定常数组的开放地址法,搜索时采用线性探测发由于删除时使用标志的做法,因此该HashTable常作删除会导致效率的下降。为了保证此表的操作效率,数组的大小为所需要存储的数据的两倍。如果再细致一些,应该是大于其两倍的的第一个质数,这样可以减小Hash冲突的可能性,不过这里没有这样作,同样是为了代码清晰。HashTable的遍历不占优势,此处没有实现。APIfind:查...

2008-04-13 22:59:20 172

jchart-pdf

jchart 的pdf文档,介绍jchart的使用,E文,不过很好懂

2011-11-16

空空如也

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

TA关注的人

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