Zydecx's Site

Debug code, debug life, debug today!

::技术

类型转换与反射(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

JavaScript函数

Time: , by zydecx

定义函数

最常见的函数定义方法如下所示,该示例定义了一个函数——sayHi。

sayHi();
function sayHi(name, message) {
    alert("hello " + name + "," + message);
}

还可以通过函数表达式定义一个函数,如下例所示,同样定义了函数sayHi,只不过sayHi在这里是作为一个变量出现的,使用typeof sayHi检测得到"function"。但由于JavaScript变量初始化顺序的问题,这种定义方式要求函数必须在声明后才能使用,而不能像前面的示例一样在声明前使用。而且,从这种定义方式,也就不难理解另一个现象:函数可以被覆盖,就像变量被重新赋值一样。

...more

JavaScript数据类型检测

Time: , by zydecx

数据类型概述

JavaScript的数据类型不像Java等语言那样清晰,或许这是JavaScript的变量是松散类型的原因。概括地讲,JavaScript变量的数据类型包括:

  • Undefined
  • Boolean
  • Number
  • String
  • Object
  • Function

其中,Boolean/Number/String为基本类型,Object为引用类型,Function为函数,Undefined为JavaScript作为松散类型所特有的数据类型,在后文中会专门介绍。


在【JavaScript高级程序设计】中,还定义了专门的Null类型,表示字面值为null的变量;并将Undefined类型也作为基本数据类型的一种。

...more

JavaScript变量

Time: , by zydecx

在JavaScript中定义变量

如下所示,定义变量message,并赋值"hi"

var message = "hi";

其中,关键字var可省略,即直接通过message = "hi";定义变量,但这种方式不推荐使用(该问题会在全局变量与局部变量中再讨论)。

此外,也可以通过下面的方式一次定义多个变量。

...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

学习Highcharts(二)从示例中认识Highcharts

Time: , by zydecx

从“学习Highcharts(一)”就开始构思这篇文章。一直希望做个DEMO页面,可以形象、直观的介绍Highcharts的各个组件并展示示例。趁着公司培训,终于有了机会把它做出来。

Highcharts的主要组件有:title(标题)、legend(图例)、axis(坐标轴)、tooltip(提示框)、series(数据列)。点击下方DEMO中对应标签可看到相应组件的动画演示

...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!