Vincent Jia 博客

          to be a better man, to be a bad man.

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            29 隨筆 :: 3 文章 :: 0 評論 :: 0 Trackbacks

          2011年12月8日 #

          2016年,收獲了什么,失去了什么。 
          博客沒有寫作。
          國家大事件幾多。
          posted @ 2017-12-04 16:53 iLinux 閱讀(217) | 評論 (0)編輯 收藏

          The Collections Framework







          The collections framework is a unified architecture for representing and manipulating collections, allowing them to be manipulated independently of the details of their representation. It reduces programming effort while increasing performance. It allows for interoperability among unrelated APIs, reduces effort in designing and learning new APIs, and fosters software reuse. The framework is based on fourteen collection interfaces. It includes implementations of these interfaces, and algorithms to manipulate them.
          Overview
          • Overview - An overview of the Collections framework.
          API Specification
          • API Reference - An annotated outline of the classes and interfaces comprising the collections framework, with links into the JavaDoc.
          Tutorials and Programmer's Guides
          • Tutorial - A tutorial introduction to the collections framework with plenty of programming examples.
          API EnhancementsMore Information
          • Design FAQ- Answers to frequently asked questions concerning the design of the collections framework.

          From: http://docs.oracle.com/javase/6/docs/technotes/guides/collections/index.html
          posted @ 2012-07-06 16:15 iLinux 閱讀(275) | 評論 (0)編輯 收藏

          API Enhancements

          posted @ 2012-07-06 16:14 iLinux 閱讀(281) | 評論 (0)編輯 收藏

          LinkedHashSet是JDK 1.4中引入的新的集合類(LinkedHashMap也是同期引入)。 LinkedHashSet,顧名思義,就是在Hash的實現上添加了Linked的支持。對于LinkedHashSet,在每個節點上通過一個鏈表串聯起來,這樣,就可以保證確定的順序。對于希望有常量復雜度的高效存取性能要求、同時又要求排序的情況下,可以直接使用LinkedHashSet。

          它實現了Set接口。存入Set的每個元素必須是唯一的,因為Set不保存重復元素。但是Set接口不保證維護元素的次序(那里面的元素每次順序如何確定?TODO)。Set與Collection有完全一樣的接口Iterable,同時Set繼承了Collection。

          LinkedHashSet具有HashSet的查詢速度,且內部使用鏈表維護元素的順序(插入的順序),于是在使用迭代器便利Set時,結果會按元素插入的次序顯示。

          需求如: 含多個(有重復)元素ArrayList,去除重復。

          1, 可以使用如下略顯冗余的代碼:
           1 public static List removeDuplicateWithOrder(List list) {
           2         Set set = new HashSet();
           3         List newList = new ArrayList();
           4         for (Iterator iter = list.iterator(); iter.hasNext();) {
           5             Object element = iter.next();
           6             if (set.add(element))
           7                 newList.add(element);
           8         }
           9         return newList;
          10     }
          此方法有濫用set之嫌。

          2, 我們也可以使用本文章中提及的LinkedHashSet:
          return new ArrayList<T>(new LinkedHashSet<T>(list));
          此方法,既利用set去除了重復,又使用linked保持住了原順序。

          3, 貌似apache commons lang中有專門去重復的集合工具。

          這兒的鏈表操作是常量級的,這也是LinkedHashSet/LinkedHashMap比TreeSet/TreeMap性能更高的原因。當然,LinkedHashSet不是thread-safe的,在多線程環境下,需要進行同步包裝:
          Collections.synchronizedCollection(Collection);
          or:
          Collections.synchronizedSet(Set);
          在使用LinkedHashSet的iterator()方法遍歷元素時,如果其他線程有讀取操作,也要進行同步,否則,就會拋出同其它fail-fast一樣的由于刪除或增加操作而引起的CurrentModificationException。


          如上兩種方法的效率比較,設為TODO,
          1, 利用set.add(element)方法,本質是利用其contains()方法判斷,而contains()的本質就是遍歷。
          JDK doc中寫道:
          More formally, adds the specified element e to this set if the set contains no element e2 such that (e==null ? e2==null : e.equals(e2)). If this set already contains the element, the call leaves the set unchanged and returns false. In combination with the restriction on constructors, this ensures that sets never contain duplicate elements.
          2, 測試數據,可以使用數據量:1W,5W,10W,100W。

          posted @ 2012-07-06 11:54 iLinux 閱讀(6221) | 評論 (0)編輯 收藏

          在當前的系統中,大量使用了非泛型模式的Collection、List、Map、HashMap、HashTable。
          其關系、區別在于。
          posted @ 2012-06-29 17:50 iLinux 閱讀(264) | 評論 (0)編輯 收藏

          在美國得克薩斯州的一個風雪交加的夜晚,一位名叫克雷斯的年輕人因為汽車“拋錨”被困在郊外。正當他萬分焦急的時候,有一位騎馬的男子正巧經過這里。見此情景,這位男子二話沒說便用馬幫助克雷斯把汽車拉到了小鎮上。 事后,當感激不盡的克雷斯拿出不菲的美鈔對他表示酬謝時,這位男子說:“這不需要回報,但我要你給我一個承諾,當別人有困難的時候,你也要盡力幫助他人。”于是,在后來的日子里,克雷斯主動幫助了許許多多的人,并且每次都沒有忘記轉述那句同樣的話給所有被他幫助的人。 許多年后的一天,克雷斯被突然暴發的洪水困在了一個孤島上,一位勇敢的少年冒著被洪水吞噬的危險救了他。當他感謝少年的時候,少年竟然也說出了那句克雷斯曾說過無數次的話:“這不需要回報,但我要你給我一個承諾……” 克雷斯的胸中頓時涌起了一股暖暖的激流:“原來,我穿起的這根關于愛的鏈條,周轉了無數的人,最后經過少年還給了我,我一生做的這些好事,全都是為我自己做的!”  當您有幸看到此消息時,請轉發給自己的朋友親人。我相信有更多的人需要我們的幫助, 正義會傳染 邪惡也是如此, 為現在的別人做善事也是為了將來的自己。
          傳遞溫暖,拒絕冷漠。
            1、如果錢還寬裕,別養二奶,偷偷養幾個貧困山區的學生,你心里一定會覺得舒坦;
            2、遇到夜里擺地攤的,能買就多買一些,別還價,東西都不貴。家境哪怕好一點,誰會大冷天夜里擺地攤;
              遇到學生出來勤工儉學的,特別是中學生、小姑娘,她賣什么你就買點。如果她不是家庭困難,出來打工也需要勇氣的,鼓勵鼓勵她吧;   
            3、撿到錢包就找找失主。如果你實在缺錢就把現金留下,打電話告訴失主就說你在廁所里撿到的。把信用卡、身份證、駕駛執照還給人家,一般別人也不會在乎錢了。把人家的地址記在你的筆記本上,以后發達了去找人家道個歉,把錢還給人家;   
            4、遇到問路的,碰巧你又知道那個地址,就主動告訴一聲。別不好意思,沒有人笑話你;    
            5、如果丟的垃圾里有碎玻璃、大頭針、刀片等,請用膠帶把它們纏裹一下,并盡量多纏幾層。這樣就降低了保潔人員或者撿垃圾者被傷害的概率。他們大都是沒有醫保的弱勢群體,體貼體貼他們吧,好人會有好報的。
            6、遇到迷路的小孩和老頭老太,能送回家送回家,不能送回家的送上車、送到派出所也行。替老人或小孩打個電話再走,反正你也不缺那兩個電話費;    
            7、雨雪的時候、天冷的傍晚,遇到賣菜的、賣水果的,剩的不多了又不能回家,能全買就全買,不能全買就買一份,反正吃什么也是吃,買下來讓人早點回家;   
            8、上車遇到老弱病人、孕婦,讓座的時候別動聲色,也別大張旗鼓。站起來用身體擋住其他人,留出空位子給需要的人,然后裝作下車走遠點。人太多實在走不遠,人家向你表示謝意的時候微笑一下;   
            9、不要對有精神信念的人用猥褻言詞,要知道中國人缺就缺在沒有信仰。這世界什么都在變,什么都不可全信,唯有信念不變、不動、永恒;   
            10、如果您的時間還寬裕,把這幾句話轉幾個群,網上很多人看,轉了心里舒坦。
            11、一般情況,看完這段文章而且主動到各個群里轉發的人,都還是遺留著傳統美德的中國好人
          posted @ 2012-06-27 23:08 iLinux 閱讀(252) | 評論 (0)編輯 收藏

          在文章http://www.aygfsteel.com/aoxj/archive/2012/06/16/380926.html中,看到案例,++符號并不是原子操作,
          posted @ 2012-06-27 23:08 iLinux 閱讀(231) | 評論 (0)編輯 收藏

          李小龍傳奇 - 15 Kick-ass Bruce Lee quotes
          http://www.slideshare.net/thepresentationdesigner/15-kickass-bruce-lee-quotes
          posted @ 2012-06-25 17:33 iLinux 閱讀(233) | 評論 (0)編輯 收藏

          OoO
          http://www.bbc.co.uk/worldservice/learningenglish/language/wordsinthenews/2011/08/110803_witn_korea.shtml
          http://developer.51cto.com/col/461/
          http://www.google.com/search?q=runtimeexception&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:zh-CN:official&client=firefox-a#sclient=psy&hl=en&client=firefox-a&rls=org.mozilla:zh-CN%3Aofficial&source=hp&q=spring3+%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86&pbx=1&oq=spring3+%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86&aq=f&aqi=&aql=&gs_sm=e&gs_upl=316376l316376l4l316608l1l1l0l0l0l0l0l0ll0l0&fp=1&biw=1280&bih=769&bav=on.2,or.r_gc.r_pw.,cf.osb&cad=b
          http://www.infoq.com/cn/news/2011/01/git-adventures-1
          http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html
          http://www.linuxeden.com/forum/thread-191912-1-1.html
          http://books.slashdot.org/story/04/11/12/2042249/How-Tomcat-Works
          http://static.springsource.org/spring/docs/3.1.0.M2/spring-framework-reference/html/orm.html#orm-hibernate
          http://stackoverflow.com/questions/tagged/spring?sort=faq&pagesize=15
          http://xiaolinjava.iteye.com/blog/684292
          http://www.donews.com/original/201112/1011333.shtm
          http://www.readwriteweb.com/archives/top_10_social_web_products_of_2011.php
          http://www.readwriteweb.com/archives/the_10_biggest_web_news_stories_of_2011.php
          http://blog.csdn.net/buoll/article/details/1851149
          http://www.aygfsteel.com/masen/articles/118701.html
          http://www.baidu.com/s?bs=org.springframework.jdbc.datasource.DriverManagerDataSource&f=8&rsv_bp=1&wd=tomcat+jndi&inputT=2640
          http://home.51.com/xiaohei267/diary/item/10048051.html
          http://blog.csdn.net/wzl002/article/details/5969635
          http://www.baidu.com/s?bs=spring+controller+%D7%AA%B7%A2&f=8&rsv_bp=1&wd=spring+3.0+%B4%EE%BD%A8&inputT=7004
          http://book.ifeng.com/lianzai/detail_2010_08/25/2309143_11.shtml
          http://www.learnamericanenglishonline.com/
          http://bulo.hjenglish.com/app/menu/558/
          http://bulo.hjenglish.com/menu/zzk?langs=en
          posted @ 2011-12-30 15:46 iLinux 閱讀(303) | 評論 (0)編輯 收藏

          沃夏克的《自新大陸交響曲》 卡拉揚指揮



          posted @ 2011-12-30 03:45 iLinux 閱讀(210) | 評論 (0)編輯 收藏

          “開-閉”原則 (Open-Closed principle, OCP)

           

          一個軟件實體應當對擴展開放,對修改關閉。

          Software entities should be open for extension, but closed for modification.

          在設計一個模塊的時候,應當使這個模塊可以在不被修改的前提下被擴展。

           

          “可變性的封裝原則”從工程的角度講解了如何實現“開-閉”原則。

             “可變性的封裝原則”意味著兩點:

          1.一種可變性不應當散落在代碼的很多角落里,而應當被封裝到一個對象里面。繼承應當被看做是封裝變化的方法,而不應當被認為是從一般的對象生成特殊的對象方法。

          2.一種可變性不應當與另一種可變性混合在一起。所有的類圖的繼承結構一般不會超過兩層,不然就意味著將兩種不同的可變性混合在一起。

           

          “開-閉”原則與其他原則的關系:

           

          里氏代換原則是,任何基類可以出現的地方,子類一定可以出現。

          里氏代換原則是對“開-閉”原則的補充。實現“開-閉”原則的關鍵步驟就是抽象化,而基類與子類的繼承關系就是抽象化的具體體現,所以里氏代換原則是對實現抽象化的具體步驟的規范。違反里氏代換原則的,也違背“開-閉”原則,反之不一定成立。

           

          依賴倒轉原則是,要依賴于抽象,不要依賴于實現。

          “開-閉”原則是目標,依賴倒轉原則是手段。

           

          合成/聚合復用原則是,要盡量使用合成/聚合,而不是繼承關系達到復用的目的。

          合成/聚合復用原則與里氏代換原則相輔相成,兩者都是實現“開-閉”原則的具體步驟的規范。

           

          迪米特法則是,一個軟件實體應當與盡可能少的其他實體發生相互作用。

          一個遵守迪米特原則設計出來的系統在功能需要擴展時,會相對更容易地做到對修改的關閉。

           

          接口隔離原則是,應當為客戶端提供盡可能小的單獨的接口,而不是提供大的總接口。

          接口隔離原則與廣義的迪米特法則都是對一個軟件實體與其他的軟件實體的通信的限制。遵循接口隔離原則,會使一個軟件系統在功能擴展的過程當中,不會將修改的壓力傳遞到其他的對象。

           

          一個重構方法的討論

           

          “將條件轉移語句改寫成為多態性”是一條廣為流傳的代碼重構做法。

          這一做法本身并不能保證“開-閉”原則,應當以“開-閉”原則判斷是否需要改寫成多態。條件轉移并不是錯誤,如果需要,完全可以選擇使用條件轉移。

          如果一個條件轉移語句確實封裝了某種商務邏輯的可變性,那么將此種可變性封裝起來就符合“開-閉”原則設計思想了。如果一個條件轉移語句沒有涉及重要的商務邏輯,或者不會隨著時間的變化而變化,也不意味著任何的可擴展性,那么它就沒有涉及任何有意義的可變性。這時候將這個條件轉移語句改寫成多態性就是一種沒有意義的浪費。

           

          抽象類應當擁有盡可能多的共同代碼

           在一個繼承的等級結構中,共同的代碼應當盡量向等級結構的上方移動。把重復的代碼從子類里面移動到超類里面,可以提高代碼的復用率。在代碼發生改變時,設計師之需要修改一個地方。

           

          抽象類應當擁有盡可能少的數據

          與代碼的移動方向相反,數據的移動方向是從抽象類到具體類,向等級結構的下方移動。一個對象的數據不論是否使用都會占用資源,所以應當放到等級結構的低端。

           

          什么時候才應當使用繼承復用

          1.子類是超類的一個特殊種類,而不是超類的一個角色,Is-A才符合繼承關系。

          2.永遠不會出現需要將子類換成另一個類的子類的情況。

          3.子類具有擴展超類的責任,而不是具有置換掉(Override)和注銷掉(Nullify)超類的責任。

          4.只有在分類學角度上有意義時,才可以使用繼承,不要從工具類繼承。


          轉載自:“開-閉”原則 (Open-Closed principle, OCP)
          posted @ 2011-12-08 16:51 iLinux 閱讀(205) | 評論 (0)編輯 收藏

          前段時間系統升級時遭遇了OOM,具體解決過程見 遭遇OutOfMemoryError
          為了鞏固對于java啟動各項參數的認識,決定將所有參數列舉出來,并一一解釋,以便后查;

          java啟動參數共分為三類;
          其一是標準參數(-),所有的JVM實現都必須實現這些參數的功能,而且向后兼容;
          其二是非標準參數(-X),默認jvm實現這些參數的功能,但是并不保證所有jvm實現都滿足,且不保證向后兼容;
          其三是非Stable參數(-XX),此類參數各個jvm實現會有所不同,將來可能會隨時取消,需要慎重使用;
          本文主要描述標準參數部分,剩下的兩個部分將會陸續推出;

          標準參數列表如下:
          -client 
           設置jvm使用client模式,特點是啟動速度比較快,但運行時性能和內存管理效率不高,通常用于客戶端應用程序或者PC應用開發和調試。

          -server
           設置jvm使server模式,特點是啟動速度比較慢,但運行時性能和內存管理效率很高,適用于生產環境。在具有64位能力的jdk環境下將默認啟用該模式,而忽略-client參數。

          -agentlib:libname[=options] 
           用于裝載本地lib包;
           其中libname為本地代理庫文件名,默認搜索路徑為環境變量PATH中的路徑,options為傳給本地庫啟動時的參數,多個參數之間用逗號分隔。在Windows平臺上jvm搜索本地庫名為libname.dll的文件,在linux上jvm搜索本地庫名為libname.so的文件,搜索路徑環境變量在不同系統上有所不同,比如Solaries上就默認搜索LD_LIBRARY_PATH。
           比如:-agentlib:hprof
           用來獲取jvm的運行情況,包括CPU、內存、線程等的運行數據,并可輸出到指定文件中;windows中搜索路徑為JRE_HOME/bin/hprof.dll。

          -agentpath:pathname[=options] 
           按全路徑裝載本地庫,不再搜索PATH中的路徑;其他功能和agentlib相同;更多的信息待續,在后續的JVMTI部分會詳述。

          -classpath classpath 
          -cp classpath
           
           告知jvm搜索目錄名、jar文檔名、zip文檔名,之間用分號;分隔;使用-classpath后jvm將不再使用CLASSPATH中的類搜索路徑,如果-classpath和CLASSPATH都沒有設置,則jvm使用當前路徑(.)作為類搜索路徑。
           jvm搜索類的方式和順序為:Bootstrap,Extension,User。
           Bootstrap中的路徑是jvm自帶的jar或zip文件,jvm首先搜索這些包文件,用System.getProperty("sun.boot.class.path")可得到搜索路徑。
           Extension是位于JRE_HOME/lib/ext目錄下的jar文件,jvm在搜索完Bootstrap后就搜索該目錄下的jar文件,用System.getProperty("java.ext.dirs")可得到搜索路徑。
           User搜索順序為當前路徑.、CLASSPATH、-classpath,jvm最后搜索這些目錄,用System.getProperty("java.class.path")可得到搜索路徑。

          -Dproperty=value
           設置系統屬性名/值對,運行在此jvm之上的應用程序可用System.getProperty("property")得到value的值。
           如果value中有空格,則需要用雙引號將該值括起來,如-Dname="space string"。
           該參數通常用于設置系統級全局變量值,如配置文件路徑,以便該屬性在程序中任何地方都可訪問。

          -enableassertions[:<package name>"..." | :<class name> ] 
          -ea[:<package name>"..." | :<class name> ]
           
           上述參數就用來設置jvm是否啟動斷言機制(從JDK 1.4開始支持),缺省時jvm關閉斷言機制。
           用-ea 可打開斷言機制,不加<packagename>和classname時運行所有包和類中的斷言,如果希望只運行某些包或類中的斷言,可將包名或類名加到-ea之后。例如要啟動包com.wombat.fruitbat中的斷言,可用命令java -ea:com.wombat.fruitbat...<Main Class>。

          -disableassertions[:<package name>"..." | :<class ; ] 
          -da[:<package name>"..." | :<class name> ]

           用來設置jvm關閉斷言處理,packagename和classname的使用方法和-ea相同,jvm默認就是關閉狀態。
           該參數一般用于相同package內某些class不需要斷言的場景,比如com.wombat.fruitbat需要斷言,但是com.wombat.fruitbat.Brickbat該類不需要,則可以如下運行:
           java -ea:com.wombat.fruitbat...-da:com.wombat.fruitbat.Brickbat <Main Class>。
           
          -enablesystemassertions 
          -esa
           
           激活系統類的斷言。
           
          -disablesystemassertions 
          -dsa
           
           關閉系統類的斷言。

          -jar 
           指定以jar包的形式執行一個應用程序。
           要這樣執行一個應用程序,必須讓jar包的manifest文件中聲明初始加載的Main-class,當然那Main-class必須有public static void main(String[] args)方法。

          -javaagent:jarpath[=options] 
           指定jvm啟動時裝入java語言設備代理。
           Jarpath文件中的mainfest文件必須有Agent-Class屬性。代理類也必須實現公共的靜態public static void premain(String agentArgs, Instrumentation inst)方法(和main方法類似)。當jvm初始化時,將按代理類的說明順序調用premain方法;具體參見java.lang.instrument軟件包的描述。

          -verbose 
          -verbose:class
           
           輸出jvm載入類的相關信息,當jvm報告說找不到類或者類沖突時可此進行診斷。
          -verbose:gc 
           輸出每次GC的相關情況。
          -verbose:jni 
           輸出native方法調用的相關情況,一般用于診斷jni調用錯誤信息。
           
          -version 
           輸出java的版本信息,比如jdk版本、vendor、model。
          -version:release 
           指定class或者jar運行時需要的jdk版本信息;若指定版本未找到,則以能找到的系統默認jdk版本執行;一般情況下,對于jar文件,可以在manifest文件中指定需要的版本信息,而不是在命令行。
           release中可以指定單個版本,也可以指定一個列表,中間用空格隔開,且支持復雜組合,比如:
           -version:"1.5.0_04 1.5*&1.5.1_02+"
           指定class或者jar需要jdk版本為1.5.0_04或者是1.5系列中比1.5.1_02更高的所有版本。

          -showversion 
           輸出java版本信息(與-version相同)之后,繼續輸出java的標準參數列表及其描述。
           
          -? 
          -help
           
           輸出java標準參數列表及其描述。

          -X 
           輸出非標準的參數列表及其描述。

          以上的這些參數我們經常會在很多情況下用到多個的組合,比如我們在用JProfiler進行跟蹤監控時,需要在被監控java啟動參數中加上如下配置:
          -agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/usr/local/jprofiler5/bin/agent.jar
          其中就用到兩個-agentlib和-X參數,bootclasspath參數的詳細信息將會在非標準參數中詳細說明。

          轉自:http://blog.csdn.net/sfdev/article/details/2062042

          這篇文章補充說明了-X、-XX參數的說明:Java命令行運行參數說明大全(偷來的)

          posted @ 2011-12-08 15:49 iLinux 閱讀(5150) | 評論 (0)編輯 收藏

               摘要: 作者:北南南北贊助: eTony,pandonny,懶貓, Arch來自:LinuxSir.Org摘要: 超級用戶是系統最高權限的擁有者,是系統管理唯一的勝任者;由于權限的超級并且達到無所不能的地步,如果管理不擅,必會對系統安全造成威脅。 除了盡可能的避免用直接用超級用戶root登錄系統外,我們還要學會在普通用戶下臨時切換到超級用戶root下完成必要的系統管理工作;從用戶管理和...  閱讀全文
          posted @ 2011-12-08 15:36 iLinux 閱讀(1514) | 評論 (0)編輯 收藏

          hibernate中,比如B類繼承了A類,它們是可以對應同一張表的。
          可以參考如下文章Hibernate繼承映射一:每個類分層結構一張表

          posted @ 2011-12-08 12:50 iLinux 閱讀(139) | 評論 (0)編輯 收藏

          1 web容器啟動,初始化ActionServlet,加載struts-config.xml,根據請求路徑和信息找到ActionBean與FormBean

          2 確定將要調用的ActionBean與FormBean,將請求中包含的值填充到FormBean中(Action中要準備好ActionMapping的參數)

          3 struts將請求分發到相應的的ActionBean處理,ActionMapping參數ActionForm參數request,resposne都做為參數傳給處理請求的ActionBean的execute方法

          4 Action調用業務邏輯方法,得到返回值ActionForward對象

          5 控制控重回ActionServlet,根據Action返回的ActionForward對象,轉發到相應的頁面

          6 處理結果返回瀏覽器

          posted @ 2011-12-08 12:29 iLinux 閱讀(114) | 評論 (0)編輯 收藏

          UML類圖中的關聯、聚合、組合

          posted @ 2011-12-08 12:25 iLinux 閱讀(131) | 評論 (0)編輯 收藏

          nio:  http://jiayanjujyj.iteye.com/blog/1044364



          posted @ 2011-12-08 00:14 iLinux 閱讀(818) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 海伦市| 繁昌县| 东丽区| 河津市| 云梦县| 罗源县| 陕西省| 苏尼特左旗| 石景山区| 日照市| 巴南区| 兴文县| 安塞县| 承德市| 介休市| 光泽县| 邳州市| 英德市| 上高县| 五原县| 民勤县| 大邑县| 蒙阴县| 资讯 | 万盛区| 内丘县| 班玛县| 西华县| 红桥区| 德安县| 绥化市| 潮安县| 临西县| 新建县| 武定县| 湟源县| 满洲里市| 柘荣县| 浏阳市| 广州市| 云浮市|