JAVA—咖啡馆

——欢迎访问rogerfan的博客,常来《JAVA——咖啡馆》坐坐,喝杯浓香的咖啡,彼此探讨一下JAVA技术,交流工作经验,分享JAVA带来的快乐!本网站部分转载文章,如果有版权问题请与我联系。

BlogJava 首页 新随笔 联系 聚合 管理
  447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

05 2009 档案

     摘要: Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,read()也是傻傻的等,这会影响我们程序继续做其他事情,那么改进做法就是开设线程,让线程去等待,但是这样做也是相当耗费资源的。

Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。
  阅读全文
posted @ 2009-05-31 15:17 rogerfan 阅读(670) | 评论 (0)  编辑

     摘要: //根据不同的难度产生随机字母和数字
for(int i=0; readomNumStart.length()<4; i++) {
if(difficult == 1) {

//产生随机的0-9的数字
a = String.valueOf((int)(Math.random() * 10)) ;
}   阅读全文
posted @ 2009-05-14 11:40 rogerfan 阅读(440) | 评论 (1)  编辑

     摘要: 归纳一些网上取JAVA路径的方法:

注明:如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功。
 
得到classpath和当前类的绝对路径的一些方法

获得CLASSPATH之外路径的方法:
URL base = this.getClass().getResource(""); //先获得本类的所在位置,如/home/popeye/testjava/build/classes/net/
String path = new File(base.getFile(), "../../../"+name).getCanonicalPath(); //就可以得到/home/popeye/testjava/name   阅读全文
posted @ 2009-05-14 11:39 rogerfan 阅读(385) | 评论 (0)  编辑

     摘要: 主要使用的是java.util.Robot类来捕获屏幕,可以实现对屏幕一个矩形区域的捕获,通过这个类,我们也可以实现一个远程桌面控制的程序。


package com.qiu.util;
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
/** *//**@Author Qiu_BaiChao
*一个简单的屏幕抓图
  阅读全文
posted @ 2009-05-14 11:37 rogerfan 阅读(290) | 评论 (0)  编辑

     摘要: 由于本人的一个低级失误,造成结论错误,for才是最终的胜者。foreach和iterator是类似的机制,性能都不是很好。以下代码已经重新调整,再次道歉。

以前一直有人说,foreach的性能有损失,不建议使用,今天特意测试了一下,结果是 for方式的性能最好,foreach次之,而Iterator循环性能最差..

1 完整的测试代码
view plaincopy to clipboardprint?
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 测试JAVA各种循环的性能。

* for 方式的性能最好,foreach次之,而Iterator循环性能最差。
  阅读全文
posted @ 2009-05-14 11:34 rogerfan 阅读(353) | 评论 (0)  编辑

     摘要: Collection接口
  Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类, Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
  所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的 Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
  如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
    Iterat  阅读全文
posted @ 2009-05-14 09:58 rogerfan 阅读(867) | 评论 (0)  编辑

     摘要: 编辑
作用域 功能 快捷键
文本编辑器 查找上一个 Ctrl+Shift+K
文本编辑器 查找下一个 Ctrl+K
全局 恢复上一个选择 Alt+Shift+↓
全局 快速修正 Ctrl1+1
全局 内容辅助 Alt+/
全局 上下文信息 Alt+?Alt+Shift+?Ctrl+Shift+Space
Java编辑器 显示工具提示描述 F2
Java编辑器 选择封装元素 Alt+Shift+↑
Java编辑器 选择上一个元素 Alt+Shift+←
Java编辑器 选择下一个元素 Alt+Shift+→
文本编辑器 增量查找 Ctrl+J
文本编辑器 增量逆向查找 Ctrl+Shift+J
全局 重做 Ctrl+Y   阅读全文
posted @ 2009-05-13 11:47 rogerfan 阅读(378) | 评论 (0)  编辑

     摘要: 1.java.util.Calendar
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

例:

1Calendar cal = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。
2cal.add(Calendar.DAY_OF_MONTH, -1);//取当前日期的前一天.
3
4cal.add(Calendar.DAY_OF_MONTH, +1);//取当前日期的后一天.
5
6//通过格式化输出日期
7java.text.SimpleDateFormat format = new java.text.S  阅读全文
posted @ 2009-05-13 11:32 rogerfan 阅读(306) | 评论 (0)  编辑