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

WebAssembly及其 API 的完整介紹

開發 后端
自從引入計算機以來,本地應用程序的性能有了巨大的提高。相比之下,web 應用程序相當慢,因為 JS 一開始并不是為了速度而構建的。但是由于瀏覽器之間的激烈競爭以及JS 引擎如V8的快速開發,使得 JS 能夠在機器上快速運行。但是它仍然不能超過本機應用程序的性能。這主要是因為 JS 代碼必須經歷幾個進程才能生成機器碼。

[[350065]]

自從引入計算機以來,本地應用程序的性能有了巨大的提高。相比之下,web 應用程序相當慢,因為 JS 一開始并不是為了速度而構建的。但是由于瀏覽器之間的激烈競爭以及JS 引擎如V8的快速開發,使得 JS 能夠在機器上快速運行。但是它仍然不能超過本機應用程序的性能。這主要是因為 JS 代碼必須經歷幾個進程才能生成機器碼。

隨著 WebAssembly 的引入,現代 Web 發生革命性的變化,這項技術非常快。讓我們看一下什么是 WebAssembly,以及如何與 JS 集成以構建快速的應用程序。

什么是 WebAssembly?

在了解 WebAssembly 之前,讓我們看一下什么是 Assembly。

Assembly(匯編)是一種低級編程語言,它與體系結構的機器級指令有著非常密切的聯系。換句話說,它只需一個進程就可以轉換為機器可以理解的代碼,即機器代碼。此轉換過程稱為匯編。

WebAssembly可以簡稱為 Web 的匯編。它是一種類似于匯編語言的低級語言,具有緊湊的二進制格式,使您能夠以類似本機的速度運行Web應用程序。它還為C,C ++和Rust等語言提供了編譯目標,從而使客戶端應用程序能夠以接近本地的性能在Web上運行。

此外,WebAssembly 的出現是與 JS 一起運行,而不是取代 JS。使用 WebAssembly JavaScript API,你可以交替地運行來自任一種語言的代碼,來回沒有任何問題。這為我們提供了利用 WebAssembly 的強大功能和性能以及 JS 的通用性和適應性的應用程序。這為web應用程序打開了一個全新的世界,它可以運行最初并不打算用于web的代碼和功能。

有什么區別

Lin Clark預測,2017年 WebAssembly 的引入可能會引發 web 開發生命中的一個新的拐點。早期的另一個拐點 生在引入 JITs 編譯的時候,JIT 編譯使JS 的速度提高了近10倍。

如果將 WebAssembly 的編譯過程與 JS 的編譯過程進行比較,會注意到幾個過程已被剝離,其余過程已被修剪,如下所示:

JIT 是使 JavaScript 運行更快的一種手段,通過監視代碼的運行狀態,把 hot 代碼(重復執行多次的代碼)進行優化。通過這種方式,可以使 JavaScript 應用的性能提升很多倍。

仔細比較上圖,注意到,重新參與WebAssembly已經完全被剝奪掉了。這主要是因為編譯器不需要對WebAssembly代碼做任何假設,因為諸如數據類型是在代碼中明確提及。

但是 JS 不是這樣的,因為JIT應該做一些假設來運行代碼,如果假設失敗,它需要重新優化它的代碼。

如何獲取 WebAssembly 代碼

WebAssembly是一項偉大的技術,我們需要如何利用 WebAssembly 的強大功能呢?

有幾種方法:

  • 不推薦從頭編寫 WebAssembly 代碼,除非你非常了解基本知識
  • 從 C 編譯為 WebAssembly
  • 從 C++ 編譯為 WebAssembly
  • 從 Rust 編譯為 WebAssembly
  • 使用 AssemblyScript 將 Typescript 編譯為WebAssembly。對于不熟悉C/C ++或Rust 的 Web開發人員來說,這是一個不錯的選擇
  • 支持更多的語言選項。

此外,還有Emscripten和WebAssembly Studio之類的工具可以幫助您完成上述過程。

JS 的 WebAssembly API

為了充分利用 WebAssembly 的特性,我們必須將其與 JS 代碼集成在一起,這可以在JavaScript WebAssembly API的幫助下完成。

模塊編譯和實例化

WebAssembly代 碼駐留在.wasm文件中。這個文件應該被編譯成特定于它所運行的機器的機器碼。我們可以使用WebAssembly.compile方法來編譯 WebAssembly 模塊。

WebAssembly.instantiate方法實例化已編譯模塊。另外,我們也可以從.wasm文件獲得的數組緩沖區傳遞到WebAssembly.instantiate方法中。這也適用,因為實例化方法有兩個重載。

  1. let exports 
  2.  
  3. fetch('sample.wasm').then(response => 
  4.   response.arrayBuffer() 
  5. ).then(bytes => 
  6.   WebAssembly.instantiate(bytes) 
  7. ).then(results => { 
  8.   exports = results.instance.exports 
  9. }) 

上述方法的缺點之一是這些方法不能直接訪問字節碼,因此在編譯/實例化wasm模塊之前,需要采取額外的步驟將響應轉換為ArrayBuffer。

相反,我們可以使用WebAssembly.compileStreaming / WebAssembly.instantiateStreaming方法來實現與上述相同的功能,其優點是可以直接訪問字節碼,而無需將響應轉換為ArrayBuffer。

  1. let exports 
  2.  
  3. WebAssembly.instantiateStreaming(fetch('sample.wasm')) 
  4. .then(obj => { 
  5.   exports = obj.instance.exports 
  6. }) 

注意,WebAssembly.instantiate和WebAssembly.instantiateStreaming會返回實例以及已編譯的模塊,它們可用于快速啟動模塊的實例。

  1. let exports; 
  2. let compiledModule; 
  3.  
  4. WebAssembly.instantiateStreaming(fetch('sample.wasm')) 
  5. .then(obj => { 
  6.   exports = obj.instance.exports; 
  7.   //access compiled module 
  8.   compiledModule = obj.module; 
  9. }) 

導入對象

實例化 WebAssembly 模塊實例時,可以選擇傳遞一個導入對象,該對象將包含要導入到新創建的模塊實例中的值,有 4 種類型:

  • global values
  • functions
  • memory
  • tables

可以將導入對象視為提供給模塊實例的工具,以幫助它實現其任務。如果沒有提供導入對象,編譯器將分配默認值。

Global

WebAssembly.Global 對象表示一個全局變量實例, 可以被JavaScript 和importable/exportable 訪問 ,跨越一個或多個WebAssembly.Module 實例. 他允許被多個modules動態連接.

可以使用WebAssembly.Global()構造函數創建全局實例。

  1. const global = new WebAssembly.Global({ 
  2.     value: 'i64'
  3.     mutable: true 
  4. }, 20) 

語法

  1. var myGlobal = new WebAssembly.Global(descriptor, value) 

global 構造函數接受兩個參數。

descriptor

GlobalDescriptor 包含2個屬性的表:

  • value: A USVString 表示全局變量的數據類型. 可以是i32, i64, f32, 或 f64
  • mutable: 布爾值決定是否可以修改. 默認是 false

value可以是任意變量值,需要其類型與變量類型匹配. 如果變量沒有定義, 使用0代替

  1. const global = new WebAssembly.Global({ 
  2.     value: 'i64'
  3.     mutable: true 
  4. }, 20); 
  5.  
  6. let importObject = { 
  7.     js: { 
  8.         global 
  9.     } 
  10. }; 
  11.  
  12. WebAssembly.instantiateStreaming(fetch('global.wasm'), importObject) 

全局實例應該傳遞給importObject,以便在 WebAssembly 模塊實例中可以訪問它。

Memory

當 WebAssembly 模塊被實例化時,它需要一個 memory 對象。你可以創建一個新的WebAssembly.Memory并傳遞該對象。如果沒有創建 memory 對象,在模塊實例化的時候將會自動創建,并且傳遞給實例。

JS引擎創建一個ArrayBuffer來做這件事情。ArrayBuffer 是 JS 引用的 JavaScript 對象。JS 為你分配內存。你告訴它需要多少內存,它會創建一個對應大小的ArrayBuffer

ArrayBuffer 做了兩件事情,一件是做 WebAssembly 的內存,另外一件是做 JavaScript 的對象。

它使 JS 和 WebAssembly 之間傳遞內容更方便。

使內存管理更安全。

Table

WebAssembly.Table() 構造函數根據給定的大小和元素類型創建一個Table對象。

這是一個包裝了WebAssemble Table 的Javascript包裝對象,具有類數組結構,存儲了多個函數引用。在 JS 或者WebAssemble中創建Table 對象可以同時被JS 或WebAssemble 訪問和更改。

引入Table的主要原因是提高了安全性。我們可以使用set()、grow()和get()方法來操作表。

事例

為了演示,我將使用WebAssembly Studio應用程序將C文件編譯為.wasm。

我已經在wasm文件中創建了一個函數來計算一個數字的冪。我將必要的值傳遞給函數,然后用JavaScript接收輸出。

同樣,我在wasm中進行了一些字符串操作。需要注意,wasm沒有字符串類型。因此,它將使用ASCII值。返回到 JS 的值將指向存儲輸出的內存位置。由于內存對象是ArrayBuffer,因此我要進行迭代,直到收到字符串中的所有字符為止。

JavaScript文件

  1. let exports; 
  2. let buffer; 
  3. (async() => { 
  4.   let response = await fetch('../out/main.wasm'); 
  5.   let results = await WebAssembly.instantiate(await response.arrayBuffer()); 
  6.   //or 
  7.   // let results = await WebAssembly.instantiateStreaming(fetch('../out/main.wasm')); 
  8.   let instance = results.instance; 
  9.   exports = instance.exports; 
  10.   buffer = new Uint8Array(exports.memory.buffer); 
  11.  
  12.   findPower(5,3); 
  13.    
  14.   printHelloWorld(); 
  15.    
  16. })(); 
  17.  
  18. const findPower = (base = 0, power = 0) => { 
  19.   console.log(exports.power(base,power)); 
  20.  
  21. const printHelloWorld = () => { 
  22.   let pointer = exports.helloWorld(); 
  23.   let str = ""
  24.   for(let i = pointer;buffer[i];i++){ 
  25.     str += String.fromCharCode(buffer[i]); 
  26.   } 
  27.   console.log(str); 

C 文件

  1. #define WASM_EXPORT __attribute__((visibility("default"))) 
  2. #include <math.h> 
  3.  
  4.  
  5. WASM_EXPORT 
  6. double power(double number,double power_value) { 
  7.   return pow(number,power_value); 
  8.  
  9. WASM_EXPORT 
  10. char* helloWorld(){ 
  11.   return "hello world"

應用

WebAssembly 更適合用于寫模塊,承接各種復雜的計算,如圖像處理、3D運算、語音識別、視音頻編碼解碼這種工作,主體程序還是要用 javascript 來寫的。

可以找我返現15(https://cn.aliyun.com/1111/home?userCode=pxuujn3r)

作者:Mahdhi Rezvi 譯者:前端小智 來源:medium

原文:https://blog.bitsrc.io/a-complete-introduction-to-webassembly-and-its-javascript-api-3474a9845206 11111

菜v菜  本文轉載自微信公眾號「大遷世界」,可以通過以下二維碼關注。轉載本文請聯系大遷世界公眾號。

 

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2023-12-10 16:48:00

Wasm瀏覽器

2017-03-19 20:41:57

WebAssemblyJavaScript編程

2009-11-23 20:03:18

ibmdwLotus

2012-08-02 09:18:05

LESSSassCSS

2021-12-27 10:46:07

WebAPIserver簽名

2017-03-19 22:13:10

WebAssemblyJavaScript編程

2009-04-02 13:45:36

網關網絡

2009-08-06 18:02:22

存儲過程

2010-10-09 08:50:16

2009-06-19 18:42:06

jBPMSSH

2011-12-19 16:09:32

PhoneGap APCamera

2011-12-20 11:20:46

PhoneGap APCompass

2011-12-22 10:33:39

PhoneGap APNotificatio

2011-12-19 15:30:25

AccelerometPhoneGap AP

2011-12-22 09:54:40

PhoneGap APMedia

2011-12-20 17:15:52

PhoneGap APEvents

2011-12-19 16:26:39

PhoneGap APCapture

2011-12-21 21:56:45

PhoneGap APFile

2011-12-22 09:27:36

PhoneGap APGeolocation

2011-12-22 10:45:32

PhoneGap APStorage
點贊
收藏

51CTO技術棧公眾號

亚洲专区在线| 欧美人妖在线观看| 亚洲一二三专区| 久久精品国产第一区二区三区最新章节| 日韩精品一区三区| 国产日产精品_国产精品毛片| 欧美性色欧美a在线播放| 日本福利视频导航| 午夜性色福利影院| 精品午夜久久福利影院| 97热在线精品视频在线观看| 最近中文字幕在线mv视频在线| 美女视频一区| 精品久久久久久久久久久| 亚洲激情图片| 亚洲欧洲国产综合| 国产精品自拍av| 国产精品第一第二| 久久午夜鲁丝片午夜精品| 国产精品日韩精品中文字幕| 欧美一级午夜免费电影| 免费裸体美女网站| 888av在线视频| 中文字幕制服丝袜一区二区三区| 国产一区在线观| 国产成人精品一区二区无码呦| 久久高清免费观看| 久久久久久国产精品美女| 自拍偷拍你懂的| 亚洲区小说区图片区qvod按摩| 日韩三级电影网址| 中文字幕免费高清在线| 亚洲天堂一区二区| 精品国产1区2区| 国产在线视频在线| 黄色网在线播放| 国产精品高潮呻吟久久| 日韩av一区二区三区在线观看| 少妇高潮久久久| 国产精品 欧美精品| 成人女保姆的销魂服务| 欧美激情一区二区三区免费观看 | 午夜精品一区二| 1024日韩| 久久青草精品视频免费观看| 91精品国产闺蜜国产在线闺蜜| 欧美特黄一级大片| 亚洲欧美日韩天堂一区二区| 性农村xxxxx小树林| 国产精品视频一区视频二区 | 国产精品久久久久久久久搜平片 | 国产精品无码2021在线观看| 91色.com| 免费在线国产精品| 美女欧美视频在线观看免费 | 国产精品一区在线| 91精品综合视频| 国产深喉视频一区二区| 久久99国产精品免费| 国产精品亚洲片夜色在线| 成人午夜精品视频| 蜜桃精品视频在线观看| 国产乱肥老妇国产一区二| 一级黄色免费片| 精品一区二区三区久久久| 成人黄色免费网站在线观看| 亚洲一级特黄毛片| 激情国产一区二区| 亚洲aa在线观看| 成人av无码一区二区三区| 国产东北露脸精品视频| 成人片在线免费看| 日本成人动漫在线观看| 99亚偷拍自图区亚洲| 欧美精品亚洲精品| 爱久久·www| 成人免费在线观看入口| 一级特黄录像免费播放全99| 自拍视频在线网| 亚洲免费视频中文字幕| 亚洲精品久久久久久久蜜桃臀| 国产丝袜在线播放| 欧美视频在线观看免费网址| 波多野结衣作品集| 日韩一区中文| 精品对白一区国产伦| 欧洲一级黄色片| 国产欧美一区| 欧美成人一区二区三区电影| 国产一级二级毛片| 老牛国产精品一区的观看方式| 国产精品成av人在线视午夜片| 在线观看国产精品入口男同| 国产在线不卡一区| 久久精品国产综合精品| 最新国产在线观看| 亚洲午夜久久久久| www.涩涩涩| 97超碰成人| 一区二区在线视频| 国产大片中文字幕在线观看| 久久激情婷婷| 91福利视频导航| 九色视频在线观看免费播放| 亚洲欧美日韩电影| 毛片av免费在线观看| 精品国产亚洲一区二区三区| 亚洲精品久久久久久下一站| 波多野结衣家庭教师在线观看| 欧美日韩免费| 国产精品视频在线播放| 色婷婷av一区二区三区之红樱桃| 欧美国产综合色视频| 超碰成人免费在线| 亚洲高清国产拍精品26u| 日韩精品视频三区| 九九热只有精品| 免费看日韩精品| 久久综合伊人77777麻豆| 日日夜夜精品一区| 色哟哟亚洲精品| 国产原创剧情av| 自拍日韩欧美| 国产剧情久久久久久| 欧美人体大胆444www| 亚洲一区二区三区中文字幕| 五月婷婷激情久久| 天堂俺去俺来也www久久婷婷| 免费av在线一区| 一级黄色a视频| 国产日韩精品一区二区三区在线| 你真棒插曲来救救我在线观看| 男人天堂久久| 在线性视频日韩欧美| 4438国产精品一区二区| kk眼镜猥琐国模调教系列一区二区| 影音先锋在线亚洲| www.精品国产| 一区二区三区天堂av| 蜜臀精品一区二区三区| 99久久99久久久精品齐齐| 国产情侣第一页| 日韩最新av| 久久国产精品电影| 国产又大又长又粗| 国产精品久久久久久久久久久免费看 | 亚洲综合伊人久久大杳蕉| 欧美另类一区二区三区| 少妇精品无码一区二区免费视频| 亚洲影院一区| 日韩三级电影网站| 欧美日韩五码| 中文字幕精品国产| 亚洲影视一区二区| 亚洲视频香蕉人妖| 最好看的中文字幕| 91国内在线播放| 人人狠狠综合久久亚洲婷| 国产精欧美一区二区三区| 欧美日本网站| 在线观看日韩电影| www.黄色com| 精品中文字幕一区二区小辣椒| 亚洲精品人成| 成人国产精品久久| 欧美高清激情视频| 熟妇人妻av无码一区二区三区| 亚洲成人激情av| av鲁丝一区鲁丝二区鲁丝三区| 国产视频一区三区| 欧美精品一区在线| 免费一级欧美在线观看视频| 久久久极品av| 黄片毛片在线看| 欧美日韩一区二区免费在线观看| 午夜理伦三级做爰电影| 奇米精品一区二区三区四区| 一本久道久久综合| 一区二区在线视频观看| 66m—66摸成人免费视频| 日本视频在线观看一区二区三区| 在线视频一区二区三区| 欧美h片在线观看| 成人av电影在线网| mm1313亚洲国产精品无码试看| 97国产成人高清在线观看| 亚洲自拍偷拍福利| 欧美1级2级| 久久国产精彩视频| 精彩国产在线| 日韩欧美久久一区| 欧美一级淫片免费视频黄| 亚洲人成影院在线观看| 男男做爰猛烈叫床爽爽小说| 青青草国产成人av片免费| www.激情网| 国产免费av一区二区三区| 亚洲a成v人在线观看| 电影网一区二区| 久久精品视频va| 日韩a在线观看| 91精品国产一区二区三区香蕉| 日韩精品成人一区| 日韩码欧中文字| 亚洲精品成人无码熟妇在线| 狠狠色丁香婷婷综合| 男人操女人逼免费视频| 欧美电影《睫毛膏》| 久久综合一区| 国产成人一二片| 国产男女猛烈无遮挡91| 无遮挡爽大片在线观看视频| 久久精品福利视频| 国产在线免费观看| 亚洲国产精品成人va在线观看| 中文字幕观看视频| 福利一区视频在线观看| 久久久久久视频| 国产欧美一区二区精品秋霞影院 | 日本一区二区三区电影免费观看| 欧美综合第一页| 男人天堂亚洲| 久久精品国产免费观看| 国产在线观看高清视频| 亚洲国产精品yw在线观看| av中文字幕在线免费观看| 欧美在线看片a免费观看| 国产一级特黄毛片| 亚洲精品国产成人久久av盗摄 | 999久久久精品国产| 欧美亚洲爱爱另类综合| 久久影院资源站| 成人在线看片| 一本色道69色精品综合久久| 成人黄色午夜影院| 91亚洲精品| 国产精品看片资源| 亚洲成av在线| 国产精品7m视频| 免费亚洲电影| 国产精品美女999| 欧美××××黑人××性爽 | 91麻豆免费观看| 久久人妻一区二区| 97se亚洲国产综合自在线| 亚洲成年人在线观看| 国产成人av福利| 人妻少妇偷人精品久久久任期| 激情综合色丁香一区二区| 亚洲综合欧美激情| 久久99精品久久只有精品| 三上悠亚在线一区| 开心九九激情九九欧美日韩精美视频电影| 成人精品小视频| 老司机午夜精品视频| 久久精品香蕉视频| 免费一区二区视频| 想看黄色一级片| 国产麻豆日韩欧美久久| 伊人影院在线观看视频| 懂色中文一区二区在线播放| 精品久久久久久无码人妻| 粉嫩高潮美女一区二区三区| 日韩Av无码精品| 久久网这里都是精品| 亚洲AV无码成人精品区明星换面| 日本一区二区动态图| 日本激情视频一区二区三区| 亚洲品质自拍视频网站| 精国产品一区二区三区a片| 亚洲二区在线观看| 色av性av丰满av| 欧美日本精品一区二区三区| 国产三级伦理片| 精品国产伦一区二区三区免费 | 日韩中文字幕久久| 午夜成年人在线免费视频| 国内精品久久久久久中文字幕| 秋霞伦理一区| 国产精品自拍视频| 国产精品18hdxxxⅹ在线| 欧美精品二区三区四区免费看视频 | 久久激情一区| 中文字幕日韩久久| 91亚洲午夜精品久久久久久| 一级黄色毛毛片| 一区二区三区在线视频免费观看| 日韩精品成人一区| 欧美色涩在线第一页| www.黄色国产| 亚洲一区二区国产| 黄色小说在线播放| 国产精品99导航| 一本一道久久a久久| 日韩精品久久一区| 国产精品二区影院| 中文字幕在线导航| 高清不卡在线观看av| 久久久久久久毛片| 亚洲一区免费在线观看| 欧美特级黄色片| 精品久久久久久久久久久久久久久 | 精品午夜视频| 日本成人三级| 国自产拍偷拍福利精品免费一| 国产视频一区二区三区在线播放| 国产精品一品二品| x88av在线| 午夜精品一区二区三区免费视频| 这里只有精品999| 亚洲国产精品va| 三级福利片在线观看| 国产精品一区av| 蜜桃成人av| 3d动漫一区二区三区| 国产麻豆精品视频| www.4hu95.com四虎| 五月激情综合色| 精品国产九九九| 精品国产依人香蕉在线精品| 自拍视频在线看| 国产伦视频一区二区三区| 亚洲精品va| 91女神在线观看| 亚洲国产精品传媒在线观看| 五月天综合激情| 亚洲电影免费观看高清| 成人无遮挡免费网站视频在线观看| 国产不卡一区二区在线播放| 国产成人福利av| 男人添女荫道口喷水视频| 精品无人区卡一卡二卡三乱码免费卡| 亚洲熟妇无码av| 欧美日韩亚洲网| 五月婷婷伊人网| 久久人人爽人人| 国内自拍欧美| 大荫蒂性生交片| 福利视频网站一区二区三区| 潘金莲一级黄色片| 在线成人免费观看| 日本免费视频在线观看| 国产精品日韩欧美大师| 国产一区二区三区站长工具| 无码人妻h动漫| 91视视频在线直接观看在线看网页在线看| 久久久91视频| 精品国产免费一区二区三区香蕉| 日本高清成人vr专区| 91亚色免费| 黄色成人在线网站| 精品国产一区在线| 欧美丝袜第一区| 黄色av网站在线| 国产精品永久免费在线| 色777狠狠狠综合伊人| 视色视频在线观看| 一区在线观看免费| www.黄色av| 97精品在线视频| 欧美极品在线观看| 亚洲欧美自拍另类日韩| 中文av一区特黄| 91麻豆国产视频| 欧美日韩第一视频| 伦理一区二区| 亚洲一区二区蜜桃| 17c精品麻豆一区二区免费| 精品人妻无码一区二区三区蜜桃一| 九九热99久久久国产盗摄| 精品资源在线| 国产免费视频传媒| 日韩理论片网站| 日韩在线观看视频网站| 日本91av在线播放| 欧美疯狂party性派对| 91精产国品一二三| 精品久久久久久电影| av资源网站在线观看| 亚洲在线观看视频| 91超薄丝袜肉丝一区二区| 欧美一区二区三区在线观看 | 亚洲国产成人porn| 欧美日韩在线精品一区二区三区激情综| 国产激情视频一区| 欧美一区二区| 青青草福利视频| 日韩无一区二区| 美女网站视频一区| 伊人网在线免费| 久久久久久久免费视频了| 国产喷水福利在线视频| 午夜精品www| 国产精品福利在线观看播放| 中文字幕一区二区人妻电影丶| 色88888久久久久久影院按摩| 欧美激情午夜| 久久99久久99精品蜜柚传媒| 激情欧美一区二区三区在线观看| 日韩三级视频在线|