<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      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 閱讀(5124) | 評論 (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 閱讀(1788) | 評論 (0)編輯 收藏

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

    僅列出標題
    共50頁: First 上一頁 17 18 19 20 21 22 23 24 25 下一頁 Last 
    主站蜘蛛池模板: 国产成人免费手机在线观看视频 | 亚洲七七久久精品中文国产| 亚洲国产日韩在线成人蜜芽 | 国产亚洲漂亮白嫩美女在线| 亚洲免费福利在线视频| 久久精品国产亚洲AV麻豆不卡| 国产亚洲精品精华液| 精品免费久久久久国产一区 | 日韩中文字幕在线免费观看| 伊人婷婷综合缴情亚洲五月| 成人免费ā片在线观看| 亚洲中文字幕无码久久综合网| 久久WWW免费人成—看片| 亚洲精品V欧洲精品V日韩精品| 久久精品国产这里是免费| 亚洲综合小说久久另类区| 国产精品高清免费网站| 亚洲色欲久久久综合网东京热| 国产午夜精品久久久久免费视| 99人中文字幕亚洲区| 久久久久久国产a免费观看黄色大片| 久久久久亚洲国产| 三年片在线观看免费观看大全一| 亚洲网红精品大秀在线观看| 欧洲亚洲综合一区二区三区| 亚洲精品专区在线观看| 日韩免费在线观看视频| 亚洲一区免费视频| 免费成人在线观看| 国产无遮挡无码视频免费软件| 亚洲国产精品久久久久秋霞影院| 精品国产免费观看久久久| 国产精品亚洲午夜一区二区三区| 大学生高清一级毛片免费| jizz在线免费观看| 911精品国产亚洲日本美国韩国| 成人免费无码大片A毛片抽搐| 国产免费人成视频尤勿视频| 亚洲精品福利网站| 亚洲色偷偷狠狠综合网| 人妻仑刮八A级毛片免费看|