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-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-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

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-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类型外,所对应 ...
2008-01-11

ThreadLocal 是什么东东

关键字: threadlocal
最早接触ThreadLocal这个东东,还是在学Hibernate的时候,当时看ThreadLocal没明白是干什么的,后来在网上查才明白ThreadLocal的用途,ThreadLocal其实蛮有用的,总结一下具体的原理及用法。 虽然支持线程局部变量早就是许多线程工具,但 Java Threads API 的最初设计却没有这项有用的功能。而且,最初的实现也相当低效。ThreadLocal 极少受到关注,但对简化线程安全并发程序的开发来说,它却是很方便的。 ThreadLocal要解决的是什么问题呢? 一个本来应该线程安全的类,里面有一个线程不安全的变量,这样这个类也就线程不安全了, ...
今天Leen同学问我一个看似很简单的问题,父类的构造函数中调用了虚函数的话.那么在实例化子类对象时首先应该调用父类的构造方法,这时父类的构造函数中调用的虚函数应该是哪个? 其实这个问题,在语言设计的时候就是个两难的问题。 一、如果调用的是父类的函数的话,这个有点违反虚函数的定义。 二、如果调用的是子类的函数的话,这可能产生问题的:因为在构造子类对象的时候,首先调用父类的构造函数,而这时候如果去调用子类的函数,由于子类还没有构造完成,子类的成员尚未初始化,这么做显然是不安全的。 c++选择了第一种,而Java选择了第二种。 c++类的设计相对比较简陋,通过虚函数表来实现,缺少类的元信息。 而Ja ...
在Java中,循环调用repaint()来显示动画效果,是个很自然的方法, 然而这是不可行的。其实Java有一个GUI (AWT) Thread来负责GUI 事件的分发,这个线程接受输入事件,放入事件队列,从该队列 中拿出一个事件分发出去。而这个线程事实上与GUI component 线程[一般是你应用程序的主线程]是绑定的。也就是说如果当前 的线程休眠,事件分发的线程同样会休眠。试想如果如果不这么 做,事件被分发,而当前线程正在休眠,事件就得不到响应,那么 这个事件就会丢失。 下面看看昨天遇到的一个问题: 昨天gyk同学问我一个动画不能显示,而是立即出来最终的画面, 他就使用循环调用repa ...
昨天看了几年前写贪吃蛇程序,代码实在不敢恭维,怎么样容易就怎么写了, 各个类的职责完全不清.当时,作为第一个写的比较大的程序,可以说是以后我大规模程 序设计的一个开端吧,这么有意义的一个程序,不能就这么任他烂下去了.况且这个小游戏难度比较小,对刚从课堂的程序设计到实际开发的来说是一个很好的例子.花了一个晚上重写了一个,注释今天上午也加上了.希望对想开始写比较大的程序的同学们有所帮助. 注:最近感冒了,没有怎么测试,自己玩了一把,看到正常,没怎么找bug...
dom对xml的操作: import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.xml.sax.*; import java.io.*; import org.w3c.dom.*; public class control implements java.io.Serializable { privat ...
用java写的基于Socket的简单即时通讯程序,用户可以注册并登录,也可以作为游客身份使用. /**//* *服务端 */ package edu.jlu.fuliang; import java.io.*; import java.net.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing ...
//************************************************************ //游戏:每次产生5个食物,通过上下左右键控制蛇的运动方向 //************************************************************* //********************************************** //游戏的类,控制其他各个类和游戏的进度 //********************************************** import j ...
/* *虚拟的单个方格类,控制方格的颜色 */ class RussiaBox implements Cloneable { private boolean isColor; public RussiaBox(boolean isColor) { this.isColor = isColor; } /* *设置颜色 */ public void setColor(boolean isColor) { this.isColor=isColor; } /* *返回颜色 */ public boolean ...
//通过移动坐标原点来实现正弦曲线,可以减少数组元素的移动 //但要开辟2*NUM空间的数组。 #include <windows.h> #include <math.h> #define ID_TIMER 1 #define NUM 1000 #define STEP 10//每次移动的步长 #define TWOPI (2 * 3.14159) LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain ( HINSTANCE hInstance, H ...
在java和C++中都采用了引用这个概念,但是二者的行为并不一样。java的引用其实更象c++中的指针,而非c++中的引用,的确c++的指针给我们带来强大威力的同时,也给我们带来了危险,大多的攻击也都是利用指针让系统崩溃。在许多书上都没有见到关于java中reference行为的更详细的探讨,本文便从与c++的的区别谈起: 一.先看java中的引用: class Person { private String name; public Person(String name) { this.name=name; } public String getName() ...
以前用java写的计算器程序: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame { private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField displayField;//计算结果显示区 private String la ...
//windows API写过滚动正弦曲线,感觉用java做起来代码会比较小,试了一下,但感觉 //面不如windows好. import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.Timer; public class SinWave extends JFrame{ private static final int NUM = 1000; private static final double TWOPI = 2 * 3.14; priva ...
fuliang
搜索本博客
我的相册
53569b0e-134e-31fa-9555-bdfa6932b0e7-thumb
RSS Reader1
共 6 张
存档
最新评论