
Java Language
文章平均质量分 85
过往记忆
这个作者很懒,什么都没留下…
展开
-
Java主线程等待子线程执行完毕-CountDownLatch
主线程: //Main主线程publicclassMainThread { publicstaticvoid main(String[] args) throwsInterruptedException { longstartTime = System.currentTimeMillis(); intthreadNum =翻译 2011-12-11 12:43:13 · 6480 阅读 · 0 评论 -
Guava学习之RangeSet
前面谈到了Guava中新引入的Range类,也了解了其中的作用,那么今天来谈谈Guava中用到Range来的地方:RangeSet类。RangeSet类是用来存储一些不为空的也不相交的范围的数据结构。假如需要向RangeSet的对象中加入一个新的范围,那么任何相交的部分都会被合并起来,所有的空范围都会被忽略。 讲了这么多,我们该怎么样利用RangeSet?RangeSet类是一个接口,需要用它的原创 2013-07-18 10:10:31 · 4988 阅读 · 0 评论 -
Guava学习之Immutable集合
Immutable中文意思就是不可变。那为什么需要构建一个不可变的对象?原因有以下几点:在并发程序中,使用Immutable既保证线程安全性,也大大增强了并发时的效率(跟并发锁方式相比)。尤其当一个对象是值对象时,更应该考虑采用Immutable方式;被不可信的类库使用时会很安全;如果一个对象不需要支持修改操作(mutation),将会节省空间和时间的开销;经过分析,所有不可变的集合实现都比可变集原创 2013-07-12 16:00:52 · 7721 阅读 · 0 评论 -
将一个长度超过100位数字的十进制非负整数转换为二进制数(大数据处理)
已迁往:http://www.wypblog.com/archives/141题目描述:将一个长度超过100位数字的十进制非负整数转换为二进制数输出。输入:多组数据,每行为一个长度不超过30位的十进制非负整数。(注意是10进制数字的个数可能有30个,而非30bits的整数)输出:每行输出对应的二进制数。样例输入:0138样例输出:01111000分析:这个数不应该存储到一个int类型变原创 2012-07-14 10:22:46 · 7561 阅读 · 0 评论 -
编写简单的Mapreduce程序并部署在Hadoop2.2.0上运行
经过几天的折腾,终于配置好了Hadoop2.2.0(如何配置在Linux平台部署Hadoop请参见本博客《在Fedora上部署Hadoop2.2.0伪分布式平台》),今天主要来说说怎么在Hadoop2.2.0伪分布式上面运行我们写好的Mapreduce程序。先给出这个程序所依赖的Maven包:01020304050607080910111213141516171819202122原创 2013-10-29 13:17:57 · 8752 阅读 · 1 评论 -
Guava学习之CharSequenceReader
CharSequenceReader类是以CharSequence的形式读取字符。CharSequenceReader类继承自Reader类,除了remaining()、hasRemaining()以及checkOpen()函数之后,其他的函数都是重写Reader类中的函数。CharSequenceReader类声明没有用public关键字,所以我们暂时还不能调用这个类CharSequenceRe原创 2013-09-24 16:59:55 · 2332 阅读 · 0 评论 -
Guava学习之HashBiMap
HashBiMap存储的键和值都只能唯一,不存在键与键、值与值相同的情况(详细分析见我博客:Guava学习之BiMap)。HashBiMap类继承了AbstractMap类并实现了BiMap接口,其类继承关系如下图所示:HashBiMap AbstractMap类实现了Map接口定义的一些方法,而BiMap类定义了其子类需要实现的一些方法,使得所有实现BiMap的类必须符合其独有的特性:键、值都原创 2013-09-17 13:08:03 · 7381 阅读 · 1 评论 -
Guava学习之Lists
Lists类主要提供了对List类的子类构造以及操作的静态方法。在Lists类中支持构造ArrayList、LinkedList以及newCopyOnWriteArrayList对象的方法。其中提供了以下构造ArrayList的函数:下面四个构造一个ArrayList对象,但是不显式的给出申请空间的大小: newArrayList() newArrayList(E... elements原创 2013-09-10 22:45:41 · 16706 阅读 · 1 评论 -
Guava学习之RangeMap
在《Guava学习之RangeSet》中谈到了RangeSet的特点及其用法。今天要谈的的RangeMap和RangeSet有许多不一样的。 在Google Guava官方API上面可以得知:RangeMap是一种集合类型( collection type),它将不相交、且不为空的Range(key)映射给一个值(Value)。和RangeSet不一样,RangeMap不可以将相邻的区间合并,即原创 2013-07-19 09:38:49 · 8161 阅读 · 1 评论 -
Guava学习之Multisets
今天谈谈Guava类库中的Multisets数据结构,虽然它不怎么经常用,但是还是有必要对它进行探讨。我们知道Java类库中的Set不能存放相同的元素,且里面的元素是无顺序的;而List是能存放相同的元素,而且是有顺序的。而今天要谈的Multisets是能存放相同的元素,但是元素之间的顺序是无序的。从这里也可以看出,Multisets肯定不是实现Java中Set接口的,因为Set接口是不能存放相同原创 2013-07-12 09:41:01 · 5701 阅读 · 0 评论 -
Guava学习之BiMap
在前面的《Guava学习之Multimap》文章中我们谈到了Guava类库中的Multimap,其特点是存在在Multimap中的键值对可以不唯一;而我们又知道,在Java集合类库中有个Map,它的特点是存放的键(Key)是唯一的,而值(Value)可以不唯一,如果我们需要键(Key)和值(Value)都唯一,该怎么实现?这就是今天要谈的BiMap结构。 在过去,如果需要将Map结构中的键值对反原创 2013-07-10 16:15:21 · 7044 阅读 · 0 评论 -
Guava学习之Multimap
相信大家对Java中的Map类及其之类有大致的了解,Map类是以键值对的形式来存储元素(Key->Value),但是熟悉Map的人都知道,Map中存储的Key是唯一的。什么意思呢?就是假如我们有两个key相同,但value的元素需要插入到map中去,那么先前的key对应的value将会被后来的值替换掉。如果我们需要用Map来把相同key的值存在一起,代码看起来像下面一样:/** * */p原创 2013-07-09 20:17:52 · 3772 阅读 · 0 评论 -
Guava学习之Iterators
Iterators类提供了返回Iterator类型的对象或者对Iterator类型对象操作的方法。除了特别的说明,Iterators类中所有的方法都在Iterables类中有相应的基于Iterable方法对应。 性能说明:除非特别说明,所有在这个类中的迭代器都是懒惰的,这意味着在觉得必要的时候,需要提前得到迭代功能。Iterators类可以通过emptyIterator()方法得到一个空的并且不原创 2013-09-11 23:52:43 · 4492 阅读 · 1 评论 -
Guava学习之Splitter
Splitter:在Guava官方的解释为:Extracts non-overlapping substrings from an input string, typically by recognizing appearances of a separator sequence. This separator can be specified as a single character, fix原创 2013-09-09 23:07:47 · 16415 阅读 · 0 评论 -
Maven如何手动添加依赖的jar文件到本地Maven仓库
Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。曾是Jakarta项目的子项目,现为独立Apache项目。 大家肯定遇到过想在pom文件中加入自己开发的依赖包,这些包肯定是不是在Maven仓库(http://repo1.ma原创 2013-08-03 09:12:12 · 12292 阅读 · 3 评论 -
中缀表达式转成后缀表达式(含java实现的具体代码)
已转到:http://www.wypblog.com/archives/161 后缀表达式又叫做逆波兰表达式。在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,所以,这种表示法也称为中缀表示。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法。按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。 运用后缀表达原创 2012-02-18 17:56:27 · 13282 阅读 · 1 评论 -
Guava学习之Range
在Guava中新增了一个新的类型Range,从名字就可以了解到,这个是和区间有关的数据结构。从Google官方文档可以得到定义:Range定义了连续跨度的范围边界,这个连续跨度是一个可以比较的类型(Comparable type)。比如1到100之间的整型数据。不过我们无法遍历出这个区间里面的值。如果需要达到这个目的,我们可以将这个范围传给ContiguousSet.create(com.goog原创 2013-07-16 21:14:15 · 3242 阅读 · 0 评论 -
Guava学习之Preconditions
在编写程序的时候,很多时候都需要检查输入的参数是否符合我们的需要,比如人的年龄需要大于0,名字不能为空;如果不符合这两个要求,我们将认为这个对象是不合法的,这时候我们需要编写判断这些参数是否合法的函数,我们可能这样写:package com.wyp;import java.util.ArrayList;import java.util.List;/** * Created with I原创 2013-07-25 10:17:51 · 6250 阅读 · 0 评论 -
Guava学习之AbstractMapBasedMultimap
AbstractMapBasedMultimap源码分析:AbstractMapBasedMultimap是Multimap接口的基础实现类,实现了Multimap中的绝大部分方法,其中有许多的方法还是靠实现类的具体实现,比如size()方法,其计算方法在不同实现是不一样的。同时,AbstractMapBasedMultimap类也定义了自己的一些方法,比如createCollection()。A原创 2013-09-14 00:21:31 · 2499 阅读 · 0 评论 -
Java限制格式,只能输入数字的输入框JTextField
package com.ui.wyp;import java.text.ParseException;import javax.swing.JFormattedTextField;import javax.swing.JFrame;import javax.swing.text.MaskFormatter;public class JustaTest { public stati翻译 2012-04-08 17:22:33 · 15522 阅读 · 4 评论 -
一些经典的算法实现
//插入排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/** * @author treeroot * @since 2006-2-2 * @version 1.0 */public class InsertSort implements SortUtil.Sor原创 2012-03-22 11:40:26 · 4988 阅读 · 0 评论 -
数独游戏的设计
前几天看到了一本面试的书上,里面有一道题目,是说数独游戏的生成,于是自己就想实现一下,看了一下别人的代码,自己修改了一些,代码的核心思想是:利用深度优先搜索,当搜索到的节点满足条件,则搜索下一点,否则回退。程序运行图:public void getSudoku(int [][] array, LEVEL level) { clear(array); int row = 1,原创 2012-04-10 14:27:54 · 7623 阅读 · 0 评论 -
编辑距离
一、问题描述设A和B是两个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括: (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符; 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到B的编辑距离,记为d(A,B)。试设计一个有效算法,对任给的两个字符串A和B,计算出它们的编辑距离d(A,B)。翻译 2012-05-13 15:18:44 · 4860 阅读 · 0 评论 -
log4j.properties配置详解
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1. 配置文件Log4J配置文件的基本格式如下:#配置根Loggerlog4j.rootLogger = [ level ] , appenderName1 ,翻译 2012-07-10 15:02:57 · 3687 阅读 · 1 评论 -
java画图双缓冲机制
主要就是重写了update方法,制定了其刷新的方式~ 原理: 1.建立一个Image对象DbBuffer,通过DbBuffer=createrImage(int width,int height)来在内存中开辟一个长为width 宽为heithr空间.次空间的大小可以和你动画窗口的大小保持一致,也可以利用getwidth()和getheight()来获得动画窗口的大小. 2翻译 2012-06-11 12:36:09 · 8005 阅读 · 0 评论 -
java编程将HTML文件转换成PDF文件
网上有好几种方法可以将将HTML文件转换成PDF文件但是有些对HTML文件格式要求比较严格,稍微错了一些就不能生成我们所要的PDF文件,这里我推荐一个PD4ML,它可以解决HTML文件格式不正确的问题,可以生成一个比较好的PDF文件,其处理速度快,而且对CSS文件兼容的非常好。下面是最基本的PD4ML编程:package samples;import java.awt.Insets翻译 2012-07-16 21:52:21 · 15201 阅读 · 12 评论 -
自己动手写优快云博客提取器源码分析之三:处理网页保存为pdf文件
下面我讲下处理pdf文件的,这里我用了PD4ML来处理的,原因有几个:(1)、它对CSS的支持做的很好;(2)、可以处理图片(很爽吧)(3)、可以处理中文,不过麻烦一些。基础的过程可以看我的另外一篇帖子java编程将HTML文件转换成PDF文件http://blog.youkuaiyun.com/w397090770/article/details/7753166。下面是我的处理流程:/** *原创 2012-07-20 16:44:58 · 27875 阅读 · 5 评论 -
自己动手写优快云博客提取器源码分析之二:处理网页保存为doc文件
下面是把抓取到的网页用itext包保存为doc文件,过程很简单的。下面是这个类的实现:/** * */package com.wyp.html2doc;import java.io.File;import java.io.FileOutputStream;import java.io.StringReader;import java.util.List;原创 2012-07-20 16:36:34 · 5877 阅读 · 1 评论 -
自己动手写优快云博客提取器源码分析之一:处理网页保存为txt文件
在昨天上午发了一个帖子[原创]自己动手写优快云博客提取器,提取文件保存支持PDF、doc、txt三种格式有很多网友比较感兴趣,有些网友说要公布一下源码,在这里,我就把这个软件制作的一些核心代码贴出来,给大家分享。下面是把抓取到的网页用正则表达式处理留下纯文本然后保存为txt文件。这个代码很简单的,相信大家都看得懂吧。/** * */package com.wyp.html2原创 2012-07-20 15:11:28 · 6210 阅读 · 6 评论 -
[原创]自己动手写优快云博客提取器,提取文件保存支持PDF、doc、txt三种格式
下载地址http://download.youkuaiyun.com/detail/w397090770/4438566(不需要积分)下面有网友说爬取到的博文没有任何博主的信息,今天我更新了一下代码, 在每一篇爬取到的博文中添加了作者博客名字以及这篇博文的地址,详细见下图。用了好久的优快云博客,发现里面有很多的很不错的文章,但是一篇一篇的复制、粘贴总觉得很麻烦,于是,花了1天半的时间做了一个CS原创 2012-07-19 08:54:37 · 73006 阅读 · 62 评论 -
[原创]自己动手写博客园博文提取器,提取文件保存支持PDF、doc、txt三种格式
下载地址http://download.youkuaiyun.com/detail/w397090770/4443454同样是免积分的前几天发了一个[原创]自己动手写优快云博客提取器,提取文件保存支持PDF、doc、txt三种格式 飞程序,有网友反映要做一个可以提取博客园博文,今天我分析了一些博客园的网站,做了一个相似的博客园博文提取器,见下图:功能和前面的优快云博客提取器一样#######原创 2012-07-21 19:34:44 · 34253 阅读 · 20 评论 -
自己动手写优快云博客提取器源码分析之四:抓取网页源码
前几天公布了保存文件的一些源码,今天我发一下怎么抓取网页源码。学过java和C的都知道,java抓取源码要比C语言简单的多,很多东西java都封装好了,只需要调用URL这个类的一些接口就可以获得我们需要的一些资源,而不像C一样,自己构造包,自己再发送,自己要非常懂HTML的一些发送和接收消息包的格式,相当的麻烦。。。下面就是我工程里面的获取源码的类(精简了)。/** * */pac原创 2012-07-24 16:44:04 · 33677 阅读 · 25 评论 -
Java实现抓取相应地区中央天气预报
先上图:程序一开始运行默认的是显示本地的天气(界面好难看咯)当获取本地地址失败的时候,程序默认显示北京的天气,可以在上面的下拉列表里面选择相应的城市来获取相应城市的天气。全国各地区都是有编码的,所以当你在下拉列表里面选择相关的地方时,程序将会得到相关地区的编码,然后根据编码组成相应的URL地址,以这个URL地址获取到相关的天气信息。当然中央天气网站提供了一个API供我们调用,如下h原创 2012-08-11 16:46:27 · 29265 阅读 · 3 评论 -
快速排序及优化
转载地址:http://rdc.taobao.com/team/jm/archives/252 quicksort可以说是应用最广泛的排序算法之一,它的基本思想是分治法,选择一个pivot(中轴点),将小于pivot放在左边,将大于 pivot放在右边,针对左右两个子序列重复此过程,直到序列为空或者只有一个元素。这篇blog主要目的是关注quicksort可能的改进方法,并对 这些改进转载 2012-09-29 16:04:49 · 8255 阅读 · 1 评论 -
Guava学习之ArrayListMultimap
ArrayListMultimap类的继承关系如下图所示:Guava ArrayListMultimap ListMultimap是一个接口,继承自Multimap接口。ListMultimap接口为所有继实现自ListMultimap的子类定义了一些共有的方法签名。ListMultimap接口并没有定义自己特有的方法签名,里面所有的方法都是重写了Multimap接口中的声明,只是将Multim原创 2013-09-26 17:37:44 · 14942 阅读 · 0 评论 -
爬虫程序中怎么加入动态代理
原文地址:http://www.wypblog.com/archives/118,http://blog.youkuaiyun.com/w397090770/article/details/8751268源码下载地址:http://www.wypblog.com/archives/118#zz相信很多人都用过代码写过不同的爬虫程序吧,来获取互联网上自己需要的信息,这比自己手动的去一个一个复制来的容易。但是,居原创 2013-04-02 14:23:04 · 7375 阅读 · 2 评论