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

得物商家客服桌面端Electron技術(shù)實(shí)踐

開發(fā) 前端
更新在大的分類上區(qū)分全量以及增量更新,在每個(gè)小分類里面也區(qū)分強(qiáng)更新,弱更新(業(yè)務(wù)上的區(qū)分,底層實(shí)現(xiàn)沒區(qū)別)。簡(jiǎn)單來說,強(qiáng)更新指的是用戶必須更新,不更新將無法使用系統(tǒng)功能,弱更新指的是用戶想要的時(shí)候再去觸發(fā)應(yīng)用的更新,完全由用戶自主選擇。

1、業(yè)務(wù)背景

隨著公司業(yè)務(wù)的快速發(fā)展,商家客服也納入了我們的服務(wù)范圍,商家客服工作臺(tái)的定位是通過工具和數(shù)據(jù)服務(wù)商家,一站式解決用戶購(gòu)買咨詢?cè)V求。通過工具和運(yùn)營(yíng)策略協(xié)助商家提升服務(wù)品質(zhì),讓品牌商家有動(dòng)力運(yùn)營(yíng)好潛在的客戶,從而達(dá)到提升用戶服務(wù)的目標(biāo)。桌面應(yīng)用的轉(zhuǎn)化在未來是客服產(chǎn)品的方向。

已有web端聊天系統(tǒng)的前提下,商家客服為什么要遷移桌面應(yīng)用?

首先我們收到部分商家客服反饋:

圖片

  • 用戶是上帝,我們是很重視用戶的反饋的,所以首先我們想的是如何在web端解決這些問題,下面我們逐一分析下以上問題我們能不能在網(wǎng)頁(yè)端解決呢?

針對(duì)客服A同學(xué)問題:大多數(shù)客服職場(chǎng)的臺(tái)式機(jī)是不會(huì)安裝音頻設(shè)備,如果人家沒音頻,沒外音,我們能強(qiáng)迫他買個(gè)播放器嗎,那肯定是不能的,如果是自營(yíng)客服還有點(diǎn)處理方案,真需要,公司可以統(tǒng)一采購(gòu),但是ToC的顯然不能強(qiáng)制做什么事情,所以此問題無解

針對(duì)客服B同學(xué)問題:這句話怎么理解呢,是這樣的,在一屏既有web瀏覽器,又有其他應(yīng)用如飛書之類的PC應(yīng)用疊著放,web notification通知由于是瀏覽器級(jí)別的,提醒不到最上層,瀏覽器的提醒確實(shí)有點(diǎn)弱(看不到提醒會(huì)影響到客服的首響,首響會(huì)影響客服的績(jī)效,咱公司對(duì)于用戶的服務(wù)效率是比較嚴(yán)格的),所以此問題無解

針對(duì)客服C同學(xué)問題:em。。。好的,您說的對(duì),web網(wǎng)頁(yè)給商家客服的感覺就是我們平臺(tái)有點(diǎn)趕不上形勢(shì)。。。

基于上面的一些場(chǎng)景,想必大家已經(jīng)對(duì)為何做桌面應(yīng)用有個(gè)初步的了解,下面以一張圖來看下web應(yīng)用跟桌面應(yīng)用的區(qū)別。

圖片

2、技術(shù)選型

  • 為什么會(huì)選擇Electron而不是其他應(yīng)用開發(fā)框架?

2.1 Electron架構(gòu)簡(jiǎn)介

圖片

Electron的構(gòu)成主要是上面的3個(gè)大模塊,每個(gè)模塊各司其職,讓Electron有了桌面應(yīng)用的能力。

  • Chromium:可以為Electron提供UI渲染能力,再加上Chromium本身就是跨平臺(tái)的,所以也不用考慮代碼的兼容性。只要有Chromium,就能用JavaScript,HTML,CSS這些前端開發(fā)工程師所熟知的三劍客來開發(fā)頁(yè)面。
  • Node.js:Chromium并不具備原生GUI操作的能力,所以Node.js正好補(bǔ)足了這個(gè)能力,能夠調(diào)用操作系統(tǒng)的底層 API,比如path、fs、crypto 這些模塊,甚至能集成C++。
  • Native APIs:Native API讓Electron有了跨平臺(tái)和桌面端的原生能力,比如說它有統(tǒng)一的原生界面,窗口、托盤這些。

2.2 Electron與其他框架的區(qū)別

下面是Electron與Native、QT、NW應(yīng)用的對(duì)比圖:


Electron

Native

QT

NW

性能

?

? ? ?

? ?

?

安裝包大小

?

? ? ?

?

?

原生體驗(yàn)

?

? ? ?

? ?

?

跨平臺(tái)

? ? ?

X

? ? ?

? ? ?

開發(fā)效率

? ? ?

?

? ?

? ? ?

人才儲(chǔ)備

? ? ?

? ?

? ?

? ? ?

社區(qū)

? ? ?

? ?

?

? ?

適用場(chǎng)景

  • 跨平臺(tái)
  • 快速交付
  • 前端技術(shù)棧
  • 專業(yè)應(yīng)用
  • 性能最佳
  • 跨平臺(tái)應(yīng)用
  • 較好的性能
  • 跨平臺(tái)
  • 快速交互
  • 前端技術(shù)棧
  • Native(C++/C#/Objective-C)不管從原生體驗(yàn)、包的體積、性能方面來說都是最佳的選擇,但是開發(fā)門檻高,迭代速度慢。
  • QT是基于C++的跨平臺(tái)開發(fā)框架,跨平臺(tái)應(yīng)用十分廣泛(Mac、Windows、ios、Android、Linux、嵌入式),眾所周知的WPS就是用QT開發(fā)的。性能很好,甚至于可以媲美原生的體驗(yàn),但是整體門檻還是比較高的。
  • Web技術(shù)的代表Electron 和 NW.js ,相比之前選擇Electron,Electron有非常活躍的社區(qū),有102k star,有Atom、vscode這樣的大型應(yīng)用都是基于Electron開發(fā)的,性能相比于natvie是肯定要差一些,但綜合來看,Electron是作為開發(fā)桌面應(yīng)用的目前首選。
  • 值得一提的是Flutter desktop,從渲染原理看flutter是skia自繪性能優(yōu)于Electron,但問題還是穩(wěn)定性和生態(tài)。Electron由于是nodejs+chromium,前端的生態(tài)可以直接用,所以Flutter desktop就不納入考慮范圍的,但值得關(guān)注。

除了以上這些,最主要的一點(diǎn):Electron能快速交付,業(yè)務(wù)層復(fù)用web系統(tǒng)的代碼,只需要關(guān)注主進(jìn)程就好了,并且也能滿足業(yè)務(wù)需要的系統(tǒng)級(jí)別的一些功能。

圖片

3、技術(shù)實(shí)現(xiàn)

3.1 項(xiàng)目架構(gòu)

圖片

首先介紹下Electron框架里面兩個(gè)重要的概念主進(jìn)程和渲染進(jìn)程。

  • 主進(jìn)程:主要負(fù)責(zé)創(chuàng)建和管理BrowserWindow實(shí)例以及應(yīng)用程序事件。它可以執(zhí)行注冊(cè)全局快捷方式,創(chuàng)建系統(tǒng)菜單和對(duì)話框,響應(yīng)自動(dòng)更新事件等操作。主進(jìn)程以及所有Node.js模塊中都提供了一部分Electron API。
  • 渲染進(jìn)程:渲染過程負(fù)責(zé)運(yùn)行應(yīng)用程序的用戶界面,渲染進(jìn)程中提供了所有DOM API,Node.js API和Electron API的子集。

圖片

如上面截圖,打開Electron項(xiàng)目之后會(huì)有多個(gè)進(jìn)程,一個(gè)項(xiàng)目有且只有一個(gè)主進(jìn)程,創(chuàng)建窗口等有關(guān)系統(tǒng)事件寫在主進(jìn)程中進(jìn)行,但是渲染進(jìn)程可能有多個(gè)。

那為什么會(huì)有多個(gè)渲染進(jìn)程呢?

Electron應(yīng)用是Chromium內(nèi)核,所以多進(jìn)程的架構(gòu)也來源于Chromium,Chromium會(huì)單獨(dú)運(yùn)行每個(gè)標(biāo)簽,任何一個(gè)標(biāo)簽頁(yè)崩潰了都不會(huì)影響到其他標(biāo)簽。因此,每個(gè)進(jìn)程在自己的空間中運(yùn)行,由操作系統(tǒng)調(diào)度。如果某個(gè)進(jìn)程觸發(fā)了無限循環(huán),也不會(huì)導(dǎo)致整個(gè)應(yīng)用down掉。

在上文說到兩個(gè)字“遷移”,是的,我們?cè)陂_發(fā)桌面應(yīng)用之前有非常成熟的web端商家客服聊天系統(tǒng)了,所以我們?cè)陂_發(fā)桌面應(yīng)用的時(shí)候大多數(shù)時(shí)候是關(guān)心主進(jìn)程的,渲染進(jìn)程并不太需要關(guān)心。

3.2 主進(jìn)程功能模塊

3.2.1 通信模塊

主要是調(diào)用Electron框架本身的API以及通用方法的封裝。

圖片

主進(jìn)程到渲染進(jìn)程的通信:

圖片

渲染進(jìn)程到主進(jìn)程的通信:

有兩種方案,一種是在主進(jìn)程開啟了nodeIntegration: true之后在渲染進(jìn)程里面可以使用window.require('Electron')來引入寫通信相關(guān)代碼

圖片

一種是需要在主進(jìn)程編寫preload.js,在初始化窗口的時(shí)候引入

圖片

通信的同步和異步問題

  • 【異步】渲染進(jìn)程->發(fā)送->主進(jìn)程

圖片

  • 【同步】渲染進(jìn)程->發(fā)送->主進(jìn)程

圖片

3.2.2 菜單模塊

主要是調(diào)用Electron框架本身的API,滿足快速擴(kuò)展菜單功能以及自定義菜單功能。

圖片

但是商家客服項(xiàng)目沒用到原生菜單,而是用了自定義的菜單。

沒有使用原生菜單的主要原因是:

  • 原生菜單樣式較死板,不能調(diào)整;
  • 自定義編寫菜單能有各種自己想要的功能,可控制其展示。

3.2.3 托盤模塊

托盤屬于系統(tǒng)級(jí)的操作,所以是在主進(jìn)程中設(shè)置的。在開始之前需要注意的地方,設(shè)置托盤必須在程序ready之后。實(shí)現(xiàn)較簡(jiǎn)單,代碼如下:

圖片

3.2.4 異常處理模塊

主要調(diào)用Electron框架本身API,結(jié)合Node.js API,檢測(cè)系統(tǒng)異常后自動(dòng)刷新并上報(bào),渲染進(jìn)程的異常已經(jīng)使用sls&arms處理,主進(jìn)程的異常主要是通過Electron的crashReporter API來記錄日志。

圖片

上面提交參數(shù)有幾個(gè)需要注意的點(diǎn):

  • submitURL 是以post方式上傳
  • extra 一個(gè)你可以定義的對(duì)象,附帶在崩潰報(bào)告上一起發(fā)送 . 只有字符串屬性可以被正確發(fā)送,不支持嵌套對(duì)象

3.3 渲染進(jìn)程功能模塊

渲染進(jìn)程的代碼大部分跟商家客服web端一致,很多只是遷移即可。

3.3.1 登錄改造

登錄信息本地化,在登錄成功的時(shí)候,把賬號(hào)信息緩存,下次打開應(yīng)用的時(shí)候客服無需再重新輸入,直接從緩存獲取即可。

圖片

3.3.2 靜態(tài)資源

傳統(tǒng)Web應(yīng)用,將項(xiàng)目代碼部署服務(wù)器,項(xiàng)目運(yùn)行時(shí),訪問的是服務(wù)器靜態(tài)資源,現(xiàn)在版本發(fā)布流程,走的是cdn資源,總而言之都是通過網(wǎng)絡(luò)獲取。

圖片

Electron提供將靜態(tài)資源打包到安裝程序,在安裝時(shí),將項(xiàng)目文件同步安裝到用戶電腦,使其具備訪問本地文件,減少了請(qǐng)求占用資源,一定程度上也能改善因網(wǎng)速問題導(dǎo)致的靜態(tài)資源不能實(shí)時(shí)獲取,頁(yè)面白屏問題。

圖片

3.3.3 數(shù)據(jù)存儲(chǔ)

Electron應(yīng)用里面的數(shù)據(jù)存儲(chǔ)是通過Electron-store第三方庫(kù)來實(shí)現(xiàn)的,實(shí)現(xiàn)比較簡(jiǎn)單,如下:

圖片

3.3.4 渲染進(jìn)程打包

這塊為什么要單拎出來講渲染進(jìn)程打包呢,是因?yàn)閣eb項(xiàng)目遷移變成應(yīng)用渲染進(jìn)程的時(shí)候不能像web應(yīng)用一樣直接打包,需要調(diào)整請(qǐng)求API代碼,API前綴需要區(qū)分本地調(diào)試和應(yīng)用環(huán)境:

圖片

使用Electron, 將項(xiàng)目打包成離線應(yīng)用。使用file協(xié)議,在本地讀取靜態(tài)資源。但是ajax請(qǐng)求如果用相對(duì)路徑,打包之后,會(huì)直接找到根目錄,如下截圖:

圖片

所以打包的時(shí)候需要給ajax提供完整的url路徑。

4

技術(shù)挑戰(zhàn)

在從0到1搭建商家客服桌面端的過程中,遇到了很多的問題,Electron社區(qū)雖然很活躍,但是不一樣場(chǎng)景遇到的問題,幾乎找不到對(duì)應(yīng)的解決方案,所以很多都是在探索過程中不斷的去完善。這里主要圍繞發(fā)布構(gòu)建流程和安全性來講下,我們是怎么解決的。

4.1 安全性問題

Electron客戶端的安全問題也是非常重要的,那都遇到了哪些安全問題以及我們又是如何解決的呢,具體如下:

  • 渲染進(jìn)程XSS:Electron實(shí)現(xiàn)的桌面端軟件渲染層的原理實(shí)際是通過chrome內(nèi)核渲染的,同樣存在XSS注入的風(fēng)險(xiǎn)。舉個(gè)例子:在html頁(yè)面中可以執(zhí)行命令:<img/src=x οnerrοr="require('child_process').exec('gnome-calculator')"> ,就可以打開當(dāng)前操作系統(tǒng)的計(jì)算器。接入了公司統(tǒng)一的XSS治理方案,該問題即得到解決。
  • 用戶認(rèn)證信息泄漏問題:商家客服桌面端登錄調(diào)用商家的授權(quán)接口,APP網(wǎng)關(guān)有校驗(yàn),可以確保登陸沒有問題;
  • 本地緩存明文讀取問題:本地?cái)?shù)據(jù)泄漏,例如:indexDB、localStorage、sessionStorage等,我們主要用加密和解密算法對(duì)本地緩存信息進(jìn)行處理。

沒有絕對(duì)的安全,我們能做的就是盡可能的提高安全門檻,過程中我們也積極同公司的安全部門進(jìn)行溝通,讓他們排查桌面端發(fā)布之后的安全漏洞,最終驗(yàn)證都是滿足安全標(biāo)準(zhǔn),符合發(fā)布的條件。

4.2 發(fā)布構(gòu)建流程

應(yīng)用發(fā)布涉及到渲染進(jìn)程和主進(jìn)程,渲染進(jìn)程主要是負(fù)責(zé)給主進(jìn)程提供渲染包,主進(jìn)程使用Electron-builder庫(kù)來打包部署所發(fā)布的包。

圖片

前面已經(jīng)說過,Electron的好處是可以無縫集成web端的業(yè)務(wù)邏輯代碼,這里上圖左邊紅色的是web端構(gòu)建出的產(chǎn)物,我們會(huì)把這部分構(gòu)建產(chǎn)物同步到主進(jìn)程的app/render目錄下,即渲染進(jìn)程目錄,這樣在打包應(yīng)用包的時(shí)候,就能集成渲染進(jìn)程的業(yè)務(wù)邏輯,而不需要維護(hù)兩份web端的代碼。

此方案還存在不少的缺陷,由于生產(chǎn)構(gòu)建環(huán)境需要window環(huán)境,所以暫時(shí)不支持在遠(yuǎn)程打包,目前都是在本地window機(jī)器上打出完整的包之后再上傳到CDN,商家客服通過加載CDN的更新包來替換本地安裝文件,實(shí)現(xiàn)軟件的本地安裝。

4.3 應(yīng)用更新問題

應(yīng)用開發(fā)離不開“更新”這個(gè)話題,比如飛書應(yīng)用會(huì)時(shí)不時(shí)彈出一個(gè)更新窗口,讓你選擇是否更新,商家客服在推廣桌面應(yīng)用之后,也存在更新這個(gè)問題。在業(yè)務(wù)快速發(fā)展的同時(shí),如何將業(yè)務(wù)需求更好的同步給商家使用,這是商家客服桌面應(yīng)用面臨的最大的挑戰(zhàn)。

4.3.1 全量更新

4.3.1.1 手動(dòng)下載安裝

最基礎(chǔ)的更新模式,主要思路是在打開app(其他時(shí)候也行,我們業(yè)務(wù)主要是打開app的時(shí)候)的時(shí)候訪問遠(yuǎn)程的json文件,文件內(nèi)容包含版本號(hào),更新內(nèi)容等等最新版本的信息,拿到遠(yuǎn)程版本號(hào)會(huì)跟本地應(yīng)用版本號(hào)做比較,如果版本號(hào)不一致,就詢問用戶是否更新,需要更新的話會(huì)下載到本地,用戶手動(dòng)點(diǎn)擊安裝即可。這個(gè)更新方式不推薦使用,如果你的應(yīng)用一年更新一次,ok,是可以這么做的。

圖片

4.3.2 增量更新

在網(wǎng)速快的情況下,全量更新跟增量更新幾乎是沒有區(qū)別的。但是網(wǎng)速慢的情況下它倆之間的差距會(huì)被放大,用戶體驗(yàn)不是很好。我們不能想當(dāng)然的以為所有用戶網(wǎng)速都很好,這是不現(xiàn)實(shí)的,所以不管是PC應(yīng)用還是移動(dòng)端應(yīng)用,大多數(shù)情況下是需要做增量更新。下面表格是網(wǎng)速不一樣情況下的下載耗時(shí)對(duì)比:


100M寬帶(網(wǎng)速快)

10M寬帶(網(wǎng)速慢)

耗時(shí)差距

說明

150M下載包耗時(shí)(模擬全量更新)

~12s

~120s

108s

在網(wǎng)速不一樣的情況下,全量更新耗時(shí)絕對(duì)值高,用戶體感不好

30M下載包耗時(shí)(模擬增量更新)

~2.4s

~24s

21.6s

增量更新耗時(shí)絕對(duì)值低,相對(duì)于全量更新用戶體感好很多

4.3.2.1  electron-updater

現(xiàn)在就開始介紹在商家客服應(yīng)用(windows應(yīng)用)中是怎么實(shí)現(xiàn)增量更新功能的。

更新在大的分類上區(qū)分全量以及增量更新,在每個(gè)小分類里面也區(qū)分強(qiáng)更新,弱更新(業(yè)務(wù)上的區(qū)分,底層實(shí)現(xiàn)沒區(qū)別)。簡(jiǎn)單來說,強(qiáng)更新指的是用戶必須更新,不更新將無法使用系統(tǒng)功能,弱更新指的是用戶想要的時(shí)候再去觸發(fā)應(yīng)用的更新,完全由用戶自主選擇。

圖片

更新流程

圖片

其中electron-updater作用于“更新應(yīng)用”這個(gè)節(jié)點(diǎn),主要是依賴新舊版本blockmap文件的對(duì)比來實(shí)現(xiàn)增量更新。下面截圖為electron-builder打包出來的release包,每次打包都會(huì)有對(duì)應(yīng)的blockmap文件。

圖片

electron-updater更新實(shí)現(xiàn)主要流程:

  • 生產(chǎn)的blockmap文件:
  • 使用7z壓縮安裝包
  • 讀取安裝包的header
  • 計(jì)算出每個(gè)file的offset和end得到相應(yīng)的hash生產(chǎn)blockmap
  • 使用blockmap文件:
  • 下載云上的blockmap文件跟本地blockmap文件對(duì)比,從上面截圖可以看出blockmap文件很小,所以下載并不會(huì)對(duì)應(yīng)用性能產(chǎn)生影響
  • 使用range,request(范圍請(qǐng)求)請(qǐng)求更新內(nèi)容的部分
4.3.2.2 文件替換

還有一種增量更新方式就是文件替換,只更新需要更新的模塊,這種方式只更新需要渲染進(jìn)程的資源,大部分情況下主進(jìn)程的資源不用更改,所以下載的資源會(huì)比較小,更新較快,因?yàn)槭窃诰€熱更新,更新完成后不用重新啟動(dòng)軟件,只需要刷新頁(yè)面重新加載資源即可。其實(shí)之前我覺的這樣的思路挺好的,看下面的流程圖也是可以實(shí)現(xiàn)的,也很符合商家客服桌面應(yīng)用產(chǎn)品需求。

圖片

可是后來發(fā)現(xiàn)其實(shí)忽略了以下兩個(gè)點(diǎn):

  • 替換用戶本地文件這個(gè)本身有權(quán)限問題,比如windows用戶安裝到了C盤,寫入文件是有管理員權(quán)限限制的;
  • 文件被占用問題,眾所周知,當(dāng)文件夾中存在正在被占用的文件時(shí),刪除會(huì)失敗。所以在覆蓋原文件同時(shí)需要退出應(yīng)用避免占用,所以這個(gè)方式也不是很可靠。

5、遇到的問題

  • Electron 的硬件加速功能,在 win7 或者 Linux 系統(tǒng)上,容易出現(xiàn)黑屏或者卡死。

解決方案:判斷是不是win7及以下系統(tǒng),如果是app.disableHardwareAcceleration (),禁用當(dāng)前應(yīng)用程序的硬件加速。

  • Uncaught ReferenceError: require is not defined,這個(gè)報(bào)錯(cuò)是試圖在渲染進(jìn)程使用node的時(shí)候出現(xiàn)的,不是不能用,只要開啟 主進(jìn)程的nodeIntegration: true就好了, 但不建議,有安全問題。

解決方案:

圖片

  • Note:you may have one or two (large) stale temporary file(s) left in your temporary directory (Generally this only happens on Windows 9x)這個(gè)是打包了半天都打不出來一個(gè)完整的包的情況下出現(xiàn)的。

解決方案:當(dāng)時(shí)是因?yàn)槲覜]刪除原來的包導(dǎo)致我放打包文件的C盤滿了。。。所以刪除一些緩存就好了,nsis打包大概率都是跟磁盤有關(guān)。

  • 下載npm包特別慢

解決方案:yarn安裝;Electron相關(guān)的包優(yōu)先使用淘寶鏡像安裝;使用公司鏡像安裝公司內(nèi)部包。

6、總結(jié)

一路開發(fā)下來,感慨很多,作為公司第一個(gè)Electron應(yīng)用,不管是在開發(fā)上,打包上,或者說在部署上,都遇到了一些挑戰(zhàn),在網(wǎng)上也沒有比較詳細(xì)的文檔,外面做的好的也不會(huì)把詳細(xì)方案分享出來,但是即使遇到了這些問題,也不能否認(rèn)Electron是目前最適配于我們業(yè)務(wù)目標(biāo)以及適配于開發(fā)資源的一個(gè)框架。目前已有線上穩(wěn)定版本,逐步在推廣到全部商家客服。接下來需要完善的開發(fā)流程,克服的技術(shù)難點(diǎn)有很多,商家客服工作臺(tái)應(yīng)用也會(huì)越來越完善。

責(zé)任編輯:武曉燕 來源: 得物技術(shù)
相關(guān)推薦

2024-12-03 11:59:53

2023-11-27 18:38:57

得物商家測(cè)試

2022-12-02 18:45:06

SOP機(jī)器人技術(shù)

2022-12-09 18:58:10

2022-10-20 14:35:48

用戶畫像離線

2025-03-20 10:47:15

2023-03-30 18:39:36

2025-11-11 01:55:00

2022-02-24 20:34:02

Dooring開發(fā)桌面端應(yīng)用

2023-02-06 18:35:05

架構(gòu)探測(cè)技術(shù)

2023-12-27 18:46:05

云原生容器技術(shù)

2023-10-09 18:35:37

得物Redis架構(gòu)

2025-03-13 06:48:22

2022-06-03 09:30:31

店鋪W3C體系渲染

2022-05-12 11:41:16

開發(fā)框架程序

2021-06-22 14:47:19

electronDooring架構(gòu)

2022-12-14 18:40:04

得物染色環(huán)境

2023-02-08 18:33:49

SRE探索業(yè)務(wù)

2022-10-26 18:44:33

藍(lán)紙箱設(shè)計(jì)數(shù)據(jù)

2025-07-31 00:00:25

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

色婷婷亚洲一区二区三区| 国产99一区视频免费| 亚洲最大在线视频| 国产在线观看中文字幕| 国产网红在线观看| 久久久久久久综合日本| 国产中文日韩欧美| 日韩欧美中文字幕一区二区| 成人同人动漫免费观看| 精品日韩一区二区三区免费视频| 18禁免费无码无遮挡不卡网站| h视频在线播放| 成人福利视频网站| 国产精品久久久久久久一区探花 | 97国产suv精品一区二区62| 欧美熟妇一区二区| 日韩欧美中文字幕在线视频 | 欧美日韩成人在线视频| mm131美女视频| 精品国产不卡一区二区| 色婷婷亚洲综合| 91九色丨porny丨国产jk| 69xxxx欧美| 久久亚洲免费视频| 99视频在线播放| 在线视频免费观看一区| 免费视频久久| 国产综合在线视频| 国产女片a归国片aa| 北条麻妃国产九九九精品小说| 精品国产乱码久久久久久免费 | 国产成人无码精品亚洲| 你懂的国产精品| 日韩在线视频线视频免费网站| 中文字幕狠狠干| 黑色丝袜福利片av久久| 日韩欧美一二三区| 不卡中文字幕在线观看| 日韩美女在线看免费观看| 福利一区视频在线观看| 日韩黄色片在线| 国产盗摄在线观看| 国产精品乱人伦中文| 日本黄网免费一区二区精品| 视频二区在线观看| 丁香啪啪综合成人亚洲小说 | 亚洲一区二区三区日本久久九| 欧美日韩黄色大片| 加勒比成人在线| 天天操天天爱天天爽| 你懂的在线视频| av福利精品导航| 国产一区二区三区四区五区加勒比| 国产免费av电影| 国产自产2019最新不卡| 91精品久久久久久久久中文字幕 | 欧美亚洲尤物久久| 久久国产色av免费观看| 超碰一区二区| 色狠狠av一区二区三区| 无人在线观看的免费高清视频| 黄色在线免费观看网站| 精品日韩视频在线观看| 免费看的黄色大片| 新片速递亚洲合集欧美合集| 色婷婷激情综合| 熟女人妇 成熟妇女系列视频| 原纱央莉成人av片| 欧美网站一区二区| 久久久久久久久久久久91| 成人免费一区| 91精品欧美福利在线观看| 亚洲综合欧美激情| 中文字幕日本一区| 精品国产一区二区三区av性色| 三级视频网站在线观看| 亚洲欧美日本伦理| 色妞色视频一区二区三区四区| 最新日韩免费视频| 欧美午夜电影在线观看 | 懂色av.com| 丝袜美腿一区二区三区| 成人激情视频小说免费下载| 性猛交富婆╳xxx乱大交天津| 不卡的av电影| 午夜视频久久久| 青草在线视频在线观看| 精品美女久久久久久免费| 国产一区视频免费观看| 成人免费91| 日韩成人在线网站| 大吊一区二区三区| 欧美日韩国内| 国产97在线亚洲| 国产一区二区在线视频聊天 | 好吊日免费视频| 久久在线视频| 97欧美精品一区二区三区| 日本一区二区三区久久| 国产999精品久久久久久绿帽| 久久精品日韩精品| 秋霞a级毛片在线看| 亚洲二区在线视频| 欧美成年人视频在线观看| 成人台湾亚洲精品一区二区 | 神马久久久久久久久久久| 亚洲精品一区二区在线看| 97精品视频在线播放| 伊人精品在线视频| 99精品1区2区| 女同性恋一区二区| 亚洲第一会所| 亚洲国产成人一区| 91免费公开视频| 久久国产精品亚洲77777| 91国产丝袜在线放| av电影在线网| 欧美日韩国产精品一区二区不卡中文 | 99在线高清视频在线播放| 黄色小视频在线观看| 亚洲一区二区综合| 色18美女社区| 精品视频国产| 浅井舞香一区二区| 免费看黄色一级视频| 中文字幕一区二区在线播放| 乱子伦视频在线看| 日韩精品免费一区二区夜夜嗨| 美女精品久久久| 最近中文字幕免费观看| 97se亚洲国产综合自在线| 粉嫩av一区二区三区天美传媒| 国产韩日精品| 国产午夜精品久久久| 久久久久久久国产精品毛片| 老司机精品视频在线| 欧美一区二区综合| 亚洲美女久久精品| 国产手机视频精品| 毛片基地在线观看| 成人激情av网| 欧美 日韩 亚洲 一区| 日韩精品一区二区三区中文在线 | 国内一区二区视频| 亚洲成人第一| 日本欧美韩国| 亚洲网在线观看| 波多野结衣视频免费观看| 久久综合视频网| 国产性xxxx18免费观看视频| 欧美电影在线观看完整版| 97久久久久久| 牛牛热在线视频| 在线欧美一区二区| 一区二区三区伦理片| 久久久久久夜| 亚洲精品高清视频| 亚洲日日夜夜| 欧美日韩不卡合集视频| 国产wwwxxx| 亚洲一区二区三区在线播放| 岛国av免费观看| 99精品视频网| 欧美在线一区二区三区四区| 51一区二区三区| 久久精品免费电影| 性一交一乱一伧老太| 亚洲第一狼人社区| 久久精品老司机| 日本在线播放一区二区三区| 亚洲图片欧洲图片日韩av| 91精品国产色综合久久不卡粉嫩| 久久最新资源网| 人妻少妇精品无码专区久久| 欧美视频在线视频| 后入内射无码人妻一区| 国产mv日韩mv欧美| 农村妇女精品一二区| 手机在线电影一区| 成人午夜电影免费在线观看| mm视频在线视频| 国产午夜一区二区| 999av视频| 精品国产鲁一鲁一区二区张丽 | 婷婷综合电影| 国产欧美 在线欧美| 国产一线二线在线观看| 国产午夜精品一区二区三区 | 国产精品一区二区视频| 黄色成人在线看| 成人羞羞动漫| 福利视频一区二区三区| 另类中文字幕国产精品| 欧美老女人性视频| 国产美女性感在线观看懂色av| 在线播放91灌醉迷j高跟美女| 精品视频一区二区在线观看| 国产亚洲短视频| 男人女人拔萝卜视频| 久久亚洲图片| 青草视频在线观看视频| 国产一区二区精品久| 91超碰在线电影| 日本少妇一区| 久久人人爽国产| 欧美jizz18hd性欧美| 亚洲级视频在线观看免费1级| 成人黄色片在线观看| 亚洲国产成人av网| jizzjizz日本少妇| 91视频观看视频| 杨幂一区二区国产精品| 久久综合五月| 青青青免费在线| 欧美激情第二页| 亚洲欧美日产图| 免费久久久久久久久| 97人人模人人爽视频一区二区| 色天使综合视频| 情事1991在线| 9999在线视频| 欧美激情精品久久久久久免费印度| eeuss影院在线播放| 日韩高清免费观看| 国产自产一区二区| 欧美一区二区精品| 夜夜狠狠擅视频| 欧美自拍偷拍午夜视频| 欧美三日本三级少妇99| 亚洲资源在线观看| 东方av正在进入| 国产精品久久久久国产精品日日| 亚洲色成人网站www永久四虎| av在线综合网| 一级黄色片毛片| 国产成人a级片| 成人三级做爰av| 国产成人综合亚洲网站| 91欧美一区二区三区| 蜜桃视频在线观看一区| 久久国产精品国产精品| 免费一级片91| 无需播放器的av| 日韩成人一区二区三区在线观看| 色诱视频在线观看| 久久免费黄色| 2025韩国理伦片在线观看| 日本少妇一区二区| 日本不卡一区在线| 精品午夜一区二区三区在线观看| 亚洲制服中文字幕| 国产一区二区三区免费在线观看| 中文字幕色网站| 国产经典欧美精品| 日韩黄色一区二区| 成人国产精品免费观看动漫| 婷婷五月精品中文字幕| 不卡视频一二三| 波多野结衣 在线| 日本一区二区综合亚洲| 国精产品一区一区| 亚洲欧洲精品一区二区三区| 超碰手机在线观看| 亚洲国产精品久久人人爱| 日韩乱码在线观看| 色综合久久66| 亚洲午夜激情视频| 日韩亚洲欧美在线| 五月激情婷婷综合| 亚洲人成电影网站色| 幼a在线观看| 欧美多人爱爱视频网站| 麻豆蜜桃在线观看| 国产精品久久久久aaaa九色| 亚洲欧洲一二区| 国产高清自拍一区| 国产欧美日韩在线观看视频| 亚洲五月六月| 激情综合久久| 精品久久久久久中文字幕2017| 久久电影网电视剧免费观看| 国产一级二级av| 久久久久久久久久美女| 色欲一区二区三区精品a片| 亚洲成人一区二区在线观看| chinese国产精品| 91精品国产入口在线| 五月天婷婷激情网| 丝袜亚洲另类欧美重口| 暖暖在线中文免费日本| 国产精品av在线播放| 国产精品日本一区二区三区在线 | 国产精品久久久久999| 精品一区91| 欧美日韩一区二区视频在线| 亚洲91视频| 能在线观看的av| 国产一区二区三区高清播放| av无码av天天av天天爽| 中文字幕一区二区三区在线播放| a v视频在线观看| 欧美美女黄视频| 青青草视频在线免费观看| 久久成人在线视频| 午夜欧美巨大性欧美巨大 | 亚洲乱码一区二区三区在线观看| 久久不卡免费视频| 日韩一级免费观看| av在线资源站| 欧美亚洲在线视频| 4438全国亚洲精品观看视频| 亚洲精品白虎| 久久久蜜桃一区二区人| 中文字幕天堂av| 亚洲精品水蜜桃| 91超薄丝袜肉丝一区二区| 亚洲欧美变态国产另类| av影视在线| 亚洲一区二区三区毛片 | 男人添女荫道口喷水视频| 日韩av中文在线观看| 亚洲精品女人久久久| 亚洲精品一二三| 一区二区三区免费在线视频| 亚洲色图激情小说| 五月天av在线| 国产精品自拍首页| 欧美视频官网| 午夜性福利视频| 亚洲欧美日韩在线不卡| 国产精品玖玖玖| 最近2019年中文视频免费在线观看| 在线男人天堂| 麻豆av一区二区三区| 野花国产精品入口| 国产精品一区二区人妻喷水| 夜色激情一区二区| www.色视频| 欧美猛男性生活免费| 日本精品一区二区三区在线观看视频| 亚洲无玛一区| 久草精品在线观看| 天天色天天综合| 欧美日韩国产片| 黄色一级片在线观看| 国产欧美日韩丝袜精品一区| 成人羞羞网站入口免费| 日日噜噜噜噜久久久精品毛片| 国产三级欧美三级| 中文字幕观看在线| 色偷偷888欧美精品久久久| 欧美电影免费看| 日韩欧美三级电影| 精品一区二区综合| 91人妻一区二区三区蜜臀| 日韩欧美一区二区三区在线| 污片在线免费观看| 国产日韩欧美亚洲一区| 在线一区视频| 免费网站在线高清观看| 欧美日韩精品一区视频| www在线免费观看视频| 亚洲综合自拍一区| 最新成人av网站| ass精品国模裸体欣赏pics| 欧日韩精品视频| 国产精品实拍| 国产欧美日韩亚洲| 老鸭窝毛片一区二区三区| 国产破处视频在线观看| 这里只有精品99re| 波多野结衣中文在线| 欧美日韩一区在线视频| 青青草伊人久久| 欧美日韩国产精品一区二区三区| 亚洲国产日韩欧美在线99| 欧洲av不卡| 懂色av一区二区三区四区五区| 国产99久久久国产精品免费看| 人妻丰满熟妇av无码区| 日韩在线观看免费av| av成人资源| 日本xxxxxxx免费视频| 亚洲品质自拍视频网站| 网站黄在线观看| 国产精品羞羞答答| 国产精品草草| 欧美三级视频网站| 日韩久久免费av| 韩国精品主播一区二区在线观看| 成年人三级视频| 久久看人人爽人人| 精品国产免费无码久久久| 欧美在线不卡区| 欧美 日韩 国产一区二区在线视频| 亚洲精品乱码久久| 91精品在线免费| 婷婷综合六月| 91精品国产毛片武则天| 国产视频一区二区三区在线观看|