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

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

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

    隨筆-16  評(píng)論-84  文章-1  trackbacks-0
      2010年2月16日
    通過(guò)存儲(chǔ)過(guò)程向數(shù)據(jù)庫(kù)一下子插入了一千萬(wàn)(10000000)條記錄,結(jié)果等了很長(zhǎng)時(shí)間,PL/SQL都沒(méi)有響應(yīng),我又瞎折騰了下,結(jié)果執(zhí)行了好幾次,導(dǎo)致數(shù)據(jù)庫(kù)假死了,我只有刪除當(dāng)前的會(huì)話,從網(wǎng)上找到相關(guān)的腳本代碼。


    1> 通過(guò)此語(yǔ)句查詢正在鎖定的SESSION_ID:

    1SELECT  SESSION_ID   FROM   V$LOCKED_OBJECT,USER_OBJECTS  WHERE   V$LOCKED_OBJECT.OBJECT_ID   =   USER_OBJECTS.OBJECT_ID


    2> 通過(guò)第一步查詢到的SESSION_ID查詢SERIAL#

    1SELECT SERIAL# FROM V$SESSION  WHERE SID='12'(此處'12'為上面查詢到的'SESSION_ID')


     3> 根據(jù)1,2步查詢到的SESSION_ID和SERIAL#執(zhí)行

    1ALTER   SYSTEM   KILL   SESSION  '12,154'(12為SESSION_ID的值, 154為SERIAL#的值)

    4> 如果利用上面的命令殺死一個(gè)進(jìn)程后,進(jìn)程狀態(tài)被置為"killed",但是鎖定的資源很長(zhǎng)時(shí)間沒(méi)有被釋放,那么還可以在os一級(jí)再殺死相應(yīng)的進(jìn)程(線程),首先執(zhí)行下面的語(yǔ)句獲得當(dāng)前進(jìn)程(線程)的標(biāo)示PID:

    1select spid, osuser, s.program 
    2from v$session s,v$process p
    3where s.paddr=p.addr and s.sid=12 (12是上面的SESSION_ID)

    然后在OS通過(guò)任務(wù)管理器找到對(duì)應(yīng)的進(jìn)程,在殺死這個(gè)進(jìn)程(線程)

    posted @ 2010-11-27 14:55 absolute 閱讀(859) | 評(píng)論 (0)編輯 收藏
    最近在學(xué)習(xí)存儲(chǔ)過(guò)程,以前在項(xiàng)目中沒(méi)有怎么接觸過(guò)!

    我通過(guò)存儲(chǔ)過(guò)程像數(shù)據(jù)庫(kù)中批量添加一千萬(wàn)(100000000)條記錄,結(jié)果PL/SQL很長(zhǎng)時(shí)間沒(méi)有反映,結(jié)果不得已通過(guò)腳本殺掉當(dāng)前進(jìn)程,我重新通過(guò)存儲(chǔ)過(guò)程插入10000條數(shù)據(jù)。

    建表腳本:
     1--刪除用戶表
     2DROP TABLE T_PORTAL_USER;
     3
     4--創(chuàng)建用戶表
     5CREATE TABLE T_PORTAL_USER
     6(
     7    id NUMBER PRIMARY KEY-- 用戶表示
     8    username VARCHAR2(24NOT NULL,-- 用戶名
     9    password VARCHAR2(24NOT NULL,-- 密碼
    10    realname VARCHAR2(24NOT NULL,-- 真實(shí)姓名
    11    sex VARCHAR2(2DEFAULT '0',-- 性別 "0":Male "1":Female
    12    registerDate TIMESTAMP NOT NULL,-- 注冊(cè)日期
    13    state VARCHAR2(2NOT NULL -- 賬號(hào)狀態(tài) "0":啟用  "1":注銷
    14)
    15
    16--刪除用戶表序列
    17DROP SEQUENCE SEQ_T_PORTAL_USER;
    18
    19--創(chuàng)建用戶表序列
    20CREATE SEQUENCE SEQ_T_PORTAL_USER
    21START WITH 1
    22INCREMENT BY 1
    23NOMAXVALUE
    24CACHE 20


    -- 批量新增一萬(wàn)條用戶

     1-- 批量新增一萬(wàn)條用戶
     2CREATE OR REPLACE PROCEDURE PROC_USER_CREATE_BAT
     3AS
     4    startTime VARCHAR2(32);--開(kāi)始時(shí)間
     5    endTime VARCHAR2(32);--結(jié)束時(shí)間
     6BEGIN
     7  SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss:ff'INTO startTime FROM DUAL;
     8  DBMS_OUTPUT.PUT_LINE('Start Time: '||startTime);
     9  FOR i in 1..10000 LOOP
    10     INSERT INTO T_PORTAL_USER VALUES(SEQ_T_PORTAL_USER.NEXTVAL,'owen'||i,'123456','gekunjin'||i,'0',sysdate,'0');
    11  END LOOP;
    12  SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss:ff'INTO endTime FROM DUAL;
    13  DBMS_OUTPUT.PUT_LINE('End Time: '||endTime);
    14END PROC_USER_CREATE_BAT;
    posted @ 2010-11-27 14:41 absolute 閱讀(3698) | 評(píng)論 (1)編輯 收藏
         摘要: 在項(xiàng)目中使用Apache開(kāi)源的Services Framework CXF來(lái)發(fā)布WebService,CXF能夠很簡(jiǎn)潔與Spring Framework 集成在一起,在發(fā)布WebService的過(guò)程中,發(fā)布的接口的入?yún)⒂行╊愋椭С植皇呛芎茫热鏣imestamp和Map。這個(gè)時(shí)候我們就需要編寫一些適配來(lái)實(shí)行類型轉(zhuǎn)換。 Timestamp:  1/** *//** &n...  閱讀全文
    posted @ 2010-11-27 14:28 absolute 閱讀(3423) | 評(píng)論 (1)編輯 收藏

    Web應(yīng)用初始化Spring容器策略

    以下軟件測(cè)試環(huán)境為Spring,Struts1

    1、通過(guò)struts1提供的插件機(jī)制,采用Spring提供的ContextLoaderPlugIn

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

    <struts-config>
     <global-exceptions />
     <global-forwards />
     <message-resources parameter="com.portal.ApplicationResources" />
     <!--  通過(guò)S1提供的插件機(jī)制來(lái)初始化Spring容器,加載Spring配置文件
     <plug-in
      className="org.springframework.web.struts.ContextLoaderPlugIn">
      <!--
       1、ContextLoaderPlugIn默認(rèn)加載配置文件命名規(guī)則是actionServlet-servlet.xml,其中actionServlet
       是配置org.apache.struts.action.ActionServlet時(shí)指定的servlet名稱
       
       2、通過(guò)配置contextConfigLocation屬性來(lái)指點(diǎn)Spring配置文件的位置,多個(gè)配置文件可以使用 逗號(hào)","、分號(hào)";"、空格" "
      -->
      <set-property property="contextConfigLocation"
       value="/WEB-INF/conf/spring-application.xml,/WEB-INF/conf/**/spring*.xml" />
     </plug-in> 
      -->
    </struts-config>


    2、采用Spring提供的ContextLoaderListener來(lái)初始化(應(yīng)用服務(wù)器需要支持Listener,Servlet2.3版本及以上)
     <context-param>
       <description>通過(guò)配置contextConfigLocation屬性來(lái)指點(diǎn)Spring配置文件的位置,多個(gè)配置文件可以使用 逗號(hào)","、分號(hào)";"、空格" "</description>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/conf/spring-application.xml /WEB-INF/conf/**/spring*.xml</param-value>
      </context-param>
     
      <listener>
       <description>通過(guò)ContextLocaderListener來(lái)初始化Spring容器,加載Spring配置文件</description>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>

    3、采用load-on-startup Servlet 來(lái)初始化Spring容器
      <servlet>
       <description>
        通過(guò)load-on-startup Servlet來(lái)初始化Spring容器
        該如何Servlet 用于提供"后臺(tái)"服務(wù),作為容器管理應(yīng)用中的其他bean,不需要響應(yīng)客戶請(qǐng)求,因此無(wú)須配置servlet-mapping
       </description>
       <servlet-name>applicationContext</servlet-name>
       <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
       <load-on-startup>0</load-on-startup>
      </servlet>

    posted @ 2010-09-13 18:10 absolute 閱讀(2268) | 評(píng)論 (0)編輯 收藏

    集群概念
    1. 兩大關(guān)鍵特性
    集群是一組協(xié)同工作的服務(wù)實(shí)體,用以提供比單一服務(wù)實(shí)體更具擴(kuò)展性與可用性的服務(wù)平臺(tái)。在客戶端看來(lái),一個(gè)集群就象是一個(gè)服務(wù)實(shí)體,但事實(shí)上集群由一組服務(wù)實(shí)體組成。與單一服務(wù)實(shí)體相比較,集群提供了以下兩個(gè)關(guān)鍵特性:

    ·  可擴(kuò)展性--集群的性能不限于單一的服務(wù)實(shí)體,新的服務(wù)實(shí)體可以動(dòng)態(tài)地加入到集群,從而增強(qiáng)集群的性能。

    ·  高可用性--集群通過(guò)服務(wù)實(shí)體冗余使客戶端免于輕易遇到out of service的警告。在集群中,同樣的服務(wù)可以由多個(gè)服務(wù)實(shí)體提供。如果一個(gè)服務(wù)實(shí)體失敗了,另一個(gè)服務(wù)實(shí)體會(huì)接管失敗的服務(wù)實(shí)體。集群提供的從一個(gè)出錯(cuò)的服務(wù)實(shí)體恢復(fù)到另一個(gè)服務(wù)實(shí)體的功能增強(qiáng)了應(yīng)用的可用性。

    2. 兩大能力
    為了具有可擴(kuò)展性和高可用性特點(diǎn),集群的必須具備以下兩大能力:

    ·  負(fù)載均衡--負(fù)載均衡能把任務(wù)比較均衡地分布到集群環(huán)境下的計(jì)算和網(wǎng)絡(luò)資源。

    ·  錯(cuò)誤恢復(fù)--由于某種原因,執(zhí)行某個(gè)任務(wù)的資源出現(xiàn)故障,另一服務(wù)實(shí)體中執(zhí)行同一任務(wù)的資源接著完成任務(wù)。這種由于一個(gè)實(shí)體中的資源不能工作,另一個(gè)實(shí)體中的資源透明的繼續(xù)完成任務(wù)的過(guò)程叫錯(cuò)誤恢復(fù)。

    負(fù)載均衡和錯(cuò)誤恢復(fù)都要求各服務(wù)實(shí)體中有執(zhí)行同一任務(wù)的資源存在,而且對(duì)于同一任務(wù)的各個(gè)資源來(lái)說(shuō),執(zhí)行任務(wù)所需的信息視圖(信息上下文)必須是一樣的。

    3. 兩大技術(shù)
    實(shí)現(xiàn)集群務(wù)必要有以下兩大技術(shù):

    ·  集群地址--集群由多個(gè)服務(wù)實(shí)體組成,集群客戶端通過(guò)訪問(wèn)集群的集群地址獲取集群內(nèi)部各服務(wù)實(shí)體的功能。具有單一集群地址(也叫單一影像)是集群的一個(gè)基本特征。維護(hù)集群地址的設(shè)置被稱為負(fù)載均衡器。負(fù)載均衡器內(nèi)部負(fù)責(zé)管理各個(gè)服務(wù)實(shí)體的加入和退出,外部負(fù)責(zé)集群地址向內(nèi)部服務(wù)實(shí)體地址的轉(zhuǎn)換。有的負(fù)載均衡器實(shí)現(xiàn)真正的負(fù)載均衡算法,有的只支持任務(wù)的轉(zhuǎn)換。只實(shí)現(xiàn)任務(wù)轉(zhuǎn)換的負(fù)載均衡器適用于支持ACTIVE-STANDBY的集群環(huán)境,在那里,集群中只有一個(gè)服務(wù)實(shí)體工作,當(dāng)正在工作的服務(wù)實(shí)體發(fā)生故障時(shí),負(fù)載均衡器把后來(lái)的任務(wù)轉(zhuǎn)向另外一個(gè)服務(wù)實(shí)體。

    ·  內(nèi)部通信--為了能協(xié)同工作、實(shí)現(xiàn)負(fù)載均衡和錯(cuò)誤恢復(fù),集群各實(shí)體間必須時(shí)常通信,比如負(fù)載均衡器對(duì)服務(wù)實(shí)體心跳測(cè)試信息、服務(wù)實(shí)體間任務(wù)執(zhí)行上下文信息的通信。

    具有同一個(gè)集群地址使得客戶端能訪問(wèn)集群提供的計(jì)算服務(wù),一個(gè)集群地址下隱藏了各個(gè)服務(wù)實(shí)體的內(nèi)部地址,使得客戶要求的計(jì)算服務(wù)能在各個(gè)服務(wù)實(shí)體之間分布。內(nèi)部通信是集群能正常運(yùn)轉(zhuǎn)的基礎(chǔ),它使得集群具有均衡負(fù)載和錯(cuò)誤恢復(fù)的能力。

    集群分類
    Linux集群主要分成三大類( 高可用集群, 負(fù)載均衡集群,科學(xué)計(jì)算集群)

    高可用集群( High Availability Cluster)
    負(fù)載均衡集群(Load Balance Cluster)
    科學(xué)計(jì)算集群(High Performance Computing Cluster)
    ================================================

    具體包括:

    Linux High Availability 高可用集群                                      
    (普通兩節(jié)點(diǎn)雙機(jī)熱備,多節(jié)點(diǎn)HA集群,RAC, shared, share-nothing集群等)

    Linux Load Balance 負(fù)載均衡集群                                     
     (LVS等....)

    Linux High Performance Computing 高性能科學(xué)計(jì)算集群    
     (Beowulf 類集群....)

    分布式存儲(chǔ)                                                                        
    其他類linux集群             
    (如Openmosix, rendering farm 等..)

    詳細(xì)介紹
    1. 高可用集群(High Availability Cluster)
    常見(jiàn)的就是2個(gè)節(jié)點(diǎn)做成的HA集群,有很多通俗的不科學(xué)的名稱,比如"雙機(jī)熱備", "雙機(jī)互備", "雙機(jī)".
    高可用集群解決的是保障用戶的應(yīng)用程序持續(xù)對(duì)外提供服務(wù)的能力。 (請(qǐng)注意高可用集群既不是用來(lái)保護(hù)業(yè)務(wù)數(shù)據(jù)的,保護(hù)的是用戶的業(yè)務(wù)程序?qū)ν獠婚g斷提供服務(wù),把因軟件/硬件/人為造成的故障對(duì)業(yè)務(wù)的影響降低到最小程度)。

    2. 負(fù)載均衡集群(Load Balance Cluster)

    負(fù)載均衡系統(tǒng):集群中所有的節(jié)點(diǎn)都處于活動(dòng)狀態(tài),它們分?jǐn)傁到y(tǒng)的工作負(fù)載。一般Web服務(wù)器集群、數(shù)據(jù)庫(kù)集群和應(yīng)用服務(wù)器集群都屬于這種類型。

    負(fù)載均衡集群一般用于相應(yīng)網(wǎng)絡(luò)請(qǐng)求的網(wǎng)頁(yè)服務(wù)器,數(shù)據(jù)庫(kù)服務(wù)器。這種集群可以在接到請(qǐng)求時(shí),檢查接受請(qǐng)求較少,不繁忙的服務(wù)器,并把請(qǐng)求轉(zhuǎn)到這些服務(wù)器上。從檢查其他服務(wù)器狀態(tài)這一點(diǎn)上看,負(fù)載均衡和容錯(cuò)集群很接近,不同之處是數(shù)量上更多。

    3. 科學(xué)計(jì)算集群(High Performance Computing Cluster)

    高性能計(jì)算(High Perfermance Computing)集群,簡(jiǎn)稱HPC集群。這類集群致力于提供單個(gè)計(jì)算機(jī)所不能提供的強(qiáng)大的計(jì)算能力。

    高性能計(jì)算分類  
     高吞吐計(jì)算(High-throughput Computing)
      有一類高性能計(jì)算,可以把它分成若干可以并行的子任務(wù),而且各個(gè)子任務(wù)彼此間沒(méi)有什么關(guān)聯(lián)。象在家搜尋外星人( SETI@HOME -- Search for Extraterrestrial Intelligence at Home )就是這一類型應(yīng)用。這一項(xiàng)目是利用Internet上的閑置的計(jì)算資源來(lái)搜尋外星人。SETI項(xiàng)目的服務(wù)器將一組數(shù)據(jù)和數(shù)據(jù)模式發(fā)給Internet上參加SETI的計(jì)算節(jié)點(diǎn),計(jì)算節(jié)點(diǎn)在給定的數(shù)據(jù)上用給定的模式進(jìn)行搜索,然后將搜索的結(jié)果發(fā)給服務(wù)器。服務(wù)器負(fù)責(zé)將從各個(gè)計(jì)算節(jié)點(diǎn)返回的數(shù)據(jù)匯集成完整的數(shù)據(jù)。因?yàn)檫@種類型應(yīng)用的一個(gè)共同特征是在海量數(shù)據(jù)上搜索某些模式,所以把這類計(jì)算稱為高吞吐計(jì)算。所謂的Internet計(jì)算都屬于這一類。按照 Flynn的分類,高吞吐計(jì)算屬于SIMD(Single Instruction/Multiple Data)的范疇。

     分布計(jì)算(Distributed Computing)
      另一類計(jì)算剛好和高吞吐計(jì)算相反,它們雖然可以給分成若干并行的子任務(wù),但是子任務(wù)間聯(lián)系很緊密,需要大量的數(shù)據(jù)交換。按照Flynn的分類,分布式的高性能計(jì)算屬于MIMD(Multiple Instruction/Multiple Data)的范疇。

    4. 分布式(集群)與集群的聯(lián)系與區(qū)別
    分布式是指將不同的業(yè)務(wù)分布在不同的地方。
    而集群指的是將幾臺(tái)服務(wù)器集中在一起,實(shí)現(xiàn)同一業(yè)務(wù)。
    分布式中的每一個(gè)節(jié)點(diǎn),都可以做集群。
    而集群并不一定就是分布式的。
    舉例:就比如新浪網(wǎng),訪問(wèn)的人多了,他可以做一個(gè)群集,前面放一個(gè)響應(yīng)服務(wù)器,后面幾臺(tái)服務(wù)器完成同一業(yè)務(wù),如果有業(yè)務(wù)訪問(wèn)的時(shí)候,響應(yīng)服務(wù)器看哪臺(tái)服務(wù)器的負(fù)載不是很重,就將給哪一臺(tái)去完成。
    而分布式,從窄意上理解,也跟集群差不多, 但是它的組織比較松散,不像集群,有一個(gè)組織性,一臺(tái)服務(wù)器垮了,其它的服務(wù)器可以頂上來(lái)。
    分布式的每一個(gè)節(jié)點(diǎn),都完成不同的業(yè)務(wù),一個(gè)節(jié)點(diǎn)垮了,哪這個(gè)業(yè)務(wù)就不可訪問(wèn)了。

     

    本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/tanghongru1983/archive/2009/04/28/4130356.aspx

    posted @ 2010-03-02 14:16 absolute 閱讀(642) | 評(píng)論 (0)編輯 收藏
    代碼如下:
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;

    public class MyEclipseGen {
    private static final String LL = "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). Under section 1204 of the DMCA, penalties range up to a $500,000 fine or up to five years imprisonment for a first offense. Think about it; pay for a license, avoid prosecution, and feel better about yourself.";

    public String getSerial(String userId, String licenseNum) {
       java.util.Calendar cal 
    = java.util.Calendar.getInstance();
       cal.add(
    13);
       cal.add(
    6-1);
       java.text.NumberFormat nf 
    = new java.text.DecimalFormat("000");
       licenseNum 
    = nf.format(Integer.valueOf(licenseNum));
       String verTime 
    = new StringBuilder("-").append(
         
    new java.text.SimpleDateFormat("yyMMdd").format(cal.getTime()))
         .append(
    "0").toString();
       String type 
    = "YE3MP-";
       String need 
    = new StringBuilder(userId.substring(01)).append(type)
         .append(
    "300").append(licenseNum).append(verTime).toString();
       String dx 
    = new StringBuilder(need).append(LL).append(userId)
         .toString();
       
    int suf = this.decode(dx);
       String code 
    = new StringBuilder(need).append(String.valueOf(suf))
         .toString();
       
    return this.change(code);
    }


    private int decode(String s) {
       
    int i;
       
    char[] ac;
       
    int j;
       
    int k;
       i 
    = 0;
       ac 
    = s.toCharArray();
       j 
    = 0;
       k 
    = ac.length;
       
    while (j < k) {
        i 
    = (31 * i) + ac[j];
        j
    ++;
       }

       
    return Math.abs(i);
    }


    private String change(String s) {
       
    byte[] abyte0;
       
    char[] ac;
       
    int i;
       
    int k;
       
    int j;
       abyte0 
    = s.getBytes();
       ac 
    = new char[s.length()];
       i 
    = 0;
       k 
    = abyte0.length;
       
    while (i < k) {
        j 
    = abyte0[i];
        
    if ((j >= 48&& (j <= 57)) {
         j 
    = (((j - 48+ 5% 10+ 48;
        }
     else if ((j >= 65&& (j <= 90)) {
         j 
    = (((j - 65+ 13% 26+ 65;
        }
     else if ((j >= 97&& (j <= 122)) {
         j 
    = (((j - 97+ 13% 26+ 97;
        }

        ac[i] 
    = (char) j;
        i
    ++;
       }

       
    return String.valueOf(ac);
    }


    public MyEclipseGen() {
       
    super();
    }


    public static void main(String[] args) {
       
    try {
        System.out.println(
    "please input register name:");
        BufferedReader reader 
    = new BufferedReader(new InputStreamReader(
          System.in));
        String userId 
    = null;
        userId 
    = reader.readLine();
        MyEclipseGen myeclipsegen 
    = new MyEclipseGen();
        String res 
    = myeclipsegen.getSerial(userId, "5");
        System.out.println(
    "Serial:" + res);
        reader.readLine();
       }
     catch (IOException ex) {
       }

    }

    }


    注冊(cè)方法:
    window -> preferences -> myeclipse -> subscription

     

    posted @ 2010-02-16 09:20 absolute| 編輯 收藏
    主站蜘蛛池模板: 日韩毛片免费在线观看| 成年女人视频网站免费m| 57pao一国产成视频永久免费| 亚洲永久在线观看| 男人天堂2018亚洲男人天堂| 亚洲av无码日韩av无码网站冲| 香蕉国产在线观看免费| 久久免费观看国产精品| 国产精品久久久久久久久久免费 | 久久免费视频99| 日韩精品福利片午夜免费观着| 啊灬啊灬别停啊灬用力啊免费看| 思思re热免费精品视频66| 日本人护士免费xxxx视频| 亚洲香蕉网久久综合影视| 亚洲国产成人手机在线电影bd| 亚洲一区二区三区日本久久九| 亚洲AV无码乱码在线观看代蜜桃 | 亚洲.国产.欧美一区二区三区| www免费插插视频| 成人免费的性色视频| 成年人免费的视频| 免费日韩在线视频| 又大又黄又粗又爽的免费视频| 国产V亚洲V天堂无码久久久| 亚洲成色www久久网站夜月| 亚洲情A成黄在线观看动漫软件 | 亚洲国产精品乱码一区二区| 亚洲av无码国产精品色午夜字幕| 亚洲乳大丰满中文字幕| 亚洲白色白色在线播放| 美国免费高清一级毛片| 亚洲精品在线免费看| 亚洲国产成人久久精品99| 亚洲精品乱码久久久久久下载| 处破女第一次亚洲18分钟| 99精品视频免费观看| 97碰公开在线观看免费视频| 亚洲第一区精品观看| 亚洲fuli在线观看| 国产猛男猛女超爽免费视频|