Java
文章平均质量分 80
sumoyu
这个作者很懒,什么都没留下…
展开
-
Serialization 简单小结
1. 我们要把对象保存到硬盘或者通过网络传输,就需要把对象状态保存下来,这个过程就是对象串行化。Java 中的序列化机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输、或者持久化存储到数据库或文件系统中;然后在需要的时候,可以根据字节流中的信息来重构一个相同的对象。2.Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致原创 2013-11-04 09:14:28 · 651 阅读 · 0 评论 -
Finalizer attack
Finalizer攻击:在构造函数中抛出异常,目的是创建对象失败时当对象抛出异常后,对象会被垃圾清理器回收。而当垃圾清理器准备释放对象的内存时,它首先调用finalize方法,然后再回收内存。Finalizer攻击就是重载finalize方法,在这个方法内保存这个对象。这个对象是部分初始化对象,它应该被清除,但是没有,导致它已经初始化的信息泄漏,并且获取对象后可以调用其方法,如果对象包含一些操原创 2014-04-17 09:22:21 · 1026 阅读 · 0 评论 -
Java创建对象的顺序
创建一个类C的对象: 1. 加载所有得类。 2. 执行静态初始化。 3. 分配内存,并初始化为零。 4. 处理调用的C的构造函数的参数。 6. 处理隐式或者显式的构造函数( this()或者super())。 7. 初始化C中的变量。 8. 执行C的“instance initialization”。 9. 执行调用的C的构造函数。原创 2014-04-15 21:26:57 · 1150 阅读 · 0 评论 -
线程安全中的不变性(Invariant)
多线程环境下,一个类的几个变量之间存在不变性(Invariant)。不变性是几个变量之间的逻辑关系(logical assertion),不管按照什么顺序,不管哪个线程操作后,这个关系要保持不变,否则程序就会出错。在>举了一个例子。一个类设计来求解一个整数的因式分解,多个线程会访问这个类,为了提高响应,存放了最近的整数和因素分解的结果。class CachedFactori原创 2014-04-21 13:19:38 · 1490 阅读 · 0 评论 -
Enusre Chained Methods are thread-safe
https://www.securecoding.cert.org/confluence/display/java/VNA04-J.+Ensure+that+calls+to+chained+methods+are+atomic在上面这篇讲Java安全代码的文章中提到两段代码。第一不是线程安全的;第二个是。final class USCurrency { // Change requ原创 2014-04-11 14:54:31 · 718 阅读 · 0 评论 -
同步环境下使用变量的注意点
同步块内或者不可变对象的引用变量必须是“本类的”,不能指向外部对象引用,也不能向外部发布对象引用。《Java Concurrency in Practice》中有两个例子:1. 例子1:public class CachedFactorizer implements Servlets { @GuardedBy("this") private BigInteger last原创 2014-05-20 17:44:28 · 757 阅读 · 0 评论 -
对《JCP》"3.4.2"的理解
This chapter explain publishing immutable objects using "Volatile".The example codes are class OneValueCache { private final BigInteger lastNumer; private final BigInterger[] lastFactors原创 2014-06-18 09:26:57 · 654 阅读 · 0 评论