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

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

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

    張慧的博客

    張慧的博客

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      45 Posts :: 0 Stories :: 24 Comments :: 0 Trackbacks

    #

    function getCookie(c_name)
    {
        if (document.cookie.length>0)
        { 
            c_start=document.cookie.indexOf(c_name + "=")
            if (c_start!=-1)
            { 
                c_start=c_start + c_name.length+1 
                c_end=document.cookie.indexOf(";",c_start)
                if (c_end==-1) 
                    c_end=document.cookie.length

                return unescape(document.cookie.substring(c_start,c_end))
            } 
        }
        return ""
    }

    function setCookie(c_name,value,expiredays)
    {
        var exdate=new Date();
        exdate.setDate(exdate.getDate()+expiredays)
        document.cookie=c_name+ "=" +escape(value)+
        ((expiredays==null) ? "" : "; expires="+exdate.toGMTString());
    }

    function delCookie(c_name)
    {
        var exdate=new Date();
        exdate.setTime(exdate.getTime() - 1);
        var cval=getCookie(c_name);
        if(cval!=null) document.cookie= c_name + "="+cval+";expires="+exdate.toGMTString();
    }

    【使用方法】

    1 設置Cookie

    (1) 設置會話Cookie

    所謂會話Cookie就是一旦瀏覽器關閉,Cookie就失效了。在嵌入式Web服務器(如Boa)中,常用到CGI編程,CGI沒有session機制,可以利用文件或數據庫與會話Cookie相結合,模仿session機制。

    1. setCookie('loginPage',page,null);  

    (2) 設置定時Cookie

    1. setCookie('loginPage',page,1);  

    定時時間為一天。

     

    2 獲取Cookie

    1. var page = getCookie('loginPage');  


    3 刪除Cookie

    1. delCookie('loginPage');  

    *以上代碼在IE,Chrome,FireFox中測試通過,均可正常使用。 

    posted @ 2012-07-08 23:33 張慧 閱讀(2588) | 評論 (0)編輯 收藏

    這是在一個opensource項目中看到的獲取訪問者ip的方法: 
    /**
          * 獲取訪問者IP
          * 
          * 在一般情況下使用Request.getRemoteAddr()即可,但是經過nginx等反向代理軟件后,這個方法會失效。
          * 
          * 本方法先從Header中獲取X-Real-IP,如果不存在再從X-Forwarded-For獲得第一個IP(用,分割),
          * 如果還不存在則調用Request .getRemoteAddr()。
          * 
          * 
    @param request
          * 
    @return
          
    */
         public static String getIpAddr(HttpServletRequest request) {
             String ip = request.getHeader("X-Real-IP");
             if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
                 return ip;
             }
             ip = request.getHeader("X-Forwarded-For");
             if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
                 // 多次反向代理后會有多個IP值,第一個為真實IP。
                 int index = ip.indexOf(',');
                 if (index != -1) {
                     return ip.substring(0, index);
                 } else {
                     return ip;
                 }
             } else {
                 return request.getRemoteAddr();
             }
         }
    posted @ 2012-07-08 23:31 張慧 閱讀(2983) | 評論 (0)編輯 收藏

    在java中經常需要獲取一些系統信息,如系統的資源空間等。下面就是一些Runtime的應用:


    public static void main(String[] a){
             Runtime runtime 
    = Runtime.getRuntime();
             
    long freeMemoery = runtime.freeMemory();
             
    long totalMemory = runtime.totalMemory();
             
    long usedMemory = totalMemory - freeMemoery;
             
    long maxMemory = runtime.maxMemory();
             
    long useableMemory = maxMemory - totalMemory + freeMemoery;
             
             System.out.println(
    "當前時間:"+runtime);
             System.out.println(
    "系統閑置空間:"+freeMemoery);
             System.out.println(
    "系統總空間:"+totalMemory);
             System.out.println(
    "系統被用的空間:"+usedMemory);
             System.out.println(
    "系統最大空間:"+maxMemory);
             System.out.println(
    "系統可用空間:"+useableMemory);
         }

    運行效果:


    當前時間:java.lang.Runtime@c3c749
     系統閑置空間:
    4873672
     系統總空間:
    5177344
     系統被用的空間:
    303672
     系統最大空間:
    66650112
     系統可用空間:
    66346440

     

    posted @ 2012-07-08 23:30 張慧 閱讀(746) | 評論 (0)編輯 收藏

     1、什么是混淆?為什么要混淆?這個問題不多說明,簡單講,就是為了保護軟件項目的所有權,防止別人反編譯,將代碼打亂,人看著會很費勁,但對計算機執行沒有障礙。 
        2、當前項目的結構:項目采用的框架是ssh(spring、struts2、hibernate)的,其中還用了Annotation 注釋標簽。代碼形如: 
        (1)一個bo的代碼 
    Java代碼  收藏代碼
    1. /** 
    2.  *@preserve all 
    3.  */  
    4. @Entity  
    5. @Table(name = "crm_code_clientSort")  
    6. public class ClientSort  
    7. {  
    8.     @Id  
    9.     @GeneratedValue(generator = "uuidGenerator")  
    10.     @GenericGenerator(name = "uuidGenerator", strategy = "uuid")  
    11.     @Column(length = 32)  
    12.     private String id;//標識  
    13.       
    14.     @Column(length = 6)  
    15.     private String code; //編號  
    16.   
    17.     @Column(length = 20)  
    18.     private String name; //名稱  
    19.       
    20. }  

        (2)action的代碼 
    Java代碼  收藏代碼
    1. /** 
    2.  *@preserve all 
    3.  */  
    4. @Controller  
    5. @Scope("prototype")  
    6. @ParentPackage(value = "abc-default")  
    7. @Namespace("/crm/backlog")  
    8. @Results(  
    9. {       
    10.     @Result(name = "showInfo", location = "/jsp/crm/backlog/showInfo.jsp"),  
    11.     @Result(name = "common", location = "/jsp/crm/backlog/list.jsp"),  
    12.     @Result(name = "addBacklog", location = "/jsp/crm/backlog/addBacklog.jsp"),  
    13.     @Result(name = "updateBacklog", location = "/jsp/crm/backlog/updateBacklog.jsp")  
    14.       
    15. })  
    16. @InterceptorRef("isLogin")  
    17. public class BacklogAction {  
    18.       
    19.     @Resource  
    20.     private CRM_BacklogService cRM_backlogService; //此對象是spring自動注入的,因為加了@Resource標簽  
    21.       
    22.     @Resource  
    23.     private CodeBean codeBean;      
    24.       
    25.     private Object fere;       
    26.     private Backlog dto;   
    27.         //以下略  
    28.   
    29. }  

        (3)service代碼 
    Java代碼  收藏代碼
    1. @Service  
    2. public class UserService  
    3. {  
    4.    @Resource  
    5.    public Dao dao;  
    6.   
    7.    public String getTheNum()  
    8.    {  
    9.       //省略代碼  
    10.       return "";  
    11.     }  
    12.   
    13.   
    14.    /** 
    15.      * @preserve public 
    16.      */  
    17.    public void updateObject(User user)  
    18.    {  
    19.       dao.updateObject(user);  
    20.    }  
    21.       
    22.    //********省略其他  
    23. }  


        3、混淆介紹。 
        (1)整體混淆級別設置。設置為public的。對所有的代碼混淆。具體配置文件我使用方法,參見jocky的說明文件,附件的壓縮包中有。 
    Xml代碼  收藏代碼
    1. <property name="jocky.scramble.level" value="public"/>  

        (2)對于不需要混淆的類,加上注釋 @preserve all 將其除外。如上面的bo、action代碼。本項目中不能混淆的類有: 
        A、action類,可能是由于struts2管理的原因,如果混淆,項目會報錯,找不到相應的action. 
        B、bo類,該類是和數據庫表一一對應的,改變了,就亂了。因為用的是hibernate自動映射的。 
        C、其他會被jsp頁面中引用到的類,如dto類,工具類,dwr類等。 
        (3)對于可以混淆的類,但不能混淆的方法,加上@preserve public 注釋。如上面的service類。因為涉及到事務的控制,如果方法名被混淆了,在方法內改變數據的某些操作時,就會報錯。本項目中在sping.xml內配置了所有service方法中,只有以save,update,delete開頭的方法,才能改變數據庫,否則會報錯。參見如下: 
    Xml代碼  收藏代碼
    1. <!-- 配置事務的傳播特性 -->  
    2. <tx:advice id="txAdvice" transaction-manager="transactionManager">  
    3.     <tx:attributes>  
    4.         <tx:method name="save*" propagation="REQUIRED" />  
    5.         <tx:method name="update*" propagation="REQUIRED" />  
    6.         <tx:method name="delete*" propagation="REQUIRED" />  
    7.         <tx:method name="*" read-only="true" />  
    8.     </tx:attributes>  
    9. </tx:advice>  
    10.   
    11.   
    12. <!-- 那些類的哪些方法參與事務 -->  
    13. <aop:config>  
    14.     <aop:pointcut id="commonServiceMethod" expression="execution(* com.abc.domain.common.service.*.*(..))" />  
    15.     <aop:pointcut id="khServiceMethod" expression="execution(* com.abc.domain.*.*.inside.service.*.*(..))" />  
    16.       
    17.     <aop:advisor pointcut-ref="commonServiceMethod" advice-ref="txAdvice" />  
    18.     <aop:advisor pointcut-ref="khServiceMethod" advice-ref="txAdvice" />  
    19. </aop:config>  

    posted @ 2012-07-08 01:46 張慧 閱讀(3549) | 評論 (0)編輯 收藏

    Macro總結了該問題的一些返回結果:

    1. 應用打開即崩潰。各種折騰都沒用
    2. 可能并不是全球性的,只影響個別地區
    3. 從iTunes更新的用戶可能收到 error 8324 或者 error 8326 信息
    4. Mac應用可能顯示:該應用已損壞,請刪除或重裝。
    5. 控制臺顯示AppleFairplayTextCrypterSession::fairplayOpen() failed, error -42110
    posted @ 2012-07-08 01:46 張慧 閱讀(1039) | 評論 (0)編輯 收藏

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Jquery</title>
    <script type="text/javascript" src="../Js/jquery1.6.1.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            var ht = $('.toshow li').html();
            var te = $('.toshow li').text();
            var htte = '這是html()在li的顯示結果' + ht + '****' + '<br>這是text()在li的顯示結果' + te + '****';
            var ht1 = $('.toshow1').html();
            var te1 = $('.toshow1').text();
            htte += '<br>這是html()在div的顯示結果' + ht1 + '****' + '<br>這是text()在div的顯示結果' + te1 + '****';
            $('.totext').html(htte);
        });
    </script>
    </head>

    <body>



    <div class="toshow">
        <ul>
            <li>sj*</li>
        </ul>
    </div>
    <div class="toshow1">sj*</div>
    <div class="totext"></div>
    <div class="result">
        在li下,將會在最后有一個' '空格
    </div>


    </body>
    </html>

    先上代碼。

    運行結果如下:

    這是html()在li的顯示結果sj* ****
    這是text()在li的顯示結果sj* ****
    這是html()在div的顯示結果sj*****
    這是text()在div的顯示結果sj*****
    在li下,將會在最后有一個' '空格 

    posted @ 2012-07-05 22:56 張慧 閱讀(1482) | 評論 (0)編輯 收藏

    1.需要把json的包源碼搞出來,我們就可以測試了。(下載地址)https://github.com/douglascrockford/JSON-java
    2,測試代碼如下:

    package shengsiyuan.lxd.json;

    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    import org.junit.Test;

    public class TestJson
    {
        @Test
        
    public void TestJson01() throws JSONException
        {
            String jsonContent 
    = "{'name':'lixiaodaoaaa','age':26}";
            JSONObject myJson 
    = new JSONObject(jsonContent);
            String strName 
    = myJson.getString("name").toString();
            String strAge 
    =String.valueOf(myJson.getInt("age"));
            System.out.println(strName);
            System.out.println(strAge);
        }
        @Test
        
    public void TestJson02() throws JSONException
        {
            String jsonContent 
    ="[{'name':'lixiaodaoaaa','age':22}," +
                    
    "{'name':'lihao','age':26}," +
                    
    "{'name':'libo','age':27}]";
            JSONArray myJsonArray 
    = new JSONArray(jsonContent);
            String strName1  
    = myJsonArray.getJSONObject(0).getString("name");
            String strName2  
    = myJsonArray.getJSONObject(1).getString("name");
            String strName3  
    = myJsonArray.getJSONObject(2).getString("name");
            String strAge1 
    = String.valueOf(myJsonArray.getJSONObject(0).getInt("age"));
            String strAge2 
    = String.valueOf(myJsonArray.getJSONObject(1).getInt("age"));
            String strAge3 
    = String.valueOf(myJsonArray.getJSONObject(2).getInt("age"));
            System.out.println(strName1
    +".************."+strAge1);
            System.out.println(strName2
    +".************."+strAge2);
            System.out.println(strName3
    +".************."+strAge3);
        }
        @Test
        
    public void TestJson03() throws JSONException
        {
            String jsonString 
    = "[{'key':{'name':'lixiaodaoaaa','age':22}}, {'key':{'name':'lihao','age':21}},{'key':{'name':'libo','age':23}}]";
            JSONArray myjsonArray 
    = new JSONArray(jsonString);
            
    for(int i=0;i<myjsonArray.length();i++)
            {
                String strName 
    = myjsonArray.getJSONObject(i).getJSONObject("key").get("name").toString();
                String strAge 
    = String.valueOf(myjsonArray.getJSONObject(i).getJSONObject("key").getInt("age"));
                System.out.println(strName
    +"************************"+strAge);
            }
        }
    }

     
    posted @ 2012-07-05 22:55 張慧 閱讀(826) | 評論 (0)編輯 收藏

    很多時候,尤其是當我們需要展示或者宣傳自己的產品時,我們都會用到圖片輪播的特效,但是,選擇什么樣的圖片播放器更實用、更美觀、更大氣呢?下面就給大家推薦幾款簡單實用卻又美觀大氣的jQuery圖片播放器,希望能給大家帶來幫助。

    1、jQuery圖片水平播放插件

    這是一個非常簡潔但又十分實用的jQuery圖片水平播放插件,這個jQuery圖片播放插件允許你自己定義同時滾動幾張圖片,并且滑動很平滑。

    2、jQuery仿蘋果圖片播放器

    這是一款基于jQuery的仿蘋果樣式的圖片播放器,這個圖片播放器配置簡單,外觀簡潔但不是美觀,和蘋果的特點非常相符。這個圖片播放器非常適合放在你的首頁上作為產品圖片輪播組件。

    3、jQuery幻燈片式播放的相冊插件

    這是一款基于jQuery的相冊插件,該jQuery圖片播放插件將相片的縮略圖展示在一個導航網格中。我們不僅可以手動地點擊按鈕切換當前的圖片,也可以讓相冊自動播放圖片,當然也可以展開網格點擊縮略圖來瀏覽整張圖片。

    4、jQuery圖片水平滾動插件

    這是一款基于jQuery的圖片水平滾動插件,這個插件在滾動圖片的時候十分流暢,同時支持自動播放,你也可以利用鼠標滾輪來使圖片左右滾動。

    5、jQuery圖片播放插件

    這是一款基于jQuery的圖片播放插件,一共分5屏,有JS代碼基礎的朋友也可以根據自己的需求修改需要展示的圖片數量,這個jQuery圖片播放插件整體滑動比較流暢,兼容所有主流瀏覽器。

    6、jQuery圖片層疊展示特效

    這是一款基于jQuery的圖片展示插件,該圖片展示插件將圖片交錯地疊在一起,當鼠標點擊圖片時,下一張圖片將會浮現上來,效果非常棒。

    posted @ 2012-07-05 22:52 張慧 閱讀(1128) | 評論 (0)編輯 收藏

     對于Java Web程序的學習已經有一段時間了,也正在跟做一個項目——DRP分銷資源計劃。

             DRP這段時間已經看了不少了,把相關代碼也實現了。但是還是沒有搞清楚一些關系。大概知道是哪里調用了那里,整體上和.net一致。細說就不知道了。為了能更好的理解Java程序,所以在網上也了些資料來促進理解。

           在web程序中不太容易搞清楚的就是客戶端和服務器。這也是B/S結構的一大特點,C/S結構的客戶端和服務器非常明了,沒有其他的輔助技術。在B/S中將很多技術都分離出來成為獨立的技術,讓其變得更加靈活。(像 js、jsp、ajax等等)

           為了搞清楚他們這些相關技術之間的關系,首先來了解一下Java Web程序客戶端和服務器端是如何進行交互的。

           說起來其實很簡單,web程序客戶端和服務器的交互主要依賴于Http協議的。先來了解一下什么是個HTTP協議吧!

            A、HTTP是一種超文本傳送協議(Hyper Text Transport Protocol)是一套計算機在網絡中通信的一種規則。在TCP/IP體系結構中,HTTP屬于應用層協議,位于TCP/IP協議的頂層。

           B、HTTP是一種無狀態的協議,意思是指在Web 瀏覽器(客戶端)和 Web 服務器之間不需要建立持久的連接。整個過程就是當一個客戶端向服務器端發送一個請求(request),然后Web服務器返回一個響應 (response),之后連接就關閉了,在服務端此時是沒有保留連接的信息。

           C、HTTP 遵循 請求/響應(request/response) 模型的,所有的通信交互都被構造在一套請求和響應模型中。

           D、瀏覽WEB時,瀏覽器通過HTTP協議與WEB服務器交換信息,Web服務器向Web瀏覽器返回的文件都有與之相關的類型,這些信息類型的格式由MIME定義。

     

           HTTP定義的事物處理有以下四個步驟:1、建立鏈接  2、客戶端發送HTTP請求報文(request)  3、服務器響應請求生成結果并回發(response)  4、服務器端關閉連接,客戶端解析回發響應報文,恢復頁面

     

              1、  建立連接

                 我們在瀏覽器地址欄中輸入URL地址,例如:http://blog.csdn.net/lidonglong121。客戶端請求這個地址的時候即打開了web服務器HTTP端口的一個套接字。

             2、  客戶端發送HTTP請求報文(request)

                一旦建立了TCP連接,Web瀏覽器就會向Web服務器發送請求命令,是一個ASCII文本請求行,后跟0個或多個HTTP頭標(即報頭),一個空行和實現請求的任意數據。

                 請求報文共含四部分,詳見博文:http://blog.csdn.net/lidonglong121/article/details/7719405

                 


         請求報文總結:

               我們可以這樣寫出一個標準的 HTTP請求:

                           POST /lidonglong121 HTTP1.1

                           HOST: blog.csdn.net/

                           User-Agent: Mozilla/4.0

                           Accpt: image/gif,text/html,application/pdf,image/png...

                           (CRLF)

                            viewmode=contents           (POST()請求的數據)

        這上面的一個例子意思是:

               我要去訪問的服務器端的地址是:blog.csdn.net/  它下面的資源: /lidonglong121  

               連起來就是:blog.csdn.net/lidonglong121
               這個頁面用的是 HTTP1.1 規范,我的瀏覽器版本是Mozilla/4.0
               可以支持的MIME格式為 image/gif,text/html,application/pdf,image/png.....


           GET 和 POST 最直觀的區別就是:GET方法將數據的請求跟在了所請求的URL后面,也就是在請求行里面我們是這么樣來做的:
                GET /lidonglong121?key=value&key=value&key=value......HTTP1.1
           實際上用 GET 是這樣傳遞數據的:http://blog.csdn.net/lidonglong121?viewmode=contents
           POST是不會將調用的參數在URL中顯示的。

     

            3.服務器端響應請求生成結果并回發(response)
                 Web 服務器解析請求,定位指定的資源 http://blog.csdn.net/lidonglong121/article/details/7718663
               

                1)根據請求時的 GET/POST 對應的用servlet里的 doGet() / doPost()方法來處理(有可能是一些業務邏輯,也有可能是一些驗證等等,也有可能是一些數據查詢,提交等等)其有效的數據就來源于key=value&key=value&key=value......,以及其它的一些封裝在request 對象中的數據資源。

                2)處理請求之后,由 response 對象得到 java.io.PrintWriter 輸出流對象out,通過 out.println(); 將數據以指定的格式,如按照response.setcontentType("text/html;charset=gb2312");的格式輸出到輸出流。

             它的響應報文與請求報文非常類似,其區別就在于:我們在請求階段的請求行被狀態行給替換了,再來看響應報文:
                3)一個響應報文由四個部分組成:狀態行、響應頭標、空行、響應數據:

                  詳見博文:http://blog.csdn.net/lidonglong121/article/details/7719109

           4、服務器端關閉連接,客戶端解析回發響應報文,恢復頁面

                1)瀏覽器先解析狀態行,查看請求是否成功的狀態代碼。

                2)解析每一個響應頭標,如:

                      ContentType.text/html;charset=gb2312

                      Content-Lengh:122 ---響應中的字節數

                3)讀取響應數據HTML,根據標簽<html></html>中的內容恢復標準的HTML格式頁面或者其他。

                4)一個HTML文檔可能包含其它的需要被載入的資源,瀏覽器會識別,并對這些資源再進行額外的請求,這個過程可以是循環的方式一直到所有的數據都按照響應頭標中規定的格式恢復到頁面中。

                5)數據傳送完畢,服務器端關閉連接,即無狀態協議。 

       

           web客戶端和服務器的一個交互主要流程如上所述。

    posted @ 2012-07-05 22:51 張慧 閱讀(3546) | 評論 (0)編輯 收藏

    做一名禪修程序員意味著什么?那意味著,你要持守我從禪宗 習得的10條戒律,它們與計算機程序員的現代世界息息相關。

    早晨,外面下著雨,我發覺自己正坐在辦公桌上琢磨有關高效率工作(efficient working)的問題。在我成為自由職業者之前的那些日子,盡管做了許多工作,然而回首往昔,不過是一片狼藉罷了。

    回想2006年我開始禪修之際,當時有好一陣子,這種念頭清晰地浮現在我的腦海里:幾百年前,老禪師就已知曉今天的程序員到底該如何工作。盡管我并不喜歡那些諸如“成為更好的程序員”之類的帖子,但是從那天早上起,我想概括我的一些想法。謹以此文作為自我提醒,但如果你對此有任何想法,歡迎不吝賜教。

    1. 一心不亂(Focus——集中精神)

    一旦你已決定處理某項任務,就要盡你所能把它做好。不要同時啟動幾件事。一次只做一件事。一心多用不會使你變得更快,你只不過是在進行多線程式的工作。如果進行多線程式的工作,那么你將變得精疲力竭、錯誤倍出,而且為了從一個任務跳轉到另一任務也會浪費時間。這不僅適用于編程,而且是條通用建議。

    澤木興道(Kodo Sawaki)禪師說過:要是你想睡就睡。當你準備睡覺時,就別盤算軟件了。只管去睡。要是你想編碼就編碼。切勿虛度光陰——專心編碼。要是你累得寫不動程序了,那就睡吧!即使像Stephan Uhrenbacher那樣知名的多任務處理者在此時也會決定進行單線程式的工作。我有著與Stephan類似的經歷,并最終寫出了名為Time & Bill的時間跟蹤工具。其目的是跟蹤我的時間,哪怕是像打電話那樣的小任務也可輕松跟蹤。現在我可以在每天伊始創建幾個秒表,而且只需輕輕一點便可跟蹤我的時間。但是過去的結果卻是場災難:有時直到我移至下一個任務為止,我僅僅在某個任務上工作了幾分鐘。現在我的情況已有所改善。與番茄工作法類似,我會計劃若干時段,并且在那些時段里全神貫注地工作,不聊天、不瞌睡、不瀏覽應用商店上那些精彩的新游戲。

    posted @ 2012-07-05 22:22 張慧 閱讀(788) | 評論 (0)編輯 收藏

    僅列出標題
    共5頁: 上一頁 1 2 3 4 5 下一頁 
    主站蜘蛛池模板: 老外毛片免费视频播放| 69成人免费视频无码专区| 亚洲AV无码一区二区三区电影 | 亚洲av午夜福利精品一区人妖| 国产无遮挡裸体免费视频| 免费观看美女用震蛋喷水的视频| 国产精品九九久久免费视频| 亚洲中文字幕久久精品无码VA| 7777久久亚洲中文字幕蜜桃| 久久久久亚洲AV无码专区网站| 日本免费人成黄页在线观看视频 | 亚洲乱码一区二区三区在线观看| 国产精品无码一区二区三区免费 | 久久久国产精品亚洲一区| 亚洲日韩在线观看免费视频| 在线观看免费高清视频| 日韩人妻无码免费视频一区二区三区| 国产中文字幕在线免费观看| www亚洲精品久久久乳| 亚洲国产成+人+综合| 亚洲av无码一区二区三区网站| 亚洲XX00视频| 成全视频免费高清| 51在线视频免费观看视频| 国产精品玖玖美女张开腿让男人桶爽免费看 | 在线观看特色大片免费视频| 两个人看的www免费视频中文| 亚洲av综合av一区二区三区| 亚洲精品线在线观看| 免费又黄又爽的视频| 免费下载成人电影| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 亚洲成A人片77777国产| 黄瓜视频高清在线看免费下载| 免费91麻豆精品国产自产在线观看| 亚洲妇女熟BBW| 亚洲国产成人精品电影| 久久亚洲精品成人AV| 亚洲视频在线观看一区| 亚洲区小说区图片区QVOD| 亚洲一区二区视频在线观看|