java基础知识
文章平均质量分 69
huxin1
这个作者很懒,什么都没留下…
展开
-
jdk和jre 的区别
关于jdk和jre 大家肯定在安装JDK的时候会有选择是否安装单独的jre,一般都会一起安装,我也建议大家这样做。因为这样更能帮助大家弄清楚它们的区别: Jre 是java runtime environment, 是java程序的运行环境。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦, 还有所有java类库的class文件,都在lib目录下打包成了jar。大家可以自己验证转载 2008-09-26 17:33:00 · 829 阅读 · 0 评论 -
深入探索 高效的Java异常处理框架
一、 异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误。本文主要讲授的是Java语言的异常处理。Java语言的异常处理框架,是Java语言健壮性的一个重要体现。 Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exceptio转载 2009-07-30 19:21:00 · 1800 阅读 · 0 评论 -
servlet与Struts action线程安全问题分析
Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题。然而,很多人编写Servlet/JSP程序时并没有注意到多线程安全性的问题,这往往造成编写的程序在少量用户访问时没有任何问题,而在并发用户上升到一定值时,就会经常出现一些莫明其妙的问题。 Servlet转载 2009-10-18 13:41:00 · 718 阅读 · 0 评论 -
通过实现Cloneable接口和覆盖clone()方法实现深度克隆,以及如何通过ByteArrayIOStream实现克隆
某个类要想实现拷贝的功能,就必须实现Cloneable接口,并覆盖Object的clone()方法,才能真正实现克隆。浅拷贝,一种默认的实现,Teacher类中的clone方法的实现就是浅拷贝。Student类的clone方法就是深拷贝。注意super.clone返回的对象实际上是被类的对象,可以放心强制转换,至于为什么,我也不知道,估计得读虚拟机规范,从Object源码看也不到转载 2009-11-12 20:15:00 · 2287 阅读 · 2 评论 -
深刻理解Java编程的7个例子
1. 阅读下列代码回答问题(第一个Java程序,理解PATH和CLASSPATH,学会使用javac和java命令) view plaincopy to clipboardprint? package cn.edu.uibe; public class HelloWorld { public static void main(String[] args) { System.out.println转载 2009-11-19 12:22:00 · 653 阅读 · 0 评论 -
Web开发必知的八种隔离级别
Web开发必知的八种隔离级别 转自:http://www.infoq.com/cn/articles/eight-isolation-levels ACID性质是数据库理论中的奠基石,它定义了一个理论上可靠数据库所必须具备的四个性质:原子性,一致性,隔离性和持久性。虽然这四个性质都很重要,但是隔离性最为灵活。大部分数据库都提供了一些可供选择的隔离级别,且现在许多库都增加了附加层来创建颗转载 2009-11-19 12:34:00 · 728 阅读 · 0 评论 -
jar包详解和META-INF作用
如何把 java 程序编译成 .exe 文件。通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了;而另一种是使用 JET 来进行 编译。但是 JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序都编译成执行文件,性能也要打些折扣。所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性。转载 2009-12-12 13:12:00 · 6807 阅读 · 1 评论 -
JAVA的内省(introspector)与反射(reflection)
很多朋友在深入的接触 JAVA 语言后就会发现这样两个词:反射 (Reflection) 和内省 (Introspector) ,经常搞不清楚这到底是怎么回事,在什么场合下应用以及如何使用?今天把这二者放在一起介绍,因为它们二者是相辅相成的。 反射 相对而言,反射比内省更容易理解一点。用一句比较白的话来概括,反射就是让你可以通过名称来得到对象 ( 类,属性,方法 ) 的技术。例如我转载 2009-12-24 00:40:00 · 748 阅读 · 0 评论 -
浅谈Java中的System.gc()的工作原理
趁着今天写程序的热乎劲儿,小谈一下System.gc()这个神秘的东东~<br /><br />很多人把Java的“效率低下”归咎于不能自由管理内存,但我们也知道将内存管理封装起来的好处,这里就不赘述。<br /><br />Java中的内存分配是随着new一个新的对象来实现的,这个很简单,而且也还是有一些可以“改进”内存回收的机制的,其中最显眼的就是这个System.gc()函数。<br /><br />乍一看这个函数似乎是可以进行垃圾回收的,可事实并不是那么简单。<br />其实这个gc()函数的作用只转载 2010-10-11 11:05:00 · 51064 阅读 · 10 评论 -
java.lang.ref.Reference
Java代码 Reference提供了一些引用的基本方法以及静态代码块最高优先级启动ReferenceHandler线程 Reference提供了一些引用的基本方法以及静态代码块最高优先级启动ReferenceHandler线程Java代码 package xxx; /** * Abstract base class for reference objects. This class defines the * operations common to all reference转载 2011-04-03 00:30:00 · 3656 阅读 · 0 评论 -
提高代码质量及字节码如何防止内存错误
<br /> <br />大多Java程序员知道他们的程序通常不会被编译为本机代码而是被编译为由java虚拟机(JVM)执行的字节码格式。然而,很少有java程序员曾经看过字节码因为他们的工具不鼓励他们去看。大多Java 调试工具不允许单步执行字节码,它们要么显示源代码行,要么什么也不显示。 <br />幸运的是JDK提供了javap,一个命令行工具,它使得查看字节码很容易。让我们看一个范例: <br /> <br />public class ByteCodeDemo { <br />public s转载 2011-04-05 17:04:00 · 828 阅读 · 0 评论 -
在重写了对象的equals方法后,还需要重写hashCode方法吗?
<br />首先说建议的情况: 比如你的对象想放到Set集合或者是想作为Map的key时(非散列的Set和Map,例如TreeSet,TreeMap等),那么你必须重写equals()方法,这样才能保证唯一性。当然,在这种情况下,你不想重写hashCode()方法,也没有错。但是,对于良好的编程风格而言,你应该在重写equals()方法的同时,也重写hashCode()方法。 <br /><br />然后再说说必须重写hashCode()的情况: <br /> 如果你的对象想放进散列存储的集合中(比转载 2011-04-15 10:54:00 · 4611 阅读 · 1 评论 -
关于hashCode方法的作用
<br />有许多人学了很长时间的Java,但一直不明白hashCode方法的作用, <br />我来解释一下吧。首先,想要明白hashCode的作用,你必须要先知道Java中的集合。 <br />总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。 <br />你知道它们的区别吗?前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。 <br />那么这里就有一个比较严重的问题了:要想保证元素不重复,可两个元素是否重复应该依据什么来判断呢? <b转载 2011-04-15 10:56:00 · 18152 阅读 · 3 评论 -
java面向对象—抽象类、接口与多继承
有时候,我们可能想要构造一个很抽象的父类对象,它可能仅仅代表一个分类或抽象概念,它的实例没有任何意义,因此不希望它能被实例化。例如:有一个父类“ 水果(Fruit)”,它有几个子类“苹果(Apple)”、“橘子(Orange)”、“香蕉(Banana)”等。水果在这里仅仅只是作为一个分类,显然水果的实例没有什么意义(就好像一个人如果告诉你他买了一些水果但是却不告诉你是苹果还是橘子,你很难转载 2008-12-25 18:34:00 · 951 阅读 · 0 评论 -
JNA—JNI终结者
介绍给大家介绍一个最新的访问本机代码的Java框架—JNA。JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架。JNA项目地址:https://jna.dev.java.net/ 非常强大、易用,功能上类似与.NET的P/Invoke。 不堪回首的JNI我们知道,使用转载 2008-12-24 17:04:00 · 959 阅读 · 1 评论 -
范例解说Java里的线程概念与线程同步技术
本文以通俗易懂的范例入手,由浅入深的全面介绍了Java里的线程概念与线程同步技术。线程 是一段完成某个特定功能的代码,程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。进程不同的是,由同名类生成的多个线程共享相同的内存空间和系统资源。线程与进程的区别:一个线程是一个程序内部的顺序控制流。1. 进程:每个进程都有独转载 2009-02-18 01:09:00 · 946 阅读 · 0 评论 -
正确认识java JVM与c的执行效率
认为Java不能写JVM是完全错误的。JNode是一个用Java写的开源操作系统,他里面的JVM就是用Java写的。这个操作系统现在有几十兆,其中 99%的代码是用java编写,其中只有一个极小的“操作系统引导程序”是用汇编写的,我们暂时称之为booter.exe,大小为几KB。 booter.exe的作用就是将用java写的JVM编译并装入内存,简单的说就是将JVM.class编译成JVM.转载 2008-09-30 16:33:00 · 3473 阅读 · 3 评论 -
Java替代C语言的可能性
前不久看到一篇《C语言已经死了,5个需要忘却它的理由(点击查看原文)》的文章,引起了一些争论。其实那篇文章是从Ed Burnette的博客上转载来的,原文题目是“Die, C, die!”,直译过来应该是《去死吧,C!》,表达的是一种诅咒,而不是判断。翻译称《C语言已经死了》,显然是一种煽风点火的误读。CSDN网友对于其观点已经进行了批判,不过坦率地说,由于这些批判基于一个扭曲的翻译文本,所以不但转载 2008-09-30 16:50:00 · 781 阅读 · 0 评论 -
Java 理论和实践: 了解泛型
JDK 5.0 中增加的泛型类型,是 Java 语言中类型安全的一次重要改进。但是,对于初次使用泛型类型的用户来说,泛型的某些方面看起来可能不容易明白,甚至非常奇怪。在本月的“Java 理论和实践”中,Brian Goetz 分析了束缚第一次使用泛型的用户的常见陷阱。您可以通过讨论论坛与作者和其他读者分享您对本文的看法。(也可以单击本文顶端或底端的讨论来访问这个论坛。)表面上看起来,无论语法还转载 2008-10-05 04:21:00 · 526 阅读 · 0 评论 -
Java 6中的线程优化真的有效么?
作者 Jeroen Borgers译者 韩锴 发布于 2008年10月22日 上午1时31分 社区 Java 主题 性能和可伸缩性 标签 并行计算, JVM, 多线程, 并发, Java SE 介绍 — Java 6中的线程优化Sun、IBM、BEA和其他公司在各自实现的Java 6虚拟机上都花费了大量的精力优化锁的管理和同步。诸如偏向锁(原创 2008-11-03 17:35:00 · 599 阅读 · 0 评论 -
JAVA基础(异常/深入java.lang.Throwable)
有几个现象是需要总结的: 在java语言中,错误类的基类是java.lang.Error,异常类的基类是java.lang.Exception。 相同点:java.lang.Error和java.lang.Exception都是java.lang.Throwable的子类,因此java.lang.Error和java.lang.Exception自身及其子类都可以作为throw的使用对象,如:转载 2008-12-30 15:46:00 · 1894 阅读 · 0 评论 -
处理 Java 程序中的内存漏洞
Java 程序中也有内存漏洞?当然有。与流行的观念相反,在 Java 编程中,内存治理仍然是需要考虑的问题。在本文中,您将了解到什么会导致内存漏洞以及何时应该关注这些漏洞。您还有机会实践一下在您自己的项目中解决漏洞问题。 Java 程序中的内存漏洞是如何显现出来的 大多数程序员都知道,使用像 Java 这样的编程语言的一大好处就是,他们不必再担心内存的分配和释放问题。您只须创建对象,当应用原创 2008-11-08 20:01:00 · 561 阅读 · 0 评论 -
JAVA日期和时间类彻底解决(1)
你是否在苦苦挣扎在JAVA语言中的日期和时间中?当你在计算机上显示日期和时间时,, 是否要快一个小时?或者可能要早一个小时?, 或者两个小时, 或者更严重? 当你试图用JAVA写日期和时间到一个文件中,或者到你的数据库中(通过Java Database Connectivity (JDBC))— 错误的时间被保存了吗? 我曾经被这个问题困饶过很长时间。我不能解决为什么JAVA改变了我给的时间戳转载 2008-11-09 01:30:00 · 594 阅读 · 0 评论 -
JAVA日期和时间类彻底解决(2)
首先尝试的解决方案 基于Java文档信息和DateTest类的输出结果,我打了一个最好的赌:JAVA虚拟机在第一次被运行时就自动设置了一个默认的时间区域(time zone)。为了验证,我创建了一个ItsInitializer类,使得我的应用程序在被加载(launched)时便能够运行它。以下是我的第一次尝试: import java.util.TimeZone;import jav转载 2008-11-09 01:32:00 · 635 阅读 · 0 评论 -
[译文]Java异常处理的建议
下文我摘译自Rod Johnson的"J2EE Design and Developement", 解答了我长久以来的一个疑问, 希望对大家有用.异常处理 - Checked还是UncheckedJava明确区分两种类型的异常. 那些扩展了java.lang.Exception的异常称为checked exceptions, 编译器要求这些异常必须被捕获或者重新抛出. 那些扩展了java.lang转载 2008-12-30 16:02:00 · 1793 阅读 · 0 评论 -
JAVA日期和时间类彻底解决(3)
时间区域和JAVA 涉及有关时间区域信息时Java和Solaris很相似。每个时间区域都有一个时间区域ID标识符。在J2SE 1.3 and 1.4中,这个ID是个字符串,是由位于J2SE 安装程序的jre/lib子目录中的tzmappings文件这些ID列表。 J2SE 1.3 仅仅只包含tzmappings文件,但是 J2SE 1.4包含世界不同地区的时间区域数据文件。jre/lib/zi存放转载 2008-11-09 01:35:00 · 854 阅读 · 0 评论 -
java.lang.OutOfMemoryError: PermGen space 的疑惑
今天还碰到了PermGen Space 的异常,搜索了一下有一些解决方法1、PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候原创 2008-11-08 17:21:00 · 1140 阅读 · 0 评论 -
在Java中模拟多重继承--扩展多个类的技巧
摘要:虽然Java不允许多重继承,但是有些情况却允许其使用。本文将阐述在一个Web应用中模拟多重继承的技术。在一般的开发中,Java的单继承限制一般不会引起什么问题。实际上,需要使用多重继承往往意味着糟糕的设计。然而还是存在一些情况,程序员们希望能够继承多个类。虽然Java不允许继承多个类,但是有些技巧能够模拟多重继承。我在Swing应用程序和Web应用中都使用过这个技巧。Swing应用打包转载 2008-11-22 15:11:00 · 3937 阅读 · 0 评论 -
关于项目中数据库驱动jar、JDK和连接池DBCP jar之间的版本匹配
今天听同事说有一个web项目,在本地测试都是可以的,上线后试运行也可以,但是过几个小时就会出错连接池报错的问题。DBCP在项目中使用非常广泛。应该不太会是配置上出错。上apache官网上看了下,发现原来DBCP不同版本的jar包是支持不同版本的JDBC规范的。如下:DBC原创 2011-09-16 18:40:37 · 4972 阅读 · 0 评论