久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

基于SpringBoot+Vue的短鏈接流量分析與可視化系統(tǒng)實(shí)戰(zhàn)

基于SpringBoot+Vue的短鏈接流量分析與可視化系統(tǒng)實(shí)戰(zhàn) 做短鏈接流量分析這個(gè)事我一開始是被臨時(shí)拉去救火的。業(yè)務(wù)方要做一場裂變活動(dòng)投放了一堆帶參數(shù)鏈接結(jié)果后臺(tái)只能看到打開人數(shù)來源渠道、設(shè)備分布、時(shí)段趨勢全是一團(tuán)黑。市面上的第三方統(tǒng)計(jì)平臺(tái)要么收費(fèi)貴要么數(shù)據(jù)落地格式不自由。想自己搞一個(gè)吧翻了一圈開源項(xiàng)目不是太重動(dòng)不動(dòng)上KafkaFlink全家桶就是只有前端大屏展示數(shù)據(jù)完全不落地。最后我決定用當(dāng)前最順手的那套組合——SpringBootVueMyBatisMySQL前后端分離用最短的開發(fā)周期搭一個(gè)能真正跑到線上的“短流量數(shù)據(jù)分析與可視化ABO系統(tǒng)”。這里ABO不是別的就是Analysis-Business-Optimization分析、業(yè)務(wù)、優(yōu)化把鏈路數(shù)據(jù)從采集到展示再推回業(yè)務(wù)決策走完一個(gè)完整循環(huán)。這篇把整個(gè)項(xiàng)目的需求拆解、技術(shù)選型、核心模塊實(shí)現(xiàn)、部署教程以及我實(shí)際踩過的坑一次性整理完整。適合已經(jīng)有Java基礎(chǔ)和Vue入門經(jīng)驗(yàn)的開發(fā)者或者正在做前后端分離項(xiàng)目實(shí)戰(zhàn)練手的人。1. 項(xiàng)目由來與需求拆解短流量分析到底要分析什么1.1 為什么盯上“短流量”這個(gè)細(xì)分場景一般談到數(shù)據(jù)分析大家第一反應(yīng)是埋點(diǎn)、用戶行為日志、漏斗轉(zhuǎn)化那是個(gè)大工程。但短流量不太一樣。它的本質(zhì)是“每一次點(diǎn)擊都是帶了明確來源訴求的”比如短信里的短鏈接、海報(bào)上的短鏈二維碼、社群分享出來的短鏈接。這些流量不像站內(nèi)瀏覽那么混沌它們的生命周期很短數(shù)據(jù)量不會(huì)大到離線計(jì)算的程度但是維度屬性非常清晰誰點(diǎn)的、從哪個(gè)渠道來的、用什么設(shè)備、在哪個(gè)時(shí)段點(diǎn)的、停留了多久。這些字段湊在一起足夠支撐運(yùn)營做快速?zèng)Q策。而且更有意思的是短流量的用戶路徑天然就能對(duì)應(yīng)上“鏈—點(diǎn)—覽”三段結(jié)構(gòu)。鏈接生成、點(diǎn)擊訪問、落地頁瀏覽每一段都可以量化。如果做成長鏈加參數(shù)雖然也能查但推廣素材里經(jīng)常被截?cái)囿w驗(yàn)也差。所以做這個(gè)系統(tǒng)第一步需求就定死了一定要有短鏈生成能力一定要能記錄每次點(diǎn)擊的元信息最后通過時(shí)間維度和屬性維度聚合出可視化報(bào)表。這些需求不復(fù)雜但對(duì)數(shù)據(jù)一致性要求不低點(diǎn)擊就是事實(shí)不能丟也不能重復(fù)統(tǒng)計(jì)。1.2 功能清單與數(shù)據(jù)流轉(zhuǎn)邏輯需求最終收斂成四個(gè)模塊短鏈管理、點(diǎn)擊采集、數(shù)據(jù)聚合、可視化展示。短鏈管理負(fù)責(zé)把原始長鏈接壓縮成短碼。點(diǎn)擊采集是核心埋點(diǎn)接口用戶每次訪問短鏈都會(huì)走一次重定向重定向之前在服務(wù)端把請(qǐng)求頭里的User-Agent、Referer、IP以及URL里攜帶的渠道參數(shù)記錄下來。數(shù)據(jù)聚合分實(shí)時(shí)和離線兩層實(shí)時(shí)的話我用了簡單的本地緩存做分鐘級(jí)計(jì)數(shù)離線報(bào)表則由定時(shí)任務(wù)按小時(shí)跑批把明細(xì)數(shù)據(jù)聚合成小時(shí)表、日?qǐng)?bào)表??梢暬故居肰ue寫了一套Dashboard包含整體趨勢、渠道占比、設(shè)備分布、最近點(diǎn)擊實(shí)時(shí)滾動(dòng)幾個(gè)組件。整個(gè)數(shù)據(jù)流轉(zhuǎn)的核心鏈路是這樣的前端短鏈地址發(fā)起請(qǐng)求 → SpringBoot攔截器解析短碼 → 異步寫入點(diǎn)擊流水 → 重定向到原始長鏈 → 定時(shí)任務(wù)聚合到統(tǒng)計(jì)表 → 前端ECharts圖表拉取聚合接口渲染。這里最需要注意的點(diǎn)是“重定向和寫日志必須解耦”否則點(diǎn)擊一多接口延遲就上去了。我的做法是把點(diǎn)擊流水的寫入丟進(jìn)一個(gè)線程池異步處理主線程只做一次短碼DB查詢和302跳轉(zhuǎn)。這樣寫既有實(shí)時(shí)性又不阻塞鏈路。1.3 前后端分離的總體架構(gòu)設(shè)計(jì)這個(gè)項(xiàng)目的架構(gòu)在部署形態(tài)上走的是標(biāo)準(zhǔn)的前后端分離前端Vue項(xiàng)目獨(dú)立開發(fā)調(diào)試通過代理訪問后端接口生產(chǎn)環(huán)境有兩種可選一種是把Vue打包后的dist目錄扔進(jìn)SpringBoot的static資源下做成單Jar部署另一種是用Nginx托管靜態(tài)文件、反向代理后端接口。我最后實(shí)際線上用的是第二種因?yàn)楹罄m(xù)還要在這個(gè)域名下掛別的服務(wù)網(wǎng)關(guān)層獨(dú)立出來會(huì)更靈活。后端按包結(jié)構(gòu)劃分成controller、service、mapper、entity、common、config幾層。短鏈模塊在controller里直接返回短碼和完整短鏈地址點(diǎn)擊分析模塊提供趨勢、排行、實(shí)時(shí)三個(gè)大類接口。數(shù)據(jù)庫操作全部走M(jìn)yBatis手寫SQL的比例高一些因?yàn)榻y(tǒng)計(jì)場景里的多表關(guān)聯(lián)、分組聚合、時(shí)間序列補(bǔ)零用注解SQL表達(dá)起來勉強(qiáng)XML里寫動(dòng)態(tài)SQL才舒服。2. 技術(shù)選型SpringBootVueMyBatisMySQL這套組合的理由2.1 后端為什么還是SpringBoot最穩(wěn)有些項(xiàng)目喜歡一上來就上Spring Cloud全家桶但短流量分析這種場景業(yè)務(wù)量級(jí)也就是日百萬級(jí)點(diǎn)擊連CDN都還沒參與進(jìn)來微服務(wù)帶來的收益基本為零反倒增加部署和運(yùn)維成本。SpringBoot單應(yīng)用足以扛住這個(gè)量級(jí)而且開發(fā)效率最高。我選的版本是SpringBoot 2.7.x。很多人喜歡追新上來就SpringBoot 3.x。但是3.x強(qiáng)制要求JDK 17而且javax命名空間改成jakarta網(wǎng)上大量老教程的代碼直接跑不通。對(duì)大多數(shù)中小項(xiàng)目來說2.7 JDK 1.8的組合最穩(wěn)定云服務(wù)器上CentOS自帶的JDK版本也不用折騰。如果后續(xù)真需要流量再上漲升級(jí)路徑也明確接入Nginx負(fù)載均衡、加Redis做緩存、再考慮拆服務(wù)。2.2 前端選Vue而不是React的真實(shí)原因團(tuán)隊(duì)之前的技術(shù)棧里Vue和React都有用過但這個(gè)項(xiàng)目選Vue3有非常實(shí)在的理由一是ECharts對(duì)Vue3的封裝生態(tài)更成熟vue-echarts組件用起來比在React里手動(dòng)管理chart實(shí)例要順手很多二是Vue的模板語法對(duì)后端轉(zhuǎn)前端的同事很友好模板里可以直接寫v-for、v-if不需要像JSX那樣在render函數(shù)里繞邏輯三是數(shù)據(jù)可視化場景里Vue的響應(yīng)式數(shù)據(jù)天生和圖表組件契合接口返回的新數(shù)據(jù)集丟進(jìn)去圖表自動(dòng)刷新。腳手架我用的是Vite而不是Vue CLI速度快了不是一點(diǎn)半點(diǎn)。這里提醒一句網(wǎng)上很多教程還在用Vue CLI創(chuàng)建項(xiàng)目新開項(xiàng)目直接npm create vitelatest然后選擇vue模板就行。2.3 MyBatis在統(tǒng)計(jì)場景下的靈活性和坑MyBatis和MyBatis-Plus之間我選了前者準(zhǔn)確說是只加了通用Mapper插件沒有用Plus的LambdaQueryWrapper。原因很直接統(tǒng)計(jì)報(bào)表的SQL幾乎都是動(dòng)態(tài)拼條件、按維度分組、子查詢嵌套MyBatis-Plus的封裝在這種場景下反而繞。比如“查詢最近14天每天各渠道PV”如果全部用MP的Wrapper去套代碼能寫出一本書來。而用XML動(dòng)態(tài)SQL一句if判斷一個(gè)維度直觀到不行。MyBatis的緩存機(jī)制這里得單獨(dú)提一下。默認(rèn)一級(jí)緩存是SqlSession級(jí)別的二級(jí)緩存默認(rèn)不開啟。統(tǒng)計(jì)系統(tǒng)的數(shù)據(jù)實(shí)時(shí)性要求其實(shí)不高報(bào)表做到分鐘級(jí)已經(jīng)足夠所以我在統(tǒng)計(jì)查詢Mapper上開啟了二級(jí)緩存并且把緩存過期時(shí)間設(shè)置成60秒。這樣熱點(diǎn)報(bào)表接口的數(shù)據(jù)庫壓力小了很多。但要注意如果有寫操作同時(shí)改統(tǒng)計(jì)表緩存很容易臟讀。所以我的實(shí)踐是報(bào)表查詢走二級(jí)緩存明細(xì)點(diǎn)擊流水查詢強(qiáng)制刷新兩條路互不干擾。這一塊會(huì)在第7章踩坑部分再展開講。2.4 為什么不用若依這類前后端分離腳手架很多人看到SpringBootVueMyBatisMySQL就條件反射想起若依框架。確實(shí)RuoYi這種腳手架把權(quán)限、用戶、菜單、代碼生成全都做好了拿來改改就能跑。但這個(gè)項(xiàng)目我堅(jiān)持不用的原因有兩個(gè)。第一若依體系過于完整自帶一套R(shí)BAC權(quán)限模型和定時(shí)任務(wù)界面對(duì)短流量分析這種純內(nèi)部工具來說是負(fù)擔(dān)光刪菜單就得刪半天。第二項(xiàng)目里統(tǒng)計(jì)邏輯有大量自定義的SQL聚合腳手架帶的通用CRUD接口在這塊派不上用場。需要啥能力自己寫一層service就完事了。這套邏輯也跟團(tuán)隊(duì)風(fēng)格有關(guān)項(xiàng)目越貼近業(yè)務(wù)越不要套重框架保持代碼透明、可控排查問題時(shí)不需要先弄懂框架的攔截鏈。3. 數(shù)據(jù)庫設(shè)計(jì)短鏈表與點(diǎn)擊日志表的字段推敲3.1 核心表結(jié)構(gòu)與建表SQL再來拆庫表。整整一個(gè)項(xiàng)目跑起來只需要四張表短鏈信息表、點(diǎn)擊明細(xì)表、小時(shí)聚合表、用戶表。這個(gè)設(shè)計(jì)是按數(shù)據(jù)流向來的短鏈表管映射點(diǎn)擊明細(xì)表管事實(shí)聚合表管分析用戶表管后臺(tái)登錄。字段上沒有刻意做垂直拆分一切以查詢路徑最短為第一原則。短鏈信息表作用是一文定音短碼和長鏈接的映射關(guān)系再加上創(chuàng)建人、有效期、狀態(tài)。我加了一個(gè)visit_count欄目作為冗余計(jì)數(shù)每次點(diǎn)擊異步更新一次。有人會(huì)問這個(gè)字段和明細(xì)表count(*)不是重復(fù)嗎確實(shí)是冗余但價(jià)值巨大短鏈列表頁可以直接用這個(gè)字段排序展示不需要每次都去SUM明細(xì)表。點(diǎn)擊明細(xì)表是體量最大的表每產(chǎn)生一次點(diǎn)擊就寫一條。字段包括短碼、IP、User-Agent、瀏覽器類型、操作系統(tǒng)、設(shè)備類型、渠道來源、訪問時(shí)間。渠道來源我并沒有做復(fù)雜解析而是約定短鏈生成時(shí)攜帶channel參數(shù)保存到短鏈接表訪問的時(shí)候跟隨短碼一起讀取出來寫入明細(xì)。這個(gè)設(shè)計(jì)簡單可靠不需要像獨(dú)立埋點(diǎn)那樣搞一套歸因引擎。聚合表是小時(shí)表和日?qǐng)?bào)表二合一只保存短碼、維度類型、維度值、PV數(shù)量、獨(dú)立訪客數(shù)、統(tǒng)計(jì)時(shí)間。獨(dú)立訪客我用IPUA做了個(gè)Hash值去重雖然不及Cookie精確但這個(gè)場景已經(jīng)夠了。下面給出核心建表SQL。CREATE TABLE short_url ( id bigint(20) NOT NULL AUTO_INCREMENT, short_code varchar(16) NOT NULL COMMENT 短碼, long_url varchar(2048) NOT NULL COMMENT 原始鏈接, channel varchar(64) DEFAULT COMMENT 渠道標(biāo)識(shí), title varchar(128) DEFAULT COMMENT 活動(dòng)名稱, visit_count int(11) DEFAULT 0 COMMENT 累計(jì)點(diǎn)擊數(shù), expire_time datetime DEFAULT NULL, status tinyint(4) DEFAULT 1 COMMENT 1有效 0失效, create_time datetime DEFAULT CURRENT_TIMESTAMP, creator varchar(64) DEFAULT , PRIMARY KEY (id), UNIQUE KEY uk_short_code (short_code) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT短鏈映射表; CREATE TABLE click_log ( id bigint(20) NOT NULL AUTO_INCREMENT, short_code varchar(16) NOT NULL, ip varchar(64) DEFAULT , user_agent varchar(512) DEFAULT , browser varchar(32) DEFAULT , os varchar(32) DEFAULT , device varchar(16) DEFAULT 1 COMMENT 1PC 2移動(dòng)端, channel varchar(64) DEFAULT , uv_hash varchar(64) DEFAULT , click_time datetime NOT NULL, PRIMARY KEY (id), KEY idx_code_time (short_code,click_time) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT點(diǎn)擊明細(xì)表; CREATE TABLE stat_hourly ( id bigint(20) NOT NULL AUTO_INCREMENT, short_code varchar(16) NOT NULL, stat_date date NOT NULL, stat_hour tinyint(4) NOT NULL, dimension varchar(16) NOT NULL COMMENT channel/device/browser, dimension_value varchar(64) NOT NULL, pv int(11) DEFAULT 0, uv int(11) DEFAULT 0, PRIMARY KEY (id), UNIQUE KEY uk_query_line (short_code,stat_date,stat_hour,dimension,dimension_value) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT小時(shí)聚合表;3.2 聚合表不設(shè)自增值的考慮說實(shí)話我本來也想在最前面直接放一張時(shí)間維度的總表統(tǒng)計(jì)每天的總PVUV。但后來想想報(bào)表頁面的趨勢圖、渠道占比圖、設(shè)備分布圖本質(zhì)上都是“同一時(shí)間范圍、同一個(gè)short_code、按不同維度分組SUM”。所以一張聚合表用dimension字段區(qū)分分組主題反而最省事。查詢趨勢圖就是篩選dimension不可用直接按小時(shí)SUM查詢渠道占比就是篩選dimensionchannel按dimension_value分組。一張表通吃查詢SQL寫得簡單索引也建得少。不過這個(gè)設(shè)計(jì)帶來的問題是寫入量增加。原本一條點(diǎn)擊數(shù)據(jù)在一個(gè)小時(shí)維度上只需要寫一條記錄現(xiàn)在按channel、device、browser三個(gè)維度極端情況下要寫三條聚合記錄。但這個(gè)量級(jí)對(duì)MySQL來說毫無壓力而且我實(shí)際觀察下來單條點(diǎn)擊記錄的三個(gè)維度大概率落在3條聚合記錄以內(nèi)這個(gè)成本完全能接受。3.3 索引設(shè)計(jì)的實(shí)戰(zhàn)經(jīng)驗(yàn)索引設(shè)計(jì)上除了唯一索引uk_short_code我最看重的是idx_code_time。這個(gè)索引的字段順序是短碼在前、時(shí)間在后因?yàn)樗袌?bào)表查詢的第一步永遠(yuǎn)是按短碼圈定數(shù)據(jù)范圍然后再加時(shí)間條件縮小范圍。如果反過來建多小時(shí)索引MySQL的索引前綴匹配特性會(huì)使時(shí)間條件沒法快速定位雖然也能走索引但效果差一個(gè)量級(jí)。有一點(diǎn)很多初學(xué)者容易忽略聚合表的唯一索引uk_query_line一定要建成唯一索引而不是普通索引。光看字段名可能覺得這就是為了查重實(shí)際上聚合任務(wù)重跑時(shí)要用INSERT IGNORE或者ON DUPLICATE KEY UPDATE來冪等寫入。如果沒有唯一索引兜底重跑兩次數(shù)據(jù)就翻倍了。4. 后端核心功能與實(shí)現(xiàn)鏈路4.1 短鏈生成算法與防碰撞短碼生成我踩過一輪坑最開始用的UUID截取8位做短碼結(jié)果跑到1萬條就開始出現(xiàn)碰撞。后來改成雪花算法轉(zhuǎn)62進(jìn)制又發(fā)現(xiàn)生成的短碼太長落在URL里難看。最后采用的自增ID Base62混淆映射每個(gè)短鏈生成時(shí)插入短鏈表拿到自增主鍵然后把這個(gè)主鍵轉(zhuǎn)成62進(jìn)制字符串長度基本控制在6~8位。這個(gè)方案的天然優(yōu)勢是主鍵唯一轉(zhuǎn)換結(jié)果必然唯一根本不用做碰撞檢測。Base62轉(zhuǎn)換的邏輯也很簡單就是用0-9a-zA-Z共62個(gè)字符做進(jìn)制轉(zhuǎn)換。注意生成之后可以再做一次字符混淆比如把第一位字母隨機(jī)大小寫防止短碼太規(guī)律被人批量抓取。下面是我實(shí)際用的轉(zhuǎn)換工具類核心代碼。public class Base62Util { private static final String BASE62 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ; public static String fromDecimal(long num) { StringBuilder sb new StringBuilder(); while (num 0) { sb.append(BASE62.charAt((int) (num % 62))); num / 62; } return sb.reverse().toString(); } }4.2 點(diǎn)擊埋點(diǎn)接口的異步化設(shè)計(jì)點(diǎn)擊重定向接口是整個(gè)系統(tǒng)里QPS最高的入口。我把邏輯分成三段第一段查緩存拿長鏈接映射第二段構(gòu)造點(diǎn)擊明細(xì)Entity第三段異步落庫并重定向。這里的緩存策略是Caffeine本地緩存過期時(shí)間10分鐘短鏈映射查一次DB之后基本不再查第二次。點(diǎn)擊明細(xì)的落庫我單獨(dú)搞了一個(gè)線程池核心線程數(shù)8、最大線程數(shù)16、阻塞隊(duì)列長度2000。線程池滿了以后的處理策略用的是CallerRunsPolicy寧可讓請(qǐng)求鏈路本身來寫這條日志也不能因?yàn)殛?duì)列溢出丟了點(diǎn)擊數(shù)據(jù)。這屬于降級(jí)處理的一種保證真實(shí)性比保證響應(yīng)速度更重要。異步任務(wù)里同時(shí)做三件事插入click_log、更新short_url的visit_count、把聚合增量丟進(jìn)一個(gè)內(nèi)存計(jì)數(shù)Map等待定時(shí)任務(wù)沖刷到stat_hourly。4.3 統(tǒng)計(jì)接口與動(dòng)態(tài)SQL的編寫經(jīng)驗(yàn)報(bào)表接口用MyBatis動(dòng)態(tài)SQL落地整體思路基本相同換維度就拼SQL。以“渠道占比”接口為例前端傳shortCode、startTime、endTime三個(gè)參數(shù)后端在stat_hourly表里篩dimensionchannel然后按dimension_value分組SUM。注意SQL的黑魔法不在聚合而在“按小時(shí)補(bǔ)零”。如果某一天某個(gè)渠道一單點(diǎn)擊都沒有前端ECharts畫出來的趨勢折線會(huì)直接斷掉。補(bǔ)零邏輯我放在Java內(nèi)存里做后端把數(shù)據(jù)庫里已有的記錄查出來之后在循環(huán)里填充缺少的時(shí)間點(diǎn)PV UV置0。這個(gè)方案比SQL里做遞歸連接表簡單一百倍也容易理解。還有一個(gè)比較實(shí)用的寫法是統(tǒng)一接口返回結(jié)構(gòu)時(shí)間字段全部格式化好再傳給前端。統(tǒng)計(jì)數(shù)據(jù)里最容易出現(xiàn)時(shí)區(qū)誤差我在Service層集中用LocalDateTime操作轉(zhuǎn)JSON時(shí)配上全局時(shí)間格式。這塊配置如果沒做好你會(huì)發(fā)現(xiàn)圖表上最新數(shù)據(jù)永遠(yuǎn)缺一小時(shí)也就是第7章要講的坑之一。4.4 權(quán)限控制和參數(shù)校驗(yàn)的簡化內(nèi)部工具不需要做太重的權(quán)限體系我用攔截器加一個(gè)簡單的Token機(jī)制。用戶登錄之后服務(wù)端生成Token存進(jìn)Redis前端請(qǐng)求頭攜帶Token攔截器校驗(yàn)通過則放行。這個(gè)項(xiàng)目不引入Shiro或者Spring Security因?yàn)閷?duì)于純內(nèi)部可視化系統(tǒng)它們太重了學(xué)習(xí)成本反而高。參數(shù)校驗(yàn)方面短鏈創(chuàng)建接口一定得做URL白名單校驗(yàn)防止有人拿短鏈接口跳轉(zhuǎn)到釣魚站點(diǎn)。做法是用Hutool的UrlValidator類判斷協(xié)議和域名至少保證只能是http/https且不攔截內(nèi)網(wǎng)地址段。5. 前端可視化Vue3ECharts從零搭建儀表盤5.1 工程初始化和環(huán)境配置前端部分我用Vite創(chuàng)建Vue3工程用npm安裝依賴。這里先給一段初始化和安裝依賴的命令省得再去翻文檔。npm create vitelatest short-dashboard -- --template vue cd short-dashboard npm install npm install vue-router4 pinia axios echarts vue-echarts安裝完依賴后第一件事是配好路由??梢暬撁嬗幸粡埧傆[大屏我配了一個(gè)根路徑直接指向Dashboard組件。路由用的history模式理論上更美觀但要注意生產(chǎn)環(huán)境部署時(shí)如果沒配Nginx的try_files刷新二級(jí)頁面會(huì)404。這個(gè)問題網(wǎng)上問的人非常多第6章部署部分會(huì)給出對(duì)應(yīng)配置。5.2 開發(fā)環(huán)境跨域配置與接口層封裝前后端分離開發(fā)中最煩的就是跨域。開發(fā)環(huán)境下后端在8080端口前端在5173端口直接fetch必然被CORS攔。解決辦法是Vite的server.proxy配置把所有以/api開頭的請(qǐng)求代理到后端的接口地址。為什么以/api開頭就是特意給代理留的標(biāo)記后端Controller統(tǒng)一加了這個(gè)路徑前綴。// vite.config.js export default defineConfig({ server: { port: 5173, proxy: { /api: { target: http://localhost:8080, changeOrigin: true } } } })接口層我封裝了axios實(shí)例在request攔截器里統(tǒng)一加上Token頭response攔截器里統(tǒng)一處理錯(cuò)誤碼。這里有個(gè)小細(xì)節(jié)后端返回的JSON字段名用駝峰前端axios拿到的也是駝峰中間不需要afterRequest做字段轉(zhuǎn)換。但如果后端哪天改成下劃線命名就得加映射這個(gè)坑先記下。5.3 核心圖表組件落地明細(xì)總覽Dashboard我分了四個(gè)區(qū)塊第一塊是整體趨勢折線圖顯示所選時(shí)間范圍內(nèi)每天的PV和UV第二塊是渠道來源餅圖顯示各個(gè)渠道占比第三塊是設(shè)備分布環(huán)形圖區(qū)分PC和移動(dòng)端第四塊是最近點(diǎn)擊的實(shí)時(shí)滾動(dòng)表格。每個(gè)區(qū)塊都由一個(gè)接口驅(qū)動(dòng)前端用Promise.all并發(fā)請(qǐng)求所有數(shù)據(jù)到齊后一次性更新圖表。ECharts組件的使用上我不推薦在data里存chart實(shí)例因?yàn)閂ue3的響應(yīng)式代理會(huì)試圖劫持ECharts實(shí)例的內(nèi)部屬性引發(fā)怪異問題。正確做法是在模板里用ref或者vue-echarts組件讓組件庫自己去管理實(shí)例生命周期。圖表容器必須設(shè)置固定高度否則初始化時(shí)寬度為0圖表畫不出來。這是初學(xué)者最常踩的坑。5.4 實(shí)時(shí)刷新策略與性能取舍實(shí)時(shí)刷新不能整頁刷新否則圖表會(huì)閃。我用setInterval每隔10秒請(qǐng)求一次最近點(diǎn)擊接口只更新滾動(dòng)表格區(qū)域的數(shù)據(jù)。趨勢圖和占比圖的數(shù)據(jù)刷新頻率設(shè)置成60秒一次避免頻繁拉接口造成后端無謂壓力。前端輪詢的坑在于組件銷毀時(shí)要清理定時(shí)器否則路由切換后定時(shí)器還在跑控制臺(tái)會(huì)爆一堆警告。這里用onUnmounted鉤子清理即可。6. 完整部署教程從源碼到可訪問的線上服務(wù)6.1 環(huán)境準(zhǔn)備與版本搭配部署前先把環(huán)境準(zhǔn)備清楚。我線上用的是一臺(tái)2C4G的云服務(wù)器系統(tǒng)是CentOS 7。軟件版本搭配上JDK用的1.8對(duì)應(yīng)SpringBoot 2.7.xMySQL用的5.7.44Nginx用的1.20Node.js只在構(gòu)建前端時(shí)用到16.20版本夠用。這個(gè)組合是國內(nèi)服務(wù)器最穩(wěn)的一檔千萬別在生產(chǎn)裝MySQL 8.0然后連接方式不換后面踩坑一節(jié)會(huì)說詳細(xì)。MySQL安裝這塊建議直接用rpm包安裝不要用源碼編譯。具體步驟是下載對(duì)應(yīng)版本的rpm包rpm -ivh安裝然后初始化并啟動(dòng)服務(wù)。網(wǎng)上很多教程讓改my.cnf的character_set_serverutf8mb4這一步必須做而且要在初始化之前改好否則建出來的庫默認(rèn)排序規(guī)則不對(duì)中文索引和排序會(huì)有很奇怪的行為。6.2 后端打包與啟動(dòng)命令后端打包只需要在項(xiàng)目根目錄執(zhí)行Maven打包命令。Maven的配置里我把最終產(chǎn)物名設(shè)置成short-analysis.jar方便腳本里引用。打包前記得檢查application.yml數(shù)據(jù)庫連接串、Redis地址、日志路徑都要改成生產(chǎn)環(huán)境的值。mvn clean package -DskipTests nohup java -jar short-analysis.jar --spring.profiles.activeprod /data/logs/short.log 21 nohup啟動(dòng)是Linux服務(wù)最樸素的實(shí)踐。有人會(huì)用systemd寫service但內(nèi)部工具不必上那么重。啟動(dòng)完之后立刻看日志確認(rèn)端口和數(shù)據(jù)庫連接正常curl一下健康檢查接口。6.3 前端構(gòu)建與兩種部署形態(tài)前端部署有兩個(gè)選擇。第一個(gè)選擇是把dist目錄里的靜態(tài)文件復(fù)制到Nginx的html目錄再用Nginx配置反向代理轉(zhuǎn)發(fā)/api請(qǐng)求給后端Java服務(wù)。第二個(gè)選擇是把dist目錄整個(gè)復(fù)制到SpringBoot的src/main/resources/static目錄下重新打包最終只用一個(gè)Jar跑前端和后端。前面說了我線上用的是第一種方案好處是靜態(tài)文件走Nginx性能更好后面擴(kuò)容時(shí)前端可以掛CDN。前端構(gòu)建命令是npm run build產(chǎn)物在dist目錄。Nginx的關(guān)鍵配置直接看下面這段。server { listen 80; server_name analysis.example.com; location / { root /data/www/dist; index index.html; try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://127.0.0.1:8080/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }try_files那行就是為了解決刷新頁面404的問題。如果缺了這行瀏覽器訪問/about路由時(shí)Nginx會(huì)去磁盤找about目錄找不到就返回404。加了try_files之后所有不存在的路徑都回退到index.html由前端路由接管頁面渲染。6.4 初始化數(shù)據(jù)庫與定時(shí)任務(wù)驗(yàn)證數(shù)據(jù)庫初始化和定時(shí)任務(wù)一起說。項(xiàng)目里我寫了一個(gè)schema.sql放在resources/db目錄首次啟動(dòng)時(shí)用Spring的sql.init機(jī)制自動(dòng)執(zhí)行建表語句。但生產(chǎn)環(huán)境我建議關(guān)掉自動(dòng)執(zhí)行手動(dòng)到服務(wù)器上用mysql命令來導(dǎo)入更可控。定時(shí)任務(wù)方面后端用Spring自帶的Scheduled注解實(shí)現(xiàn)了兩個(gè)任務(wù)每10分鐘把內(nèi)存里的聚合計(jì)數(shù)刷進(jìn)stat_hourly表每1小時(shí)執(zhí)行一次全量重算。驗(yàn)證定時(shí)任務(wù)是否正常最簡單的方法是看聚合表的最新記錄時(shí)間是不是和當(dāng)前時(shí)間匹配同時(shí)看應(yīng)用日志有沒有異常。7. 部署與開發(fā)中踩過的坑完整排查鏈路記錄7.1 MySQL連接失敗的完整排查過程這個(gè)坑是上生產(chǎn)環(huán)境時(shí)遇到的。本地Windows開發(fā)環(huán)境一切正常代碼部署到Linux服務(wù)器后起后端就報(bào)Communications link failure。當(dāng)時(shí)第一反應(yīng)是數(shù)據(jù)庫地址寫錯(cuò)了檢查application.yml發(fā)現(xiàn)IP和端口都對(duì)。然后嘗試在服務(wù)器上mysql -h127.0.0.1 -uroot -p連接居然也連不上報(bào)錯(cuò)是Access denied。后來才反應(yīng)過來是MySQL 5.7安裝時(shí)root用戶默認(rèn)只允許localhost登錄而Java應(yīng)用用JDBC連接時(shí)的host是127.0.0.1跟localhost不完全是一個(gè)授權(quán)條目。解決方法是手動(dòng)創(chuàng)建授權(quán)用戶。CREATE USER short_userlocalhost IDENTIFIED BY ComplexPwd123!; GRANT ALL PRIVILEGES ON short_db.* TO short_userlocalhost; FLUSH PRIVILEGES;那個(gè)報(bào)錯(cuò)還有個(gè)常見變形就是MySQL 8.0的caching_sha2_password認(rèn)證插件問題。舊的JDBC驅(qū)動(dòng)不支持這個(gè)插件報(bào)錯(cuò)是Unable to load authentication plugin。解決方法是下載最新版mysql-connector-java或者在MySQL里把認(rèn)證插件改成mysql_native_password。我建議這倆方案都做尤其是云數(shù)據(jù)庫默認(rèn)就是8.0完全跑不了老驅(qū)動(dòng)。7.2 端口沖突與IDEA啟動(dòng)參數(shù)配置有一次本地起服務(wù)時(shí)發(fā)現(xiàn)8080端口被一個(gè)Java進(jìn)程占用idea啟動(dòng)日志報(bào)Web server failed to start看到這句基本可以確定是端口被占。排查命令是netstat -ano | findstr 8080找到占用進(jìn)程的PID后taskkill /PID /F解決。更規(guī)范的做法是后端啟動(dòng)配置里帶上--server.port8083這樣臨時(shí)指定端口避免和本機(jī)其他服務(wù)沖突。IDEA里配置SpringBoot的運(yùn)行參數(shù)時(shí)一定注意是Program arguments而不是VM options這兩個(gè)填錯(cuò)位置效果完全不同填到VM options里啟動(dòng)會(huì)被JVM當(dāng)成非法參數(shù)直接拒絕。7.3 前后端聯(lián)調(diào)CORS問題和Token丟失開發(fā)環(huán)境配了Vite代理后前端理論上不會(huì)遇到CORS問題。但我有一次繞過代理直接請(qǐng)求了后端地址結(jié)果瀏覽器報(bào)CORS error后端接口雖然返回正常數(shù)據(jù)但被瀏覽器攔截。這里要理解CORS是瀏覽器的安全策略不是后端的強(qiáng)制限制。生產(chǎn)環(huán)境如果Nginx代理配置正確根本不需要在后端開啟CORS。如果硬要在開發(fā)環(huán)境放行后端寫一個(gè)CorsFilterallowOrigin設(shè)成具體的前端地址就行不要用星號(hào)否則帶Cookie的請(qǐng)求依然會(huì)被攔。Token丟失這個(gè)坑體現(xiàn)在登錄之后前端跳轉(zhuǎn)路由刷新頁面Token就沒了。原因是我把Token放在內(nèi)存變量里刷新后JS重新加載變量自然清空。正確做法是存在localStorage或者sessionStorage里請(qǐng)求攔截器每次從storage里取。這個(gè)坑很初級(jí)但陣容不齊的團(tuán)隊(duì)里最容易踩到而且表現(xiàn)詭異登錄狀態(tài)一會(huì)兒有一會(huì)兒沒有。7.4 MyBatis緩存與臟讀問題的實(shí)踐復(fù)盤前面提到統(tǒng)計(jì)Mapper開了二級(jí)緩存但我一開始把所有Mapper都開了結(jié)果出了大問題短鏈點(diǎn)擊量接口每次查詢的累計(jì)點(diǎn)擊數(shù)和明細(xì)對(duì)不上。排查思路是先用日志打印SQL發(fā)現(xiàn)第一次查詢打印了SQL第二次查詢直接走緩存沒打印SQL但此時(shí)明細(xì)表里已經(jīng)新增了點(diǎn)擊數(shù)統(tǒng)計(jì)結(jié)果還是舊值。這就是典型的臟讀緩存命中了基于舊數(shù)據(jù)的查詢結(jié)果。解決方案如下只有統(tǒng)計(jì)報(bào)表Mapper開啟二級(jí)緩存點(diǎn)擊流水和短鏈映射Mapper關(guān)閉。同時(shí)在統(tǒng)計(jì)Mapper的flushInterval里設(shè)置成60000毫秒讓數(shù)據(jù)最多延遲一分鐘。這里還順帶理解了MyBatis框架里一級(jí)緩存的生命周期。一級(jí)緩存是SqlSession級(jí)別的如果同一個(gè)SqlSession里先查后寫再查會(huì)存在舊值復(fù)用的問題。Spring管理的Mapper實(shí)際上每次都創(chuàng)建新SqlSession除非用Transactional包著所以一級(jí)緩存問題在這個(gè)項(xiàng)目里不嚴(yán)重但知道原理是好事。7.5 時(shí)區(qū)問題導(dǎo)致統(tǒng)計(jì)結(jié)果差8小時(shí)這個(gè)坑是在定時(shí)任務(wù)上線第二天發(fā)現(xiàn)的。前一天18點(diǎn)到24點(diǎn)的統(tǒng)計(jì)數(shù)據(jù)顯示為0但點(diǎn)擊明細(xì)表里明明有數(shù)據(jù)。查看了stat_hourly表發(fā)現(xiàn)數(shù)據(jù)寫進(jìn)去的時(shí)間是第二天凌晨2點(diǎn)到8點(diǎn)整整差了8個(gè)小時(shí)。這就是Java應(yīng)用默認(rèn)時(shí)區(qū)和MySQL時(shí)區(qū)不一致導(dǎo)致的。CentOS系統(tǒng)時(shí)區(qū)是UTC而MySQL連接串里的serverTimezone沒指定JDBC驅(qū)動(dòng)就用系統(tǒng)時(shí)區(qū)解析DATETIME最后數(shù)據(jù)落庫整體偏移。修復(fù)方案是在JDBC連接串上明確指定serverTimezoneAsia/Shanghai同時(shí)應(yīng)用啟動(dòng)參數(shù)加-Duser.timezoneAsia/Shanghai。這里注意MySQL 8.0版本自帶的時(shí)區(qū)表默認(rèn)內(nèi)容很少如果連接的時(shí)候指定Asia/Shanghai報(bào)錯(cuò)需要用mysql_tzinfo_to_sql命令導(dǎo)入系統(tǒng)時(shí)區(qū)表或者干脆在MySQL配置里default-time-zone8:00。這三種方案我最后一起上了確保所有環(huán)節(jié)一致。7.6 前端圖表初始化和刷新時(shí)的心得圖表初始化那個(gè)坑是這樣的接口數(shù)據(jù)還沒返回時(shí)ECharts容器已經(jīng)渲染但尺寸為0數(shù)據(jù)回來后圖表顯示空白。排查時(shí)發(fā)現(xiàn)路Chart的option設(shè)置沒問題手動(dòng)resize一下就能顯示這就是典型的“數(shù)據(jù)驅(qū)動(dòng)渲染時(shí)容器尺寸未就緒”。解決方案不是很復(fù)雜在組件mounted后先對(duì)圖表實(shí)例調(diào)用一次resize或者給圖表的wrapper設(shè)置一個(gè)最小高度。常用做法是給容器固定的高度比如dashboard-trend樣式里直接height: 320px問題就沒了。另一個(gè)心得是接口數(shù)據(jù)格式和圖表數(shù)據(jù)格式一定要在前端做適配層不要把后端返回的JSON直接塞給ECharts。ECharts的series.data接受數(shù)組對(duì)象但后端返回的分組統(tǒng)計(jì)結(jié)果往往是Map或者List嵌套直接塞過去會(huì)報(bào)錯(cuò)。我在utils/chartAdapter.js里寫了一套數(shù)據(jù)轉(zhuǎn)換函數(shù)專門把后端聚合結(jié)果轉(zhuǎn)成ECharts需要的格式。這樣后端接口只管數(shù)據(jù)語義前端圖表只管展示職責(zé)清晰。8. 上線后的數(shù)據(jù)校驗(yàn)與后續(xù)擴(kuò)展建議系統(tǒng)上線后第一件事不是看圖表漂不漂亮而是校驗(yàn)數(shù)據(jù)準(zhǔn)確性。我最常用的一套校驗(yàn)邏輯是拿聚合表的24小時(shí)SUM值和點(diǎn)擊明細(xì)表按天的COUNT比較誤差超過1%就要查問題。誤差來源一般有兩個(gè)一是定時(shí)任務(wù)還沒跑完統(tǒng)計(jì)已經(jīng)被前端拉走二是去重UV的邏輯出錯(cuò)。校驗(yàn)?zāi)_本用一條SQL就能搞定。SELECT (SELECT COUNT(*) FROM click_log WHERE click_time 2024-01-01 00:00:00 AND click_time 2024-01-02 00:00:00) AS detail_pv, (SELECT IFNULL(SUM(pv), 0) FROM stat_hourly WHERE stat_date 2024-01-01) AS agg_pv;兩列數(shù)值對(duì)不上就說明鏈路有問題需要逐個(gè)環(huán)節(jié)排查。后續(xù)擴(kuò)展方向上如果數(shù)據(jù)量真的漲到千萬級(jí)點(diǎn)擊、每天上百萬條明細(xì)那再考慮把click_log按月分區(qū)或者把統(tǒng)計(jì)模塊抽出來用Flink做實(shí)時(shí)計(jì)算。老實(shí)說以我目前線上這個(gè)量級(jí)MySQL單庫單表加定時(shí)聚合完全扛得住不需要盲目上大數(shù)據(jù)組件畢竟技術(shù)棧越復(fù)雜排查問題成本越高。這個(gè)系統(tǒng)做下來最大的體會(huì)是前后端分離項(xiàng)目的復(fù)雜度不在于某個(gè)單獨(dú)的框架有多難而在于數(shù)據(jù)從采集到存儲(chǔ)再到展示的每一環(huán)都要保持語義一致和格式統(tǒng)一。誰能在這些環(huán)節(jié)上做得細(xì)致誰的項(xiàng)目就能穩(wěn)定跑下去。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产拍偷精品网站| 九九九精品色乱九九九| 久久伊人亚洲AV无码网站| 老熟女中文字幕高清| 美女刺激久久国产欧美| 日本日皮视频逼| 狠狠色噜噜狠狠狠狠2018| 久久9免费视频| 色老汉色| 在现视频女上位好爽| 国产精品网站免费| 伊人久久88国产女| 女人爽到高潮潮喷18禁网站 | 色色色欧美| 91亚洲人| 操www| 久久久一二三四区| 啊啊啊啊啊舒服| 日韩精品操少妇| 色噜噜人妻av 中文字幕| 91精品伊人久久久大香线蕉91| 日韩欧无码一区二区三区免费不卡| 久久久久密臀视频| 精品十三区| www.91色综合| 亚洲精品亚洲人成人网| 插欧洲美女欧美精品| 美国日韩黄片| 无码外流操逼视频| 飘花国产午夜精品不卡| 一区二区三区黄色片a| 人妻少妇精品视频一区二区三区| 日韩综合97p| 4虎在线视频| 亚洲精品蜜桃久久久久久久| 国产精品久久久无码aV去| 欧美黑人与女人91| 欧美综合色图片| 麻豆天天躁天天揉揉AV| 国产精品另类| 欧美+日产+中文| 欧美色网络| 欧美自拍网| 国产午夜精品一区二区三区牛牛| 亚洲午夜精品久久久中文影院| 精品无码产区一区二| 麻豆一区在线| 东京男人天堂| 免费a级毛片av无码久久精品中文字幕| 国产高清亚洲日韩一区| 亚洲最新中文字幕免费| 92人人操人人| 亚洲情色婷婷五月天| 97WW精品| 欧美亚洲宗合色性图| 久久天堂网| 中文久久久| 欧美精品三区| 久久国产乱子伦精品免费女人| 秋霞成人一级在线观看| 日韩性爱电影一区| 婷婷伊人一区| 天天做日日爱夜夜爽| 在线观看AV片| 婷婷五月成人| 久啪| 十八禁黄色| 国产强奸乱伦欧美| 免费一级毛片在线视频观看| 欧美精品在线观看| 国产精品69久久久久久久| 日本欧美不卡| 日本性爰一道本| 精品一区二区成人动漫| 色哟哟国产精品免费网址| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 国产亚洲精品精AV.| 美国日韩黄色片| 可以免费观看的av| 狠狠躁日日躁夜夜躁A| 欧美手机在线综合| 精品国产Av无码久久久亚洲| 婷婷丁香五月综合| 国产路线专区| 盗摄女人妻在线| 思思热在线视频精品| 亚洲精品欧美专业| 欧美综合网在线| 在线欧美69V免费观看视频| 日韩精品一区二区三区色欲| 亚洲大胆人体av| 国产60页| 九九热免费国产视频婷婷伊人| 超碰在97| 久久性爱大全| 色69大色97香蕉| 另类TS人妖一区二区三区| 亚洲一区二区性爱电影| 91 亚洲情侣偷拍 久久| 1000部熟女视频在线观看| 极品尤物在线观看| 色在线69堂| av激情亚洲五月天| 中文字暮97| 99色热| 青娱乐亚洲自拍| 欧美视频在线第3页| 高清不卡 中文 人妻| 久草加勒比一区在线| 亚洲色图欧美视频| 97精品在线| 日韩精品人妻一| 日日干夜夜操视频h| 少妇无码999| 国产福利影视| 欧美天天综合网版| 欧美一二在线| 性影在线视频| 色69大色97香蕉| 黑人操一区二区| 330dv亚洲成年视频网| 亚洲一卡二卡在线免费| 精品二区三四区五电影 | 91青青| 蜜桃在线观看一区二区三区 | 91neishe| 亚洲男人电影天堂| 日本久久久久久久久| 色九久| 日本三级久| 免费AV中文网在线观看| 青春草A| 狠狠色噜噜狠狠狠狠2018| 色91综合网| 国产一区二区三区视频在线看| 久久精品国产99国产精品亚洲| 中国农村熟妇毛片视频| 国产乱弄免费在线视频。| 亚洲欧洲日韩天堂av| 欧美激情片一区二区| 日韩性爱视频在线免费观看| 97资源站久久| 五月婷婷激情综合| 天堂v无码免费视频| 欧洲Au麻豆| 91社操逼| 欧美中文综合| 欧美综合传媒| 中文一区二区婷婷视频| 久久精品色欧美aⅴ一区二区| 欧美色图欧美| 欧色综合| 久久极品一区二区| 爱我干综合| 91丝袜| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 久久这里精品国产99丫e6| 成人无码在线视频网站| 在线看污网站| 亚洲激情天堂网| 久久人人爽人人爽人人片Ⅴ| 大JI巴好深好爽又大又粗视频| 国产九区| 老女人爆菊| 黄在线| 亚洲天堂资源在线| 亚州 综合 色图| 色婷五月| 99熟女| 亚洲成人在线高清| 男人的天堂99| 国产精品乱码久久久、久久| 黄色不卡视频| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 国产视频小说| 97网址www| 凹凸久久人人| 成全在线观看免费观看| 久热一区二区| 老熟乱一区二区三区四区| 97大色网| 欧美激情 日韩精品| 91精品大奶人妻| 26uuu成人影片| 97超碰精品图片| 人人搡人人肉久久精品| 精品人妻二区三区| 久久精品无码专区| 少好三P| 天天做天天爱天天爽AV| 野狼激情网| 久久五月综合| 秋霞视频一区二区| 免费在线黄片视频| 熟女乱伦A| 国产粉嫩蜜臀av一区二区三区 | 一,爱啪啪,在线免费视频| 亚洲天堂精品日韩电影| 欧美极品美女aaaaaa级黄片| 日日夜夜精品视频| 探花视频免费观看国产专区| 97干97色| 亚洲阿v天堂在线| 久久久9999| 欧美se综合| 99超碰网| 91丰满| 精品人妻一区二区三区不卡断 | 天天躁日日躁AAA片李宗瑞| 婷婷去俺也去六月色| 国产女s强制榨精视频| 永久免费观看的毛片的网站| 日韩无码极品| 国产无码精品高清| 亚洲无码久久久久久久| 日韩中文字幕在线视频观看| 久久伊人大香蕉| 青草精品视频一日本久久久久网站| 欧美大干日韩| 日本天堂在线播放| 午夜啊啊| 日本一道在线播放高清| 久久五月天婷婷丁香中文字幕| 欧美人人曰人人操人人射射| 美国人人操人人操| 激情五月丁香五月| 亚洲中文字幕妇伦久久| 久久人妻少妇| av毛片aaaaa免费看| 亚洲精品成人动漫在线| 日本亚洲熟女视频| 国产成人资源| 中文字幕一区二区三四五区日日骚| 久久精品电影| 美女诱惑久久| 18啪啪手机免费性爱| 美女极品一区二区三区| 色婷婷成人| 老女人日韩美91| 天天综合网1| 999久久久久久久久| 日韩色| 中文人妻av高清一区| 国产成人bd在线观看| 99热在线观看| 啊啊啊啊啊啊啊网址在线观看| 人人妻人人色一区二区三区| 加勒比综合| 26uuu国产日韩综合在线观看| 黑人精品成人一区二区三区| 欧美中文字幕男人天堂久久精品 | 啊v在线观看视频| 十八禁啪啪视频| 亚洲情色在线| 美女91| 黄色小视频日本txt| 伊人五月天青青草婷婷| 国产AB视频| 欧美综合网| 色综合色欲色综合色综合色综合| laoshunv91| 啊啊啊好大好深| 18禁精品网站在线看| 亚洲丝袜色| 91操人| 日语五十路和六十路亚洲国产精品| 日韩精品1区2区中文字幕| 国产欧美日韩在线观看麻豆传媒公司| 久久九操在线观看| 久久久久亚洲熟妇熟女| 超硑97精品| 亚洲丝袜少妇在线| 熟女六十路| 亚州日韩97| 日本成熟少妇A∨网站| 国产1769在线| 精品中文日韩字幕视频| 日韩黄色片子| 97超碰免费人人性爱| 最新无码国产| 日韩精品.久久精品.AV女优.天美传媒 | 91欧美综合| 97久久超碰| 熟女高潮精品一区二区| 国产女性无套 免费观看| 秋霞一区二区三区四区五区六区七区| 日本成a人v网站在线观看| 久久精品性| 智利AV在线网| 91一起操| 9丨久久九九九| 色区久久| 国产精品第一区第一页| 中文字幕精品人妻丝袜| 欧美精品精品一区二区| 国产一区二区三区,在线观看观看| 国产60页| 亚洲丝袜B诱惑| 久久的免费性爱视频| 久操B网| 91超碰在线| 开心激情站| 国内外内射高清视频| 夂久色| dy888午夜老子影视达达兔| www.五月天| 欧美色图亚洲激情| 第45页一区二区| 欧 美 自 拍 偷 拍| 东北女人的毛片| 搞中出久久| 中国黄色特级精品一区二区三区片| 嗯啊抽插大香蕉网页| 99在线啪| 美女啊啊啊啊啊啊啊| 被窝影院午夜看片无码| 婷婷精品久久av影视| 色婷婷成人| 欧美亚洲情色| 中国的操老妇女| 大香蕉黄色一区| 91天美免费| 亚洲日韩肥臀视频在线观看| 美国aaaaa一级黄片| 热热色综合网| 艳美熟妇先锋一二三区| 亚洲中文字母在线播放| 国产精品香蕉| 国产精品毛片| 91女在线观看| 色色色热| 中文一区在线视频| 亚州综合色| 97免费免费视频网| 婷婷五月天色色| 操国产逼| 91狠狠综合久久| 97在线欧洲| 亚洲国产日韩欧美熟妇在线| 亚洲av国产av综合av卡| 人妻丝袜二区| 亚洲超碰综合网| 五月丁香| 巨爆乳肉感一区二区三区竹菊影视| 久久久九九九| 欧美日韩系列| 加勒比海成人视频网 | 综合色久欲| 嗯嗯嗯不要不要免费视频| 亚洲av无线观看| 亚洲春色一区二区三区| 9久9久9久9久视频网站| 330dv亚洲成年视频网| 久7色| 成年女人18级毛片毛片免费观看| 久久伊人亚洲AV无码网站| 夜夜久久久| 9999九九九久久久| 久婷婷一区| 男人亚洲91首页在线| 亚洲最大AV网| 欧美性爱www免费版| 亚洲色图 欧美| 蜜臀va69| 黄页网站成人免费| 人妻 欧美亚洲| 国产白丝在线| 中文字日本乱码| 97超碰69| 人人妻人人操人人乐| 毛片电影一区二区三区| 99精品在线播放| 户外裸露刺激视频第一区| 国产在线视频二区| 性爱视频啪啪啪啪| 五十路六十路七十路熟婆| 99人妻碰碰碰久久久久禁片| 97久久精品| 蜜臀久久99精品久久久久久酒店| 躁躁躁日日躁2020| 久久人妻| 69国产对白刺激| 国语对白露脸XXXXXX| 成人线上超碰| 国产成人精品必看| 久久久久久亚洲中文| 国产又黄又爽又刺激久久久久久 | 97天天综合网| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 91女人的网站| 超碰精品| 成人草草视频| 97资源久久| 亚洲无码电影久久久| 操操操五月天婷婷丁香影院| 久热影视| 久久久精品视频免费观看| 亚洲国产高清福利视频| 亚洲午夜AV| 国产11页| 久久这里| 欧美大片91| 99久久久无码国产精品性啊聊| 26uuu久久| 熟妇的味道HD中文字幕| 激情丁香婷婷| 刺激精品视频| 超碰欧美97资源| 一区二区三区高清 | 久久m| 日本久久久久久久久久| 农村女一级毛卡片| av在线不卡一区二区三区| 婷婷亚洲五月***久久| 97人人干| 日本好吊色视频| 欧美 亚洲精品首页| 欧美91精品国产自产| 午夜亚洲国产理论秋霞| 嗯嗯啊啊视频在线看| 超碰97男人| 热热色青青草| 免费福利视频中文字幕| 丁香六月综合激情| 日日嗨AV一区二区夜夜| 69精品| 操逼不卡中文字幕| 精品91摸| 九九九九精品视频| 无套内射人妻在线播放| 日本三级久| 欧美在线综合| 欧美gv在线观看| 日本欧美国内在线| 国产精品久久久久久久久久久久久久久久| 美女诱惑久久| 国产AV超爽| 天天夜夜久久| 国产午夜福利专区综合| 韩日精品四区| 另类欧美综合| 欧美日本一区二区a人| 800zy一区二区| 4tube欧美女厕所| 大香焦A片| 啪啪91| 精品国产乱码久久久| 国产 热久久久久国产精品| 色一射色一射| 日韩成人高清一区二区| 欧美色五月| 十八禁黄色| 黑人黄片在线免费观看| 夜夜免费视频| 欧美另类精品xxxx| 9久精品视频在线观看| 无码高清少妇久久| 黄色成品网站| 欧差乱伦二三| 国产AV天美| 精品国产Av无码久久久伦古装| 天天日天天色| 美欧色综合| 99精品在线观看| 色九九九九九九| 国产精品爽爽va在线观看98| 好爽要喷了| 免费av大片| 精品无码产区一区二| 一本一道vs波多野结衣| 丰满人妻一区| 欧美99热| 天天欧美| 国产黄a三级三级三级av在线看| 欧美日韩欧美| 德国一二三不卡| AVE乱伦| 97se综合网| 亚洲图片色图欧美另类| 六月婷婷一区二区三区| α√在线| 日韩15p| 97国产色综合| 免费视频在线一区二区不卡| 好好的日:com久久九九| 免费啪啪一级视频| 欧洲精品二区| 日本三级日本三级三级人妇四虎| 免费一级性爱久久| 天堂av最新电影网| 久操高青| 思思热国产在线视频| 久久噜噜噜精品国产亚洲综合| 欧美一级A片在线看视频性色| 国产suv一区二区三区6| 密臀在线免费观看| 户外裸露刺激视频第一区| 男人的天堂三级| 青青国产精品在线| 午夜超爽| 精品人妻一区二区免费蜜桃视频| 97天天操天天干| 色牛牛AV| 翔田千里无码中出中文字幕| 91在线一起| 超碰爽人妻熟女Av| 国产AV超爽| 国产亚洲色停停久久99精品91| 亚洲日产专区婷婷| 久妇网| 无码乱人伦中文视频| 天天伊人| 综合情欲网| 欧美有码亚洲中文字幕一区二区三区四区| 日韩精品免费高清视频在线| 欧美黑人熟妇精品91| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 极品综合| 亚洲精品国产精品成人| 在线观看色视频| 婷婷久热| 色情乱伦AV| 久久久艹艹艹| 在线v中文字幕一区二区三区| 五月丁香激情四射| 黑人精品欧美一区二区蜜桃| 久久一留热品黄| 高清国产av无码| 欧美爱三级日韩久久| 天天射天天色成人| 精品无码一区二区人妻久久蜜桃| 97蜜桃综合| 成人精品在线观看| 欧美人妻一区| 搡老女人老妇女AAA一VU麻豆| 熟女人妻一区二区三区| 精品人妻一区二区三区蜜桃视频| 精品国产乱码久久久兰草影视| 日夜啪电影| 强奸xx国产| 午夜无码精品免费看性色| aaa亚无码专区| 久久久久久人体| 免费超碰97久久| 99re9这里只有精品| 日韩精品一区二区三区四虎影视| 亚洲综合校园春色| 人人爱夜夜爱| 中文字幕在在线观看网站| 欧美色图天堂在线| 国产成人网| www色色com| 99热这里只有精品地址| 91成人精品在线播放| 日本熟女免费視颖| 国产福利在线视频网站| 琪琪精品免费一区二区三区 | 婷婷丁香六月| www.久久久久| av中文在线| 欧美少妇熟女| 久久超碰亚洲人| 亚洲中文字幕乱码无码一区二区| 精品免费1| 午夜成人福利影视| 四虎国产成人精品免费一女五男| 麻豆AV短剧| 亚洲人妖网| 中文一区在线日| 941超碰| 亚洲好色人妻| 五月情色天| 亚洲欧美日韩制服另类| 一级日本牲交大片好爽在线看| 日本欧美韩国国产在线| 一级特级aaaa毛片免费观看 | 嗯嗯啊啊好大好爽| 国产av色网| 欧美熟妇精品黑人巨大91| 国产精品96| 午夜乱轮操逼视频免费看| 欧美性爱1080p| 99热婷婷| 久热精品色情| 国产精品另类一区大香蕉| 97资源久久| 天天激情综合站| 92人人操人人| 国产性感在线观看| 久久久性少妇| 人人操人人爽人人操人人| 丝袜剧情| 狠狠久久四虎| 精品久操| 国产精品久久aV| 免费a在线播放v| 神马视频久久久久久| 欧洲精品久久| 综合久久97| 97任你吞精| 台湾佬中文娱乐自偷自拍| 国产免费一区| 综合伊人网12色| 日韩性爱播放| 色大香蕉97N| 青草成人免费视频一COm| 91在线视频免费播放| 久久午夜伦| 欧美激色| 极品欧美一区二区三区| www.天天干| 超碰97亚洲区| 少妇熟女1区2区3区| AAA久久| 色色色色色色色色综合| 精品国产乱码久久| 色999亚洲人成色| 精品国产乱码久久久兰草影视| 96麻豆精品一区二区三区| 天天干人人干天天日97| 国产人伦精品一区二区三区| 久热最新在线杭州| 91狼人| 天美一区在线| 午夜一级免费毛片| 啪啪视频mP4| 免费视频一二三区| 久久激情视频| 综合欧美色图| 欧美一级黄片免费播放| 操淫穴亚洲五月丁香 | 啊啊啊啊操死我| 久久99亚洲精品久久99果| 亚洲资源网| 国产美女口爆吞精视频| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 五月婷婷综合激情| 久久精品操| 日本精品第一视频在'| 劲爆欧美人妖三区91| 午夜激情成人在线观看| 性性欧美| 亚洲av综合色区图片亚洲| 性色高清在线| 国产日韩色综合| 西西美女视频网| 天天躁日日躁AAAAXXXX国产| 密臀AV在线| 又粗又长又爽在线观看| 久久99草| 欧美性巨大╳╳╳╳╳高跟鞋| 欧美色图91p| 无码精品一区二区三区潘金莲| av东京热男人的天堂| 欧美 熟女 日韩| 日本1区2区不卡视频| 美女大乳久久久久久久女人18| 日熟女| 久久久久密臀视频| 欧洲一级性爱视频在线观看| 欧美 日韩第一性色| www九九热| 大香蕉中文在线| 久久久9品一区二区三区| 国产狂喷潮在线精品| 欧美色图下一页| 强歼乱伦资源网| 欧美色蜜桃97| 少妇毛片久久| 免费看黄视频亚洲网站| 91天天综合在线观看| 又黄又爽在线观看视频 | 超AV色女| 97在线精品观看视频| 夜夜嗨TV| 国内精品不卡无毒99999| 国内毛片国产欧美拍| 亚洲十八禁止| 草草影院在线视频| 国产日韩欧美中文在线播放| 男人的天堂无码| 亚洲丝袜二区| 狼狼色丁香久久婷婷综合五月| 免费男人的天堂| 高清不卡一二三区视频......| 草草影院最新网址| 中文字幕激情小说| 欧美亚洲AN| 五月丁香综合网| 天天干天天燥| 色色九区| 日韩少妇在线视频| 亚洲激情网一二三四区| 精品无码久久久久久国产浪潮| 久久熟女嫩草成人片免费| 日产国产精品中文久久婷婷| 强奸乱伦av电影| 韩国一级做a久久久久| 亚洲青青草| 九九玖玖精品| 中文字幕一区二区三区视频播放| 嫩草在线视频| 欧美综合天天| 老熟女天天操| 久久久精品一区二区| 91狠婷| 亚洲操逼网| 可能人人看人人摸| 国产亚洲色婷婷久久99精品91 - 百度| 九九九九九九九| 男人的天堂色偷偷青青草视频婷婷网| 99精品久久| 色哟哟av网址| 日本精品88888888| 欧美综合自拍成人自拍第二十页| 在线观看国产黄色| 亚洲欧美综合区自拍另类| 97国产精品视频| 国产区在线| 老色鬼成人精品视频下载大在线观看| 91亚州欧美| www.操| 麻豆天美电影一区二区| 日本九九九九| 无码少妇精品一区二区60岁老人| www.久久最新地址| 日韩综合无码色欲vv| 中英熟女操女| 天堂v无码免费视频| 亚洲国产熟妇综合色专区| 美女91网| 超碰99在线| 好爽视频在线观看| 91色宗合| av激情亚洲五月天| 欧美亚洲中文| 偷拍精品一区二区三区| 999精品久久久久久久| 粉嫩AV一区二区夜夜| 日天天九九天堂666| 国产夫妻性生活视频| 免看60秒涩涩视频| 桑老女人九区| 九t超碰| 男人天堂新在线| 天天久久| 欧美极品美女aaaaaa级黄片| 日本东京热久久久电影| 麻豆国产精品午夜视频| 超碰免费人妻人人| 性爱乱伦视频免费| 欧美人妻久久精品二区三区| 伊人女女资源在线观看| 激情四射五月天| 丁香五月激情综合| 久久精品免费| 蘋果手機免費看成人Av| 后入日本1234| 99无码| 亚洲无码太久| 丰满人妻av一区二区三区| 国产成人网站在线观看| 人妻AV 中文字幕的| 三级片大波波| 中文字幕伊人| 亚洲欧美清纯| 国产精品久久久久久久电影渣男| 99久久久久久久久| 精品视频久久久久九九九九9999 | 天天影视综合网欧美精品| 青青草在线视频人人想人人上| 伊人一区二区三区| 日本 情色 1区2区3区| 欧美双插| 免费簧片在线观看| 久久五月份| 成人五月天色网| 欧美97网| 色欲无码人妻日韩欧美精品| 超碰99在线观看| 狠狠操一区二区| 偷拍欧美亚洲| 国产中文字幕在线点播| 五月丁香六月婷综合成人综合| 久久9 9 9精品| 久久久久斤小| 亚洲高清视频在线免费观看| 亚洲古典另类欧美在线| 老女人爆菊| 极品出轨视频网站| 18禁无码永久免费无限制| 天天色播| 欧美熟女丝袜| 日语五十路和六十路亚洲国产精品 | 久草婷婷| 学生妹天天看| 欧美在线永久天堂| 九九九九久久久| 国产热av| 精品久久久久久无码| 婷婷五月天影院| 一本久久精品中文字| 亚洲欧美综合| 九九色精品| 天天综合麻豆视频| 中国AV美女| 黄页18禁| 人人妻人人澡人人爽久久av| 国产一级黄色片在线观看| 久久99手机免费视频| 亚洲毛片基地专区| 大香网伊人久久综合| 午夜福利在线合集| 人人干黄色| 青青草亚洲一区 | 九九热免费国产视频婷婷伊人| 国产熟女高潮一区二区三区| 激情抓乳插进去啪啪啪日韩 | 91狠狠| 精品 码产区一区二-1080P高清在线www-B029AV | 骚妻少妇精品性色无码四色A V| 国产精品分类在线观看| 久久久亚洲精品电影免费看| 久久久久久久| 婷婷导航| 青草成人免费视频一COm| 六月色色| 久草免费在线视频| 调教熟妇 久久久久久| 国产一区二区精品久久久不卡蜜臀 | 97超碰碰| 91久精品| 综合影院永久入口国产| 日韩中文字幕熟妇人妻| 人妻一区二区三区四区视频| 国产精品白虎| 日本爽爽爽爽爽爽免费视频| 久久久9品一区二区三区| 欧美综合自拍| 欧美日日夜夜| 秋霞一级A片黄色视频| 自拍欧美| 51一区二区三区| 屁股久久久久久久久| 中文字幕精品区先锋资源| 91麻豆天美国产欧美高潮| 六月婷婷综合| 九久精品| 日韩少妇丰满亚洲| 大香蕉一区二区在线观看.| 成人一区二区三区四区| 人人干人人操人人..com| 日本久久久精品电影| 久久精品99| 一区二区三| 日韩情色AV| 国产激情av女片自拍| 青青草综合在线| 婷婷久草一区二区三区| 狠狠操,使劲操| 综合91网| 色五月综合| 69XX一中文字幕人妻91| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 蜜臀久久久99久久久久 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产精品欧美激在线| 日va操| 精品对白久久不卡| 熟女自慰久久久| 强奸乱伦动态污图免费| 亚洲另类春色| 六月婷婷一区二区三区| 婷婷综合在线| 一级人妻性爱视频| 自拍啪啪视频| 加勒比综合九九99视频在线播放| 最新日产中文在线麻豆| 成年无码动漫av片无尽在线| 亚洲欧美日韩电影网站一区 | 午夜人人操| 美女上床网站| 操逼精品视频| 国产玖玖| hd成人一区二区在线| 蜜臀一区二区三区在线| 91九色丰满高潮| 97一区二区蜜臀| 国产一区二区三区影片| 日韩免费簧片| 我要色综合网站| 大香蕉啪啪啪啪在线| 92福利社视频| 免费中文在线| 欧美亚洲素人制服精品| 午夜精品久久久久久久久久久久久| 啊啊啊好大好湿| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 国产日韩欧美三级片| 国产亚洲性生活视频播放| 淫淫综合网| 中文日韩欧美熟| 青青操在线亚洲视频观看欧美在线| 日韩成人精品中文字幕| 啪一啪免费视频| 国产黄色小视频网站| 欧美天天弄| 老熟女综合网| 99热国产| 4虎在线视频| 欧美日本天堂| 18一区二区三区| 女优免费一区二区永久| 亚洲天堂热| 久久精品三级影视| 精品亚洲国产成人av网站| 98人妻精品一区二区色欲| 久久内射| 99热这里都是精品| 久久国产精品视频| 麻豆区久久久久亚| 试看60秒| 日韩亚洲97| 日日日色色色色色| 日本孕妇孕交| 色眯眯av| 综合97久久| 欧美黑人91| 智利AV在线网| 久久9999| 欧美日韩系列| 18精品一二区| 欧色网址| 欧美色图综合网| 校园春色五月天| 精品熟女呻吟久久91| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 一级黄碟在线观看| 欧美色日本| 天堂亚洲精品久久老牛| 五十路人妻在线| 麻豆这里只有精品| 成人国产精品三级A片| 99久久久无码国产精品性男| 在线视频日韩欧美国产| 午夜男女爽爽爽在线视频 | 91亚洲网站| 久久专区| 一级婬片120分钟试看| 亚洲电影中字一区二区| 素人一区二区三区日韩| 欧美日韩操操操| 97久久超碰| 高潮内射在线| 福利一级版子| 久热这里| 欧美激情激情xxxx欧美专区| 欧美18 在线观看| 99在线无码精品秘 入口黑人| 国产女性无套 免费观看| 另类图片五月天| 亚洲熟妇丝袜在线观看| 在线黄色污污网站| 久久久免费视频18| 好吊色综合| 日韩成人精品| 亚洲AV无码久久久国产精品| 日韩精品一区二区三区四虎影视| 欧美一级欧美三级在线观看| 日本精品久久久久久久| 欧美天天搞| 在线岛| 五月天激情四射| 精产国品一区二三产品| 91 国产丝袜在线播放-百度| 美女啊啊啊啊啊| 最新亚洲人成网站在线影院| 丁香九月激情啪| 午夜天堂网| 91精品国| 成人26uuu| 国产一级片| 亚熟hd视频在线| 九九九九九精品| 国内毛片婷婷六月色| 98色网| 久久↗↗| 国产成人超碰在线| 伊人久久婷婷| #NAME?| 十八禁啪啪视频| 欧美丰满熟妇XXXX性ppX人交| 九九九久千久久激情蜜桃在线看 | 中文字幕在线观看网页| 人人澡人人澡人人| 91伊人久| 日韩97超碰中文字幕| 在线小说视频一区| 在线毛片片免费观看| 色色色综合网| 九九人妻| 色网在线视频观看免费| 欧美美女啪啪视频| 精品美女少妇一区二区| 精品亚洲国产成人精品| 91 丝袜在线| 97chaopengongkai| 在线观看黄色电话| 无码男人天堂| 日韩激情无码影院| 国产欧美伊人| 99久在线精品99re8蜜桃| 色伊人91| 都市激情人妻一区二区青青操视频 | 操婢日韩| 午夜呻吟欧美| 天天综合91| 激情自拍 校园春色| 日韩欧美麻豆 | 精品十八在线观看| 国产色精品午夜大片| 大香网伊人久久综合网eew| 性色AV网站| 91精品电影18| 中文字幕欧美丝袜07资源| 99热网站| 大香蕉中文网| 另类在线| 熟女少妇视频| 性吧在线视频| 夜夜高潮夜夜爽夜夜爱爱一区| 亚洲最大网站av| 久久久少妇诱惑精品视频| 中国乱伦一区二区 | 久久99亚洲精品久久99果| 啊啊啊啊在线播放| 亚洲精品日韩国产欧美| 亚洲情色 无码专区| 偷看洗澡一二三区美女| 久久国产精品视频| 色色五月天激情| 性91| 久久久久久性爱视频| 日本成人免费一区二区三区| 97 超碰 人人做 人人爱| 人人干黄色| 欧美在线视频播放| 精品v日韩欧美国产| 美女上床网站| 天天干天天拍| av网站在线看| 欧美aⅴ99久久黑人专区| 人妻一区视频| 女人18精品一区二区三区| 婷婷久久大香蕉| 加勒比综合网| 天天天天天超碰| 妺妺跟我一起洗澡没忍住| 啊啊啊啊免费视频| 啊好大好舒服| 国产高清免费不卡av| 熟妇无码视频三区| 91N欧美| 美女视频尤物网在线看| 97草草| 国产精品交换一区二区| 精品人妻一区二区三区四区石在线| 日本999精品| 熟女乱伦二区| 熟女激情综合网| 中出后入| 综合色图亚洲欧美| 亚洲?V无码专区在线电影| 久久久久久裸体| 国产精品青青草| 亚洲高清无码在线桃色| 国产熟女无套内射| 天天插夜夜爽| 99热这里只有精品9| 亚洲一区中文精品| 久草成人影片| 欧美一区二区情色| 国产91久久九九免费精品无码| 天天综合91| 热久久无毒不卡| 青青草日逼视频| 中文字幕精品资源在线| 家庭乱伦麻豆| 亚洲狠狠入| 一区二区三区四区久久视1| 婷婷五月成人| 亚洲啪啪视频一区二区| 久久精品一区二区三区四区五区| 色爽——AV| 日韩人妻网站| 日本在线一二 | 99r九九| 亚洲操人| 17c在线成人免费A片观看| 91精品久久久久| 中出后入| 久草资源在线视频官方总站日韩丝袜美腿 | 国产又大又粗又长视频在线| 日韩九区| 三级网色| 东京热视频网| 人妻铁牛TV| 国产精品一区在线播放| 色大香蕉97N| 亚洲精品丝袜| 国产玖玖| 色五月婷婷中文字幕| 乱伦Av网| 日韩av不卡在线看| 熟女探花啪啪| 最新制服中文第一页| 天天躁夜夜躁狠狠躁AV| 1204av韩国| 免费人人搞97| 中文字幕日韩国产传媒欧美精品| 国产成人精品日本亚洲语言| 五月天啪啪| 成人老鸭窝人人在线视频| 一起草AV| 国产三级电影免费观看| 亚洲欧美在线观看免费| 国产超碰AV在线精品| 激情综合网激情综合| 欧美色图亚洲色| 欧美激情视频一区二区| 亚洲天天天| 99在线精品观看视频中文| 91精品少妇搡搡搡| 国产欧美黑人丰满在线| www.高清无码诱惑一区.com| 国产大片精久久久久久| 午夜激情床戏激情| 欧美亚洲国内自拍| 青青草视频这里只有精品| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 极品少妇久久久| 91久热| 舔人妻中文免费视频| 2020天天色综合| 日韩精品亚洲一二三| 欧美三级偷拍| 天天综合色图| 97精品一区二区三区免费| 2017天天拍大香蕉| 亚洲图片激情小说| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 999久久久| 色哟哟 日韩精品| 亚洲无码超碰免费| 免费福利视频中文字幕| 久久久久亚洲av综合波多野制衣| 亚洲欧美日韩免费电影| 377p欧洲日本亚洲大胆| 久久鲁干| 天天色粽合合合合合合合|