
java学习心得
lmsnju
这个作者很懒,什么都没留下…
展开
-
java序列化
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。 把Java对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为Java对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地原创 2009-10-21 13:59:00 · 247 阅读 · 0 评论 -
Java HotSpot性能引擎的体系结构(9)
内嵌是基于全局分析的,动态装载使内嵌更加复杂了,因为它改变了一个程序内部的全局关系。一个新的类可能包含了需要被内嵌在适当位置的新的方法。所以,Java HotSpot性能引擎必须能够动态地逆优化(如果需要,然后再重新优化)先前已经优化过的"热点",甚至在"热点"代码的执行过程中进行这种操作。没有这种能力,一般的内嵌将不能在基于Java的程序上安全地执行。 7.5 优化编译器 只有性能关转载 2009-10-30 19:45:00 · 279 阅读 · 0 评论 -
(转)关于java开源
http://blog.ixpub.net/html/36/16577236-371599.html 06年11月,Sun公司高层官员宣布:编程语言Java开放源码,并且遵守GPL规则,博得一片好评。经过半年的不懈努力,Sun终于把具有 600多万行的Java源代码(指JDK软件包)整理(清理)完毕,加以公布,使Java变为完全可用(fully buildable)的开源编程语言。07年5月转载 2009-11-10 12:14:00 · 261 阅读 · 0 评论 -
体验云计算
现在,谈云计算的可多了,不过,一般比较关注的是Google和Amazon的云服务。从大范围来看,也只有这两家获得了公众的更多关注。比如,我个人很感兴趣的,就是Google的App Engine使用户能够在Google基础设施上构建和托管 Web 应用程序。至于Amazon,它的AmazonWeb Services还包括Elastic Cloud Compute (EC2)计算Web服务,该服务可以转载 2009-11-11 22:48:00 · 274 阅读 · 0 评论 -
Hash,字典
在实际问题中,按照给定的值进行数据查询是经常遇到的,比如,在电话号码簿中查询某个人的电话号码;在图书馆中按照ISBN编号查找某本书的位置;在地图中按照坐标查找某个地点的地名等等。为此,人们创造了一种能够根据记录的关键码(也就是用以标识数据在记录中的存放位置的数据项)方便的检索到对应的记录信息的数据结构,这就是字典(Dictionary)。2.2.1字典的定义我们都使用过字典,如英汉字典、成转载 2009-11-17 18:56:00 · 2610 阅读 · 2 评论 -
java内部类继承示例!
package innerClass.test; public class InheritTest { public static void main(String[] args) { Person p = new Person("LMS"); p.show(); Person.Inner inner = p.new Inner(原创 2009-12-01 15:28:00 · 1044 阅读 · 0 评论 -
java异步通信
在Merlin之前,编写Socket程序是比较繁琐的工作.因为输入输出都必须同步.这样,对于多客户端客户/服务器模式,不得不使用多线程.即为每个连接的客户都分配一个线程来处理输入输出.由此而带来的问题是可想而知的.程序员不得不为了避免死锁,线程安全等问题,进行大量的编码和测试.很多人都在抱怨为什么不在Java中引入异步输入输出机制.比较官方的解释是,任何一种应用程序接口的引入,都必须兼容任何操作平转载 2009-12-04 13:54:00 · 3523 阅读 · 0 评论 -
深入了解JVM
深入了解JVM 本文首先介绍一下Java虚拟机的生存周期,然后大致介绍JVM的体系结构,最后对体系结构中的各个部分进行详细介绍。( 首先这里澄清两个概念:JVM实例和JVM执行引擎实例,JVM实例对应了一个独立运行的java程序,而JVM执行引擎实例则对应了属于用户运行程序的线程;也就是JVM实例是进程级别,而执行引擎是线程级别的。)一、 JVM的生命周期 JVM实例的转载 2009-12-28 13:46:00 · 336 阅读 · 0 评论 -
java mainfest使用
简化Java应用程序的打包和发布 发布Java应用程序时你会感到困难?好在Java提供了一系列打包和发布工具,可以显著的简化发布过程 该文章提供了打包Java code的几种方法,我们将会探讨Java manifest 文件,给出用于管理JAR文件所依赖文件、估计跨平台发布所需的CLasspath的合适方法.我也会解释如何使用manifest包版本特性来确认包的兼容性...什么是JAR文件? 在开转载 2009-12-27 11:16:00 · 1168 阅读 · 0 评论 -
JDK、JRE、JVM之间的关系
JDK、JRE、JVM之间的关系 如果安装了JDK,会发同你的电脑有两套JRE, 一套位于 /jre 另外一套位于 C:/Program Files/Java/j2re1.4.1_01 目录下 后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于 C:/Program Files/Java转载 2009-12-28 14:51:00 · 231 阅读 · 0 评论 -
执行的是哪个jre
因為種種的原因,你的電腦中可能不只存在一套JRE!你可以試著搜尋電腦中的檔案,例如在Windows中搜尋java.exe,可能會發現到多個java.exe檔案,某些程度上,你可以將一個java.exe視作就是有一套JRE! 就算你是乾乾淨淨的電腦,在安裝好JDK後,如果有選擇一併安裝Public JRE,則至少會有兩套JRE存在你的電腦中,一個是JDK本身附的Private JRE,一個是你所選擇转载 2009-12-28 14:55:00 · 368 阅读 · 0 评论 -
编程范式在餐馆中的应用
关键词:编程范式;情景编程;闭包;规则引擎摘 要:编程范式在餐馆中的应用预览厨师只须提供一种服务:把纸上菜变成盘中菜,至于蒸、煮、炒、炖等具体做法纯属实现细节。可以这么理解(闭包):所谓包,指函数与其周围的环境变量捆绑打包;所谓闭,指这些变量是封闭的,只能为该函数所专用。合理地使用闭包能使代码更加简洁清晰,散发出函数式特有的优雅气质。换盘子有两种方式:一种是服务员主动换,一转载 2009-12-29 21:04:00 · 828 阅读 · 0 评论 -
java 方法static,final 关键字
对于Java的语言机制而言,当一个方法被声明为了static或者final类型的时候,该方法可以被拥有该方法的类的子类继承,但是不能被覆盖,这是因为当一个方法被声明为了上述两种类型的时候,在编译时刻该方法的调用着的类型已经被确定,是静态绑定,而不是动态绑定。同时在声明为static方法体里是不允许使用this和super关键字的,这是因为static方法只能访问静态变量,而this和super则都原创 2010-03-18 14:08:00 · 273 阅读 · 0 评论 -
Java之异常处理
Java中可以使用throw和throws两个关键字实现异常的抛出,但是两者有着明显的不同,throw是用在方法体内的,是一个动作,抛出的是一个异常实例,而throws是用在方法体的声明的后面的,是一个名词,是用来说明抛出的异常的类型。Java的处理异常的机制中的try/catch/finally关键字的搭配为try/catch/finally,try/catch,try/finally三种形原创 2010-03-20 11:24:00 · 343 阅读 · 0 评论 -
Java对象的大小
Java对象的大小 基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:Object ob = new Object(); 这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte转载 2010-03-24 09:38:00 · 2432 阅读 · 0 评论 -
java 对象初始化顺序
package initialTest;//public class InitialTest extends Personpublic class InitialTest{// public InitialTest(int age, String name, String kind) // {// super(age, name, kind);// } s原创 2010-04-01 10:50:00 · 408 阅读 · 0 评论 -
Java HotSpot性能引擎的体系结构(6)
5.6 增量"无暂停"垃圾回收器 标记-整理回收器不能消除所有用户可感觉的暂停, 用户可感觉的垃圾回收暂停是在 "旧的"对象(在机器术语中指已经 "活" 了一段时间的对象)需要做垃圾收集时出现的, 而且这种暂停与现存的活的对象的数据量成比例。这就意味着当有较多数据被处理时, 该暂停可能是任意大的; 这对服务器应用程序、动画或其它软实时应用程序来说,是一种非常不好的的表现。 Java Ho转载 2009-10-30 19:42:00 · 240 阅读 · 0 评论 -
Java HotSpot性能引擎的体系结构(2)
人们对Java平台感兴趣的一个主要原因是:基于Java技术的程序与用传统语言编写的程序不同,它们是以一种可移植的和安全的形式而分布的。过去,使用可移植的分布形式一般来说都意味着在程序执行中的性能要下降。通过采用现代动态编译技术,这种性能的下降得以减缓,其本质可说是"双收其利"。 举一个简单但很重要的例子:我们可以使一个Java技术编译器为特定版本的处理器"在运行中"生成优化的机器码(例如,尽转载 2009-10-30 19:38:00 · 233 阅读 · 0 评论 -
Java HotSpot性能引擎的体系结构(10)
由于Java HotSpot性能引擎可自动地内嵌大部分虚拟方法调用,因此,性能下降的程度被大大地减小了,甚至在许多情况下,被全部消除了。 无论怎样强调这种作用的重要性都不会过分。因为使用重要的可重用性机制,可以大大地改变有关性能的权衡关系, 这种技术具有从根本上改变面向对象的代码的编写方式的潜力。除此之外,随着面向对象的编程方法的成熟,有一种明显的向着更细分的对象以及更细分的方法发展的趋势。转载 2009-10-30 19:45:00 · 256 阅读 · 0 评论 -
百度关键词爬取
#-*- coding: UTF-8 -*-import urllib,urllib2,re,timefile = open(baidukey.txt,r)content = file.read().split(/n)file.close()baidukey=[]savefile=number =100count = 0for key in content: url =转载 2009-10-27 20:03:00 · 443 阅读 · 1 评论 -
java垃圾回收机制(一)
1:垃圾收集是一种从无用对象回收其所占用的内存,并使回收的内存能够被再次利用的机制。2:无用对象是指它不能被程序中处于活动状态的部分的引用。3:垃圾收集处于低优先级的线程内,当可用内存较少时运行,但不能保证何时运行。4:不可能强制运行垃圾回收线程,但是调用语句System.gc()有可能激活垃圾收集程序.5:在垃圾回收机制中,无法保证对象被垃圾回收的顺序,也无法保证 finali原创 2009-10-28 22:18:00 · 239 阅读 · 0 评论 -
什么是HotSpot?
没错,Java是解释语言,但并不意味着它一定被解释执行。早期 的虚拟机确实一条一条指令解释执行,但人们发现这样效率太低, 不满足各种要求,因此出现了许多其它虚拟机,如JIT的虚拟机。 HotSpot也是类似一种虚拟机,自从SUN买下后,已经把它放入 JRE 1.3以及后续版本中。 采用HotSpot的Java虚拟机,已经很难说Java是被虚拟机解释执行了, 原因是HotSpot实际上是把Java转载 2009-10-29 09:58:00 · 550 阅读 · 0 评论 -
java 动态绑定!
java中的private static final方法或者构造函数的绑定方式都是静态绑定。虚拟机如果在的每次调用方法时都要进行搜索,这样会导致相当大的开销。因此,虚拟机预先为每个类都创建一个方法表,其中列出了所有方法的签名和实际调用的方法。这样以来,在真正调用方法时,虚拟机仅查找这个表就行了。在运行时刻,虚拟调用方法的解析过程如下例:假如调用e.getSalary(),则解析过程为:原创 2009-10-29 19:13:00 · 250 阅读 · 0 评论 -
java 继承
java继承和C++的继承都有一个地方相同,即A为父类,B为A的子类时,A a = new B()时,a只能访问A中有的元素,而A中有,B中没有的成员,a无法访问。原创 2009-10-29 19:57:00 · 297 阅读 · 0 评论 -
JVM详解之Java垃圾回收机制详解和调优 (1)
1.JVM的gc概述 gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。 在充分理解了垃圾收集算法和执行过程后,才能有效的优化它的性能。有些垃圾收集专用于特殊的应用程序。比如,实时应用程序主要是为了避免垃圾收集中断,而大多数OLTP应用程转载 2009-10-29 20:25:00 · 202 阅读 · 0 评论 -
JVM详解之Java垃圾回收机制详解和调优 (2)
3.Sun HotSpot 1.4.1 JVM堆大小的调整 Sun HotSpot 1.4.1使用分代收集器,它把堆分为三个主要的域:新域、旧域以及永久域。Jvm生成的所有新对象放在新域中。一旦对象经历了一定数量的垃圾收集循环后,便获得使用期并进入旧域。在永久域中jvm则存储class和method对象。就配置而言,永久域是一个独立域并且不认为是堆的一部分。 下面介绍如何控制这些域的大小。转载 2009-10-29 20:28:00 · 264 阅读 · 0 评论 -
JVM详解之Java垃圾回收机制详解和调优 (3)
5.如何从JVM中获取信息来进行调整 -verbose.gc开关可显示gc的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等。打开- xx:+ printgcdetails开关,可以详细了解gc中的变化。打开-XX: + PrintGCTimeStamps开关,可以了解这些垃圾收集发生的时间,自jvm启动以后以秒计量。最后,通过-xx: + Pri转载 2009-10-29 20:30:00 · 287 阅读 · 0 评论 -
java垃圾回收机制的意义及其算法分析(一)
Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。一般来说,堆的是由垃圾回收 来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的有限性,JV转载 2009-10-29 21:27:00 · 400 阅读 · 0 评论 -
java垃圾回收机制的意义及其算法分析(二)
2、finalize方法透视垃圾收集器的运行 在JVM垃圾收集器收集一个对象之前 ,一般要求程序调用适当的方法释放资源,但在没有明确释放资源的情况下,Java提供了缺省机制来终止化该对象心释放资源,这个方法就是finalize()。它的原型为: protected void finalize() throws Throwable 在finalize()方法返回之后,对象消转载 2009-10-29 22:21:00 · 97 阅读 · 0 评论 -
Java HotSpot性能引擎的体系结构(3)
以下部分将介绍Java HotSpot性能引擎的重要的体系结构及其特性。 4. 内存模型 4.1 无句柄对象 Java 2 软件开发工具包(SDK)使用间接句柄来表示对象的引用。虽然在垃圾回收过程中,这样做会使对象的重新定位变得更加简单,但这会引发一个重要的性能瓶颈,因为大多数对Java编程语言对象的实例变量的访问都需要两个层次的间接引用。Java HotSpot性能引擎消除了句转载 2009-10-30 19:40:00 · 252 阅读 · 0 评论 -
Java HotSpot性能引擎的体系结构(4)
使用本地操作系统的线程和调度机制的一个主要优点是,它能够透明地利用本地操作系统支持多重处理。由于Java HotSpot性能引擎被设计为对在执行Java编程语言代码时的抢先和/或多重处理引起的竞争状态是不敏感的,因而Java编程语言线程将自动利用由本地操作系统所提供的任意调度机制和处理器分配策略。 5. 内存垃圾回收 5.1 背景说明 Java编程语言对程序员的一个主要魅力在于转载 2009-10-30 19:41:00 · 281 阅读 · 0 评论 -
Java HotSpot性能引擎的体系结构(5)
5.3 精确性 Java HotSpot垃圾回收器是一种全精确回收器, 与之形成对比的是, 许多垃圾回收器都是保守的(conservative)或半精确的(partially-accurate)。虽然保守的垃圾回收由于易于增加到一个不支持垃圾回收的系统中, 因而具有一定的吸引力, 但它却有一定的缺陷。 一个保守的垃圾回收器不能确切地断定所有对象的引用的分布位置, 其结果是, 它必须保守地转载 2009-10-30 19:42:00 · 232 阅读 · 0 评论 -
Java HotSpot性能引擎的体系结构(7)
在JIT编译中存在着几个问题。首先,由于编译器是在"用户时间"内运行于执行字节码的机器上,因此它将受到编译速度的严格限制:如果编译速度不是特别快,则用户将会感到在程序的启动或某一部分的明显的延迟。这就不得不采取一种折衷方案,用这种折衷方案将很难进行最好的优化,从而将会大大地降低编译性能。 其次,即使JIT有时间进行全优化,这样的优化对Java编程语言来说,也比对传统语言(如C和C++)的优化效转载 2009-10-30 19:43:00 · 240 阅读 · 0 评论 -
Java HotSpot性能引擎的体系结构(8)
Java HotSpot性能引擎的体系结构通过使用适配性的优化技术,解决了以上所提出的Java编程语言的性能问题。适配性的优化技术是Sun公司的研究机构Self小组多年以来在面向对象的语言实现上的研究成果。 7.2 热点Hot Spot检测 适配性的优化技术利用了大多数程序的有趣的属性,解决了JIT编译问题。实际上,所有程序都是花费了它们的大部分时间而执行了它们中的很转载 2009-10-30 19:44:00 · 249 阅读 · 0 评论 -
如何调优JVM
堆设置-Xmx3550m:设置JVM最大堆内存 为3550M。 -Xms3550m:设置JVM初始堆内存 为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xss128k:设置每个线程的栈 大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。 -Xmn2g:设置堆内存年轻转载 2010-10-20 20:45:00 · 630 阅读 · 0 评论