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

開發效率提升三倍!動態腳本引擎QLExpress,實現各種復雜的業務規則

開發 前端
QLExpress 是阿里巴巴開源的動態腳本引擎,專為電商場景設計。它的核心能力就是動態執行腳本,支持 Java 語法,還能調用 Java 對象和方法。簡單來說,你可以把復雜的業務邏輯寫成腳本,讓 QLExpress 幫你執行,就像在 Java 代碼里嵌入了一個 “小腦袋”,專門處理變化頻繁的規則。

兄弟們,今天咱們聊個硬核的 —— 動態腳本引擎 QLExpress。 這玩意兒堪稱代碼界的瑞士軍刀,能讓你在處理業務規則時像吃火鍋一樣爽:規則隨時調,邏輯隨便改,代碼不用重啟,直接原地起飛。別以為這是吹牛,聽我慢慢嘮。

一、為什么程序員都需要一個「腳本引擎」?

想象一下,你是某電商平臺的后端開發。 雙十一期間,運營三天兩頭改促銷規則:今天滿 300 減 50,明天第二件半價,后天還得疊加地區優惠券。每次改規則都得改代碼、打包、部署,運維兄弟都快被你煩死了。更絕的是,凌晨三點運營突然說 “再加上新用戶首單立減 20%”,你只能頂著黑眼圈爬起來改代碼 —— 這場景,是不是很熟悉?

這就是傳統硬編碼的痛:規則寫死在代碼里,改一次傷筋動骨。 而動態腳本引擎的作用,就是把這些規則從 Java 代碼里摳出來,寫成腳本文件或者存到數據庫里。業務方改規則時,你只需要在后臺改腳本,不用動一行 Java 代碼,改完直接生效。這就好比把家里的固定電話換成了智能手機 —— 靈活性直接從石器時代跳到了 5G 時代。

二、QLExpress:阿里親兒子,專治各種業務規則不服

1. QLExpress 是啥?

QLExpress 是阿里巴巴開源的動態腳本引擎,專為電商場景設計。它的核心能力就是動態執行腳本,支持 Java 語法,還能調用 Java 對象和方法。簡單來說,你可以把復雜的業務邏輯寫成腳本,讓 QLExpress 幫你執行,就像在 Java 代碼里嵌入了一個 “小腦袋”,專門處理變化頻繁的規則。

2. QLExpress 的四大金剛特性

  • 線程安全,高并發不慌

QLExpress 天生就是線程安全的,用ThreadLocal管理臨時變量,就算 1000 個線程同時執行腳本,也不會互相打架。這就好比給每個線程發了一把專屬的瑞士軍刀,各用各的,互不干擾。

  • 性能炸裂,執行速度飛起

QLExpress 把編譯后的腳本緩存到本地,下次執行直接用緩存,速度和 Groovy 差不多。舉個栗子:執行 10 萬次1010+1+23+5*2這樣的表達式,耗時不到 200 毫秒。這速度,比你寫if-else鏈式判斷快多了。

  • 弱類型語言,規則隨便浪

不用像 Java 那樣嚴格定義變量類型,寫腳本就像寫 JavaScript 一樣自由。比如def discount = price * 0.8,不管price是整數還是浮點數,QLExpress 都能自動處理。這就像給程序員松了綁 —— 規則怎么靈活怎么來。

  • 安全控制,腳本不敢作妖

QLExpress 提供了黑名單和白名單機制,能禁止腳本調用危險方法(比如Runtime.exec),防止惡意代碼搞破壞。這就像給腳本引擎戴了個 “緊箍咒”—— 你可以浪,但不能出圈。

3. 和其他引擎比,QLExpress 贏在哪?

  • 對比 Drools:Drools 適合復雜規則引擎,但體積大、學習成本高。QLExpress 更輕量(250k 的 jar 包),適合中小規模的規則場景。
  • 對比 Groovy:Groovy 是全功能腳本語言,但容易產生 OOM 問題。QLExpress 專注于規則執行,線程安全且性能更穩定。
  • 對比 Aviator:Aviator 更適合數學表達式計算,QLExpress 支持更復雜的業務邏輯,還能調用 Java 對象和方法。

三、手把手教你用 QLExpress 寫第一個腳本

1. 引入依賴,開啟你的瑞士軍刀

在 Maven 項目的pom.xml里加這行:

<dependency>
    <groupId>com.ql.util</groupId>
    <artifactId>qlExpress</artifactId>
    <version>3.3.1</version>
</dependency>

注意:QLExpress 4.0 版本已經在 Beta 階段,功能更強大,但目前 3.3.1 還是最穩定的版本。

2. 寫個腳本,算個折扣

假設你要實現 “滿 300 減 50” 的促銷規則,腳本可以這么寫:

ExpressRunner runner = new ExpressRunner();
DefaultContext<String, Object> context = new DefaultContext<>();
context.put("price", 350); // 商品總價
String script = "def discount = 0;" +
                "if (price >= 300) {" +
                "    discount = 50;" +
                "}" +
                "return price - discount;";
Object result = runner.execute(script, context, null, true, false);
System.out.println("最終價格:" + result); // 輸出300

關鍵參數解釋:

  • isCache=true:緩存編譯后的腳本,下次執行更快。
  • false:不打印調試日志,生產環境建議設為false。

3. 調用 Java 對象,腳本也能搞事情

假設你有個User類:

public class User {
    private String name;
    private int age;
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public int getAge() {
        return age;
    }
}

在腳本里可以直接調用它的方法:

User user = new User("張三", 20);
context.put("user", user);
String script = "if (user.getAge() >= 18) {" +
                "    return '成年用戶';" +
                "} else {" +
                "    return '未成年用戶';" +
                "}";
Object result = runner.execute(script, context, null, true, false);
System.out.println(result); // 輸出"成年用戶"

這就像給腳本開了個后門——Java 對象的所有公開方法,腳本都能直接調用。

四、高級玩法:讓 QLExpress 成為你的左膀右臂

1. 自定義函數,讓腳本更靈活

你可以在腳本里定義函數,實現復雜邏輯。比如寫個計算運費的函數:

String script = "function calculateFreight(weight) {" +
                "    if (weight <= 1) {" +
                "        return 8;" +
                "    } else {" +
                "        return 8 + (weight - 1) * 5;" +
                "    }" +
                "};" +
                "return calculateFreight(2.5);"; // 計算2.5kg的運費
Object result = runner.execute(script, context, null, true, false);
System.out.println("運費:" + result); // 輸出18

這就像給腳本加了個工具箱—— 常用邏輯封裝成函數,隨用隨取。

2. 集成 Spring,和 IoC 容器無縫對接

如果你用 Spring 管理 Bean,可以自定義一個上下文類,讓腳本直接獲取 Spring Bean:

public class SpringQLExpressContext extends HashMap<String, Object> implements IExpressContext<String, Object> {
    private final ApplicationContext applicationContext;
    public SpringQLExpressContext(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }
    @Override
    public Object get(Object name) {
        Object result = super.get(name);
        if (result == null && applicationContext.containsBean((String) name)) {
            result = applicationContext.getBean((String) name);
        }
        return result;
    }
}

在腳本里直接調用 Spring Bean 的方法:

String script = "userService.queryUserById(123).getName();";
Object result = runner.execute(script, new SpringQLExpressContext(applicationContext), null, true, false);

這就像把腳本引擎裝進了 Spring 的彈藥庫—— 所有 Bean 任你調用。

3. 性能優化,讓腳本飛起來

  • 緩存 ExpressRunner:在 Spring 里配置成單例 Bean,避免重復創建。
  • 開啟緩存:execute方法的isCache參數設為true,緩存編譯結果。
  • 復用上下文:同一個DefaultContext可以重復使用,減少對象創建開銷。

4. 安全控制,防止腳本搞破壞

  • 黑名單機制:禁止腳本調用危險方法:
QLExpressRunStrategy.setForbidInvokeSecurityRiskMethods(true);
// 或者添加自定義黑名單
QLExpressRunStrategy.addSecurityRiskMethod("java.lang.Runtime.exec");
  • 白名單模式:只允許腳本使用指定的類和方法:
runner.addImport("com.example.service.OrderService"); // 允許導入指定類
runner.addFunctionOfClassMethod("calculateDiscount", OrderService.class, "calculateDiscount", new Class<?>[] {double.class});
  • 沙箱隔離:使用SandboxClassLoader限制腳本的類加載權限。

五、實際案例:電商促銷規則動態化

場景描述

某電商平臺需要實現以下促銷規則:

  1. 新用戶首單立減 20%。
  2. 滿 300 減 50,可與其他優惠疊加。
  3. 地區優惠券:北京用戶額外減 30 元。

傳統方案的痛點

  • 每次改規則都要改代碼、重啟服務。
  • 多個規則疊加時,if-else嵌套成 “意大利面條”,維護困難。

QLExpress 方案

定義規則腳本:

String script = "http:// 新用戶首單優惠\n" +
                "def discount = 0;\n" +
                "if (isNewUser) {\n" +
                " discount += price * 0.2;\n" +
                "}\n" +
                "\n" +
                "http:// 滿減優惠\n" +
                "if (price >= 300) {\n" +
                " discount += 50;\n" +
                "}\n" +
                "\n" +
                "http:// 地區優惠券\n" +
                "if (region == '北京') {\n" +
                " discount += 30;\n" +
                "}\n" +
                "\n" +
                "return Math.max(0, price - discount);";

動態加載腳本:

// 從數據庫或文件中讀取腳本
String script = ruleRepository.getScriptById("promotion_rule");
Object result = runner.execute(script, context, null, true, false);

業務方修改規則:

  • 運營通過后臺修改腳本,無需開發介入。
  • 例如,將 “滿 300 減 50” 改為 “滿 299 減 49”,直接改腳本里的數字即可。

效果對比

指標

傳統方案

QLExpress 方案

規則修改耗時

小時級(改代碼 + 部署)

分鐘級(直接改腳本)

代碼復雜度

高(大量if-else)

低(邏輯全在腳本里)

擴展性

差(新增規則需改代碼)

好(直接新增腳本)

六、常見問題及解決方案

1. 線程安全問題

  • 現象:多個線程同時執行腳本時,變量互相干擾。
  • 解決:QLExpress 本身是線程安全的,但要確保每個線程使用獨立的DefaultContext。
// 正確做法:每個線程創建自己的上下文
new Thread(() -> {
    DefaultContext<String, Object> context = new DefaultContext<>();
    context.put("price", 300);
    runner.execute(script, context, null, true, false);
}).start();

2. 類型轉換錯誤

  • 現象:腳本里的變量類型和 Java 代碼不一致,導致報錯。
  • 解決:QLExpress 是弱類型語言,但要注意隱式轉換的坑。比如:
// 腳本中
def price = "300"; // 字符串
return price * 0.8; // 會報錯,因為字符串不能相乘

正確做法是顯式轉換類型:

def price = "300".toDouble(); return price * 0.8; // 正確

3. 性能瓶頸

  • 現象:執行復雜腳本時速度變慢。
  • 解決

a.開啟緩存:isCache=true。

b.優化腳本邏輯,避免不必要的循環和計算。

c.使用ExpressRunner的單例模式,減少重復編譯。

4. 安全漏洞

  • 現象:腳本被注入惡意代碼,執行危險操作。
  • 解決

a.啟用黑名單:QLExpressRunStrategy.setForbidInvokeSecurityRiskMethods(true)。

b.限制腳本權限,只允許調用白名單中的類和方法。

c.避免讓用戶直接輸入腳本內容,必須經過安全過濾。

七、總結:QLExpress 到底香在哪?

1. 開發效率提升 3 倍

規則動態化,改腳本就能改邏輯,不用改 Java 代碼。業務方自己就能維護規則,開發人員從 “改代碼工具人” 變成 “規則架構師”。

2. 代碼復雜度降低 50%

復雜業務邏輯從 Java 代碼中剝離,代碼結構更清晰,維護成本大幅降低。

3. 靈活性 MAX

支持熱更新,規則實時生效。電商大促、金融風控等場景下,規則隨時調,系統不用停。

4. 安全可控

多級安全控制機制,防止腳本搞破壞。既能享受動態化的便利,又能保證系統安全。

八、最后嘮叨兩句

QLExpress 就像程序員的 “外掛”—— 用得好,能讓你在業務需求的戰場上所向披靡;用得不好,也可能被腳本坑得懷疑人生。關鍵是要把握好動態化和安全性的平衡,該用腳本的地方大膽用,不該開放的權限堅決封死。

動態腳本引擎不是銀彈,但它是你應對業務變化的終極武器。當你的同事還在熬夜改代碼時,你可以泡杯咖啡,在后臺改兩行腳本,然后優雅地提交 PR—— 這,就是 QLExpress 的魅力。

責任編輯:姜華 來源: 石杉的架構筆記
相關推薦

2025-02-04 11:30:10

2025-02-07 08:16:26

Java開發者代碼

2025-09-08 02:00:00

2025-04-17 02:00:00

2014-07-17 14:08:37

阿里云

2009-05-11 18:40:31

內存寶德機架

2021-09-08 08:00:00

PyPolars數據開源

2009-08-03 14:21:57

DDR3服務器內存

2022-09-23 17:17:33

WSL2鴻蒙

2012-11-14 14:46:52

惠普服務器Integrity關鍵業務

2009-07-24 17:08:02

IBMPower

2022-07-15 09:25:01

AI制藥

2022-04-12 18:18:47

戴爾

2023-03-09 07:51:23

性能提升數據庫

2013-02-22 09:36:32

ImpalaHadoop大數據Cloudera

2023-12-28 08:01:59

2025-03-28 10:51:17

Python開發Python3.13

2020-09-13 13:30:01

命令開發代碼

2021-08-03 14:12:57

API攻擊流量安全
點贊
收藏

51CTO技術棧公眾號

成人在线免费看黄| 91麻豆成人精品国产免费网站| 超碰97久久国产精品牛牛| 亚洲午夜免费福利视频| 欧美综合激情| av一区二区三| 老鸭窝91久久精品色噜噜导演| 少妇高潮 亚洲精品| 老熟女高潮一区二区三区| 国产伦精品一区二区三区视频金莲| 中文字幕精品综合| 国产精品久久久久久久免费大片| 日本高清不卡码| 午夜国产欧美理论在线播放| 日韩精品久久久久久福利| 国产wwwxx| 欧美男人天堂| 悠悠色在线精品| 台湾成人av| 少妇高潮一区二区三区69| 美国一区二区三区在线播放 | 欧美剧情片在线观看| 成人午夜视频在线观看免费| 午夜免费播放观看在线视频| 91丝袜美腿高跟国产极品老师| 亚洲一区二区三区乱码aⅴ| 老熟妇仑乱一区二区av| 亚洲高清自拍| 久久国产精品偷| 亚洲一二三精品| 亚洲成人一品| 亚洲国产精久久久久久 | 精品中文字幕在线2019| www.日本高清视频| 国产精品一在线观看| 亚洲精品成a人在线观看| 国产成人精品一区二区三区在线观看| 青青国产精品| 欧美日韩中文另类| 男人天堂成人在线| 黑人巨大亚洲一区二区久 | 91成人在线观看喷潮教学| 99在线视频观看| 亚洲人成精品久久久久久 | 亚洲精品一区二区三区影院忠贞| 日韩中出av| 日韩成人免费视频| 日韩片在线观看| 精品无人区一区二区| 亚洲第一天堂无码专区| 日本性生活一级片| 久久97久久97精品免视看秋霞| 欧美r级在线观看| 伊人av在线播放| 91午夜精品| 亚洲大胆人体视频| 久久午夜夜伦鲁鲁片| 天堂综合网久久| 亚洲欧美中文日韩在线| 国精产品一区二区三区| 欧美一区三区| 久久精品国产96久久久香蕉| 欧美一区免费观看| 海角社区69精品视频| 欧美精品www| 亚洲精品1区2区3区| 久久中文在线| 成人欧美在线视频| 亚洲精品人妻无码| 91视频你懂的| 亚洲精品乱码久久久久久蜜桃91 | 日韩成人精品一区| 久久视频免费在线播放| 久久久久久久久久久久久久免费看| 欧美激情麻豆| 伊人久久久久久久久久久久久| 大吊一区二区三区| 欧美精品大片| 奇米成人av国产一区二区三区| 午夜精品一区二| 久久99国产精品免费网站| 2019国产精品视频| 日韩av免费观影| 国产精品美女久久久久久久久| 色爽爽爽爽爽爽爽爽| segui88久久综合| 色狠狠一区二区| 欧美熟妇精品一区二区| 国产精品一区高清| 欧美激情视频网站| 999视频在线| 粉嫩在线一区二区三区视频| 欧美久久久久久| 国产高清一区二区三区视频 | 91蜜桃臀久久一区二区| 精品在线欧美视频| 国产美女久久久久久| 国产欧美三级| 亚洲伊人久久综合| 免费福利在线视频| 亚洲欧美视频在线观看视频| 欧美日韩亚洲一| 曰本一区二区| 亚洲色图五月天| 久久精品视频9| 美女www一区二区| 精品蜜桃传媒| av网站免费在线观看| 色综合久久中文字幕综合网| 成人三级做爰av| 成人情趣视频网站| 91国语精品自产拍在线观看性色| 国产精品一级二级| 国产嫩草影院久久久久| 国产综合av在线| 亚洲成人影音| 久久夜色精品国产亚洲aⅴ| 无码人妻一区二区三区免费| 懂色av噜噜一区二区三区av| 伊人色综合久久天天五月婷| 户外露出一区二区三区| 亚洲国产成人精品一区二区| 小早川怜子一区二区的演员表| 日韩激情av在线| 久久久久资源| 99热99re6国产在线播放| 欧美一区二区三区成人| 国产传媒视频在线| 日韩成人av影视| 欧美一进一出视频| 精品国产第一福利网站| 日韩一区二区电影| 日韩av手机在线免费观看| 日韩激情av在线| 五月天色一区| 成人黄色图片网站| 中文字幕亚洲一区二区三区五十路 | 日本精品性网站在线观看| 日韩有码第一页| 亚洲444eee在线观看| 人妻激情偷乱频一区二区三区| 一区二区三区国产精华| 成人av在线亚洲| 免费网站成人| 91.麻豆视频| 国产在线一卡二卡| 国产一区二区h| 加勒比海盗1在线观看免费国语版| 国产福利亚洲| 久久精品视频va| 国产色综合视频| 一区二区三区在线视频免费观看| 手机在线播放av| 国自产拍偷拍福利精品免费一| 国产精品精品软件视频| 国内激情视频在线观看| 国产偷国产偷亚洲清高网站| 丁香六月婷婷综合| 欧美激情一区三区| 国产欧美一区二| 欧美精品午夜| 精品人伦一区二区三区| 黄色综合网址| 久久久国产精品亚洲一区| 国产女人18毛片水真多| 一个色在线综合| 粉嫩av懂色av蜜臀av分享| 麻豆久久精品| 一区二区三区|亚洲午夜| 99热这里有精品| 久久全国免费视频| 国产午夜在线视频| 日韩美女一区二区三区四区| 六月丁香在线视频| 国产精品久久久久永久免费观看| 欧美性猛交xxxx乱大交91| 亚洲人成高清| 亚洲国内在线| 成人av动漫| 国产成人在线播放| 特级毛片在线| 亚洲深夜福利在线| 国产美女主播在线观看| 亚洲婷婷在线视频| 91精品国产自产| 精品在线播放免费| 欧美视频在线播放一区| 四季av一区二区三区免费观看| 亚洲一区制服诱惑| 欧美亚洲韩国| 欧美人与性动交| 国产毛片av在线| 日韩免费高清视频| 国产男人搡女人免费视频| 一卡二卡三卡日韩欧美| 亚洲一二三精品| av成人免费在线观看| 黄色小视频免费网站| 亚洲美女啪啪| 99亚洲国产精品| 国产亚洲精品美女久久久久久久久久| 亚洲r级在线观看| 日韩成人高清| 国外成人在线视频| 成人福利片网站| 伊人激情综合网| 五月婷婷开心中文字幕| 日韩一区二区免费在线电影| 波多野结衣一二区| 精品国产91乱高清在线观看| 免费看特级毛片| 国产精品色眯眯| 国产免费一区二区三区网站免费| 国产精品中文字幕一区二区三区| www.激情小说.com| 亚洲一区二区网站| 国产精品成人久久电影| 91影院成人| 欧美一区二区影视| 校花撩起jk露出白色内裤国产精品| 91久久夜色精品国产网站| 午夜精品久久久久久久久久蜜桃| 久久久久日韩精品久久久男男| 麻豆传媒在线观看| 怡红院精品视频| 成人在线免费观看| 国产丝袜高跟一区| 日本一区二区三区在线观看视频| 精品国产sm最大网站免费看| 国产成人久久精品77777综合| 精品视频在线免费观看| 91黑人精品一区二区三区| 日韩欧美高清视频| 色婷婷av国产精品| 亚洲18女电影在线观看| 国产一级中文字幕| 亚洲一区影音先锋| 久草免费在线观看视频| 一区二区三区小说| 欧美日韩在线视频免费| 亚洲欧美福利一区二区| 国产盗摄一区二区三区在线| 欧美国产精品一区二区| 大吊一区二区三区| 中文字幕一区日韩精品欧美| 欧美一区二区三区观看| 中文字幕在线观看一区| 日韩在线视频免费看| 国产精品免费aⅴ片在线观看| av片在线免费看| 日韩一区在线看| 五月天婷婷色综合| 亚洲一区在线视频| 亚洲一区欧美在线| 色婷婷国产精品| 中文字幕+乱码+中文字幕明步| 欧美色窝79yyyycom| 一级特黄aa大片| 欧美一级片在线| 黑人乱码一区二区三区av| 亚洲第一福利视频| 青草久久伊人| 神马国产精品影院av| 国产美女av在线| 欧美激情亚洲精品| 亚洲美女尤物影院| 国产精品欧美风情| 欧美成人一级| 久久福利电影| 日韩夫妻性生活xx| 欧美日韩dvd| 国产精品综合| 手机免费av片| 97精品视频在线观看自产线路二| 人妻少妇无码精品视频区| 18涩涩午夜精品.www| 精品一区二区三区人妻| 日韩欧美在线视频观看| 一女二男一黄一片| 亚洲国产精品小视频| 国产一二三区在线| 欧美日韩不卡合集视频| av日韩亚洲| 亚洲free嫩bbb| 久久成人av| 一本大道东京热无码aⅴ| 亚洲一区免费| 在线成人免费av| 久久精品人人做人人爽97| 欧美日韩在线视频免费播放| 一本到一区二区三区| 99久久国产免费| 亚洲午夜精品久久久久久久久久久久| 在线视频中文字幕第一页| 啪一啪鲁一鲁2019在线视频| 国产精一区二区| 日韩成人在线资源| 1024日韩| 亚洲一区二区偷拍| 久久精品水蜜桃av综合天堂| 欧美黑吊大战白妞| 欧美日精品一区视频| 婷婷色在线视频| 欧美人成在线视频| 欧美久久久网站| 欧美日韩在线一二三| 亚洲天堂激情| 久久精品一卡二卡| 国产精品国产三级国产aⅴ入口| 日韩久久久久久久久| 欧美一区二区三区的| 777电影在线观看| 欧美最猛性xxxx| 伦理一区二区三区| 800av在线免费观看| 久久99精品久久久久久久久久久久 | 福利在线一区| 艳母动漫在线观看| 免费av网站大全久久| 国产精品成人一区二区三区电影毛片 | avtt天堂在线| 欧美日韩免费一区二区三区| 日本一区高清| 26uuu另类亚洲欧美日本老年| 久久三级中文| 青青在线免费视频| 黑人巨大精品欧美黑白配亚洲| 久久成人激情视频| 色婷婷久久一区二区三区麻豆| 丁香六月天婷婷| 欧美激情高清视频| 国产视频一区二区在线播放| 一区二区三区电影| 久久国产精品99久久人人澡| 免费看的黄色网| 在线观看亚洲成人| 麻豆国产在线播放| 欧美一级片一区| 在线看成人短视频| www.四虎成人| 久久综合av免费| 99久久久久久久久| 亚洲天堂视频在线观看| 成人日韩在线观看| 日韩电影大全在线观看| 日韩av高清在线观看| 女人黄色一级片| 欧美日韩久久不卡| 免费黄色网址在线观看| 成人国产精品一区二区| 久久久久久久久久久妇女| 韩国一区二区在线播放| 亚洲男人的天堂av| 亚洲精品字幕在线| 午夜精品久久久久久久男人的天堂 | 亚洲第一区第二区| 亚洲少妇视频| 深夜福利成人| 久久成人免费网| 永久看片925tv| 精品久久久久久久人人人人传媒 | 4438x全国最大成人| 亚洲激情av在线| 神马午夜在线观看| 国产成人在线播放| 亚洲高清资源在线观看| 日韩无码精品一区二区| 色综合天天综合狠狠| av网站在线免费观看| 亚洲mm色国产网站| 一区二区三区精品视频在线观看| 特级西西www444人体聚色 | 亚洲精品18p| 69久久夜色精品国产69| 精品国产123区| 一本之道在线视频| 午夜a成v人精品| 成人在线二区| 不卡一卡2卡3卡4卡精品在| 国产精品久久久久久久久久妞妞 | 亚洲一区二区三区精品在线| 天天干在线观看| 国产欧美日韩亚洲精品| 亚洲午夜91| 一区二区三区四区免费| 欧美一区二区网站| 午夜影院在线观看国产主播| 在线视频不卡一区二区三区| 成人免费高清在线| 亚洲天堂2021av| 97视频色精品| 外国成人免费视频| 久久久久久九九九九九| 91精品国产综合久久久久久久| 交100部在线观看| 二级片在线观看| 久久久久一区二区三区四区| h片在线免费看| 国产精品18久久久久久麻辣| 欧美久久成人|