Java SE
iteye_14216
这个作者很懒,什么都没留下…
展开
-
重写了一个贪吃蛇小游戏
昨天看了几年前写贪吃蛇程序,代码实在不敢恭维,怎么样容易就怎么写了,各个类的职责完全不清.当时,作为第一个写的比较大的程序,可以说是以后我大规模程序设计的一个开端吧,这么有意义的一个程序,不能就这么任他烂下去了.况且这个小游戏难度比较小,对刚从课堂的程序设计到实际开发的来说是一个很好的例子.花了一个晚上重写了一个,注释今天上午也加上了.希望对想开始写比较大的程序的同学们有所帮助.注:最...2007-11-28 13:24:46 · 113 阅读 · 0 评论 -
如何彻底杜绝别人使用你的类
今天在eclipse源码中发现了这个东东:写道transactionLock.new Access() {/*empty block*/}.transfer(owner); [org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl 814行]transactionLock是Lock类的一个实例 第一眼看上去相当诡异...2008-05-22 19:30:50 · 204 阅读 · 0 评论 -
《Effetive Java》读书笔记一
《Effetive Java》和 《Effective C++》、《More Effective C++》保持了一致的写作风格,使用条款的方式对使用该语言的应该注意和极易出现问题的地方,提出了错误的做法,并讲述了应该怎么做,java之父James Gosling都需要的书,我们更应该看看,看了一遍收获颇多,简单记录下来一些要点。第二章 创建和销毁对象条款一: 考虑用静态工厂方法来替代构...2009-02-19 11:36:46 · 114 阅读 · 0 评论 -
《Effetive Java》读书笔记二
第二章 所有对象共有的方法尽管Object是一个具体的类,但是它设计的主要目标是为了去扩展,所以他的所有的非final的方法(equals, hashCode, toString, clone, and finalize)都有一个明确一般的约定。条款8 覆写equals要遵循一般的约定:不覆写equals的情况: 1、每一个实例本身就是唯一的(如Thread)2、对...2009-02-23 14:23:01 · 95 阅读 · 0 评论 -
A TaskExecutor Impl
import java.util.ArrayList;import java.util.List;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import j...2009-12-07 11:33:31 · 82 阅读 · 0 评论 -
从《编程的未来》这篇文章想到C++和Java语言的爽与不爽
从编程的未来这篇文章http://utensil.iteye.com/blog/367415 想到C++和Java语言的爽与不爽:事实上Java的面向对象模型要比C++要好,C++是一个追求效率而不惜牺牲其他空间和优美方面的语言。一、C++没有interface的概念,这是面向对象概念的很大的一个缺失,当然纯抽象类就是interface,但至少是概念上的一种缺失。因为interface和抽象...2009-05-01 23:44:57 · 241 阅读 · 0 评论 -
使用XStream把Java对象XML/JSON格式的序列化和反序列化
试了一下Thoughtworks的XStream,以测试驱动和敏捷开发著称的Thoughtworks,写出的XStream果然很容易使用。下面举一个用一个小例子说明如何使用:实体Person,我们希望Person的对象能够和XML/JSON相互转化[code="java"]package edu.jlu.fuliang;public class Person{ ...2009-05-05 11:37:30 · 123 阅读 · 0 评论 -
URL中文问题
最近使用HttpClient,和Java的java.net.URL,url有中文都会失败。听徐师兄说HttpClient有URI这个类可以使用:URI uri = new URI(url,false,"UTF-8");String url = uri.toString(); 例如,发送一个get请求获得一个带有中文链接的图片:import java.io.BufferedInp...原创 2010-01-08 14:46:30 · 159 阅读 · 0 评论 -
runtime.exec()执行进程block死锁问题
最近在java代码中使用runtime.exec执行rsync命令做同步,发现当两个目录需要非常大同步工作的时候,rsync进程就会一直阻塞。查看了jdk帮助,以及google都无果,于是打算把执行的信息都log出来,结果执行突然成功。仔细思考,这个问题应该是进程执行命令的时候,输出结果有个buffer,如果buffer已经满了,而没有进程去读,这个进程就会阻塞等待,导致我前面的问题出现。效果...原创 2010-01-18 21:39:08 · 479 阅读 · 0 评论 -
Java动态代理
Java提供了动态代理,可以完成AOP和装饰模式的功能,主要的Proxy类和InvocationHandler接口:1、Proxy类[code]public class Proxy implements java.io.Serializable {//... public static Class getProxyClass( ClassLoader loader, ...原创 2010-09-24 00:34:23 · 244 阅读 · 0 评论 -
[备忘]String#split/substring的子串会共享原来大的String
如果每次需要大字符串中的很小的一个字串,可能会引起内存中大量的大字符串驻留。特别是使用HashMap,单例对象持有字符串聚集时。也可以通过这个特性,来优化频繁的大字符串分割问题。详情可见:http://jarfield.iteye.com/blog/583946...2010-03-29 17:18:34 · 115 阅读 · 0 评论 -
使用scala.sys.process包和系统交互
在Java中我们可以使用Runtime.getRuntime().exec();来和系统交互。这个API过于底层,exec返回一个代表进程的对象,然后从中读取执行结果或者错误信息。并且如果不关心进程的输出,而没有把输入结果重定向到/dev/null,超过输出结果的buffer就会阻塞。scala.sys.process提供了shell的和系统交互的DSL,包括执行命令、逻辑操作、重定向、管道等...原创 2011-07-19 00:00:21 · 407 阅读 · 1 评论 -
XML DocumentBuilder#parse(String str)
[code="java"]DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder();Document doc = db.parse(url);//参数是url,而不是一个xml的字符串XPathFactory xpa...2010-07-06 15:55:36 · 431 阅读 · 0 评论 -
commons-lang StringUtils#split的坑
今天用StringUtils#split,陷入了前两个坑。需求是从数据库中查出用TAG分割的sights和citys,二者在位置上是对应的,然后根据sight和city查对应的景区。使用的时候先验证split之后的sights和citys的长度必须一致。并且city可能为""。1、 StringUtils#split会合并相邻的分割符,这个和String.split不一致。需要使用sp...原创 2011-12-31 10:11:37 · 544 阅读 · 0 评论 -
Java Timestamp是和ExtJS的timestamp不兼容
Timestamp纳秒级别的,ExtJS的timestamp使用的是微妙,导致ExtJS使用type:'date',dateFormat: 'timestamp',格式化得到不正确的结果。解决方法就是做一个直接使用Java格式化后的原来模型包装类。...2010-08-09 20:33:37 · 121 阅读 · 0 评论 -
Java序列化注意一些点
1.序列化ID的问题:标示了版本号,版本号一致才能反序列化成功。修改代码同时要跟新版本号,以确保另一端能够识别错误的版本,然后进行修成。生成方法:固定和随机2.序列化只会序列化非transit的实例变量,不会序列化静态变量,因为他是属于类的。3.transit的实例变量和没有实现Serializable接口的父类成员不会被序列化。4.通过readObject,writeOb...原创 2011-03-12 21:04:01 · 99 阅读 · 0 评论 -
深入异常处理
异常处理是写一个健壮的程序的非常重要的但经常被忽视的方面。如何去抛出、捕获和处理异常有不同的方式,并不是每种方式都很有效。一、设计异常层次:好处:1.声明捕获一个异常,可以自动的捕获其子类的异常。2.可以进行多个catch,对不同的异常进行不同的处理,比如FileNotFoundException和IOException.3.方法中声明抛throws子句中的异常,函数体可以...原创 2011-03-31 20:46:44 · 220 阅读 · 0 评论 -
利用Java反射实现通用的Excel报表
最近有很多客户报表需要提供客户下载,需要生成一个Excel的格式文件,所以写了一个通用的Excel报表生成代码供各个地方使用:[code="java"] public void createExcelReport(List reports,Map headerMap,OutputStream output) throws IOException { if(reports == ...原创 2011-04-12 16:00:03 · 176 阅读 · 0 评论 -
写了一个支持搜索并下载歌曲的工具
主要是利用baidu搜索的到的结果,然后从页面中抽取歌曲的链接和与歌曲相关的其他信息,然后利用这些链接进行下载.感觉实用性还挺强的,虽然下载速度和迅雷没法比,貌似比直接下载.[img] http://fuliang.iteye.com/upload/picture/pic/10417/e3c1df74-1da3-3e3a-af10-ac7a779ba780.bmp [/img]...2008-03-26 14:45:02 · 83 阅读 · 0 评论 -
Java正则表达式(二)
[b]Matcher类:[/b]使用Matcher类,最重要的一个概念必须清楚:[b]组(Group)[/b],在正则表达式中()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的,以及这些组和组的下标怎么对应的.下面我们看看一个小例子,来说明这个问题[quote]\w(\d\d)(\w+) [/quote]这个正则表达式有三个组:整个\w(\...2008-03-23 11:30:46 · 356 阅读 · 0 评论 -
小试dom对xml的操作
dom对xml的操作:[code]import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.xml.sax.*; im...2007-04-10 10:26:19 · 72 阅读 · 0 评论 -
Java GUI在循环中调用repaint的问题分析
在Java中,循环调用repaint()来显示动画效果,是个很自然的方法,然而这是不可行的。其实Java有一个GUI (AWT) Thread来负责GUI事件的分发,这个线程接受输入事件,放入事件队列,从该队列中拿出一个事件分发出去。而这个线程事实上与GUI component线程[一般是你应用程序的主线程]是绑定的。也就是说如果当前的线程休眠,事件分发的线程同样会休眠。试想如...2007-12-19 10:23:32 · 795 阅读 · 0 评论 -
构造函数中调用虚函数的问题
今天Leen同学问我一个看似很简单的问题,父类的构造函数中调用了虚函数的话.那么在实例化子类对象时首先应该调用父类的构造方法,这时父类的构造函数中调用的虚函数应该是哪个?其实这个问题,在语言设计的时候就是个两难的问题。一、如果调用的是父类的函数的话,这个有点违反虚函数的定义。二、如果调用的是子类的函数的话,这可能产生问题的:因为在构造子类对象的时候,首先调用父类的构造函数,而这时候如果...2008-01-03 23:53:28 · 342 阅读 · 0 评论 -
ThreadLocal 是什么东东
最早接触ThreadLocal这个东东,还是在学Hibernate的时候,当时看ThreadLocal没明白是干什么的,后来在网上查才明白ThreadLocal的用途,ThreadLocal其实蛮有用的,总结一下具体的原理及用法。 虽然支持线程局部变量早就是许多线程工具,但 Java Threads API 的最初设计却没有这项有用的功能。而且,最初的实现也相当低效。ThreadL...2008-01-11 18:07:51 · 118 阅读 · 0 评论 -
Java nio(一)
jdk1.4提供了java.nio包,为从根本上改善I/O的性能提供了可能,但是nio要比以前的I/O要复杂,提供了更底层的操作和更细的api。学起来并不是那么快就上手,有专门一本书介绍nio的。我希望通过总结更好的梳理整个nio框架各个类之间的关系,从而能够灵活的使用nio包。nio通常需要涉及到三个对象:1、数据源:从文件中获得的FileInputStream/FileOutput...2008-03-01 22:35:41 · 67 阅读 · 0 评论 -
Java nio(二)
一、各种缓冲区:所有的缓冲区都继承了Buffer,Buffer类定义了所有缓冲区共有的基本特征,缓冲区存储了制定类型的元素序列有:ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer。我们需要知道这些基本类型占用存储空间与Byte的对应关系:char 2 bytes,int 4 b...2008-03-01 23:49:50 · 70 阅读 · 0 评论 -
Java nio(三)
一、读文件:前面我们介绍了通过获得FileChannel来写文件,现在我们再看看读操作。其实读操作和写操作基本是对应的。首先与写操作类似从文件中获得流,读操作要获得输入流FileInputStream,再从这个流中得到FileChannel对象,然后进行读操作。文件通道的读操作有三个read()方法:[code="java"]int read(ByteBuffer bu...2008-03-02 15:04:33 · 83 阅读 · 0 评论 -
Java nio(四)
本来打算昨天总结这部分的,一方面昨天上了一天课,另一方面,这部分想理清全部的思路并不那么容易.看《Java nio》那本书,差点没看崩溃,洋洋洒洒写了近三百大页介绍java nio,写的太散太细,反而觉得很乱,理不清思路了。那本书用起来作为参考手册还行,想很快上手这本书还真不适合。今天打算总结和Socket异步通信相关的内容。传统的Socket是阻塞,像ServerSocket在调用a...2008-03-04 19:06:38 · 101 阅读 · 0 评论 -
Java正则表达式(一)
正则表达式在处理文本方面用处非常大,最早像在Perl和awk语言中,提供了这种机制,Java在Java 2中也增加了正则表达式这个包java.util.regex。这个包为用户使用正则表达式,提供了易用而全面的支持。我的研究方向是web挖掘。从网页中提取内容,处理文本,当然需要正则表达式这个强大的工具了。一、首先我们看一下怎么使用正则表达式的一个例子:A Matcher examines ...2008-03-10 19:10:31 · 97 阅读 · 0 评论 -
写了一个简单的Java版的eval函数
今天一同学做东西要用这个东东,就帮他写了一个,先转化成后缀表达式,然后再计算.当然也可以直接计算中缀表达式,考虑到要多位数,就没那么做.支持多位数的带括号的整数的加减乘除.[code="java"]package edu.jlu.fuliang;import java.util.ArrayList;import java.util.List;import jav...2008-03-15 21:11:14 · 528 阅读 · 0 评论 -
你构建灵敏的界面了么?
今天帮同学调试程序,发现许多同学初写GUI程序共同的毛病,不能够构建反映灵敏的界面,并由此导致一些问题的出现。或许今天遇到的问题,再加上[url="http://fuliang.iteye.com/blog/149340"]Java GUI在循环中调用repaint的问题分析[/url]能够对初学Java GUI编程同学有所帮助。我同学写的程序,把有问题那部分抽离出来,表述为下面一段代码:...2008-03-16 19:02:59 · 116 阅读 · 0 评论 -
用java做的滚动的正弦曲线
[code]//windows API写过滚动正弦曲线,感觉用java做起来代码会比较小,试了一下,但感觉//面不如windows好.import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.Timer;public class SinWave exte...2007-04-09 17:14:39 · 336 阅读 · 1 评论 -
以前用java写的计算器程序
以前用java写的计算器程序:[code]import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends JFrame{ private Container container; private GridBagLayout layout;...2007-04-09 17:36:37 · 127 阅读 · 0 评论 -
深入探讨java中引用的行为
在java和C++中都采用了引用这个概念,但是二者的行为并不一样。java的引用其实更象c++中的指针,而非c++中的引用,的确c++的指针给我们带来强大威力的同时,也给我们带来了危险,大多的攻击也都是利用指针让系统崩溃。在许多书上都没有见到关于java中reference行为的更详细的探讨,本文便从与c++的的区别谈起:一.先看java中的引用:[code]class Person...2007-04-09 17:45:24 · 85 阅读 · 0 评论 -
windows程序之滚动的正弦曲线(二)
[code]//通过移动坐标原点来实现正弦曲线,可以减少数组元素的移动//但要开辟2*NUM空间的数组。#include #include #define ID_TIMER 1#define NUM 1000#define STEP 10//每次移动的步长#define TWOPI (2 * 3.14159)LRESULT CALLBACK WndP...2007-04-09 17:51:14 · 133 阅读 · 0 评论 -
用java写的俄罗斯方块,并有详细的注释.
[code]/**虚拟的单个方格类,控制方格的颜色*/class RussiaBox implements Cloneable { private boolean isColor; public RussiaBox(boolean isColor) { this.isColor = isColor; } /* *设置颜色 */ p...2007-04-09 18:16:52 · 1260 阅读 · 0 评论 -
以前用java写的贪吃蛇游戏
[code]//************************************************************//游戏:每次产生5个食物,通过上下左右键控制蛇的运动方向//*************************************************************//************************...2007-04-09 22:53:02 · 106 阅读 · 0 评论 -
用java写的基于Socket的简单即时通讯程序
用java写的基于Socket的简单即时通讯程序,用户可以注册并登录,也可以作为游客身份使用.[code]/**//* *服务端 */package edu.jlu.fuliang;import java.io.*;import java.net.*;import java.awt.event.ActionEvent;import java.awt.even...2007-04-10 10:22:43 · 775 阅读 · 0 评论 -
HttpClient Json请求工具
发送Json请求,结果返回Json.[code="java"]public static JSONObject post(String url,JSONObject json){ HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); JSONObject respon...原创 2011-05-05 18:32:03 · 434 阅读 · 0 评论