??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品无AMM毛片,亚洲VA中文字幕无码毛片,亚洲一区二区影院 http://www.tkk7.com/java2java/世界Java zh-cn Fri, 09 May 2025 23:54:06 GMT Fri, 09 May 2025 23:54:06 GMT 60 JAVAq行时的产间错误 http://www.tkk7.com/java2java/archive/2008/03/01/183079.htmljava2java java2java Sat, 01 Mar 2008 01:55:00 GMT http://www.tkk7.com/java2java/archive/2008/03/01/183079.html http://www.tkk7.com/java2java/comments/183079.html http://www.tkk7.com/java2java/archive/2008/03/01/183079.html#Feedback 1 http://www.tkk7.com/java2java/comments/commentRss/183079.html http://www.tkk7.com/java2java/services/trackbacks/183079.html 1.错误提示内容QCan‘t find class HelloworldApp
解释Q(当键?u>java HelloWorldApp时发生该错误。)
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ƈ查文件名的大写?/p>
2.错误提示内容QIn class HelloWorldAppQmain must be public and static
解释Q如果mainQ)Ҏ的左侧缺static或publicQ会发生q个错误。前面已l解释过对mainQ)Ҏ前面的修饰符有特D的要求?/p>
3.文g中含有的cM数错?/p>
解释Q按照Java规则Q在一个源文g中最多只能定义一个公有类Q否则会发生q行旉误。如果一个应用系l中有多个公有类Q则要把它们分别攑֜各自不同的文件中。文件中非公有类的个C限?/p>
4.层次错误
解释Q一个。java源文件可以含有三?#8220;层”元素Q这三个元素是:
Q?Q一个包说明Q即package语句Q包说明是可选的?/p>
Q?QQ意多个引入语句,即import语句?/p>
Q?Q类和接口说明?/p>
q些语句必须按一定的ơ序出现Q即Q引入语句必d现在所有的c说明之前,如果使用了包说明Q则它必d现在c说明和引入语句之前?/p>
例如Q下面是正确的语句序列:
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时发生该错误。)
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ƈ查文件名的大写?/p>
2.错误提示内容QIn class HelloWorldAppQmain must be public and static
解释Q如果mainQ)Ҏ的左侧缺static或publicQ会发生q个错误。前面已l解释过对mainQ)Ҏ前面的修饰符有特D的要求?/p>
3.文g中含有的cM数错?/p>
解释Q按照Java规则Q在一个源文g中最多只能定义一个公有类Q否则会发生q行旉误。如果一个应用系l中有多个公有类Q则要把它们分别攑֜各自不同的文件中。文件中非公有类的个C限?/p>
4.层次错误
解释Q一个。java源文件可以含有三?#8220;层”元素Q这三个元素是:
Q?Q一个包说明Q即package语句Q包说明是可选的?/p>
Q?QQ意多个引入语句,即import语句?a >HP0-645 HP0-661
Q?Q类和接口说明?/p>
q些语句必须按一定的ơ序出现Q即Q引入语句必d现在所有的c说明之前,如果使用了包说明Q则它必d现在c说明和引入语句之前?/p>
例如Q下面是正确的语句序列:
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.tkk7.com/java2java/archive/2008/01/10/174221.htmljava2java java2java Thu, 10 Jan 2008 03:35:00 GMT http://www.tkk7.com/java2java/archive/2008/01/10/174221.html http://www.tkk7.com/java2java/comments/174221.html http://www.tkk7.com/java2java/archive/2008/01/10/174221.html#Feedback 0 http://www.tkk7.com/java2java/comments/commentRss/174221.html http://www.tkk7.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的当前\?/p>
3。取出jdk所在的bin目录
//得到当前用户路径Q执行\?System.getProperty(”user.dir”)
其中user.dir是一个参敎ͼ更多参数Lq里
二、jsp/servlet 中的取\?/p>
以前我们常用getRealPath(),不过q个Ҏ已经不推荐用了。但我们可以使用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删除) http://www.tkk7.com/java2java/archive/2008/01/10/174209.htmljava2java java2java Thu, 10 Jan 2008 02:54:00 GMT http://www.tkk7.com/java2java/archive/2008/01/10/174209.html http://www.tkk7.com/java2java/comments/174209.html http://www.tkk7.com/java2java/archive/2008/01/10/174209.html#Feedback 0 http://www.tkk7.com/java2java/comments/commentRss/174209.html http://www.tkk7.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.tkk7.com/java2java/archive/2008/01/07/173249.htmljava2java java2java Mon, 07 Jan 2008 02:11:00 GMT http://www.tkk7.com/java2java/archive/2008/01/07/173249.html http://www.tkk7.com/java2java/comments/173249.html http://www.tkk7.com/java2java/archive/2008/01/07/173249.html#Feedback 2 http://www.tkk7.com/java2java/comments/commentRss/173249.html http://www.tkk7.com/java2java/services/trackbacks/173249.html
JavaE序?
概述Q本评使学员掌握如何用标准Java Development kitQJDKQ开发应用程序和applets。在本课E中您将学会Java语言的语法。如何用Java来创建图形用h口(GUIQ,事g处理机制Q例外处理,通过设计与开发各UJavaE序来获得实际的~程l验。您也将学到文g输入/输出QI/OQ,多线E和|络的知识?
目标Q本评完成后,您将具备以下能力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包括方法重载,Ҏ覆盖Q抽象类Q接口,finalQstatic和访问控Ӟ实现文g的输入输出(I/OQ?
使用Java语言内在的线E模式来控制多线E?
使用Java的Sockets机制q行|络通信
预备知识Q熟悉DOS操作Q用qWINDOWSq能用C或C++~程?
Java开发员
概述Q本评提供给学员设计资料服务器应用法的实际设计方法,学员用Java声音、图形、网l通讯{接口,~写与服务器相连接的Java应用E度Q通过本课E学员还能学到如何在JavaE序中调用本机用其它计算a~写的程?117-102 117-301 190-721 ?
本课E是为熟悉Java语言l构及语法的E序员而设立的。以便他们能在本评中获得开发复杂的、品的Java应用技术?
目标Q在学完本课E后Q学员将能够Q?
设计和开发Java GUI
设计和开发动画Java应用E序
掌握了Java|络~程技?
懂得了JDBC-API的基本结?
知道UNIX与Windows NT互连有哪些技术问?
能够解释在JavaE序中调用其它语a所~写的程序的Ҏ与步?
Sun认证JavaE序员考试QJDK1.1Q由一门考试l成Q可以用来测试考生对Java语言的掌握程度。考生可以使用考试大纲Qexam objectivesQ作为准备考试的工兗?
Z保证Sun客户使用的是Sun的最新技术,Sun Educational Services已经把Sun认证JavaE序员考试更新为JDK1.1?
考试l则
考试名称Q?
The Sun Certified Java Programmer for JDK 1.1
考试P
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学习之\Q不走弯路,是捷径 http://www.tkk7.com/java2java/archive/2008/01/07/173248.htmljava2java java2java Mon, 07 Jan 2008 02:09:00 GMT http://www.tkk7.com/java2java/archive/2008/01/07/173248.html http://www.tkk7.com/java2java/comments/173248.html http://www.tkk7.com/java2java/archive/2008/01/07/173248.html#Feedback 3 http://www.tkk7.com/java2java/comments/commentRss/173248.html http://www.tkk7.com/java2java/services/trackbacks/173248.html
软g开发之路是充满荆棘与挑战之?也是充满希望之\。JAVA学习也是如此Q没有捷径可走。梦惛_《天龙八部》中虚竹一栯无崖子醍醐灌而轻松获得一甲子功力Q是很不现实的。每天Ԓ天大?天神啊,误l我一本葵花宝典吧"Q殊不知即你获得了葵花宝典Q除了受自宫其n之苦外,你也不一定成得了"东方不|"Q倒是?西方p|"的几率高一炏V?
"不走弯\Q就是捷?Q佛l说的不无道理?
1Q如何学习程序设计?
JAVA是一U^収ͼ也是一U程序设计语aQ如何学好程序设计不仅仅适用于JAVAQ对C++{其他程序设计语a也一L用。有~程高手认ؓQJAVA也好C也好没什么分别,拿来q。ؓ什么他们能辑ֈ如此境界Q我x因ؓ~程语言之间有共通之处,领会了编E的_NQ自然能够做C通百通。如何学习程序设计理所当然也有许多共通的地方?
1.1 培养兴趣
兴趣是能够让你坚持下ȝ动力。如果只是把写程序作生的手段的话Q你会活的很累,也太对不赯׃。多兛_一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但h要是没有了梦惻I你觉得有味道吗?可能像许多深x地农民一P打打dQ喝喝功夫茶Q拜拜胦爷Q每个月有几万十几万甚x多的q帐Q凭I多Z"食利阶层"。你认ؓQ这h味道吗?有空多到一些程序员论坛转{Q你会发玎ͼ他们其实很乐观幽默,时不时会冒出智慧的火花?
1.2 慎选程序设计语a
h入错行Q女怕嫁错郎。初学者选择E序设计语言需要}慎对待。Y件开发不仅仅是掌握一门编E语a了事Q它q需要其他很多方面的背景知识。Y件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落?
如果你对g比较感兴,你可以学习C语言/汇编语言Q进入硬件开发领域。如果你对电信的行业知识及网l比较熟悉,你可以在C/C++{之上多花时_以期q入电信软g开发领域。如果你Ҏ作系l比较熟悉,你可以学习C/Linux{等,为Linux内核开?驱动E序开?嵌入式开发打基础。如果你想介入到应用范围最q泛的应用Y件开发(包括电子商务电子政务pȝQ的话,你可以选择J2EE?NETQ甚至LAMPl合。每个领域要求的背景知识不一栗做应用软g需要对数据库等很熟悉。MQ你需要根据自q特点来选择合适你的编E语a?
1.3 要脚t实?快餐式的学习不可?
先分享一个故事?
有一个小朋友Q他很喜Ƣ研I生物学Q很想知道那些蝴蝶如何从蛹壳里出来,变成蝴蝶便会飞?nbsp; 有一ơ,他走到草原上面看见一个蛹Q便取了回家Q然后看着Q过了几天以后,q个蛹出了一条裂痕,看见里面的蝴蝶开始挣扎,x破蛹壳飞出来?nbsp; q个q程达数时之久Q蝴蝶在蛚w面很辛苦地拼命挣扎,怎么也没法子走出来。这个小孩看着看着不忍心,想不如让我帮帮它吧Q便随手拿v剪刀在蛹上剪开Q蝴蝶破蛹而出?nbsp; 但蝴蝶出来以后,因ؓ膀不够力,变得很臃肿,飞不h?
q个故事l我们的启示是:Ʋ速则不达?
躁是现代h最普遍的心态,能怪谁Q也许是贫穷落后了这么多q的~故Q就像当q的大跃q一P都想大步跨入׃MC会。现在的软g公司、客戗政府、学校、培训机构等{到处I漫着躁之气。就拿笔者比较熟悉的深圳IT培训行业来说吧,居然有的打广告宣U?参加培训Q?00%׃"Q居然报名的学生不少Q简直是藐视天下E序员。社会环境如是,我们不能改变Q只能改变自?闹市中的安宁QI珍c许多初学者C++/JAVA没开始学Q立马用VC/JBuilder,会用VC/JBuilder开发一个Hello WorldE序Q就忙不q的向世界宣告,"我会软g开发了"Q简历上也大a不惭地写?_NVC/JAVA"。结果到软g公司面试时要么被三两下打发走了,要么被驳的体无完肤,无地自容。到处碰壁之后才知道捧v《C++~程思想》《JAVA~程思想》仔l钻研,早知如此何必当初呀?
"你现在讲I简单方便,你以后的路就长了"Q好象也是佛l中的劝戒?
1.4 多实?快实?
彭端淑的《ؓ学一首示子侄》中有穷和尚与富和尚的故事?
从前Q四川边境有两个和尚Q一个IP一个有钱。一天,I和对富和说Q?我打去南v朝圣Q你看怎么P"富和说Q?q里dh几千里远Q你靠什么去呢?"I和说Q?我只要一个水钵,一个饭就够了?富和ؓ隑֜_"几年前我打买条船dP可至今没LQ你q是别去吧!" 一q以后,富和还在ؓU赁船只{wQ穷和尚却已l从南v朝圣回来了?
q个故事可解MؓQQ何事情,一旦考虑好了Q就要马上上路,不要{到准备周全之后Q再d事情。假如事情准备考虑周全了再上\的话Q别人恐怕捷_M。Y件开发是一门工E学U,注重的就是实践,"君子动口不动?对Y件开发h员来讲根本就是错误的Q他们提?动手至上"Q但别害怕,他们大多温文雅Q没有暴力們Q虽然有时候蓬头垢面的一?比尔盖茨"栗有前辈高h认ؓQ学习编E的U诀是:~程、编E、再~程Q笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要{到你完全理解了才动手敲代码Q而是应该在看书的同时敲代码,E序q行的各U情况可以让你更快更牢固的掌握知识点?
1.5 多参考程序代?
E序代码是Y件开发最重要的成果之一Q其中渗透了E序员的思想与灵。许多h被《仙剑奇侠传》中凄美的爱情故事感?悲剧的结局更有一U缺憄。ؓ什么要以悲剧结?据说是因为写《仙剑奇侠传》的E序员失恋而安排了q样的结局Q他把自q感觉融入到游戏中Q却让众多的仙剑qh腕叹息?
多多参考代码例子,对JAVA而言有参考文献[4.3],有APIcȝ源代?JDK安装目录下的src.zip文g)Q也可以研究一些开源的软g或框架?
1.6 加强英文阅读能力
对学习编E来_不要求英? 但不能一点不?。最L像JAVA API文档(参考文献[4.4])q些东西q是要能看懂?q猜带懵都可以;旁边再开启一?金山词霸"。看多了׃来熟l。在学JAVA的同时学习英文,一双雕多好。另外好多Y仉要到英文|站下蝲Q你要能够找到它们,q些是最基本的要求。英语好对你学习有很大的帮助。口语好的话更有Zq入理层,q而可以成为剥削程序员?周扒??
1.7 万不得已才请教别?
W者在ChinaITLab|校的在U辅导系l中解决学生问题时发玎ͼ大部分的问题学生E做思考就可以解决。请教别Z前,你应该先回答如下几个问题?
你是否在google中搜索了问题的解军_法?
你是否查看了JAVA API文档Q?
你是否查找过相关书籍Q?
你是否写代码试q?
如果回答都是"?的话Q而且q没有找到解军_法,再问别h不迟。要知道独立思考的能力对你很重要。要知道E序员的旉是很宝贵的?
1.8 多读好书
书中自有颜如玉。比?盖茨是一个饱ȝ书的人。虽然没有读完大学,但九岁的时候比?盖茨已l读完了所有的癄全书Q所以他_N天文、历双Ӏ地理等{各cdU,可以说比?盖茨不仅是当今世界上金钱的首富,而且也可以称得上是知识的巨富?
W者在l学生上评时候经怼l他们推荐书c,到后来学生实在忍无可忍开始抱怨,"天呐Q这么多书到什么时候才能看完了"Q?学Y件开发,感觉上了D"。这时候,我的回答一般是Q?别着急,什么时候带你们ȝ看我的书房,到现在每月花在技术书c上的钱400元,q在软g开发h员之中还只能够算是中{的"Q学生当场晕倒。(注:q一部分学生是刚学Y件开发的Q?
对于在JAVA开发领域的好书在笔者另外一文章中会专门点评。该文章可作为本文的姊妹?
1.9 使用合适的工具
工欲善其事必先利其器。Y件开发包含各U各LzdQ需求收集分析、徏立用例模型、徏立分析设计模型、编E实现、调试程序、自动化试、持l集成等{,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使Y件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤h的境界就很高了,无招胜有招,手中无剑心中有剑q样的境界几乎不可企及。在W者另外一文章中会专门阐q如何选择合适的工具Q该文章也可作ؓ本文的姊妹篇Q?
2QY件开发学习\U?
两千多年的儒家思想孔孟之道Q中庸的思想透入骨髓Q既不冒q也不保守ƈ非中怹道,而是扑֯学习软g开发的正确路线与规律?
从Y件开发h员的生规划来讲Q我们可以大致分Z个阶D,软g工程?#8594;软g设计?#8594;架构设计师或目理师。不惛_元帅的士兵不是好士兵Q不惛_架构设计师或目理师的E序员也不是好的E序员。我们应该努力往上走。让我们先整理一下开发应用Y仉要学习的主要技术?
AQ基理论知识Q如操作pȝ、编译原理、数据结构与法、计机原理{,它们q不重要。如不想成ؓ计算机科学家的话Q可以采?用到的时候再来学"的原则?
BQ一门编E语aQ现在基本上都是面向对象的语aQJAVA/C++/C#{等。如果做WEB开发的话还要学习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需要补充几点:
1Q.对于A与C要补充的是,我们应该在实践中逐步领悟~程理论与编E思想。新技术虽然不断涌玎ͼ更新速度令hD燎ؕN看花Q但万变不离其宗Q编E理Z~程思想的变化却很慢。掌握了~程理论与编E思想你就会有拨云见日之感。面向对象的思想在目前来讲是相当关键的,是强势技术之一Q在上面需要多投入旉Q给你的回报也会让你惊喜?
2Q.对于数据库来说是独立学习的,q个时机q你来军_吧?
3Q.~程语言作ؓ学习软g开发的ȝQ而其余的作ؓ辅线?
4Q.软g工程师着重于B、C、E?nbsp; DQY件设计师着重于B、C、E?nbsp; D、FQ架构设计师着重于C、F、H?
3Q如何学习JAVA?
3.1 JAVA学习路线
3.1.1 基础语法及JAVA原理
基础语法和JAVA原理是地基,地基不牢靠,犹如沙地上徏摩天大厦Q是相当危险的。学习JAVA也是如此Q必要有扎实的基础Q你才能在J2EE、J2ME领域游刃有余。参加SCJPQSUN公司认证的JAVAE序员)考试不失Z个好ҎQ原因之一是ؓ了对得v你交?200大洋考试费,你会更努力学习,原因之二是SCJP考试能够让你把基打得很牢靠,它要求你跟JDK一L悉JAVA基础知识Q但是你千万不要认ؓ考过了SCJP有多了不vQ就能够获得软g公司的青睐,p够获取高薪,q样的想法也是很危险的。获?真正"的SCJP只能证明你的基础q过得去Q但d际开发还有很长的一D\要走?
3.1.2 OO思想的领?
掌握了基语法和JAVAE序q行原理后,我们可以用JAVA语言实现面向对象的思想了。面向对象,是一U方法学;是独立于语言之外的编E思想;是CBDZlg开发的基础;属于强势技术之一。当以后因工作需要{到别的面向对象语a的时候,你会感到特别的熟悉亲切,学v来像喝凉水这么简单?
使用面向对象的思想q行开发的基本q程是:
●调查收集需求?
●徏立用例模型?
●从用例模型中识别分析类及类与类之间的静态动态关p,从而徏立分析模型?
●细化分析模型到设计模型?
●用具体的技术去实现?
●测试、部|Ӏȝ?
3.1.3 基本API的学?
q行软g开发的时候,q不是什么功能都需要我们去实现Q也是l典名言所说的"不需要重新发明轮?。我们可以利用现成的cR组件、框架来搭徏我们的应用,如SUN公司~写好了众多cdC些底层功能,以及我们下蝲q来的JAR文g中包含的c?我们可以调用cM的方法来完成某些功能或承它。那么这些类中究竟提供了哪些Ҏl我们用?Ҏ的参C数及cd是?cȝ构造器需不需要参敎ͼM可能SUN公司的工E师打国际长途甚至飘z过h告诉你他~写的类该如何用吧。他们只能提供文档给我们查看QJAVA DOC文档Q参考文?.4Q就是这L文档Q它可以说是E序员与E序员交的文档?
基本API指的是实C一些底层功能的c,通用性较强的APIQ如字符串处?输入输出{等。我们又把它成ؓcd。熟悉API的方法一是多查JAVA DOC文档Q参考文?.4Q,二是使用JBuilder/Eclipse{IDE的代码提C功能?
3.1.4 特定API的学?
JAVA介入的领域很q泛Q不同的领域有不同的APIQ没有h熟悉所有的APIQ对一般h而言只是熟悉工作中要用到的API。如果你做界面开发,那么你需要学习Swing/AWT/SWT{APIQ如果你q行|络游戏开发,你需要深入了解网lAPI/多媒体API/2D3D{;如果你做WEB开发,需要熟悉Servlet{API啦。MQ需要根据工作的需要或你的兴趣发展方向去选择学习特定的API?
3.1.5 开发工L用法
在学习基语法与基本的面向对象概念Ӟ从锻Da熟练E度的角度考虑Q我们推荐用的工具是Editplus/JCreator+JDK,q时候不要急于上手JBuilder/Eclipse{集成开发环境,以免q于xIDE的强大功能而分散对JAVA技术本w的注意力。过了这一阶段你就可以开始熟悉IDE了?
E序员日常工作包括很多活动,~辑、编译及构徏、调试、单元测试、版本控制、维持模型与代码同步、文档的更新{等Q几乎每一Ҏ动都有专门的工具Q如果独立用这些工L话,你将会很痛苦Q你需要在堆满工具的Q务栏上不断的切换Q效率很低下Q也很容易出错。在JBuilder、Eclipse{IDE中已l自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等{,甚至可以把UML建模工具也集成进去,又提供了丰富的向导帮助生成框架代码,让我们的开发变得更L。应该说IDE发展的趋势就是集成Y件开发中要用到的几乎所有工兗?
从开发效率的角度考虑Q用IDE是必l之路,也是从一个学生到一个职业程序员转变的里E碑?
JAVA开发用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans{几U;而Eclipse、JBuilder占有的市Z额是最大的。JBuilder在近几年来一直是JAVA集成开发环境中的霸主,它是由备受程序员敬的Borland公司开发,在硝烟I漫的JAVA IDE大战?以其快速的版本更新击|IBM的Visual Age for JAVA{而成׃番伟业。IBM在Visual Age for JAVA上已l无利可图之下,q脆之贡献l开源社区,成ؓEclipse的前w,真所?x花明又一?。ʎ火重生的Eclipse以其开攑ּ的插件扩展机制、免费开源获得广大程序员Q包括几乎所有的骨灰U程序员Q的青睐Q极具发展潜力?
3.1.6 学习软g工程
对小型项目而言Q你可能认ؓ软g工程没太大的必要。随着目的复杂性越来越高,软g工程的必要性才会体现出来。参?软g开发学习\U?节?
3.2学习要点
立的学习\U之后,我们q需要ȝ一下JAVA的学习要点,q些要点在前文多多少提到过Q只是笔者觉得这些地方特别要注意才对它们q行汇总,不要嫌我婆婆妈妈啊?
3.2.1勤查API文档
当程序员~写好某些类Q觉得很有成感,x它A献给各位苦难的同行。这时候你要?javadoc"工具Q包含在JDK中)生成标准的JAVA DOC文档,供同行用。J2SE/J2EE/J2ME的DOC文档是程序员与程序员交流的工P几乎人手一份,除了菜鸟之外。J2SE DOC文档官方下蝲地址Q?a target="_blank">http://java.sun.com/j2se/1.5.0/download.jspQ你可以到google搜烦CHM版本下蝲。也可以在线查看Q?a target="_blank">http://java.sun.com/j2se/1.5.0/docs/api/index.html ?br />
对待DOC文档要像毛主席语录,早上起床念一遍,吃饭睡觉前念一遍?
当需要某功能的时候,你应该先查相应的DOC文档看看有没有现成的实现Q有的话׃必劳费心了直接用就可以了,找不到的时候才考虑自己实现。用步骤一般如下:
●找特定的包Q包一般根据功能组l?
●找需要用类Q类命名规范的话我们q的名字可猜出一二?
●选择构造器Q大多数使用cȝ方式是创建对象?
●选择你需要的Ҏ?
3.2.2 查书/google->写代码测?>查看源代?>h别h
当我们遇到问题的时候该如何解决Q?
q时候不要急着问别人,太简单的问题Q没l过思考的问题Q别Z因此而瞧不v你。可以先找找书,到google中搜一下看看,l大部分问题基本p决了。而像"某些c?Ҏ如何使用的问?QDOC文档是{案。对某些知识Ҏ疑惑是,写代码测试一下,会给你留下深ȝ印象。而有的问题,你可能需要直接看API的源代码验证你的x。万不得已才去请教别人?
3.2.3学习开源Y件的设计思想
JAVA领域有许多源代码开攄工具、组件、框ӞJUnit、ANT、Tomcat、Struts、Spring、Jive论坛、PetStore宠物店等{多如牛毛。这些可是前辈给我们留下的瑰宝呀。入宝山而空手归Q你心甘吗?对这些工兗框架进行分析,领会其中的设计思想Q有朝一日说不定你也能写一个XXX框架什么的Q风光一把。分析开源Y件其实是你提高技术、提高实战能力的便捷Ҏ?
3.2.4 规范的重要?
没有规矩Q不成方圆。这里的规范有两层含义。第一层含义是技术规范,多到http://www.jcp.org 下蝲jsrxxx规范Q多读规范,q是最权威准确最新的教材。第二层含义是编E规范,如果你用了大量的独特算法,富有个性的变量及方法的命名方式Q同Ӟ没给E序作注释,以显CZ的编E功底是多么的深厚。这L代码别h看v来像天书Q要理解谈何ҎQ更不用说维护了Q必然会被无情地扫入垃圾堆。java~码规范到此查看或下?http://java.sun.com/docs/codeconv/Q中文的也有Q啊Q还要问我在哪,请参?.2.2节?
3.2.5 不局限于JAVA
很不q,很幸q,要学习的东西q有很多。不q的是因学的东西太多且多变,没时间陪老婆家h或女朋友Q导致n心疲惫,严重者甚臛_致抑郁症。幸q的是别抢你饭碗l非易事Q他们或她们需要付出很多才能达成心ѝ?
JAVA不要孤立地去学习Q需要综合学习数据结构、OOP、Y件工E、UML、网l编E、数据库技术等知识Q用横向U向的比较联想的方式d习会更有效。如学习JAVA集合的时候找数据l构的书看看Q学JDBC的时候复习数据库技术;采取的依然是"需要的时候再?的原?000-834 000-861 ?
4Q结束语
需要强调的是,学习软g开发确实有一定的隑ֺQ也很辛苦,需要付出很多努力,但千万不要半途而废。本文如果能对一直徘徊在JAVA殿之外的朋友有所帮助的话Q笔者也ƣ慰了。哈哈,怎么听v来老气横秋呀Q没办法Q在电脑的长期辐之下,都快变成老头了。最后奉劝各位程序员其是MME序员,完成工作后赶快远ȝ脑,据《胡播ؕ报》报道,电脑辐射会在白皙的皮肤上面点~一些小黑点Q看h鲜艳无比……
]]> JavaE序的加密和反加?/title> http://www.tkk7.com/java2java/archive/2008/01/03/172532.htmljava2java java2java Thu, 03 Jan 2008 09:51:00 GMT http://www.tkk7.com/java2java/archive/2008/01/03/172532.html http://www.tkk7.com/java2java/comments/172532.html http://www.tkk7.com/java2java/archive/2008/01/03/172532.html#Feedback 5 http://www.tkk7.com/java2java/comments/commentRss/172532.html http://www.tkk7.com/java2java/services/trackbacks/172532.html 首先我们来看看JavaE序的反加密Q也是通常所说的Crackq程Q只有明白了q个q程Q我们才能有效的Ҏ们的E序q行加密?/p>
通常我们得到的JavaE序的Crack包有两种Q一U属于KeyGenQ注册码生成器)、一U属于替换修改;
我们先看W一U,当我们找C个应用程序的KeyGen的时候我们L很佩服那个做出KeyGen的hQ觉得他很厉宻I但是你仔l分析一下,Z么他能做出KeyGen呢?只有
他对q个JavaE序的加密算法了解的非常清楚Q这Uh有哪些呢Q一个是那个公司里面的hQ那不可能,除非内讧Q还又呢Q就是猜惻I反推Q这个可能吗Q呵呵,更不可能Q那q个法从哪里来呢?呵呵Q往往泄漏U密的就是秘密本w?#8230;…回过头来xQJava应用E序怎么知道你输入的注册码是否正呢Q呵呵,那你p从应用程序入?#8230;…
得到的它的加密算法,自然KeyGen׃在话下了……Q但是这也有列外Q如果它是用的公钥秘钥对加密的,没有办法喽Q只能用W二U方法。)
q种办法只适合对付只要一个注册号Q别的什么都不要的情况,l典代表Borland JBuilder & Optimizeit Suite
再看W二U,Z么要用替换修改?我们是修改了那部分呢Q不用想Q肯定是License验证的部分,Z么我们不像上面的Ҏ那样扑֊密算法呢Q原因有两种Q(1Q用上面的办法搞不定;Q?QJavaE序不仅要KeyQ还有其他的License配置Q遇到这U情况,我们只要扑ֈ用于License验证的类Q进行修Ҏ换就行了?/p>
q种办法使用于Q何情况,l典代表BEA WebLogic
l过上面的分析,我们的问题就集中了,关键是怎么扑ֈ用于License验证的部分或加密法的部分,我们需?个工P一个是Sun公司提供的标准JVMQ)Q一个是?br />
的耐心和细心:Q,一个是JadQ经典Java反编译工P?/p>
W一步是定位Q这也是最关键的一步,我们q里以Together For JBuilder EditionZQ启动TogetherQ先看看长什么样子?喔,上来问我要LicenseQOkQ?br />
每关p,退出;扑ֈTogether的启动Bat文gQ找到它的启动命令:java .....QOKQ在Java启动的时候给一个参敎ͼ“ -Xrunhprof:cpu=times”Q保存,在启动,q是?br />
LicenseQ退出,q个时候,我们可以发现Q在q个目录下多了一?#8220;java.hprof.txt”文gQ打开一看,是我要的JVM的Dump文gQ好多内容啊Q没关系Q慢慢看来?/p>
我们可以看见q个文g里面有好多熟悉的东西啊:java.*/com.sun.*/javax.*{等Q但q个不是我们兛_的,我们要的是com.togethersoft.*或者是一些没有包名的zd.d{等。(q里插一句,几乎所有的Java应用E序都会h的,其实h的原理也很简单,我们后面再说。)先找找有没有License有关的,Serach一下,嘿嘿Q果Ӟ474行:com.togethersoft.together.impl.ide.license.LicenseSetup.execute([DashoPro-V2-050200]:Unknown line)QOk上那堆classpath中的Jar包里面找一下吧Q推荐用WinRARQ,扑ֈ了之后用Jad反编译,一看,q个没有hQ但是用了一个zae的类Q这个看名字q道淆过了,先不理它Q再看看下面一句IdeLicenseAccess.setLicense(zae1)QOk接着扑ֈIdeLicenseAccessQ哈哈,p点名堂,所有的License验证都是走的q个c,面向对象的思想不错Q呵呵:Q?/p>
定位定完了,接下来的事情是按猜想的Ҏ修改q两个类Q屏蔽掉LicenseSetup里面executeҎ的实际内容,修改IdeLicenseAccessQ让多有的验证都q回trueQ然后编译,替换Q不要高兴太早,q还没有完呢Q要有责dQ!启动TogetherQ果Ӟq下不要License了,有启动画面,q去了,但是一片灰Ԍ怎么回事Q一看控制台Q一堆错Q没关系Q就怕不出错Q查找根源,q有一个IdeLicenseUtilcd了问题,再反~译Q修改,替换Q这下搞定了。再启动Q测试一下,OK MB7-222 70-210 1Y0-327 ?/p>
pP一个Java应用E序搞定了。看看其实也很简单?/p>
再来说说hQ大家可能都知道没有l过h的Java的Class反编译回来连Ҏ和变量的名字都不会变Q这是什么原因呢Q这pq述到Class文g的结构了Q简单来_Class文gU包含又一个常数池Qconstant poolQ这个里面就存放了变量和Ҏ的名U等一下和Class相关的东西,我们通常所说的h是用一U工hq个常数池里面的东东弄的胡涂一点,q样p骗过反编译器和你Q呵呵:Q这是Z么有时候反~译回来的东西编译不q去的原因?/p>
再回q头来说说JavaE序的加密;从上面的两种Ҏ来看QJavaE序g是没有什么完的办法q行加密的,其实不然Q我们必遵循一些原则,才能有效的保护你的品?/p>
原则一Q尽量用公钥和U钥对进行加密;
原则二,不要在加密验证的部分使用面向对象思想Q)把验证的Ҏ写在E序的各个角落,q标注ؓprivate final voidQ让~译器替你处理成内联ҎQ?br />
原则三,可能的大幅度淆:Q找个好点的h?/p>
]]> Java中的易问题攉 http://www.tkk7.com/java2java/archive/2008/01/03/172530.htmljava2java java2java Thu, 03 Jan 2008 09:50:00 GMT http://www.tkk7.com/java2java/archive/2008/01/03/172530.html http://www.tkk7.com/java2java/comments/172530.html http://www.tkk7.com/java2java/archive/2008/01/03/172530.html#Feedback 1 http://www.tkk7.com/java2java/comments/commentRss/172530.html http://www.tkk7.com/java2java/services/trackbacks/172530.html
W一Qfinal, finally, finalize的区?
final 修饰W(关键字)如果一个类被声明ؓfinalQ意味着它不能再z出新的子c,不能作ؓ父类被ѝ因此一个类不能既被声明?abstract的,又被声明为final的。将变量或方法声明ؓfinalQ?strong>可以保证它们在用中不被改变。被声明为final的变量必d声明时给定初|而在以后的引用中只能dQ不可修攏V被声明为final的方法也同样只能使用Q不能重?
finally 再异常处理时提供 finally 块来执行M清除操作。如果抛Z个异常,那么相匹配的 catch 子句׃执行Q然后控制就会进?finally 块(如果有的话)?
finalize Ҏ名。Java 技术允怋?finalize() Ҏ在垃圾收集器对象从内存中清除出M前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对q个对象调用的。它是在 Object cM定义的,因此所有的c都l承了它。子c覆?finalize() Ҏ以整理系l资源或者执行其他清理工作。finalize() Ҏ是在垃圾攉器删除对象之前对q个对象调用的?
W二QAnonymous Inner Class (匿名内部c? 是否可以extends(l承)其它c,是否可以implements(实现)interface(接口)?
匿名的内部类是没有名字的内部cR不能extends(l承) 其它c,但一个内部类可以作ؓ一个接口,由另一个内部类实现?
W三QStatic Nested Class ?Inner Class的不同,说得多好
Nested Class Q一般是C++的说法)QInner Class (一般是JAVA的说?。Java内部cMC++嵌套cL大的不同在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 静态内部类QInner ClassQ意味着1创徏一个static内部cȝ对象Q不需要一个外部类对象Q?不能从一个static内部cȝ一个对象访问一个外部类对象
W四Q?amp;?amp;&的区别?/font>
&是位q算W?amp;&是布逻辑q算W?
W五QHashMap和Hashtable的区别?/font>
都属于Map接口的类Q实C惟一键映到特定的g?
HashMap cL有分cL者排序。它允许一?null 键和多个 null 倹{?
Hashtable cM?HashMapQ但是不允许 null 键和 null 倹{它也比 HashMap 慢,因ؓ它是同步的?
W六QCollection ?Collections的区别?/font>
Collections是个java.util下的c,它包含有各种有关集合操作的静态方法?
Collection是个java.util下的接口Q它是各U集合结构的父接口?
W七Q什么时候用assert?
断言是一个包含布表辑ּ的语句,在执行这个语句时假定该表辑ּ?true。如果表辑ּ计算?falseQ那么系l会报告一?Assertionerror。它用于调试目的Q?
assert(a > 0); // throws an Assertionerror if a <= 0
断言可以有两UŞ式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应该L产生一个布倹{?
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?
可以在预计正常情况下不会到达的Q何位|上攄断言。断a可以用于验证传递给U有Ҏ的参数。不q,断言不应该用于验证传递给公有Ҏ的参敎ͼ因ؓ不管是否启用了断aQ公有方法都必须查其参数。不q,既可以在公有Ҏ中,也可以在非公有方法中利用断言试后置条g。另外,断言不应该以M方式改变E序的状态?
W八QGC是什? Z么要有GC? (基础)?/font>
GC是垃圾收集器。Java E序员不用担心内存管理,因ؓ垃圾攉器会自动q行理。要h垃圾攉Q可以调用下面的Ҏ之一Q?
System.gc()
Runtime.getRuntime().gc()
W九QString s = new String("xyz");创徏了几个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()Ҏ是ɾU程停止一D|间的Ҏ。在sleep 旉间隔期满后,U程不一定立x复执行。这是因为在那个时刻Q其它线E可能正在运行而且没有被调度ؓ攑ּ执行Q除?a)“醒来”的线E具有更高的优先U?
(b)正在q行的线E因为其它原因而阻塞?
wait()是线E交互时Q如果线E对一个同步对象x 发出一个wait()调用Q该U程会暂停执行,被调对象q入{待状态,直到被唤醒或{待旉到?
W十三,Java有没有goto?
Goto java中的保留字,现在没有在java中用?
W十四,数组有没有length()q个Ҏ? String有没有length()q个ҎQ?/font>
数组没有length()q个ҎQ有length的属性?
String有有length()q个Ҏ?
W十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的cd?
Ҏ的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父cM子类之间多态性的一U表玎ͼ重蝲Overloading是一个类中多态性的一U表现。如果在子类中定义某Ҏ与其父类有相同的名称和参敎ͼ我们说该Ҏ被重?(Overriding)。子cȝ对象使用q个ҎӞ调用子cM的定义,对它而言Q父cM的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参C数或有不同的参数cdQ则UCؓҎ的重?Overloading)。Overloaded的方法是可以改变q回值的cd?
W十六,Set里的元素是不能重复的Q那么用什么方法来区分重复与否? 是用==q是equals()? 它们有何区别?
Set里的元素是不能重复的Q那么用iterator()Ҏ来区分重复与否。equals()是判M个Set是否相等?
equals()?=Ҏ军_引用值是否指向同一对象equals()在类中被覆盖Qؓ的是当两个分ȝ对象的内容和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情况?
exception 表示一U设计或实现问题。也是_它表C如果程序运行正常,从不会发生的情况?
W十九,List, Set, Map是否l承自Collection接口?
ListQSet?
Map不是
W二十,abstract class和interface有什么区?
声明Ҏ的存在而不d现它的类被叫做抽象类Qabstract classQ,它用于要创徏一个体现某些基本行为的c,qؓ该类声明ҎQ但不能在该cM实现该类的情c不能创建abstract cȝ实例。然而可以创Z个变量,其类型是一个抽象类Qƈ让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract cȝ子类为它们父cM的所有抽象方法提供实玎ͼ否则它们也是抽象cMؓ。取而代之,在子cM实现该方法。知道其行ؓ的其它类可以在类中实现这些方法?
接口QinterfaceQ是抽象cȝ变体。在接口中,所有方法都是抽象的。多l承性可通过实现q样的接口而获得。接口中的所有方法都是抽象的Q没有一个有E序体。接口只可以定义static final成员变量。接口的实现与子cȝ|除了该实现类不能从接口定义中l承行ؓ。当cd现特D接口时Q它定义Q即程序体l予Q所有这U接口的Ҏ。然后,它可以在实现了该接口的类的Q何对象上调用接口的方法。由于有抽象c,它允怋用接口名作ؓ引用变量的类型。通常的动态联~将生效。引用可以{换到接口cd或从接口cd转换Qinstanceof q算W可以用来决定某对象的类是否实现了接口?
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()ҎQɾU程所代表的虚拟处理机处于可运行状态,q意味着它可以由JVM调度q执行。这q不意味着U程׃立即q行。run()Ҏ可以产生必须退出的标志来停止一个线E?
W二十四Q构造器Constructor是否可被override? 构造器Constructor不能被承,因此不能重写OverridingQ但可以被重载Overloading?
W二十五Q是否可以承Stringc?
StringcLfinalcL不可以ѝ?
W二十六Q当一个线E进入一个对象的一个synchronizedҎ后,其它U程是否可进入此对象的其它方?
不能Q一个对象的一个synchronizedҎ只能׃个线E访问?
W二十七Qtry {}里有一个return语句Q那么紧跟在q个try后的finally {}里的code会不会被执行Q什么时候被执行Q在return前还是后?
会执行,在return前执行?
W二十八Q编E题: 用最有效率的Ҏ出2乘以8{於?
有C背景的程序员特别喜欢问这U问题?
2 << 3
W二十九Q两个对象值相?x.equals(y) == true)Q但却可有不同的hash codeQ这句话对不?
不对Q有相同的hash code?
W三十,当一个对象被当作参数传递到一个方法后Q此Ҏ可改变这个对象的属性,q可q回变化后的l果Q那么这里到底是g递还是引用传?
是g递。Java ~程语言只由g递参数。当一个对象实例作Z个参数被传递到Ҏ中时Q参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变Q但对象的引用是永远不会改变的?
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ؓprivate的,它有一个static的private的该cd量,在类初始化时实例话,通过一个public的getInstanceҎ获取对它的引?l而调用其中的Ҏ?
public class Singleton {
private Singleton(){}
//在自己内部定义自׃个实例,是不是很奇怪?
//注意q是private 只供内部调用
private static Singleton instance = new Singleton();
//q里提供了一个供外部讉K本class的静态方法,可以直接讉K
public static Singleton getInstance() {
return instance;
}
}
W二UŞ?
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//q个Ҏ比上面有所改进Q不用每ơ都q行生成对象Q只是第一ơ
//使用时生成实例,提高了效率!
if (instance==null)
instanceQnew Singleton();
return instance; }
}
其他形式:
定义一个类Q它的构造函Cؓprivate的,所有方法ؓstatic的?
一般认为第一UŞ式要更加安全?
W三十三 Hashtable和HashMap
Hashtablel承自Dictionaryc,而HashMap是Java1.2引进的Map interface的一个实?
HashMap允许null作ؓ一个entry的key或者valueQ而Hashtable不允?
q有是QHashMap把Hashtable的containsҎL了,Ҏcontainsvalue和containsKey。因为containsҎҎ让h引v?strong>解?
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是Q在
多个U程讉KHashtableӞ不需要自׃ؓ它的Ҏ实现同步Q而HashMap
必Mؓ之提供外同步?
Hashtable和HashMap采用的hash/rehash法都大概一P所以性能不会有很大的差异?
]]> Java技术与XML常见问题之JAX-RPC http://www.tkk7.com/java2java/archive/2007/12/09/166441.htmljava2java java2java Sun, 09 Dec 2007 06:47:00 GMT http://www.tkk7.com/java2java/archive/2007/12/09/166441.html http://www.tkk7.com/java2java/comments/166441.html http://www.tkk7.com/java2java/archive/2007/12/09/166441.html#Feedback 0 http://www.tkk7.com/java2java/comments/commentRss/166441.html http://www.tkk7.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 机制常用于分布式客户?服务器模型。服务器服务定义ؓ一pdq程Q可供远E客L调用?br />
问题. XML 如何?RPC 相关联?
{? q程q程调用是由Z XML 的协议来表示的,比如 SOAP 。除了定义信结构和~码规则之外QSOAP 规范q定义了q程q程调用和响应的表示惯例?br />
问题. 对于 Web 服务QJAX-RPC 必须做哪些工作?
{? 一个基?XML ?RPC 服务器应用程序可以定义、描q和导出一个的 Web 服务Q如同基?RPC 的服务一栗WSDLQWeb 服务描述语言QWeb Service Description Language HP0-922 Q定义了一U?XML 格式Q将服务描述Zl消息操作的端点集合。通过使用 JAX-RPC API Q开发h员可以用 WSDL 描述来实现客L和服务?br />
问题. 客户端与 JAX-RPC 服务之间采用什么交互模式?
{? 有以下三U不同的模式Q?br />
1. 同步h-响应QSynchronous Request-ResponseQ:客户端调用远E程序ƈdQ直到它收到一个返回值或异常?
2. 单向 RPCQOne-Way RPCQ:客户端调用远E过E,但自w不d或等待直到收C个返回倹{JAX-RPC 客户端的q行时系l可能会抛出异常?
3. 非阻?RPC 调用QNon-Blocking RPC Invocation 190-823 1Y0-614 Q:客户端调用远E过E,ql处理同一个线E的内容而不{待q回倹{此后,客户端通过d来接受返回值或轮询q回|以此来处理远E方法的q回?
问题. q程Ҏ调用或响应能否传送服务内容信息?
{? 是的。例如它可能会传送唯一的事务标识符或数字签名?br />
问题. Z?xrpcc 没有生成 WSDL 文gQ?
{? xrpcc 工具实际上可以生?WSDL 文gQ但׃设计pQ如果不指定 –keep 选项Q该文g会同源文件一赯删除。您可以使用 –keep 选项?xrpcc 不删?WSDL ?.java 源文件。如果您使用 –s sourcepath 选项Q所有源文g被攄?sourcepath 目录中,然后您可以很Ҏ地删除它们?WSDL 文g被攄在当前目录或?–d 选项指定的目录中?
]]> Java囑փ处理技巧四?/title> http://www.tkk7.com/java2java/archive/2007/11/26/163145.htmljava2java java2java Mon, 26 Nov 2007 05:47:00 GMT http://www.tkk7.com/java2java/archive/2007/11/26/163145.html http://www.tkk7.com/java2java/comments/163145.html http://www.tkk7.com/java2java/archive/2007/11/26/163145.html#Feedback 1 http://www.tkk7.com/java2java/comments/commentRss/163145.html http://www.tkk7.com/java2java/services/trackbacks/163145.html 下面代码中用到的sourceImage是一个已l存在的Image对象
囑փ剪切
对于一个已l存在的Image对象Q要得到它的一个局部图像,可以使用下面的步骤:
//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Ҏ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实现了图像观察者接口ImageObserverQ所有可以用this?
//其它情况请参考API
灰度变换
下面的程序用三U方法对一个彩色图像进行灰度变换,变换的效果都不一栗一般而言Q灰度变换的法是将象素的三个颜色分量用R*0.3+G*0.59QB*0.11得到灰度|然后之赋值给U绿蓝,q样颜色取得的效果就是灰度的。另一U就是取U绿蓝三色中的最大g为灰度倹{java核心包也有一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;
}
}
如果你有自己的算法或者想取得Ҏ的效果,你可以修改类GrayModel的方法getGrayLevel()?
色彩变换
Ҏ上面的原理,我们也可以实现色彩变换,q样的效果就很多了。下面是一个反转变换的例子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中的三个Ҏ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学习q程中应该理解的一些重点内?/title> http://www.tkk7.com/java2java/archive/2007/11/19/161554.htmljava2java java2java Mon, 19 Nov 2007 03:34:00 GMT http://www.tkk7.com/java2java/archive/2007/11/19/161554.html http://www.tkk7.com/java2java/comments/161554.html http://www.tkk7.com/java2java/archive/2007/11/19/161554.html#Feedback 4 http://www.tkk7.com/java2java/comments/commentRss/161554.html http://www.tkk7.com/java2java/services/trackbacks/161554.html
虽然是面向对象的语言Q但是在使用上数值类型还是必不可的Q如果在C的学习中已经掌握了C的数D和转换规则Q那我想q里应该没有什么问题,只有两点需要注意:1?4.0q样的Q点常量被认ؓ是double型,只有加上f后缀才是float型的Q?、整数常量说h被认为是int型,但是在编译时Q可以认为编译器其看作能表C数的最数|因此byte b = 100;不会报错?
引用cdQ?
其实所谓引用类型在C++中已有体玎ͼ是传参的时候有一U引用类型,从C来考虑Q它是一个指针,只不q,我们不能对它q行指针上的操作。所以这里的重点是:1、Java里所有的对象都是在堆中生成的Q所以需要类似指针的东西指向它,那就是引用;2、我们通过引用操作的是引用所指向的对象,除了赋值操作外Q应该就没有什么操作是针对引用本n的了Q这一ҎC的指针与Java的引用区别所在?
cd对象Q?
q是一个大块,有很多东西,不展开说了Q就说几个重点:1、类Ҏ、类属性与成员Ҏ、成员属性在加蝲、初始化、用上的异同;2、在构造函CQthis()和super()的用法;3、子cȝ加蝲q程、初始化q程和构造过E;4、方法的重蝲和覆写;5、覆写所引出的多态问题?注意Q多态之应用在方法上Q对属性没有作?
函数调用的参C递:
如果把引用类型所记录的地址|q作是引用cd变量的值的话,那么QJava的所有方法调用的时候,都是采用的g??数值类型传数|引用cd传地址?
IO:
与C比v来,Java的输入输出,其是输入是非常ȝ的,也许是因为出于面向对象的考虑吧?不知道。Java提供了很多的IO,但是我们q不必将各种IO都搞清楚Q我们只需要了解字节流与字W流各有什么功能,字符是如何在字节流之上构造的Q几乎所有的字符构造的时候都是徏立在一个已有的字节的基础上的Qƈ且它的这U设计得我们可以像套管子一PIO一节一节套hQ直到得到我们想使用的IO对象(例:BufferedReader的?。在我们以后使用的时候,我们可以再去查APIQ主要要看的几个cLQFileReader、FileWriter、BufferedReaderQ再配合上System.out对象Q对于文本的输入、输出来_p够用了,其他的没有必要看那么多,用的时候再看了?
容器Q?
个h认ؓQ这是Java~程的一大利器,常用的类是:ArrayList(List)作ؓ可变长数l、HashMap(Map)用来建立查找表,Set很少用,只在HashMap的用中q带用过一些。通过对这两个cȝ熟悉Q能够将List、Set和Map三大cȝ基本用法掌握。另外它的几个辅助类要掌握:Iterator和Collections。CollectionscL供容器的一些通用工具Q比如排序。而说到排序,q扯出了比较器QComparator。能够熟l用Comparatorc,可以让你q需求和自己的类定制排序Ҏ?
AWT和SWINGQ?
个h认ؓQJava在图形界面的制作上有着非常好的装性,我以前曾l试囑֭qMFCQMFC在生成图形界面的时候会帮助你生成一些代码,然后让你在这些代码的指定位置d代码以实现功能,我这个h有个习惯Q如果让我看C一些东西,那么我不搞清除ؓ什么这么写Q就不会往下走Q看到那许多代码Q自然就惛_清楚那些是什么,l果引出来好多知识,后来我才知道其中有些是调用WinAPIQ结果我到现在还是不会用MFC。这里ƈ不是贬低MFCQ我怿MFC有其qh之处Q只不过个h认ؓ它的装性做得不好,暴露Z太多东西Q也许能够提高灵zL,不过Q可能我跟它无缘:(。在q方面Java做得不错,l你一个类Q你用就是了Q它图形界面的低层实现隐藏的很好,其作ؓ一个对象给你,而你只需要在q个对象上修修改改,挺方便的?
作ؓ初学者,我觉得AWT的重点在于它的几个Listener的用法,q有布局格式Q然后就是那许多的Component的用处和用法?
不过Q因为我个h使用的原因,所以至今AWT和SWING都用得很,所以这斚w也就不便多说了,抱歉。写q些q不是告诉大家怎么解决问题Q因为每一个都有很多可写,只是希望能给初学者一点参考,希望能够帮助初学者们有的攄地看? ( 转蝲920-432 920-553 )
]]>
վ֩ģ壺
պƵƵ |
պ߹ۿ |
þþþavר |
þþwww˳ |
һëƬ߲ |
aƬ߹ۿ |
һƷһAVһи |
vaƷĻ |
һvһ |
þɫһ |
Ƶվѹۿ |
С˵ ͼƬ |
vaĻ |
mvƷmvձmv |
߹ۿAVƬ |
˳վѲ |
aëƬ߹ۿ |
ëƬ100ѹۿ |
ۺС˵ |
ɫվַ |
Ʒҹ߹ۿ |
òƵƽ̨ |
ëƬһƵѲ |
ĻۺϾþò |
պƵ߹ۿ |
ŷղ߳v |
պŷƵ |
þþþƷվ |
Ů18ëƬëƬ
|
þþþþþƷͼƬ |
av |
²߾ƷƵѹۿ |
ƷaƬ߹ۿ
|
Ļר |
վ |
Ʒۿ˳ |
һ
|
ĻþþƷA
|
Ƶ |
УɫС˵ϼ |
ƷһƬ |