2008-03-26

写了一个支持搜索并下载歌曲的工具

关键字: 搜索下载歌曲
主要是利用baidu搜索的到的结果,然后从页面中抽取歌曲的链接和与歌曲相关的其他信息, 然后利用这些链接进行下载. 感觉实用性还挺强的,虽然下载速度和迅雷没法比,貌似比直接下载.
2008-03-23

Java正则表达式(二)

关键字: java regex, regular expression
Matcher类: 使用Matcher类,最重要的一个概念必须清楚:组(Group),在正则表达式中 ()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的, 以及这些组和组的下标怎么对应的. 下面我们看看一个小例子,来说明这个问题 引用\w(\d\d)(\w+) 这个正则表达式有三个组: 整个\w(\d\d)(\w+) 是第0组 group(0) (\d\d)是第1组 group(1) (\w+)是第2组 group(2) 我们看看和正则表达式匹配的一个字符串x99SuperJava, group(0)永远都是匹配整个表达式的字符串的那部分x99SuperJava ...
2008-03-23

Berkely DB Java Edition学习笔记一

关键字: berkely db, je
Berkely DB对于高并发、要求速度快的应用来说是个不错的选择,mysql就是用BDB实现的(mysql的后台) ,mysql快,BDB比mysql还要快N倍。BDB是一种嵌入式的、非关系数据库,它与其他的关系数据库RMDBS不同,它没有提供SQL,而是提供了自己的访问接口。作为一种嵌入式的数据库,它是进程内模式的,也就是说它和应用程序在同一内存空间运行,所以速度要高很多,与嵌入式的数据库如Derby、HSQLDB(都是RMDBS的)相比,它效率更高,使用方法也有很大的不同。现在BDB以被Oracle收购。Berkely DB提供的文档Getting Started with Berkel ...
2008-03-17

体验一下Spring2.5 Annotation-based-configration

关键字: spring annotation
Spring2.5 Annotation-based-configration大大简化了配置,用一个经典的HelloWorld程序来体验一下: package edu.jlu.fuliang; import org.springframework.stereotype.Component; @Component public class MessageProvider { private String message = "Hello World!"; public String getMessage() { return message; } ...
2008-03-16

你构建灵敏的界面了么?

关键字: gui灵敏的界面
今天帮同学调试程序,发现许多同学初写GUI程序共同的毛病,不能够构建反映灵敏的界面, 并由此导致一些问题的出现。或许今天遇到的问题,再加上Java GUI在循环中调用repaint的问题分析能够对初学Java GUI编程同学有所帮助。 我同学写的程序,把有问题那部分抽离出来,表述为下面一段代码: package edu.jlu.fuliang; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax. ...
2008-03-16

学SSH2时写的入门例子

关键字: ssh, struts2, spring, hibernate, dwr
一博友问我有没有以前学SSH2做的入门例子,找了两个放上去,有需要的可以下来看看. 我的CSDN博客有这个例子的介绍 DWR+Spring+hibernate的增删改查的例子 Spring+hibernate+DWR整合 Struts2+Spring+hibernate的增删改查的例子 Ajax+Struts2+Spring+Hibernate整合 附件上有这两个的源码
2008-03-15

写了一个简单的Java版的eval函数

关键字: 后缀表达式, java eval
今天一同学做东西要用这个东东,就帮他写了一个,先转化成后缀表达式,然后再 计算.当然也可以直接计算中缀表达式,考虑到要多位数,就没那么做. 支持多位数的带括号的整数的加减乘除. package edu.jlu.fuliang; import java.util.ArrayList; import java.util.List; import java.util.Stack; public class Eval { public int eval(String exp){ List<String> list = infixExpToPostExp(e ...
2008-03-10

面向对象的原则、模式、语言及框架(五)

关键字: lsp, liskov替换原则
Liskov替换原则 我们前面说了开闭原则OCP,其背后的主要机制是抽象和多态,但在静态语言中(如c++,java),支持抽象和多态的关键机制之一便是继承,正是有了继承,我们才能够 抽象出接口/基类,然后在子类中实现继承而来的抽象方法,或覆写基类已实现的方法 来定制子类。这样我们才能只通过扩展来实现新增的功能。 但是按照什么规则,我们才能设计出最佳的继承层次呢,以及什么样才是最佳的继承体 系呢?Liskov替换原则回答了这个问题。 下面我们就看看什么是Liskov替换原则(LSP): LSP:子类型必须能够替换成它们的基类型。 LSP的重要性是不言而喻的,例如: void f(BaseTy ...
2008-03-10

Java正则表达式(一)

关键字: java regex, regular expression
正则表达式在处理文本方面用处非常大,最早像在Perl和awk语言中,提供了这种机制,Java在Java 2中也增加了正则表达式这个包java.util.regex。这个包为用户使用正则表达式,提供了易用而全面的支持。我的研究方向是web挖掘。从网页中提取内容,处理文本,当然需要正则表达式这个强大的工具了。 一、首先我们看一下怎么使用正则表达式的一个例子: A Matcher examines the results of applying a pattern. 我们希望从这句话中找到所有开头为a的单词。 当然这只是一个简单的例子,你可以使用String提供的split方法,得到单词数组,然后 ...
2008-03-09

面向对象的原则、模式、语言及框架(四)

关键字: oop, ocp, 开闭原则
开-闭原则: 任何软件在其生命周期内都会发生变化,如果我们期望开发出来的系统不会在第一版之后就被抛弃,就必须面对需求的变化而保持相对稳定.开-闭原则(The open-close principle)为我们提供了指引. 那什么是开-闭原则呢? 软件实体(模块,类,方法等)应该是可以扩展的,但是不可修改的. 这句话说出了软件实体应该具备的两个特征: 1、对扩展式开放的(Open for extension) 当需求变化时,我们可以对模块进行扩展,使其具有满足新需求的新行为。 2、对于更改时封闭的(Closed modification) 对模块进行扩展时,不能修改已有的源代码或二进制代码。 这两 ...
2008-03-08

面向对象的原则、模式、语言及框架(三)

关键字: srp、单一职责原则
单一职责原则 这个原则描述了内聚性:一个模块组成元素的功能相关性。单一职责原则描述了引起类变化的原则只有一个,而职责就是变化的原因,如果你能够想到多于一个动机去改变类,那么这个类就具有多于一个职责。 例如 class Rectangle{ public void draw(); public double area(); } 如果这个类为两个不同的应用程序所使用:计算几何学方面的,它只需要提供计算面积的方法,图形绘制方面的,它可能只需要在屏幕上绘制自己。那么这个类就有了两个职责,这种设计违反了单一职责原则。当我们在计算几何学方面方面需要新的功能时我们需要修改这个类, 当 ...
2008-03-08

面向对象的原则、模式、语言及框架(二)

关键字: oop, bad smell, design principle
一、一些拙劣的设计症结 说起面向对象的原则,不得不提一些拙劣的一些设计症结,和代码的Bad Smell类似,但他们处于更高的层次,是整个软件结构的Bad Smell. 这些症结主要有: 僵化性(Rigdity):设计难于改变。 很难对系统进行改动,因为每个改动会迫使许多对系统的其他部分做改动,这往往是系统耦合性太高. 脆弱性(Fragility):设计易于遭到破坏。 在一次改动时,程序的许多地方都会出问题,而且常常出新问题的地方和改动的地方并没有概念上的联系.这些模块不断的修改,然而你越是修改他们,他们就变的更糟. 牢固性(Immobility):设计难于重用。 设计中包含了许多对其他系统有用 ...
搞搜索引擎的公司貌似都是在Linux下开发,c,c++,perl和Linux/unix系统编程.似乎Java学的再好对于这个方向的工作都没有太大的帮助,当然Java有大量开源的源代码是它的优势.今天向baidu投了2008招聘实习生的简历,搜索核心开发的岗位都要求c,c++和linux.最后投了平台工程部-Java工程师,基本是一个辅助的开发部门.虽然c,c++底子还行,但Linux系统编程基本没有接触,希望这半年能把linux编程和算法搞好. 刚搞到一本不错的Linux高级编程这本电子的E文书,感觉相当不错.有需要的可以下来看看
这学期开面向对象的方法课程,可以趁机总结一下以前面向对象的开发经验,以及课程的心得,打算从面向对象的原则、模式、语言及框架方面总结,貌似是一个很大的题目。 今天听了面向对象的课,主要是讲软件复用与组件技术,以及面向对象建模技术。今天讲了COM组件,微软帝国大厦的基石。COM组件虽然已是昨日黄花,但对于组件和组件复用的理念还是有很好的诠释的,用C++编COM组件从老师讲的例子来看,貌似很费劲的东东,需要实现 IUnknown接口的QueryInterface、AddRef和Release方法。需要用户自己维护引用计数貌似是个很容易出问题的东东,如果多Release一次,问题不是内存泄露的问题了, ...
2008-03-04

Java nio(四)

关键字: java nio, socket channel
本来打算昨天总结这部分的,一方面昨天上了一天课,另一方面,这部分想理清全部的思路 并不那么容易.看《Java nio》那本书,差点没看崩溃,洋洋洒洒写了近三百大页介绍java nio,写的太散太细,反而觉得很乱,理不清思路了。那本书用起来作为参考手册还行,想很快上手这本书还真不适合。 今天打算总结和Socket异步通信相关的内容。 传统的Socket是阻塞,像ServerSocket在调用accept方法后便处于阻塞状态等待Client端的连接,所以一般会在Server端使用许多线程,对每一个Socket连接分配一个线程。充分利用并发特性来提高性能。 但这样会带来许多问题: 1、Server端 ...
2008-03-02

Java nio(三)

关键字: java nio
一、读文件: 前面我们介绍了通过获得FileChannel来写文件,现在我们再看看读操作。 其实读操作和写操作基本是对应的。 首先与写操作类似从文件中获得流,读操作要获得输入流FileInputStream ,再从这个流中得到FileChannel对象,然后进行读操作。 文件通道的读操作有三个read()方法: int read(ByteBuffer buf); 从文件中读取buf.remaining()[即limit-position]个字节到缓冲区buf,从缓冲区的当前位置开始存取 int read(ByteBuffer[] buffers); 从文件中读到多个缓冲区中 int ...
2008-03-01

Java nio(二)

关键字: java nio
一、各种缓冲区: 所有的缓冲区都继承了Buffer,Buffer类定义了所有缓冲区共有的基本特征,缓冲区存储了制定类型的元素序列有:ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer。 我们需要知道这些基本类型占用存储空间与Byte的对应关系: char 2 bytes,int 4 bytes,double 8 bytes 二、我们看看Buffer三个重要的概念以及他们之间的关系: capacity 所能存方特定类型值得最大数量 limit 第一个不能读取或写入的索引位置 positio ...
jdk1.4提供了java.nio包,为从根本上改善I/O的性能提供了可能,但是nio要比以前的I/O要复杂,提供了更底层的操作和更细的api。学起来并不是那么快就上手,有专门一本书 介绍nio的。我希望通过总结更好的梳理整个nio框架各个类之间的关系,从而能够灵活的使用nio包。 nio通常需要涉及到三个对象: 1、数据源:从文件中获得的FileInputStream/FileOutputStream、从socket中获得的输入输出流等 2、缓冲区对象(buffer):nio定义了一系列buffer对象,最基本的是ByteBuffer,其他还有各种基本数据类型除了boolean类型外,所对应 ...
以前一直用ANT,不过一直也懒得好好学ant脚本,今天checkout一个源代码,用Maven管理的,只好用Maven构建这个项目了。 下载Maven: http://maven.apache.org/start/download.html 把下载的文件(如apache-maven-2.0.8-bin.zip)解压到一个目录下。 我的是:D:\maven2.0.8 配置一下环境变量: 设置MAVEN_HOME=D:\maven2.0.8 设置path=%MAVEN_HOME%\bin 然后再命令行输入mvn,看看好不好用 装eclipse的插件:mavenide 使用eclipse的updat ...
fuliang
搜索本博客
我的相册
53569b0e-134e-31fa-9555-bdfa6932b0e7-thumb
RSS Reader1
共 6 张
存档
最新评论