Zydecx's Site

Debug code, debug life, debug today!

#Java

类型转换与反射(Java)

Time: , by zydecx

类型转换&检查

类型转换

  1. 强制类型转换

    强制类型转换通过(NewType)形式实现类型的强制转换。如下例所示,将aList强制转换为ArrayList类型。

    List aList = new ArrayList();
    ArrayList anArrayList = (ArrayList) aList;
...more

Class对象(Java)

Time: , by zydecx

关于Class对象,需要了解的是:

  • 每个类都有一个Class对象
  • 默认情况下,类通过“原生类加载器”从磁盘中加载;可以挂接其他的类加载器
  • Java采用动态加载机制;类在第一次被访问静态成员时被加载,从这个角度上讲,可以认为构造器为类的静态方法
...more

ObjectOutputStream追加写入导致读取报错的问题分析

Time: , by zydecx

问题现象:使用ObjectOutputStream向同一个文件写入多个对象,
A). 当ObjectOutputStream在打开后连续写入多个对象再关闭,可通过ObjectInputStream正常读取写入的多个对象;
B). 当每写入一个对象即关闭ObjectOutputStream并在写入下一个对象时重新打开,通过ObjectInputStream读取对象时,可以正常读取第一个对象,但读取第二个对象时报错。典型的报错信息如下:

Exception in thread "main" java.io.StreamCorruptedException: invalid type code: AC
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at com.demo.ObjectSerializationDemo.writeObjectsSeparately(ObjectSerializationDemo.java:69)
	at com.demo.ObjectSerializationDemo.main(ObjectSerializationDemo.java:17)
		

...more

RSA加/解密的Java实现

Time: , by zydecx

RSA算法是一种常用的非对称加密算法。所谓非对称性,是指加/解密的过程中需要两个不同的密钥——公钥和私钥,通过公钥对数据加密,通过私钥对密文解密。RSA算法的可靠性是建立在大数因数分解的难度上的。在数论中,对极大整数做因数分解的难度极大,因此决定了RSA算法的高可靠性。若想了解RSA算法的数学原理,可参考WIKI:RSA加密算法RSA算法原理

本文介绍在Java中实现RSA的加/解密操作。(测试环境:Windows OS, jdk_1.7.0_25)

...more

This is a magic phrase. You CANNOT see it(I'll really FULE you if you do that), but it does work. Why? You may feel confused. OK, at least it doesn't afftect your experience and it works. That is what we call MAGICE!