隨筆 - 1  文章 - 1  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評(píng)論

          這是自己的一點(diǎn)筆記和一點(diǎn)初學(xué)方法建議,總結(jié)的是一些最基礎(chǔ)的、容易混淆或是理解錯(cuò)誤的地方,適合像我一樣的菜鳥(niǎo);有錯(cuò)誤或是不正確的地方,希望大家不吝賜教
          CU真的是一個(gè)非常好的學(xué)習(xí)平臺(tái),希望自己可以盡早地有能力為它的壯大與前進(jìn)做點(diǎn)貢獻(xiàn)

          很難說(shuō)現(xiàn)在類(lèi)似這樣的認(rèn)證還有多少說(shuō)服力或者分量
          但是我覺(jué)得,有一個(gè)東西放在那里,給自己一個(gè)階段性的刺激與總結(jié),也不失為一種學(xué)習(xí)方法
          所以自己初學(xué)java的定位就是,多讀幾本書(shū),多讀些代碼,然后用這樣一個(gè)考試給自己一個(gè)暗示,可以算是初窺門(mén)徑了

          祝大家節(jié)日快樂(lè)


          ============筆記===============

          一.        聲明與訪問(wèn)控制
          Javabean命名規(guī)則:set、get、boolean is、add/remove監(jiān)聽(tīng)器
          類(lèi)的修飾符:默認(rèn)、public、final、abstract、strictfp
          方法修飾符:默認(rèn)、public、protected、private、final、abstract、static、strictfp、synchronized、native(不能有方法體)
          變量修飾符:volatile僅可用于實(shí)例變量
          接口修飾符:默認(rèn)、public
          組合使用final與abstract、private與abstract、static與abstract是常見(jiàn)的錯(cuò)誤
          局部(方法內(nèi))變量能攜帶的唯一修飾符是final,其他的修飾一律導(dǎo)致編譯錯(cuò)誤
          方法參數(shù)(等價(jià)于局部變量)設(shè)定為final意味著方法不能修改它
          公共類(lèi)中的protected可以被:1、同一包中的所有類(lèi)(包級(jí)訪問(wèn)權(quán)限)與2、自己的子類(lèi)(無(wú)論在不在同一個(gè)包當(dāng)中)看到。包外子類(lèi)訪問(wèn)protected域時(shí),是通過(guò)繼承從父類(lèi)繼承到了該域,而無(wú)法通過(guò)調(diào)用父類(lèi)實(shí)例引用來(lái)訪問(wèn)該域——.運(yùn)算符將導(dǎo)致編譯錯(cuò)誤;并且,包外子類(lèi)繼承過(guò)protected成員之后,該成員在這個(gè)子類(lèi)內(nèi)實(shí)際上成為了私有的,因此只有該子類(lèi)與其子類(lèi)可以訪問(wèn)
          抽象
          抽象方法必須顯示地聲明;抽象類(lèi)可以包含非抽象方法;但倘使一個(gè)類(lèi)中含有哪怕只是一個(gè)抽象方法,該類(lèi)也必然是抽象的
          接口
          接口只能有抽象方法,隱式為public abstract;域全部是public static(隱式地),也即常量(而非實(shí)例變量);接口繼承的只能是接口;實(shí)現(xiàn)接口的抽象類(lèi)可以選擇性地實(shí)現(xiàn)一部分方法,而被非抽象類(lèi)實(shí)現(xiàn)時(shí)則必須實(shí)現(xiàn)全部方法,且全部方法顯示聲明為public
          Var-arg:作為參數(shù),只能出現(xiàn)一次,且只能作為最后一名參數(shù)出現(xiàn),表示收到的參數(shù)放入一個(gè)數(shù)組
          構(gòu)造方法永遠(yuǎn)不能有返回值;做了帶參構(gòu)造器,則不會(huì)再有默認(rèn)的無(wú)參構(gòu)造器,此時(shí)調(diào)用默認(rèn)構(gòu)造器時(shí)會(huì)造成編譯錯(cuò)誤
          變量:
          由小到大:byte——short——int——long,double大于float;數(shù)值類(lèi)型全部是有符號(hào)的
          實(shí)例變量會(huì)得到默認(rèn)值(包括類(lèi)的對(duì)象實(shí)例,賦為null)
          局部變量在棧上,但如果變量是對(duì)象引用,該對(duì)象將會(huì)被創(chuàng)建在堆上。只有棧變量,沒(méi)有棧對(duì)象;局部變量使用前必須初始化先;將局部變量聲明為final是合法的,表示方法期間不能改變他的值;聲明與實(shí)例變量同名的局部變量是合法的,稱(chēng)作隱藏
          聲明數(shù)組時(shí)指定長(zhǎng)度是常見(jiàn)的錯(cuò)誤
          沒(méi)有最終對(duì)象,只有最終引用:對(duì)象屬性是可修改的,但聲明為final的引用變量不可再修改引用的對(duì)象
          靜態(tài)
          Static用于變量與方法,這些變量和方法獨(dú)立于為類(lèi)創(chuàng)建的任何實(shí)例:static的成員存在于實(shí)例被創(chuàng)建之前,無(wú)論類(lèi)有多少實(shí)例,static的成員只有一套副本(所有static成員共享它們看到的一套值);方法本地內(nèi)部類(lèi)不能為static,內(nèi)部類(lèi)方法和實(shí)例變量不能為static,局部變量不能為static
          Enum
          枚舉不是簡(jiǎn)單的字符或者整數(shù),可以視為一個(gè)類(lèi)
          枚舉可以1.聲明為獨(dú)立的類(lèi),2、在類(lèi)中聲明為類(lèi)成員;不可在方法中聲明;可用修飾符只有public與默認(rèn)修飾符
          一旦聲明了一個(gè)枚舉,他就是不可擴(kuò)展的:在運(yùn)行時(shí),無(wú)法創(chuàng)建而外的枚舉常量

          二、面向?qū)ο?br>封裝
          思路:保護(hù)實(shí)例變量,提供公共的訪問(wèn)器方法
          IS-A與HAS-A
          IS-A:通過(guò)繼承或?qū)崿F(xiàn)而實(shí)現(xiàn),可通過(guò)instanceof測(cè)試(只要在同一繼承樹(shù)之中,instanceof即可通過(guò));HAS-A:一個(gè)類(lèi)中的代碼有對(duì)另一個(gè)類(lèi)實(shí)例的引用
          Overload 與 override
          Overload:重載時(shí)只有參數(shù)表可以做為標(biāo)準(zhǔn),修飾符可以向?qū)捤傻姆较蛐薷?br>Override:重寫(xiě)時(shí)修飾符與返回值類(lèi)型必須精確匹配
          也即:修改了修飾符與/或返回值類(lèi)型,而參數(shù)表未加變動(dòng),既不是重寫(xiě)也不是重載,產(chǎn)生編譯錯(cuò)誤
          強(qiáng)制轉(zhuǎn)換
          向下強(qiáng)制轉(zhuǎn)換時(shí),父類(lèi)引用引用父類(lèi)實(shí)例,使用子類(lèi)顯示強(qiáng)轉(zhuǎn)可以通過(guò)編譯,但運(yùn)行時(shí)發(fā)生cast異常(可以編譯通過(guò));向上強(qiáng)轉(zhuǎn)時(shí)隱式與顯示皆可
          靜態(tài)
          總有這樣的錯(cuò)誤:在main()中以各種形式(如在循環(huán)條件中)訪問(wèn)非靜態(tài)實(shí)例變量。記住一點(diǎn),運(yùn)行main()的是類(lèi),而不是某一個(gè)類(lèi)的實(shí)例
          靜態(tài)方法不能訪問(wèn)實(shí)例(非靜態(tài))變量/方法;靜態(tài)方法不可被重寫(xiě):嘗試以重寫(xiě)的語(yǔ)法在子類(lèi)中聲明一個(gè)方法會(huì)造成一個(gè)新方法的定義(可稱(chēng)隱藏),調(diào)用時(shí)發(fā)生的是父類(lèi)的static方法
          耦合講述了一個(gè)類(lèi)了解另一個(gè)類(lèi)的程度,內(nèi)聚體現(xiàn)一個(gè)類(lèi)設(shè)計(jì)目標(biāo)明確、功能專(zhuān)一的程度

          三、賦值
          初始化的順序就是執(zhí)行的順序
          一個(gè)占用int或更短長(zhǎng)度的表達(dá)式,其結(jié)果總是int:byte+byte,int*short,short/byte
          數(shù)組聲明時(shí)不可加長(zhǎng)度(編譯錯(cuò)誤);注意索引范圍(運(yùn)行時(shí)異常)
          初始化塊
          靜態(tài)塊執(zhí)行一次,在類(lèi)被加載時(shí)(main());當(dāng)靜態(tài)塊中有錯(cuò)誤時(shí),編譯時(shí)不會(huì)報(bào)錯(cuò)
          包裝器類(lèi)、裝箱
          目的:使基類(lèi)具備object類(lèi)的特質(zhì);分類(lèi)、轉(zhuǎn)換的方法
          每當(dāng)有一個(gè)實(shí)例產(chǎn)生,實(shí)例塊被執(zhí)行一次,在構(gòu)造器super()之后被執(zhí)行
          因此最終的順序:靜態(tài)塊——>super()——>實(shí)例塊——>構(gòu)造器
          對(duì)于任何指定對(duì)象,finalize()至多只會(huì)被垃圾收集器調(diào)用一次;調(diào)用實(shí)際上能夠?qū)е聦?duì)象免于被刪除

          四、運(yùn)算符
          對(duì)于復(fù)合賦值運(yùn)算符,賦值號(hào)右側(cè)總是先被計(jì)算
          “+”的連接從左向右運(yùn)行,操作對(duì)象中任一個(gè)為String則“+”身份為連接符;取消裝箱與連接一起作用
          ==與equals
          對(duì)于基類(lèi),數(shù)值相等時(shí)==的判斷將是true;若==兩邊類(lèi)型不兼容編譯器將報(bào)錯(cuò);equals用于比較內(nèi)容且不可用于基類(lèi),類(lèi)型不兼容時(shí)可以編譯,得到false
          枚舉的相等性可用==與equal兩者驗(yàn)證
          若對(duì)象的任何一個(gè)超類(lèi)實(shí)現(xiàn)了某一個(gè)接口,我們就說(shuō)該對(duì)象屬于這種接口:可以通過(guò)instanceof測(cè)試
          三目運(yùn)算符連接時(shí),順次檢查求值
          &&與||被稱(chēng)作短路運(yùn)算符,是因?yàn)樗麄兊?#8220;測(cè)試優(yōu)化”能力,&與|不具備這種特質(zhì);短路運(yùn)算符視其前后為兩個(gè)獨(dú)立的表達(dá)式

          五、流程控制、異常與斷言
          開(kāi)關(guān)語(yǔ)句:switch表達(dá)式的結(jié)果必須為char。Byte、short或可隱式提升為int的enum——總之就是能放進(jìn)int容器的類(lèi)型;case常量必須與開(kāi)關(guān)里的類(lèi)型一直,且必須是編譯時(shí)常量;在比int小的變量上使用switch且case常量大于變量范圍,導(dǎo)致編譯錯(cuò)誤;從第一個(gè)匹配進(jìn)入,沒(méi)有break時(shí)發(fā)生直落,default與其它c(diǎn)ase有著等同的地位(直落同樣會(huì)發(fā)生)
          do expression while();不要漏掉分號(hào)
          for循環(huán)提前結(jié)束的方法:return——跳轉(zhuǎn)回調(diào)用方法;break——跳轉(zhuǎn)至for后第一句;continue——跳出此次迭代;system.exit()——jvm關(guān)閉
          Try、catch與finally
          看見(jiàn)try時(shí)先尋找catch或者finally,孤立的try導(dǎo)致編譯錯(cuò)誤
          將具體子類(lèi)異常置于父類(lèi)異常之上書(shū)寫(xiě)catch(相反時(shí)編譯錯(cuò)誤);兄弟異常順序隨意
          存在return時(shí),finally先于return——finally必然被執(zhí)行(除非在try外的異常導(dǎo)致編譯錯(cuò)誤),因而在將異常傳回調(diào)用方法時(shí),需要finally——它先執(zhí)行,之后return
          在finally之后的語(yǔ)句將不被執(zhí)行
          除非異常是運(yùn)行時(shí)異常,方法聲明它拋出的異常(或者catch它),據(jù)此拋出的異常,屬于方法的公共接口

          六、字符串、IO、格式化與解析
          1)String、StringBuffer與StringBuilder
          String類(lèi)被標(biāo)識(shí)成了final,所有方法不可重寫(xiě)
          String一旦創(chuàng)建,無(wú)法修改
          String s = new String(“abc”);//常規(guī)內(nèi)存生成一個(gè)新的String對(duì)象,s引用了它;同時(shí)常量abc被放入String常量池
          StringBuilder的方法是非同步的
          考試討論的所有StringBuffer與StringBuilder方法都操作調(diào)用該方法的對(duì)象的值
          帶有兩個(gè)索引參數(shù)的方法,第一個(gè)參數(shù)從零0開(kāi)始計(jì)數(shù)索引,第二個(gè)從1開(kāi)始
          String沒(méi)有delete
          Replace(’char old’,’char new’);與replace(start, end, String);
          StringBuffer與StringBuilder返回String的方法:toString();
          文件導(dǎo)航與IO
          看到stream字樣的api,可知其與文件或io無(wú)甚關(guān)聯(lián),可能是關(guān)于串行化的
          創(chuàng)建reader或者writer時(shí),若文件不存在,則將自動(dòng)創(chuàng)建它;但目錄不同,將會(huì)導(dǎo)致找不到文件/目錄異常
          串行化
          1、        僅能保存非靜態(tài)成員變量
          2、        保存的僅是變量的值,任何修飾符都無(wú)法保存
          3、        某些對(duì)象的值是瞬時(shí)的(thread、fileinputstream等),無(wú)法保存其狀態(tài),必須用transient關(guān)鍵字標(biāo)注;這樣的標(biāo)注導(dǎo)致恢復(fù)時(shí)賦值為默認(rèn)
          4、        要串行化的對(duì)象必須實(shí)現(xiàn)serializeable
          5、        要串行化的對(duì)象對(duì)應(yīng)的類(lèi)必須是public
          6、        欲串行化的類(lèi)若has-a不能串行的成員(如未聲明為serializable或是一個(gè)私有成員),將會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤
          一般的過(guò)程
          串行化:創(chuàng)建FileOutputStream,用ObjectOutputStream包裝,對(duì)對(duì)象進(jìn)行writeObject()操作,close()
          反串行化:創(chuàng)建FielInputStream,用ObjectInputStream包裝,使用readObject()獲得Object類(lèi)對(duì)象并執(zhí)行強(qiáng)轉(zhuǎn)
          不能串行化的成員用transient標(biāo)注,但反串行時(shí)這些成員將恢復(fù)默認(rèn)值。對(duì)它們的保存引入了書(shū)寫(xiě)private void write/read:注意第一句總是顯示調(diào)用defaulWrite/Read


          七、泛型與集合








          八、內(nèi)部類(lèi)
          一些固定的形式
          (1)靜態(tài)方法訪問(wèn)非靜態(tài)內(nèi)類(lèi):
                          方法為:
                          Outer myouter = new Outer();//這里的myouter是創(chuàng)建的外部類(lèi)的對(duì)象
                          Outer.Inner myinner = myouter.new Inner();//myinner是內(nèi)類(lèi)的對(duì)象
                          然后再myinner.showName();//showName()是外類(lèi)中的非靜態(tài)方法
          (2)非靜態(tài)方法訪問(wèn)非靜態(tài)內(nèi)類(lèi)
                          直接創(chuàng)建該內(nèi)部類(lèi)的對(duì)象:new Inner().showName();
          (3)靜態(tài)方法訪問(wèn)靜態(tài)內(nèi)類(lèi):
                          也是直接創(chuàng)建該內(nèi)部類(lèi)的對(duì)象,即Inner myinner = new Inner()
          或Outer.Inner myinner = new Outer.Inner()
          靜態(tài)內(nèi)部類(lèi)相當(dāng)于一個(gè)靜態(tài)成員,不可以訪問(wèn)非靜態(tài)的對(duì)象,這里一定特別小心,多加注意
          匿名內(nèi)部類(lèi)存在的意義與應(yīng)用的場(chǎng)合

          九、線程
          start()對(duì)我們唯一的保證:每個(gè)線程都將運(yùn)行,每個(gè)線程都將運(yùn)行至結(jié)束
          一旦start(),就永遠(yuǎn)不能重新start()哪怕是它已經(jīng)死去,否則導(dǎo)致運(yùn)行時(shí)異常
          需要熟悉的方法:
          靜態(tài)yield(),大多數(shù)情況下使當(dāng)前線程轉(zhuǎn)入可運(yùn)行狀態(tài),本意是使得具有相同優(yōu)先級(jí)的其他線程獲得運(yùn)行機(jī)會(huì),這同樣無(wú)法得到保證
          靜態(tài)sleep(),轉(zhuǎn)入可運(yùn)行狀態(tài)休眠一段時(shí)間,不放任何鎖;用法Thread.sleep(long),必須包圍在try-catch中
          join(),保證在調(diào)用join()的線程結(jié)束前,當(dāng)前進(jìn)程停止運(yùn)行,也即當(dāng)前執(zhí)行線程內(nèi)join()之后的語(yǔ)句保證在指定線程run()完之后運(yùn)行
          靜態(tài)Thread.currentThread(),返回對(duì)當(dāng)前執(zhí)行線程的引用
          isAlive(),已經(jīng)啟動(dòng),未結(jié)束run()
          start()的調(diào)用需要Thread的實(shí)例,不可以是runnable
          使一個(gè)實(shí)現(xiàn)runnable接口的類(lèi)的實(shí)例啟動(dòng),可以做一個(gè)Thread,也可以直接調(diào)用run方法
          Runnable只有一個(gè)run方法,public void run();若沒(méi)有重寫(xiě)這樣一個(gè)方法,將在聲明實(shí)現(xiàn)接口的地方報(bào)錯(cuò):未能實(shí)現(xiàn)該接口
          線程的啟動(dòng)應(yīng)調(diào)用start(),若直接調(diào)用run()則表示從當(dāng)前正在運(yùn)行的類(lèi)調(diào)用一個(gè)普通的方法,run()進(jìn)入當(dāng)前調(diào)用棧,而不會(huì)啟動(dòng)新的線程;重載的run()只能作為一般方法手動(dòng)調(diào)用
          語(yǔ)法上,將線程傳遞給線程的構(gòu)造器是合法的
          對(duì)線程進(jìn)行setPriority()是沒(méi)有保證的。默認(rèn)的優(yōu)先級(jí)是5
          保護(hù)數(shù)據(jù)的操作:變量標(biāo)識(shí)為private,同步訪問(wèn)這些變量的方法
          在java中,每一個(gè)對(duì)象都有一個(gè)內(nèi)置的鎖,鎖表現(xiàn)出作用的唯一情況是:對(duì)象具有同步方法代碼。當(dāng)使用一個(gè)實(shí)例調(diào)用非靜態(tài)同步方法時(shí),就會(huì)索取該實(shí)例的鎖
          對(duì)一個(gè)實(shí)例,某一時(shí)刻只能有一個(gè)線程鎖定它;拿到鎖的線程可以訪問(wèn)該實(shí)例的任意同步方法/塊,其他線程可以任意訪問(wèn)非同步方法
          為了減少同步對(duì)并發(fā)的影響,可以只將方法的一部分代碼放入同步塊中實(shí)現(xiàn)同步——同步塊應(yīng)當(dāng)指定這部分代碼執(zhí)行時(shí)要鎖定的對(duì)象是誰(shuí):當(dāng)指定this時(shí)可以寫(xiě)成一個(gè)普通的同步方法的形式;對(duì)于靜態(tài)方法,在外圍聲明為synchronized或在block中使用LockTargetClass.class的形式指示鎖定對(duì)象,因?yàn)殪o態(tài)成員只有一份拷貝,要將整個(gè)類(lèi)所有靜態(tài)成員聲明為同步
          當(dāng)對(duì)象的鎖被取走之后,其他試圖訪問(wèn)同步方法的線程被阻塞在鎖上(進(jìn)入阻塞狀態(tài))。他們?cè)谀硞€(gè)特定的池等待對(duì)象的鎖被釋放,返回可運(yùn)行狀態(tài)
          關(guān)于線程在同步上的互相阻塞:
          引用同一實(shí)例訪問(wèn)非靜態(tài)同步方法的線程彼此阻塞
          訪問(wèn)同一類(lèi)中靜態(tài)方法的線程彼此阻塞——他們都在索取同一個(gè)Class實(shí)例的鎖
          訪問(wèn)同一類(lèi)靜態(tài)與非靜態(tài)同步方法的兩個(gè)線程不會(huì)彼此阻塞——一個(gè)在鎖定this,一個(gè)在鎖定class
          同步不同對(duì)象的兩個(gè)方法不會(huì)彼此阻塞
          保持鎖的方法:join(),sleep(),yield(),notify()
          放棄鎖的方法:wait()
          Access to static fields should be done from static synchronized methods. Access
          to non-static fields should be done from non-static synchronized methods
          線程安全類(lèi):不要把同步放在較高的級(jí)別上
          兩個(gè)線程互相等待對(duì)方拿到的鎖——死鎖
          Wait()、notify()等方法是Object類(lèi)的方法,它們只能放入同步塊,這就保證了在獲得同步對(duì)象的鎖之前,不能在對(duì)象上調(diào)用這些方法
          每一個(gè)對(duì)象都可以有一個(gè)表,放置等待它信號(hào)的線程;一旦線程調(diào)用該對(duì)象的wait(),他們就進(jìn)入這個(gè)列表之中,在目標(biāo)對(duì)象調(diào)用notify()之前,這些線程什么都不做——也就是說(shuō),看到wait()但找不到notify(),則wait()之后的東西永遠(yuǎn)不會(huì)發(fā)生(假如可以正確編譯的話)在wait時(shí),線將程釋放鎖
          a waiting thread will not return to runnable when the lock is released, unless a notification occurs
          考慮:有時(shí)notify()可能會(huì)先于wait()而發(fā)生調(diào)用。這樣notify()不會(huì)再發(fā)生,而后開(kāi)始的wait()等不到結(jié)果。所以在等待之前,應(yīng)當(dāng)檢查notify()是否已經(jīng)發(fā)生。
          阻止線程運(yùn)行總結(jié):
          睡眠:睡眠指定的時(shí)間,醒來(lái)時(shí)是可運(yùn)行狀態(tài),也即不保證醒來(lái)就是運(yùn)行狀態(tài);sleep()是一個(gè)靜態(tài)方法,因此在不能有一種做法可以讓一個(gè)線程使另一個(gè)線程睡眠——當(dāng)前運(yùn)行線程的代碼看到sleep()時(shí),即刻睡去
          等待:
          因?yàn)樾枰粋€(gè)對(duì)象的鎖定而被阻塞

          ============一點(diǎn)建議===============

          初學(xué)的幾本書(shū)
          mcgraw hill的scjp5 guide。這本書(shū)總結(jié)了很多容易犯錯(cuò)誤或者難以真正理解的地方,當(dāng)然這一點(diǎn)跟它“考試輔導(dǎo)”的身份有著密切關(guān)聯(lián),一些地方會(huì)專(zhuān)門(mén)為考試來(lái)講解。但它仍然是一本很好的初學(xué)手冊(cè),順利地讀完并理解之后,就可以有比較充分的準(zhǔn)備邁進(jìn)java的大門(mén)了。要注意的是應(yīng)當(dāng)讀英文原版而不是中文版,除非你對(duì)自己閱讀邏輯混亂文不搭義的語(yǔ)句的能力充分自信,并且不在乎這樣那樣的翻譯錯(cuò)誤
          o'reilly的java 1.5 tiger。配合tij來(lái)看吧,大家讀的tij大多都是3rd edition不是么
          java puzzlers。能夠全部弄清的話,很多概念就徹底理解了吧
          最后,自然是thinking in java。我讀了一遍,正準(zhǔn)備重修一遍
          其他如java 線程、java io等等具體領(lǐng)域的轉(zhuǎn)本,不妨有一個(gè)全面的基礎(chǔ)之后有選擇地瀏覽

          要注意的地方
          我覺(jué)得java也好cpp也好,都要對(duì)體現(xiàn)語(yǔ)言特性的地方做到真正透徹的理解
          對(duì)于java,諸如初學(xué)最容易輕視的引用、初始化與聲明、值傳遞與引用傳遞、靜態(tài)成員等地方,都不要留下疑惑
          posted @ 2007-05-11 15:45 滄佰 閱讀(175) | 評(píng)論 (1)編輯 收藏
          僅列出標(biāo)題  
          主站蜘蛛池模板: 高密市| 滁州市| 中江县| 崇礼县| 左贡县| 普兰县| 东乡| 宿迁市| 朝阳区| 无棣县| 梨树县| 上蔡县| 兴义市| 志丹县| 新宾| 杭锦后旗| 花垣县| 永川市| 喀喇| 澄迈县| 罗江县| 信阳市| 来安县| 新河县| 寿阳县| 宁夏| 合水县| 东安县| 乐安县| 青海省| 当雄县| 长岛县| 仲巴县| 巴林右旗| 民丰县| 正定县| 辽阳县| 邓州市| 吉木乃县| 扬州市| 绥棱县|