amp@java

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            99 隨筆 :: 0 文章 :: 228 評論 :: 0 Trackbacks

          #

          昨天在調(diào)試一段Android程序的時(shí)候發(fā)現(xiàn)總是出現(xiàn)NullPointerException,是來自一句System.out.println(),但是把里面的內(nèi)容分拆了幾次都找不到哪里有null,最后發(fā)現(xiàn)居然是因?yàn)樽罱K輸出的字符串是null!

          一直以來,在JavaSE里,如果字符串本身是null,System.out.println()打印該字符串,會(huì)在終端輸出“null”,而在Android里卻是直接拋出NullPointerException,整個(gè)程序都會(huì)被終止。

          大家可以測試一下下面的語句在兩種環(huán)境下的運(yùn)行結(jié)果:
          1 String s = null;
          2 System.out.println(s);
          posted @ 2012-02-13 14:49 amp@java 閱讀(1391) | 評論 (1)編輯 收藏

          這是mars課程里面關(guān)于handler和線程的一個(gè)例子:
          package mars.handler;

          import android.app.Activity;
          import android.os.Bundle;
          import android.os.Handler;

          public class HandlerTest extends Activity {
              Handler handler 
          = new Handler();
              
          /** Called when the activity is first created. */
              @Override
              
          public void onCreate(Bundle savedInstanceState) {
                  
          super.onCreate(savedInstanceState);
                  System.out.println(
          "1");
                  handler.post(r);
                  System.out.println(
          "2");
                  setContentView(R.layout.main);
                  System.out.println(
          "activity---->"+Thread.currentThread().getId());
                  System.out.println(
          "activity name--->"+Thread.currentThread().getName());
              }
              
              Runnable r 
          = new Runnable() {
                  
                  @Override
                  
          public void run() {
                      
          // TODO Auto-generated method stub
                      System.out.println("handler---->"+Thread.currentThread().getId());
                      System.out.println(
          "handlername---->"+Thread.currentThread().getName());
                      
          try {
                          Thread.sleep(
          10000);
                      } 
          catch (InterruptedException e) {
                          
          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }
                      System.out.println(
          "3");
                  }
              };
          }

          根據(jù)mars的解釋,handler所在的線程跟Activity的線程是同一個(gè)線程,所以在
          handler.post(r);
          語句后,執(zhí)行的是Runnable里面的run函數(shù),這個(gè)函數(shù)沒有在新開的線程中執(zhí)行,只是簡單地調(diào)用了run函數(shù),所以這個(gè)app在模擬器運(yùn)行時(shí)要過10秒才會(huì)顯示界面,因?yàn)閞un函數(shù)里面睡眠了10秒,等它返回后才執(zhí)行setContentView函數(shù)設(shè)置界面元素。
          根據(jù)實(shí)際運(yùn)行結(jié)果,的確是過了10秒才能顯示界面。

          但是奇怪的是System.out語句似乎沒有受到影響,下面是日志:
          log
          02-09 11:12:43.553: INFO/System.out(591): 1
          02-09 11:12:43.553: INFO/System.out(591): 2
          02-09 11:12:43.674: INFO/System.out(591): activity---->1
          02-09 11:12:43.674: INFO/System.out(591): activity name--->main
          02-09 11:12:43.713: INFO/System.out(591): handler---->1
          02-09 11:12:43.713: INFO/System.out(591): handlername---->main
          02-09 11:12:53.775: INFO/System.out(591): 3

          從日志可以看出,除了run函數(shù)里面睡眠后才執(zhí)行的打印函數(shù)推遲了10秒才執(zhí)行之外,其他都是沒有受到任何延時(shí),順序執(zhí)行的,在
          handler.post(r);
          語句前后的打印函數(shù)都被按順序執(zhí)行了,唯獨(dú)
          setContentView(R.layout.main);
          需要在run函數(shù)返回后才執(zhí)行,這是什么道理?難道打印函數(shù)的優(yōu)先級更高,不會(huì)堵塞?如果是這樣的話為什么在run函數(shù)里面還是要等睡眠結(jié)束才執(zhí)行呢?
          posted @ 2012-02-09 19:25 amp@java 閱讀(1843) | 評論 (6)編輯 收藏

          很想搞點(diǎn)Android的小程序玩玩,但是卻萬事開頭難,不知道從哪里開始,看了官方的文檔,結(jié)果一天都看不了幾段,還是英文的,比較痛苦。找了些電子書,也是看過目錄就不知道放哪里了。這種編程的入門沒有強(qiáng)大的決心真的很難靜下心來學(xué)習(xí)。
          前幾天又心血來潮,搜索了一下android開發(fā)的網(wǎng)站,發(fā)現(xiàn)了一些視頻,看起來還挺有意思,連續(xù)看了幾個(gè),慢慢地也摸著一點(diǎn)門路了,以前沒有試過用這種方法學(xué)習(xí),都是看書,現(xiàn)在發(fā)現(xiàn)看視頻似乎更高效,起碼眼睛沒那么累,有人在念,很多時(shí)候只要用耳朵聽就行了,而且所有軟件的界面、步驟都很清楚,這些東西通過書是沒法表現(xiàn)出來的。
          現(xiàn)在學(xué)會(huì)了讓一個(gè)Activity顯示出來,放上點(diǎn)控件,處理一下點(diǎn)擊,頁面布局等,算是入門了,但很多東西還要繼續(xù)看,那些視頻還有好多。
          入門系列視頻地址:
          http://www.marsdroid.org/
          還有一個(gè)深入淺出系列:
          http://www.eoeandroid.com/thread-109361-1-1.html
          由于沒有入門,所以還在看第一個(gè)系列,第二個(gè)系列只看了兩個(gè)。
          到現(xiàn)在發(fā)現(xiàn)android界面的構(gòu)建很像web界面,android是通過layout來排布控件,而web是通過css,android可以通過java來操縱控件,而web則是通過javascript操縱控件,回調(diào)函數(shù)則跟JavaSE一樣。



          不過有時(shí)候很容易忘記了一個(gè)步驟導(dǎo)致程序運(yùn)行出錯(cuò),一般來說,要讓一個(gè)Activity成功運(yùn)行,需要做以下步驟:
          1、有一個(gè)繼承與Activity的類
          2、有一個(gè)layout文件,里面是各種控件的布局,在Activity里面應(yīng)該用setContentView加載這個(gè)layout
          3、有一個(gè)strings文件,里面是界面的各種字符串,用于國際化
          4、在AndroidManifest里面加入這個(gè)Activity
          第4步很容易忘記。
          posted @ 2012-02-08 14:55 amp@java 閱讀(267) | 評論 (0)編輯 收藏

          前段時(shí)間聽了一家公司介紹分布式存儲(chǔ)產(chǎn)品,號稱性能超過傳統(tǒng)的磁盤陣列+小型機(jī),但價(jià)格卻比這種組合低,而且具有維護(hù)簡單、數(shù)據(jù)安全等優(yōu)點(diǎn),其核心就是把一些PC服務(wù)器通過網(wǎng)絡(luò)連接起來,把數(shù)據(jù)分散存儲(chǔ)在這些服務(wù)器上,查找的時(shí)候把任務(wù)分配到這些服務(wù)器上,讓它們分別完成各自的小任務(wù),最后再匯合出結(jié)果,核心就是:每個(gè)節(jié)點(diǎn)都是一個(gè)數(shù)據(jù)存儲(chǔ)單元和運(yùn)算單元的結(jié)合,這些節(jié)點(diǎn)性能要求不高,可以是各種各樣的配置,只要在上面運(yùn)行集群要求的軟件即可,一臺(tái)掛了不要緊,換上去一臺(tái)就能自動(dòng)恢復(fù),增加一臺(tái)就能提高性能,減少一臺(tái)也不會(huì)有很大影響,只是性能稍微下降,每份數(shù)據(jù)都有多個(gè)備份,能夠平衡分布在各服務(wù)器上。這種架構(gòu)的缺點(diǎn)是,只要用上了這套東西,所有的軟件就必須從這家公司購買,因?yàn)檎麄€(gè)集群的控制和訪問接口都是他們提供的。
          該公司也坦言這其實(shí)就是google的服務(wù)器應(yīng)用技術(shù),實(shí)際上就是google提出來的云計(jì)算。

          今天看了一些文章介紹,發(fā)現(xiàn)上面介紹的東西實(shí)際上已經(jīng)通過Apache的一個(gè)項(xiàng)目Hadoop實(shí)現(xiàn),不知道那家公司是不是就是簡單包裝了一下這個(gè)項(xiàng)目。

          Hadoop包含兩個(gè)主要的模塊,分別是HDFS分布式文件系統(tǒng)和MapReduce集群計(jì)算機(jī)制。剛剛發(fā)布了1.0.0版本。

          主頁: http://hadoop.apache.org/

          blogjava有位高手已經(jīng)翻譯了HDFS的架構(gòu)說明:http://www.aygfsteel.com/killme2008/archive/2008/06/05/206043.html,但對應(yīng)的是上一個(gè)版本0.20的,里面說到了很多沒有實(shí)現(xiàn)的東西,不知道是否已經(jīng)在1.0版本實(shí)現(xiàn),目前官方網(wǎng)站上該文章的版本還是0.20的。

          這里有三篇文章介紹Hadoop在單機(jī)環(huán)境、多機(jī)環(huán)境下的安裝和配置,還有應(yīng)用程序的開發(fā):http://www.ibm.com/developerworks/cn/linux/l-hadoop-1/index.html

          看起來還是挺有意思的,以前就曾經(jīng)有過想法,把單位淘汰下來的那一大堆臺(tái)式電腦組成一個(gè)存儲(chǔ)或者計(jì)算的小集群,也許能夠代替一兩臺(tái)PC服務(wù)器,現(xiàn)在看來可以試試,以后的趨勢就是云計(jì)算了,先自己搞點(diǎn)小云看看效果如何。
          posted @ 2012-01-19 14:47 amp@java 閱讀(229) | 評論 (0)編輯 收藏

          這個(gè)不僅僅是IE6的錯(cuò),而是所有IE的錯(cuò)!!
          IE有一個(gè)特別隨意的功能,就是能夠通過Element的name來操作一個(gè)Element,有些人覺得這個(gè)功能很方便,實(shí)際它不僅不符合標(biāo)準(zhǔn),還會(huì)導(dǎo)致IE自己變得莫名其妙。
          假如你的Form有一個(gè)提交按鈕的name="submit",那么,很遺憾,你這個(gè)form無論如何都不能通過Javascript來提交,只要你一調(diào)用了這個(gè)form的submit()方法,IE就會(huì)告訴你它不支持這個(gè)方法!這不是搞笑嗎?哪個(gè)瀏覽器會(huì)不支持form的submit()方法?雖然IE不標(biāo)準(zhǔn),也不至于這樣吧?對不起,就是這樣。

          因?yàn)楫?dāng)你調(diào)用form的方法submit(),它首先想到的是你的提交按鈕!
          theForm.submit()
          這個(gè)語句在IE看來并不是調(diào)用theForm的submit方法,而是調(diào)用了名字為submit的提交按鈕!如果你在某個(gè)元素對象后面加個(gè)括號,會(huì)有什么效果?當(dāng)然就是出錯(cuò)。在IE的獨(dú)特視角下,上面這個(gè)語句與下面這個(gè)語句的效果一樣:
          (theForm.submit)();
          前一個(gè)括號代表了名稱為submit的按鈕對象,后面那個(gè)括號就無法理解了,所以IE告訴你不支持這個(gè)方法。

          IE整個(gè)家族都是如此的丑陋!

          posted @ 2010-12-09 15:02 amp@java 閱讀(301) | 評論 (0)編輯 收藏

          一直都看到很多人說,IE6是Web開發(fā)人員的惡夢,以前我單位的內(nèi)部網(wǎng)絡(luò),所有電腦裝的都是IE6,我只針對IE6開發(fā),似乎沒什么感覺,反正在我的電腦上看到什么樣的,其他電腦上看到也是一樣的。
          后來因?yàn)槟彻窘o我們做的一個(gè)系統(tǒng)運(yùn)行速度實(shí)在太慢,我把自己的電腦更新到IE8,發(fā)現(xiàn)速度快了很多,但是有些東西不兼容,我對那些不兼容的功能使用得比較少,就不管了。
          終于,我自己又要開發(fā)一個(gè)小項(xiàng)目,用了一個(gè)網(wǎng)上下載的CSS模板,發(fā)現(xiàn)里面很多針對IE的注釋,從IE 5到IE 8都有,反正我電腦上看著效果不錯(cuò),于是就用了。
          辛苦了好幾天,我那項(xiàng)目基本完工了,想在IE6上看看效果,Shit,本來顯示在頁面右方主要區(qū)域的表格掉在了左邊導(dǎo)航欄的下面,表格里面一些DIV的下劃線莫名其妙地不見了,這些東西在我的電腦上顯示得好好的,也沒用到什么特別的東西,怎么差別會(huì)這么大呢?
          一個(gè)個(gè)問題排查:
          表格問題,在IE6上表現(xiàn)得有些詭異,顯示完之后表格是在下面的,但是鼠標(biāo)晃過導(dǎo)航欄里面的鏈接,表格又會(huì)自動(dòng)跳到右方區(qū)域,真見鬼。改了一下布局的padding,一個(gè)表格好了。另外一個(gè)卻還是掉下去,仔細(xì)研究了一下,把表格的寬度減少10px,好了。
          下劃線問題,我用的是:
          border-bottom:1px solid grey
          結(jié)果IE6不會(huì)顯示出這條下劃線。搜索一下才知道這是IE6的bug,它理解不了這么長的句子!必須寫成這樣:
          border-bottom-width:1px;
          border-bottom-style:solid;
          border-bottom-color:grey;
          還有比這更傻逼的嗎?有!
          它顯示出的線是黑色的,不是grey的!而且根據(jù)DIV里面內(nèi)容的顏色不同,它還會(huì)變色!如果里面是紅色的字,那么它下面的線也是紅色,如果是綠色的字,下面的線也是綠色,如果沒有指定顏色,它就是黑色,非常智能,但就是不顯示你要的顏色!
          后來知道原來它根本不知道grey的意思,必須指定顏色代碼才能解決。


          這就是IE6,沒想到微軟這么大一個(gè)公司還出了這么一個(gè)垃圾,而且出了那么多年,至今還占據(jù)中國瀏覽器市場的半壁江山!



          posted @ 2010-12-08 20:51 amp@java 閱讀(557) | 評論 (4)編輯 收藏

          有一臺(tái)WIN2003的服務(wù)器,在單位的局域網(wǎng)內(nèi),與互聯(lián)網(wǎng)是物理隔離的,最近上面運(yùn)行的一個(gè)WEB服務(wù)器經(jīng)常出錯(cuò),查看日志發(fā)現(xiàn)是因?yàn)閿?shù)據(jù)庫不能連接,因?yàn)橄到y(tǒng)的所有端口都已經(jīng)被占用完。使用netstat -abn查看發(fā)現(xiàn)svchost.exe開啟了大量狀態(tài)為SYN_SENT的連接,目標(biāo)端口都是445,但是連接的IP各種各樣的都有,由于機(jī)器不能建立Internet連接,所以狀態(tài)都是SYN_SENT,重啟一下這些連接都沒有了,但是過一會(huì)又會(huì)迅速建立起來,很快就把系統(tǒng)的所有端口都占用了。
          根據(jù)端口找出哪個(gè)服務(wù)真不容易,通過netstat -abn只能查到是svchost.exe,最多還能得到一個(gè)PID,確定是哪個(gè)svchost.exe,然后通過tasklist /svc可以查到那個(gè)svchost對應(yīng)了哪些服務(wù),但是一看,很多服務(wù)都是使用那個(gè)svchost,包括Server,Workstation等等,根本不知道是哪個(gè)產(chǎn)生的連接。
          找了半天發(fā)現(xiàn)有人和我一樣:http://www.petri.co.il/forums/showthread.php?t=36427,討論了半天最后也找到了解決方法:http://www.symantec.com/security_response/writeup.jsp?docid=2009-011316-0247-99,原來是W32.Downadup這個(gè)病毒惹的禍,下載了專殺工具回來查了一下,果然找到了兩個(gè)被感染的文件,一個(gè)是jpg文件,在IE的緩存里,一個(gè)是dll文件,在system32里。
          根據(jù)dll文件名在注冊表里查到了它注冊的服務(wù),原來又是之前處理過的那種,服務(wù)名隨機(jī)、服務(wù)描述為空、啟動(dòng)類型為自動(dòng)、狀態(tài)為未啟動(dòng)、dll名隨機(jī),但是我記得這臺(tái)服務(wù)器已經(jīng)打過補(bǔ)丁,也沒有出現(xiàn)svchost錯(cuò)誤,所以就忽略了服務(wù)的檢查,沒想到這種東西還有不同的癥狀。
          這個(gè)病毒利用的是KB958644的漏洞,到微軟下載了補(bǔ)丁回來,一看才發(fā)現(xiàn)原來那臺(tái)服務(wù)器以前已經(jīng)裝過這個(gè)補(bǔ)丁。補(bǔ)丁的作用也許就是只能防止再出問題,但不能解決已有的問題,所以那臺(tái)服務(wù)器雖然裝了補(bǔ)丁,但是可能已經(jīng)被感染了,于是就沒治好。

          posted @ 2010-06-30 11:33 amp@java 閱讀(12008) | 評論 (1)編輯 收藏

          把APE、FLAC等無損壓縮音頻文件刻錄成CD的軟件有很多,搜索一把,出現(xiàn)頻率最多的是用NERO+插件,但是現(xiàn)在的NERO體積實(shí)在龐大,我嘗試下載一個(gè)NERO 10,大小不過200多M,結(jié)果安裝的時(shí)候解壓到臨時(shí)文件夾,我的C盤1G多的空間都不夠它解壓,根本就安裝不了,為了這么一點(diǎn)事情用這么大一個(gè)軟件實(shí)在沒必要,仔細(xì)搜索一下,刻錄的軟件其實(shí)有很多,都能自動(dòng)地把APE刻錄到CD上,方法遠(yuǎn)比NERO簡單。
          第一個(gè)軟件是Burrrn
          Burrrn是個(gè)專門干這事的軟件,它支持的文件包括ape、flac、mp3、ogg等,實(shí)際上也是通過插件來完成編碼解碼工作的,不過這些插件都是內(nèi)置在程序包里,不用再逐個(gè)下載。它的界面非常簡單,使用也非常簡單,基本一打開就會(huì)使用。
          第二個(gè)軟件是ImgBurn
          這個(gè)軟件比較強(qiáng)大,不但能夠刻錄APE,還可以把光盤提取成鏡像、把文件或文件夾生成鏡像、把文件或文件夾刻錄到光盤上、把鏡像刻錄到光盤上,基本上NERO常用的功能都有了,軟件只有幾MB,十分環(huán)保。我下載這個(gè)軟件的時(shí)候只是想使用它的生成鏡像功能,因?yàn)橄螺d下來一些藍(lán)光原盤需要制作成ISO文件才能用POWERDVD播放。后來發(fā)現(xiàn)有人說這個(gè)軟件還可以刻錄APE,不過也需要使用相關(guān)的解碼器,只是這些解碼器在安裝常用的播放器的時(shí)候一般都已經(jīng)安裝過了,例如我以前裝過終極解碼,其中包含APE解碼器,就不需要另外安裝了。
          使用的時(shí)候只需要選擇刻錄鏡像到光盤功能,選中與APE相關(guān)的cue文件,然后就可以分軌刻錄了。

          這兩個(gè)軟件的體積都很小,而且都是免費(fèi)軟件,不但環(huán)保還合法。

          第一次使用Burrrn刻錄APE的時(shí)候,用KMPlayer播放,發(fā)現(xiàn)直接播放APE的效果跟播放刻錄出來的CD效果不一樣,CD的效果動(dòng)態(tài)范圍明顯不如直接播放APE,我以為是刻錄軟件的問題,后來使用ImgBurn刻錄,也是一樣的效果。仔細(xì)對比之后發(fā)現(xiàn)KMP播放的時(shí)候是使用不同的濾鏡,可能是這個(gè)原因?qū)е滦Ч煌遣シ臕PE和播放CD又不可能使用相同的濾鏡,所以到底是什么原因也很難說得清楚,不過CD機(jī)上不認(rèn)APE,也只能這樣了。


          posted @ 2010-06-22 15:30 amp@java 閱讀(590) | 評論 (0)編輯 收藏

          1、服務(wù)命名。Oracle的服務(wù)命名就跟計(jì)算機(jī)的名稱一樣。一般來說,在局域網(wǎng)里面,計(jì)算機(jī)名稱是與IP一一對應(yīng)的,通信的時(shí)候需要使用IP,所以就有了DNS,把計(jì)算機(jī)名翻譯成IP。同樣的道理,在Oracle體系里,服務(wù)命名對應(yīng)計(jì)算機(jī)名,服務(wù)名(SID)+IP+端口+協(xié)議(TCP/IP)就對應(yīng)了計(jì)算機(jī)的IP,Oracle體系里的DNS其實(shí)就是一個(gè)配置文件,把服務(wù)命名翻譯成可以用于通信的服務(wù)名(SID)+IP+端口+協(xié)議(TCP/IP)。有趣的是,與計(jì)算機(jī)里的ping命令一樣,Oracle里面也有個(gè)TNSPing命令,通過“TNSPing 服務(wù)命名”,就會(huì)得到像ping命令相似的結(jié)果,驗(yàn)證該命名對應(yīng)的數(shù)據(jù)庫是否有效。

          2、主機(jī)身份驗(yàn)證。Oracle的一些維護(hù)工作往往需要輸入主機(jī)身份驗(yàn)證信息,但是默認(rèn)情況下,即使輸入了正確的用戶名和密碼,系統(tǒng)也會(huì)提示“用戶口令錯(cuò)誤”,讓人十分困惑。其實(shí)真實(shí)的原因是,你輸入的用戶必須在“作為批處理作業(yè)登錄”里面,否則就會(huì)出現(xiàn)上述錯(cuò)誤。操作方法如下:運(yùn)行-gpedit.msc-計(jì)算機(jī)配置-Windows設(shè)置-安全設(shè)置-本地策略-用戶權(quán)利指派-作為批處理作業(yè)登錄-添加用戶或組...-加入要登錄的用戶。
          執(zhí)行數(shù)據(jù)庫遷移操作的時(shí)候,可能需要在源數(shù)據(jù)庫主機(jī)和目標(biāo)數(shù)據(jù)庫主機(jī)都進(jìn)行上述操作才能成功。

          更多問題待續(xù)
          posted @ 2009-11-12 10:23 amp@java 閱讀(291) | 評論 (0)編輯 收藏

          9月10號,CHDBits開放了注冊權(quán)限,趕緊注冊了一個(gè)帳戶,這是我第一次登錄PT站。每個(gè)文件都有幾個(gè)甚至幾十個(gè)種子在等待下載者,真是“僧多粥少”。下載速度果然很猛,下了幾個(gè)文件,基本上可以達(dá)到ADSL的上限,甚至遇到了前所未有的極速,不過持續(xù)時(shí)間較短,但是平均速度都接近上限。
          然而,ADSL小水管終究不是玩PT的料,嚴(yán)格的分享率要求和ADSL龜速的上傳帶寬使得我兩天之后就變成了冰人,如果20天之內(nèi)再不提高分享率,我的帳戶將會(huì)被封禁。仔細(xì)考慮了一下,我還是“過把癮就死”算了,因?yàn)橐晕疫@8:1的上傳和下載帶寬,要長期達(dá)到要求基本上是不可能的事情,如果要我的分享率達(dá)到1:1,那我4M的下載帶寬就等于縮水成和上傳帶寬一樣,只有512K了,我裝這4M的寬帶還有什么意義?
          其實(shí)在PT站外下載,速度也是不錯(cuò)的,無論是emule還是BT都能達(dá)到上限的80%以上,當(dāng)然,是在種子剛剛放出的一段時(shí)間,只要熱度一過,速度馬上下降,這是與PT沒法比的。
          還是等到哪一天光纖到戶再玩PT吧,現(xiàn)在的任務(wù)就是趁著20天沒過,趕緊“過癮”,嘿嘿!
          posted @ 2009-09-14 19:44 amp@java 閱讀(305) | 評論 (2)編輯 收藏

          僅列出標(biāo)題
          共10頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
          主站蜘蛛池模板: 隆昌县| 五大连池市| 洛宁县| 江永县| 娱乐| 迁西县| 五家渠市| 康乐县| 渑池县| 禄劝| 连州市| 府谷县| 葫芦岛市| 临桂县| 拉萨市| 甘南县| 重庆市| 定日县| 军事| 文化| 尼勒克县| 怀仁县| 邵武市| 砀山县| 板桥市| 苍梧县| 舒兰市| 砚山县| 揭西县| 赤城县| 曲靖市| 辽阳市| 施秉县| 临城县| 延川县| 平遥县| 东海县| 堆龙德庆县| 从化市| 石嘴山市| 汤原县|