J2SE笔记

----------------------------------------------------------------------------------------------------------
  获取本机地址

 

InetAddress addr = InetAddress . getByName ( null );
InetAddress . getByName ( "localhost" );
InetAddress . getByName ( "127.0.0.1" );
这三种方法得到的结果是一样的。
创建InetAddress的唯一途径就是那个类的static(静态)成员方法getByName()(这是最常用的)、getAllByName()或者getLocalHost()。
 
----------------------------------------------------------------------------------------------------------          
制作jar包
jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名... 
  
其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。 
  
-c  创建一个jar包 
-t 显示jar中的内容列表 
-x 解压jar包 
-u 添加文件到jar包中 
-f 指定jar包的文件名 
  
-v  生成详细的报造,并输出至标准设备 
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置) 
-0 产生jar包时不对其中的内容进行压缩处理 
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置 
-i    为指定的jar文件创建索引文件 
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令 
 
二.jar使用范例: 
  
(1)创建jar包 
   jar cf hello.jar hello   利用test目录生成hello.jar包,如hello.jar存在,则覆盖 
  
(2)创建并显示打包过程 
jar cvf hello.jar hello     利用hello目录创建hello.jar包,并显示创建过程 
例:E:\>jar cvf hello.jar hello 
标明清单(manifest) 
增加:hello/(读入= 0) (写出= 0)(存储了 0%) 
增加:hello/TestServlet2.class(读入= 1497) (写出= 818)(压缩了 45%) 
增加:hello/HelloServlet.class(读入= 1344) (写出= 736)(压缩了 45%) 
增加:hello/TestServlet1.class(读入= 2037) (写出= 1118)(压缩了 45%) 
  
 ----------------------------------------------------------------------------------------------------------
序列化(Serializable)是什么: 
  序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。 
  序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例 
  序列化的什么特点: 
  如果某个类能够被序列化,其子类也可以被序列化。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。 
  什么时候使用序列化: 
  一:对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。 
  二:java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。
 ----------------------------------------------------------------------------------------------------------
序列化和外部化(Externalizable)的主要区别 
下面是序列化和外部化在代码级的关联方式: 

 

   public interface Serializable {}  
   public interface Externalizable extends Serializable {  
   void readExternal ( ObjectInput in );  
   void writeExternal ( ObjectOutput out );  
   }  
序列化会自动存储必要的信息,用以反序列化被存储的实例,而外部化则只保存被存储的类的标识。
Serializable接口 
  · 优点:内建支持 
  · 优点:易于实现 
  · 缺点:占用空间过大 
  · 缺点:由于额外的开销导致速度变比较慢 
Externalizable接口 
  · 优点:开销较少(程序员决定存储什么) 
  · 优点:可能的速度提升 
  · 缺点:虚拟机不提供任何帮助,也就是说所有的工作都落到了开发人员的肩上。 
在两者之间如何选择要根据应用程序的需求来定。Serializable通常是最简单的解决方案,但是它可能会导致出现不可接受的性能问题或空间问题;在出现这些问题的情况下,Externalizable可能是一条可行之路。 
  要记住一点,如果一个类是可外部化的(Externalizable),那么Externalizable方法将被用于序列化类的实例,即使这个类型提供了Serializable方法: 

 

   private void writeObject ()  
   private void readObject ()
----------------------------------------------------------------------------------------------------------
(全文完)
 
(转载本博文章请注明作者和出处  http://solleoit.iteye.com ,请勿用于任何商业用途)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值