博文
经典java问题,你能答出几个? - 转载(2006-04-17 17:34:00)
摘要: 第一,谈谈final, finally, finalize的区别。
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象
第四,&a......
新手入门:学RAID从饮水机开始(图)- 转载(2006-04-17 12:12:00)
摘要:原文链接地址:http://publish.it168.com/2006/0208/20060208034701.shtml
【IT168 专稿】对于网管来讲,如何有效保证服务器上数据的安全呢?用多个硬盘建立RAID恐怕是最普遍的手段了。今天就由笔者通过一问一答的方式为各位IT168的读者介绍RAID相关的知识。
问题1:什么是RAID?它是由什么组成的?
RAID的中文名字为磁盘冗余阵列,顾名思义它是由磁盘组成阵列而成的。因此RAID需要至少两块硬盘组成。RAID的基本想法就是把多个便宜的小磁盘组合到一起,成为一个磁盘组, 使性能达到或超过一个容量巨大、价格昂贵的磁盘。
早期的RAID诞生初衷并不是为了数据的安全,而是为了提高硬盘的读写速度。RAID 0和RAID 1就是为了这个目的而定义的。
问题2:什么情况需要使用RAID?
根据不同的实际情况作为网络管理员的我们应该为服务器采取不同的RAID种类。目前最流行的是RAID 0,RAID 1,RAID 5。其中RAID1和RAID 5过多的用于保证数据的安全,最大程度的防止磁盘意外坏掉而丢失数据情况的发生。而RAID 0则是为了提高磁盘读取的速度,它不提供任何数据备份和保障功能。知道了不同RAID应用的情况我们根据实际情况进行选择即可。
当然那些需要在硬盘上保存大量数据的人采用 RAID 技术将会很方便。主要表现在以下几个方面——
(1)增强了速度 ,服务器可以在同一时间从多个硬盘上读取数据。
(2)扩容了存储能力,多个硬盘组成更大的空间提供给服务器使用。
(3)可高效恢复磁盘,RAID提供了相当高的数据冗余功能,我们可以保证数据的完整无缺。
问题3: RAID都有哪些种类呢?希望可以使用直观容易懂的语言来描述。
对于RAID种类恐怕很多文章都介绍过,这里我就不详细说明理论东西了。恰巧笔者看到了一个外国描述RAID各个级别的图片,感觉很多地方定义得非常准确,而且通过看图了解RAID效果会更加......
SUN认证基本知识(2006-04-16 14:06:00)
摘要:
Sun公司简介
太阳微系统公司(Sun Microsystems,简称Sun)在自己的广告中宣称:我们就是.com前面那一点(We are the dot in the .com),这并非大言不惭----如果你充分了解Sun公司的历史以及现状。
Sun起初由包括Scott McNealy(现任Sun公司首席执行官)等4名在Stanford大学和加州大学Berkeley分校上学的研究生创建,1982年2月正式注册,先以工作站的设计制作为业务重点,6个月后开始创收盈利。Sun公司的名称,实际为Stanford University Network3个英文单词首写字母之缩略,中文意为:斯坦福大学网络,而跟太阳没有任何关系。
有趣的是,在合力发起Sun的团队中,唯一的技术人员—--比尔·乔伊(Bill Joy,现在为Sun公司的首席科学家)在此之前是阿帕网雇用的一名黑客。这也许为Sun的技术开发定了一个基调,直到现在,Sun一直在计算机边缘(也可以说成是尖端)技术处于领先地位。他们利用原贝尔试验室开发的Unix作平台,以全面开放的概念、对新技术的不懈追求和对用户要求的积极响应,创出了一条成功之路,为世人所称道。
从公司成立开始,Sun就提出了“The Network is the computer—--网络就是计算机”这一见解独特的口号。从那时起,Sun一直致力于发展网络计算技术、产品与服务,主要包括大型计算机系统、服务器、工作站操作系统和企业级网络计算软件。特别是Unixl作站/服务器在中国大陆市场名列第一,市场份额超过30%,在香港占有率更高达52%。Sun公司的产品和技术主要适用于电信、制造、运输、政府、教育、石油及一般商业和分销行业等重要领域。
在1995年,Sun推出了它有史以来最有影响和震撼力的产品—--Java。Java技术一经推出,就以其独有的开放性、跨平台性和面向网络的交互性迅速席卷全球,以其安全性、易用性和开发周期短的特点,迅速从最初的编程语言发展成为全球第二大软件开发平台。这些优点已引起世界计算机界的极大关注,Java公用规范(PAS)已被......
如何才算掌握Java(J2SE篇)(2006-04-15 19:05:00)
摘要: 时常看到一些人说掌握了Java,但是让他们用Java做一个实际的项目可能又困难重重,在这里,笔者根据自己的一点理解斗胆提出自己的一些对掌握Java这个说法的标准,当然对于新手,也可以提供一个需要学习哪些内容的参考。另外这个标准仅限于J2SE部分,J2EE部分的内容有时间再另说。
1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。
2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、HtmlConverter、jar、java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解。
3、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
4、API:Java的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用Java,包括:
1)、java.lang包下的80%以上的类的功能的灵活运用。
2)、java.util包下的80%以上的类的灵活运用,特别是集合类体系、规则表达式、zip、以及时间、随机数、属性、资源和Timer。
3)、java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
4)、java.math包下的100%的内容。
5)、java.net包下的60%以上的内容,对各个类的功能比较熟悉。
6)、java.text包下的60%以上的内容,特别是各种格式化类。
7)、熟练运用JDBC。
8)、jav......
论全世界所有程序员都会犯的错误(2006-04-15 19:02:00)
摘要: 当年,某国际巨星的“龙种”曝光,众人指责他对不起娇妻,逼得他出面召开记者会,向
世人自白他犯了“全世界所有男人都会犯的错误”。从来没犯过这种错误的我,也因此常常认
为自己不是个男人。
虽然没犯过“全世界所有男人都会犯的错误”,但是我倒是曾经犯了“全世界所有程序员
都会犯的错误”。不管使用何种语言,全世界所有程序员都一定犯过这种错误,那就是:太依
赖编译器,却不知道编译器做了哪些事。
一般来说,越高阶的程序语言,会提供越多语法上的便利,以方便程序撰写,这就俗称为
syntactic sugar,我称其为“语法上的甜头”。虽说是甜头,但是如果你未能了解该语法的
实质内涵,很可能会未尝甜头,却吃尽苦头。
不久前,我收到一个电子邮件,读者列出下面的Java程序,向我求救。看过这个程序之后
,我确定这又是一个“全世界所有程序员都会犯的错误”。
程序1class Singleton { private static Singleton obj = new Singleton(); public static int counter1; public static int counter2 = 0; private Singleton() { counter1++; counter2++; } public static Singleton getInstance() { return obj; } }
程序2 public class MyMain { public static void main(String[] args) { Singleton obj = Singleton.getInstance(); System.out.println("obj.counter1=="+obj.counter1); System.out.println("obj.counter2=="+obj.counter2); } }
执行结果是:
obj.counter1==1 obj.counter2==0
你有没有被此结果吓一跳?乍看程序代码,你很可能会认为counter1和counter2的值一定
会相等,但执行结果显然不是如此。其实,程序1被编译后的程序应该等同于下面的程序3 : class Singleton {......
Jsp开发环境配置全过程 - 转载(2006-04-14 18:15:00)
摘要: 在配置Jsp开发环境的过程中会碰到不少问题,感谢许多前辈经验总结性的文章对我来说简直是雪中送碳,为了帮助像我一样的初学者,在此总结了不少作者的经验,非常感谢他们的无私奉献精神,也希望更多的人把这种精神发扬光大。
以下软件下载连接地址无法显示的话,请直接到官方网站下载即可!
软件下载
Mysql
下载版本:mysql-4.1.13-win32.zip(Windows downloads)
http://dev.mysql.com/downloads/mysql/4.1.html
JDBC驱动
下载版本:mysql-connector-java-3.1.10.zip
http://dev.mysql.com/downloads/connector/j/3.1.html
下载j2sdk
下载版本:jdk-1_5_0_04-windows-i586-p.exe
http://java.sun.com/j2se/1.5.0/download.jsp
下载tomcat
下载版本: jakarta-tomcat-5.5.9.exe
http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi
安装,配置j2sdk:
执行j2sdk安装程序,按默认设置进行安装,也可自定义路径,但需修改下面的配置
配置j2sdk:
配置环境变量:
我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:JAVA_HOME=C:\Program Files\Java\jdk1.5.0_04CLASSPATH=%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;path=%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
写一个简单的java程序来测试J2SDK是否已安装成功: public class hello{ public static void main(String args[]){ System.out.println(......
每个java初学者都应该搞懂的问题!- 转载(2006-04-14 15:56:00)
摘要:对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。
问题一:我声明了什么!
String s="Hello world!";
许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Helloworld!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:
String string=s;
我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。
问题二:"=="和equals方法究竟有什么区别?
==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
inta=10; intb=10;
则a==b将是true。
但不好理解的地方是:
Stringa=newString("foo"); Stringb=newString("foo");
则a==b将返回false。
根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是false。诚然,a和b所指的对象,它们的内容都是"foo",应该是“相等”,但是==操作符并不涉及到对象内容的比较。
对象内容的比较,正是equals方法做的事。
看一下Object对象的equals方法是如何实现的:
boolean equals(Object o){ /**①'yokyku'注:API中是这么实现的 publi......
JAVA编程规范 - 转载(2006-04-14 15:53:00)
摘要:JAVA编程规范
命名规范
定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组
中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可
读性)
Package的命名
Package的名字应该都是由一个小写单词组成。
Class的命名
Class的名字必须由大写字母开头而其他字母都小写的单词组成
Class变量的命名
变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。
Static Final变量的命名
Static Final变量的名字应该都大写,并且指出完整含义。
参数的命名
参数的名字必须和变量的命名规范一致。
数组的命名
数组应该总是用下面的方式来命名:
byte[]buffer;
而不是:
byte buffer[];
方法的参数
使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:
SetCounter(intsize){
this.size=size;
}
Java文件样式
所有的Java(*.java)文件都必须遵守如下的样式规则
版权信息
版权信息必须在java文件的开头,比如:
/** *Copyright®2000ShanghaiXXXCo.Ltd. *Allrightreserved. */
其他不需要出现在javadoc的信息也可以包含在这里。
Package/Imports
package行要在import行之前,import中标准的包名要在本地的包名之前,而且按照字母顺序
排列。如果import行中包含了同一个包中的不同子目录,则应该用*来处理。
package hotlava.net.stats; import java.io.*; import java.util.Observable; import hotlava.util.Application;
这里java.io.*使用来代替InputStream and OutputStream的。
Class
接下来的是类的注释,一般是用来解释类的。
/** *Aclassrepresentingasetofpacketandbytecou......
Google"谷歌"在华挂牌 将招收数千名本地工程师(2006-04-14 13:36:00)
摘要:昨日(2006-04-12),Google(中国)的本土化战略又进一步。在先后雇用李开复、周韶宁等本土精英,且推出中文网站的前提下,入华“热身”近一年的Google终于宣布开张。昨日,Google将其汉语标志定为“谷歌”,同时正式启动中国运营。
启动本土名称“谷歌”
中国是Google在全球唯一一个启动本土名称的国家,除此之外,该公司在全球依然使用着统一的Google英文名称。
“我们这样做是为了更加贴近中文用户。”Google董事长兼CEO埃里克·施密特表示,这一次他特地为启动Google新标志到访中国。
与推出新标志同步,一项全新的品牌塑造计划将围绕“谷歌”展开,Google甚至不惜为此打破营销惯例,特别针对中国市场设计传统市场营销方案,如在电视和平面媒体投放广告等,而不是以前一直坚持的网络病毒式和口碑式营销。记者了解到,施密特率领的Google高层访华团将对中国区业务进行全方位的检视和培训,多位掌管销售、工程、研发领域的副总裁将在中国区进行“闪电办公”。
将招收数千名本地工程师
施密特指出,Google在中国投资的最大比重将在人力储备和研发上。今年夏天,Google中国研究院将拥有超过100名的工程师,未来一两年Google同时计划将招收数千名本地工程师,推出更多产品。这不仅包括本地化产品,还有那些能够为全球市场提供服务的产品。另据施密特透露,Google除在北京开设工程研究院外,未来几年内还将在中国的其他城市,包括上海等地开设相关研究机构。
事实上,去年7月Google就在北京初设工程研发中心,并任命李开复为负责人。但由于当时被微软以同业禁止提起诉讼,李开复目前仍不能从事与搜索研发技术相关的工作。此后,Google继续在中国招兵买马,招来周韶宁负责Google大中华区销售和业务开发活动。
虽然目前Google(中国)已将销售渠道代理拓展为7个,但施密特昨日对李、周二人下达的最新指示是,中国区最重要的任务是研发,中国工程研究院需要迅速扩大规模,Google并不会在短期内对中国区的营收提出要求。但施密特坦言,未来对中国广告市场的期望在上亿美元规模。
加紧政府公关
政府公关是施密特此行的另一大目的。周韶宁透露,公司已为施密特安排与多个政府相关领导的会谈,施密特昨日上午与北京市有关领导进行了会晤。国家信产部、发改委等部门也将在Go......
Dreamweaver快捷键大全(2)(2006-04-14 13:27:00)
摘要: 处理表格 选择表格(光标在表格中) Ctrl+A 移 动到下一单元格 Tab 移 动到上一单元格 Shift+Tab 插入行(在当前行之前) Ctrl+M 在表格末插入一行 在最后一个单元格 Tab 删除当前行 Ctrl+Shift+M 插入列 Ctrl+Shift+A 删除列 Ctrl+Shift+ - (连字符) 合并单元格 Ctrl+Alt+M 拆分单元格 Ctrl+Alt+S 更新表格布局(在“快速表格编辑”模式中强制重绘) Ctrl+Spacebar 处理框架 选择框架 框架中Alt+点击 选择下一框架或框架页 Alt+右方向键 选择上一框架或框架页 Alt+左方向键 选择父框架 Alt+上方向键 选择子框架或框架页 Alt+下方向键 添加新框架到框架页 Alt+从框架边界拖动 使用推模式添加新框架到框架页 Alt+Ctrl+从框架边界拖动 处理层 选择层 Ctrl+Shift+点击 选择并移 动层 Shift+Ctrl+拖动 从选择中添加或删除层 Shift+点击层 以象素为单位移 动所选层 上方向键 按靠齐增量移 动所选层 Shift+方向键 以象素为单位调整层大小 Ctrl+方向键 以靠齐增量为单位调整层大小 Ctrl+Shift+方向键 将所选层与最后所选层的顶部/底部/左边/右边对齐 Ctrl+上/下/左/右方向键 统一所选层宽度 Ctrl+Shift+[ 统一所选层高度 Ctrl+Shift+] 创建层时切换嵌套设置 Ctrl+拖动 切换网格显示 Ctrl+Shift+Alt+G 靠齐到网格 Ctrl+Alt+G 处理时间轴,图象 添加对象到时间轴 Ctrl+Alt+Shift+T 添加关键帧 Shift+F9 删除关键帧 Delete 改变图象源文件属性 Double+点击图象 在外部编辑器中编辑图象 Ctrl+双击图象
管理超链接 创建超链......
