Java中的强大武器
所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象。这个过程也可以通过网络实现,可以先在Windows机器上创建一个对象,对其序列化,然后通过网络发给一台Unix机器,然后在那里准确无误地重新“装配”。是不是很神奇。
也许你会说,只了解一点点,但从来没有接触过,其实未必如此。RMI、Socket、JMS、EJB你总该用过一种吧,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳。
第一次使用Java的对象序列化是做某项目,当时要求把几棵非常复杂的树(JTree)及相应的数据保存下来(就是我们常用的保存功能),以便下次运行程序时可以继续上次的操作。
那时XML技术在网上非常的热,而且功能也强大,再加上树的结构本来就和XML存储数据的格式很像。作为一项对新技术比较有爱好的我当然很想尝试一下。
不过经过仔细分析,发现假如采用XML保存数据,后果真是难以想象:哪棵树的哪个节点被展开、展开到第几级、节点当前的属性是什么。真是不知该用A、B、
C还是用1、2、3来表示。
还好,发现了Java的对象序列化机制,问题迎刃而解,只需简单的将每棵树的根节点序列化保存到硬盘上,下次再通过反序列化后的根节点就可以轻松的构造出和原来一模一样的树来。
其实保存数据,尤其是复杂数据的保存正是对象序列化的典型应用。最近另一个项目就碰到了需要对非常复杂的数据进行存取,通过使用对象的序列化,问题同样化难为简。
对象的序列化还有另一个轻易被大家忽略的功能就是对象复制(Clone),Java中通过Clone机制可以复制大部分的对象,但是众所周
知,Clone有深层Clone和浅层Clone,假如你的对象非常非常复杂,假设有个100层的Collection(夸张了点),假如你想实现深层
Clone,真是不敢想象,假如使用序列化,不会超过10行代码就可以解决。
还有就是Swing组件,假如你有两个很象很象(或是一模一样)的比较难以构造的Swing组件,你该怎么办,也许你想到了Clone,但是偏偏Java的Swing组件没有提供Clone方法。别急,使用序列化,6行代码搞定:
ByteArrayOutputStream
byteOut = new ByteArrayOutputStream();
ObjectOutputStream out
= new ObjectOutputStream(byteOut);
out.writeObject(combo);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in
=new Obj
相关文档:
代码如下:
1 String command = " cmd /c C:/Program Files/MySQL/MySQL Server 5.0/bin>mysqldump -h localhost -u root -p aijia > E:/aijia.dmp " ;
2 try {
3 Process process& ......
Android中各种JAVA包的功能描述
2009-09-29 13:05
在Android的应用程序开发中,通常使用的是JAVA语言,除了需要熟悉JAVA语言的基础知识之外,还需要了解Android提供的扩展的JAVA功能。
在一般的JAVA应用中,如果需用引用基础类库,通常需要使用如下的方式:
import javax.swing.*;
以上代码表示了引用JAVA的GUI组件Swi ......
public(公共访问控制):可以被所有类访问。
protected(保护访问控制):可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他类访问。
default(友好访问控制):可以被这个类本身和同一个包中的其他类所访问。
private(私有访问控制):只能被该类自身访问和修改。 ......
11 一个源程序文本文件也可以含有多个类,但每个文件只能有一个公共类。
12 main是所有Java应用程序执行的入口,但不是Java小应用程序的入口。
main的属性必须是public static void。
13 数值类型间的强弱关系
......
由于工作需要,要用.net的程序调用一个java编写的web service接口,接口的一个参数要求md5方式加密。
.net中的md5加密是很容易的,采用msdn中给出的方法:
// Hash an input string and return the hash as
// a 32 character hexadecimal string.
static string getMd5Hash(string input)
{
......