::技术
类型转换与反射(Java)
类型转换&检查
类型转换
强制类型转换
强制类型转换通过
(NewType)
形式实现类型的强制转换。如下例所示,将aList
强制转换为ArrayList
类型。List aList = new ArrayList(); ArrayList anArrayList = (ArrayList) aList;
Class对象(Java)
关于Class对象,需要了解的是:
- 每个类都有一个Class对象
- 默认情况下,类通过“原生类加载器”从磁盘中加载;可以挂接其他的类加载器
- Java采用动态加载机制;类在第一次被访问静态成员时被加载,从这个角度上讲,可以认为构造器为类的静态方法
JavaScript函数
定义函数
最常见的函数定义方法如下所示,该示例定义了一个函数——sayHi。
sayHi();
function sayHi(name, message) {
alert("hello " + name + "," + message);
}
还可以通过函数表达式定义一个函数,如下例所示,同样定义了函数sayHi,只不过sayHi在这里是作为一个变量出现的,使用typeof sayHi
检测得到"function"
。但由于JavaScript变量初始化顺序的问题,这种定义方式要求函数必须在声明后才能使用,而不能像前面的示例一样在声明前使用。而且,从这种定义方式,也就不难理解另一个现象:函数可以被覆盖,就像变量被重新赋值一样。
JavaScript数据类型检测
数据类型概述
JavaScript的数据类型不像Java等语言那样清晰,或许这是JavaScript的变量是松散类型的原因。概括地讲,JavaScript变量的数据类型包括:
- Undefined
- Boolean
- Number
- String
- Object
- Function
其中,Boolean/Number/String为基本类型,Object为引用类型,Function为函数,Undefined为JavaScript作为松散类型所特有的数据类型,在后文中会专门介绍。
注:
在【JavaScript高级程序设计】中,还定义了专门的Null类型,表示字面值为null
的变量;并将Undefined类型也作为基本数据类型的一种。
JavaScript变量
在JavaScript中定义变量
如下所示,定义变量message
,并赋值"hi"
。
var message = "hi";
其中,关键字var
可省略,即直接通过message = "hi";
定义变量,但这种方式不推荐使用(该问题会在全局变量与局部变量中再讨论)。
此外,也可以通过下面的方式一次定义多个变量。
ObjectOutputStream追加写入导致读取报错的问题分析
问题现象:使用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)
RSA加/解密的Java实现
RSA算法是一种常用的非对称加密算法。所谓非对称性,是指加/解密的过程中需要两个不同的密钥——公钥和私钥,通过公钥对数据加密,通过私钥对密文解密。RSA算法的可靠性是建立在大数因数分解的难度上的。在数论中,对极大整数做因数分解的难度极大,因此决定了RSA算法的高可靠性。若想了解RSA算法的数学原理,可参考WIKI:RSA加密算法和RSA算法原理(一,二)
本文介绍在Java中实现RSA的加/解密操作。(测试环境:Windows OS, jdk_1.7.0_25)
学习Highcharts(二)从示例中认识Highcharts
从“学习Highcharts(一)”就开始构思这篇文章。一直希望做个DEMO页面,可以形象、直观的介绍Highcharts的各个组件并展示示例。趁着公司培训,终于有了机会把它做出来。
Highcharts的主要组件有:title(标题)、legend(图例)、axis(坐标轴)、tooltip(提示框)、series(数据列)。点击下方DEMO中对应标签可看到相应组件的动画演示