少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

          #

          package com.abin.lee.junit.httpasyncclient.service;

          import java.io.BufferedWriter;
          import java.io.IOException;
          import java.io.OutputStreamWriter;
          import java.util.Map;

          import javax.servlet.ServletOutputStream;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          public class HttpAsyncClientService extends HttpServlet{
           private static final long serialVersionUID = 807336917776643578L;

           @SuppressWarnings("rawtypes")
           public void service(HttpServletRequest request,HttpServletResponse response) throws IOException{
            Map map=request.getParameterMap();
            String id=(String)((Object[])map.get("id"))[0].toString();
            if(null!=id&&!"".equals(id)){
             String result=id+" is response";
             System.out.println("result="+result);
             ServletOutputStream out=response.getOutputStream();
             BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out,"UTF-8"));
             writer.write(result);
             writer.flush();
             writer.close();
            }else{
             String result=id+" is null";
             System.out.println("result="+result);
             ServletOutputStream out=response.getOutputStream();
             BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out,"UTF-8"));
             writer.write(result);
             writer.flush();
             writer.close();
            }
           }
          }








          <servlet>
            <servlet-name>HttpAsyncClientService</servlet-name>
            <servlet-class>com.abin.lee.junit.httpasyncclient.service.HttpAsyncClientService</servlet-class>
           </servlet>
           <servlet-mapping>
            <servlet-name>HttpAsyncClientService</servlet-name>
            <url-pattern>/HttpAsyncClientService</url-pattern>
           </servlet-mapping>





          package com.abin.lee.junit.httpasyncclient.example;

          import java.util.concurrent.Future;

          import org.apache.http.HttpResponse;
          import org.apache.http.client.methods.HttpGet;
          import org.apache.http.impl.nio.client.DefaultHttpAsyncClient;
          import org.apache.http.nio.client.HttpAsyncClient;
          import org.apache.http.util.EntityUtils;

          public class CreateHttpAsyncClient {
           public static void main(String[] args) throws Exception {
                  HttpAsyncClient httpclient = new DefaultHttpAsyncClient();
                  httpclient.start();
                  try {
                      HttpGet request = new HttpGet("http://localhost:7000/global/HttpAsyncClientService?id=5");
                      Future<HttpResponse> future = httpclient.execute(request, null);
                      HttpResponse response = future.get();
                      System.out.println("Response: " + response.getStatusLine());
                      System.out.println("Response1: " + EntityUtils.toString(response.getEntity()));
                      System.out.println("Shutting down");
                  } finally {
                      httpclient.shutdown();
                  }
                  System.out.println("Done");
              }

          }

          posted @ 2013-01-08 23:15 abin 閱讀(5121) | 評論 (0)編輯 收藏

          //這個適用于oracle10,11,以前oracle9操作CLOB字段相當的繁瑣,記著導入驅動包 
          package com.abin.wto.dbs.oracle; 

          import java.sql.Connection; 
          import java.sql.DriverManager; 
          import java.sql.PreparedStatement; 
          import java.sql.ResultSet; 

          public class OperateOracle { 
          public static void main(String[] args) { 
          Connection conn=null; 
          PreparedStatement ps=null; 
          ResultSet rs=null; 
          try { 
          Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
          String url="jdbc:oracle:thin:@localhost:1521:XE"; 
          conn=DriverManager.getConnection(url,"abin","abin"); 
          String sql="insert into bignumber values(?,?)"; 
          ps=conn.prepareStatement(sql); 
          ps.setInt(1, 1); 
          oracle.sql.CLOB clob=oracle.sql.CLOB.createTemporary(conn, false, oracle.sql.CLOB.DURATION_SESSION); 
          clob.open(oracle.sql.CLOB.MODE_READWRITE); 
          clob.setString(3, "llll"); 
          ps.setClob(2, clob); 
          int result=ps.executeUpdate(); 
          System.out.println("result="+result); 
          } catch (Exception e) { 
          e.printStackTrace(); 
          } 
          } 

          } 











          package com.abin.wto.dbs.oracle;

          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.PreparedStatement;
          import java.sql.ResultSet;
          import java.sql.SQLException;

          import oracle.sql.CLOB;

          public class OperateOracle {
           public static void main(String[] args) {
            Connection conn=null;
            PreparedStatement ps=null;
            ResultSet rs=null;
            try {
             Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
             String url="jdbc:oracle:thin:@localhost:1521:XE";
             conn=DriverManager.getConnection(url,"abin","abin");
             String sql="insert into bignumber values(?,?)";
             ps=conn.prepareStatement(sql);
             ps.setInt(1, 8888);
             java.sql.Clob  clob=oracle.sql.CLOB.createTemporary(conn, false, oracle.sql.CLOB.DURATION_SESSION);
             clob.setString(1, "55555555555555");
             ps.setClob(2, clob);
             int result=ps.executeUpdate();
             System.out.println("result="+result);
            } catch (Exception e) {
             e.printStackTrace();
            }finally{
             if(ps!=null){
              try {
               ps.close();
              } catch (SQLException e) {
               e.printStackTrace();
              }
             }
             try {
              CLOB.freeTemporary(null);
             } catch (SQLException e) {
              e.printStackTrace();
             }
            }
           }

          }

           

          posted @ 2013-01-08 22:00 abin 閱讀(1786) | 評論 (0)編輯 收藏

               摘要: 1、sed使用手冊(轉載)  sed使用手冊(轉載) 發信站: BBS 水木清華站 (Wed Sep 25 21:06:36 2002), 站內信件      Sed 命令列可分成編輯指令與文件檔部份。其中 , 編輯指令負責控制所有的編 輯工作 ; 文件檔表示所處理的檔案。    ...  閱讀全文
          posted @ 2013-01-08 12:37 abin 閱讀(1684) | 評論 (0)編輯 收藏

          public class CyclicBarrier
          extends Object
          一個同步輔助類,它允許一組線程互相等待,直到到達某個公共屏障點 (common barrier point)。在涉及一組固定大小的線程的程序中,這些線程必須不時地互相等待,此時 CyclicBarrier 很有用。因為該 barrier 在釋放等待線程后可以重用,所以稱它為循環 的 barrier。
          CyclicBarrier 支持一個可選的 Runnable 命令,在一組線程中的最后一個線程到達之后(但在釋放所有線程之前),該命令只在每個屏障點運行一次。若在繼續所有參與線程之前更新共享狀態,此屏障操作 很有用。
          以上是jdk文檔的說明

               *  現在說說我們今天活動的內容、首先我們要在公司大廳集合、然后參觀陳云故居
               *  參觀完后集合、準備去淀水湖參觀。(有3輛車、對應3個線程)
               * 
               *  我們必須等大家都到齊了才能去下個地方、比如說 、在公司集合、3輛車子都到了才能出發
               *  要不然人裝不下啊。這是我們可以用到java線程并發庫的CyclicBarrier類
           
          public class CyclicBarrierTest {

              public static void main(String[] args) {

                  final CyclicBarrier cb = new CyclicBarrier(3);
                  //final Semaphore semaphore=new Semaphore(1);

                  for (int i = 1; i <= 3; i++) {
                
                      new Thread(new Runnable() {

                          @Override
                          public void run() {
                              try {
                                 
                                  //semaphore.acquire();
                                  System.out.println(Thread.currentThread().getName()
                                          + "公司大廳集合");
                                  System.out.println(Thread.currentThread().getName()
                                          + "公司大廳等待....");
                                  //semaphore.release();
                                  cb.await();
                                  Thread.sleep(2000);
                                 
                                 
                                  //semaphore.acquire();
                                  System.out.println(Thread.currentThread().getName()
                                          + "陳云故居集合");
                                  System.out.println(Thread.currentThread().getName()
                                          + "陳云故居等待....");
                                  //semaphore.release();
                                  cb.await();
                                  Thread.sleep(2000);
                                 
                                 
                                  //semaphore.acquire();
                                  System.out.println(Thread.currentThread().getName()
                                          + "淀水湖集合");
                                  System.out.println(Thread.currentThread().getName()
                                          + "淀水湖等待....準備回家了");
                                  //semaphore.release();
                                  cb.await();
                                  Thread.sleep(2000);
                                 
                                 
                              } catch (InterruptedException e) {
                                  e.printStackTrace();
                              } catch (BrokenBarrierException e) {
                                  e.printStackTrace();
                              }
                          }

                      }).start();
                  }
              }
          }
          以下是輸出結果:
          Thread-0公司大廳集合
          Thread-0公司大廳等待....
          Thread-2公司大廳集合
          Thread-1公司大廳集合
          Thread-1公司大廳等待....
          Thread-2公司大廳等待....
          Thread-0陳云故居集合
          Thread-1陳云故居集合
          Thread-2陳云故居集合
          Thread-1陳云故居等待....
          Thread-0陳云故居等待....
          Thread-2陳云故居等待....
          Thread-0淀水湖集合
          Thread-2淀水湖集合
          Thread-1淀水湖集合
          Thread-2淀水湖等待....準備回家了
          Thread-0淀水湖等待....準備回家了
          Thread-1淀水湖等待....準備回家了

          ***注意上述代碼中的Semaphore類、它也是java線程并發庫中的一個類、更多具體作用我們以后再探討。
          以下是使用Semaphore后的輸出結果:(相信你已經知道不同的地方了)
          Thread-0公司大廳集合
          Thread-0公司大廳等待....
          Thread-1公司大廳集合
          Thread-1公司大廳等待....
          Thread-2公司大廳集合
          Thread-2公司大廳等待....
          Thread-2陳云故居集合
          Thread-2陳云故居等待....
          Thread-1陳云故居集合
          Thread-1陳云故居等待....
          Thread-0陳云故居集合
          Thread-0陳云故居等待....
          Thread-2淀水湖集合
          Thread-2淀水湖等待....準備回家了
          Thread-1淀水湖集合
          Thread-1淀水湖等待....準備回家了
          Thread-0淀水湖集合
          Thread-0淀水湖等待....準備回家了

          http://blog.sina.com.cn/s/blog_7f448c520101219g.html
          posted @ 2013-01-08 00:39 abin 閱讀(427) | 評論 (0)編輯 收藏

          public class Exchanger<V>
          extends Object
          可以在對中對元素進行配對和交換的線程的同步點。每個線程將條目上的某個方法呈現給 exchange 方法,與伙伴線程進行匹配,并且在返回時接收其伙伴的對象。Exchanger 可能被視為 SynchronousQueue 的雙向形式。Exchanger 可能在應用程序(比如遺傳算法和管道設計)中很有用。

          以上是jdk文檔的說明。

            * 今天公司黨委組織活動、12點半call我電話、我以80碼的速度狂奔過去、上了一個車子(A車)、
            * 戴著眼鏡四處瞄了下,沒發現什么美女啊。假寐了一會兒,司機說另外一個車子(B車)上要換過來
            * 一個人、讓車子上的人下去一個去B車。由于地勢原因、我就下去了。
            *
            * 一路上突然想到了java線程并發庫中的Exchanger類。A車我們可以看作是一個線程、B車我們也可以
            * 看作是一個線程,我和B車上的一位美女換位子,就可以用到Exchanger類的exchange方法。
            *
            * 代碼如下:

          public class ExchangerTest {

              public static void main(String[] args) {

                  final Exchanger<String> exchange=new Exchanger<String>();
                  //final String a="yupan";
                  //final String b="a girl";
                  final String[] carA=new String[]{"zhangsan","lisi","yupan"};
                  final String[] carB=new String[]{"meinv_a","meinv_b","meinv_c"};
                  
                  //A車線程
                  new Thread(new Runnable(){

                      String[] carA_copy=carA;
                      @Override
                      public void run() {
                          try {
                              System.out.println("交換前:A車上的第三位乘客:"+carA[2]);
                              carA_copy[2]=exchange.exchange(carA_copy[2]);
                              System.out.println("交換后:A車上的第三位乘客:"+carA[2]);
                          } catch (InterruptedException e) {
                              e.printStackTrace();
                          }
                      }
                      
                  }).start();
                  
                  //B車線程
                  new Thread(new Runnable(){
                      
                      String[] carB_copy=carB;
                      @Override
                      public void run() {
                          try {
                              System.out.println("交換前:B車上的第三位乘客:"+carB[2]);
                              carB_copy[2]=exchange.exchange(carB_copy[2]);
                              System.out.println("交換后:B車上的第三位乘客:"+carB[2]);
                          } catch (InterruptedException e) {
                              e.printStackTrace();
                          }
                      }
                      
                  }).start();
                  
              }
          }

          輸出結果:

          交換前:A車上的第三位乘客:yupan
          交換前:B車上的第三位乘客:meinv_c
          交換后:B車上的第三位乘客:yupan
          交換后:A車上的第三位乘客:meinv_c

          http://blog.sina.com.cn/s/blog_7f448c5201012183.html
          posted @ 2013-01-08 00:35 abin 閱讀(362) | 評論 (0)編輯 收藏

          Semaphore當前在多線程環境下被擴放使用,操作系統的信號量是個很重要的概念,在進程控制方面都有應用。Java 并發庫 的Semaphore 可以很輕松完成信號量控制,Semaphore可以控制某個資源可被同時訪問的個數,通過 acquire() 獲取一個許可,如果沒有就等待,而 release() 釋放一個許可。比如在Windows下可以設置共享文件的最大客戶端訪問個數。 

          Semaphore實現的功能就類似廁所有5個坑,假如有10個人要上廁所,那么同時只能有多少個人去上廁所呢?同時只能有5個人能夠占用,當5個人中 的任何一個人讓開后,其中等待的另外5個人中又有一個人可以占用了。另外等待的5個人中可以是隨機獲得優先機會,也可以是按照先來后到的順序獲得機會,這取決于構造Semaphore對象時傳入的參數選項。單個信號量的Semaphore對象可以實現互斥鎖的功能,并且可以是由一個線程獲得了“鎖”,再由另一個線程釋放“鎖”,這可應用于死鎖恢復的一些場合。

          Semaphore維護了當前訪問的個數,提供同步機制,控制同時訪問的個數。在數據結構中鏈表可以保存“無限”的節點,用Semaphore可以實現有限大小的鏈表。另外重入鎖 ReentrantLock 也可以實現該功能,但實現上要復雜些。 

          下面的Demo中申明了一個只有5個許可的Semaphore,而有20個線程要訪問這個資源,通過acquire()和release()獲取和釋放訪問許可。

          package com.test;

          import java.util.concurrent.ExecutorService;

          import java.util.concurrent.Executors;

          import java.util.concurrent.Semaphore;

          public class TestSemaphore {

                          public static void main(String[] args) {

                          // 線程池

                          ExecutorService exec = Executors.newCachedThreadPool();

                          // 只能5個線程同時訪問

                          final Semaphore semp = new Semaphore(5);

                           // 模擬20個客戶端訪問

                           for (int index = 0; index < 20; index++) {

                                        final int NO = index;

                                        Runnable run = new Runnable() {

                                                           public void run() {

                                                                      try {

                                                                              // 獲取許可

                                                                              semp.acquire();

                                                                              System.out.println("Accessing: " + NO);

                                                                              Thread.sleep((long) (Math.random() * 10000));

                                                                              // 訪問完后,釋放

                                                                              semp.release();

                                                                              System.out.println("-----------------"+semp.availablePermits());

                                                                      } catch (InterruptedException e) {

                                                                              e.printStackTrace();

                                                                      }

                                                            }

                                                };

                                exec.execute(run);

                       }

                       // 退出線程池

                       exec.shutdown();

                 }

          執行結果如下:

          Accessing: 0

          Accessing: 1

          Accessing: 3

          Accessing: 4

          Accessing: 2

          -----------------0

          Accessing: 6

          -----------------1

          Accessing: 7

          -----------------1

          Accessing: 8

          -----------------1

          Accessing: 10

          -----------------1

          Accessing: 9

          -----------------1

          Accessing: 5

          -----------------1

          Accessing: 12

          -----------------1

          Accessing: 11

          -----------------1

          Accessing: 13

          -----------------1

          Accessing: 14

          -----------------1

          Accessing: 15

          -----------------1

          Accessing: 16

          -----------------1

          Accessing: 17

          -----------------1

          Accessing: 18

          -----------------1

          Accessing: 19




          http://www.cnblogs.com/whgw/archive/2011/09/29/2195555.html
          posted @ 2013-01-08 00:11 abin 閱讀(371) | 評論 (0)編輯 收藏

          View Code
           package generate.httpclient;
           
           import java.io.ByteArrayOutputStream;
           import java.io.IOException;
           import java.io.InputStream;
           import java.util.ArrayList;
           import java.util.HashMap;
           import java.util.List;
           import java.util.Map;
           import java.util.concurrent.CountDownLatch;
           
           import org.apache.http.HttpResponse;
           import org.apache.http.client.methods.HttpGet;
           import org.apache.http.concurrent.FutureCallback;
           import org.apache.http.impl.nio.client.DefaultHttpAsyncClient;
           import org.apache.http.nio.client.HttpAsyncClient;
           import org.apache.http.nio.reactor.IOReactorException;
           
           public class AsynClient{
               /**
                * @param args
                * @throws IOReactorException
                * @throws InterruptedException
                */
               private List<String> urls;
               private HandlerFailThread failHandler;
               public AsynClient(List<String> list){
                   failHandler=new HandlerFailThread();
                   urls=list;
               }
               public Map<String,String> asynGet() throws IOReactorException,
                       InterruptedException {
                   final HttpAsyncClient httpclient = new DefaultHttpAsyncClient();
                   httpclient.start();
                   int urlLength=urls.size();
                   HttpGet[] requests = new HttpGet[urlLength];
                   int i=0;
                   for(String url : urls){
                       requests[i]=new HttpGet(url);
                       i++;
                   }
                   final CountDownLatch latch = new CountDownLatch(requests.length);
                   final Map<String, String> responseMap=new HashMap<String, String>();
                   try {
                       for (final HttpGet request : requests) {
                           httpclient.execute(request, new FutureCallback<HttpResponse>() {
           
                               public void completed(final HttpResponse response) {
                                   latch.countDown();
                                   responseMap.put(request.getURI().toString(), response.getStatusLine().toString());
                                   try {
                                       System.out.println(request.getRequestLine() + "->"
                                               + response.getStatusLine()+"->");
                                       //+readInputStream(response.getEntity().getContent())
                                      
                                   } catch (IllegalStateException e) {
                                       failHandler.putFailUrl(request.getURI().toString(),
                                               response.getStatusLine().toString());
                                       e.printStackTrace();
                                   } catch (Exception e) {
                                       failHandler.putFailUrl(request.getURI().toString(),
                                               response.getStatusLine().toString());
                                       e.printStackTrace();
                                   }
                               }
           
                               public void failed(final Exception ex) {
                                   latch.countDown();
                                   ex.printStackTrace();
                                   failHandler.putFailUrl(request.getURI().toString(),
                                           ex.getMessage());
                               }
           
                               public void cancelled() {
                                   latch.countDown();
                               }
           
                           });
                       }
                       System.out.println("Doing...");
                   } finally {
                       latch.await();
                       httpclient.shutdown();
                   }
                   System.out.println("Done");
                   failHandler.printFailUrl();
                   return responseMap;
               }
               private String readInputStream(InputStream input) throws IOException{
                   byte[] buffer = new byte[128];
                   int len = 0;
                   ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                   while((len = input.read(buffer)) >= 0) {
                       bytes.write(buffer, 0, len);
                   }
                   return bytes.toString();
               }
               /**
                * Test
                * @param args
                */
               public static void main(String[] args) {
                   List<String> urls=new ArrayList<String>();
                   urls.add("         urls.add("         urls.add("         for(int i=0;i<10;i++){
                       urls.addAll(urls);
                   }
                   System.out.println(urls.size());
                   AsynClient client=new AsynClient(urls);
                   try {
                       client.asynGet();
                   } catch (IOReactorException e) {
                       e.printStackTrace();
                   } catch (InterruptedException e) {
                       e.printStackTrace();
                   }
                   System.out.println("done");
               }
           }

          package com.abin.lii.han.limei;

          import java.io.BufferedReader;
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;

          import org.junit.Test;

          public class ImediaRegisterTest {
           @Test
           public void testImediaRegister(){
            String LIMEI_HTTP="  String appId="fk000";
            String udid="3A5S4D6F8G9K_3596140444464123";
            String requestUrl=LIMEI_HTTP+"?app="+appId+"&udid="+udid+"&source="+"where"";
            System.out.println(requestUrl);
            String result="";
            try {
             URL url=new URL(requestUrl);
             HttpURLConnection connection=(HttpURLConnection)url.openConnection();
             connection.setDoOutput(true);
             connection.setDoInput(true);
             connection.setRequestMethod("GET");
             connection.setUseCaches(false);
             // URLConnection.setInstanceFollowRedirects是成員函數,僅作用于當前函數
             connection.setInstanceFollowRedirects(false);
             connection.setRequestProperty("Content-Type",
                          "application/x-www-form-urlencoded");
             connection.connect();
             //發送執行請求
             
             //接收返回請求
             BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream(),"GBK"));
             String line="";
             StringBuffer buffer=new StringBuffer();
             while((line=reader.readLine())!=null){
              buffer.append(line);
             }
             result=buffer.toString();
             System.out.println("result="+result);
             connection.disconnect();
            } catch (Exception e) {
             e.printStackTrace();
            }
           }

          }


          1.tomcat下所有應用都強制https訪問

          在tomcat\conf\web.xml中的</welcome-file-list>后面加上以下配置:


            <login-config>
                <!-- Authorization setting for SSL -->
                <auth-method>CLIENT-CERT</auth-method>
                <realm-name>Client Cert Users-only Area</realm-name>
            </login-config>
            <security-constraint>
                <!-- Authorization setting for SSL -->
                <web-resource-collection >
                    <web-resource-name >SSL</web-resource-name>
                    <url-pattern>/*</url-pattern>
                </web-resource-collection>
                <user-data-constraint>
                    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
                </user-data-constraint>
            </security-constraint>





          2.單個應用強制https訪問

          WEB-INF/web.xml的</welcome-file-list>后面加上以下配置:

            <login-config>
                <!-- Authorization setting for SSL -->
                <auth-method>CLIENT-CERT</auth-method>
                <realm-name>Client Cert Users-only Area</realm-name>
            </login-config>
            <security-constraint>
                <!-- Authorization setting for SSL -->
                <web-resource-collection >
                    <web-resource-name >SSL</web-resource-name>
                    <url-pattern>/*</url-pattern>
                </web-resource-collection>
                <user-data-constraint>
                    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
                </user-data-constraint>
            </security-constraint>




          posted @ 2013-01-06 21:28 abin 閱讀(1358) | 評論 (0)編輯 收藏

          select t.*,t.rowid from abin1 t;
          刪除重復的記錄,只保留一條:
          delete from abin1 t where rowid not in (select max(rowid) from abin1 s group by s.id1  );
          delete from abin1 t where t.rowid not in (select min(s.rowid) from abin1 s where t.id1=s.id1 group by s.id1)
          刪除全部重復記錄:
          delete from abin1 t where t.id1 in (select s.id1 from abin1 s group by s.id1 having count(s.id1)>1 );
          delete from abin1 t where exists (select * from abin1 s where t.id1=s.id1 group by s.id1 having count(s.id1)>1)
          取出有重復的記錄,沒有重復的單條記錄不取:
          select * from abin1 t where t.id1 in (select s.id1 from abin1 s group by s.id1 having(count(s.id1))>1 );
          select * from abin1 t where exists (select * from abin1 s where s.id1=t.id1 group by s.id1 having(count(s.id1))>1);
          刪除重復記錄(保留一條):
          delete from abin1 t where t.id1 not in(select max(s.id1) from abin1 s group by s.name1 having count(s.name1)>0);

          posted @ 2013-01-04 22:51 abin 閱讀(1195) | 評論 (0)編輯 收藏

          僅列出標題
          共50頁: First 上一頁 17 18 19 20 21 22 23 24 25 下一頁 Last 
          主站蜘蛛池模板: 马尔康县| 博兴县| 永康市| 林口县| 长乐市| 化德县| 平舆县| 台湾省| 宁化县| 华蓥市| 顺平县| 湖南省| 友谊县| 绍兴市| 方城县| 长岛县| 禹州市| 泗水县| 海宁市| 庆元县| 邯郸县| 唐山市| 萨嘎县| 四会市| 射阳县| 富裕县| 永川市| 修武县| 临夏县| 新建县| 米脂县| 临邑县| 江口县| 溧阳市| 新兴县| 大厂| 南通市| 文登市| 漯河市| 泸定县| 华宁县|