java 基础
文章平均质量分 81
maritimesun
上海计算所在读CS硕士,关注互联网,中间件,算法研究,JAVA,希望结识更多同道中人。微博:Candy_sict
展开
-
java中的clone技术
编程过程中常常遇到如下情况: 假设有一个对象obj1,在某处需要和obj1一样的实例obj2,强调obj1和obj2是两个独立的实例,只是在开始的时候,它们具有一样的属性。这种情况下,一般的一种解决方法是:重新new一个对象obj2,然后将obj1的属性字段值依次赋予obj2。该种方法可行,但是也比较土。java提供了clone方法,使用clone方法,我们可以高效地解决上述的问题。原创 2012-07-04 20:17:36 · 913 阅读 · 0 评论 -
long和double类型变量的非原子性
“深入java虚拟机”中提到,int等不大于32位的基本类型的操作都是原子操作,但是某些jvm对long和double类型的操作并不是原子操作,这样就会造成错误数据的出现。 错误数据出现的原因是: 对于long和double变量,把它们作为2个原子性的32位值来对待,而不是一个原子性的64位值, 这样将一个long型的值保存到内存的时候,可能是2次32位的写操作, 2个竞争线程想写原创 2012-08-07 14:33:06 · 7257 阅读 · 2 评论 -
Java实现Immutable Class要点
Java中很多class都是immutable,像String,Integer等,它们通常用来作为Map的key.那么在实现自定义的Immutable的Class的时候,应该注意哪些要点呢?a)Class 应该定义成final,避免被继承。b)所有的成员变量应该被定义成final。c)不要提供可以改变类状态(成员变量)的方法。【get 方法不要把类里的成员变量让外部转载 2012-08-07 14:49:19 · 992 阅读 · 0 评论 -
volatile关键字
volatile关键字在我们接触较多的几种语言C/C++/Java中均存在,在并发编程方面也会用到,因此还是有必要了解。 1 volatile关键字在java并发编程下的应用 Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,关于long和double类型变量的非原子性问题,可参考《long和double类型变量的非原子性》一文。也就是说,对于原创 2012-08-07 14:21:54 · 1741 阅读 · 0 评论 -
Memory barrier
Memory barrier,是一种屏障和一类指令,在执行这个屏障指令前后,CPU或者编译器在内存操作上强制一个约束序列。CPU使用性能优化器可以导致执行代码的无序。在单一线程执行中,重排序内存操作通常不会被注意。但是在并行编程或者设备驱动中会导致不可预料的行为。确切的排序约束是依赖于硬件的,并且有系统结构的内存模型所定义。一些结构提供多个屏障来强制不同的排序约束。内存约束通常使用在低级的机器码中转载 2012-08-08 10:45:56 · 1303 阅读 · 0 评论 -
Java NIO vs. IO
当学习了Java NIO和IO的API后,一个问题很快进入心中:我应该在何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地阐明Java NIO和IO的差异、它们的用例,以及它们如何影响您的代码设计。Java NIO和IO的主要差异下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IONIO转载 2012-09-13 09:37:09 · 1054 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量
简介: Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的 Java 理论与实践 中,Brian Goetz 将介绍几种正确使用 volatile 变量的模式,并针对其适用性限制提出一些建议。Vola转载 2012-10-05 10:23:02 · 730 阅读 · 0 评论 -
加快Java的文件序列化速度
自从第一个Java版本开始,很多开发人员一直都在尝试让Java获得最少和C/C++一样的表现。JVM提供商尽他们最大的努力去实现一些新的JIT算法,但是还是有很多需要做的,特别是在我们使用Java的方法上。例如,在对象文件序列化上就差距很大--尤其在读写内存对象上。我将就这个主题做一些解释和分享。所有的测试都是在下面这个对象上执行的:1pub转载 2012-10-12 16:31:37 · 2675 阅读 · 0 评论 -
TCP连接的状态转换深度剖析
对于平时我需要观察LVS与Client及RS之间TCP连接建立情况,你就需要深入了解一下建立连接的TCP三次握手和关闭连接的四次握手,举下面一个例子,你知道这些状态表示什么吗,下面的TCP连接状态图可以让你明白这一切,往下看吧12345678910111213root@LG181:/usr/local/lvs# ipvsadm -L -转载 2012-10-19 11:23:50 · 3487 阅读 · 0 评论