自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java的并发(三)

加入一个线程一个线程可以再其他线程之上调用join()方法,其效果是等待一段时间直到第二个线程结束才继续执行。如果某个线程在另一个线程t上调用t.join(),此线程将被挂起,直到目标线程t结束才恢复(即t.isAlive()返回为假)。也可以在调用join时带上一个超时参数(单位可以是毫秒,或者毫秒和纳秒),这样如果目标线程在这段时间到期时还没有结束的话,join()方法总能返回。对

2015-10-05 20:58:01 502

原创 Java的并发(二)

从任务中产生返回值Runnable是执行工作的独立任务,但是它不返回任何值。如果你希望任务在完成时能够返回一个值,那么可以实现Callable接口而是不是Runnable接口。在Java SE5中引入的Callable是一种具有类型参数的泛型,它的类型参数表示的是从方法call()而不是run()中返回的值,并且必须使用ExecutorService.submit()方法调用它,下面是一个简单

2015-10-04 21:54:54 465

原创 Java的并发

定义任务线程可以驱动任务,因此你需要一种描述任务的方式,这可以由Runnable接口来实现。要想定义任务,只需实现Runnable接口并编写run()方法,使得该任务可以执行你的命令。如下LiftOff类的run()方法将显示倒计时:public class LiftOff implements Runnable { protected int countDown = 10;

2015-10-03 10:08:34 511

原创 排序算法(Java语言)——快速排序

在Java中,快速排序用作基本类型的标准库排序。顾名思义,快速排序quicksort是实践中的一种快速的排序算法,在C++或Java基本类型的排序中特别有用。它的平均运行时间是O(NlogN)。该算法之所以特别快,主要是由于非常精练和高度优化的内部排序。它的最坏情形性能为O(N^2),但经过稍许努力可使这种情况极难出现。

2015-09-01 23:49:21 755

原创 数据结构(Java语言)——HashTable(开放定址法)简单实现

分离链接散列算法的缺点是使用一些链表。由于给新单元分配地址需要时间,因此这就导致算法的速度有些减慢,同时算法实际上还要求对第二种数据结构的实现。另有一种不用链表解决冲突的方法是尝试另外一些单元,直到找出空的单元为止。更常见的是,单元h0(x),h1(x),h2(x),...相继被试选,其中hi(x)=(hash(x)+f(i)) mod TableSize,且f(0)=0。函数f是冲突解决方法,因

2015-08-27 22:12:29 2005

原创 数据结构(Java语言)——HashTable(分离链接法)简单实现

散列表的实现通常叫做散列hashing。散列是一种用于以常数平均时间执行插入、删除和查找的技术。但是,那些需要元素间任何排序信息的树操作将不会得到有效的支持。理想的散列表数据结构只不过是一个包含一些项的具有固定大小的数组。通常查找是对项的某个部分(数据域)进行的,这部分叫做关键字。例如,项可以由一个串(作为关键字)和其它一些数据域组成。我们把表的大小记作TableSize,并将其理解为散列数据结构

2015-08-26 23:41:23 2337

原创 数据结构(Java语言)——BinaryHeap简单实现

优先队列priority queue是允许至少下列两种操作的数据结构:insert插入以及deleteMin(删除最小者),它的工作是找出,返回并删除优先队列中最小的元素。insert操作等价于enqueue入队,而deleteMin则是dequeue出队在优先队列中的等价操作。    一种实现优先队列的方法是使用二叉堆binary heap,它的使用对于优先队列的实现相当普遍,以至于当堆he

2015-08-24 22:11:50 2617

转载 字符串和编码

转载自:廖雪峰的官方网站字符串比较特殊的是还有一个编码问题。因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最

2015-08-24 17:45:42 307

原创 排序算法(Java语言)——归并排序

归并排序mergesort中基本的操作是合并两个已排序的表。因为这两个表已排序,所以若将输出放到第三个表中,则该算法可以通过对输入数据一趟排序完成。基本的合并算法是取两个输入数组A和B,一个输出数组C,以及3个计数器Actr、Bctr、Cctr,他们初始置于对应数组的开始端。A[Actr]和B[Bctr]中的较小者被拷贝到C的下一个位置,相关的计数器向前推进一步。当两个输入表有一个用完的时候,则将

2015-08-21 20:48:07 606

原创 排序算法(Java语言)——希尔排序

希尔排序Shellsort的名称源于它的发明者Donald Shell,该算法是冲破二次时间屏障的第一批算法之一,不过,直到它最初被发现的若干年后才证明了它的亚二次时间界。它通过比较相距一定间隔的元素来工作;各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。由于这个原因,希尔排序有时也叫做缩减增量排序(diminishing increment sort)。

2015-08-20 21:05:56 623

原创 排序算法(Java语言)——插入排序

最简单的排序算法之一是插入排序(insertion sort)。插入排序由N-1趟排序组成。对于p=1到N-1趟,插入排序保证从位置0到p上的元素为已排序状态。插入排序利用了这样的事实:已知位置0到位置p-1上的元素为已排序状态。由于嵌套循环的每一个都花费N次迭代,因此插入排序为O(N^2),而且这个界是精确的,因为以反序的输入可以达到该界。精确计算指出,循环中元素的比较次数对于p的每个值最多

2015-08-19 22:00:04 607

原创 数据结构(Java语言)——AVLTree简单实现

AVL(Adelson-Velskii and Landis)树是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持,而且它保证树的深度须是o(logN)。最简单的想法是要求左右子树具有相同的高度,这种想法并不要求树的深度要浅。另一种平衡条件是要求每个节点都必须要有相同高度的左子树和右子树。通常空子树的高度定义为-1,只有具有(2^k)-1个节点的理想平衡树满足这个条件。因此,虽然这种平衡条

2015-08-18 21:44:33 1803

原创 数据结构(Java语言)——BinarySearchTree简单实现

二叉树的一个重要应用是它们在查找中的使用。使二叉树成为二叉查找树的性质是,对于树中的每个节点X,它的左子树中所有项的值都大于X中的项。注意,这意味着该树所有的元素都可以用某种一致的方式排序。现在给出通常对二叉查找树进行的操作的简单描述。注意,由于树的递归定义,通常是递归地编写这些操作的例程。因为二叉查找树的平均深度是O(logN),所以一般不必担心栈空间耗尽。二叉查找树要求所有的项都能够排

2015-08-14 21:55:34 1902

原创 数据结构(Java语言)——Queue简单实现

和栈类似,队列queue也是表。然而,使用队列时插入在一端进行而删除在另一端进行。队列的基本操作是enqueue(入队)和dequeue(出队),入队是在队尾rear(表的末端)插入一个元素,出队是删除在队头front(表的开头)的元素。和栈一样,对于队列而言任何表的实现都可以,而且对于每种操作,链表实现和数组实现都是快速的O(1)时间。下面主要讨论队列的循环数组实现。对于每一个队列数

2015-08-13 19:48:40 2052

原创 数据结构(Java语言)——Stack简单实现

栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶top。对栈的基本操作有进栈push和出栈pop,前者相当于插入,后者这是删除最后插入的元素。栈有时又叫新进先出FIFO表。由于栈操作是常数时间,因此除非在特殊情况下,栈不会产生明显改进。栈的第一种实现方法是使用单链表,通过在表的顶端插入来实现push,通过删除表顶端元素实现pop。top操作只是返回顶端元素的值。第二种实

2015-08-12 20:56:05 760

原创 数据结构(Java语言)——LinkedList简单实现

以下是一个可以使用的LinkedList泛型类的实现。这里的链表类名为MyLinkedList,避免与类库中重复。MyLinkedList将作为双链表实现,而且保留到该表两端的引用。这样只要操作发生在已知的位置,就可以保持每个操作花费常数时间的代价。这个已知的位置可以是端点,也可以是由迭代器指定的一个位置。设计方面,主要分为三个部分实现:MyLinkedList类本身,包含到两

2015-08-11 20:37:54 841

原创 数据结构(Java语言)——ArrayList简单实现

以下是ArrayList泛型类的实现。为避免与类库中的类混淆命名为MyArrayLIst,主要细节有:成员变量包含基础数组,数组容量,以及存储在MyArrayList中的当前项数。提供一种机制以改变基础数组的容量。通过获得一个新数组,将老数组复制到新数组来改变新数组的容量,允许虚拟机回收老数组。提供get()和set()的实现。提供基本的操作,如size(),isEmpty()和cle

2015-08-10 21:54:08 815

原创 使用Maven构建Web应用(下)

上篇account-service中已经封装了实现细节,所以接下来只要在此次基础上提供Web页面,并使用简单servlet,jsp与后台实现交互控制。以下是account-web模块的构成:POM部分<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSche

2015-07-29 21:58:39 656

原创 使用Maven构建Web应用(上)

在Java的世界中,Web应用占有很大的地位,而它的标准打包方式是WAR。接下来通过Maven构建一个WAR应用,不过由于篇幅,这一篇先介绍Maven中的Web项目结构和服务模块的构建,WAR应用放在下篇具体介绍。Web项目的目录结构Web应用的打包方式WAR与JAR类似,但它包含了更多内容,如JSP文件、Servlet、web.xml配置文件、静态web资源(如html,css,

2015-07-28 16:23:07 1268

原创 使用Maven的插件测试

Maven本身并不是一个单元测试框架,Java中主流单元测试框架为JUnit和TestNG。Maven所做的只是咋构建执行到特定生命周期阶段的时候,通过插件来执行JUnit或TestNG的测试用例。这一插件就是maven-surfire-plugin,作为测试运行期Test Runner,它能兼容Junit3、JUnit4、TestNG。

2015-07-27 21:42:41 1693

原创 一个Maven实现的验证码模块

下面是Maven构建的实现账户注册服务的account-captcha模块,该模块负责处理账户注册时key生成、图片生成以及验证等。

2015-07-24 23:08:28 3045

原创 Maven中聚合与继承的关系

多模块Maven项目中的聚合与继承其实是两个概念,其目的完全不同。前者主要是为了方便快速构建项目,后者主要是为了消除重复配置。对于聚合模块来说,它知道有哪些被聚合的模块,但那些被聚合的模块不知道这个聚合模块的存在。对于继承关系的父POM来说,他不知道有哪些子模块继承于它,但那些子模块都必须知道自己的父POM是什么。如果非要说这两个特性的共同点,那么可以看到,聚合POM与继承关系中的父P

2015-07-22 21:50:42 485

原创 Maven中的继承实例(下)

可继承的元素在maven的POM中,groupId和version是可以被继承的,那么还有哪些POM元素是可以被继承的呢?以下是一个完整的列表:groupId:项目组ID,项目坐标的核心元素version:项目版本,项目坐标的核心元素description:项目的描述信息organization:项目的组织信息inceptionYear:项目的创始年份url:项目的URL地址d

2015-07-21 19:39:16 2315

原创 Maven中的继承实例(上)

多模块的项目构建时很容易出现一个问题:在聚合实例中,我们可以发现account-persist和account-email的POM配置有很多重复部分,比如相同的spring-core,spring-beans等依赖,还有相同的maven-compiler-plugin和maven-resources-plugin插件配置。特别是如果版本不一的话,在test时控制台会输出警告。另外重复在项目中往往意

2015-07-20 15:49:03 411

原创 Maven中的聚合实例

在这个技术发展的时代,各类用户对软件的要求越来越高,软件本身也变得越来越复杂。因此,软件设计人员往往会采用各种方法对软件划分模块,以得到更清晰的设计及更高的重用性。当把Maven应用到实际项目中的时候,也需要将项目划分成不同的模块。Maven的聚合特性能够把项目的各个模块聚合在一起构建,而Maven的继承特性则能帮助抽取各模块相同的依赖和插件等配置,在简化POM的同时,还能促进各个模块配置的一

2015-07-20 13:38:26 567

原创 一个Maven实现的邮件模块

下面是一个负责发送账户激活的邮件模块,基于Spring Framework。

2015-07-19 21:26:21 3927 1

原创 一个Maven实现的账户服务模块

下面是一个账号注册服务的account-persist模块。该模块负责账号数据的持久化,以XML的形式保存账户数据,并支持账户的创建、读取、更新、删除等操作。1.模块的pom.xml 4.0.0 com.juvenxu.mvnbook.account account-persist 1.0.0-SNAPSHOT Account Persist

2015-07-17 23:14:40 640

原创 netbeans出现apache-maven-3.3.3\bin\mvn.bat"' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

NetBeans出现apache-maven-3.3.3\bin\mvn.bat"' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

2015-07-08 17:22:28 1475

原创 将一个Maven项目分为多个模块

将maven项目分成多模块

2015-07-07 11:40:50 5794

原创 用MyEclipse开发一个简单的MVN项目

Maven在MyEclipse的示例开发

2015-07-06 16:21:47 989

重构-改善既有代码的设计(文字版)

2010年出版的,文字均可复制选择。由OCR软件制作出的,可能有一些地方错误

2016-02-16

LuCI_API.CHM

自制chm文档,干净无广告,目录完整,索引可能不完善。可以用于OpenWrt及LuCI应用的开发。

2015-12-21

LuCI的API文档

官方API网址:http://luci.subsignal.org/api/ 这个文档是我自己做的,方便查阅,适合用于LuCI开发。

2015-12-21

maven实例源码

《maven实战》第12章源码,包含多个模块,包括账户注册登录,邮箱验证,验证码

2015-07-31

从Omnipeek7.1中提取出的驱动程序

目录结构:Atheros(Atheros_6.0,Atheros_PCIe_9.2,Atheros_USB_3.0)Napatech(firmware,Server2003,Utilities,Windows7_Server2008)OmniWiFi

2015-03-05

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

TA关注的人

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