??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美激情五月,亚洲国产另类久久精品,亚洲国产中文在线二区三区免 http://www.aygfsteel.com/java2java/世界Java zh-cn Sun, 04 May 2025 08:43:59 GMT Sun, 04 May 2025 08:43:59 GMT 60 JAVAq行时的产间错误 http://www.aygfsteel.com/java2java/archive/2008/03/01/183079.htmljava2java java2java Sat, 01 Mar 2008 01:55:00 GMT http://www.aygfsteel.com/java2java/archive/2008/03/01/183079.html http://www.aygfsteel.com/java2java/comments/183079.html http://www.aygfsteel.com/java2java/archive/2008/03/01/183079.html#Feedback 1 http://www.aygfsteel.com/java2java/comments/commentRss/183079.html http://www.aygfsteel.com/java2java/services/trackbacks/183079.html 1.错误提示内容QCan‘t find class HelloworldApp
解释Q(当键?u>java HelloWorldApp时发生该错误。)(j)
pȝ找不到名为HelloWorldApp的类文g。一般地Q该错误意味着cd拼写和源文g名不一Ppȝ创徏filename.class文g时用的是类定义的名字,q且区分大小写?/p>
例如Q?/p>
class HelloWorldappQ?#8230;Q?/p>
l?u>~译 后将创徏HelloWorldapp.classcR执行时Q也要用这个名字。发生这个错误时Q可以用文件查看命令Is或dir看看当前目录下是否存在相应的文gQƈ(g)查文件名的大写?/p>
2.错误提示内容QIn class HelloWorldAppQmain must be public and static
解释Q如果mainQ)(j)Ҏ(gu)的左侧缺static或publicQ会(x)发生q个错误。前面已l解释过对mainQ)(j)Ҏ(gu)前面的修饰符有特D的要求?/p>
3.文g中含有的cM数错?/p>
解释Q按照Java规则Q在一个源文g中最多只能定义一个公有类Q否则会(x)发生q行旉误。如果一个应用系l中有多个公有类Q则要把它们分别攑֜各自不同的文件中。文件中非公有类的个C限?/p>
4.层次错误
解释Q一个。java源文件可以含有三?#8220;层”元素Q这三个元素是:(x)
Q?Q一个包说明Q即package语句Q包说明是可选的?/p>
Q?QQ意多个引入语句,即import语句?/p>
Q?Q类和接口说明?/p>
q些语句必须按一定的ơ序出现Q即Q引入语句必d现在所有的c说明之前,如果使用?jin)包说明Q则它必d现在c说明和引入语句之前?/p>
例如Q下面是正确的语句序列:(x)
package TransportationQ?/p>
import jaya.awt.Graphics
import jays.applet.AppletQ?/p>
下面是两例错误的语句序Q?/p>
import java.aWt.Graphics
import java.applet.AppletQ?/p>
package TransportationQ?/p>
该例中在包说明语句之前含?u>其他 语句?/p>
package TransportationQ?/p>
package HouseQ?/p>
import java.applet.AppletQ?/p>
该例中含有两个包说明语句?a >HP0-345 HP0-634
1.错误提示内容QCan‘t find class HelloworldApp
解释Q(当键?u>java HelloWorldApp时发生该错误。)(j)
pȝ找不到名为HelloWorldApp的类文g。一般地Q该错误意味着cd拼写和源文g名不一Ppȝ创徏filename.class文g时用的是类定义的名字,q且区分大小写?/p>
例如Q?/p>
class HelloWorldappQ?#8230;Q?/p>
l?u>~译 后将创徏HelloWorldapp.classcR执行时Q也要用这个名字。发生这个错误时Q可以用文件查看命令Is或dir看看当前目录下是否存在相应的文gQƈ(g)查文件名的大写?/p>
2.错误提示内容QIn class HelloWorldAppQmain must be public and static
解释Q如果mainQ)(j)Ҏ(gu)的左侧缺static或publicQ会(x)发生q个错误。前面已l解释过对mainQ)(j)Ҏ(gu)前面的修饰符有特D的要求?/p>
3.文g中含有的cM数错?/p>
解释Q按照Java规则Q在一个源文g中最多只能定义一个公有类Q否则会(x)发生q行旉误。如果一个应用系l中有多个公有类Q则要把它们分别攑֜各自不同的文件中。文件中非公有类的个C限?/p>
4.层次错误
解释Q一个。java源文件可以含有三?#8220;层”元素Q这三个元素是:(x)
Q?Q一个包说明Q即package语句Q包说明是可选的?/p>
Q?QQ意多个引入语句,即import语句?a >HP0-645 HP0-661
Q?Q类和接口说明?/p>
q些语句必须按一定的ơ序出现Q即Q引入语句必d现在所有的c说明之前,如果使用?jin)包说明Q则它必d现在c说明和引入语句之前?/p>
例如Q下面是正确的语句序列:(x)
package TransportationQ?/p>
import jaya.awt.Graphics
import jays.applet.AppletQ?/p>
下面是两例错误的语句序Q?/p>
import java.aWt.Graphics
import java.applet.AppletQ?/p>
package TransportationQ?/p>
该例中在包说明语句之前含?u>其他 语句?/p>
package TransportationQ?/p>
package HouseQ?/p>
import java.applet.AppletQ?/p>
该例中含有两个包说明语句?/p>
]]> JAVA JSP servlet取\径问题ȝ.... http://www.aygfsteel.com/java2java/archive/2008/01/10/174221.htmljava2java java2java Thu, 10 Jan 2008 03:35:00 GMT http://www.aygfsteel.com/java2java/archive/2008/01/10/174221.html http://www.aygfsteel.com/java2java/comments/174221.html http://www.aygfsteel.com/java2java/archive/2008/01/10/174221.html#Feedback 0 http://www.aygfsteel.com/java2java/comments/commentRss/174221.html http://www.aygfsteel.com/java2java/services/trackbacks/174221.html 一 JAVA cM
1。取出指定所在类的\?
class A {
String getPath() {
return this.getClass().getClassLoader().getSystemResource("A"). getPath();
}
}
2。取出类ClassLoader的开始\径(执行路径Q?br />
//String preUri=this.getClass().getClassLoader( ).getResource(""). getPath();
比如WebApp的项目,以下的指令得出的l果是
/D:/project/crFj163Web/web/exploded/WEB-INF/classes/
比如你是Ujava的程序,是你执行java指o(h)的当前\?/p>
3。取出jdk所在的bin目录
//得到当前用户路径Q执行\?System.getProperty(”user.dir”)
其中user.dir是一个参敎ͼ更多参数L(fng)q里
二、jsp/servlet 中的取\?/p>
以前我们常用getRealPath(),不过q个Ҏ(gu)已经不推荐用?jin)。但我们可以使用request.getContextPath().另外q有request.getRequestURL() 或者request.getRequestURI()。下面D例,以徏立一个app1的webappZ
1。request.getContextPath()打印出来的是
/app1
2。request.getRequestURL() 打印出来的是
http://localhost:8080/app1/index.jsp
3。request.getRequestURI() 打印出来的是
/app1/index.jsp
转蝲Q?nbsp; 190-721 000-746 Q?/div>
]]> Java操作Oracle数据库(Q插数据Q删除)(j) http://www.aygfsteel.com/java2java/archive/2008/01/10/174209.htmljava2java java2java Thu, 10 Jan 2008 02:54:00 GMT http://www.aygfsteel.com/java2java/archive/2008/01/10/174209.html http://www.aygfsteel.com/java2java/comments/174209.html http://www.aygfsteel.com/java2java/archive/2008/01/10/174209.html#Feedback 0 http://www.aygfsteel.com/java2java/comments/commentRss/174209.html http://www.aygfsteel.com/java2java/services/trackbacks/174209.html
import java.sql.*;
public class Create {
public Create() {
}
public static void main(String[] args){
String url = "jdbc:oracle:thin:@10.0.1.3:1521:SDCDB";
String query = "CREATE TABLE MYFIRST" + "(id INT,name CHAR(10))";
String sql="insert into MYFIRST values(''1'',''liming'')";
String sql1="insert into MYFIRST values(''2'',''mm'')";
String sql2="delete MYFIRST where id=2";
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url, "test", "test");
Statement stmt = conn.createStatement();
stmt.executeUpdate(query);
stmt.executeUpdate(sql);
stmt.executeUpdate(sql1);
stmt.executeUpdate(sql2);
System.out.println("Create Success!");
stmt.close();
conn.close();
}
catch(java.lang.ClassNotFoundException e){
System.err.print(e.getMessage());
}
catch(SQLException ex){
System.out.println("\n***SQLException caught ***\n");
}
}
}
]]> Java认证考试介绍 http://www.aygfsteel.com/java2java/archive/2008/01/07/173249.htmljava2java java2java Mon, 07 Jan 2008 02:11:00 GMT http://www.aygfsteel.com/java2java/archive/2008/01/07/173249.html http://www.aygfsteel.com/java2java/comments/173249.html http://www.aygfsteel.com/java2java/archive/2008/01/07/173249.html#Feedback 2 http://www.aygfsteel.com/java2java/comments/commentRss/173249.html http://www.aygfsteel.com/java2java/services/trackbacks/173249.html
JavaE序?
概述Q本评使学员掌握如何用标准Java Development kitQJDKQ开发应用程序和applets。在本课E中(zhn)将学会(x)Java语言的语法。如何用Java来创建图形用h口(GUIQ,事g处理机制Q例外处理,通过设计与开发各UJavaE序来获得实际的~程l验。?zhn)也将学到文g输入/输出QI/OQ,多线E和|络的知识?
目标Q本评完成后,(zhn)将具备以下能力Q?
使用Java~程语言创徏Java应用E序和applets
定义和描q垃圾搜集,安全性和Java虚拟机(JVMQ?
描述和用Java语言面向对象的特点;开发图形用h口(GUIQ?
利用Java支持的多U布局理
描述和?Java的事件处理模?
使用Java语言的鼠标输入,文本Q窗口和菜单H口部g
使用Java的例外处理来控制E序执行和定义用戯q例外事g
使用Java语言的先q的面向对象特点Q包括方法重载,Ҏ(gu)覆盖Q抽象类Q接口,finalQstatic和访问控Ӟ实现文g的输入输出(I/OQ?
使用Java语言内在的线E模式来控制多线E?
使用Java的Sockets机制q行|络通信
预备知识Q熟(zhn)DOS操作Q用qWINDOWSq能用C或C++~程?
Java开发员
概述Q本评提供给学员设计资料服务器应用法的实际设计方法,学员用Java声音、图形、网l通讯{接口,~写与服务器相连接的Java应用E度Q通过本课E学员还能学到如何在JavaE序中调用本机用其它计算a~写的程?117-102 117-301 190-721 ?
本课E是为熟(zhn)Java语言l构?qing)语法的E序员而设立的。以便他们能在本评中获得开发复杂的、品的Java应用技术?
目标Q在学完本课E后Q学员将能够Q?
设计和开发Java GUI
设计和开发动画Java应用E序
掌握?jin)Java|络~程技?
懂得?jin)JDBC-API的基本结?
知道UNIX与Windows NT互连有哪些技术问?
能够解释在JavaE序中调用其它语a所~写的程序的Ҏ(gu)与步?
Sun认证JavaE序员考试QJDK1.1Q由一门考试l成Q可以用来测试考生对Java语言的掌握程度。考生可以使用考试大纲Qexam objectivesQ作为准备考试的工兗?
Z(jin)保证Sun客户使用的是Sun的最新技术,Sun Educational Services已经把Sun认证JavaE序员考试更新为JDK1.1?
考试l则
考试名称Q?
The Sun Certified Java Programmer for JDK 1.1
考试P(x)
310-022QIBM考生除外Q,310-023Q只对IBM考生Q?
推荐教材Q?
SL-275 “Java ProgrammingQUNIXQ?#8221;
SL-276“Java ProgrmmingQWindows 95Q?#8221;
JTL-SL-275“Java Tutor:Java Programming Library”
题数Q?0
考题cdQ多?{?
通过分数Q?70%
考试旉Q?2时
考试费用Q?$150
]]> Java学习(fn)之\Q不走弯路,是捷径 http://www.aygfsteel.com/java2java/archive/2008/01/07/173248.htmljava2java java2java Mon, 07 Jan 2008 02:09:00 GMT http://www.aygfsteel.com/java2java/archive/2008/01/07/173248.html http://www.aygfsteel.com/java2java/comments/173248.html http://www.aygfsteel.com/java2java/archive/2008/01/07/173248.html#Feedback 3 http://www.aygfsteel.com/java2java/comments/commentRss/173248.html http://www.aygfsteel.com/java2java/services/trackbacks/173248.html
软g开发之路是充满荆棘与挑战之?也是充满希望之\。JAVA学习(fn)也是如此Q没有捷径可走。梦惛_《天龙八部》中虚竹一栯无崖子醍醐灌而轻松获得一甲子功力Q是很不现实的。每天Ԓ天大?天神啊,误l我一本葵花宝典吧"Q殊不知即你获得了(jin)葵花宝典Q除?jin)受自宫其n之苦外,你也不一定成得了(jin)"东方不|"Q倒是?西方p|"的几率高一炏V?
"不走弯\Q就是捷?Q佛(jng)l说的不无道理?
1Q如何学?fn)程序设计?
JAVA是一U^収ͼ也是一U程序设计语aQ如何学好程序设计不仅仅适用于JAVAQ对C++{其他程序设计语a也一L(fng)用。有~程高手认ؓ(f)QJAVA也好C也好没什么分别,拿来q。ؓ(f)什么他们能辑ֈ如此境界Q我x因ؓ(f)~程语言之间有共通之处,领会(x)?jin)编E的_NQ自然能够做C通百通。如何学?fn)程序设计理所当然也有许多共通的地方?
1.1 培养兴趣
兴趣是能够让你坚持下ȝ动力。如果只是把写程序作生的手段的话Q你?x)活的很累,也太对不赯׃?jin)。多兛_(j)一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但h要是没有?jin)梦惻I你觉得有味道吗?可能像许多深x地农民一P打打dQ喝喝功夫茶Q拜拜胦(ch)爷Q每个月有几万十几万甚x多的q帐Q凭I多Z"食利阶层"。你认ؓ(f)Q这h味道吗?有空多到一些程序员论坛转{Q你?x)发玎ͼ他们其实很乐观幽默,时不时?x)冒出智慧的火花?
1.2 慎选程序设计语a
h入错行Q女怕嫁错郎。初学者选择E序设计语言需要}慎对待。Y件开发不仅仅是掌握一门编E语a?jin)事Q它q需要其他很多方面的背景知识。Y件开发也不仅仅局限于某几个领域,而是已经渗透到?jin)各行各业几乎每一个角落?
如果你对g比较感兴,你可以学?fn)C语言/汇编语言Q进入硬件开发领域。如果你对电(sh)信的行业知识?qing)网l比较熟(zhn),你可以在C/C++{之上多花时_(d)以期q入?sh)信软g开发领域。如果你Ҏ(gu)作系l比较熟(zhn),你可以学?fn)C/Linux{等,为Linux内核开?驱动E序开?嵌入式开发打基础。如果你想介入到应用范围最q泛的应用Y件开发(包括?sh)子商务电(sh)子政务pȝQ的话,你可以选择J2EE?NETQ甚至LAMPl合。每个领域要求的背景知识不一栗做应用软g需要对数据库等很熟(zhn)。MQ你需要根据自q特点来选择合适你的编E语a?
1.3 要脚t实?快餐式的学习(fn)不可?
先分享一个故事?
有一个小朋友Q他很喜Ƣ研I生物学Q很想知道那些蝴蝶如何从蛹壳里出来,变成蝴蝶便会(x)飞?nbsp; 有一ơ,他走到草原上面看见一个蛹Q便取了(jin)回家Q然后看着Q过?jin)几天以后,q个蛹出?jin)一条裂痕,看见里面的蝴蝶开始挣扎,x破蛹壳飞出来?nbsp; q个q程达数时之久Q蝴蝶在蛚w面很辛苦地拼命挣扎,怎么也没法子走出来。这个小孩看着看着不忍?j),想不如让我帮帮它吧Q便随手拿v剪刀在蛹上剪开Q蝴蝶破蛹而出?nbsp; 但蝴蝶出来以后,因ؓ(f)膀不够力,变得很臃肿,飞不h?
q个故事l我们的启示是:(x)Ʋ速则不达?
躁是现代h最普遍的心(j)态,能怪谁Q也许是贫穷落后?jin)这么多q的~故Q就像当q的大跃q一P都想大步跨入׃MC会(x)。现在的软g公司、客戗政府、学校、培训机构等{到处I漫着躁之气。就拿笔者比较熟(zhn)的深圳IT培训行业来说吧,居然有的打广告U?参加培训Q?00%׃"Q居然报名的学生不少Q简直是藐视天下E序员。社?x)环境如是,我们不能改变Q只能改变自?闹市(jng)中的安宁QI珍c(din)许多初学者C++/JAVA没开始学Q立马用VC/JBuilder,?x)用VC/JBuilder开发一个Hello WorldE序Q就忙不q的向世界宣告,"我会(x)软g开发了(jin)"Q简历上也大a不惭地写?_NVC/JAVA"。结果到软g公司面试时要么被三两下打发走?jin),要么被驳的体无完肤,无地自容。到处碰壁之后才知道捧v《C++~程思想》《JAVA~程思想》仔l钻研,早知如此何必当初呀?
"你现在讲I简单方便,你以后的路就长了(jin)"Q好象也是佛(jng)l中的劝戒?
1.4 多实?快实?
彭端淑的《ؓ(f)学一首示子侄》中有穷和尚与富和尚的故事?
从前Q四川边境有两个和尚Q一个IP一个有钱。一天,I和对富和说Q?我打去南v朝圣Q你看怎么P"富和说Q?q里dh几千里远Q你靠什么去呢?"I和说Q?我只要一个水钵,一个饭就够了(jin)?富和ؓ(f)隑֜_(d)(x)"几年前我打买条船dP可至今没LQ你q是别去吧!" 一q以后,富和还在ؓ(f)U赁船只{wQ穷和尚却已l从南v朝圣回来?jin)?
q个故事可解Mؓ(f)QQ何事情,一旦考虑好了(jin)Q就要马上上路,不要{到准备周全之后Q再d事情。假如事情准备考虑周全?jin)再上\的话Q别人恐怕捷_M(jin)。Y件开发是一门工E学U,注重的就是实践,"君子动口不动?对Y件开发h员来讲根本就是错误的Q他们提?动手至上"Q但别害怕,他们大多温文?dng)雅Q没有暴力們Q虽然有时候蓬头垢面的一?比尔盖茨"栗有前辈高h认ؓ(f)Q学?fn)编E的U诀是:(x)~程、编E、再~程Q笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要{到你完全理解了(jin)才动手敲代码Q而是应该在看书的同时敲代码,E序q行的各U情况可以让你更快更牢固的掌握知识点?
1.5 多参考程序代?
E序代码是Y件开发最重要的成果之一Q其中渗透了(jin)E序员的思想与灵。许多h被《仙剑奇侠传》中凄美的爱情故事感?(zhn)剧的结局更有一U缺憄。ؓ(f)什么要以?zhn)剧结?据说是因为写《仙剑奇侠传》的E序员失恋而安排了(jin)q样的结局Q他把自q感觉融入到游戏中Q却让众多的仙剑qh腕叹息?
多多参考代码例子,对JAVA而言有参考文献[4.3],有APIcȝ源代?JDK安装目录下的src.zip文g)Q也可以研究一些开源的软g或框架?
1.6 加强英文阅读能力
对学?fn)编E来_(d)不要求英? 但不能一点不?。最L(fng)像JAVA API文(参考文献[4.4])q些东西q是要能看懂?q猜带懵都可以;旁边再开启一?金山词霸"。看多了(jin)׃(x)来熟l。在学JAVA的同时学?fn)英文,一双雕多好。另外好多Y仉要到英文|站下蝲Q你要能够找到它们,q些是最基本的要求。英语好对你学习(fn)有很大的帮助。口语好的话更有Z(x)q入理层,q而可以成为剥削程序员?周扒??
1.7 万不得已才请教别?
W者在ChinaITLab|校的在U辅导系l中解决学生问题时发玎ͼ大部分的问题学生E做思考就可以解决。请教别Z前,你应该先回答如下几个问题?
你是否在google中搜索了(jin)问题的解军_法?
你是否查看了(jin)JAVA API文Q?
你是否查找过相关书籍Q?
你是否写代码试q?
如果回答都是"?的话Q而且q没有找到解军_法,再问别h不迟。要知道独立思考的能力对你很重要。要知道E序员的旉是很宝贵的?
1.8 多读好书
书中自有颜如玉。比?盖茨是一个饱ȝ书的人。虽然没有读完大学,但九(ji)岁的时候比?盖茨已l读完了(jin)所有的癄全书Q所以他_N天文、历双Ӏ地理等{各cdU,可以说比?盖茨不仅是当今世界上金钱的首富,而且也可以称得上是知识的巨富?
W者在l学生上评时候经怼(x)l他们推荐书c,到后来学生实在忍无可忍开始抱怨,"天呐Q这么多书到什么时候才能看完了(jin)"Q?学Y件开发,感觉上了(jin)D"。这时候,我的回答一般是Q?别着急,什么时候带你们ȝ看我的书房,到现在每月花在技术书c上的钱400元,q在软g开发h员之中还只能够算是中{的"Q学生当场晕倒。(注:(x)q一部分学生是刚学Y件开发的Q?
对于在JAVA开发领域的好书在笔者另外一文章中?x)专门点评。该文章可作为本文的姊妹?
1.9 使用合适的工具
工欲善其事必先利其器。Y件开发包含各U各L(fng)zdQ需求收集分析、徏立用例模型、徏立分析设计模型、编E实现、调试程序、自动化试、持l集成等{,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使Y件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤h的境界就很高?jin),无招胜有招,手中无剑心(j)中有剑q样的境界几乎不可企?qing)。在W者另外一文章中?x)专门阐q如何选择合适的工具Q该文章也可作ؓ(f)本文的姊妹篇Q?
2QY件开发学?fn)\U?
两千多年的儒家思想孔孟之道Q中庸的思想透入骨髓Q既不冒q也不保守ƈ非中怹道,而是扑֯学习(fn)软g开发的正确路线与规律?
从Y件开发h员的生(dng)规划来讲Q我们可以大致分Z个阶D,软g工程?#8594;软g设计?#8594;架构设计师或目理师。不惛_元帅的士兵不是好士兵Q不惛_架构设计师或目理师的E序员也不是好的E序员。我们应该努力往上走。让我们先整理一下开发应用Y仉要学?fn)的主要技术?
AQ基理论知识Q如操作pȝ、编译原理、数据结构与法、计机原理{,它们q不重要。如不想成ؓ(f)计算机科学家的话Q可以采?用到的时候再来学"的原则?
BQ一门编E语aQ现在基本上都是面向对象的语aQJAVA/C++/C#{等。如果做WEB开发的话还要学?fn)HTML/JavaScript{等?
CQ一U方法学或者说思想Q现在基本都是面向对象思想QOOA/OOD/设计模式Q。由此而衍生的Zlg开发CBD/面向斚w~程AOP{等?
DQ一U关pd数据库,ORACLE/SqlServer/DB2/MySQL{等
EQ一U提高生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET{?
FQ一UUML建模工具Q用ROSE/VISIO/钢笔q行建模?
GQ一UY件过E,RUP/XP/CMM{等Q通过软gq程来组lY件开发的众多zdQ开发流E专业化规范化。当然还有其他的一些Y件工E知识?
HQ项目管理、体pȝ构、框架知识?
正确的\U应该是QB→C→E→F→G→H?
q需要补充几点:(x)
1Q.对于A与C要补充的是,我们应该在实践中逐步领?zhn)~程理论与编E思想。新技术虽然不断涌玎ͼ更新速度令hD燎ؕN看花Q但万变不离其宗Q编E理Z~程思想的变化却很慢。掌握了(jin)~程理论与编E思想你就?x)有拨云见日之感。面向对象的思想在目前来讲是相当关键的,是强势技术之一Q在上面需要多投入旉Q给你的回报也会(x)让你惊喜?
2Q.对于数据库来说是独立学习(fn)的,q个时机q你来军_吧?
3Q.~程语言作ؓ(f)学习(fn)软g开发的ȝQ而其余的作ؓ(f)辅线?
4Q.软g工程师着重于B、C、E?nbsp; DQY件设计师着重于B、C、E?nbsp; D、FQ架构设计师着重于C、F、H?
3Q如何学?fn)JAVA?
3.1 JAVA学习(fn)路线
3.1.1 基础语法?qing)JAVA原理
基础语法和JAVA原理是地基,地基不牢靠,犹如沙地上徏摩天大厦Q是相当危险的。学?fn)JAVA也是如此Q必要有扎实的基础Q你才能在J2EE、J2ME领域游刃有余。参加SCJPQSUN公司认证的JAVAE序员)(j)考试不失Z个好Ҏ(gu)Q原因之一是ؓ(f)?jin)对得v你交?200大洋考试费,你会(x)更努力学?fn),原因之二是SCJP考试能够让你把基打得很牢靠,它要求你跟JDK一L(fng)(zhn)JAVA基础知识Q但是你千万不要认ؓ(f)考过?jin)SCJP有多了(jin)不vQ就能够获得软g公司的青睐,p够获取高薪,q样的想法也是很危险的。获?真正"的SCJP只能证明你的基础q过得去Q但d际开发还有很长的一D\要走?
3.1.2 OO思想的领(zhn)?
掌握?jin)基语法和JAVAE序q行原理后,我们可以用JAVA语言实现面向对象的思想?jin)。面向对象,是一U方法学;是独立于语言之外的编E思想;是CBDZlg开发的基础;属于强势技术之一。当以后因工作需要{到别的面向对象语a的时候,你会(x)感到特别的熟(zhn)亲切,学v来像喝凉水这么简单?
使用面向对象的思想q行开发的基本q程是:(x)
●调查收集需求?
●徏立用例模型?
●从用例模型中识别分析类?qing)类与类之间的?rn)态动态关p,从而徏立分析模型?
●细化分析模型到设计模型?
●用具体的技术去实现?
●测试、部|Ӏȝ?
3.1.3 基本API的学?
q行软g开发的时候,q不是什么功能都需要我们去实现Q也是l典名言所说的"不需要重新发明轮?。我们可以利用现成的cR组件、框架来搭徏我们的应用,如SUN公司~写好了(jin)众多cdC些底层功能,以及(qing)我们下蝲q来的JAR文g中包含的c?我们可以调用cM的方法来完成某些功能或承它。那么这些类中究竟提供了(jin)哪些Ҏ(gu)l我们用?Ҏ(gu)的参C数及(qing)cd是?cȝ构造器需不需要参敎ͼM可能SUN公司的工E师打国际长途甚至飘?gu)z过h告诉你他~写的类该如何用吧。他们只能提供文给我们查看QJAVA DOC文Q参考文?.4Q就是这L(fng)文Q它可以说是E序员与E序员交的文档?
基本API指的是实C(jin)一些底层功能的c,通用性较强的APIQ如字符串处?输入输出{等。我们又把它成ؓ(f)cd。熟(zhn)API的方法一是多查JAVA DOC文档Q参考文?.4Q,二是使用JBuilder/Eclipse{IDE的代码提C功能?
3.1.4 特定API的学?
JAVA介入的领域很q泛Q不同的领域有不同的APIQ没有h熟?zhn)所有的APIQ对一般h而言只是熟?zhn)工作中要用到的API。如果你做界面开发,那么你需要学?fn)Swing/AWT/SWT{APIQ如果你q行|络游戏开发,你需要深入了(jin)解网lAPI/多媒体API/2D3D{;如果你做WEB开发,需要熟(zhn)Servlet{API啦。MQ需要根据工作的需要或你的兴趣发展方向去选择学习(fn)特定的API?
3.1.5 开发工L(fng)用法
在学?fn)基语法与基本的面向对象概念Ӟ从锻Da熟练E度的角度考虑Q我们推荐用的工具是Editplus/JCreator+JDK,q时候不要急于上手JBuilder/Eclipse{集成开发环境,以免q于xIDE的强大功能而分散对JAVA技术本w的注意力。过?jin)这一阶段你就可以开始熟(zhn)IDE?jin)?
E序员日常工作包括很多活动,~辑、编译及(qing)构徏、调试、单元测试、版本控制、维持模型与代码同步、文档的更新{等Q几乎每一Ҏ(gu)动都有专门的工具Q如果独立用这些工L(fng)话,你将?x)很痛苦Q你需要在堆满工具的Q务栏上不断的切换Q效率很低下Q也很容易出错。在JBuilder、Eclipse{IDE中已l自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等{,甚至可以把UML建模工具也集成进去,又提供了(jin)丰富的向导帮助生成框架代码,让我们的开发变得更L。应该说IDE发展的趋势就是集成Y件开发中要用到的几乎所有工兗?
从开发效率的角度考虑Q用IDE是必l之路,也是从一个学生到一个职业程序员转变的里E碑?
JAVA开发用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans{几U;而Eclipse、JBuilder占有的市(jng)Z额是最大的。JBuilder在近几年来一直是JAVA集成开发环境中的霸主,它是由备受程序员敬的Borland公司开发,在硝烟I漫的JAVA IDE大战?以其快速的版本更新击|IBM的Visual Age for JAVA{而成׃番伟业。IBM在Visual Age for JAVA上已l无利可图之下,q脆之贡献l开源社区,成ؓ(f)Eclipse的前w,真所?x花明又一?。ʎ火重生的Eclipse以其开攑ּ的插件扩展机制、免费开源获得广大程序员Q包括几乎所有的骨灰U程序员Q的青睐Q极具发展潜力?
3.1.6 学习(fn)软g工程
对小型项目而言Q你可能认ؓ(f)软g工程没太大的必要。随着目的复杂性越来越高,软g工程的必要性才?x)体现出来。参?软g开发学?fn)\U?节?
3.2学习(fn)要点
立的学?fn)\U之后,我们q需要ȝ一下JAVA的学?fn)要点,q些要点在前文多多少提到过Q只是笔者觉得这些地方特别要注意才对它们q行汇总,不要嫌我婆婆妈妈啊?
3.2.1勤查API文
当程序员~写好某些类Q觉得很有成感,x它A(ch)献给各位苦难的同行。这时候你要?javadoc"工具Q包含在JDK中)(j)生成标准的JAVA DOC文档,供同行用。J2SE/J2EE/J2ME的DOC文档是程序员与程序员交流的工P几乎人手一份,除了(jin)菜鸟之外。J2SE DOC文官方下蝲地址Q?a target="_blank">http://java.sun.com/j2se/1.5.0/download.jspQ你可以到google搜烦(ch)CHM版本下蝲。也可以在线查看Q?a target="_blank">http://java.sun.com/j2se/1.5.0/docs/api/index.html ?br />
对待DOC文档要像毛主席语录,早上起床念一遍,吃饭睡觉前念一遍?
当需要某功能的时候,你应该先查相应的DOC文看看有没有现成的实现Q有的话׃必劳费?j)?jin)直接用就可以?jin),找不到的时候才考虑自己实现。用步骤一般如下:(x)
●找特定的包Q包一般根据功能组l?
●找需要用类Q类命名规范的话我们q的名字可猜出一二?
●选择构造器Q大多数使用cȝ方式是创建对象?
●选择你需要的Ҏ(gu)?
3.2.2 查书/google->写代码测?>查看源代?>h别h
当我们遇到问题的时候该如何解决Q?
q时候不要急着问别人,太简单的问题Q没l过思考的问题Q别Z(x)因此而瞧不v你。可以先找找书,到google中搜一下看看,l大部分问题基本p决了(jin)。而像"某些c?Ҏ(gu)如何使用的问?QDOC文是{案。对某些知识Ҏ(gu)疑惑是,写代码测试一下,?x)给你留下深ȝ印象。而有的问题,你可能需要直接看API的源代码验证你的x。万不得已才去请教别人?
3.2.3学习(fn)开源Y件的设计思想
JAVA领域有许多源代码开攄工具、组件、框ӞJUnit、ANT、Tomcat、Struts、Spring、Jive论坛、PetStore宠物店等{多如牛毛。这些可是前辈给我们留下的瑰宝呀。入宝山而空手归Q你?j)甘吗?对这些工兗框架进行分析,领会(x)其中的设计思想Q有朝一日说不定你也能写一个XXX框架什么的Q风光一把。分析开源Y件其实是你提高技术、提高实战能力的便捷Ҏ(gu)?
3.2.4 规范的重要?
没有规矩Q不成方圆。这里的规范有两层含义。第一层含义是技术规范,多到http://www.jcp.org 下蝲jsrxxx规范Q多读规范,q是最权威准确最新的教材。第二层含义是编E规范,如果你用了(jin)大量的独特算法,富有个性的变量?qing)方法的命名方式Q同Ӟ没给E序作注释,以显CZ的编E功底是多么的深厚。这L(fng)代码别h看v来像天书Q要理解谈何Ҏ(gu)Q更不用说维护了(jin)Q必然会(x)被无情地扫入垃圾堆。java~码规范到此查看或下?http://java.sun.com/docs/codeconv/Q中文的也有Q啊Q还要问我在哪,请参?.2.2节?
3.2.5 不局限于JAVA
很不q,很幸q,要学?fn)的东西q有很多。不q的是因学的东西太多且多变,没时间陪老婆家h或女朋友Q导致n?j)疲惫,严重者甚臛_致抑郁症。幸q的是别抢你饭碗l非易事Q他们或她们需要付出很多才能达成心(j)ѝ?
JAVA不要孤立地去学习(fn)Q需要综合学?fn)数据结构、OOP、Y件工E、UML、网l编E、数据库技术等知识Q用横向U向的比较联想的方式d?fn)?x)更有效。如学习(fn)JAVA集合的时候找数据l构的书看看Q学JDBC的时候复?fn)数据库技术;采取的依然是"需要的时候再?的原?000-834 000-861 ?
4Q结束语
需要强调的是,学习(fn)软g开发确实有一定的隑ֺQ也很辛苦,需要付出很多努力,但千万不要半途而废。本文如果能对一直徘徊在JAVA殿之外的朋友有所帮助的话Q笔者也ƣ慰?jin)。哈哈,怎么听v来老气横秋呀Q没办法Q在?sh)脑的长期辐之下,都快变成老头?jin)。最后奉劝各位程序员其是MME序员,完成工作后赶快远ȝ(sh)脑,据《胡播ؕ报》报道,?sh)脑辐射会(x)在白皙的皮肤上面点~一些小黑点Q看h鲜艳无比……
]]> JavaE序的加密和反加?/title> http://www.aygfsteel.com/java2java/archive/2008/01/03/172532.htmljava2java java2java Thu, 03 Jan 2008 09:51:00 GMT http://www.aygfsteel.com/java2java/archive/2008/01/03/172532.html http://www.aygfsteel.com/java2java/comments/172532.html http://www.aygfsteel.com/java2java/archive/2008/01/03/172532.html#Feedback 5 http://www.aygfsteel.com/java2java/comments/commentRss/172532.html http://www.aygfsteel.com/java2java/services/trackbacks/172532.html 首先我们来看看JavaE序的反加密Q也是通常所说的Crackq程Q只有明白了(jin)q个q程Q我们才能有效的Ҏ(gu)们的E序q行加密?/p>
通常我们得到的JavaE序的Crack包有两种Q一U属于KeyGenQ注册码生成器)(j)、一U属于替换修改;
我们先看W一U,当我们找C个应用程序的KeyGen的时候我们L很佩服那个做出KeyGen的hQ觉得他很厉宻I但是你仔l分析一下,Z么他能做出KeyGen呢?只有
他对q个JavaE序的加密算法了(jin)解的非常清楚Q这Uh有哪些呢Q一个是那个公司里面的hQ那不可能,除非内讧Q还又呢Q就是猜惻I反推Q这个可能吗Q呵呵,更不可能Q那q个法从哪里来呢?呵呵Q往往泄漏U密的就是秘密本w?#8230;…回过头来xQJava应用E序怎么知道你输入的注册码是否正呢Q呵呵,那你p从应用程序入?#8230;…
得到的它的加密算法,自然KeyGen׃在话下了(jin)……Q但是这也有列外Q如果它是用的公钥秘钥对加密的,没有办法喽Q只能用W二U方法。)(j)
q种办法只适合对付只要一个注册号Q别的什么都不要的情况,l典代表Borland JBuilder & Optimizeit Suite
再看W二U,Z么要用替换修改?我们是修改了(jin)那部分呢Q不用想Q肯定是License验证的部分,Z么我们不像上面的Ҏ(gu)那样扑֊密算法呢Q原因有两种Q(1Q用上面的办法搞不定;Q?QJavaE序不仅要KeyQ还有其他的License配置Q遇到这U情况,我们只要扑ֈ用于License验证的类Q进行修Ҏ(gu)换就行了(jin)?/p>
q种办法使用于Q何情况,l典代表BEA WebLogic
l过上面的分析,我们的问题就集中?jin),关键是怎么扑ֈ用于License验证的部分或加密法的部分,我们需?个工P(x)一个是Sun公司提供的标准JVMQ)(j)Q一个是?br />
的耐心(j)和细?j)?x)Q,一个是JadQ经典Java反编译工P(j)?/p>
W一步是定位Q这也是最关键的一步,我们q里以Together For JBuilder EditionZQ启动TogetherQ先看看长什么样子?喔,上来问我要LicenseQOkQ?br />
每关p,退出;扑ֈTogether的启动Bat文gQ找到它的启动命令:(x)java .....QOKQ在Java启动的时候给一个参敎ͼ(x)“ -Xrunhprof:cpu=times”Q保存,在启动,q是?br />
LicenseQ退出,q个时候,我们可以发现Q在q个目录下多?jin)一?#8220;java.hprof.txt”文gQ打开一看,是我要的JVM的Dump文gQ好多内容啊Q没关系Q慢慢看来?/p>
我们可以看见q个文g里面有好多熟(zhn)的东西啊:(x)java.*/com.sun.*/javax.*{等Q但q个不是我们兛_(j)的,我们要的是com.togethersoft.*或者是一些没有包名的zd.d{等。(q里插一句,几乎所有的Java应用E序都会(x)h的,其实h的原理也很简单,我们后面再说。)(j)先找找有没有License有关的,Serach一下,嘿嘿Q果?dng)?74行:(x)com.togethersoft.together.impl.ide.license.LicenseSetup.execute([DashoPro-V2-050200]:Unknown line)QOk上那堆classpath中的Jar包里面找一下吧Q推荐用WinRARQ,扑ֈ?jin)之后用Jad反编译,一看,q个没有hQ但是用?jin)一个zae的类Q这个看名字q道淆过?jin),先不理它Q再看看下面一句IdeLicenseAccess.setLicense(zae1)QOk接着扑ֈIdeLicenseAccessQ哈哈,p点名堂,所有的License验证都是走的q个c,面向对象的思想不错Q呵呵:(x)Q?/p>
定位定完?jin),接下来的事情是按猜想的?gu)修改q两个类Q屏蔽掉LicenseSetup里面executeҎ(gu)的实际内容,修改IdeLicenseAccessQ让多有的验证都q回trueQ然后编译,替换Q不要高兴太早,q还没有完呢Q要有责d(j)Q!启动TogetherQ果?dng)q下不要License?jin),有启动画面,q去?jin),但是一片灰Ԍ怎么回事Q一看控制台Q一堆错Q没关系Q就怕不出错Q查找根源,q有一个IdeLicenseUtilcd?jin)问题,再反~译Q修改,替换Q这下搞定了(jin)。再启动Q测试一下,OK MB7-222 70-210 1Y0-327 ?/p>
pP一个Java应用E序搞定?jin)。看看其实也很简单?/p>
再来说说hQ大家可能都知道没有l过h的Java的Class反编译回来连Ҏ(gu)和变量的名字都不?x)变Q这是什么原因呢Q这pq述到Class文g的结构了(jin)Q简单来_(d)Class文gU包含又一个常数池Qconstant poolQ这个里面就存放?jin)变量和?gu)的名U等一下和Class相关的东西,我们通常所说的h是用一U工hq个常数池里面的东东弄的胡涂一点,q样p骗过反编译器和你Q呵呵:(x)Q这是Z么有时候反~译回来的东西编译不q去的原因?/p>
再回q头来说说JavaE序的加密;从上面的两种Ҏ(gu)来看QJavaE序g是没有什么完的办法q行加密的,其实不然Q我们必遵循一些原则,才能有效的保护你的品?/p>
原则一Q尽量用公钥和U钥对进行加密;
原则二,不要在加密验证的部分使用面向对象思想Q)(j)把验证的Ҏ(gu)写在E序的各个角落,q标注ؓ(f)private final voidQ让~译器替你处理成内联Ҏ(gu)Q?br />
原则三,可能的大幅度淆:(x)Q找个好点的h?/p>
]]> Java中的易问题攉 http://www.aygfsteel.com/java2java/archive/2008/01/03/172530.htmljava2java java2java Thu, 03 Jan 2008 09:50:00 GMT http://www.aygfsteel.com/java2java/archive/2008/01/03/172530.html http://www.aygfsteel.com/java2java/comments/172530.html http://www.aygfsteel.com/java2java/archive/2008/01/03/172530.html#Feedback 1 http://www.aygfsteel.com/java2java/comments/commentRss/172530.html http://www.aygfsteel.com/java2java/services/trackbacks/172530.html
W一Qfinal, finally, finalize的区?
final 修饰W(关键字)(j)如果一个类被声明ؓ(f)finalQ意味着它不能再z出新的子c,不能作ؓ(f)父类被ѝ因此一个类不能既被声明?abstract的,又被声明为final的。将变量或方法声明ؓ(f)finalQ?strong>可以保证它们在用中不被改变。被声明为final的变量必d声明时给定初|而在以后的引用中只能dQ不可修攏V被声明为final的方法也同样只能使用Q不能重?
finally 再异常处理时提供 finally 块来执行M清除操作。如果抛Z个异常,那么相匹配的 catch 子句׃(x)执行Q然后控制就?x)进?finally 块(如果有的话)(j)?
finalize Ҏ(gu)名。Java 技术允怋?finalize() Ҏ(gu)在垃圾收集器对象从内存中清除出M前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对q个对象调用的。它是在 Object cM定义的,因此所有的c都l承?jin)它。子c覆?finalize() Ҏ(gu)以整理系l资源或者执行其他清理工作。finalize() Ҏ(gu)是在垃圾攉器删除对象之前对q个对象调用的?
W二QAnonymous Inner Class (匿名内部c? 是否可以extends(l承)其它c,是否可以implements(实现)interface(接口)?
匿名的内部类是没有名字的内部cR不能extends(l承) 其它c,但一个内部类可以作ؓ(f)一个接口,由另一个内部类实现?
W三QStatic Nested Class ?Inner Class的不同,说得多好
Nested Class Q一般是C++的说法)(j)QInner Class (一般是JAVA的说?。Java内部cMC++嵌套cL大的不同在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
注:(x) ?rn)态内部类QInner ClassQ意味着1创徏一个static内部cȝ对象Q不需要一个外部类对象Q?不能从一个static内部cȝ一个对象访问一个外部类对象
W四Q?amp;?amp;&的区别?/font>
&是位q算W?amp;&是布?yu)(dng)逻辑q算W?
W五QHashMap和Hashtable的区别?/font>
都属于Map接口的类Q实C(jin)惟一键映到特定的g?
HashMap cL有分cL者排序。它允许一?null 键和多个 null 倹{?
Hashtable cM?HashMapQ但是不允许 null 键和 null 倹{它也比 HashMap 慢,因ؓ(f)它是同步的?
W六QCollection ?Collections的区别?/font>
Collections是个java.util下的c,它包含有各种有关集合操作的静(rn)态方法?
Collection是个java.util下的接口Q它是各U集合结构的父接口?
W七Q什么时候用assert?
断言是一个包含布?yu)(dng)表辑ּ的语句,在执行这个语句时假定该表辑ּ?true。如果表辑ּ计算?falseQ那么系l会(x)报告一?Assertionerror。它用于调试目的Q?
assert(a > 0); // throws an Assertionerror if a <= 0
断言可以有两UŞ式:(x)
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应该L产生一个布?yu)(dng)倹{?
Expression2 可以是得Z个值的L表达式。这个值用于生成显C更多调试信息的 String 消息?
断言在默认情况下是禁用的。要在编译时启用断言Q需要?source 1.4 标记Q?
javac -source 1.4 Test.java
要在q行时启用断aQ可使用 -enableassertions 或?-ea 标记?
要在q行旉择用断言Q可使用 -da 或?-disableassertions 标记?
要系l类中启用断aQ可使用 -esa 或?-dsa 标记。还可以在包的基上启用或者禁用断a?
可以在预计正常情况下不会(x)到达的Q何位|上攄断言。断a可以用于验证传递给U有Ҏ(gu)的参数。不q,断言不应该用于验证传递给公有Ҏ(gu)的参敎ͼ因ؓ(f)不管是否启用?jin)断aQ公有方法都必须(g)查其参数。不q,既可以在公有Ҏ(gu)中,也可以在非公有方法中利用断言试后置条g。另外,断言不应该以M方式改变E序的状态?
W八QGC是什? Z么要有GC? (基础)?/font>
GC是垃圾收集器。Java E序员不用担?j)内存管理,因?f)垃圾攉器会(x)自动q行理。要h垃圾攉Q可以调用下面的Ҏ(gu)之一Q?
System.gc()
Runtime.getRuntime().gc()
W九(ji)QString s = new String("xyz");创徏?jin)几个String Object?
两个对象Q一个是“xyx”,一个是指向“xyx”的引用对象s?
W十QMath.round(11.5){於多少? Math.round(-11.5){於多少?
Math.round(11.5)q回QlongQ?2QMath.round(-11.5)q回QlongQ?11;
W十一Qshort s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错Qs1是short型,s1+1是int?不能昑ּ转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确?
W十二,sleep() ?wait() 有什么区? 搞线E的最?
sleep()Ҏ(gu)是ɾU程停止一D|间的Ҏ(gu)。在sleep 旉间隔期满后,U程不一定立x复执行。这是因为在那个时刻Q其它线E可能正在运行而且没有被调度ؓ(f)攑ּ执行Q除?a)“醒来”的线E具有更高的优先U?
(b)正在q行的线E因为其它原因而阻塞?
wait()是线E交互时Q如果线E对一个同步对象x 发出一个wait()调用Q该U程?x)暂停执行,被调对象q入{待状态,直到被唤醒或{待旉到?
W十三,Java有没有goto?
Goto java中的保留字,现在没有在java中用?
W十四,数组有没有length()q个Ҏ(gu)? String有没有length()q个Ҏ(gu)Q?/font>
数组没有length()q个Ҏ(gu)Q有length的属性?
String有有length()q个Ҏ(gu)?
W十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的cd?
Ҏ(gu)的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父cM子类之间多态性的一U表玎ͼ重蝲Overloading是一个类中多态性的一U表现。如果在子类中定义某Ҏ(gu)与其父类有相同的名称和参敎ͼ我们说该Ҏ(gu)被重?(Overriding)。子cȝ对象使用q个Ҏ(gu)Ӟ调用子cM的定义,对它而言Q父cM的定义如同被“屏蔽”?jin)。如果在一个类中定义了(jin)多个同名的方法,它们或有不同的参C数或有不同的参数cdQ则UCؓ(f)Ҏ(gu)的重?Overloading)。Overloaded的方法是可以改变q回值的cd?
W十六,Set里的元素是不能重复的Q那么用什么方法来区分重复与否? 是用==q是equals()? 它们有何区别?
Set里的元素是不能重复的Q那么用iterator()Ҏ(gu)来区分重复与否。equals()是判M个Set是否相等?
equals()?=Ҏ(gu)军_引用值是否指向同一对象equals()在类中被覆盖Qؓ(f)的是当两个分ȝ对象的内容和cd盔R的话Q返回真倹{?
W十七,l我一个你最常见到的runtime exception?/font>
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException 190-802 000-834 000-861 117-102 117-301 190-721
W十八,error和exception有什么区?
error 表示恢复不是不可能但很困隄情况下的一U严重问题。比如说内存溢出。不可能指望E序能处理这L(fng)情况?
exception 表示一U设计或实现问题。也是_(d)它表C如果程序运行正常,从不?x)发生的情况?
W十?ji),List, Set, Map是否l承自Collection接口?
ListQSet?
Map不是
W二十,abstract class和interface有什么区?
声明Ҏ(gu)的存在而不d现它的类被叫做抽象类Qabstract classQ,它用于要创徏一个体现某些基本行为的c,qؓ(f)该类声明Ҏ(gu)Q但不能在该cM实现该类的情c(din)不能创建abstract cȝ实例。然而可以创Z个变量,其类型是一个抽象类Qƈ让它指向具体子类的一个实例。不能有抽象构造函数或抽象?rn)态方法。Abstract cȝ子类为它们父cM的所有抽象方法提供实玎ͼ否则它们也是抽象cMؓ(f)。取而代之,在子cM实现该方法。知道其行ؓ(f)的其它类可以在类中实现这些方法?
接口QinterfaceQ是抽象cȝ变体。在接口中,所有方法都是抽象的。多l承性可通过实现q样的接口而获得。接口中的所有方法都是抽象的Q没有一个有E序体。接口只可以定义static final成员变量。接口的实现与子cȝ|除了(jin)该实现类不能从接口定义中l承行ؓ(f)。当cd现特D接口时Q它定义Q即程序体l予Q所有这U接口的Ҏ(gu)。然后,它可以在实现?jin)该接口的类的Q何对象上调用接口的方法。由于有抽象c,它允怋用接口名作ؓ(f)引用变量的类型。通常的动态联~将生效。引用可以{换到接口cd或从接口cd转换Qinstanceof q算W可以用来决定某对象的类是否实现?jin)接口?
W二十一Qabstract的method是否可同时是static,是否可同时是nativeQ是否可同时是synchronized?
都不?
W二十二Q接口是否可l承接口? 抽象cL否可实现(implements)接口? 抽象cL否可l承实体c?concrete class)?
接口可以l承接口。抽象类可以实现(implements)接口Q抽象类是否可承实体类Q但前提是实体类必须有明的构造函数?
W二十三Q启动一个线E是用run()q是start()?
启动一个线E是调用start()Ҏ(gu)QɾU程所代表的虚拟处理机处于可运行状态,q意味着它可以由JVM调度q执行。这q不意味着U程׃(x)立即q行。run()Ҏ(gu)可以产生必须退出的标志来停止一个线E?
W二十四Q构造器Constructor是否可被override? 构造器Constructor不能被承,因此不能重写OverridingQ但可以被重载Overloading?
W二十五Q是否可以承Stringc?
StringcLfinalcL不可以ѝ?
W二十六Q当一个线E进入一个对象的一个synchronizedҎ(gu)后,其它U程是否可进入此对象的其它方?
不能Q一个对象的一个synchronizedҎ(gu)只能׃个线E访问?
W二十七Qtry {}里有一个return语句Q那么紧跟在q个try后的finally {}里的code?x)不会(x)被执行Q什么时候被执行Q在return前还是后?
?x)执行,在return前执行?
W二十八Q编E题: 用最有效率的Ҏ(gu)出2乘以8{於?
有C背景的程序员特别喜欢问这U问题?
2 << 3
W二十九(ji)Q两个对象值相?x.equals(y) == true)Q但却可有不同的hash codeQ这句话对不?
不对Q有相同的hash code?
W三十,当一个对象被当作参数传递到一个方法后Q此Ҏ(gu)可改变这个对象的属性,q可q回变化后的l果Q那么这里到底是g递还是引用传?
是g递。Java ~程语言只由g递参数。当一个对象实例作Z个参数被传递到Ҏ(gu)中时Q参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变Q但对象的引用是永远不会(x)改变的?
W三十一Qswtich是否能作用在byte上,是否能作用在long上,是否能作用在String?
switchQexpr1Q中Qexpr1是一个整数表辑ּ。因此传递给 switch ?case 语句的参数应该是 int?short?char 或?byte。long,string 都不能作用于swtich?
W三十二Q编E题: 写一个Singleton出来?/font>
Singleton模式主要作用是保证在Java应用E序中,一个类Class只有一个实例存在?
一般Singleton模式通常有几U种形式:
W一UŞ? 定义一个类Q它的构造函Cؓ(f)private的,它有一个static的private的该cd量,在类初始化时实例话,通过一个public的getInstanceҎ(gu)获取对它的引?l而调用其中的Ҏ(gu)?
public class Singleton {
private Singleton(){}
//在自己内部定义自׃个实例,是不是很奇怪?
//注意q是private 只供内部调用
private static Singleton instance = new Singleton();
//q里提供?jin)一个供外部讉K本class的静(rn)态方法,可以直接讉K
public static Singleton getInstance() {
return instance;
}
}
W二UŞ?
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//q个Ҏ(gu)比上面有所改进Q不用每ơ都q行生成对象Q只是第一ơ
//使用时生成实例,提高?jin)效率?
if (instance==null)
instanceQnew Singleton();
return instance; }
}
其他形式:
定义一个类Q它的构造函Cؓ(f)private的,所有方法ؓ(f)static的?
一般认为第一UŞ式要更加安全?
W三十三 Hashtable和HashMap
Hashtablel承自Dictionaryc,而HashMap是Java1.2引进的Map interface的一个实?
HashMap允许null作ؓ(f)一个entry的key或者valueQ而Hashtable不允?
q有是QHashMap把Hashtable的containsҎ(gu)L?jin),?gu)containsvalue和containsKey。因为containsҎ(gu)Ҏ(gu)让h引v?strong>解?
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是Q在
多个U程讉KHashtableӞ不需要自׃ؓ(f)它的Ҏ(gu)实现同步Q而HashMap
必Mؓ(f)之提供外同步?
Hashtable和HashMap采用的hash/rehash法都大概一P所以性能不会(x)有很大的差异?
]]> Java技术与XML常见问题之JAX-RPC http://www.aygfsteel.com/java2java/archive/2007/12/09/166441.htmljava2java java2java Sun, 09 Dec 2007 06:47:00 GMT http://www.aygfsteel.com/java2java/archive/2007/12/09/166441.html http://www.aygfsteel.com/java2java/comments/166441.html http://www.aygfsteel.com/java2java/archive/2007/12/09/166441.html#Feedback 0 http://www.aygfsteel.com/java2java/comments/commentRss/166441.html http://www.aygfsteel.com/java2java/services/trackbacks/166441.html
{? Java API for XML-Based RPCQJAX-RPCQ?Java 技术开发h员用基?XML ?RPC 功能构徏 Web 应用E序?Web 服务Q此功能遵@ SOAPQ简单对象访问协议,Simple Object Access ProtocolQ?.1 规范?br />
问题. JAX-RPC 如何使用 SOAP Q?
{? 请参?JSR-101 ?
问题. 什么是 RPCQ?
{? RPC 代表q程q程调用Qremote procedure callQ,它是能客户端执行其他系l中E序的一U机制。RPC 机制常用于分布式客户?服务器模型。服务器服务定义ؓ(f)一pdq程Q可供远E客L(fng)调用?br />
问题. XML 如何?RPC 相关联?
{? q程q程调用是由Z XML 的协议来表示的,比如 SOAP 。除?jin)定义信结构和~码规则之外QSOAP 规范q定义了(jin)q程q程调用和响应的表示惯例?br />
问题. 对于 Web 服务QJAX-RPC 必须做哪些工作?
{? 一个基?XML ?RPC 服务器应用程序可以定义、描q和导出一个的 Web 服务Q如同基?RPC 的服务一栗WSDLQWeb 服务描述语言QW(xu)eb Service Description Language HP0-922 Q定义了(jin)一U?XML 格式Q将服务描述Zl消息操作的端点集合。通过使用 JAX-RPC API Q开发h员可以用 WSDL 描述来实现客L(fng)和服务?br />
问题. 客户端与 JAX-RPC 服务之间采用什么交互模式?
{? 有以下三U不同的模式Q?br />
1. 同步h-响应QSynchronous Request-ResponseQ:(x)客户端调用远E程序ƈdQ直到它收到一个返回值或异常?
2. 单向 RPCQOne-Way RPCQ:(x)客户端调用远E过E,但自w不d或等待直到收C个返回倹{JAX-RPC 客户端的q行时系l可能会(x)抛出异常?
3. 非阻?RPC 调用QNon-Blocking RPC Invocation 190-823 1Y0-614 Q:(x)客户端调用远E过E,ql处理同一个线E的内容而不{待q回倹{此后,客户端通过d来接受返回值或轮询q回|以此来处理远E方法的q回?
问题. q程Ҏ(gu)调用或响应能否传送服务内容信息?
{? 是的。例如它可能?x)传送唯一的事务标识符或数字签名?br />
问题. Z?xrpcc 没有生成 WSDL 文gQ?
{? xrpcc 工具实际上可以生?WSDL 文gQ但׃设计pQ如果不指定 –keep 选项Q该文g?x)同源文件一赯删除。?zhn)可以使?–keep 选项?xrpcc 不删?WSDL ?.java 源文件。如果?zhn)使?–s sourcepath 选项Q所有源文g被攄?sourcepath 目录中,然后(zhn)可以很Ҏ(gu)地删除它们?WSDL 文g被攄在当前目录或?–d 选项指定的目录中?
]]> Java囑փ处理技巧四?/title> http://www.aygfsteel.com/java2java/archive/2007/11/26/163145.htmljava2java java2java Mon, 26 Nov 2007 05:47:00 GMT http://www.aygfsteel.com/java2java/archive/2007/11/26/163145.html http://www.aygfsteel.com/java2java/comments/163145.html http://www.aygfsteel.com/java2java/archive/2007/11/26/163145.html#Feedback 1 http://www.aygfsteel.com/java2java/comments/commentRss/163145.html http://www.aygfsteel.com/java2java/services/trackbacks/163145.html 下面代码中用到的sourceImage是一个已l存在的Image对象
囑փ剪切
对于一个已l存在的Image对象Q要得到它的一个局部图像,可以使用下面的步骤:(x)
//import java.awt.*;
//import java.awt.image.*;
Image croppedImage;
ImageFilter cropFilter;
CropFilter =new CropImageFilter(25,30,75,75); //四个参数分别为图像v点坐标和宽高Q即CropImageFilter(int x,int y,int width,int height)Q详l情况请参考API
CroppedImage= Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(sourceImage.getSource(),cropFilter));
如果是在Component的子cM使用Q可以将上面的Toolkit.getDefaultToolkit().L。FilteredImageSource是一个ImageProducer对象?
囑փ~放
对于一个已l存在的Image对象Q得到它的一个羃攄Image对象可以使用Image的getScaledInstanceҎ(gu)Q?
Image scaledImage=sourceImage. getScaledInstance(100,100, Image.SCALE_DEFAULT); //得到一?00X100的图?
Image doubledImage=sourceImage. getScaledInstance(sourceImage.getWidth(this)*2,sourceImage.getHeight(this)*2, Image.SCALE_DEFAULT); //得到一个放大两倍的囑փ,q个E序一般在一个swing的组件中使用Q而类Jcomponent实现?jin)图像观察者接口ImageObserverQ所有可以用this?
//其它情况请参考API
灰度变换
下面的程序用三U方法对一个彩色图像进行灰度变换,变换的效果都不一栗一般而言Q灰度变换的法是将象素的三个颜色分量用R*0.3+G*0.59QB*0.11得到灰度|然后之赋值给U绿蓝,q样颜色取得的效果就是灰度的。另一U就是取U绿蓝三色中的最大g为灰度倹{java核心(j)包也有一U算法,但是没有看源代码Q不知道具体法是什么样的,效果和上qC同?
GrayFilter.java
@author :tiffanyin
email:cherami@163.netimport java.awt.image.*;
public class GrayFilter extends RGBImageFilter {
int modelStyle;
public GrayFilter() {
modelStyle=GrayModel.CS_MAX;
canFilterIndexColorModel=true;
}
public GrayFilter(int style) {
modelStyle=style;
canFilterIndexColorModel=true;
}
public void setColorModel(ColorModel cm) {
if (modelStyle==GrayModel
else if (modelStyle==GrayModel
}
public int filterRGB(int x,int y,int pixel) {
return pixel;
}
}
GrayFilter.java
@author:tiffanyin
email:cherami@163.net
import java.awt.image.*;
public class GrayModel extends ColorModel {
public static final int CS_MAX=0;
public static final int CS_FLOAT=1;
ColorModel sourceModel;
int modelStyle;
public GrayModel(ColorModel sourceModel) {
super(sourceModel.getPixelSize());
this.sourceModel=sourceModel;
modelStyle=0;
}
public GrayModel(ColorModel sourceModel,int style) {
super(sourceModel.getPixelSize());
this.sourceModel=sourceModel;
modelStyle=style;
}
public void setGrayStyle(int style) {
modelStyle=style;
}
protected int getGrayLevel(int pixel) {
if (modelStyle==CS_MAX) {
return Math.max(sourceModel.getRed(pixel),Math.max(sourceModel.getGreen(pixel),sourceModel.getBlue(pixel)));
}
else if (modelStyle==CS_FLOAT){
return (int)(sourceModel.getRed(pixel)*0.3+sourceModel.getGreen(pixel)*0.59+sourceModel.getBlue(pixel)*0.11);
}
else {
return 0;
}
}
public int getAlpha(int pixel) {
return sourceModel.getAlpha(pixel);
}
public int getRed(int pixel) {
return getGrayLevel(pixel);
}
public int getGreen(int pixel) {
return getGrayLevel(pixel);
}
public int getBlue(int pixel) {
return getGrayLevel(pixel);
}
public int getRGB(int pixel) {
int gray=getGrayLevel(pixel);
return (getAlpha(pixel)<<24)+(gray<<16)+(gray<<8)+gray;
}
}
如果你有自己的算法或者想取得Ҏ(gu)的效果,你可以修改类GrayModel的方法getGrayLevel()?
色彩变换
Ҏ(gu)上面的原理,我们也可以实现色彩变换,q样的效果就很多?jin)。下面是一个反转变换的例子Q?
/* ReverseColorModel.java*/
@author: tiffanyin
/*email:cherami@163.net*/
import java.awt.image.*;
public class ReverseColorModel extends ColorModel {
ColorModel sourceModel;
public ReverseColorModel(ColorModel sourceModel) {
super(sourceModel.getPixelSize());
this.sourceModel=sourceModel;
}
public int getAlpha(int pixel) {
return sourceModel.getAlpha(pixel);
}
public int getRed(int pixel) {
return ~sourceModel.getRed(pixel);
}
public int getGreen(int pixel) {
return ~sourceModel.getGreen(pixel);
}
public int getBlue(int pixel) {
return ~sourceModel.getBlue(pixel);
}
public int getRGB(int pixel) {
return (getAlpha(pixel)<<24)+(getRed(pixel)<<16)+(getGreen(pixel)<<8)+getBlue(pixel);
}
}
/* ReverseColorModel.java*/
/*@author:tiffanyin */
/*email:cherami@163.net*/
import java.awt.image.*;
public class ReverseFilter extends RGBImageFilter {
public ReverseFilter() {
canFilterIndexColorModel=true;
}
public void setColorModel(ColorModel cm) {
substituteColorModel(cm,new ReverseColorModel(cm));
}
public int filterRGB(int x,int y,int pixel) {
return pixel;
}
}
要想取得自己的效果,需要修改ReverseColorModel.java中的三个Ҏ(gu)QgetRed、getGreen、getBlue?
下面是上面的效果的一个ȝ演示E序?
/*GrayImage.java*/
/*@author : tiffanyin */
/*email:cherami@163.net*/
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.awt.color.*;
public class GrayImage extends JFrame{
Image source,gray,gray3,clip,bigimg;
BufferedImage bimg,gray2;
GrayFilter filter,filter2;
ImageIcon ii;
ImageFilter cropFilter;
int iw,ih;
public GrayImage() {
ii=new ImageIcon(\"images/11.gif\");
source=ii.getImage();
iw=source.getWidth(this);
ih=source.getHeight(this);
filter=new GrayFilter();
filter2=new GrayFilter(GrayModel.CS_FLOAT);
gray=createImage(new FilteredImageSource(source.getSource(),filter));
gray3=createImage(new FilteredImageSource(source.getSource(),filter2));
cropFilter=new CropImageFilter(5,5,iw-5,ih-5);
clip=createImage(new FilteredImageSource(source.getSource(),cropFilter));
bigimg=source.getScaledInstance(iw*2,ih*2,Image.SCALE_DEFAULT);
MediaTracker mt=new MediaTracker(this);
mt.addImage(gray,0);
try {
mt.waitForAll();
} catch (Exception e) {
}
}
public void paint(Graphics g) {
Graphics2D g2=(Graphics2D)g;
bimg=new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);
Graphics2D srcG = bimg.createGraphics();
RenderingHints rhs = g2.getRenderingHints();
srcG.setRenderingHints(rhs);
srcG.drawImage(source, 0, 0, null);
ColorSpace graySpace=ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp op=new ColorConvertOp(graySpace,rhs);
gray2=new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);
op.filter(bimg,gray2);
g2.drawImage(source,40,40,this);
g2.drawImage(gray,80,40,this);
g2.drawImage(gray2,120,40,this);
g2.drawImage(gray3,160,40,this);
g2.drawImage(clip,40,80,this);
g2.drawImage(bigimg,80,80,this);
}
public void update(Graphics g) {
paint(g);
}
public static void main(String args[]) {
GrayImage m=new GrayImage();
m.setSize(400,400);
m.setVisible(true);
}
}
]]>Java学习(fn)q程中应该理解的一些重点内?/title> http://www.aygfsteel.com/java2java/archive/2007/11/19/161554.htmljava2java java2java Mon, 19 Nov 2007 03:34:00 GMT http://www.aygfsteel.com/java2java/archive/2007/11/19/161554.html http://www.aygfsteel.com/java2java/comments/161554.html http://www.aygfsteel.com/java2java/archive/2007/11/19/161554.html#Feedback 4 http://www.aygfsteel.com/java2java/comments/commentRss/161554.html http://www.aygfsteel.com/java2java/services/trackbacks/161554.html
虽然是面向对象的语言Q但是在使用上数值类型还是必不可的Q如果在C的学?fn)中已经掌握了(jin)C的数D和转换规则Q那我想q里应该没有什么问题,只有两点需要注意:(x)1?4.0q样的Q点常量被认ؓ(f)是double型,只有加上f后缀才是float型的Q?、整数常量说h被认为是int型,但是在编译时Q可以认为编译器其看作能表C数的最数|因此byte b = 100;不会(x)报错?
引用cdQ?
其实所谓引用类型在C++中已有体玎ͼ是传参的时候有一U引用类型,从C来考虑Q它?yu)是一个指针,只不q,我们不能对它q行指针上的操作。所以这里的重点是:(x)1、Java里所有的对象都是在堆中生成的Q所以需要类似指针的东西指向它,那就是引用;2、我们通过引用操作的是引用所指向的对象,除了(jin)赋值操作外Q应该就没有什么操作是针对引用本n的了(jin)Q这一Ҏ(gu)C的指针与Java的引用区别所在?
cd对象Q?
q是一个大块,有很多东西,不展开说了(jin)Q就说几个重点:(x)1、类Ҏ(gu)、类属性与成员Ҏ(gu)、成员属性在加蝲、初始化、用上的异同;2、在构造函CQthis()和super()的用法;3、子cȝ加蝲q程、初始化q程和构造过E;4、方法的重蝲和覆写;5、覆写所引出的多态问题?注意Q多态之应用在方法上Q对属性没有作?
函数调用的参C递:(x)
如果把引用类型所记录的地址|q作是引用cd变量的值的话,那么QJava的所有方法调用的时候,都是采用的g??数值类型传数|引用cd传地址?
IO:(x)
与C比v来,Java的输入输出,其是输入是非常ȝ(ch)的,也许是因为出于面向对象的考虑吧?不知道。Java提供?jin)很多的IO,但是我们q不必将各种IO都搞清楚Q我们只需要了(jin)解字节流与字W流各有什么功能,字符是如何在字节流之上构造的Q几乎所有的字符构造的时候都是徏立在一个已有的字节的基础上的Qƈ且它的这U设计得我们可以像套管子一PIO一节一节套hQ直到得到我们想使用的IO对象(例:(x)BufferedReader的?。在我们以后使用的时候,我们可以再去查APIQ主要要看的几个cLQFileReader、FileWriter、BufferedReaderQ再配合上System.out对象Q对于文本的输入、输出来_(d)p够用?jin),其他的没有必要看那么多,用的时候再看了(jin)?
容器Q?
个h认ؓ(f)Q这是Java~程的一大利器,常用的类是:(x)ArrayList(List)作ؓ(f)可变长数l、HashMap(Map)用来建立查找表,Set很少用,只在HashMap的用中q带用过一些。通过对这两个cȝ熟?zhn)Q能够将List、Set和Map三大cȝ基本用法掌握。另外它的几个辅助类要掌握:(x)Iterator和Collections。CollectionscL供容器的一些通用工具Q比如排序。而说到排序,q扯出?jin)比较器QComparator。能够熟l用Comparatorc,可以让你q需求和自己的类定制排序Ҏ(gu)?
AWT和SWINGQ?
个h认ؓ(f)QJava在图形界面的制作上有着非常好的装性,我以前曾l试囑֭qMFCQMFC在生成图形界面的时候会(x)帮助你生成一些代码,然后让你在这些代码的指定位置d代码以实现功能,我这个h有个?fn)惯Q如果让我看C(jin)一些东西,那么我不搞清除ؓ(f)什么这么写Q就不会(x)往下走Q看到那许多代码Q自然就惛_清楚那些是什么,l果引出来好多知识,后来我才知道其中有些是调用WinAPIQ结果我到现在还是不?x)用MFC。这里ƈ不是贬低MFCQ我怿MFC有其qh之处Q只不过个h认ؓ(f)它的装性做得不好,暴露Z(jin)太多东西Q也许能够提高灵zL,不过Q可能我跟它无缘:(。在q方面Java做得不错,l你一个类Q你用就是了(jin)Q它?yu)图形界面的低层实现隐藏的很好,其作?f)一个对象给你,而你只需要在q个对象上修修改改,挺方便的?
作ؓ(f)初学者,我觉得AWT的重点在于它的几个Listener的用法,q有布局格式Q然后就是那许多的Component的用处和用法?
不过Q因为我个h使用的原因,所以至今AWT和SWING都用得很,所以这斚w也就不便多说?jin),抱歉。写q些q不是告诉大家怎么解决问题Q因为每一个都有很多可写,只是希望能给初学者一点参考,希望能够帮助初学者们有的攄地看? ( 转蝲920-432 920-553 )
]]>
վ֩ģ壺
лͨ |
|
ԭ |
ʹ |
ƽ |
|
|
̩ |
|
ī |
żҽ |
غ |
ֽ |
ͬ |
|
ɽ |
Ʊ |
|
|
|
|
˳ |
ȳ |
̶ |
|
|
|
|
|
̫ |
|
|
Ͽ |
® |
ͨ |
ӱ |
ƽ |
פ |
˷ |
|
|