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

如何采用Java構建逼真的測試數據:開發人員的實踐指南

譯文 精選
開發
本文介紹如何構建一個簡單的API以提供可信的模擬用戶數據,該API非常適合用于測試、演示或用戶界面(UI)原型設計。因此可以摒棄模擬數據,構建逼真的模擬數據。

譯者 | 李睿

審校 | 重樓

在日常開發工作中,無論是后端工程師還是API開發人員,幾乎都會面臨一個共同的需求:如何獲取高質量的模擬數據。

無論是在測試新的API、為了演示填充數據庫,還是讓單元測試用例更加貼近真實場景,都需要借助模擬數據來完成。但問題在于,很多常見的模擬數據顯得過于“生硬”和“重復”——例如反復出現的“John Doe”和“123 Main Street”。這不僅降低了測試的真實性,也在向團隊或客戶演示時影響了整體體驗。

本文將探索DataFaker和EasyRandom這兩個功能強大的Java庫,它們可以輕而易舉地生成大量且逼真的模擬數據。

這并不只是簡單地生成姓名與郵箱,還將演示如何在Spring Boot 3項目中無縫集成它們,并結合二者優勢以發揮最大作用。最終,你將學會如何構建一個可直接返回模擬數據的 REST API。

這并不是紙上談兵,而是配備了真實可用的代碼示例,確保能夠在項目中直接應用。

為什么要生成模擬數據?

開發人員通常面對這樣的現實:人工制作測試數據既耗時又容易出錯。

假設開發人員正在開發一個用戶管理系統。需要測試分頁、過濾、排序和邊緣情況(例如缺失電子郵件或者非常長的姓名)。與其人工編寫100行示例JSON,不如立即自動并即時生成,這不是更好嗎?

優質的模擬數據可以幫助開發人員:

  • 在更真實的場景中驗證其邏輯。
  • 使用“看起來真實”的數據展示原型。
  • 使用可變輸入對API或UI組件進行壓力測試。
  • 自動化單元測試,無需樣板“模擬構建器”。

因此,開發人員不再輸入人工模擬數據,而是讓DataFaker和EasyRandom來完成繁重的工作。

DataFaker:現代化以及改進版的JavaFaker

對于曾經使用過JavaFaker的開發人員來說,DataFaker 是其現代化且得到積極維護的后繼產品。

它專為現代Java 生態(Java 17+)構建,不僅性能優異,更提供了涵蓋姓名、地址、財務信息、公司數據、互聯網數據以及加密密鑰等數百種數據類別,能夠滿足多樣化的測試數據需求。

以下是一個簡單的示例:

Java

import net.datafaker.Faker;

Faker faker = new Faker();
System.out.println(faker.name().fullName());
System.out.println(faker.internet().emailAddress());
System.out.println(faker.address().fullAddress());

在運行之后,將會得到類似這樣的結果:

Plain Text

Matilde Marques
matilde.marques@techmail.com
Rua do Carmo 45, 1200-093 Lisboa

此外,通過其區域設置功能,生成的數據還能根據不同的地區動態調整,實現內容的本地化。

Java

Faker faker = new Faker(new Locale("pt"));

現在,生成的數據已經可以匹配開發人員所使用的語言和所在地區——這無疑為國際化測試帶來了極大便利。  

EasyRandom:超越字段填充的智能對象生成器

與專注于生成逼真字段數據的DataFaker不同,EasyRandom(前身為Random Beans)提供了另一種思路。

當面對包含復雜結構(如實體類或DTO)的Java對象,并希望自動填充隨機但符合規范的數據時,EasyRandom顯得尤為實用。  

可以將其視為一個智能的“對象構建引擎”:它不僅能填充基本類型字段,還能自動處理嵌套對象、集合(如List、Map)等復雜結構,輕松生成完整且結構正確的對象實例。

示例:

Java

import org.jeasy.random.EasyRandom;

EasyRandom easyRandom = new EasyRandom();
Person randomPerson = easyRandom.nextObject(Person.class);

這將創建一個完全填充的Person實例,其中包含隨機字符串、數字,甚至嵌套屬性。

因此,DataFaker提供了真實感(例如,“John Smith, john@smith.com”),EasyRandom提供了對象結構的自動化構建能力(例如填充整個POJO圖)。

最佳實踐是將二者結合使用:讓EasyRandom創建對象,然后使用DataFake更加可信的數據來修飾特定的字段。

DataFaker與EasyRandom的結合:最佳選擇

這就是事情變得有趣的地方。

為此將創建一個小型Spring Boot REST API,它公開用于生成虛擬用戶的端點。每個用戶將有一個id、fullName、email、phone和address。你將使用DataFaker實現真實感,使用EasyRandom實現自動化。項目結構如下:

Plain Text

src/
 ├─ main/java/com/example/fakedata/
 │   ├─ Application.java
 │   ├─ config/
 │   ├─ api/
 │   ├─ controller/
 │   ├─ domain/
 │   ├─ dto/
 │   ├─ service/
 │   └─ mapper/
 └─ resources/
     └─ static/index.html

用戶域分類

為了保持簡潔的原則,使用Lombok來避免樣板代碼:

Java

 @Data
 @Builder
 public class User {
  private String id;
  private String fullName;
  private String email;
  private String phone;
  private String address;
 }

對于API響應,將使用Java記錄(Java record)實現不可變性和可讀性:

Java

public record UserDto(String id, String fullName, String email, String phone, String address) { }

服務:兩個庫相結合

這是項目的核心:

Java

 @Service
 public class DataGenService {

  private final Faker faker = new Faker(Locale.ENGLISH);
  private final EasyRandom easyRandom;

  public DataGenService() {
    EasyRandomParameters params = new EasyRandomParameters()
        .seed(System.currentTimeMillis())
        .stringLengthRange(5, 20);
    this.easyRandom = new EasyRandom(params);
  }

  public User randomUserViaDatafaker() {
    return User.builder()
        .id(UUID.randomUUID().toString())
        .fullName(faker.name().fullName())
        .email(faker.internet().emailAddress())
        .phone(faker.phoneNumber().cellPhone())
2       .address(faker.address().fullAddress())
       .build();
  }

  public User randomUserViaEasyRandom() {
    User u = easyRandom.nextObject(User.class);
    if (u.getId() == null || u.getId().isBlank()) {
      u.setId(UUID.randomUUID().toString());
    }
    u.setFullName(faker.name().fullName());
    u.setEmail(faker.internet().emailAddress());
    return u;
  }

  public List<User> manyUsers(int count, boolean easyRandomMode) {
    return IntStream.range(0, count)
        .mapToObj(i -> easyRandomMode ? randomUserViaEasyRandom() : randomUserViaDatafaker())
        .collect(Collectors.toList());
  }
 }

可以看到上例如何使用DataFaker實現真實感以及使用EasyRandom構建結構。二者的協作,就像默契配合的兩位廚師:一位專注構建菜肴的整體架構與食材搭配,另一位則精心調配風味與細節。最終,它們共同呈現出的是結構完整、細節逼真的高質量數據。

REST控制器

現在,通過REST API來使其具備可訪問性。

Java

 @RestController
 @RequestMapping("/api/users")
 public class UserController {

  private final DataGenService service;

  public UserController(DataGenService service) {
    this.service = service;
  }

  @GetMapping("/{count}")
  public ApiResponse<List<UserDto>> generateUsers(@PathVariable int count,
                                           @RequestParam(defaultValue = "false") boolean easy) {
    List<UserDto> users = service.manyUsers(count, easy)
                                 .stream().map(UserMapper::toDto)
                                 .collect(Collectors.toList());
    return ApiResponse.of(users);
  }
 }

為了使API響應一致,將所有內容包裝在一個帶有時間戳的信封中:

Java

 public record ApiResponse<T>(T data, Instant timestamp) {
  public static <T> ApiResponse<T> of(T data) {
    return new ApiResponse<>(data, Instant.now());
  }
 }

這樣,每個API調用都會返回這樣的數據:

JSON

 {
  "data": [
    {
      "id": "e7b1c37a-8b20-43c1-8ff3-b4aef8d89c3a",
      "fullName": "Lina Cordeiro",
      "email": "lina.cordeiro@example.com",
      "phone": "+351 912 345 678",
      "address": "Rua do Comércio 12, Porto"
    }
  ],
  "timestamp": "2025-10-06T13:02:45.321Z"
 }

這樣處理更加清晰且易于調試。

為什么在響應中添加時間戳?

當在分布式系統中調試請求或當客戶端記錄響應時,在有效負載中直接包含服務器時間戳有助于關聯事件——這是一個具有宏觀效益的微觀細節。

為什么兩個庫結合使用更好?

有人會問,“為什么不單獨使用DataFaker?”這是一個很好的問題:

  • DataFaker在生成逼真數據方面表現出色,但它不擅長自動填充深層次的對象結構。
  • 另一方面,EasyRandom擅長處理復雜的對象圖,但其隨機性往往顯得“過于合成”——例如像“asdlkfj@example.com”這樣缺乏真實感的示例。

將兩者結合,能夠獲得以下優勢:

  • 真實感和自動化的統一
  • 與測試框架及API的無縫集成
  • 通過配置與隨機種子確保數據的一致性

這有點像將隨機單詞生成器與翻譯器結合起來:一個提供了豐富多樣的詞匯,而另一個則將這些詞匯組織成結構完整、意義明確的篇章。

更進一步:Postman、Docker和CI/CD

完整的項目還包括:

  • 用于快速測試的Postman集合
  • 用于容器化的Dockerfile和docker-compose.yml
  • 用于自動化構建和依賴項更新的GitHub Actions CI和Dependabot設置

這使得這個小演示成為一個用于測試和學習的生產級參考項目。

如果正在指導初級開發人員或構建內部工具,這是一個展示清晰架構和可重復數據生成的推薦示例。

代碼庫:github.com/wallaceespindola/fake-data-springboot

使用這一設置的實際想法

  1. 負載測試:生成數千個模擬用戶來填充數據庫。
  2. UI原型設計:用逼真的API數據為前端提供數據。
  3. 演示環境:采用動態樣本用戶填充沙盒環境。
  4. 單元測試:用對DataGenService.randomUserViaDatafaker()的調用替換new User("a","b")。
  5. 數據匿名化:快速采用模擬數據替換敏感的生產數據。

這些都是這種組合發揮重要作用的真實場景。

結束語

讓測試數據從令人乏味的模擬數據,轉變為引人入勝的“真實”演示,其秘訣就在于所選擇的工具。

使用DataFaker和EasyRandom,可以自動化實現該過程——使用現代Java、更少的代碼以及完美組合的庫。不僅可以在構建測試或模擬API時節省時間,還可以提供生動、多樣和逼真的演示。

這一切都構建于開源、輕量的基礎之上,并能輕松融入開發人員熟悉的任何技術堆棧——無論是Spring Boot、Quarkus、Micronaut,還是簡單的控制臺應用程序。

現在是告別模擬數據的時候了,為開發的項目提供個性與真實感的數據,可以讓Java完成這些繁重的工作。

需要了解更多的技術見解?可以查看GitHub代碼庫LinkedIn頁面

原文標題:Building Realistic Test Data in Java: A Hands-On Guide for Developers,作者:Wallace Espindola

責任編輯:龐桂玉 來源: 51CTO技術棧
相關推薦

2024-10-14 08:00:00

零信任開發網絡威脅

2022-06-06 10:30:23

容器鏡像

2009-08-27 12:00:40

ibmdwJava

2022-04-20 10:56:06

JavaJVM參數

2021-12-10 23:48:19

Java開發技術

2023-03-15 07:12:53

企業開發人員提供商

2021-02-19 09:33:01

kubernetesJAVA服務

2025-02-08 11:02:57

2022-05-16 13:58:52

開發區塊鏈Web3

2018-11-26 09:55:07

MySQL誤刪數據數據庫

2023-01-05 14:51:01

測試開發軟件開發

2009-06-22 09:13:55

測試開發人員

2023-01-06 17:18:00

測試開發集成測試

2023-08-14 15:23:37

2013-04-15 10:00:09

程序員

2019-11-27 18:54:07

物聯網數字孿生機器學習

2020-05-11 09:54:33

JavaScript開發技術

2021-10-27 10:43:24

開發技能代碼

2022-02-19 22:44:26

Java開發技術

2009-12-09 10:04:20

ibmdwJavaTwitter
點贊
收藏

51CTO技術棧公眾號

国产精品毛片a∨一区二区三区| 欧美视频四区| 欧美色偷偷大香| 自拍另类欧美| 四虎永久在线精品免费网址| 日韩经典中文字幕一区| 不卡毛片在线看| 男人网站在线观看| 成人福利片在线| 亚洲在线观看免费视频| 日韩精品国内| 亚洲免费视频网| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美精品免费播放| 日本xxxxxxxxx18| 一区二区精彩视频| 欧美午夜免费电影| 人妻少妇精品久久| 日本中文字幕在线播放| 97精品久久久午夜一区二区三区| 国产日韩欧美视频| 亚洲永久精品在线观看| 亚洲最大黄网| 国产一区二区美女视频| 无码人妻一区二区三区精品视频| 午夜无码国产理论在线| 亚洲成av人影院在线观看网| 色中文字幕在线观看| 四虎在线免费观看| 国产精品18久久久久久久久久久久 | 亚洲图片一区二区| 亚洲欧美国产精品桃花| 日本一卡二卡四卡精品| 丁香婷婷综合网| 91亚洲精华国产精华| 国产成人精品亚洲| 久久狠狠一本精品综合网| 欧美福利视频在线| 国产高潮流白浆| 日韩dvd碟片| 亚洲天堂av在线免费| 久久久久久久久免费看无码 | 亚洲综合视频网站| 欧美肉体xxxx裸体137大胆| 亚洲精品美女久久| 在线xxxxx| 一本一道久久a久久| 欧美一区二区三区在线观看视频| 午夜激情av在线| 日韩中文在线播放| 欧洲另类一二三四区| 日韩视频免费在线播放| 毛片免费看不卡网站| 天天综合日日夜夜精品| 福利视频一二区| 波多野结依一区| 亚洲国产aⅴ天堂久久| 久久www视频| 在线中文字幕视频观看| 一区二区三区.www| 欧美黄色免费网址| 超碰在线资源| 精品人伦一区二区三区蜜桃网站| 欧美黑人经典片免费观看| 黄页在线观看免费| 亚洲第一成年网| 国产精品久久中文字幕| 日本不卡1234视频| 欧美午夜丰满在线18影院| 久久婷婷国产精品| yiren22亚洲综合| 制服丝袜中文字幕一区| 国产又粗又猛大又黄又爽| 日韩在线精品强乱中文字幕| 日韩欧美中文字幕精品| 免费看黄色片的网站| 亚洲精华一区二区三区| 亚洲深夜福利视频| 国产精品1区2区3区4区| 亚洲成人精品| 国内伊人久久久久久网站视频 | 麻豆av福利av久久av| 欧洲毛片在线| 国产精品三级视频| 亚洲中文字幕无码一区二区三区| 蜜桃视频www网站在线观看| 欧美性少妇18aaaa视频| 视频二区在线播放| 91在线一区| 亚洲欧美国产高清va在线播| 国产亚洲精品综合一区91| 污污免费在线观看| 蜜桃一区二区三区| 日韩一区二区久久久| 精品99久久久久成人网站免费| 亚洲国产清纯| 国产精品偷伦视频免费观看国产| 国产三级在线观看视频| eeuss国产一区二区三区| 日韩av一级大片| 色在线视频网| 欧洲精品在线观看| 污网站免费观看| 成人中文在线| 91精品国产91久久久久久吃药 | 在线不卡亚洲| 国产日韩换脸av一区在线观看| 日本高清视频免费看| 国产精品麻豆欧美日韩ww| 99在线免费视频观看| 日本亚洲欧洲无免费码在线| 亚洲国产精品人人爽夜夜爽| 日韩av毛片在线观看| 国产婷婷精品| 91一区二区三区| 91在线播放网站| 亚洲第一狼人社区| 久久久福利影院| 欧美老女人另类| 欧美性受xxxx黑人猛交| www.97av| 自拍偷拍亚洲激情| 黑人粗进入欧美aaaaa| 国产精品毛片久久久| 久热99视频在线观看| 最近中文字幕在线免费观看| 93久久精品日日躁夜夜躁欧美| 青青在线视频免费观看| 涩涩涩久久久成人精品| 日韩成人激情视频| 精品无码久久久久久久久| 国产乱妇无码大片在线观看| 一区二区不卡在线观看| 精品欧美日韩精品| 国产午夜精品理论片a级探花| 欧美成欧美va| 国产精品伊人色| 在线免费观看成人网| 日韩三区免费| 亚洲色图国产精品| 精品不卡一区二区| 91啪亚洲精品| 无码精品a∨在线观看中文| 哺乳挤奶一区二区三区免费看| 久久成年人视频| 国产精品一区二区人人爽| 国产精品久久影院| 在线能看的av网站| 久久福利影院| 91免费欧美精品| 成人免费网址| 欧美不卡激情三级在线观看| 久久久久久久久久久网| 懂色av中文一区二区三区| 日本五级黄色片| 国产精品男女| 亲子乱一区二区三区电影 | 国产精品99久久免费| 久久久99免费视频| 国产成人精品一区二三区四区五区| 成人免费在线观看入口| 激情在线小视频| 欧美性猛交xxxx黑人猛交| 美女露出粉嫩尿囗让男人桶| 亚洲午夜久久久久久尤物| 99精彩视频| xxxx视频在线| 国产偷亚洲偷欧美偷精品| www.欧美色| 国产精品视频免费| 91视频免费入口| 极品尤物久久久av免费看| 久久av一区二区| 国产麻豆久久| 欧美老女人性生活| 日本xxxxwww| 欧美综合在线视频| 乱h高h女3p含苞待放| 成人永久看片免费视频天堂| 欧美丰满熟妇bbbbbb百度| 国产精品一区二区99| 国产欧美亚洲精品| 国产啊啊啊视频在线观看| 国产丝袜一区二区三区免费视频| 一区二区三区免费在线| 亚洲国产精品久久一线不卡| 中文字幕免费看| 国产真实乱偷精品视频免| 青青青在线观看视频| 欧美一区二区三区红桃小说| 国产欧美韩国高清| а√天堂8资源中文在线| 中文国产成人精品久久一| 国产精品无码久久av| 亚洲成av人片在www色猫咪| 国产精品1luya在线播放| 欧美喷潮久久久xxxxx| 免费一级片在线观看| 99国产精品久久久久久久久久| 美女黄色片视频| 欧美日一区二区在线观看| 欧美精品一区二区三区在线四季 | 日本道精品一区二区三区 | 欧美日韩美女在线观看| 国产精品18在线| 成人av网站在线观看免费| 最新中文字幕免费视频| 亚洲三级免费| 国产高清免费在线| 啪啪亚洲精品| 国产精品一区二区三区免费| 九九热这里有精品| 午夜精品一区二区三区在线视| 日本三级视频在线观看| 日韩av在线免费| 精品黑人一区二区三区在线观看 | 免费国产羞羞网站视频| 欧美日韩成人一区二区| 中文字幕日韩一区二区不卡| 欧美黄色片视频| 久久国产精品高清一区二区三区| 欧美精品日日鲁夜夜添| av资源免费观看| 一区二区三区欧美久久| 国产性猛交xx乱| 91丨porny丨首页| 人妻巨大乳一二三区| 美腿丝袜一区二区三区| 91精品国产一区二区人妖| 欧美另类视频在线观看| 中文字幕国产一区| 黄色aaa视频| 99r国产精品| 超碰caoprom| 国产电影精品久久禁18| 免费网站在线观看黄| 免费观看日韩av| 无人在线观看的免费高清视频| 夜夜嗨一区二区三区| 国产毛片视频网站| 欧美日韩99| 亚洲国产一二三精品无码| 91精品国产91久久久久久密臀| 婷婷亚洲婷婷综合色香五月| 国产精品自拍区| 日本一区视频在线| 国产伦一区二区三区| 欧美日韩在线一二三| 偷窥自拍亚洲色图精选| 久久99精品国产一区二区三区| 好吊妞国产欧美日韩免费观看网站 | 青青草手机在线观看| 亚洲少妇30p| caoporn91| 亚洲综合丁香婷婷六月香| 国产性一乱一性一伧一色| 一二三区精品视频| 日韩免费一二三区| 偷拍亚洲欧洲综合| 啦啦啦免费高清视频在线观看| 狠狠躁夜夜躁人人躁婷婷91 | 久久国产色av免费观看| 国产精品呻吟| 青青青国产在线视频| 日本美女视频一区二区| 国产三级国产精品国产专区50| 美女一区二区三区在线观看| 日本77777| 福利电影一区二区| 亚洲图片综合网| 久久久久久免费毛片精品| 久久久久久久久久久久久久久| 国产精品热久久久久夜色精品三区| 精品伦精品一区二区三区视频密桃| 中文字幕一区二| 久久影院一区二区| 日韩欧美在线免费| 中文字幕在线视频免费| 日韩一区二区免费在线观看| 免费国产黄色片| 一区二区中文字幕| 最新超碰在线| 日本高清不卡在线| 日本一区二区中文字幕| 99国精产品一二二线| 国产精品日韩精品中文字幕| 国产成人三级视频| 小嫩嫩精品导航| 911av视频| 91在线视频播放| 天天鲁一鲁摸一摸爽一爽| 中文欧美日韩| 日韩欧美亚洲国产另类| 蜜桃久久一区二区三区| 亚洲人成电影在线| 日韩av激情| 国产精品91久久久久久| 亚洲不卡视频| 色大师av一区二区三区| 国产一区观看| 亚洲一级免费在线观看| av影院午夜一区| 日韩精品123区| 色国产综合视频| 亚洲精品视频网| 中文字幕亚洲欧美一区二区三区| 啦啦啦中文在线观看日本| 国产精品偷伦免费视频观看的| 美国成人xxx| 日韩在线视频在线| 久久精品免费看| 亚洲日本精品视频| 婷婷一区二区三区| 国产aⅴ爽av久久久久成人| 国产亚洲精品久久久久动| 多野结衣av一区| 91入口在线观看| 欧美gay男男猛男无套| 国产主播在线看| 国产91精品一区二区麻豆网站| 精品少妇一区二区三区密爱| 91国内精品野花午夜精品 | 老司机成人影院| 精品一区二区国产| 亚洲视频碰碰| 国产伦精品一区二区三区妓女下载| 欧美激情一区不卡| 午夜婷婷在线观看| 亚洲精品福利在线| 搞黄网站在线看| 成人黄色片视频网站| 在线中文字幕亚洲| 欧美午夜精品理论片| 国产精品久久久久一区| 中文字幕在线播出| 在线播放日韩欧美| 欧美色999| 欧洲精品久久| 日韩国产高清影视| 亚洲国产日韩一区无码精品久久久| 狠狠躁夜夜躁人人爽超碰91| 午夜性色福利影院| 538国产精品一区二区免费视频 | 国产精选第一页| 欧美成va人片在线观看| 欧美aaaaaaa| 春色成人在线视频| 欧美视频网站| 无码精品一区二区三区在线播放| 亚洲高清不卡在线观看| 欧美自拍第一页| 69精品小视频| 亚欧洲精品视频在线观看| 六月丁香婷婷在线| 国产网站一区二区三区| 中文字幕免费观看| 中文字幕av一区二区| 在线免费观看亚洲| 欧美一区二区三区综合| 不卡区在线中文字幕| 久草国产精品视频| 亚洲视频在线视频| 日本欧美在线| 久久精品无码中文字幕| 97久久精品人人做人人爽| а中文在线天堂| 日韩在线观看视频免费| 奇米一区二区| 男人日女人下面视频| 日本一区免费视频| 国产又粗又大又黄| 久久久久久97| 国产一区二区区别| 在线视频日韩欧美| 亚洲成av人片一区二区梦乃| 国产九九在线| 亚洲va欧美va国产综合剧情| 日韩视频在线一区二区三区 | 亚洲熟妇一区二区| 偷拍日韩校园综合在线| 3d成人动漫在线| 波多野结衣久草一区| 巨乳诱惑日韩免费av| 日韩三级在线观看视频| 亚洲黄色成人网| 裤袜国产欧美精品一区| 三年中国中文在线观看免费播放 | 日韩一区二区在线播放| free性m.freesex欧美| 视频一区视频二区视频| 国产精品18久久久久久久网站| 好看的av在线| 欧美大片va欧美在线播放| 国产不卡av一区二区| 欧美体内she精高潮| 色av一区二区| 蜜桃传媒在线观看免费进入| 亚洲7777| 91免费看视频| 成人观看高清在线观看免费|