精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

實(shí)現(xiàn)百萬(wàn)級(jí)數(shù)據(jù)從Excel導(dǎo)入到數(shù)據(jù)庫(kù)的方式

開(kāi)發(fā) 前端
在技術(shù)選型上,選擇EasyExcel是明智之舉。它專為處理大數(shù)據(jù)量和復(fù)雜Excel文件進(jìn)行了優(yōu)化。EasyExcel在解析Excel時(shí),不會(huì)將整個(gè)文件一次性加載到內(nèi)存中,而是按行從磁盤逐個(gè)讀取數(shù)據(jù)并解析。

高手回答

場(chǎng)景分析

這個(gè)案例實(shí)際上涉及到多個(gè)方面,需要我們系統(tǒng)地分析。讓我們首先看看,從Excel中讀取百萬(wàn)級(jí)數(shù)據(jù)并將其插入數(shù)據(jù)庫(kù)時(shí)可能遇到的問(wèn)題:

  1. 內(nèi)存溢出風(fēng)險(xiǎn)

加載如此龐大的Excel數(shù)據(jù)可能導(dǎo)致內(nèi)存溢出,需要注意內(nèi)存管理。

  1. 性能瓶頸

處理百萬(wàn)級(jí)數(shù)據(jù)的讀取和插入操作可能很耗時(shí),性能優(yōu)化至關(guān)重要。

  1. 異常處理策略

讀取和導(dǎo)入過(guò)程中會(huì)有各種潛在問(wèn)題,我們需妥善處理各類異常情況。

內(nèi)存溢出問(wèn)題

處理百萬(wàn)級(jí)數(shù)據(jù),直接加載到內(nèi)存中顯然不現(xiàn)實(shí)。解決之道在于采用流式讀取,分批處理數(shù)據(jù)。

在技術(shù)選型上,選擇EasyExcel是明智之舉。它專為處理大數(shù)據(jù)量和復(fù)雜Excel文件進(jìn)行了優(yōu)化。EasyExcel在解析Excel時(shí),不會(huì)將整個(gè)文件一次性加載到內(nèi)存中,而是按行從磁盤逐個(gè)讀取數(shù)據(jù)并解析。

性能問(wèn)題

針對(duì)百萬(wàn)級(jí)數(shù)據(jù)的處理,單線程顯然效率低下。提升性能的關(guān)鍵在于多線程處理。

多線程應(yīng)用涉及兩個(gè)場(chǎng)景:一是多線程讀取文件,另一個(gè)是多線程實(shí)現(xiàn)數(shù)據(jù)插入。這涉及到生產(chǎn)者-消費(fèi)者模式,多線程讀取并多線程插入,以最大程度提升整體性能。

在數(shù)據(jù)插入方面,除了利用多線程,還應(yīng)當(dāng)結(jié)合數(shù)據(jù)庫(kù)的批量插入功能以進(jìn)一步提升速度。

錯(cuò)誤處理

在文件讀取和數(shù)據(jù)庫(kù)寫入過(guò)程中,可能遇到諸多問(wèn)題,如數(shù)據(jù)格式錯(cuò)誤、不一致性和重復(fù)數(shù)據(jù)等。

因此,應(yīng)分兩步處理。首先進(jìn)行數(shù)據(jù)檢查,在插入操作前檢查數(shù)據(jù)格式等問(wèn)題,然后在插入過(guò)程中處理異常情況。

處理方式多種多樣,可通過(guò)事務(wù)回滾或記錄日志。一般不推薦直接回滾操作,而是自動(dòng)重試,若嘗試多次仍無(wú)效,則記錄日志,隨后重新插入數(shù)據(jù)。

此外,在這一過(guò)程中,需考慮數(shù)據(jù)重復(fù)問(wèn)題,可在Excel中設(shè)定若干字段為數(shù)據(jù)庫(kù)唯一約束。遇到數(shù)據(jù)沖突時(shí),可覆蓋、跳過(guò)或報(bào)錯(cuò)處理。根據(jù)實(shí)際業(yè)務(wù)情況選擇合適的處理方式,一般情況下,跳過(guò)并記錄日志是相對(duì)合理的選擇。

解決思路

所以,總體方案如下:

利用EasyExcel進(jìn)行Excel數(shù)據(jù)讀取,因其逐行讀取數(shù)據(jù)而非一次性加載整個(gè)文件至內(nèi)存。為提高并發(fā)效率,將百萬(wàn)級(jí)數(shù)據(jù)分布在不同的工作表中,利用線程池和多線程同時(shí)讀取各個(gè)工作表。在讀取過(guò)程中,借助EasyExcel的ReadListener進(jìn)行數(shù)據(jù)處理。

在處理過(guò)程中,并非每條數(shù)據(jù)都直接操作數(shù)據(jù)庫(kù),以免對(duì)數(shù)據(jù)庫(kù)造成過(guò)大壓力。設(shè)定一個(gè)批次大小,例如每1000條數(shù)據(jù),將從Excel中讀取的數(shù)據(jù)臨時(shí)存儲(chǔ)在內(nèi)存中(可使用List實(shí)現(xiàn))。每讀取1000條數(shù)據(jù)后,執(zhí)行數(shù)據(jù)的批量插入操作,可簡(jiǎn)單地借助mybatis實(shí)現(xiàn)批量插入。

此外,在處理過(guò)程中,需要考慮并發(fā)問(wèn)題,因此我們將使用線程安全的隊(duì)列來(lái)存儲(chǔ)內(nèi)存中的臨時(shí)數(shù)據(jù),如ConcurrentLinkedQueue。

經(jīng)驗(yàn)證,通過(guò)上述方案,讀取并插入100萬(wàn)條數(shù)據(jù)的Excel所需時(shí)間約為100秒,不超過(guò)2分鐘。

具體實(shí)現(xiàn)

為了提升并發(fā)處理能力,我們將百萬(wàn)級(jí)數(shù)據(jù)存儲(chǔ)在同一個(gè)Excel文件的不同工作表中,然后通過(guò)EasyExcel并發(fā)地讀取這些工作表數(shù)據(jù)。

EasyExcel提供了ReadListener接口,允許在每批數(shù)據(jù)讀取后進(jìn)行自定義處理。我們可以基于這一功能實(shí)現(xiàn)文件的分批讀取。

pom依賴

首先,需要添加以下依賴:

<dependencies>
    <!-- EasyExcel -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>latest_version</version>
    </dependency>

    <!-- 數(shù)據(jù)庫(kù)連接和線程池 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>

并發(fā)讀取多個(gè)sheet

然后實(shí)現(xiàn)并發(fā)讀取多個(gè)sheet的代碼:

@Service
public class ExcelImporterService {

    @Autowired
    private MyDataService myDataService;
    
    public void doImport() {
        // Excel文件的路徑
        String filePath = "users/paidaxing/workspace/excel/test.xlsx";

        // 需要讀取的sheet數(shù)量
        int numberOfSheets = 20;

        // 創(chuàng)建一個(gè)固定大小的線程池,大小與sheet數(shù)量相同
        ExecutorService executor = Executors.newFixedThreadPool(numberOfSheets);

        // 遍歷所有sheets
        for (int sheetNo = 0; sheetNo < numberOfSheets; sheetNo++) {
            // 在Java lambda表達(dá)式中使用的變量需要是final
            int finalSheetNo = sheetNo;

            // 向線程池提交一個(gè)任務(wù)
            executor.submit(() -> {
                // 使用EasyExcel讀取指定的sheet
                EasyExcel.read(filePath, MyDataModel.class, new MyDataModelListener(myDataService))
                         .sheet(finalSheetNo) // 指定sheet號(hào)
                         .doRead(); // 開(kāi)始讀取操作
            });
        }

        // 啟動(dòng)線程池的關(guān)閉序列
  executor.shutdown();

        // 等待所有任務(wù)完成,或者在等待超時(shí)前被中斷
        try {
            executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
        } catch (InterruptedException e) {
            // 如果等待過(guò)程中線程被中斷,打印異常信息
            e.printStackTrace();
        }
    }
}

這段代碼通過(guò)創(chuàng)建一個(gè)固定大小的線程池來(lái)并發(fā)讀取一個(gè)包含多個(gè)sheets的Excel文件。每個(gè)sheet的讀取作為一個(gè)單獨(dú)的任務(wù)提交給線程池。

我們?cè)诖a中用了一個(gè)MyDataModelListener,這個(gè)類是ReadListener的一個(gè)實(shí)現(xiàn)類。當(dāng)EasyExcel讀取每一行數(shù)據(jù)時(shí),它會(huì)自動(dòng)調(diào)用我們傳入的這個(gè)ReadListener實(shí)例的invoke方法。在這個(gè)方法中,我們就可以定義如何處理這些數(shù)據(jù)。

MyDataModelListener還包含doAfterAllAnalysed方法,這個(gè)方法在所有數(shù)據(jù)都讀取完畢后被調(diào)用。這里可以執(zhí)行一些清理工作,或處理剩余的數(shù)據(jù)。

ReadListener

接下來(lái),我們來(lái)實(shí)現(xiàn)這個(gè)我們的ReadListener:

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;

// 自定義的ReadListener,用于處理從Excel讀取的數(shù)據(jù)
public class MyDataModelListener implements ReadListener<MyDataModel> {
    // 設(shè)置批量處理的數(shù)據(jù)大小
    private static final int BATCH_SIZE = 1000;
    // 用于暫存讀取的數(shù)據(jù),直到達(dá)到批量大小
    private List<MyDataModel> batch = new ArrayList<>();

    
    private MyDataService myDataService;

    // 構(gòu)造函數(shù),注入MyBatis的Mapper
    public MyDataModelListener(MyDataService myDataService) {
        this.myDataService = myDataService;
    }

    // 每讀取一行數(shù)據(jù)都會(huì)調(diào)用此方法
    @Override
    public void invoke(MyDataModel data, AnalysisContext context) {
        //檢查數(shù)據(jù)的合法性及有效性
        if (validateData(data)) {
            //有效數(shù)據(jù)添加到list中
            batch.add(data);
        } else {
            // 處理無(wú)效數(shù)據(jù),例如記錄日志或跳過(guò)
        }
        
        // 當(dāng)達(dá)到批量大小時(shí),處理這批數(shù)據(jù)
        if (batch.size() >= BATCH_SIZE) {
            processBatch();
        }
    }

    
    private boolean validateData(MyDataModel data) {
        // 調(diào)用mapper方法來(lái)檢查數(shù)據(jù)庫(kù)中是否已存在該數(shù)據(jù)
        int count = myDataService.countByColumn1(data.getColumn1());
        // 如果count為0,表示數(shù)據(jù)不存在,返回true;否則返回false
        if(count == 0){
         return true;
        }
        
        // 在這里實(shí)現(xiàn)數(shù)據(jù)驗(yàn)證邏輯
        return false;
    }


    // 所有數(shù)據(jù)讀取完成后調(diào)用此方法
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 如果還有未處理的數(shù)據(jù),進(jìn)行處理
        if (!batch.isEmpty()) {
            processBatch();
        }
    }

    // 處理一批數(shù)據(jù)的方法
    private void processBatch() {
        int retryCount = 0;
        // 重試邏輯
        while (retryCount < 3) {
            try {
                // 嘗試批量插入
                myDataService.batchInsert(batch);
                // 清空批量數(shù)據(jù),以便下一次批量處理
                batch.clear();
                break;
            } catch (Exception e) {
                // 重試計(jì)數(shù)增加
                retryCount++;
                // 如果重試3次都失敗,記錄錯(cuò)誤日志
                if (retryCount >= 3) {
                    logError(e, batch);
                }
}

通過(guò)自定義MyDataModelListener,在讀取Excel文件過(guò)程中可實(shí)現(xiàn)數(shù)據(jù)處理。每讀取一條數(shù)據(jù)后,將其加入列表,在列表累積達(dá)到1000條時(shí),執(zhí)行一次數(shù)據(jù)庫(kù)批量插入操作。若插入失敗,則進(jìn)行重試;若多次嘗試仍失敗,則記錄錯(cuò)誤日志。

批量插入

這里批量插入,用到了MyBatis的批量插入,代碼實(shí)現(xiàn)如下:

import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface MyDataMapper {
    void batchInsert(List<MyDataModel> dataList);

    int countByColumn1(String column1);
}

mapper.xml文件:

<insert id="batchInsert" parameterType="list">
    INSERT INTO paidaxing_test_table_name (column1, column2, ...)
    VALUES 
    <foreach collection="list" item="item" index="index" separator=",">
        (#{item.column1}, #{item.column2}, ...)
    </foreach>
</insert>

<select id="countByColumn1" resultType="int">
    SELECT COUNT(*) FROM your_table WHERE column1 = #{column1}
</select>



責(zé)任編輯:武曉燕 來(lái)源: 碼上遇見(jiàn)你
相關(guān)推薦

2010-04-22 11:58:00

Oracle數(shù)據(jù)庫(kù)

2016-12-21 14:14:51

SQOOP數(shù)據(jù)庫(kù)HDFS

2010-10-22 11:22:33

SQL Server數(shù)

2011-04-20 14:28:38

SQL優(yōu)化

2020-11-13 11:12:59

Navicat

2025-08-26 03:00:00

Excel技巧數(shù)據(jù)

2014-07-18 09:33:53

數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)優(yōu)化

2010-06-01 13:47:19

2011-03-10 10:50:01

excelsql數(shù)據(jù)庫(kù)

2010-09-01 13:28:15

C#

2010-10-28 11:48:38

ORACLE數(shù)據(jù)導(dǎo)入

2024-08-05 09:51:00

2010-10-20 14:56:18

2022-12-29 08:49:40

SpringBootExcel

2021-09-09 17:41:54

MySQLNavicat工具

2010-07-21 14:17:36

SQL Server數(shù)

2023-02-03 08:21:30

excelMySQL

2021-05-07 05:54:43

數(shù)據(jù)庫(kù)數(shù)據(jù)湖數(shù)據(jù)

2025-03-31 08:20:00

SQL 查詢數(shù)據(jù)庫(kù)dsq

2021-06-01 21:55:33

物聯(lián)網(wǎng) IoTDB數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美激情 亚洲| 91亚洲国产成人精品一区二三| www久久精品| 欧美在线视频导航| 日韩不卡视频一区二区| 久久免费激情视频| 亚洲三级av| 国产精品久久久久久久久搜平片| 91av在线免费观看视频| 爱豆国产剧免费观看大全剧苏畅| 免费在线国产| 国产欧美自拍一区| 亚洲精品欧美激情| 国产日产欧美精品| 美国黄色特级片| 午夜欧美巨大性欧美巨大| 成人网在线免费视频| 欧美精品午夜视频| 午夜一区二区视频| sm久久捆绑调教精品一区| 国产成人综合精品三级| 久久影院模特热| www.成年人| 亚洲电影观看| 久久女同互慰一区二区三区| 91av免费观看91av精品在线| 中国1级黄色片| 91在线成人| 国产精品久久毛片| 国产精品自产拍在线观看中文 | 欧美日韩综合在线观看| 日韩88av| 精品视频在线视频| 一区二区在线高清视频| 91av久久久| 9191国语精品高清在线| 欧美一区二区在线免费播放| 日韩人妻一区二区三区蜜桃视频| 欧美在线观看在线观看| 日韩电影一区二区三区| 日韩中文字幕av| 8x8x最新地址| 欧美jizz18性欧美| 国产精品 日产精品 欧美精品| 国产成人在线一区| 永久免费看片直接| 国产+成+人+亚洲欧洲在线 | 国产又大又黄又猛| 黄在线免费看| 成人av在线网站| 人妖精品videosex性欧美| 国产精品50页| 欧洲grand老妇人| 欧美一区二区在线视频| 欧美一级视频在线| 日韩电影精品| 午夜精品久久久久久久久久 | av在线不卡顿| 亚洲欧美日韩一区在线| 亚洲小视频网站| 婷婷色在线资源| 久久精品视频免费观看| 国产精品色悠悠| 九九热精彩视频| 精品在线观看入口| 欧美一区二区三区在线电影| 五月激情婷婷在线| 亚洲狼人综合| 一本大道久久a久久精二百| 在线播放豆国产99亚洲| 日本最黄一级片免费在线| 成人高清视频免费观看| 国产精品二区在线| 啦啦啦免费高清视频在线观看| 日韩aaaa| 久久成人在线视频| 久久久无码一区二区三区| 欧美日韩中字| www.亚洲人.com| 久久久久成人精品无码| 亚洲少妇诱惑| 久久久久久久久久久免费 | 亚洲精华一区二区三区| 欧美一区二区在线看| 波多野结衣网页| 国产成人a视频高清在线观看| 在线观看欧美黄色| 日韩国产一级片| 国产在线激情| 亚洲一区在线免费观看| 亚洲一区3d动漫同人无遮挡 | 97久久国产亚洲精品超碰热 | 久久亚洲综合色一区二区三区| 欧美日韩一区在线播放| 亚洲第一页综合| 美国十次了思思久久精品导航| 国内精品视频久久| 高h视频免费观看| 欧美激情成人| 中文字幕视频一区二区在线有码| 国产艳俗歌舞表演hd| 国产成人高清精品免费5388| 日韩精品中文字幕有码专区| 性色av蜜臀av浪潮av老女人| 天天综合91| 精品国产污污免费网站入口| 亚洲欧美日韩中文字幕在线观看| 日韩毛片网站| 亚洲精品www久久久久久广东| 国产精品19p| 国产欧美日韩精品一区二区免费 | 99国产精品私拍| 欧美久久久精品| 免费精品在线视频| 一本久道久久综合婷婷鲸鱼| 成人网在线免费观看| 一级久久久久久久| 99国产精品视频免费观看| 亚洲资源视频| 成人美女视频| 欧美专区在线观看一区| 欧美老女人bb| 极品尤物一区| 亚洲精品乱码久久久久久金桔影视 | 国产无套在线观看| 精品一区二区三区av| 国产主播在线一区| 青青操在线视频| 亚洲一区在线电影| 伊人精品视频在线观看| 亚洲精品成人一区| 亚洲网址你懂得| 黄色裸体一级片| 欧美一区二区三区另类| 欧美黑人一级爽快片淫片高清| 国产在线欧美在线| 国产在线精品一区二区夜色| 国产69精品久久久久9999apgf| 69视频在线观看| 亚洲精品乱码久久久久久日本蜜臀| 国产爆乳无码一区二区麻豆| 欧美办公室脚交xxxx| 欧美亚日韩国产aⅴ精品中极品| 成人亚洲免费视频| 日韩一区电影| 国产精品中文字幕在线| 天堂在线中文资源| 国产精品久久久久久久浪潮网站| 无码内射中文字幕岛国片| 男人亚洲天堂| 亚洲第五色综合网| 99自拍偷拍视频| 免费成人av资源网| 国产精品区免费视频| 色yeye免费人成网站在线观看| 在线综合+亚洲+欧美中文字幕| 亚洲天堂美女视频| 日韩一级免费| 久久99蜜桃综合影院免费观看| 国产大片在线免费观看| 亚洲九九爱视频| 波多野结衣电影免费观看| 一区二区三区在线| 国产成人久久久精品一区| 免费在线视频你懂得| 91成人免费网站| 老司机精品免费视频| 国模无码大尺度一区二区三区| 国模精品一区二区三区| 91社区在线高清| 男男视频亚洲欧美| 国产精品久99| 国产又黄又猛的视频| 久久久久久久久久久久久久| 成人久久18免费网站漫画| 亚洲av永久纯肉无码精品动漫| 亚洲精品免费播放| 亚洲精品在线视频免费观看| 天天av综合| 国产91精品不卡视频| 国产suv一区二区| 国产清纯白嫩初高生在线观看91 | 免费在线一级片| 国产成人av一区二区三区在线观看| 另类欧美小说| 日本大胆在线观看| 欧美日韩中文字幕一区二区| 蜜桃av.com| 成人午夜免费视频| 91蝌蚪视频在线观看| 91精品一区二区三区综合| 国产日韩欧美一区二区| 日韩精品第一| 亚洲区中文字幕| 日韩人妻无码一区二区三区99| 国产又粗又猛又爽又黄91精品| 五月天激情图片| 神马久久av| 午夜精品蜜臀一区二区三区免费| 国产99999| 欧美丝袜一区二区| 亚洲av成人无码一二三在线观看| 久久影院亚洲| 欧美不卡1区2区3区| 欧美黄页免费| 992tv在线成人免费观看| 欧美r级在线| 亚洲欧美国内爽妇网| 精品毛片一区二区三区| 自拍偷拍国产精品| 日本中文字幕观看| 国产精品普通话对白| 天堂v在线视频| www.久久99| 欧洲亚洲妇女av| 欧美xxxx免费虐| 日韩在线观看网址| 免费毛片在线| 亚洲国产一区自拍| 国产福利小视频| 欧美日韩成人高清| 久久久久人妻一区精品色| eeuss影院一区二区三区| 国产黄页在线观看| 久草在线成人| 国产伦视频一区二区三区| 天堂综合在线播放| 国产精品久久久久久av福利软件| 2021av在线| 亚洲男人天堂2024| 三级网站在线看| 色欧美片视频在线观看| 一本色道久久88| 国产午夜精品一区二区| 午夜一区二区三区免费| 成人深夜在线观看| 在线观看欧美一区二区| 韩国v欧美v日本v亚洲v| 久久国产精品国产精品| 欧美高清一区| 在线观看成人免费| 精品成人自拍视频| 成人xxxxx色| 第四色中文综合网| 成人av资源| 高清精品视频| 久久精品第九区免费观看| 欧美爱爱网站| 国产精品视频在线播放| 日韩久久一区二区三区| 欧美第一淫aaasss性| 香蕉成人app免费看片| 久久国产精品影视| 91高清在线观看视频| 亚洲男女性事视频| 精品影院一区| 亚洲精品一区二区三区在线观看| 午夜久久久久久久久久| 亚洲国产精彩中文乱码av在线播放| 狠狠人妻久久久久久综合麻豆 | 97人妻精品一区二区三区软件| 亚洲激情综合网| 欧美日韩在线视频免费播放| 亚洲国产一二三| wwwxxx亚洲| 欧美视频三区在线播放| 97精品人妻一区二区三区在线| 51精品视频一区二区三区| 性生活免费网站| 日韩精品在线视频观看| 国产九九在线| 久久亚洲精品网站| 2021天堂中文幕一二区在线观| 中日韩午夜理伦电影免费 | 久久久人成影片一区二区三区观看| 91福利在线尤物| 国产va免费精品高清在线| 国产美女情趣调教h一区二区| 国产一区二区三区视频在线观看 | 中文字幕一区二区三区四区不卡| 久久人妻无码aⅴ毛片a片app| 亚洲影视在线播放| 国内自拍视频在线播放| 亚洲午夜在线电影| 少妇高潮av久久久久久| 91麻豆精品国产91| 亚洲 欧美 自拍偷拍| 亚洲成人av中文字幕| 日韩在线无毛| 久久综合久久美利坚合众国| 老司机深夜福利在线观看| 国产精品中文字幕在线| 久久a爱视频| 一区二区精品在线| 国产一区成人| 中文字幕avav| 国产欧美一区二区精品婷婷| 美女的奶胸大爽爽大片| 色综合久久久久久久久久久| 99在线无码精品入口| 亚洲精选在线观看| 天堂av资源在线观看| 国产精品美女呻吟| 欧美三级午夜理伦三级小说| 椎名由奈jux491在线播放 | 亚洲综合色视频| 国产精品免费人成网站酒店 | 日韩电影中文 亚洲精品乱码| 99免在线观看免费视频高清| 久久久亚洲影院| 国产精品**亚洲精品| 91日韩在线视频| 成人亚洲精品| 日本一区二区在线视频观看| 欧美日韩中文一区二区| 丰满少妇久久久| 午夜一区不卡| 99热手机在线| bt欧美亚洲午夜电影天堂| 国产一区二区精彩视频| 欧美性色欧美a在线播放| 香蕉视频免费看| 欧美激情精品久久久久久大尺度| 日本午夜免费一区二区| 日韩精品另类天天更新| 99视频精品视频高清免费| heyzo国产| 成人av网址在线| 久久久综合久久| 日韩写真欧美这视频| 五月婷婷狠狠干| 欧美激情亚洲视频| 精品三级久久久| 久久久久久久久久码影片| 欧美区亚洲区| 亚洲精品无码久久久久久| 日本网站在线观看一区二区三区 | 国产av不卡一区二区| 蜜臀av在线播放一区二区三区| 亚洲综合网在线观看| 国产精品国产三级国产专播品爱网| 成人在线免费看视频| 亚洲电影第1页| 538视频在线| 精品免费视频123区| 91欧美大片| 成 人 黄 色 小说网站 s色| 国产精品午夜久久| 国产精品第56页| 亚洲第一天堂无码专区| 波多野结衣在线播放| 国产精品国产一区二区| 99亚洲精品| 久久精品成人av| 在线亚洲精品福利网址导航| 国产在线视频网| 国产精品丝袜白浆摸在线| 五月激情综合| 中文字幕永久免费| 亚洲va韩国va欧美va| 色就是色亚洲色图| 国产精品av在线播放| 91视频久久| 无码人妻久久一区二区三区蜜桃| 婷婷久久综合九色国产成人| 一级黄色片在线| 久久99视频免费| 欧美黑人做爰爽爽爽| 国产成人av影视| 91麻豆免费观看| www.亚洲激情| 日韩精品高清在线观看| 免费成人动漫| 性欧美18一19内谢| 成人av午夜影院| 日批视频免费观看| 久久av资源网站| 亚洲另类av| 午夜视频在线观| 欧美网站在线观看| 麻豆视频在线播放| 国产丝袜不卡| 美女爽到高潮91| 日韩经典在线观看| 日韩免费一区二区| 国产三区在线观看| 国产亚洲精品自在久久| 日韩激情视频网站| 青娱乐国产盛宴| 亚洲天堂男人的天堂| 日本超碰一区二区| 欧美aaa在线观看| 不卡影院免费观看| 在线观看免费中文字幕| 亚洲日韩中文字幕在线播放| 亚洲精品乱码日韩| 国精产品一区一区三区视频| 国产精品久久一级| 飘雪影院手机免费高清版在线观看| 91精品视频免费看|