我想任何一本介绍模式的书在讲到Decorator模式的时候不能不提到它的实际应用——在Java/IO库里面的应用,<>这本书也不例外,有点不一样的是,这本书在介绍的时候有个专题,是从两个模式来看Java/IO库,完这个专题后,个人感觉对Java/IO库有了全新的认识同时也加深了Decorator模式跟Adapter适配器模式的理解,现和大家分享下这个在我看来很伟大的成果,同时说明下,以下大部分文字跟图片是来自<>这本书。 一。引子(概括地介绍Java的IO)
无论是哪种编程语言,输入跟输出都是重要的一部分 ...
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
Stroke st = g2d.getStroke();
Stroke bs;
//LINE_TYPE_DASHED
bs = new BasicStroke(1, BasicStroke.C ...
变量
变量是指?
变量是存放东西的一个场所.在程序中,为了保存某些值,就要使用到变量.在JAVA中,变量有以下几种.
分类
类型名
大小
有效范围
初始值
整数
byte
1byte
-128~+127
0
short
...
java.io.Reader 和 java.io.InputStream 组成了 Java 输入类。Reader 用于读入16位字符,也就是 Unicode 编码的字符;而 InputStream 用于读
入 ASCII 字符和二进制数据。
在 Java 中,有不同类型的 Reader 输入流对应于不同的数据源:
FileReader 用于从文件输入;
CharArrayReader 用于从程序中的字符数组输入;
StringReader 用于从程序中的字符串输入;
& ...
Java的线程编程非常简单。但有时会看到一些关于线程的错误用法。下面列出一些应该注意的问题。
1.同步对象的恒定性
All java objects are references.
对于局部变量和参数来说,java里面的int, float, double, boolean等基本数据类型,都在栈上。这些基本类型是无法同步的;java里面的对象(根对象是Object),全都在堆里,指向对象的reference在栈上。
java中的同步对象,实际上是对于reference所指的“对象地址”进行同步。
需要注意的问题是,千万不要对同步对象重新赋值。举个例子。
class A implement ...
Javax.comm简介
Javax.comm是Sun公司提供的,用于开发平台独立的通讯应用程序的扩展API。(ps:这里javax的x很准确地表明了它是一个扩展包,而不是核心包(core package),但由于历史原因,javax下的并不都是扩展包,比如swing包已经是Java核心架构的一部分了,不过为了与Java1.1编码兼容,仍使用javax.swing。)javax.comm可以访问RS232接口(串口)及有限制地访问IEEE-1284(并口)。
下载
需要到其官方主页http://java.sun.co ...
主要介绍java和javac命令的使用,
分带package和不带package,
如果要用到第3方包,则使用-classpath参数
1.不带package
Hello.java
public class Hello
{
public static void main(String[] args){
System.out.println("hello");
}
}
c:/java/hello/Hello.java
编译
c:/java/hello>javac Hello.java
生成class文件
c:/java/he ...
遇到个这样的错误
byte[] bKey=new byte[1];
ArrayList byteList=new ArrayList();
for(int i=0;i<10;i++){
MessagePacket packet=new MessagePacket();
packet.setKey(bKey);
byteList.add(packet);
}
for(int j=0;j<byteList.size();j++) ...
对于java这种语言来说,位操作符比较少用到
&:按位与。
|:按位或。
^:按位异或。
~:按位取反。
<<:左移,高位插0,否则插1;
>>:右移,高位插0,否则插1;
>>>:无符号右移,无论正负,高位插0
1.<<
逻辑左移,右边补0,符号位和其他位一样.
正数:
x<<1一般相当于2x,但是可能溢出.
溢出范围: 230~(231-1) 二进制表示 010000...000到01111....1111,移位后最高为变为1了,变成负数了.
负数:
x<<1一般也相当于2x,也有可能溢出.所以, x*32可以写 ...
一. 程序设计目标
我们组写了个简单的水果生产程序,描述农场种植水果的过程,旨在通过此次设计更进一步了解工程设计模式,加强编程的结构化能力。
开发环境:JDK1.5
开发工具:JBuilder 2006
二.程序设计介绍
1.程序结构
我们组为一个水果公司写了个简单的生产程序,该公司专门向市场销售各类水果。我们为程序建立了一个名为farm的工程,程序结构比较简单,总共有7个类,并且都放在一个默认的包中。其层次结构可从下图体现出来:
对各个类的说明:
Fruit类:水果 ...
一般动态加载类都是直接用Class.forName()这个方法,但这个方法只能创建程序中已经引用的类,并且只能用包名的方法进行索引,比如Java.lang.String,不能对一个.class文件或者一个不在程序引用里的.jar包中的类进行创建。但使用URLClassLoader就可以直接根据创建一个单独的.class文件,并且每当重新载入后并实例化后都是最新的方法。类似于jsp,当你在eclipse中改了一个jsp并且存储后,只要刷新页面就可以得到最新的结果而不用重新启动服务器。
URLClassLoader是在java.net包下的一个类。他的构造函数 ...
由于需要做一个在线更新模块,需要在程序里对jar文件解压,测试程序如下
开始的测试程序如下:
package test;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.jar.*;
public class TestJarFile extends Thread {
...
C:\\Windows\\system32
\\是windows中的写法,在linux下是不认的
C:/root/local/
/ 在linux下也可被识别
所以通用写法应该使用/从而保证跨平台后程序正确运行
引用
could not initialization Dammanage:com.ibatis.dao.client.DaoException: Error while configuring DaoManager. Cause: com.ibatis.dao.client.DaoException: Error configuring DAO. Cause: java.lang.InstantiationException: com.finance.ProductDaoImpl
Caused by: java.lang.Instantiati ...
HashMap staff = new HashMap();
Set entries = staff.entrySet();
Iterator iter = entries.iterator();
while(iter.hasNext())
{
Map.Entry entry = (Map.Entry)iter.next();
Object key = entry.getKey();得么关键字
Object value = entry.getValue();得到值
}
class X {
Y b = new Y();
X() {
System.out.print("X");
}
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Z extends X {
Y y = new Y();
...
class Person
{
private String name="";
private int age=0;
public Person()
{
System.out.println("person无参数构造函数");
}
public Person(String name,int age)
{
this.name=name;
this.age=age;
System.out.println("person 2 参数的构造函数");
}
}
class Student extends Person
{
pri ...
import java.io.*;
public class GetPhysicalAddress extends Thread{
String xcmd="ipconfig /all";
PrintStream out;
StreamGobbler2 errorGobbler;
StreamGobbler2 outputGobbler;
public static void main(String[] args) {
new GetPhysicalAddress(System.out).start();
}
publi ...
一般,有3种使用锁进行同步的方法
a.方法同步,例如public synchronized void xxx()...
b.静态方法同步,例如public static synchronized void xxx()...
c.程序块同步,例如
...
synchronized(object oLock)&nbs ...
Java反射机制
一.概述
reflection是一系列的API,用于表示或者处理当前JVM中的类,接口和对象.
java.lang.reflect/java.lang.Class
二.主要功能
确定一个对象的类
取出类的modifiers,数据成员,方法,构造器,和超类.
找出某个接口里定义的常量和方法说明.
创建一个类实例,这个实例在运行时刻才有名字(运行时间才生成的对象).
...
public static void saveFileToFile(String F1,String F2){ //实现文件对拷,从F1拷贝到F2,若F2存在则会被覆盖;适用于任何文件.
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream(new File(F1)); //建立文件输入流
File file ...
这是摘自《More Java pitfalls 中文版》上的例子。
先请编译和运行下面程序:
import java.util.*;
import java.io.*;
public class BadExecJavac2
{
public static void main(String args[])
{
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.e ...
class StreamGobbler extends Thread {
InputStream is;
String type;
StreamGobbler(InputStream is, String type) {
this.is = is;
this.type = type;
}
public void run() {
try {
InputStreamReader isr = new InputStreamReader(is);
BufferedRead ...
使用cmd命令下的start命令
启动另一个窗口运行指定的程序或命令。
START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [command/program]
[param ...
参数 参数说明
/C 执行字符串指定的命令然后终断
/K 执行字符串指定的命令但保留
/S 在 /C 或 /K 后修改字符串处理(见下)
/Q 关闭回应
/D 从注册表中停用执行 AutoRun 命令(见下)
/A & ...
一、前言
用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API (Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器。
JAXP接口包含了三个包:
(1)org.w3c.dom W3C推荐的用于XML标准规划文档对象模型的接口。
(2)org.xml.sax 用于对XML进行语法分析的事件驱动的XML简单API(SAX)
(3 ...
方法1:采用String的split,验证代码如下:
import java.util.Arrays;
public class TestSplit {
public static void main(String[] args) {
String orignString = new String("5,8,7,4,3,9,1");
String[] testString = orignString.split(",");
int[] test = { 0, 0, 0, 0, 0, 0, 0 };
//String to int
...
加入缓冲后文件正确的代码
代码
public void downloadLatestVersion(){
String downloadURL=this.getLatestVersionURL();
try {
byte[] buffers=new byte[10240];
int size=buffers.length;
URL url=new URL(downloadURL);
HttpURLCon ...
新项目不做j2ee改做很基础的j2se,j2ee的很多包不能用,这类功能要自己手工写,感觉不错
URL url=new URL("http://192.168.0.78:8080/jar_update/jar.version.php?cmd=GetURLofLatestVersion");
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputSt ...







评论排行榜