posts - 14,  comments - 7,  trackbacks - 0
            2010年10月9日
                 

                  剛學(xué)java流技術(shù)IO編程時(shí),一下出來這么多流,很是不敏感,不感冒,在學(xué)習(xí)了這段時(shí)間,發(fā)現(xiàn)好多項(xiàng)目中的讀寫數(shù)據(jù),輸入輸出用到的都是以前學(xué)的最基本的,但是自己卻不是很理解其根本,今天就說幾個(gè)流中簡單但又常用的幾個(gè)知識(shí)點(diǎn)

             Java.io包中定義了多個(gè)流類型,來實(shí)現(xiàn)輸入輸出功能:

            •  按數(shù)據(jù)流的方向不同可以分為輸入流和輸出流。(以程序的角度來考慮)
            • 如:輸入流InputStream Reader 輸出流 OutputStream Writer
            •  按處理數(shù)據(jù)單位不同可以分為字節(jié)流和字符流。
            • : 字節(jié)流 InputStream OutputStream 字符流 Reader Writer
            •  按照功能不同可以分為節(jié)點(diǎn)流和處理流。

                  通俗的說節(jié)點(diǎn)流就是一個(gè)簡單的輸入輸出流,而處理流是“連接”在已存在的字節(jié)流或處理流之上的,通過對(duì)數(shù)據(jù)的處理為程序提供更為強(qiáng)大的讀寫功能。

           我們最經(jīng)常用到的節(jié)點(diǎn)流類型是有關(guān)文件處理的有FileReader FileWriter FileInputStream FileOutputStream

          Ø          FileInputSteam FileOutputStream 類支持其父類InputStream OutputStream 所提供的數(shù)據(jù)讀寫方法。

          Ø       注意:

          §         在實(shí)例化FileInputStreamFileOutputSteam流時(shí)要用trycatch語句以處理其可能拋出的FileNotFoundException

          §         在讀寫數(shù)據(jù)時(shí)也要用trycatch語句以處理可能拋出的 IOException

          §         FileNotFoundExceptionIOException的子類

          FileReader FileWriter 分別繼承自ReaderWriterFileInputSteamFileOutputStream類似,所不同的時(shí)FileReaderFileWriter向文件輸入和輸出的數(shù)據(jù)單位為字符。

               處理流中常用到的有緩沖流 、轉(zhuǎn)換流。

          l          緩沖流有BufferedReader BufferedWriter BufferedInputStream BufferedOutputStream ,緩沖流要“套接”在相應(yīng)的節(jié)點(diǎn)流之上,對(duì)讀寫的數(shù)據(jù)提供了緩沖的功能,提高了讀寫的效率,同時(shí)增加了一些新的方法

          l          BufferedReader提供了readLine方法用于讀取一行字符串(以"r"n           隔)。

          l          BufferedWriter提供了newLine用于寫入一個(gè)行分隔符。

          l          對(duì)于輸出的緩沖流,寫出的數(shù)據(jù)會(huì)先在內(nèi)存中緩存,使用flush方法將會(huì)使內(nèi)存中的數(shù)據(jù)立刻寫出。

          Socket編程中接受信息時(shí),不是直接用InputStream接收,而是把內(nèi)容放入緩沖之中進(jìn)行讀取 ,在Socket中的簡單應(yīng)用如下
            

          package com.dr.Echo;

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStream;
          import java.io.InputStreamReader;
          import java.io.PrintStream;
          import java.net.ServerSocket;
          import java.net.Socket;

          public class EchoServer {

              
          /**
               * 
          @param args
               * 
          @throws IOException 
               
          */

              
          public static void main(String[] args) throws IOException {
                  
          // TODO Auto-generated method stub
                   ServerSocket server = null;
                   PrintStream out 
          = null;
                   BufferedReader buf 
          = null;
                   server 
          = new ServerSocket(9999);
                   Socket client 
          = null;
                   
          while(true){
                       
          //不斷接收數(shù)據(jù)
                       client = server.accept();
                       
          //準(zhǔn)備好像客戶端輸出內(nèi)容
                       out = new PrintStream(client.getOutputStream());
                       
          //而且客戶端要有輸入給服務(wù)器端
                       buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
                       
          //下面先給出一個(gè)完整的信息提示
                       out.println("您好!歡迎光臨:http://wwww.tstc.edu.cn");
                       out.println(
          "輸入bye表示退出哈-");
                       
          while(true){
                           
          //接受客戶端發(fā)送而來的內(nèi)容
                           String str = buf.readLine();
                           System.out.println(
          "client's data is "+str);
                           
          if(str == null){
                               
          //如果str為空就表示退出
                               break;
                           }
          else{
                               
          //如果輸入的是bye則表示是退出系統(tǒng)
                               if("bye".equals(str)){
                                   
          break;
                               }

                               out.println(
          "xiaoxiao:"+str);
                           }

                       }

                       out.close();
                       buf.close();
                       client.close();
                   }

              }


          }

           

          package com.dr.Echo;

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.PrintStream;
          import java.net.Socket;
          import java.net.UnknownHostException;

          public class EchoClient {

              
          /**
               * 
          @param args
               * 
          @throws IOException 
               * 
          @throws UnknownHostException 
               
          */

              
          public static void main(String[] args) throws UnknownHostException, IOException {
                  
          // TODO Auto-generated method stub
                   Socket client = null;
                   BufferedReader buf 
          = null;
                   PrintStream out 
          = null;
                   client 
          = new Socket("127.0.0.1",9999);
                   buf 
          = new BufferedReader(new InputStreamReader(client.getInputStream()));
                   System.out.println(buf.readLine());
                   System.out.println(buf.readLine());
                   BufferedReader in 
          = new BufferedReader(new InputStreamReader(System.in));
                   
                   String userInput 
          = null;
                   out 
          = new PrintStream(client.getOutputStream());
                   
          while((userInput = in.readLine())!=null){
                       out.println(userInput);
                       System.out.println(buf.readLine());
                   }

                   out.close();
                   in.close();
                   client.close();
                   
                   
              }


          }

             

                轉(zhuǎn)換流InputStreamReader OutputStreamWriter 用于字節(jié)數(shù)據(jù)到字符數(shù)據(jù)之間的轉(zhuǎn)換。其中InputStreamReader 需要和InputStream”套接OutputStreamWriter需要和OutputStream套接

                數(shù)據(jù)流DataInputStream DataOutputStream 提供了可以存取與機(jī)器無關(guān)的java原始數(shù)據(jù)類型

          l              Print流:PrintWriterPrintStream都屬于輸出流,分別針對(duì)與字符和字節(jié),PrintWriterPrintStream提供了重載的printPrintln方法用于多種數(shù)據(jù)類型的輸出。PrintWriterPrintStream的輸出操作不會(huì)拋出異常,用戶通過檢測(cè)錯(cuò)誤狀態(tài)獲取錯(cuò)誤信息。PrintWriterPrintStream有自動(dòng)flush功能

          l           

           這幾個(gè)流的類型都是在以后的學(xué)習(xí)中經(jīng)常用到的。就不一一做例子啦

           

                   以后所學(xué)到的所有流類型都是繼承 InputStream OutputStream Reader Writer 這四個(gè)抽象的流類型

          posted @ 2011-01-18 22:26 迷人笑笑 閱讀(884) | 評(píng)論 (0)編輯 收藏
               摘要:           我相信大多說人都對(duì)構(gòu)造方法、方法不陌生,而且很了解,但我也相信有很多像我這樣的沒有一個(gè)很好很清晰很全面的認(rèn)識(shí),今天就把它整理如下,希望能給大家?guī)睃c(diǎn)方便與幫助,也希望大家多多討論。         ...  閱讀全文
          posted @ 2010-11-12 16:43 迷人笑笑 閱讀(39165) | 評(píng)論 (1)編輯 收藏
               摘要:        今天我們用實(shí)例程序說一下java中常見的生產(chǎn)者與消費(fèi)者的問題。  首先看一下里面線程間的通信問題:    一個(gè)線程向數(shù)據(jù)存儲(chǔ)空間添加數(shù)據(jù)(生產(chǎn)者),另一個(gè)線程從數(shù)據(jù)存儲(chǔ)空間去出數(shù)據(jù)(消費(fèi)者)。 這個(gè)程序中有兩個(gè)可能出現(xiàn)的問題需要考慮: 1、   ...  閱讀全文
          posted @ 2010-11-10 23:07 迷人笑笑 閱讀(2162) | 評(píng)論 (1)編輯 收藏
               摘要: 項(xiàng)目需求:1.病人來掛號(hào)時(shí)根據(jù)自己想找的醫(yī)生掛相應(yīng)的醫(yī)生的號(hào),即加到相應(yīng)醫(yī)生的病人隊(duì)列中。                    2.醫(yī)生看見自己的屏幕,點(diǎn)擊自己的名字,得到自己相應(yīng)列表的下一位病人 具體代碼如下: ...  閱讀全文
          posted @ 2010-11-02 16:51 迷人笑笑 閱讀(3468) | 評(píng)論 (1)編輯 收藏
               摘要: 1.當(dāng)我們?nèi)ャy行辦理什么業(yè)務(wù)的時(shí)候總會(huì)先在一個(gè)類似電腦的小系統(tǒng)上去一個(gè)號(hào),然后等著,當(dāng)被叫到時(shí)就去相應(yīng)的窗口辦理業(yè)務(wù),這種排隊(duì)的小系統(tǒng)主要用到了接口Queue,因?yàn)樗详?duì)列的要求先進(jìn)先出。 2.還有就是有種特殊情況就是,銀行的金卡用戶,他們的權(quán)限較高,總可以在普通用戶的前面辦理業(yè)務(wù) 相應(yīng)代碼如下: package com.dr.queue; public clas...  閱讀全文
          posted @ 2010-11-01 13:22 迷人笑笑 閱讀(3771) | 評(píng)論 (0)編輯 收藏
          代碼如下:
          package com.dr.exercise6;

          import java.util.Scanner;

          public class Login {
              
          public static void main(String[] args) {
                  Scanner s 
          = new Scanner(System.in);
                  System.out.println(
          "請(qǐng)輸入用戶名:");
                  String name 
          = s.nextLine();
                  System.out.println(
          "請(qǐng)輸入密碼:");
                  String password 
          = s.nextLine();
                  
          if(name.equals("abc")&&password.equals("123")){
                      System.out.println(
          "歡迎登入!!");
                      
                  }

                  
          else{
                      System.out.println(
          "用戶名或密碼不正確!!");
                  }


              }


          }

          用戶名密碼輸入正確時(shí):
          用戶名或密碼輸入不正確時(shí):
          posted @ 2010-10-20 16:33 迷人笑笑 閱讀(624) | 評(píng)論 (0)編輯 收藏
          答案是兩個(gè),現(xiàn)在我們具體的說一下:
          String s = new String("abc");
          首先我們要明白兩個(gè)概念,引用變量和對(duì)象,對(duì)象一般通過new在堆中創(chuàng)建,s只是一個(gè)引用變量。
          所有的字符串都是String對(duì)象,由于字符串文字的大量使用,java中為了節(jié)省時(shí)間,在編譯階段,會(huì)把字符串文字放在文字池中,文字池的一個(gè)好處就是可以把相同的字符串合并,占用一個(gè)空間,我們可以用==判斷一下兩個(gè)引用變量是否指向了一個(gè)地址即一個(gè)對(duì)象
          public class Demo02 {
              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  String s1 ="abc";
                  String s2 
          = "abc" ;
                  
          if( s1 == s2 ) System.out.println("s1,s2 refer to the same object");
                  
          else System.out.println("trouble");
              }

          }
          輸出結(jié)果為:
          可以看出指向了一個(gè)對(duì)象,即文字池中保存了一個(gè)對(duì)象。
          二、String s = new String("abc")實(shí)際上是"abc"本身就是文字池中的一個(gè)對(duì)象,在運(yùn)行 new String()時(shí),把文字池即pool中的字符串"abc"復(fù)制到堆中,并把這個(gè)對(duì)象的應(yīng)用交給s,所以創(chuàng)建了兩個(gè)String對(duì)象,一個(gè)在pool中,一個(gè)在堆中。下面看這個(gè)程序,創(chuàng)建了幾個(gè)對(duì)象。
          public class Demo03 {
              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  String s1 = new String("abc") ;
                  String s2 
          = new String("abc") ;
                  
          if( s1 == s2 )//不會(huì)執(zhí)行的語句}
                 System.out.println("在堆中創(chuàng)建了一個(gè)對(duì)象");

              }

                  
          else{
                  System.out.println(
          "在堆中創(chuàng)建了兩個(gè)對(duì)象");    
                  }

                  }

          }
          輸出結(jié)果為:
          可知在堆中創(chuàng)建了兩個(gè)對(duì)象,但是在文字池中有一個(gè)對(duì)象,所以共創(chuàng)建了三個(gè)對(duì)象。
          三、再看下一個(gè)例子:
          public class Demo04 {
              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  String s = new String("abc");
                  s 
          = "cba";
                  System.out.println(s); 
              }


          }
          輸出結(jié)果為:
          String s = new String("abc")并不是給s賦值,而是把字符串"abc"的引用交給s持有,現(xiàn)在把s指向字符串"cba","cba"的引用地址把"abc"的引用地址覆蓋,所以輸出結(jié)果為cba

          最后這個(gè)輸出結(jié)果的解釋,希望大家指出不足!!

          posted @ 2010-10-18 14:32 迷人笑笑 閱讀(10655) | 評(píng)論 (0)編輯 收藏
          要求為:寫一個(gè)公司員工類;
                          數(shù)據(jù)成員:員工號(hào),姓名,薪水,部門;
                          方法:
                          利用構(gòu)造方法完成設(shè)置信息:
                           A.單參,只傳遞員工號(hào);
                           B.雙參,只傳遞員工號(hào)、姓名;
                           C.四參,傳遞員工號(hào)、姓名、薪水、部門;
                           D.無參,則均為空值;
          main方法中創(chuàng)建兩個(gè)對(duì)象,分別進(jìn)行驗(yàn)證。
          package com.dr.computer;

          public class Worker {
               
          private String id;
               
          private String name;
               
          private float salary;
               
          private String department;
               
          public Worker(String n){
                 
          this.setId(n);
                 
          this.setName("無名氏");
                 
          this.setSalary(0.0f);
                 
          this.setDepartment("未定");
               }

               
          public Worker(String n,String na){
                   
          this.setId(n);
                   
          this.setName(na);
                   
          this.setSalary(1000);
                   
          this.setDepartment("后勤");
               }

               
          public Worker (String n,String na,float sa,String dep){
                   
          this.setId(n);
                   
          this.setName(na);
                   
          this.setSalary(sa);
                   
          this.setDepartment(dep);
               }

               
          public Worker(){
                   
               }

              
          public String getId() {
                  
          return id;
              }

              
          public void setId(String n) {
                  
          this.id = n;
              }

              
          public String getName() {
                  
          return name;
              }

              
          public void setName(String name) {
                  
          this.name = name;
              }

              
          public float getSalary() {
                  
          return salary;
              }

              
          public void setSalary(float f) {
                  
          if(f>0.0f){
                  
          this.salary = f;
                  }

              }

              
          public String getDepartment() {
                  
          return department;
              }

              
          public void setDepartment(String department) {
                  
          this.department = department;
              }

              
          public void showWorker(){
                  System.out.println(
          "員工信息為:");
                  System.out.println(
          "\t+--我的Id號(hào):"+id);
                  System.out.println(
          "\t+--我的名字:"+name);
                  System.out.println(
          "\t+--我的工資:"+salary);
                  System.out.println(
          "\t+--我的部門:"+department);
              }

          }

          package com.dr.computer;

          public class WorkerTest {

              
              
          public static void main(String[] args) {
                  Worker w1 
          =new Worker("0001","泉水");
                  Worker w2 
          =new Worker("0002","陽光",1000.0f,"公關(guān)部");
                  w1.showWorker();
                  w2.showWorker();
              }

              
              }




              
          posted @ 2010-10-15 22:47 迷人笑笑 閱讀(440) | 評(píng)論 (0)編輯 收藏

           

          類是一個(gè)抽象的概念,對(duì)象則是類的具體實(shí)例,是真實(shí)的個(gè)體,比如人就是一個(gè)類,張三、李四等就是一個(gè)個(gè)真實(shí)的

          具體的個(gè)體對(duì)象,人有具備所有人類通用的特征,但不能確定是哪個(gè)人,張三、李四等有具體的特征,比如身高性別,即

          屬性。類一種看不見摸不著的東西,對(duì)象是“有血有肉”的實(shí)物。
                現(xiàn)實(shí)生活中到處皆對(duì)象,比如一輛汽車,一棟房子,一臺(tái)電腦,一只貓。
                面向?qū)ο缶哂蟹庋b、繼承、多態(tài)三大特征。封裝,即使屬性用private修飾對(duì)外部不可見;繼承,如人,有老人、小孩

          、男人、女人,他們都是人的子類。多態(tài)包括方法的重載和對(duì)象的多態(tài)性,方法的重載就是方法名相同,但參數(shù)和類型不

          同的方法,多態(tài),即人分為老人,小孩,男人,女人等。

          posted @ 2010-10-15 15:13 迷人笑笑 閱讀(814) | 評(píng)論 (0)編輯 收藏
                    java采用堆棧形式對(duì)數(shù)據(jù)進(jìn)行存取,這樣做的優(yōu)點(diǎn)是存取速度較快,因?yàn)闂5乃俣缺容^快,僅次于寄存器的速度,堆棧的模式符合垃圾回收的機(jī)制,有利于垃圾的回收,垃圾收集器(GC)自動(dòng)回收。
                    現(xiàn)在用一個(gè)小實(shí)例來感受一下java的堆棧存取,代碼如下:
          public class Person {
              String  name;
              
          int  age;
              
          public static void main(String[] args) {
                  Person p1 
          = new Person();
                  Person p2 
          = null;
                  
                  p2 
          = p1;
                  p1.name 
          = "張三";
                  p1.age  
          = 23;
                  p2.name 
          = "李四";
                  p2.age 
          = 24;
                  
                  p1.say();
                  p2.say();
                  
              }

              
          void say(){
                  System.out.println(
          "我的名字是:"+ name +"年齡 :"+age);
              }
          運(yùn)行結(jié)果如下:我的名字是:李四年齡 :24
                                      我的名字是:李四年齡 :24

          可用畫圖來表示其堆棧的存取:其中李四把張三給覆蓋啦。

          修改代碼如下:
          public class Person {
              String  name;
              
          int  age;
              
          public static void main(String[] args) {
                  Person p1 
          = new Person();
                  Person p2 
          = new Person();
                  
                  p2 
          = p1;
                  p1.name 
          = "張三";
                  p1.age  
          = 23;
                  p2.name 
          = "李四";
                  p2.age 
          = 24;
                  
                  p1.say();
                  p2.say();
                  
              }

              
          void say(){
                  System.out.println(
          "我的名字是:"+ name +"年齡 :"+age);
              }


          }
          運(yùn)行結(jié)果也是:我的名字是:李四年齡 :24
                                      我的名字是:李四年齡 :24
          其堆棧存取用畫圖表示如下:其中李四把張三給覆蓋啦

          p2先斷開自己原先的堆指向,再指向p1的指向,原先的堆空間被釋放。

          posted @ 2010-10-13 08:33 迷人笑笑 閱讀(997) | 評(píng)論 (3)編輯 收藏
                   java API 是應(yīng)用編程接口,是一種規(guī)范,指明編寫應(yīng)用程序的程序員如何訪問類和行為和狀態(tài)。
                   下面就列舉個(gè)API 中string類中的10個(gè)方法的小應(yīng)用:
                  1.  contains:當(dāng)且僅當(dāng)此字符串包含指定的char值序列時(shí),返回true
                   
          public class Contains {
                  
          public static void main(String[] args) {
                  String str 
          ="abcdefg";
                  
          boolean i = str.contains("ab");
                  System.out.print(i);
                  
              }


          }
                如果把上面程序中的 boolean i = str.contains("ab")改為 boolean i = str.contains(null) 即把指定的char值序列改為空值,便會(huì)出現(xiàn)NullPointExcption的異常。
               
                2.copyValueOf:通過這個(gè)方法把給定數(shù)組中的相應(yīng)的部分copy到字符串中輸出來
          public static void main(String[] args) {
                  
          char[] x = {'a','b','c','d','e'};
                  String str 
          = null;
                  str 
          = String.copyValueOf(x,2,3);
                  System.out.print(str);

              }


          }
                  str = String.copyValueOf(x,2,3)其中的x表示原數(shù)組,2表示偏移量,3表示要輸出的長度。
           
                 3.Intern:返回字符串對(duì)象的規(guī)范化表示形式,遵循以下規(guī)則:對(duì)于任意兩個(gè)字符串s,t,當(dāng)且僅當(dāng)s.equals(t) 為true時(shí),s.intern() == t.intern 才為true
          public static void main(String[] args) {
              String str1 
          = "HelloWorld";
              String str2 
          = "Hello"+"World";
              System.out.println(str1 
          == str2);
              System.out.print(str1.intern( ) 
          == str2.intern());
              }


          }
               4.length:返回此對(duì)象的長度
          public class Length {

              
              
          public static void main(String[] args) {
                  String str 
          = "abcdefg";
                  System.out.print(str.length());
              }


          }
                5.matches告知此字符串是否匹配指定的正則表達(dá)式,當(dāng)且僅當(dāng)匹配給定的正則表達(dá)式時(shí),輸出true
          public class Matches {

              
              
          public static void main(String[] args) {
                  String str 
          = "abcdefg";
                  
          boolean i =str.matches( "abcdefg");
                  System.out.println(i);
              }


          }
                6.replaceFirst:用給定的字符串替換正則表達(dá)式匹配的字符串
          public class ReplaceFirst {
                  
          public static void main(String[] args) {
                  String str 
          = "abcdefgh";
                  String str1 
          = str.replaceFirst("ef""k");
                  System.out.print(str1);
              }


          }

               7.subString:返回一個(gè)新字符串,他是此字符串的一個(gè)字子符串,該子字符串從指定字符串索引處的字符開始,直到指定的索引結(jié)束的字符結(jié)束
          public class Substring {

              
              
          public static void main(String[] args) {
                  String str 
          = "abcdefgh";
                  String str1 
          = str.substring(24);
                  System.out.print(str1);
              }

          }

          其中String str = "str.substring(2,4)"中2表示起始索引(包括),4表示結(jié)束索引(不包括)
          如果把其實(shí)索引改為負(fù)數(shù)或結(jié)束索引大于字符串長度,便會(huì)出現(xiàn)indexoutBounsException的異常
                 8.toCharArray:將此字符串轉(zhuǎn)化為一個(gè)新的字符數(shù)組
          public class ToCharArray {
              
          public static void main(String[] args) {
                  String str1 
          = "一定要死幸福";
                  
          char[] str2 = str1.toCharArray( );
                  
          for(int i=0;i<str2.length;i++){
                  System.out.println(str2[i]);
                  }

              }

          }
                9.trim:此方法可用于截去開頭和尾部的空白
          public class Trim {
              
          public static void main(String[] args) {
              String str 
          = "  abcd   ";
              String strArr 
          = str.trim();
              System.out.println(strArr);
              }


          }
               10.valueOf:返回char參數(shù)的字符串表示形式
               
          public class ValueOf {
              
          public static void main(String[] args) {
              
          char[] x = {'a','b','c','d'};
              String str1 
          ="null";
              str1 
          = String.valueOf(x);
              System.out.print(str1);

              }


          }

          posted @ 2010-10-09 17:48 迷人笑笑 閱讀(444) | 評(píng)論 (0)編輯 收藏
               摘要: 要求:寫一java小程序,要求輸出姓名,班級(jí)、年齡、分?jǐn)?shù)、等級(jí) 創(chuàng)建三個(gè)類Student,StudentText,Text具體程序?yàn)椋?package com.dr.student; public class Student {     private String name; &nb...  閱讀全文
          posted @ 2010-10-09 08:38 迷人笑笑 閱讀(169) | 評(píng)論 (0)編輯 收藏
          <2010年10月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(13)

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 赤城县| 房山区| 金昌市| 平果县| 南溪县| 石首市| 五原县| 新源县| 肥西县| 宁强县| 柏乡县| 台州市| 长泰县| 阳江市| 林芝县| 施甸县| 普安县| 井冈山市| 垦利县| 休宁县| 壶关县| 长阳| 浪卡子县| 郴州市| 溧阳市| 朝阳市| 洪泽县| 冕宁县| 巴林左旗| 玉树县| 随州市| 仪征市| 丁青县| 高青县| 贵阳市| 库尔勒市| 丰镇市| 突泉县| 海阳市| 许昌市| 平果县|