随笔分类 - java提高篇
摘要:1、第一种,通过迭代的方式 File[] listFiles = file.listFiles(); for (Iterator iterator = files.iterator(); iterator .hasNext();) { File file = (File) iterator.next(); } 2、增强for循环 File[] listFiles = file.listFiles(); for (File file2 : listFiles) { } 3、普通循环 File[] listFiles = file.listFiles(); for (int ...
阅读全文
摘要:1. 概述在引入范型之前,Java类型分为原始类型、复杂类型,其中复杂类型分为数组和类。引入范型后,一个复杂类型就可以在细分成更多的类型。例如原先的类型List,现在在细分成List, List等更多的类型。注意,现在List, List是两种不同的类型,他们之间没有继承关系,即使String继承了Object。下面的代码是非法的 List ls = new ArrayList(); List lo = ls;这样设计的原因在于,根据lo的声明,编译器允许你向lo中添加任意对象(例如Integer),但是此对象是List,破坏了数据类型的完整性。在引入范型之前,要在类中的方法支持多个数据类型,
阅读全文
摘要:户要求用程序生成标准的word文档,要能打印,而且不能变形,以前用过很多解决方案,都在客户严格要求下牺牲的无比惨烈。POI读word文档还行,写文档实在不敢恭维,复杂的样式很难控制不提,想象一下一个20多页,嵌套很多表格和图像的word文档靠POI来写代码输出,对程序员来说比去山西挖煤还惨,况且文档格式还经常变化。iText操作Excel还行。对于复杂的大量的word也是噩梦。直接通过JSP输出样式基本不达标,而且要打印出来就更是惨不忍睹。Word从2003开始支持XML格式,用XML还做就很简单了。大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xm
阅读全文
摘要:国内最专业的OCR软件只有2家,清华TH-OCR和汉王OCR,看了很多的OCR技术 发现好多对英文与数字的支持都很好,可惜很多都不支持中文字符。Asprise-OCR,Tesseract 3.0以前的版本,都不支持中文,其实我用了下Asprise-OCR算是速度比较的快了,可惜他鄙视中文,这个没有办法,正好这段时间知名的开源OCR 引擎Tesseract 3.0版本发布了,他给我们带来的好消息就是支持中文,相关的下载项目网站是:http://code.google.com/p/tesseract-ocr虽然速度不是很客观可是毕竟人家开始支持中文也算是不错的,一个英文的语言包大概是1.8M,中文
阅读全文
摘要:/** To change this template, choose Tools | Templates* and open the template in the editor.*/package snailocr.util;import java.awt.Color;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.logging.Level;import java.util.logging.Logger;import javax.imag
阅读全文
摘要:一.什么是验证码及它的作用 验 证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答. 可以防止恶意破解密码、刷票、论坛灌水、有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录。二.图文验证码的原理 在 servlet中随机生成一个指定位置的验证码,一般为四位,然后把该验证码保存到session中.在通过Java的绘图类以图片的形式输出该验证码。 为了增加验证码的安全级别,可以输出图片的同时输出干扰线,最后在用户提交数据的时候,在服务器端将用户提交的验证码和Session保存的验证码
阅读全文
摘要:java实现的汉字输入验证码,主要包含两个类,一个是生成验证码,一个是判断验证码输入是否正确,实现原理非常简单,将汉字和干扰线生成图片并将汉字保存到session,前台获取每次生成验证码图片并用文本框值和session值比较,功能就怎么简单复制代码 代码如下:package xwcms.net.service;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.i
阅读全文
摘要:数字验证码很多地方都会用到,本文主要是针对 那些比较规范的验证码的识别,何谓规范?规范就是数字的大小几乎一致,颜色对比度挺高,没什么干扰线.识别的依据就是最最最基础的办法,比对,先取样,保 存成字模,再用字模去和将要识别的图片进行比较,取最接近的那个结果.不过在比较之前必须得到图片里面的数据提取出来并适当地去除一些干扰.下面就是识别部份的代码:/**ImageCode.java**Createdon2007年1月18日,下午10:00**Tochangethistemplate,chooseTools|TemplateManager*andopenthetemplateintheeditor.
阅读全文
摘要:现在大多数网站都采用了验证码来防止暴力破解或恶意提交。但验证码真的就很安全吗?真的就不能被机器识别??我先讲讲我是怎么实现站外提交留言到一个网站的程序。这个网站的留言版大致如下:我一看这种简单的4位数字验证码,马上就感觉到有戏了。直觉告诉我让电脑来识别这些图片验证码据对简单o(∩_∩)o...首先我马上在这个页面用右键菜单看源代码知道验证码获取页面后 你可以直接用 http://www.XXXX.com/imgchk/validatecode.asp这样去访问你会发现你打开的就是一个验证码图片。对的其实返回的就是图片文件的2进制流而已。接着先用右键保存一张验证码的图片。因为要开始分析这张图片了
阅读全文
摘要:Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比如:,。等等是不能识别的。以下是比较完善的判断方法:CharUtil.javaimport java.util.regex.Pattern; public class CharUtil { public static void main(String[] args) { String[] strArr = new String[] { "www.micmiu.com", &qu
阅读全文
摘要:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对 于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。 理解抽象类..
阅读全文
摘要:importjava.io.BufferedWriter;importjava.io.FileOutputStream;importjava.io.FileWriter;importjava.io.IOException;importjava.io.OutputStreamWriter;importjava.io.RandomAccessFile;/***描述:追加内容到文件末尾*@authorAdministrator**/publicclassWriteStreamAppend{/***追加文件:使用FileOutputStream,在构造FileOutputStream时,把第二个参数设
阅读全文
摘要:用途及用法网络请求通常有两种形式:第一种,请求不是很频繁,而且每次连接后会保持相当一段时间来读数据或者写数据,最后断开,如文件下载,网络流媒体等。另 一种形式是请求频繁,但是连接上以后读/写很少量的数据就断开连接。考虑到服务的并发问题,如果每个请求来到以后服务都为它启动一个线程,那么这对服务的 资源可能会造成很大的浪费,特别是第二种情况。因为通常情况下,创建线程是需要一定的耗时的,设这个时间为T1,而连接后读/写服务的时间为T2,当 T1>>T2时,我们就应当考虑一种策略或者机制来控制,使得服务对于第二种请求方式也能在较低的功耗下完成。 通常,我们可以用线程池来解决这个问题,首先,
阅读全文
摘要:ava如何对ArrayList中对象按照该对象某属性排序增加排序功能,打印时:输出学生对象的时候,需要先按照年龄排序,如果年龄相同,则按照姓名排序,如果姓名也相同,则按照学号排序。Java代码 CodehighlightingproducedbyActiproCodeHighlighter(freeware)http://www.CodeHighlighter.com/-->importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;publicclassComparableTest{p
阅读全文
摘要:1. 早期Java提供java.lang.Thread类型包含了一些列的方法 start(),stop(),stop(Throwable)andsuspend(),destroy()andresume()。,Sun 公司的一篇文章 《WhyareThread.stop,Thread.suspendandThread.resumeDeprecated?》2.使用volatile变量来设置Thread的run的循环条件,保证变量同步性publicclassJavaTestextendsThread{privatevolatilebooleanisRun=true;publicstaticvoidm
阅读全文
摘要:java语言从诞生开始,一个吸引人眼球的功能就是垃圾回收,想一想C++中时不时的内存泄漏,当时感觉写java代码直是一种享受呀。 和.NET的引用计数不同,java的垃圾回收机制采取的是有向图的方式来实现,具体的说,java程序中的每个线程对象就可以看作是一个有向图的起点,有向边从栈中的引用者指向堆中的引用对象。在这个有向图中,如果一个对象和根节点之间是可达的,那么这个对象就是有效的,反之,这个对象就是可以被回收的。采取这样一种机制的优点是可以有效的避免循环引用。 java语言中的对象引用分为以下几种:强引用、软引用、弱引用和虚引用。 强引用就是我们经常用到的引用,这种引用在对象被标识为...
阅读全文
摘要:在面试过程中,数据结构和算法基本上算是研发类岗位必考的部分,而链表基本上又是数据结构中相对容易掌握、而且容易出题的部分,因此我们先整理一下链表部分的经典题目。(声明:以下所有程序都是用java编写)首先,我们来定义一个链表的数据结构,如下:View Code 1 public class Link { 2 private int value; 3 private Link next; 4 public void set_Value(int m_Value) { 5 this.value = m_Value; 6 } 7 public i...
阅读全文
摘要:这次,我们主要看栈和队列的相关题目。 栈是“后进先出”的数据结构,队列是“先进先出”的数据结构,我们假设栈和队列中存储的都是整型数值,先来定义这两种数据结构(都采用数组的形式来存储信息,当达到数组边界时,对数组进行扩容处理)。 栈主要包括Push、Pop和Peek和Count三个方法,如下:栈的定义 1 public class Stack { 2 private int[] arrValue = null; 3 private int m_Capacity; 4 private int m_Count; 5 private void set_Count(i...
阅读全文
摘要:在这篇文章里面,我们主要探讨和树相关的话题。 首先,我们来对树进行定义:树是n(n>= 0)个节点的有限集。在任何一个非空树中:(1)有且仅有一个特定的称为“根”的节点;(2)当n>1时,其余节点可分为m(m>0)个互相相关的有限集T1、T2、T3……,其中每一个集合本身又是一棵树,并且称为根的子树。 对于我们这篇文章里讨论的二叉树,它是一种特殊的树形结构,每个节点至多只有两颗子树,并且子树有左右之分,其次序不能随意颠倒。 接下来,我们使用java代码来定义一棵树:二叉树的定义 1 public class BinNode { 2 private int m_Value; 3
阅读全文
摘要:这篇文章主要讨论常见的排序算法。 排序算法分为内部排序和外部排序两种,内部排序是指只利用内存来完成的排序,外部排序是指借助外部存储设备完成的排序。外部排序主要针对记录比较多、内存无法一次全部加载的情况。我们这里主要关注内部排序。 内部排序大致分为四类:1)插入排序;2)交换排序;3)选择排序;4)归并排序;5)基数排序。我们下面会分别进行描述。 首先,我们来确定排序的对象,这里我们假设排序的对象是随机生成的非重复整数数组,有下面的辅助方法:整型数组辅助方法(生成和打印) 1 public static int[] createArray(int count, int max) 2 { 3...
阅读全文