国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當(dāng)前位置:首頁 > 科技  > 軟件

基于靜態(tài)編譯構(gòu)建微服務(wù)應(yīng)用

來源: 責(zé)編: 時(shí)間:2023-08-20 23:16:47 655觀看
導(dǎo)讀Java 的局限性傳統(tǒng)的一個(gè) Java 應(yīng)用從代碼編寫到啟動運(yùn)行大致可以分為如下步驟:首先,編寫 .java 源代碼程序。然后,借助 javac 工具將 .java 文件翻譯為 .class 的字節(jié)碼,字節(jié)碼是 Java 中非常重要的內(nèi)容之一,正是因?yàn)樗?/div>

圖片rih28資訊網(wǎng)——每日最新資訊28at.com

圖 1:Java 程序運(yùn)行過程rih28資訊網(wǎng)——每日最新資訊28at.com

上述過程既給 Java 程序帶來了其他編程語言不具備的優(yōu)勢,比如跨平臺,易上手等。但同時(shí)也給 Java 程序帶來了一些性能問題,比如啟動速度慢和運(yùn)行時(shí)內(nèi)存占用高等。rih28資訊網(wǎng)——每日最新資訊28at.com

冷啟動問題

圖 1 中 Java 程序啟動運(yùn)行詳細(xì)過程如下圖 2 所示:rih28資訊網(wǎng)——每日最新資訊28at.com

圖片rih28資訊網(wǎng)——每日最新資訊28at.com

圖 2:Java 程序的啟動過程分析[1]rih28資訊網(wǎng)——每日最新資訊28at.com

一個(gè) Java 應(yīng)用啟動過程首先需要加載該應(yīng)用程序?qū)?yīng)的 JVM 虛擬機(jī)軟件程序到內(nèi)存中,如上圖紅色部分描述所示。然后 JVM 虛擬機(jī)再加載對應(yīng)的應(yīng)用程序到內(nèi)存中,該過程對應(yīng)上圖中的淺藍(lán)色類加載(Class Load,CL)部分。在類加載過程中,應(yīng)用程序就會開始被解釋執(zhí)行,對應(yīng)上圖中淺綠色部分。解釋執(zhí)行過程 JVM 對垃圾對象進(jìn)行回收,對應(yīng)上圖中的黃色部分。隨著程序的運(yùn)行的深入,JVM 會采用及時(shí)編譯(Just In Time,JIT)技術(shù)對執(zhí)行頻率較高的代碼進(jìn)行編譯優(yōu)化,以便提升應(yīng)用程序運(yùn)行速度。JIT 過程對應(yīng)上圖中的白色部分。經(jīng)過 JIT 編譯優(yōu)化后的代碼對應(yīng)圖中深綠色部分。rih28資訊網(wǎng)——每日最新資訊28at.com

經(jīng)過上述分析,不難看出,一個(gè) Java 程序從啟動到達(dá)到被JIT動態(tài)編譯優(yōu)化會經(jīng)過 VM init,App init 和 App active 幾個(gè)階段,相比于其他一些編譯型語言,其冷啟動問題比較嚴(yán)重。rih28資訊網(wǎng)——每日最新資訊28at.com

運(yùn)行時(shí)內(nèi)存占用高問題

除了冷啟動問題,從上述分析中不難看出,一個(gè) Java 程序運(yùn)行過程中,什么都不做首先就需要加載一個(gè) JVM 虛擬機(jī),該操作一般占用一定內(nèi)存。另外,由于 Java 程序是先解釋執(zhí)行字節(jié)碼,然后再做 JIT 編譯優(yōu)化。rih28資訊網(wǎng)——每日最新資訊28at.com

由于相比于一些編譯型語言其將編譯優(yōu)化的動作后置到運(yùn)行時(shí),因此非常容易出現(xiàn)實(shí)際加載的代碼比實(shí)際需要運(yùn)行的代碼多很多的情況,造成了一些無效內(nèi)存占用情況。綜上所述就是為什么很多人常詬病 Java 程序運(yùn)行內(nèi)存占用高的幾點(diǎn)主要原因。rih28資訊網(wǎng)——每日最新資訊28at.com

更輕量化的 Java 程序

靜態(tài)編譯技術(shù)

既然,先解釋執(zhí)行再動態(tài)編譯的 Java 傳統(tǒng)程序運(yùn)行方式存在上述諸多問題,那有沒有一些方式可以讓 Java 程序也跟其他程序語言,比如 C/C++ 一樣,先編譯后執(zhí)行解決上述問題呢?rih28資訊網(wǎng)——每日最新資訊28at.com

答案是肯定的,提前編譯(Ahead-of-Time Compilation,AOT Compilation)或者叫靜態(tài)編譯在 Java 領(lǐng)域很早就被提了出來。其核心思想就是將 Java 程序的編譯階段提前到程序啟動前,然后在編譯階段進(jìn)行代碼編譯優(yōu)化,讓程序啟動既巔峰,消除冷啟動,降低運(yùn)行時(shí)內(nèi)存開銷。rih28資訊網(wǎng)——每日最新資訊28at.com

Java 領(lǐng)域靜態(tài)編譯的實(shí)現(xiàn)技術(shù)有很多,其中最具代表性的還屬 Oracle 推出的 GraalVM 開源高性能多語言運(yùn)行時(shí)平臺[2]。看到這里有的讀者可能會問:“高性能多語言運(yùn)行時(shí)平臺是什么?它跟靜態(tài)編譯本身有什么關(guān)系?”。rih28資訊網(wǎng)——每日最新資訊28at.com

圖片rih28資訊網(wǎng)——每日最新資訊28at.com

圖 3:GraalVM 多語言運(yùn)行時(shí)平臺rih28資訊網(wǎng)——每日最新資訊28at.com

如上圖 3 所示,GraalVM 中通過提供 Truffle 解釋器實(shí)現(xiàn)框架,讓開發(fā)人員可以使用 Truffle 提供的 API 快速實(shí)現(xiàn)特定語言的解釋器從而實(shí)現(xiàn)對上圖中各種編程語言所寫的程序都能進(jìn)行編譯運(yùn)行的效果,從而成為一個(gè)多語言運(yùn)行時(shí)平臺。GraalVM 實(shí)現(xiàn)靜態(tài)編譯能力的編譯器就是 GraalVM JIT Compiler。靜態(tài)編譯框架和運(yùn)行時(shí)由 Substrate VM 子項(xiàng)目實(shí)現(xiàn),兼容 OpenJDK 運(yùn)行時(shí)實(shí)現(xiàn),提供了原生鏡像程序運(yùn)行時(shí)的異常處理、同步調(diào)度、線程管理、內(nèi)存管理等功能。rih28資訊網(wǎng)——每日最新資訊28at.com

因此,GraalVM 不僅可以作為一個(gè)多語言運(yùn)行時(shí)平臺,而且由于其中提供的 GraalVM JIT Compiler 靜態(tài)編譯器,其可用來對 Java 程序進(jìn)行靜態(tài)編譯。rih28資訊網(wǎng)——每日最新資訊28at.com

說完靜態(tài)編譯和 GraalVM 之間的關(guān)系,有的讀者可能會好奇,基于 GraalVM 的靜態(tài)編譯與常規(guī)的 JVM 解釋執(zhí)行方式有哪些區(qū)別?基于靜態(tài)編譯的 Java 程序相比于目前應(yīng)用廣泛的 JVM 運(yùn)行時(shí)編譯 Java 程序整個(gè)從代碼編寫到編譯執(zhí)行的區(qū)別如下圖 4 所示:rih28資訊網(wǎng)——每日最新資訊28at.com

圖片rih28資訊網(wǎng)——每日最新資訊28at.com

圖 4:靜態(tài)編譯與傳統(tǒng) JVM 運(yùn)行過程對比rih28資訊網(wǎng)——每日最新資訊28at.com

相比于 JVM 運(yùn)行時(shí)方式,靜態(tài)編譯在運(yùn)行之前會先對程序解析編譯,然后生成一個(gè)跟運(yùn)行時(shí)環(huán)境強(qiáng)相關(guān)的 native image 可執(zhí)行文件,最后直接執(zhí)行該文件即可啟動程序進(jìn)行執(zhí)行。rih28資訊網(wǎng)——每日最新資訊28at.com

說到這里可能有的讀者又好奇,上圖 4 中的靜態(tài)編譯過程到底會對 Java 程序做哪些解析操作?靜態(tài)編譯后的可執(zhí)行程序垃圾回收問題怎么解決?如下圖 5 所示,其描述了 GraalVM 靜態(tài)編譯技術(shù)實(shí)現(xiàn)中編譯過程的輸入與輸出內(nèi)容。rih28資訊網(wǎng)——每日最新資訊28at.com

圖片rih28資訊網(wǎng)——每日最新資訊28at.com

圖 5:靜態(tài)編譯輸入輸出rih28資訊網(wǎng)——每日最新資訊28at.com

圖 5 中左側(cè)前三個(gè)輸入內(nèi)容 Applicaton,Libraries 和 JDK 是一個(gè) Java 程序編譯運(yùn)行必備的三部分,不必多說。而 Substrate VM 就是 GraalVM 中實(shí)現(xiàn)靜態(tài)編譯的核心部分,在整個(gè)靜態(tài)編譯過程中扮演了重要作用。rih28資訊網(wǎng)——每日最新資訊28at.com

其中在靜態(tài)分析過程中,如上圖 5 中間部分中所繪制,Substrate VM 通過上下文不敏感的指向分析(Points-to Analysis)來對應(yīng)用程序做靜態(tài)分析,其可以在不需要運(yùn)行程序的情況下,基于源程序分析給出所有可能的可達(dá)函數(shù)列表然后作為后續(xù)編譯階段的輸入對程序進(jìn)行靜態(tài)編譯。該過程由于靜態(tài)分析的局限性,無法覆蓋 Java 中的反射、動態(tài)代理、JNI 調(diào)用等動態(tài)特性。這也造成了很多的 Java 框架由于在實(shí)現(xiàn)過程中使用了大量的上述特性,因此,都難以直接基于 Substrate VM 完成對自身所有代碼的靜態(tài)分析,需要通過額外的外部配置[3]來解決靜態(tài)分析本身的不足。rih28資訊網(wǎng)——每日最新資訊28at.com

例如像 Spring 社區(qū)因此開發(fā)了 AOT Engine[4]如下圖 6 所示來幫助解決 Spring 項(xiàng)目對其中的反射,動態(tài)代理等內(nèi)容進(jìn)行靜態(tài)分析處理并將其轉(zhuǎn)換為 Substrate VM 能在編譯階段可識別的內(nèi)容,確保對 Spring 應(yīng)用可基于 Substrate VM 順利完成靜態(tài)編譯。rih28資訊網(wǎng)——每日最新資訊28at.com

圖片rih28資訊網(wǎng)——每日最新資訊28at.com

圖 6:Spring AOT Enginerih28資訊網(wǎng)——每日最新資訊28at.com

在靜態(tài)分析完成后,基于靜態(tài)分析結(jié)果的可達(dá)函數(shù)列表,調(diào)用上文介紹的 GraalVM 中的 GraalVM JIT Compiler 編譯器將應(yīng)用程序編譯為與目標(biāo)平臺強(qiáng)相關(guān)的本地代碼以完成編譯過程。rih28資訊網(wǎng)——每日最新資訊28at.com

編譯完成后,就會進(jìn)入到上圖 5 右側(cè) Native 可執(zhí)行文件生成階段。在該過程中,Substrate VM 會將靜態(tài)編譯階段確定和初始化的內(nèi)容以及跟 Substrate VM 運(yùn)行時(shí)以及 JDK 庫中的數(shù)據(jù)一起保存到最終可執(zhí)行文件的 Image Heap 中。其中 Substrate VM 運(yùn)行時(shí)就為最終可執(zhí)行文件提供了運(yùn)行過程中所需的垃圾回收、異常處理等能力。對于垃圾回收這塊,在一開始的 GraalVM 社區(qū)版中僅提供了 Serial GC。企業(yè)版中提供了能力更強(qiáng)的 G1 GC。不過在最新的社區(qū)版中 GraalVM 團(tuán)隊(duì)也引入了 G1 GC[5]以便為廣大開發(fā)者提供更強(qiáng)大的靜態(tài)編譯使用能力。rih28資訊網(wǎng)——每日最新資訊28at.com

適配 GraalVM 靜態(tài)編譯

上節(jié),簡單介紹了靜態(tài)編譯技術(shù)以及其本身的局限性以后,很多外部社區(qū)開發(fā)者這時(shí)可能會疑問,一個(gè) Java 開源項(xiàng)目如何快速進(jìn)行靜態(tài)編譯適配?對于這個(gè)問題,其實(shí)最核心要解決的本質(zhì)問題就是將開源框架中的 GraalVM 無法識別和處理的動態(tài)內(nèi)容轉(zhuǎn)換為其可識別的內(nèi)容即可。因此該問題由于不同框架情況不一樣,因此解決方式也會有一些差異。例如在 Spring 中,針對其自身框架開發(fā)的 AOT Engine 可以解決其框架提供的通過 @Configuration 注解注冊類初始化過程無法在靜態(tài)編譯階段被識別、提前在靜態(tài)編譯期生成原本在運(yùn)行階段才能生成的動態(tài)代理類解決直接靜態(tài)編譯代理類無法被有效生成等問題[6]從而實(shí)現(xiàn) Spring 應(yīng)用的靜態(tài)編譯適配。rih28資訊網(wǎng)——每日最新資訊28at.com

對于很多基于 Spring 實(shí)現(xiàn)的開源框架,如果本身無法被 GraalVM 識別的動態(tài)特性都是由于 Spring 標(biāo)準(zhǔn)的那一套用法所導(dǎo)致,由于自身屬于 Spring 體系,靜態(tài)編譯過程就肯定少不了 Spring AOT Engine 的參與,因此,框架自身就不需要再提供任何適配就可以具備靜態(tài)編譯能力。rih28資訊網(wǎng)——每日最新資訊28at.com

對于非 Spring 體系項(xiàng)目或者自身使用了一些 JDK 中原生的反射或者其他 Java 動態(tài)特性,針對自身代碼中的 Java 動態(tài)用法需要在項(xiàng)目中提供對應(yīng)的靜態(tài)配置文件才能在靜態(tài)編譯過程中讓編譯器識別其中的動態(tài)特性,對其進(jìn)行編譯構(gòu)建才能實(shí)現(xiàn)項(xiàng)目的順利編譯與執(zhí)行。針對這種情況,GraalVM 提供了一個(gè)名叫 native-image-agent 的 Tracing Agent 來幫助大家更方便地收集元數(shù)據(jù)并準(zhǔn)備配置文件。該 Agent 會在常規(guī) Java VM 上的應(yīng)用程序運(yùn)行過程中自動收集其中的動態(tài)特性使用情況并將其轉(zhuǎn)換為 GraalVM 可以識別的配置文件。最后,將通過 Agent 生成的框架自身的動態(tài)配置文件存放在項(xiàng)目的:META-INF/native-image/<group.id>/<artifact.id> 目錄下,就可以在靜態(tài)編譯過程中根據(jù)這些配置內(nèi)容,識別項(xiàng)目包中的動態(tài)特性。rih28資訊網(wǎng)——每日最新資訊28at.com

Spring Cloud Alibaba 2022.0.0.0 版本所包含的所有中間件客戶端目前已完成了構(gòu)建 GraalVM 原生應(yīng)用的適配。由于項(xiàng)目自身的特定,項(xiàng)目整體實(shí)現(xiàn)中有大量的 Spring 語法導(dǎo)致的無法被 GraalVM 識別的動態(tài)特性用法,這塊內(nèi)容直接交由 Spring AOT Engine 來進(jìn)行解決,社區(qū)未做額外適配工作。rih28資訊網(wǎng)——每日最新資訊28at.com

除了 Spring 體系語法,項(xiàng)目本身還是有一些其他 Java 動態(tài)用法的,這塊社區(qū)通過 native-image-agent 來進(jìn)行解析與動態(tài)配置生成。rih28資訊網(wǎng)——每日最新資訊28at.com

基于靜態(tài)編譯構(gòu)建微服務(wù)

Spring Cloud Alibaba 2022.0.0.0 版本所包含的所有中間件客戶端已完成了構(gòu)建 GraalVM 原生應(yīng)用的適配。為用戶提供了開箱即用的靜態(tài)編譯能力。相關(guān)功能體驗(yàn)過程如下:rih28資訊網(wǎng)——每日最新資訊28at.com

環(huán)境準(zhǔn)備

首先需要在首先在機(jī)器上安裝 GraalVM 發(fā)行版。您可以在 Liberica Native Image Kit 頁面上手動下載它,也可以使用像 SDKMAN! 這樣的下載管理器。本文演示環(huán)境為 MacOS,如果是 Windows 可參考相應(yīng)文檔[7]進(jìn)行操作。執(zhí)行以下命令安裝 GraalVM 環(huán)境:rih28資訊網(wǎng)——每日最新資訊28at.com

$ sdk install java 22.3.r17-nik$ sdk use java 22.3.r17-nik

通過檢查 java -version 的輸出來驗(yàn)證是否配置了正確的版本:rih28資訊網(wǎng)——每日最新資訊28at.com

$ java -versionopenjdk version "17.0.5" 2022-10-18 LTSOpenJDK Runtime Environment GraalVM 22.3.0 (build 17.0.5+8-LTS)OpenJDK 64-Bit Server VM GraalVM 22.3.0 (build 17.0.5+8-LTS, mixed mode)

應(yīng)用構(gòu)建

要使用 GraalVM 靜態(tài)編譯能力構(gòu)建微服務(wù),首先確保您項(xiàng)目的 Spring Boot 版本為 3.0.0 或以上,Spring Cloud 版本為 2022.0.0 或以上。然后在項(xiàng)目中引入 Spring Cloud Alibaba 2022.0.0.0 版本的所需模塊依賴即可。rih28資訊網(wǎng)——每日最新資訊28at.com

通過以下命令生成應(yīng)用中反射、序列化和動態(tài)代理所需的 Hints 配置文件,前提是應(yīng)用中引入了 spring-boot-starter-parent 父模塊:rih28資訊網(wǎng)——每日最新資訊28at.com

$ mvn -Pnative spring-boot:run

之后應(yīng)用會啟動,進(jìn)行預(yù)執(zhí)行,需要盡可能完整的測試一遍應(yīng)用的所有功能,保證應(yīng)用的大部分代碼都被測試用例覆蓋,該過程會基于 GraalVM 的 native-image-agent 收集程序中的動態(tài)特性,這樣可以確保完整生成應(yīng)用運(yùn)行過程中的所有必須的動態(tài)屬性。運(yùn)行完所有測試用例后,我們發(fā)現(xiàn) resource/META-INF/native-image 目錄下會生成以下一些 hints 文件:rih28資訊網(wǎng)——每日最新資訊28at.com

  • resource-config.json:應(yīng)用中資源 hint 文件
  • reflect-config.json:應(yīng)用中反射定義 hint 文件
  • serialization-config.json:應(yīng)用中序列化內(nèi)容 hint 文件
  • proxy-config.json:應(yīng)用中 Java 代理相關(guān)內(nèi)容 hint 文件
  • jni-config.json:應(yīng)用中 Java Native Interface(JNI)內(nèi)容 hint 文件

注意事項(xiàng):Spring Cloud Alibaba 2022.0.0.0 正式版本所有核心模塊都已經(jīng)默認(rèn)將自身組件相關(guān)動態(tài)特性所需的配置內(nèi)容都包含在了依賴中,因此上述預(yù)執(zhí)行過程主要為了掃描應(yīng)用自身業(yè)務(wù)代碼以及其他第三方包中的動態(tài)特性,以便后續(xù)靜態(tài)編譯過程能順利進(jìn)行,應(yīng)用能正常啟動。rih28資訊網(wǎng)——每日最新資訊28at.com

靜態(tài)編譯

以上步驟一切準(zhǔn)備就緒后,通過以下命令來構(gòu)建原生鏡像:rih28資訊網(wǎng)——每日最新資訊28at.com

$ mvn -Pnative native:compile

成功執(zhí)行后,我們在 /target 目錄可以看到生成的可執(zhí)行文件。rih28資訊網(wǎng)——每日最新資訊28at.com

程序運(yùn)行

與普通可執(zhí)行文件無異,通過 target/xxx 啟動應(yīng)用, 可以觀察到類似如下的輸出:rih28資訊網(wǎng)——每日最新資訊28at.com

2023-08-01T17:21:21.006+08:00  INFO 65431 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''2023-08-01T17:21:21.008+08:00  INFO 65431 --- [           main] c.a.cloud.imports.examples.Application   : Started Application in 0.553 seconds (process running for 0.562)

采用 GraalVM 靜態(tài)編譯技術(shù)的新版本 Spring Cloud Alibaba 應(yīng)用,所有核心能力在啟動速度和內(nèi)存占用率方面如下表所示都有顯著改善。rih28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片rih28資訊網(wǎng)——每日最新資訊28at.com

說明:上述測試代碼樣例來自 Spring Cloud Alibaba 項(xiàng)目中的 examples 模塊,4c16g Mac 環(huán)境,每組數(shù)據(jù)測試 3 次取平均,具體數(shù)據(jù)因機(jī)器不同可能會有差異。rih28資訊網(wǎng)——每日最新資訊28at.com

相關(guān)鏈接:rih28資訊網(wǎng)——每日最新資訊28at.com

[1] Java 程序的啟動過程分析rih28資訊網(wǎng)——每日最新資訊28at.com

https://shipilev/talks/j1-Oct2011-21682-benchmarking.pdfrih28資訊網(wǎng)——每日最新資訊28at.com

[2] GraalVM 開源高性能多語言運(yùn)行時(shí)平臺rih28資訊網(wǎng)——每日最新資訊28at.com

https://www.oracle.com/java/graalvm/rih28資訊網(wǎng)——每日最新資訊28at.com

[3] 外部配置rih28資訊網(wǎng)——每日最新資訊28at.com

https://www.graalvm.org/latest/reference-manual/native-image/metadata/rih28資訊網(wǎng)——每日最新資訊28at.com

[4] AOT Enginerih28資訊網(wǎng)——每日最新資訊28at.com

https://spring.io/blog/2021/12/09/new-aot-engine-brings-spring-native-to-the-next-levelrih28資訊網(wǎng)——每日最新資訊28at.com

[5] G1 GCrih28資訊網(wǎng)——每日最新資訊28at.com

https://medium.com/graalvm/a-new-graalvm-release-and-new-free-license-4aab483692f5rih28資訊網(wǎng)——每日最新資訊28at.com

[6] 動態(tài)代理類等問題rih28資訊網(wǎng)——每日最新資訊28at.com

https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html#native-image.introducing-graalvm-native-images.understanding-aot-processingrih28資訊網(wǎng)——每日最新資訊28at.com

[7] 相應(yīng)文檔rih28資訊網(wǎng)——每日最新資訊28at.com

https://medium.com/graalvm/using-graalvm-and-native-image-on-windows-10-9954dc071311rih28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-6164-0.html基于靜態(tài)編譯構(gòu)建微服務(wù)應(yīng)用

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 如何編寫技術(shù)文檔?

下一篇: 系統(tǒng)架構(gòu)設(shè)計(jì)之?dāng)?shù)據(jù)同步策略

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 紅魔電競平板評測:大屏幕硬實(shí)力

    前言:三年的疫情因?yàn)橐暇W(wǎng)課的原因激活了平板市場,如今網(wǎng)課的時(shí)代已經(jīng)過去,大家的生活都恢復(fù)到了正軌,這也就意味著,真正考驗(yàn)平板電腦生存的環(huán)境來了。也就是面對著這種殘酷的
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團(tuán)隊(duì)做了容器化,但是帶來的問題是服務(wù)配置文件很麻煩,然后大家在群里進(jìn)行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨(dú)立配置中心和k8s作為配
  • 重估百度丨“晚熟”的百度云,能等到春天嗎?

    &copy;自象限原創(chuàng)作者|程心排版|王喻可2016年7月13日,百度云計(jì)算戰(zhàn)略發(fā)布會在北京舉行,宣告著百度智能云的正式啟程。彼時(shí)的會場座無虛席,甚至排隊(duì)排到了門外,在場的所有人幾乎都
  • 花7萬退貨退款無門:誰在縱容淘寶珠寶商家造假?

    來源:極點(diǎn)商業(yè)作者:楊銘在淘寶購買珠寶玉石后,因?yàn)楸WC金不夠賠付,店鋪關(guān)閉,退貨退款難、維權(quán)無門的比比皆是。&ldquo;提供相關(guān)產(chǎn)品鑒定證書,支持全國復(fù)檢,可以30天無理由退換貨。&
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元&ldquo;人在職場,應(yīng)該選擇什么樣的著裝?&rdquo;近日,在網(wǎng)絡(luò)上,一個(gè)與著裝相關(guān)的帖子引發(fā)關(guān)注,在該帖子里,一位在高級寫字樓亞洲金
  • 網(wǎng)紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業(yè)評論6月26日高調(diào)宣布入市,網(wǎng)絡(luò)名嘴大v胡錫進(jìn)居然進(jìn)軍了股市。在一次財(cái)經(jīng)媒體峰會上,幾個(gè)財(cái)經(jīng)圈媒體大佬就&ldquo;胡錫進(jìn)炒股是否知道認(rèn)真報(bào)道&rdquo;展開討論。有
  • 華為將推出盤古數(shù)字人大模型 可幫助用戶12小時(shí)完成數(shù)字人生成

    在今日舉行的2023年華為云數(shù)字文娛AI創(chuàng)新峰會上,華為云全球Marketing與銷售服務(wù)總裁石冀琳表示,華為云將在后續(xù)推出盤古數(shù)字人大模型,可幫助用戶12小
  • 2納米決戰(zhàn)2025

    集微網(wǎng)報(bào)道 從三強(qiáng)爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進(jìn)制程領(lǐng)先地位的英特爾,甚至初成立不久的新
  • iQOO 11S新品發(fā)布會

    iQOO將在7月4日19:00舉行新品發(fā)布會,推出杭州亞運(yùn)會電競賽事官方用機(jī)iQOO 11S。
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
麻豆精品91| 亚洲不卡av一区二区三区| 欧美日韩激情在线| 亚洲一区中文| 西西人体一区二区| 麻豆91精品| 久久久久久久久久久久久9999| 国产亚洲成人一区| 国产精品日本一区二区| 久久精品综合| 欧美亚洲国产一区二区三区va| 欧美性一二三区| 欧美人伦禁忌dvd放荡欲情| 7777精品伊人久久久大香线蕉最新版 | 免费观看久久久4p| 国内成人免费视频| 国产精选一区二区三区| 成人小视频免费观看| 99久久久久久| 黑人巨大精品欧美一区二区小视频| 亚洲国产日韩在线| 美女诱惑一区| 欧美三级资源在线| wwwwww.欧美系列| 国产精品乱码人人做人人爱| 亚洲自拍偷拍av| 久久99国产精品免费| 国产电影精品久久禁18| 你懂的成人av| 免费日韩精品中文字幕视频在线| 91久久精品日日躁夜夜躁欧美| 欧美理论在线播放| 国产欧美日韩不卡免费| 亚洲一区二区三区爽爽爽爽爽| 美女一区二区久久| jiyouzz国产精品久久| 日韩一级网站| 欧美巨大另类极品videosbest | 99视频热这里只有精品免费| 亚洲动漫精品| 7777精品伊人久久久大香线蕉的| 久久婷婷一区二区三区| 亚洲国产综合人成综合网站| 国产一区二区三区香蕉| 欧美日韩精品免费看| 色综合久久久久| 久久精品视频一区二区三区| 亚洲国产视频在线| 暴力调教一区二区三区| 国产精品一页| 久久伊人中文字幕| 午夜电影一区二区| av在线不卡电影| 久久精品国语| 国产欧美日韩另类一区| 老司机免费视频一区二区三区| 91免费在线播放| 欧美在线免费观看亚洲| 国产精品免费观看视频| 国产综合色视频| 校园激情久久| 国产亚洲精品超碰| 国内精品在线播放| 国产精品久久久一区二区| 欧美成人一区二区三区在线观看 | 精品午夜久久福利影院| 国产私拍一区| 久久久精品免费免费| 久久99深爱久久99精品| 亚洲一区二区三区四区中文| 久久久久99精品一区| 韩国女主播成人在线观看| 午夜亚洲性色视频| 中文字幕一区二区三区四区 | 成人自拍视频在线观看| 色婷婷精品久久二区二区蜜臀av | 天堂蜜桃一区二区三区| 亚洲精品看片| 欧美国产一区在线| 不卡av免费在线观看| 欧美日韩精品欧美日韩精品| 亚洲v精品v日韩v欧美v专区| 在线电影一区| 中文天堂在线一区| 91丨porny丨户外露出| 欧美一区二区日韩一区二区| 精品在线免费观看| 日本韩国欧美三级| 亚洲国产日韩av| 国产一区二区三区久久| 亚洲日本在线a| 激情自拍一区| 日韩久久一区二区| 欧美午夜不卡| 国产精品久久久久永久免费观看| 91亚洲大成网污www| 欧美va亚洲va在线观看蝴蝶网| 国产激情一区二区三区四区| 欧美日本免费一区二区三区| 韩国毛片一区二区三区| 欧美美女一区二区在线观看| 看国产成人h片视频| 欧美性猛片aaaaaaa做受| 久久成人羞羞网站| 欧美高清一级片在线| 国产精品夜夜嗨| 日韩一区二区免费视频| 99久久夜色精品国产网站| 久久综合av免费| 国产精品hd| 一区二区三区欧美亚洲| 老牛国产精品一区的观看方式| 天堂成人免费av电影一区| 欧美伊人久久大香线蕉综合69| 精品一区二区在线播放| 欧美一区二区三区视频在线 | 国产精品播放| 一区二区三区丝袜| 久久综合狠狠| 国产精品亚洲第一| 国产欧美一区二区精品性色超碰| 欧美日韩在线一二三| 亚洲一区自拍偷拍| 欧美综合一区二区| 国产suv精品一区二区6| 欧美高清一级片在线观看| av成人天堂| 捆绑调教美女网站视频一区| 欧美成人女星排行榜| 国产精品草草| 日韩精品久久理论片| 日韩欧美一级在线播放| 欧美日韩一区二区高清| 亚洲国产精品影院| 制服丝袜一区二区三区| 欧美体内she精视频在线观看| 亚洲大型综合色站| 91精品国产aⅴ一区二区| 狠久久av成人天堂| 日av在线不卡| 国产欧美综合在线观看第十页| 香蕉成人久久| 不卡视频免费播放| 亚洲永久精品国产| 精品少妇一区二区三区免费观看| 亚洲看片一区| 国产精品亚洲第一| 一区二区三区免费看视频| 91精品国产免费| 国产精品久久九九| 不卡高清视频专区| 青青草97国产精品免费观看| 国产亚洲欧美中文| 欧美性xxxxx极品少妇| 欧美不卡在线| 韩国中文字幕2020精品| 亚洲精品视频一区二区| 日韩女同互慰一区二区| 久久久青草婷婷精品综合日韩| 99视频超级精品| 美女视频黄 久久| 亚洲日本在线视频观看| 精品国精品国产| 欧美影院一区二区| 亚洲精品一二| 99久久夜色精品国产网站| 裸体在线国模精品偷拍| 亚洲人成7777| 国产日韩欧美精品电影三级在线| 欧美四级电影在线观看| 中文一区二区| 国产精品久久7| 成人精品电影在线观看| 欧美96一区二区免费视频| 亚洲天堂精品视频| 久久久99久久精品欧美| 欧美精品777| 91国产成人在线| 国产一区二区三区奇米久涩 | 欧美tickling网站挠脚心| 日本精品视频一区二区三区| 99精品99| 亚洲第一伊人| 欧美日韩网址| 91麻豆123| 99久久99久久久精品齐齐| 国产在线看一区| 美国三级日本三级久久99| 亚洲午夜精品在线| 成人免费在线播放视频| 欧美激情综合在线| 久久久亚洲午夜电影| 日韩一区二区视频| 91精品国产综合久久小美女| 欧美系列一区二区| 欧美午夜精品一区| 91国偷自产一区二区三区观看 | 一本色道久久综合| 亚洲电影av| 夜夜嗨一区二区三区|