??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩国产网站,一本大道香蕉久在线播放29,9191久久久久久久久久久http://www.aygfsteel.com/level0/category/47454.htmlzh-cnWed, 29 Dec 2010 07:01:00 GMTWed, 29 Dec 2010 07:01:00 GMT60《HEAD FIRST JAVA》第一ơ回֒整理http://www.aygfsteel.com/level0/articles/341550.htmllevel0level0Sun, 26 Dec 2010 02:43:00 GMThttp://www.aygfsteel.com/level0/articles/341550.htmlhttp://www.aygfsteel.com/level0/comments/341550.htmlhttp://www.aygfsteel.com/level0/articles/341550.html#Feedback0http://www.aygfsteel.com/level0/comments/commentRss/341550.htmlhttp://www.aygfsteel.com/level0/services/trackbacks/341550.html 《HEAD FIRST JAVA》第一ơ回֒整理
W一?q入Java的世界(基本概念Q?
主要介绍了Java的工作原理,发展ԌE序l构和一些简单的语法。学q其他语a的h表示q章完全没有压力?
1Q?E序的层ơ:(x)源文Ӟsource fileQ?>c(classQ?>Ҏ(gu)QmethodsQ?
2Q?Java里面integer和boolean不相宏V?
3Q?语法与C差不多,不过作者好像一直很反感拿C与Java作比较?

W二?拜访对象村(cM对象Q?
一开始用了一个巨L(fng)故事来阐q面向过E编E与面向对象~程的差别(l果当然是面向对象优? =先保留意见吧Q?
1Q?l承机制使子cd以通过l承父类代码来减重复代码,覆盖机制使子cd不必改动父类的同时可以选择实现自己的方法。(q个机制太强大了Q)(j)
2Q?cLl制对象的蓝图,而对象是已知的事物加上执行的动作。对应着Q类包括实例变量Qinstance variableQ和Ҏ(gu)QmethodsQ?
3Q?JavaE序执行期间是一l可以相互调用或交流信息的对象,对象之间有着独立性(对象自治Q?
4Q?main()在java里面的作用:(x)试真正的类和启动Java应用E序。Java是面向对象的~程Q所以main()里面基本是不带Q何方法的Q仅作ؓ(f)试用和启动用?

W三?认识变量QprimitiveL据类型和引用Q?
介绍了primitivecd变量和引用变量,qqC之前的差别?
1Q?变量必须有变量类型,两性类型与cM间有时是共通的Q所以一般有着相同的命名规则(如果可能的话Q每个单词的首字母都要大些,区分于变量名U的命名Q除了第一个单词首字母要小写外Q之后的单词的首字母都要大写Q?
2Q?变量名称必须以字母,_?amp;开_(d)不能以数字开_(d)(j)?
3Q?除非加上“f”Q否则所有带数点的值在Java里面都看作doublecd?
4Q?PrimitiveL据类型变量值是该值的字节所表示的?
5Q?引用变量cM于指针,储存的是引用对象的地址Q储存方式)(j)?
6Q?圆点q算W(.Q表C?#8220;取得圆点前面的对象,然后求出该对象在圆点后面的事?#8221;?
7Q?当一个对象失L有的引用变量Ӟ它就完蛋了?
8Q?数组是对象,无论它里面装的是不是primitivecd?

W四?对象的行为(Ҏ(gu)操作实例变量Q?
一开始那张图片,我每ơ看到都想笑(那货的表情和动作都太C? =后面一늚*号冷W话也很强大~)。咳咻Iq章主要是围l对象的Ҏ(gu)来阐qC些拓展技巧?
1Q?Ҏ(gu)传入的实参(argumentsQ或者对象的实例变量(instance variable)的不同,同一个方法在同类型的不同的对象可以有着不同的表现Ş式?
2Q?实参QargumentsQ是传给Ҏ(gu)的实际|传入Ҏ(gu)后就变成了Ş参。Ş参(parametersQ与局部变量(localQ类似是一L(fng)。改变Ş参ƈ不改变实参。(跟C一P(j)传入与返回的参数的值的cd可以隐含地放大或者明地~小?
3Q? 可以从方法里面返回|声明了返回最好要q回Q我敲代码时发觉时声明了q回不返回会(x)报错的,但P78最后一个问题的回答q不是这L(fng)••囧)(j)Q一般情况下 只能q回一个|但是可以q回一个数l,再深一层的Q可以返回ArrayListQ换a之,只要你封装好了,可以q回L数量Lcd的Q意变量的Ll? 合。(q也太强大了?#8226;••Q?
4Q?Java是传D用(pass by valueQ,如果调用的实参是个引用变量,同样拯之?
5Q? 用setterQmutatorQ和getterQaccessorQ进行封装(encapsulationQ,可以保证对象的实例变量可以通过讄 setter来防止被恶搞。(用private讄实例变量Q用public来设|setter和getterQ这栯取和更改实例变量的效率会(x)变低Q不 q能够提高程序的抉|力抗性和恢复力抗性?
6Q?实例变量有默认|整Ş?QQ点型?.0Q布?yu)(dng)型为falseQ,局部变量没有默认|使用前需要初始化?
7Q?使用==来比较两个primitiveL据类型或者两个引用是否引用到同一个对象。用equals()来判断两个对象是否在意义上相{。(关于“在意义上”的概念需要斟酌,目前主要用于比较Stringcd是否相等Q?

W五?强力方法(~写E序Q?
通过设计一个SimpleDotComGame大致地说明了E序设计与实现的步骤?
1Q?E序设计的第一步是高层设计Q把E序的基本架构抽象出来。(惌v了万恶的NS图)(j)
2Q? W二步,Ҏ(gu)基本架构来构思需要什么对象,需要实C么类。(q是与面向过E不一L(fng)地方Q但某程度上cȝҎ(gu)有点像面向过E中的过E函数的一? 分,Java优胜在那强大的类的独立性)(j)。书本上提议开发类的过E是Q找出类应该做的事情->列出实例变量和方?>~写Ҏ(gu)的伪代码 ->~写Ҏ(gu)的测试用E序->实现c?>试Ҏ(gu)->出错或重新设?>邀(g)误G妹参加庆功派对(= =q什么啊Q)(j)
3Q?伪码Q描q要做什么而不是怎么做的cL字,书上的伪码都是全英文的,压力很大Q不q估计以后也要习(fn)惯了Q因为感觉上计算机方面比较好的书都是外国的。测试码Q写在真实码之前Q因为真实码都写出来了估计就没动力写试码了Q,目的是ؓ(f)了写好真实码之后试真实码?
4Q?书本后面介绍了几个技巧:(x)加强版的forQ要先把环境参数调到1.5以上才能用)(j)Q把字符串{换成整Ş的Integer.parseInt(String)Q还有C里面学习(fn)q的后递增和break语句?

W六?使用Java函数?Q认识Java的APIQ?
q章的页数很多,把第五章的游戏排BUG之后又升U到高版(依然无界面)(j)。之后介l了Java API的用途和用法?
1Q排BUGq程中书本引入了强大ArrayList对象Q这个对象很牛地Q有着cM数组的简易操作性的同时有着cM链表的动态׾~性,代h(hun)是它耗费的资源多一炏V(对于add(index, Object)q个Ҏ(gu)Qindex的g之前的g能蟩I)(j)
2Q制作高U版Ӟ书本用一堆球和杯子加遥控器的l合了Java是个面向对象的编E工兗?
3Q接着写到了一些布?yu)(dng)表辑ּ的运符Q跟C一P所以没有压力?
4Q?Java API中类是被包装在包中的Q用是必须使用import或者在出现的每个位|写出全Uͼ除了java.lang包中的类Q;关于java和javax的趣闻;关于查询APIl出了查阅参考书和查阅HTML API文Q真希望能具体点Q?

W七?对象村的优质生活Q承与多态)(j)
我认为承和覆盖是前十二章里面Java里面最强大的机Ӟ拓展性,独立性,适应性,易改?#8226;••多态什么的是Z配合q个强大的机制而存在的?
1Q? 关于Ҏ(gu)的承(inheritanceQ与覆盖QoverrideQ,书上说得是很清楚的,子类可以l承父类所有的非私有方法,也可以通过写出同名同参 数的Ҏ(gu)来覆盖父cȝҎ(gu)。方法调用时Q遵循低阶优先原则。关于方法承,有一点要分L清楚的,子类l承了父cȝҎ(gu)Q与把父cȝҎ(gu)的代码拷贝一份到? cȝ代码中的意义是不一L(fng)Q当其他对象引用该方法时Q前者会(x)跛_父类中进行调用,后者会(x)跛_子类中进行调用(因ؓ(f)Ҏ(gu)已经被覆盖了Q。两者的主要差别? 如果两者有着同名的实例变量,Ҏ(gu)中又涉及(qing)了该实例变量Q就?x)生不同的l果。即使它们共用同一个实例变量,q点上的模糊也通常?x)导致方法返回一个跟预想 不一L(fng)值或者生一个预料未?qing)的l果。关于实例变量的l承与覆盖,书上说得一般清楚,所以后来编码这一直弄得我好纠l。现在稍微清C一点,但也不保? 我的理解是正的Q寄希望于下一本教材吧。上机操作后Q我感觉“覆盖”q个概念对于实例变量来说不适用Q?#8220;l承”q有有那Ҏ(gu)思的Q若子类里面没有新徏? 名的实例变量Q类gҎ(gu)的承,同样不能理解成把父类的关于实例变量的代码拯一份到子类中去Q调用时Q依然是通过调用父类的实例变量。而当子类中存? 父类的同名实例变量时Q不?x)生覆盖,而且作ؓ(f)两个毫不相干的变量各自独自地存在于所属的cMQ调用的时候根据引用的不同来区分?
2Q?设计l承?wi)的步骤Q找出具有共同属性和行ؓ(f)的对象(用承来防止子类中出现重复的E序代码Q?>设计代表共同状态与行ؓ(f)的类 ->军_子类时候需要让某项行ؓ(f)Q也是Ҏ(gu)的实玎ͼ(j)有着特定不同的运作方?>通过L使用共同行ؓ(f)的子cL扑և更多抽象化的Z(x) ->完成cȝl承层次?
3Q?判断选择l承q是看作实例变量的方法:(x)“是一?#8221;QIS-AQ和“有一?#8221;QHAS-A)?
4Q? 一些关于方法承的l节Q承单向性(因而有了IS-A的单向性)(j)Q父cL法承子cȝҎ(gu)Q子cM可以用super()来引用父cȝҎ(gu)Qpublic cd的成员会(x)被承,privatecd的成员不?x)被l承Qx extends y && y extends z ---> x extends zQ就是说Qx可以通过z的IS-A试Q承可以减重复代码,当要修改Ҏ(gu)Ӟ只要父类的参数没有改变,子类都不需要改动就能直接承;l承定义出共 同的协议Q也是_(d)l承可以保某个父类之下所有子c都?x)有父类所持有的全部可l承Ҏ(gu)Q可以用final来标记类使它或者把里面的实例变量和Ҏ(gu)标记 成private来拒l被l承Q在不知道父cL代码仅知道其Ҏ(gu)关键字的时候,可以通过l承的方法来设计功能有所延展的子cR?
5Q? 多态(polymorphismQ:(x)当定义一l类的父型时Q可以用子型的Q何类来填补Q何需要或期待父型的位|。换句话_(d)q用多态时Q引用类型可以是? 际对象类型的父类Q这L(fng)话,参数和返回类型都可以多态化处理。其中有一Ҏ(gu)要特别注意的Q当一个对象实质是子类但它的引用对象是子类的父cLQ虽然它? 质是子类但它却不能调用子cM的Q何东西,Java看重的是引用cdQ也是说此对象只能引用父型中的东西Q但可以通过用子cȝ强制转换W来把引用{换成 子类?
6Q? 最后谈谈覆盖和重蝲Q子cd名方法未必就能覆盖掉父类的方法:(x)q参数类型和数目都相同时叫覆盖,E有不同叫重蝲。重载之间毫无联p,各自独立? 在,JVM?x)根据参数的差别自行军_调用哪个重蝲的方法。最后是关于覆盖和重载的一些细节上的区分:(x)覆盖QoverrideQ,参数必须要一P其返回类 型必要兼容Q不能降低方法的存取权限。重载(overloadQ,q回cd可以不同Q不能只改变q回cdQ参数在cd和数目上臛_要稍有不同)(j)Q可以更 改存取权限(因ؓ(f)怺独立Q?

W八?深入多态(接口与抽象类Q?
q章l箋讨论多态,书上说没有接口活不下去,现在有点体会(x)。Java子类有时候扮演着不同的角Ԍq时候就需要用到接口了Q因为父cd能有一个,但是接口的话没有这个限制了?
1Q抽象类Qabstract classQ:(x)有一些类在理Z是不应该被初始化的,q时候加上abstract关键字可以防止它被new出来。抽象类的作用就是在防止被初始化之余能被 l承以维持多态。(*书上提到特例Q抽象类可以有static成员Q目前不明白Q。抽象类必须要被extends?
2Q抽象的Ҏ(gu)Q抽象的Ҏ(gu)没有实体Q因而一定要被覆盖,卛_要实现所有抽象的Ҏ(gu)。当声明了一个抽象的Ҏ(gu)Ӟ该类必须标记成抽象类Q我理解成这是要通过讄子类l承来实现方法的覆盖Q?
3Q万用类ObjectQ所有类的父c;书上介绍的四个方 法:(x)equals()QhashCode()QgetClass()QtoString()QObject的作用是为多态提供一个万能模板,因而同栯? 意到Objectcd的变量只能做Objectc里面的Ҏ(gu)Q要使用子类的方法,只能通过强制转换W(再次Java很注重引用变量的cdQ?#8220;~译器是 Ҏ(gu)引用cd来判断有哪些method可以调用Q而不是根据Object实的类型?#8221;Q;而理所当然圎ͼM对象都可以用Object里面的方法?
4Q书本再再再ơ强调了Java很注重引用变量的cdQ只能在引用变量的类实有该Ҏ(gu)才能够调用它Q把cȝ公有Ҏ(gu)当做是合U的内容Q合U是你对其他E序的承诺协议?
5Q? 接口QinterfaceQ:(x)本质上是一个公用的且里面都是抽象的Ҏ(gu)的抽象类。目的是Z让对象从单一的父子类关系中得到拓展以在保持对象独立性和脉络 清晰性的同时得到多重w䆾。一a蔽之Q接口就是ؓ(f)多态而存在的Q不知这栯?x)不会(x)太l对? =Q。接口可以跨不同的l承?wi)进行g展,同一对象也可以接上Q意的接口?

W九(ji)?对象的前世今生(构造器与垃圾收集器Q?
q章的冷W话和配图是前九(ji)章里面最C的一章,- -吐槽乏力?#8226;•正如标题所aQ这张说的是构造器QconstructorsQ和垃圾攉?garbage collection)?
1Q关于生存空间和生存周期QlifeQ和作用?scope)什么的Q学qC的表C没有压力。所有的对象生存在堆QheapQ中Q方法调? 和局部变量生存在栈(stackQ上Q而实例变量是生存在其依附的对象上Q即也属于堆中。关于栈Q遵循后q先出原则,关于各种引用变量Q局部引用变量存? 于栈Q实例引用变量存在于堆,储存的自然只是存取方式?
2Q构造函敎ͼconstructorQ:(x)一关键特征是它不?x)有q回cdQ包括voidQ,另一关键特征是它会(x)在对象能后被赋值给引用? 前就执行。一些构造函数的应用l节Q可以用构造函数来初始化对象的实例变量Q如果有提供默认值的要求Q还可以通过重蝲构造函数来满Q而且最后在无参? 的构造函C讑֮一个默认|~译器会(x)帮你自动补全Q前提是你没有写M一个构造函数?
3Q构造函C父类之间的关p,q个实有点U结Q由于子c都包含了父cȝ实例变量Q所以当子类的承函数执行前Q必d执行父类的承函 敎ͼ直至最后执行Object的构造函敎ͼq个q程成ؓ(f)“构造函数链”Qconstructor chainingQ;调用父类的构造函数用super()Q调用类中的重蝲构造函数用this()Q而由于super()和this()语法上都要求攑֜ 构造函数的W一行,所以它们不能同时用?
4Q关于垃圾收集器的工作机理:(x)当对象失L后一个引用变量时Q它失去存在的意义,{待的就是被回收的命q。关于引用变量的生存周期Q局部引 用变量生存与Ҏ(gu)当中Q方法结束,引用消失;实例引用变量的生存周期与它存在的cȝ生存周期一P换句话说Q他俩的生死大权在类的引用变量上Q死ȝ? 法有“引用怹性的d它的范围”“引用被赋值到其他的对象中”“直接引用设定ؓ(f)null”?

W十?数字很重要(数字和静态)(j)
静态什么的到现在依然不是很理解Q很头痛。介l完静态之后就是一些对数字Q格式化Q日期等之流的介l,大概览了下?
1Q? 静态的Ҏ(gu)通常是实用的Ҏ(gu)Q不依赖对象的实例变量(可理解成语句独立性很强,不依赖前后的语句Q,因而不需要徏立对象(q且通常构造函数私有化来阻止用 户创建实例)(j)。引用时用类的名字来引用卛_。又因ؓ(f)静态方法引用对象的是类Q所以静态方法是不可?qing)调用同一个类中的非静态的实例变量Q因为无法识别应该调 用那个对象的的变量,cM的理由,静态方法也不能调用同一个类中非静态方法)(j)Q只可以调用静态实例变量(因ؓ(f)同类的对象共享同一个静态实例对象,不存在؜ 淆的问题Q?
2Q?静态变量具有共享的Ҏ(gu),在类被加载时初始化(优先于构造函敎ͼq在所有静态方法开始前初始化)(j)。如果即运行静态方法前q没有赋初|自动设ؓ(f)默认|整Ş?QQ点型?.0Q布?yu)(dng)型为falseQ引用变量ؓ(f)null?
3Q?Java中的常数Q用public static final来修饎ͼ卛_?#8220;公用”“免实?#8221;“不变”的特性?
4Q?finalQ用于变量时Q变量不可改变|定义时貌似必d始化Q;用于Ҏ(gu)ӞҎ(gu)无法被覆盖;用于cLQ类无法被ѝ名副其实的l结者。(注:(x)final的类没必要再定义final的方法,无法l承Ҏ(gu)不存在方法被覆盖的问题。)(j)
5Q? primitiveL据类型的包装Q?.5之后有了自动包装和解包(autoboxingQ,一切都变得很美好。基本可以无视int和Integer? 差别了,直接套用是了,强大无比的实。用性。(目前发现不可套用的是ArrayList中的containsҎ(gu)Q需要用到强制{换符。)(j)后面提到了包 装的实用性方法:(x)parseInt()QparseDouble()QbooleanValue()QtoString(){?
6Q?数字的格式化Q学qC的表Cl没有压力?[argument number][flags][width][.precision]typeq个写得好专业就收录下来了,其他看书OK?
7Q?日期的表C法和计法Q这个看书吧= =(import java.util.Date;import java.util.Calendar)
8Q?最后一点,静态的importQ这个我觉得作用不大Qؓ(f)翘一点代码而降低程序的易读性很不划?

W十一?有风险的行ؓ(f)Q异常处理)(j)
开始介l如何编写YӞ很激动~q章主要说异常处理(exception handlingQ和MIDIQmusical instrument digital interfaceQ播攄兟?
1Q? 异常处理Q除了RuntimeException和它的子c(一般是可以在编译阶D|除的语法错误Q,其他异常QexceptionQ都要进行处理(或? duck掉给调用者处理)(j)。处理方法用try{}和catch{}语句。(选择性加上finally{}Q两者至要有一个。)(j)如果不想在当前处理,? 以用throws标识Ҏ(gu)来duckl此Ҏ(gu)的调用者,调用者也可以q一步duckl上一U调用者。如果连main()函数也duckingQ那么JVM ׃(x)L。一些细节:(x)try的时候遇到异常后立即跛_catchQ如果有的话Q,否则q行finallyQ如果有的话Q,之后抛出错误Q如果有 throws后缀的话Q;一个try后面可以多个catchQ^行关pȝ异常Q可以不先后顺序,父子关系的异常,子型攑֜父型之上?
2Q?MIDI(import javax.sound.midi.*;)Q本w不带有音乐信息Q上面带的是如何播放音乐的信息,跟乐谱差不多Q所以占用空间很。播N乐的? ơ:(x)SequencerQ播攑֙Q?>SequenceQCD盘)(j)->TrackQ单Ԍ(j)->MidiEventQ音W)(j)。构建的五个 步骤Q取得Sequencerq将它打开->创徏新的Sequence->从Sequence中创建新的Track->填入 MidiEventq让Sequencer播放->按下play键。然后是各种的方法和各种的参敎ͼ各种看书和查阅JAVA APIQMIDI的参数表至今没有扑ֈQ?

W十二章 看图说故事(囑Ş用户接口Q?
q章主要介绍了GUIQGraphical User InterfaceQ:(x)制作H口和按钮,单绘囑֒贴图Q简单的动画{等?
1QJFrame用于创徏LӞ通过getContentPane()把JButtonQJLabel{其他组ӞwidgetQ挂载在上面。(import javax.swing.*;其他Ҏ(gu)和参数见书本或JAVA APIQ?
2Q事件源Qevent sourceQ本w是个对象(框架Q按钮,滚动条等Q,把用L(fng)操作Q点击鼠标,按键{)(j)转换成事ӞeventQ,如果当前事g源被一个或若干个监听器 QlistenerQ注册,那么它会(x)把事Ӟevent objectQ当成参数返回到实现了对应的监听接口的对象上面?
3Q?通过用子cȝ承JPanel来挂囑֒l图。挂囑֒l图在类里面的paintComponentҎ(gu)里面实现。绘囄时机一般由pȝ军_Q也可以通过repaint()命o(h)来强刉上重l?
4Q?内部c(inner classQ:(x)唯一l定在第一个初始化自己的外部类上,l定后不可更改绑定对象,可以使用外部所有的Ҏ(gu)与变量,包括有私有标识的?
5Q?Thread.sleep()用于短暂挂vU程。(C里面的Sleep()函数••Q?
6Q? 监听MIDI文g的方法:(x)注册一个特D编L(fng)MIDI事gQ看作ControllerEventQ插入到MIDI文g上所有含有NOTE ONQ第一个参数是144Q标志的节拍上,把ControllerEventListener注册到sequence上,最后在带有 ControllerEventListener()接口的controlChange(ShortMessage ev)Ҏ(gu)上实现监听后的响应工作?

W十三章 q用SwingQSwingQ?
幅比较短的一章,主要介绍了布局理器(Layout ManagersQ?
1Q?几乎所有组ӞComponentsQ或widgetQ都能够安置其他的组Ӟ除了JFrame之外Q交互组件于背景lg的差异不明显QJPanel虽然一般都当做背景来用,但也可以像按钮一h册鼠标点选的事gQ?
2Q?布局理器(Layout ManagersQ:(x)通过一U交互的机制QhZ互,布局层次内部的交互)(j)自主决策lg布局的一cd象。决{时优先遵@自己的布局{略Q在不破坏自w布局 {略的前提下最大程序上满用户提出的布局hQ也是有时候会(x)q反用户的请求)(j)?
3Q? 书上提到的三大布局理器:(x)BorderLayoutQ把背景lg分成东南西北中五个区域,优先分配南北Q然后东西,最后剩下的部分Z _(d)(j)QFlowLayoutQ把lg从左到右地排列,q有自动换行的机Ӟ(j)QBoxLayoutQ把lg从上C地排列,但不带有自动换行的机Ӟ(j)
4Q?剩下的JTextAreaQJScrollerPane{的Ҏ(gu)和参数等可参看书本?

W十四章 保存对象Q序列化和文件输?输出Q?
l于到输入输ZQ这一章的译ZCQ徏议对照英文教材阅M?
1Q?Java数据输出的两U方法,只给Javad的话用序列化QserializationQ,如果要给其他E序d或用,输出U文本文件?
2Q?Qimport java.io;Q一般来_(d)串流QstreamQ要q接(connection streamQ和链接(chain streamQ两两配合才能有效。其中连接流负责q接到文Ӟsocket{,但因w一般只有像输出字节{低U方法,所以要借助较ؓ(f)高的连接流中的 高Ҏ(gu)才能转换成功?
3Q? 要一个类实现可序列化Q需要实现Serializable接口。如果不x个实例变量被序列化,标记上transientQ像|络联机q类随机数据也应? 标记transientQ,考虑到要完整且正地恢复到原状态(所谓状态,一般就是指实例变量的|(j)Q序列化时候需要把与保存对象相关的所有对象Ş成的|? l全部序列化保存Q如果网l中有一部分实例变量既没有实现Serializable又没有被标记transientQ?
4Q?对于U文件的处理用FileWriter和FileReaderQؓ(f)提高效率Q可以选择使用BufferedReader和BufferedWriter
5Q?剩下q有关于GUI和IO的很多类很多Ҏ(gu)很多参数Q参看书本吧?

W十五章 |络联机Q网l与U程Q?
嘛,q章大致介绍了怎么实现|络联机Q还是就是一些多U程的细节问题?
1Q?聊天E序的工作方式:(x)客户端连接到服务?>服务器徏立连接ƈ把客L(fng)架到来ƈ清单?>另外一个用戯接上?>用户A送出信息到聊天服务器?>服务器将信息送给所有的来宾Q一开始对最后一步有疑问Q参看P488恍然大(zhn)了Q?
2Q?Java不需要注意太多细节的东西可以架讑֥|络q接Q同时译者提醒读者不要把架设|络x是太单的事情- -Q?
3Q?Qimport java.net.*;Q徏立socketq接Q要知道IP地址和TCP的端口号。(本机IP地址为:(x)127.0.0.1Q?
4Q? 关于|络串流的读写:(x)读,服务器(serverQ?>Socket输入? ->InputStreamReader->BufferedReader->客户端(clientQ。写Q客L(fng) ->PrintWriter->Socket输出?>服务器。(不知道ؓ(f)什么中间不加BufferedWriterQ?
5Q?多线E(multithreadingQ:(x)U程QthreadQ是一U独立的执行I间Qa separate call stackQ,除非是多处理器,否则新线Eƈ不是单独q行的线E,虽然感觉上是q样?
6Q? 每个thread需要一个Q务来执行Q一个可以放在执行空间的dQ实现Runnable接口的中的run()Q类gȝE的main()Ҏ(gu)Q。线E? ?#8220;新徏”“可执?#8221;“执行?#8221;三个状态,而且Q一旦线E进入了“可执?#8221;状态后Q它?x)?#8220;可执?#8221;?#8220;执行?#8221;两种状态中不停地切换(除非处于堵塞? 态)(j)
7Q?U程调度器(the thread schedulerQ:(x)Java自带的决定什么时候运行哪个线E的一U机Ӟ不受用户的API的控Ӟ所以调度结果无法确定(不同的机器有着不同的执行过E,同一台机器也?x)有着不同的执行过E)(j)?
8Q?可以用sleep()Ҏ(gu)来媄(jing)响调度器Q不q作用效果一般没有想象中要好?
9Q?q发性问题(concurrency issueQ:(x)当两个或以上的线E存取单一对象的数据的时候,有Z(x)发生各种奇怪的错误。ؓ(f)了排除这c问题,使用synchronizedQ同步化q? 的)(j)标志对象q行中的那些不可分割的过E,cM于一把锁Q锁住了储存数据的方法,使一个对象对q个数据使用完毕之后再允许其他对象用该数据?

W十六章 数据l构Q集合和泛型Q?
各种集合(collections)Q目前在学C++版的数据l构…讨厌的课E)(j)
1Q? 各种数据l构QTreeSetQ有序防重复Q,HashMapQ每个数据都有对应的KEY|(j)QLinkedListQ大集合的快速插入和删除中间元素Q? q效果,有点像链表)(j)QHashSetQ防重复Q可以快速寻扑օ素)(j)QLinkedHashMapQHashMap的升U版Q具体看书)(j)。书本的说法 是:(x)list对付序l构Qset注重独一无二的性质Qmap用key来搜索的专家?
2Q?使用System.out.println集合的时候,要覆盖集合元素的cM的public String toString()Ҏ(gu)来设定输出的内容?
3Q? 使用Collection.sort(某集?Ҏ(gu)的时候,要求某集合的元素实现排序化(实现Comparable接口之下的public int Compareto()Ҏ(gu)Q,或者用sort的重载方法sort(某集合,某比较器)Q当然之前要现实某比较器QComparatorQ中的int Compare()Ҏ(gu)?
4Q? 关于泛型QgenericQ:(x)java5.0之后推出的功能,Z实现更好的类型安全性。一般用<T>表示Q对于集合,? ?lt;E>来表C(E for elementQ,cd参数?x)被~译器自动识别和替换<T>?lt;E>的位|。然后public <T extends Animal>void takeThing(ArrayList<T> list)跟public void takeThing(ArrayList<Animal> list)含义是不一L(fng)。还有,泛型里面的extends和implements其实都是is的意思,但是创造新的关键字?x)破坏之前的E序Q所以没有引 用is关键字?
5Q? 对象相等Q包括引用相{性和对象相等性,前者指“堆上同一对象的两个引?#8221;Q后者指“堆上的两个不同对象在意义上是相同?#8221;Q一般需要的是后者,要实现后 者,必覆盖从Objectl承下来的hashCode()和equals()Ҏ(gu)。以HashSetZQ检查两个变量是否相{,首先(g)? hashCode()的返回是否一P然后再检查equals()函数的返回是否是true。更加细节的东西QhashCode相同q不能保证对象相? 的,因ؓ(f)hashCode使用的是杂凑法。还有就是覆盖equals()Ҏ(gu)是要注意它的参数是Objectcd的?
6Q?TreeSet的元素必d现Comparable或者在构造的时候用comparator来初始化?
7Q? 然后是多态的问题Q不知出自什么原因,java设计时设定数l的cd(g)查是在运行其进行的Q而集合的cd(g)查只在编译时期,所以多态在集合要实现要ȝ(ch) 些——public void takeAnimal(ArrayList<? extends Animal>animals)Q注意这里的extends依然和implements一起都是is的意思?

W十七章 发布E序Q包Qjar存文g和部|Ԍ(j)
文g部vQ打包成jar什么的Q我希望有懒人工兯帮忙打包?
1Q?部v分成Q完全在本机的Executable JarQ完全在q程的Servlets和介乎两者之间的JWSQ我q译成“巨猥?#8221;Q?
2Q?源代码和cL件的分离Q源代码攑֜sourceQ类文g攑֜classesQ用命?dQ书上说-d懂的自己建立未徏立的目录Q但貌似我这样做时会(x)提示出错Q?
3Q? 打包JARQ首先,认所有的cL仉在classes目录下,然后在该目录下徏立manifest.txt来指定哪个类带有main()Ҏ(gu) QMain-Class: **Q,最后用jar命o(h)打包。(jar –cvmf manifest.txt **.jar *.classQ?
4Q?执行JARQ在cmd下用java –jar *.jar命o(h)来启动,如果自带GUIQ在windows环境下可以双?yn)L开。(若打开是被winrar{程序干扰时Q打开方式设ؓ(f)jre/bin下的 javaw.exeQ然后在用regedit打开注册表,在HKEY_CLASSES_ROOT下找?jar文g的打开Ҏ(gu)Q在参数中间d-jar? P(j)
5Q?包:(x)主要用于防止cdU的冲突Q关于制作包执行包用包弄JAR{具体命令参看P589左右Q懒C期待工P(j)
6Q?Java web start(JWS)Q书本介l较为简单,q夹杂着XML的语a…

W十八章 分布式计(q程部v的RMIQ?
l于最后一章了Q最后几章的隑ֺ明显加大呢,可能是因为最后几章涉?qing)联|什么的Q那货其实都可以展开写一本书了?
1Q?RMIQremote method invocationQ:(x)一U连接客L(fng)和服务器的技术(有点像socketQ。事实上Q在某堆上的对象无法q行另外堆上的对象引用,但是利用RMI能够 模拟q种感觉。实现需要四个部分:(x)服务?server)Q客L(fng)(client)Q服务器辅助设施(server helper)Q客L(fng)辅助设施(client helper)。客L(fng)调用客户端辅助设施来模拟调用本机对象的感觉,而实际上客户端辅助设施只是作Z?proxy)Q真正实现客L(fng)h的是服务 器?
2Q?RMI调用Ҏ(gu)的过E:(x)客户端对象对辅助讄对象调用Ҏ(gu)Q已注册的方法)(j)->客户端辅助设施把调用信息打包通过|络送到服务器的辅助设施->服务端的辅助设施解开来自客户端辅助设施的信息Qƈ以此调用真正的服务?
3Q? 创徏RMIq程服务Q步骤一Q创建Remote接口Q承java.rmi.RemoteQ生命所有的Ҏ(gu)都会(x)抛出RemoteExceptionQ确? 参数和返回值都是primitiveL据类型或者SerializableQ;步骤二:(x)实现RemoteQ实现Remoteq个接口Q? UnicastRemoteObjectQ编写声明RemoteExceiption的无参数构造函敎ͼ向RMI registry注册服务Q;步骤三:(x)用rmic产生stub与skeletonQ对实现出的c(不是Remote接口Q执行rmicQ;步骤四:(x)启动 RMI registryQ调出命令行来启动RMI registryQ;步骤五:(x)启动q程服务Q调用另一个命令行来启动服务)(j)
4Q?ServletQservlet是完全放在HTTP WEB服务器上q行的JAVAE序Q用于应付用L(fng)没有JAVA虚拟机的情况。创建ƈ执行servlet的步骤:(x)扑և可以存放servlet的地方(是 要买个服务器Q;取得servlets.jarq添加到classpath上(上sun官网挂之Q;通过extendqHttpServlet来编? servlet的类Q编写HTML来调用servletQ我不会(x)••Q;l服务器讑֮HTML的网和servlet?
5Q?JINI(Java Intelligent Network Infrastructure)Q传说中一个更加强大的RMIQ带有自适应探烦(ch)Qadaptive discoveryQ和自恢复网l?self-healing networks)。因为很强大Q所以书上也没有幅ȝ说。后面是实现Ҏ(gu)和一堆堆代码Q看得我产生了严重的抵触情A?

最后是附录ABQbeatbox的最l版和十大遗珠之憾?

- -留着以后看吧Q连滚带爬的Q算是把q本书看完了?

level0 2010-12-26 10:43 发表评论
]]>
վ֩ģ壺 ƽ| | ®| | ֣| | | | | | Զ| | ɳƺ| ľ| | ũ| | | | | | | ƽң| | | | ˳ƽ| ذ| | | | | Ԫ| | | | | | ƽ| | ذ|