精品欧美一区二区三区在线观看 _久久久久国色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在线 | 亚洲| 国产剧情一区| 日韩精品一区二区三区三区免费| 国产一区二区三区精彩视频| 国产最新在线| 2021国产精品久久精品| 成人国产精品久久久| 国产成人免费观看视频| 先锋资源久久| 亚洲色图色老头| 91超薄肉色丝袜交足高跟凉鞋| 色老太综合网| 亚洲二区在线观看| 在线观看成人av| 色中色在线视频| 国产91丝袜在线播放| 国产精品男人爽免费视频1| 国产第一页在线播放| 日韩久久精品| 亚洲视频在线观看免费| 91传媒理伦片在线观看| 成人在线日韩| 欧美色老头old∨ideo| 97超碰青青草| 草草影院在线| 亚洲精品v日韩精品| 一级二级三级欧美| yourporn在线观看中文站| av成人免费在线| 成人综合av网| 亚洲精品久久久久久无码色欲四季 | 成人精品国产福利| 亚洲aⅴ日韩av电影在线观看| 91丨九色丨海角社区| 玖玖精品视频| 欧美性一区二区三区| 国产午夜久久久| 欧美午夜影院| 欧美高清一级大片| 国产亚洲精品码| 亚洲免费二区| 久久国产加勒比精品无码| 激情五月激情综合| 仙踪林久久久久久久999| 日韩最新免费不卡| 午夜精品一区二区三级视频| 日韩精品一卡| 不卡av日日日| 久久久久久免费观看| 欧美久久一级| 97精品国产97久久久久久春色| 国产一级二级三级| 国产精品www994| 97国产精品视频| 毛片基地在线观看| 久久国产日韩| 国产精品欧美亚洲777777| 中文字幕视频二区| 久久99久久久欧美国产| 91高跟黑色丝袜呻吟在线观看| 国产极品999| 成人免费毛片片v| 精品综合久久| 国产高清视频在线| 亚洲欧美区自拍先锋| 精品国偷自产一区二区三区| 黄视频免费在线看| 日本大香伊一区二区三区| 网站一区二区三区| 秋霞午夜一区二区三区视频| 亚洲国产精品999| caopeng视频| 我不卡神马影院| 久久久久久美女| 在线永久看片免费的视频| 蜜桃久久久久久久| 国产精品.com| 韩国中文免费在线视频| 综合久久给合久久狠狠狠97色 | 婷婷丁香在线| 日韩欧美在线视频日韩欧美在线视频| 国产真人无码作爱视频免费| 精品视频一二| 亚洲欧美在线播放| 中文字幕手机在线观看| 国产亚洲福利| 成人亲热视频网站| 午夜在线观看视频18| 国产精品乱码久久久久久| 丁香花在线影院观看在线播放 | 97免费资源站| 免费国产在线视频| 一区二区三区在线观看欧美| 国产成人亚洲精品无码h在线| 久久av日韩| 亚洲第一区中文字幕| 久久久精品成人| 亚洲狠狠婷婷| 成人精品一区二区三区| 色播色播色播色播色播在线 | 8x8ⅹ国产精品一区二区二区| 成人免费影院| 欧美成人免费网站| 黄色片网站在线播放| 亚洲一区二区成人| 1卡2卡3卡精品视频| 福利视频在线看| 欧美午夜视频一区二区| 国产a视频免费观看| 6080成人| 欧美精品在线播放| 最新国产中文字幕| 26uuu欧美日本| 欧美亚洲色图视频| www欧美在线观看| 国产亚洲精品久久久久久牛牛| 国产午夜精品无码| 高清国产一区二区三区| 久久天天东北熟女毛茸茸| 在线看欧美视频| 亚洲久久久久久久久久| 日本三级视频在线| 国产+成+人+亚洲欧洲自线| 日本xxx免费| 电影中文字幕一区二区| 最近2019年好看中文字幕视频| 亚洲AV无码成人精品区东京热| 成人网在线免费视频| 成人高清dvd| 国产精品2区| 久久亚洲国产成人| 91在线你懂的| 国产精品成人免费精品自在线观看| 日韩视频第二页| 久久大胆人体视频| 97欧美精品一区二区三区| 好吊色一区二区| 亚洲一区二区在线播放相泽| 欧美丰满熟妇bbb久久久| 国产精品多人| 国产精品区一区二区三在线播放 | 日韩午夜电影网| 国产精品免费在线免费| av福利在线播放| 欧美色网站导航| 精品在线观看一区| 激情五月播播久久久精品| 伊人久久青草| 警花av一区二区三区| 欧美韩国理论所午夜片917电影| www.久久成人| 天天爽夜夜爽夜夜爽精品视频| 美女搡bbb又爽又猛又黄www| 91久久中文| 蜜桃视频日韩| 欧美性生活一级| 欧美精品在线视频观看| 黄色一级大片在线免费看国产| 精品久久久久久中文字幕| 9.1成人看片免费版| 日本怡春院一区二区| 中文字幕日韩一区二区三区 | 日韩激情视频网站| 亚洲最新在线| 超碰精品在线观看| 欧美一区亚洲二区| 网友自拍亚洲| 日韩最新av在线| 亚洲乱色熟女一区二区三区| 午夜精品久久久久久久99樱桃| 日本高清www| 九九九久久久精品| av免费观看大全| 精品久久久亚洲| 成人在线中文字幕| 人狥杂交一区欧美二区| 中文字幕欧美日韩在线| www久久久久久| 日韩欧美国产视频| 成熟的女同志hd| 成人国产一区二区三区精品| 日韩av在线综合| 亚洲天堂一区二区三区四区| 久久国产手机看片| 亚洲成人精品综合在线| 26uuu另类亚洲欧美日本老年| 色开心亚洲综合| 亚洲国产欧美一区| 91久久精品无码一区二区| 精品久久久久久久久久久| 大胸美女被爆操| 成人国产亚洲欧美成人综合网 | 国产视频欧美视频| 国产精品久久久久久久久毛片 | 啪啪小视频网站| 亚洲永久免费av| 欧美成人短视频| 99久久伊人网影院| 婷婷中文字幕在线观看| 男人的天堂亚洲在线| 久久www视频| 欧美gayvideo| 奇米视频888战线精品播放| 亚州一区二区| 国产一区私人高清影院| 色是在线视频| 久久久久久免费精品| 免费网站看v片在线a| 精品一区二区三区三区| 亚洲欧美激情在线观看| 欧美精品粉嫩高潮一区二区| 亚洲欧美一二三区| 婷婷中文字幕一区三区| 超碰在线国产97| 中文字幕一区二区三区蜜月| 人妻体内射精一区二区| av亚洲精华国产精华精| 师生出轨h灌满了1v1| 狠狠网亚洲精品| 午夜两性免费视频| 三级欧美在线一区| 国产xxxxx在线观看| 伊人影院久久| 可以看毛片的网址| 欧美久久一级| 日韩欧美视频免费在线观看| 亚洲九九在线| 黄色免费高清视频| 99tv成人| 亚洲天堂av免费在线观看| 北条麻妃国产九九九精品小说| 欧美一区二区三区精美影视 | 天天爽夜夜爽夜夜爽精品| 一区二区日韩av| 久久免费视频6| 亚洲综合在线观看视频| 久草视频免费播放| 亚洲综合成人网| 国产精品白浆一区二小说| 亚洲二区视频在线| 国产精品999在线观看| 粉嫩av一区二区三区免费野| www成人在线| 日本精品视频一区二区| 亚洲第一区av| 91精选在线观看| 性中国xxx极品hd| 亚洲成人av中文字幕| 亚洲 小说区 图片区 都市| 国产手机视频精品| 二区在线视频| 蜜月aⅴ免费一区二区三区| 日韩av毛片| 欧美一级片在线播放| 欧美人体一区二区三区| 国产美女扒开尿口久久久| 成人在线精品| 国产精品免费一区二区三区在线观看 | 99电影网电视剧在线观看| 超碰一区二区三区| 欧美日韩综合久久| 91精品国产调教在线观看| 成年在线观看视频| 另类av一区二区| 奇米影视四色在线| 国产精品综合二区| 人妻在线日韩免费视频| 欧美国产激情一区二区三区蜜月| av最新在线观看| 精品国产乱码久久久久酒店| 日本一本在线观看| 欧美一区二区三区电影| 天堂中文在线8| 日韩视频免费观看| 爱搞国产精品| 国产在线观看一区二区三区| 99a精品视频在线观看| 欧洲精品在线一区| 欧美精选一区| 一道本视频在线观看| 国产成人精品免费| 婷婷色一区二区三区| 一级做a爱片久久| 97人妻精品视频一区| 日韩欧美二区三区| 国产人成在线视频| 欧美精品激情blacked18| 日韩av一级| 国产精品二区在线| 视频在线不卡免费观看| 老太脱裤子让老头玩xxxxx| 蜜桃精品视频在线| 亚洲最大免费视频| 亚洲免费在线电影| 亚洲图片欧美日韩| 亚洲国产精品人久久电影| 免费看美女视频在线网站| 欧洲日本亚洲国产区| 免费精品一区二区三区在线观看| 欧美日韩国产综合视频在线| 欧美日韩伊人| 久久久久xxxx| 中文字幕不卡一区| 国产高清中文字幕| 精品国产电影一区二区| 男人的天堂在线视频免费观看 | 亚洲欧洲综合另类| 国产字幕在线观看| 日韩大陆欧美高清视频区| 日本一本在线免费福利| 国产美女高潮久久白浆| 九一精品国产| 97国产在线播放| 高清不卡在线观看av| 青青青在线免费观看| 91精品国产综合久久小美女| 爱久久·www| 国产精品1234| 怕怕欧美视频免费大全| 97国产精东麻豆人妻电影| 成人黄色777网| 伊人365影院| 日韩欧美国产综合一区| jizz性欧美| 成人www视频在线观看| 日本久久一二三四| 国产欧美在线一区| 97精品久久久久中文字幕| 日本午夜小视频| 亚洲第一黄色网| 九色porny丨首页入口在线| 国产精品视频免费一区| 精品91视频| 亚洲精品久久一区二区三区777 | 欧美国产日韩一区二区| 久久爱www.| 视色,视色影院,视色影库,视色网| 久久精品72免费观看| 国产suv精品一区二区68| 欧美日韩激情在线| 欧美成年黄网站色视频| 国产欧美一区二区三区在线看| 欧美精选视频在线观看| 欧美自拍小视频| 国产精品夫妻自拍| 国产精品久久无码一三区| 久久视频在线视频| 亚洲综合网狠久久| 成品人视频ww入口| 久久久综合网站| 97人妻精品视频一区| 久久国产一区二区三区| 欧美电影在线观看一区| 免费一级淫片aaa片毛片a级| kk眼镜猥琐国模调教系列一区二区| 欧美日韩精品区| 在线成人中文字幕| 在线成人免费| 大陆av在线播放| 久久久国产综合精品女国产盗摄| 成人a v视频| 欧美成人午夜免费视在线看片| 草草视频在线一区二区| 免费高清在线观看免费| 中文字幕欧美区| www.黄色小说.com| 欧美在线一级va免费观看| 日本在线电影一区二区三区| 图片区乱熟图片区亚洲| 亚洲成精国产精品女| 国产理论电影在线观看| 亚洲精品日韩激情在线电影| 亚洲三级国产| 五月天免费网站| 欧美精品一区二区三区很污很色的| 特黄毛片在线观看| 麻豆中文字幕在线观看| 白白色亚洲国产精品| 最新国产中文字幕| 欧美激情一区二区三区成人| 欧美精品一区二区三区精品| 日韩精品――色哟哟| 91福利视频久久久久| 污的网站在线观看| 视频一区二区精品| 成人黄色网址在线观看| 亚洲一级黄色大片| 2018日韩中文字幕| 午夜国产欧美理论在线播放 | 久久黄色片网站| 亚洲永久免费视频|