
Java
文章平均质量分 78
yongh701
这家伙很聪明,什么都没有留下
展开
-
【Eclipse】关闭单词拼写检查
本来在Word中有拼写检查已经有人让人觉得有点烦,尤其在你打中文的时候,不过考虑到word作为一个输入工具,单词拼写在输入英文还是蛮有用的,也就算了。然而,Eclipse也跟风玩起这个玩意了,还默认开始,作为一个程序编辑器,不务正业,实在让人觉得蛋疼,比如下图,在单词下乱划波浪线!所以我们要通过菜单栏上的windows->preference->general->Editors->Te原创 2017-11-15 16:10:02 · 3705 阅读 · 0 评论 -
【Java】Apriori算法
Apriori算法是一种最基本的根据事务记录求解关联的算法。在1994年已经由Agrawal和Srikant提出。也就是那个成功在一大堆顾客的购买记录中,求解出买完啤酒还要买尿布的结论的著名数据挖掘算法。现在关联算法已经发展得多种多样,无数学术论文的产生,让关联求解更加多样化,但都是依据这个Apriori作进一步发展。利用Java完成Apriori算法其实很简单,在贴代码之前,首先讲解Apri原创 2016-12-14 17:02:20 · 6252 阅读 · 1 评论 -
【Java】通过位运算求一个集合的所有子集
Java没有自带的求一个集合的所有子集的方法,我们可以通过集合的子集规律来求。一个集合的所有子集等于2^该集合的长度。比如{c,b,a}的长度为3,这个集合的子集就有8个。这句话看起来很简单,但同时也隐含着高深的哲理。其实一个集合的所有集合,和2^该集合的长度这个数字有关。比如上面的例子,{c,b,a}的长度为3,则可以用0-7表示其所有子集。如下所示,改数字所对应的位置为1,则说明我需要原创 2016-12-12 15:50:35 · 5394 阅读 · 0 评论 -
【Java】一行代码读完记事本中的二维表
对于如下图所示这种用记事本中的二维表:如果要读入Java的容器中,也就是将上述的txt转化成ArrayList>,大家可能又绞尽脑汁地思考读入类、读入方法怎么写。隐约估计完成这样的工程大概需要十几行左右的代码吧?其实并不需要,一行代码就能做完这事。具体如下:import java.io.File;import java.io.FileNotFoundException;原创 2016-12-09 14:59:35 · 2410 阅读 · 0 评论 -
【Eclipse】部署新项目的几个出错问题与解决方案
一、SVN的安装1、Eclipse安装SVN插件时,长时间停留在calculating requirements and dependencies。这是在安装插件前,没把“Contact all update sites during install to find required software”(寻找指定的软件前先访问所有更新站点)前面的勾去掉,所导致,Eclipse长时间无法找到原创 2016-07-19 17:20:34 · 2558 阅读 · 0 评论 -
【Eclipse】将控制台输出直接保存到文本文件
运行Java程序的时候,控制台输出过多,或者同时运行多个Java程序,输出结果一闪而过的时候,可以考虑将将控制台输出,改为输出到文本文件。无须修改Java代码,引入流这么复杂的,可以直接让Eclipse将控制台的输出打印到文本文件,具体如下操作:在Eclipse中,选择目标的Java文件,右击,选择Run->Run Configurations->Common->Standard input原创 2016-05-25 17:00:23 · 26102 阅读 · 2 评论 -
【Java】换底公式
在Java中如果要开对数,利用API中Math类自带方法有可能满足不了需求,仅能够求以e与以10的对数,如下图所示:如果我们要求任意底的对数,需要利用到换底公式:如下,封装一个方法,之后就能够求任意底的对数了:public class LagarithmTest { public static double logx(double bottom, double a原创 2016-02-22 15:16:38 · 3534 阅读 · 0 评论 -
【Java】利用单例模式、可变参数优化Java操作Mysql数据库、JDBC代码的写作
本文没有任何新的内容,只是设置一个Java操作Mysql数据库,让代码写得更好而已。如同《【Java】Java中对Mysql数据库的增删改查、Java的System类》(点击打开链接)一样,工程极其简单,引入操作Mysql数据库相应的jar之后就一个DB类,下文将对test数据库中的一张usertable表进行操作,usertable表的结构如下:这张表用来做例子都用烂原创 2015-11-27 15:09:48 · 4064 阅读 · 2 评论 -
【Java】try中有return,finally块执行问题
对于如下的一段程序:package try_catch_finally_return;public class TCFRtest { private static void Test1(){ try{ System.out.println("try1"); return; }catch(Exception e){ }finally{ System.out.原创 2015-11-26 17:03:26 · 5665 阅读 · 2 评论 -
【Java】求ArrayList中的TopK,不递归
本文是《【Python】求数组(list)中最大的X个数,不递归,尽可能减少代码量》(点击打开链接)的姊妹篇,思想是一模一样的,只是这次是求解一个存放类ArrayList的TopK。比如有一个存放学生(学号,姓名,分数)实体的ArrayList,里面的学生就乱序的。我们要找出其中成绩最高的10位学生。具体请看如下代码,我们先假设这个ArrayList有100个学生,里面的学生的学号分别原创 2015-11-21 19:32:30 · 1258 阅读 · 0 评论 -
【Java】利用String的compareTo比较两个时期字符串
在《【Java】比对两个以字符串形式表示的时期是否相差超过1天》(点击打开链接)曾经介绍过,如果利用字符串的截取来比较两个在数据库中取出来,被特定格式化的日期。然而,这具有一定的局限性,最大的缺点出在截取字符串太复杂太麻烦。其实可以利用String的compareTo比较两个表示时期的字符串。compareTo原本是这样的:此方法如果这个字符串是等参数字符串那么返回值0,如果这个字符串是按字原创 2015-11-12 09:39:35 · 10793 阅读 · 0 评论 -
【Java】List的subList方法
Java的容器类ArrayList很常用,旗下存在一个subList方法,是值得注意的。subList方法仅能够取出此ArrayList的引用,即使其看起来,好像是取出一个ArrayList的子ArrayList。其实不然,subList方法的返回值,只是ArrayList的一个映像而已。也就是说,当我们使用子集合subList进行元素的修改操作时,会影响原有的list原创 2015-11-11 20:44:14 · 16508 阅读 · 0 评论 -
【Java】观察者模式
本文是《【C++】观察者模式》(点击打开链接)的Java实现,关于什么是观察者模式这里就不将了,只是从类图为视觉重新审视这条2014年上半年的软件设计师的软考题。题目是这样的:某实验室欲建立一个实验室的环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据,当获取到最新的环境测量数据时,显示的环境数据能够更新,现在采用观察者(Observer)模式来开发该系统,观察者模式的类图如原创 2015-11-03 11:30:02 · 1160 阅读 · 0 评论 -
【Java】装饰器模式
本文主要是介绍《【C++】装饰器模式》(点击打开链接)的Java版。关于什么是装饰器模式就不再赘述了,这次主要说明从UML类图是如何与代码联系起来的。还是从2012年上半年软件设计师的软考题来说明这个例子。题目是这样的:某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。咖啡有两种:蒸馏咖啡Esp原创 2015-11-03 09:39:54 · 1801 阅读 · 0 评论 -
【Java】策略模式
策略模式Strategt Pattern定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。说白了,就是在主函数新建一个类之后,调用相同的方法,得到的实现的结果是不同的,即使这些类是继承同一个抽象。具体直接看一道2010年上半年的软件设计师的软考题来说明这个问题:某软件公司先欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类原创 2015-10-28 11:09:40 · 1677 阅读 · 0 评论 -
【Java】适配器模式
适配器模式把适配的API转换成为目标类的API。适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。在上图中,目标(Target)角色:这就是所期待得到的接口。源(Adapee)角色:现在需要适配的接口。适配器(Adaper)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以原创 2015-10-17 16:51:53 · 749 阅读 · 1 评论 -
【Java】组合模式
组合(Composite)模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式可以让客户端像修改配置文件一样简单的完成本来需要流程控制语句来完成的功能。如下图所示:设计模式中的组合模式将对象组合成树形结果以表示“部分-整体”的层次结构,使得客户对单个对象和组合对象的使用具有一致性。上图为该模式的类图,其中C原创 2015-10-17 16:02:35 · 2222 阅读 · 1 评论 -
【Java】单例模式
这种设计模式是保证类只有一个类Class只有一个实例存在,如果再次新建这个类,之前的类会立即被摧毁。多用于线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序,数据库的连接类等,相当于线程进程中的缓冲区的大小为1,仅允许一个线程进入。单例模式实现主要是有一下技巧:1、构造函数私有,如果有克隆函数的话,克隆函数也私用,保证不能再多。2、在自己内部定义自己的一个实例,只供内部调用。3原创 2015-10-15 20:16:51 · 891 阅读 · 1 评论 -
【Java】抽象工厂模式
同样不是怎么高深的或者新的东西,只是一种编程方式,甚至可以说只是编程风格而已。只是抽象工厂模式的编程风格得到广泛应用,你不了解一下,还真看不懂。抽象工厂模式就是,多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个具体产品类的实例。即提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体的类。“一对多”的关系。举个例子还说明,就原创 2015-10-12 11:01:27 · 1107 阅读 · 1 评论 -
【Java】原型模式
对于设计模式,网上大部分资料都直接抛出一大堆理论,让人难以看明白。其实所谓的“设计模式”,只是怎么把代码写得更好而已,避免大量的代码出现重复而已,如果你不介意,完全可以把某一段代码拷贝粘贴多次,来实现功能,然而,许多地方,甚至软考的软件设计师,都对设计模式进行考察。下面说说原型模式,其实设计模式,任何语言都能实现,是一种编程思想。原型模式是:通过复制一个已经存在的实例来创建一个新的实例。被原创 2015-10-10 15:18:28 · 1447 阅读 · 0 评论 -
【Eclipse】利用本地历史记录回档
尽管没有SVN能服务器存储代码历史,Eclipse也是可以利用本地历史记录回档的,不然这它在初次启动要设置工作空间干嘛?即使已经养成了随手的Ctrl+S的习惯,但是改错代码不小心的Ctrl+S等欲哭无泪还是会发生,此时你可以利用Eclipse的本地历史记录回档。具体是右键你需要回档的Java或者html等文件,选择Compare With->Local History...之后原创 2015-09-29 09:26:35 · 42968 阅读 · 0 评论 -
【Java】利用Ansj中文分词工具对段落进行切词
对于切词确实是一个复杂的功能,足以写上好几篇论文,但是如果仅仅想对一个句子、一个段落、一篇文章进行切词,可以利用中国自然语言开源组织中各位大牛写好的工具。已经打包成jar包,可以直接调用了,无须自己再考虑复杂的算法。当然这种切词是对于自然语言的,对于一些有规律的字符串,请自行利用indexOf、substring、split的各类Java自带函数,没有使用额外java包的必要。首先假如有如原创 2015-08-04 09:49:33 · 6601 阅读 · 2 评论 -
【Java】取当前.class文件的编译位置
本文与《【C++】求当前exe的运行路径》(点击打开链接)为姊妹篇,C++在win下生成的运行文件是.exe,Java生成的运行文件是.class然后自动扔到Java虚拟机中运行。主要是用于弄些场合需要获取这个.class的路径中所使用,增强程序的可移植性。取法同样简单,但是这段程序是与程序的主类名有关的,正如Java的文件命名必须与程序的主类名一样的道理,如下程序:public cl原创 2015-07-29 11:05:42 · 3211 阅读 · 0 评论 -
【Java】对于空值null的判断
在大型程序开放过程中,无论是SSH还是安卓,都需要对空值进行判断,尤其是某个实体传递过来的值,但是,往往对于null的判断条件没写好,导致空指针异常。对于任意的Object,判断其是否为null,应该将Object xx==null写在所有判断条件的前头,一个为null的东西,调用其自身的任何方法都会出现著名的java.lang.NullPointerException空指针异常,包括Obje原创 2015-07-28 18:26:20 · 28824 阅读 · 0 评论 -
【Java】利用文件通道的方式改进Java复制单个文件的方法
在Java编程中,复制文件的方法有很多,而且经常要用到。绝大多数人都是缓冲输入输出流来实现的,我也是如此,其实在新的JDK中出现了一种用文件通道(FileChannel)来实现文件复制的方法,而且这种竟然比用文件流快了近三分之一,同时无须处理异常。一般在JDK1.6以上含本数,则可以使用高效,代码简短的方法。旧式复制单个文件的方法如下: /** * 使用文件流的方式复制文件 *原创 2015-07-17 11:45:16 · 2309 阅读 · 1 评论 -
【Java】利用正则表达式判断是否为网址
本文与《【JavaScript】利用正则表达式检查输入框输入的是否为网址》(点击打开链接)为姊妹篇,在上文中已经提到了,正则表达式在各个程序是通用的,这里不再讲解正则表达式的具体用法。重点讲述正则表达式在Java中怎么使用,还是在判断是否为网址。有以下的四个测试用例:运行结果如上图所示。代码如下:package urlReg;import java.util.regex原创 2015-07-15 15:50:38 · 31619 阅读 · 1 评论 -
【Java】判断文件的后缀名
这本来不是一个问题,利用框架本来有的方法,或者File类的getPath()方法,取出要判断文件路径,或者getName()方法取出文件路径,成为一个String字符串假设为fileName之后,再对带哦用这fileName的endsWith("txt")方法,得到的布尔值就能判断其是否txt文件。这本来没什么好说,但会出现什么呢?比如要判断是否为图片文件,尤其是一些上传系统中,你的判断条件就要写原创 2015-07-09 16:33:29 · 26436 阅读 · 1 评论 -
【Java】创建文件夹
Java中创建文件夹使用File类下自带的mkdirs()方法就能够轻松完成了,本来没有什么好说的,唯一值得注意的是这个mkdirs()能够一次性创建多级目录,无须递归调用。也就是说,我要创建在F盘新建一个文件夹a,然后在这个文件夹a中在创建文件夹s,直接通过File file=new File("f:\\a\\s");指定f:\a\s这个路径,然后直接同过file.mkdirs()方法的调用原创 2015-07-09 15:46:32 · 18101 阅读 · 1 评论 -
【Java】使用Calendar类来获取当前的日期
在《【Java】有关System.currentTimeMillis()的思考》(点击打开链接)中已经介绍过,如果利用System.currentTimeMillis()取出当前的时期。在Java中其实同样可以利用Calendar类来获取当前的日期。只是其取法比较繁琐,要分别取出当前的年、月、日、时、分、秒将其拼接起来。如下的代码:import java.util.Calendar;im原创 2015-06-18 14:56:53 · 29069 阅读 · 0 评论 -
【Java】定时器、线程与匿名内部类
内部匿名类在一些Java书籍中写得非常抽象,其实这东西,如果单独拿出来讲的话,也确实很难讲得通,我本来以为如此抽象的概念,并没有什么用。万万没想到到是,这东西在安卓编程的监听器中使用得尤其之多。匿名内部类根本一点都不难,大家一直在用,却一直都不知道自己在用,被问到这个概念就懵了。如果你用过jQuery,你一定见过如下的结构:$("#组件id").click(function(){ //原创 2015-06-14 09:29:35 · 2440 阅读 · 0 评论 -
【Java】把字节数B转化为KB、MB、GB的方法
在文件处理的系统中,很容易就能通过一些系统自带的方法取出其大小,问题是这个大小往往只是一个字节数B。如果要把这个字节数转化为KB、MB、GB的最终呈现给用户,则涉及到整除与取余的算术运算。方法如下: public static String getPrintSize(long size) { //如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义原创 2015-05-16 17:10:26 · 43561 阅读 · 7 评论 -
【Eclipse】根据文件名查找文件与根据文件中的字符串查找文件
在大型项目开发中,你经常需要在Eclipse左方那庞大的文件树中寻找你需要的文件。此时,你直接使用Ctrl+Shift+R就可以唤出文件查找窗口。这是根据文件名来找文件,如下图,只要输入你需要寻找的文件名,就能得到相应的寻找结果。如果你需要根据文件中的字符串查找文件,那么,你可以通过Ctrl+H唤出查找与替换的窗口,切换到File Search选项卡中。输入你要搜索的字符串,与此字原创 2015-05-14 09:07:47 · 9736 阅读 · 0 评论 -
【Java】比对两个以字符串形式表示的时期是否相差超过1天
数据库存放的日期,即使是以字符串表示的,你也可以利用《【Mysql】求出离最近相差X天的项,sql语句关于日期的比对》(点击打开链接)中所介绍的那个timestampdiff函数比对,日期是否相差超过一天。如果在Java中要比对两个以字符串形式表示的日期是否相等,比如比对两个以"yyyy-MM-dd HH:mm:ss"与字符串String形式表示的日期,是否相等那可以先去除"-"、":原创 2015-05-07 11:11:51 · 3498 阅读 · 1 评论 -
【Java】关于去除空格
首先必须声明的是,trim()方法,虽然谁都知道,但这东西注意陷入去除所有空格的误区,trim()只能去除字符串前后的字符,对于中间的字符无法处理。如果要去除所有空格,还是要使用replaceAll的方法,比如如下语句:space.replaceAll("\\s", "");利用正则表达式,\\s先找到所有的空格,再直接替换,直接写成如下的方式也是可以,但是好像在某些地方,非常神奇地会原创 2015-04-25 16:29:47 · 2702 阅读 · 0 评论 -
【Java】利用ant插件压缩文件夹及其所有子文件与子文件夹
如果在Java要压缩一个文件夹及其所有子文件与子文件夹,可以利用到Apache公司提供的ant插件。其实也就是一个jar包。比如,如果要把f:\bb下的所有文件,压缩成一个f:\bb.zip,如下图:首先先到Apache的官网,下载ant插件,地址:http://ant.apache.org/bindownload.cgi(点击打开链接)下载解压之后,取走其中的apac原创 2015-04-21 15:21:41 · 2056 阅读 · 0 评论 -
【Java】读取其下所有文件夹与文件的路径
如果在f:\aa文件夹中,有如下图的文件夹与文件:那么,在Java中,则如此读取f:/aa下的所有文件路径:1、首先由于用到了文件与容器类下的ArrayList,所以在开头要引入如下包:import java.io.*;import java.util.*;2、方法如下,其中File dirFile除了盘符,比如f:,以外,能够接受一切合法的路径。由于盘符下含有一些系统文原创 2015-04-21 14:50:15 · 5409 阅读 · 0 评论 -
【Java】ArrayList<String>转化为String数组问题
Java的容器类Collections中toArray()方法,可以把诸如ArrayList的动态数组、不定长转化静态数组、定长数组String[]但是,如下的转化方式是错误的。String[] strArray = (String[]) arrayList.toArray();如果这样执行会导致如下的错误:Exception in thread "xx" java.lang.Clas原创 2015-04-21 11:23:19 · 16743 阅读 · 1 评论 -
【Java】移动文件夹及其所有子文件与子文件夹
在Java移动文件夹及其所有子文件与子文件夹可以有如下的一段简单的方法来说明:public static void moveFolder(String oldPath, String newPath) { //先复制文件 copyFolder(oldPath, newPath); //则删除源文件,以免复制的时候错乱 deleteDir(new File(oldPath));}不原创 2015-04-16 09:00:18 · 7401 阅读 · 1 评论 -
【Java】对文件或文件夹进行重命名
在Java中,对文件或文件夹进行重命名是很简单的,因为Java的File类已经封装好renameTo的方法。修改文件或者文件夹的名字都使用这个方法。例如如下的程序:import java.io.*;public class renameTest { public static void main(String[] args) { //想命名的原文件的路径 File file原创 2015-04-15 19:37:23 · 45215 阅读 · 4 评论 -
【Java】利用自带的file.mkdirs();创建文件夹与file.mkdirs();的注意事项
利用Java的自带命令file.mkdirs();是可以直接在系统创建文件夹的。比如在d:\1文件夹下创建一个2的文件夹,则这样写:import java.io.*;public class FileMkdirTest { public static void main(String[] args) { File file = new File("d:\\1\\2"); //原创 2015-04-15 11:09:15 · 18675 阅读 · 0 评论