成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文帶你了解SkyWalking

開發 架構
Apache SkyWalking是一款功能強大的APM系統,可以幫助開發人員和運維人員更好地了解分布式系統的性能狀況。通過使用SkyWalking,可以提高應用程序的穩定性和性能,降低運維成本。

Apache SkyWalking

SkyWalking是一個開源可觀測平臺,用于收集、分析、聚合和可視化來自服務和云原生基礎設施的數據。SkyWalking 提供了一種簡單的方法來保持分布式系統的清晰視圖,甚至跨云。它是一種現代APM,專為云原生、基于容器的分布式系統而設計。

文檔版本8.9.1,當前最新版本9.10

圖片圖片

介紹

SkyWalking 是一個應用性能監控系統(APM)

為微服務、云原生和基于容器(Docker, Kubernetes, Mesos)體系結構而設計,主要實現功能包括分布式追蹤,性能指標分析和服務依賴分析等

相似產品與對比

類似功能的組件還有:Zipkin、Pinpoint 、CAT、Dapper等

  • Zipkin是Twitter開源的調用鏈路分析工具,目前基于Spingcloud sleuth得到了廣泛的應用,特點是輕量,部署簡單。
  • 一個韓國團隊開源的產品,運用了字節碼增強技術,只需要在啟動時添加啟動參數即可,對代碼無侵入,目前支持Java和PHP語言,底層采用HBase來存儲數據,探針收集的數據- 粒度非常細,但性能損耗大,因其出現的時間較長,完成度也很高,應用的公司較多
  • Skywalking是本土開源的基于字節碼注入的調用鏈路分析以及應用監控分析工具,特點是支持多種插件,UI功能較強,接入端無代碼侵入。
  • CAT是由國內美團點評開源的,基于Java語言開發,目前提供Java、C/C++、Node.js、Python、Go等語言的客戶端,監控數據會全量統計,國內很多公司在用,例如美團點評、攜程、拼多多等,CAT跟下邊要介紹的Zipkin都需要在應用程序中埋點,對代碼侵入性強。


Cat

Zipkin

Pinpoint

skywalking

依賴

Java 6,7,8

Maven 3.2.3+

mysql5.6

Linux 2.6以及之上(2.6內核才可以支持epoll)

Java 6,7,8

Maven3.2+

rabbitMQ

Java 6,7,8

maven3+

Hbase0.94+

Java 6,7,8

maven3.0+

nodejs

zookeeper

elasticsearch

實現方式

代碼埋點(攔截器,注解,過濾器等)

攔截請求,發送(http,mq)數據至zipkin服務

java探針,字節碼增強

java探針,字節碼增強

顆粒度

代碼級

接口級

方法級

方法級

頁面UI

*****

**

*****

****

存儲選擇

Mysql,hdfs

In-memory,mysql,cassandra,elasticsearch

Hbase

Elasticsearch,h2

通信方式

-

http,mq

Thrift

GRPC

MQ監控

不支持

不支持

不支持

RocketMq,kafka

全局調用 統計

支持

不支持

支持

支持

Trace查詢

不持支

支持

不支持

支持

報警

支持

不支持

支持

支持

Jvm監控

不支持

不支持

支持

支持

優點

功能完善

spring-cloud-sleuth可以很好的集成zipkin , 代碼無侵入,集成非常簡單 , 社區更加活躍。對外提供有query接口,更加容易二次開發

完全無侵入, 僅需修改啟動方式,界面完善,功能細致。

完全無侵入,界面完善,支持應用拓撲圖及單個調用鏈查詢。功能比較完善(zipkin + pinpoint)

缺點

代碼侵入性較強,需要埋點文檔比較混亂,文檔與發布版本的符合性較低,需要依賴點評私服 (或者需要把他私服上的jar手動下載下來,然后上傳到我們的私服上去)。

默認使用的是http請求向zipkin上報信息,耗性能。跟sleuth結合可以使用rabbitMQ的方式異步來做,增加了復雜度,需要引入rabbitMQ 。數據分析比較簡單。

不支持查詢單個調用鏈, 對外表現的是整個應用的調用生態。二次開發難度較高

3.2版本之前BUG較多 ,網上反映兼容性較差 . 3.2新版本的反映情況較少依賴較多。

文檔

網上資料較少,僅官網提供的文檔,比較亂

文檔完善

文檔完善

文檔完善

開發者

大眾點評

Twiter

Naver

吳晟(華為開發者) ,目前已經加入Apache孵化器

使用公司

大眾點評,攜程,陸金所,同程旅游,獵聘網,拼多多

Twiter

Naver

華為,alibaba cloud,天源迪科,當當網,京東金融

功能

開源監控平臺,用于從服務和云原生基礎設施收集、分析、聚合和可視化數據。SkyWalking提供了一種簡單的方法來維護分布式系統的清晰視圖,甚至可以跨云查看。它是一種現代APM,專門為云原生、基于容器的分布式系統設計

監測對象包括:service(服務), service instance(實例), endpoint(端點)

功能描述:

  • 多種監控手段,可以通過語言探針和service mesh獲得監控的數據
  • 支持多重語言的自動探針,包括JAVA, .NET Core和NodeJS
  • 輕量高效,無需大數據平臺和大量的服務器資源
  • 模塊化,UI ,存儲,集群管理都有多種機制可選
  • 支持告警
  • 優秀的可視化解決方案

架構

SkyWalking 在邏輯上分為四個部分:Probes、Platform backend、Storage 和 UI。

圖片圖片

探針Probe

采集tracing(調用鏈數據)和metric(指標)信息并上報,上報通過HTTP或者gRPC方式按要求重新格式化數據發送數據到Skywalking Collector

  • 自動探針:Java支持的中間件、框架與類庫列表
  • 手動探針:OpenTrackingApi、@Trace注解、trackId集成到日志中。

后端Platform backend

支持數據聚合、分析和流式處理,包括跟蹤、度量和日志。

基于gRpc、Http 鏈路數據收集器,對agent傳過來的tracing和metric數據進行整合分析通過Analysis Core模塊處理并落入相關的數據存儲中,同時會通過Query Core模塊進行二次統計和監控告警

數據存儲Storage

通過開放/可插入接口存儲 SkyWalking 數據,支持多種方式存儲數據 H2,ElasticSearch,MySQL, TiDB, InfluxDB或自定義

可視化平臺UI

基于GraphQL Http 高度可定制的基于 Web 的界面的可視化平臺,允許 SkyWalking 最終用戶可視化和管理。

下載安裝

下載

官方下載地址:https://skywalking.apache.org/downloads/

歷史版本下載:https://archive.apache.org/dist/skywalking/

Rocketbot-UI 8.x:https://github.com/apache/skywalking-rocketbot-ui

Booster UI 9.x:https://github.com/apache/skywalking-booster-ui

注:APM已經集成UI,不需要單獨下載與部署

Window安裝

  • 安裝APM (8.9.1,h2)
  • 下載apache-skywalking-apm-bin
  • 解壓執行命名 ~/bin/startup.bat
  • 訪問http://localhost:8080

圖片圖片

Docker安裝

  • 安裝OAP

下載鏡像

docker pull apache/skywalking-oap-server:8.9.1

啟動容器

docker run --name oap -p 12800:12800 -p 11800:11800 -p 1234:1234 --restart always -d apache/skywalking-oap-server:8.9.1
  • 安裝UI

下載鏡像

docker pull apache/skywalking-ui

啟動容器

docker run --name oap-ui -p 18080:8080 --restart always -d -e SW_OAP_ADDRESS=http://localhost:12800 apache/skywalking-ui

訪問http://localhost:18080

系統集成

  • 探針

負責進行數據的收集,包含了Tracing和Metrics的數據,agent會被安裝到服務所在的服務器上,以方便數據的獲取。探針使用gRPC協議與OAP平臺通信并上報數據。

  • 可觀測性分析平臺 OAP

接收探針發送的數據,并在內存中使用分析引擎(Analysis Core)進行數據的整合運算,然后將數據存儲到對應的存儲介質上,比如 Elasticsearch、MySQL等存儲服務。同時OAP還使用查詢引擎(Query Core)提供HTTP查詢接口。OAP默認監聽兩個端口gRPC協議端口11800、HTTP端口12800,gRPC用于探針上報數據,HTTP端口用于UI連接OAP平臺獲取數據。

  • UI

Skywalking 提供單獨的UI進行數據的查看,UI調用OAP提供的接口,獲取對應的數據根據UI模板的配置進行展示。Skywalking UI與OAP之間使用Http協議進行通信。Skywalking UI默認監聽8080端口提供Web服務。

Java Agent

  • 下載:Java Agent v8.11.0
  • 目錄結構

activations                 # 工具包,默認加載。

bootstrap-plugins           # 啟動插件,默認加載。

config                      # 配置文件

logs                        # 日志

optional-plugins            # 可選擴展插件,啟動不加載,如需加載將其移到到plugins目錄下。

optional-reporter-plugins   # 可選統計類插件,啟動不加載。

plugins                     # 服務類插件

skywalking-agent.jar        # 客戶端主程序,需要被服務啟動是引用。

  • 使用:項目啟動命令添加-javaagent:/path/skywalking-agent/skywalking-agent.jar
  • 示例:
java -javaagent:/path/skywalking-agent/skywalking-agent.jar -jar your-app.jar
  • 配置:
  • 系統屬性:-Dskywalking.[config]=[value]
  • 代理參數: -javaagent:skywalking-agent.jar=[config]=[value],...
  • 系統環境變量:agent.service_name=${SW_AGENT_NAME:Your_ApplicationName},如果SW_AGENT_NAME 您的操作系統中存在環境變量,并且其值為skywalking-agent-demo,則agent.service_name此處的值將被覆蓋為skywalking-agent-demo,否則將被設置為Your_ApplicationName。
  • 修改目錄/path/skywalking-agent/config/agent.config文件
// todo
//服務名稱
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
// OAP服務地址
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

代理選項 > System.Properties(-D) > 系統環境變量 > 配置文件

  • 官方文檔

Client JavaScript

  • 安裝
npm install skywalking-client-js --save
  • 注冊
import ClientMonitor from 'skywalking-client-js';

   // Report collected data to `http:// + window.location.host + /browser/perfData` in default
   ClientMonitor.register({
      collector: 'http://127.0.0.1:8080',
      service: 'test-ui',
      pagePath: '/current/page/name',
      serviceVersion: 'v1.0.0',
   });
// options
   {
      // 參考方法文檔
   }
  • 手動收集指標頁面加載時或任何其他有意義的時刻的指標,PV

register時設置autoTracePerf:false

  • 調用setPerformance
import ClientMonitor from 'skywalking-client-js';

   ClientMonitor.setPerformance({
      collector: 'http://127.0.0.1:8080',
      service: 'browser-app',
      serviceVersion: '1.0.0',
      pagePath: location.href,
      useFmp: true
   });
  • SPA

register時設置enableSPA:true,開啟單頁面應用基于hashchange event觸發指標采集行為

或者通過以下方法手動處理,在上報數據時手動更新頁面名稱,當調用該方法時,默認情況下將重新報告頁面PV

app.on('routeChange', function (next) {
      ClientMonitor.setPerformance({
         collector: 'http://127.0.0.1:8080',
         service: 'browser-app',
         serviceVersion: '1.0.0',
         pagePath: location.href,
         useFmp: true
      });
   });
  • 跟蹤請求數據支持跟蹤這些(XMLHttpRequest和Fetch API)兩種模式的數據請求。同時,支持基于XMLHttpRequest和fetch的跟蹤庫和工具,如Axios、SuperAgent、OpenApi等
// Angular
   import { ErrorHandler } from '@angular/core';
   import ClientMonitor from 'skywalking-client-js';

   export class AppGlobalErrorhandler implements ErrorHandler {
   handleError(error) {
      ClientMonitor.reportFrameErrors({
         collector: 'http://127.0.0.1',
         service: 'angular-demo',
         pagePath: '/app',
         serviceVersion: 'v1.0.0',
      }, error);
   }
   }
   @NgModule({
   ...
   providers: [{provide: ErrorHandler, useClass: AppGlobalErrorhandler}]
   })
   class AppModule {}
   ```

   ```js
   // React
   class ErrorBoundary extends React.Component {
   constructor(props) {
      super(props);
      this.state = { hasError: false };
   }
   static getDerivedStateFromError(error) {
      // Update state so the next render will show the fallback UI.
      return { hasError: true };
   }
   componentDidCatch(error, errorInfo) {
      // You can also log the error to an error reporting service
      ClientMonitor.reportFrameErrors({
         collector: 'http://127.0.0.1',
         service: 'react-demo',
         pagePath: '/app',
         serviceVersion: 'v1.0.0',
      }, error);
   }
   render() {
      if (this.state.hasError) {
         // You can render any custom fallback UI
         return <h1>Something went wrong.</h1>;
      }
      return this.props.children; 
   }
   }
   <ErrorBoundary>
   <MyWidget />
   </ErrorBoundary>
   ```

   ```js
   // Vue
   Vue.config.errorHandler = (error) => {
   ClientMonitor.reportFrameErrors({
      collector: 'http://127.0.0.1',
      service: 'vue-demo',
      pagePath: '/app',
      serviceVersion: 'v1.0.0',
   }, error);
   }
   ```
  • 官方文檔

skywalking-client-js

監測對象

  • 服務(Service)
對請求提供端點的單個應用或負載,在使用埋點、代理或 SDK 的時候,你可以定義服務的名字。如果不定義的話,SkyWalking 會使用在agent.conf中配置的默認服務名稱。
  • 服務實例(Instance)
服務組中的每個單獨的工作負載都稱為一個實例。就像pods在 Kubernetes 中一樣,它不需要是單個操作系統進程,但是,如果您使用儀器代理,則實例實際上是一個真正的操作系統進程。
  • 端點(Endpoint)
用于傳入請求的服務中的路徑,例如 HTTP URI 路徑或 gRPC 服務類 + 方法簽名。

UI指標

通過配置文件定義需要關注的指標 通過特定的分析語言計算指標

UI包括以下幾個部分:

  • 儀表盤
  • 拓撲圖
  • 追蹤
  • 性能剖析
  • 日志
  • 告警
  • 事件
  • 調試

儀表盤

APM

  • Global

Services Load(CPM / PPM):服務每分鐘請求數

Slow Services(ms):慢響應服務(按照響應時間排序)

Un-Health Services (Apdex):Apdex分數(1為滿分)

Slow Endpoints (ms):慢Endpoint的平均響應時間

Global Response Latency(percentile in ms):響應時間百分比

Global Heatmap:服務響應時間熱力分布圖,根據時間段內不同響應時間的數量顯示顏色深度顏色越深,請求越多。

  • Service
  • Service Apdex 數字:當前服務的Apdex分數;
  • Successful Rate(%):當前服務的請求成功率;
  • Service Load (CPM / PPM)數字:每分鐘調用次數(CPM),如果是TCP,表示每分鐘的數據包數(PPM);
  • Service Avg Response Time(ms):當前服務平均響應時間;
  • Service Apdex 折線圖:當前服務一段時間內的Apdex分數;
  • Service Response Time Percentile(ms):當前服務的百分比響應延時;
  • Successful Rate(%)折線圖:當前服務一段時間內的請求成功率;
  • Service Load (CPM / PPM)折線圖:當前服務一段時間內的每分鐘調用次數;
  • Service Throughput(Bytes):服務吞吐量,只適用于TCP服務;
  • Message Queue Consuming Count:消息隊列消費數;
  • Message Queue Avg Consuming Latency(ms):消息隊列平均延遲時間;
  • Service Instances Load(CPM / PPM):每個實例每分鐘請求數;
  • Slow Service Instance(ms):每個服務實例平均延時;
  • Service Instance Successful Rate(%):服務實例的請求成功率。
  • Instance
  • instance_jvm_memory_heap(堆內存使用)
  • instance_jvm_memory_heap_max(最大堆內存)
  • instance_jvm_memory_noheap(直接內存使用)
  • instance_jvm_memory_noheap_max(最大直接內存)
  • Service Instance Load(CPM / PPM):當前實例每分鐘調用數;
  • Service Instance Throughput(Bytes):當前實例的吞吐流量;
  • Service Instance Successful Rate(%):當前實例調用成功比率;
  • Service Instance Latency(ms):當前實例響應延時;
  • JVM CPU(Java Service)%:當前實例JVM的CPU占用百分比(相對于主機);
  • JVM Memory (Java Service)(MB):當前實例的內存占用大小;
  • JVM GC Time(ms):JVM 垃圾回收時間,包含young gc和old gc;
  • JVM GC Count:JVM垃圾回收次數,包含young gc count和old gc count;
  • JVM Thread Count(java service):當前實例的線程數;
  • JVM Thread State Count (Java Service):當前實例的各狀態線程數;
  • JVM Class Count (Java Service):當前實例類的計數。
  • Endpoint
  • Endpoint Load in Current Service(CPM / PPM):當前服務每個端點的每分鐘請求數;
  • Slow Endpoints in Current Service(ms):當前服務每個端點的平均響應時間;
  • Successful Rate in Current Service(%):當前服務每個端點的請求成功率;
  • Endpoint Load:當前端點每個時間段的請求量;
  • Endpoint Avg Response Time(ms):當前端點每個時間段的平均請求響應時間;
  • Endpoint Response Time Percentile(ms):當前端點每個時間段的響應時間占比;
  • Endpoint Successful Rate(%):當前端點每個時間段的請求成功率;

Database

  • Database Avg Response Time(ms):當前數據庫平均響應時間;
  • Database Access Successful Rate(%):當前數據庫訪問成功率;
  • Database Traffic(CPM: Calls Per Minute):當前數據庫每分鐘請求數;
  • Database Access Latency Percentile(ms):當前數據庫響應延遲時間的百分比;
  • Slow Statements(ms):慢查詢,按照執行時間排序;
  • All Database Loads(CPM: Calls Per Minute):所有數據庫的請求次數排序;
  • Un-Health Databases (Successful Rate):所有數據庫請求成功率排序。

SelfObservability

自監控,OAP服務端的各項指標

  • 修改配置config/application.yml
# 將-修改為default
   prometheus-fetcher:
     selector: ${SW_PROMETHEUS_FETCHER:default}
     #default:
     #   active: ${SW_PROMETHEUS_FETCHER_ACTIVE:true}

   # 改none為prometheus
   telemetry:
     selector: ${SW_TELEMETRY:prometheus} 
     prometheus:
       host: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
       port: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
  • 如果telemetry有調整,則對應修改修改config/fetcher-prom-rules/self.yaml
fetcherInterval: PT15S
   fetcherTimeout: PT10S
   metricsPath: /metrics
   staticConfig:
      # 改為上步中telemetry配置的ip
      targets:
         - url: http://localhost:1234 
            sslCaFilePath:
      labels:
         service: oap-server
  • 檢查:curl http://localhost:1234/metrics

Event

Istio、K8s

VM

Web Browser

對前端也有一定的監控,通過Skywalking-Client-js組件來操作,包括Web App、Pages兩個指標。

拓撲圖

  • 服務選擇器 支持顯示直接關系,包括上游和下游;
  • 自定義組 提供服務組的任意子拓撲功能,但是分組的信息是保存在瀏覽器內的;
  • 服務菜單 當您單擊任何服務時打開。該圖形可以對所選擇的服務進行度量、跟蹤和告警查詢;
  • 服務指標的關系 提供服務RPC交互的度量以及這兩個服務的實例。

追蹤

看每個接口的調用鏈,每個鏈路耗時、狀態。如果為失敗展示錯誤信息,如果是數據庫,會展示查詢語句。另外可以根據追蹤tid(trace id)和標記(tag)進行篩選。

性能剖析

日志

告警

事件

調試

日志集成

支持logback、log4j、log4j2日志框架集成,基于gRpc通信協議實現日志采集。

以logback為例:

  • 引入依賴
<dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>8.9.0</version>
        </dependency>
  • 修改logback.xml配置
<!-- ... -->

      <appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
         <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
                  <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
         </encoder>
      </appender>

      <root level="INFO">
         <!-- ... -->
         <appender-ref ref="grpc-log"/>
      </root>
  • 修改agent配置 ~/config/agent.config
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:0.0.0.0}
   plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
   plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760} 
   plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}
  • 官方示例

https://skywalking.apache.org/docs/skywalking-java/v8.11.0/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/

監控方法

通過@Trace注解標記需要追蹤的方法調用情況

  • 引入依賴
<dependency>
         <groupId>org.apache.skywalking</groupId>
         <artifactId>apm-toolkit-trace</artifactId>
         <version>8.9.0</version>
      </dependency>
  • 修改代碼
@Trace
   @GetMapping("/printLog")
   public String printLog() {
      Logger.info("traceId:{}",TraceContext.traceId())
      return "ok";
   }

告警接入

  • 規則修改配置config/alarm-settings.yml
  • 鉤子支持WebHook、GRPCHook、SlackHook、WechatHook、DingtalkHook、FeishuHook實現告警信息推送

場景

指標性統計

一個服務的 TBS 的正確率、成功率、流量等,這是我們常見的針對單個指標或者某一個數據庫的,這就是 Metrics 單指標分析

Tracing 分布式追蹤

一次請求的范圍,也就是我們從瀏覽器或者手機端發起任何的一次調用,甚至我們可以再推廣一點,是一次業務交易,比如說一次訂購的過程,從瀏覽商品到最后下定單、支付、物流、最后交到我們的手上。這是一個流程化的東西,我們需要軌跡,需要去追蹤。

Logging 日志記錄

我們程序在執行的過程中間發生了一些日志,會一幀一幀地跳出來給大家去記錄這個東西,這是日志記錄。

關鍵詞

  • Topology:拓撲
  • Trace:追蹤
  • Metrics:度量
  • Span:
  • Apdex:是根據設定的閾值和響應時間結合考慮的衡量標準。它是滿意響應時間和不滿意響應時間相對于總響應時間的比率。它衡量的是用戶對你的服務的滿意程度,因為傳統的指標(如平均響應時間)可能很快就會容易形成偏差。
  • percentile:標簽含義(p50、p75、p90、p95、p99):例如p99為1000ms, 這意味著 99% 的請求應該比1000ms更快

結束語

Apache SkyWalking是一款功能強大的APM系統,可以幫助開發人員和運維人員更好地了解分布式系統的性能狀況。通過使用SkyWalking,可以提高應用程序的穩定性和性能,降低運維成本。

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2023-11-20 08:18:49

Netty服務器

2022-11-11 19:09:13

架構

2023-10-27 08:15:45

2022-02-24 07:34:10

SSL協議加密

2023-11-08 08:15:48

服務監控Zipkin

2020-02-02 15:14:24

HTTP黑科技前端

2022-04-28 09:22:46

Vue灰度發布代碼

2022-09-29 13:09:38

DataClassPython代碼

2020-10-08 14:32:57

大數據工具技術

2025-01-15 09:06:57

servlet服務器Java

2019-07-04 15:16:52

數據挖掘大數據算法

2023-03-31 08:16:53

Flutter優化內存管理

2018-10-22 08:14:04

2022-02-18 10:13:07

SolrElasticSea開源

2023-12-06 16:28:56

2022-09-06 11:21:49

光網絡光纖

2019-08-06 09:00:00

JavaScript函數式編程前端

2024-05-07 08:49:36

Hadoop數據存儲-分布式存儲

2024-05-27 00:00:00

.NET游戲引擎C#

2024-02-04 09:44:41

量子計算量子量子物理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美精品在线播放 | 国产日韩欧美在线 | 精品婷婷 | 久久久久久久久久久久久久久久久久久久 | 自拍偷拍第一页 | 欧美精品乱码久久久久久按摩 | 国产亚韩| 一区二区三区不卡视频 | 91国在线视频| 伊人春色在线 | 成人在线一区二区三区 | k8久久久一区二区三区 | 天天插天天操 | 中文久久 | 自拍偷拍中文字幕 | 韩国av一区二区 | 亚洲欧美视频在线观看 | 中文字幕人成乱码在线观看 | 在线视频亚洲 | 日韩中文欧美 | 久久网亚洲 | 欧美精品中文字幕久久二区 | 国产精品视频一区二区三区 | av性色| www国产精品 | www.久草.com| 97精品一区二区 | 久久久久久亚洲精品 | 草久久| 国产精品视频一区二区三区 | 久久久久久久国产精品视频 | 99久久婷婷国产综合精品电影 | 国产91综合 | 蜜桃臀av一区二区三区 | 中文字幕一区二区三区四区五区 | 91久久精品一区二区二区 | 毛片一级电影 | 古典武侠第一页久久777 | 成年女人免费v片 | 欧美电影免费观看高清 | 中文字幕日韩欧美一区二区三区 |