swagger,showdoc,apifox,Mock 服務,dubbo,ZooKeeper和dubbo的關系

Swagger、ShowDoc 和 Apifox 之間的區別與優勢

Swagger、ShowDoc 和 Apifox 都是用于 API 文檔管理和測試的工具,但它們各有特色和適用場景。以下是詳細的比較,并附上每個工具的具體用法示例。

1. Swagger

特點與優勢:

  • 廣泛采用:
    • Swagger 是最流行的 API 文檔生成和測試框架之一,擁有龐大的社區支持和豐富的插件生態系統。
  • 標準規范:
    • 基于 OpenAPI 規范(以前稱為 Swagger 規范),確保了與多種工具和服務的良好兼容性。
  • 自動化文檔生成:
    • 支持從代碼注釋中自動生成 API 文檔,減少了手動編寫文檔的工作量。
  • 強大的 UI 工具:
    • 提供了交互式的 Swagger UI,用戶可以直接在瀏覽器中查看 API 文檔并進行調用測試。
  • 多語言支持:
    • 支持多種編程語言和框架,方便不同技術棧的團隊使用。

用法示例:

假設我們有一個簡單的 RESTful API /api/books,它允許獲取書籍列表。我們將展示如何使用 Swagger 來定義和測試這個 API。

  1. 定義 API (YAML 格式):

    openapi: 3.0.0
    info:title: Bookstore APIversion: 1.0.0
    paths:/api/books:get:summary: 獲取書籍列表parameters:- in: queryname: pageschema:type: integerdefault: 1description: 當前頁碼- in: queryname: pageSizeschema:type: integerdefault: 10description: 每頁顯示的書籍數量responses:'200':description: 成功響應content:application/json:schema:type: objectproperties:total:type: integerbooks:type: arrayitems:type: objectproperties:id:type: integertitle:type: stringauthor:type: string
    
  2. 使用 Swagger UI 測試 API:

    • 將上述 YAML 文件上傳到 Swagger Editor 或者集成到項目中。
    • 在 Swagger UI 中,你可以直接點擊“Try it out”按鈕來測試 API,查看請求和響應。
2. ShowDoc

特點與優勢:

  • 簡單易用:
    • 用戶界面友好,容易上手,特別適合中小型企業或個人開發者。
  • 實時協作:
    • 支持多人同時編輯同一個項目,所有更改都會實時同步,極大提高了團隊協作效率。
  • 內置 Mock 服務:
    • 內置 Mock 服務器,允許前端開發人員在后端接口未完成前進行 UI 開發。
  • 開放 API:
    • 提供了 RESTful API 接口,使得外部系統可以通過 API 自動化地與 ShowDoc 進行交互。
  • 免費開源:
    • 完全開源且免費,降低了使用門檻。

用法示例:

假設我們要為一個在線書店應用創建一個獲取書籍列表的 API /api/books。我們將展示如何使用 ShowDoc 來管理和維護這個 API。

  1. 安裝 ShowDoc:

    • 如果你還沒有安裝 ShowDoc,可以通過 Docker 或者直接在服務器上安裝。
    • 使用 Docker 安裝:
      docker pull showdoc/showdoc:latest
      docker run --name showdoc -p 80:80 showdoc/showdoc
      
    • 訪問 http://localhost(如果你是在本地運行),或者訪問你的服務器 IP 地址。
  2. 創建項目:

    • 登錄后進入 ShowDoc 控制臺首頁。
    • 點擊頁面右上角的“新建項目”按鈕。
    • 輸入項目名稱為“Online Bookstore API”,然后點擊“創建”。
  3. 添加 API 文檔:

    • 在項目主頁左側菜單中選擇“接口文檔”。
    • 點擊右上角的“添加接口”按鈕。
    • 基本信息:
      • 接口名稱: 獲取書籍列表
      • URL: /api/books
      • 請求方式: GET
      • 描述: 獲取所有書籍列表
      • 標簽: “Books”
    • 請求參數:
      • 分頁參數:
        • 名稱: page
        • 類型: integer
        • 必填: 是
        • 描述: 當前頁碼,默認值為 1
      • 每頁數量參數:
        • 名稱: pageSize
        • 類型: integer
        • 必填: 否
        • 描述: 每頁顯示的書籍數量,默認值為 10
    • 響應體:
      • 成功響應 (200 OK):
        {"total": 100, // 總記錄數"books": [{"id": 1,"title": "Effective Java","author": "Joshua Bloch"},{"id": 2,"title": "Clean Code","author": "Robert C. Martin"}]
        }
        
  4. 添加 Mock 數據:

    • 在接口編輯頁面中,切換到“Mock 數據”選項卡。
    • 點擊“開啟 Mock”按鈕,啟用 Mock 功能。
    • 設置默認的 Mock 規則或自定義規則。
    • 示例:
      • 設置 Mock 響應時間為 500ms,狀態碼為 200 OK。
      • 自定義 Mock 規則以返回固定數量的書籍條目(例如,總是返回 2 條記錄)。
3. Apifox

特點與優勢:

  • 一站式解決方案:
    • 不僅提供 API 文檔管理,還集成了 Mock 服務、自動化測試等功能,形成了一個完整的 API 生命周期管理平臺。
  • 高效的團隊協作:
    • 強大的權限管理系統和版本控制功能,便于團隊成員之間的高效協作。
  • 智能解析和導入:
    • 支持從 Postman、Swagger 等格式的文件中智能解析 API 定義,并可以一鍵導入到 Apifox 中。
  • 豐富的插件庫:
    • 擁有豐富的插件市場,用戶可以根據需求安裝各種插件來擴展平臺的功能。
  • 詳盡的統計分析:
    • 提供詳細的 API 調用統計和性能分析,幫助開發者優化 API 性能。

用法示例:

假設我們要為一個在線書店應用創建一個獲取書籍列表的 API /api/books。我們將展示如何使用 Apifox 來管理和維護這個 API。

  1. 注冊并登錄 Apifox:

    • 訪問 Apifox 官網 并注冊一個賬號。
    • 登錄后進入儀表板,開始探索可用的功能和服務。
  2. 創建 API 項目:

    • 在儀表板中點擊“創建項目”按鈕。
    • 輸入項目名稱為“Online Bookstore API”,然后點擊“創建”。
  3. 添加 API 文檔:

    • 在項目主頁左側菜單中選擇“接口文檔”。
    • 點擊右上角的“添加接口”按鈕。
    • 基本信息:
      • 接口名稱: 獲取書籍列表
      • URL: /api/books
      • 請求方式: GET
      • 描述: 獲取所有書籍列表
      • 標簽: “Books”
    • 請求參數:
      • 分頁參數:
        • 名稱: page
        • 類型: integer
        • 必填: 是
        • 描述: 當前頁碼,默認值為 1
      • 每頁數量參數:
        • 名稱: pageSize
        • 類型: integer
        • 必填: 否
        • 描述: 每頁顯示的書籍數量,默認值為 10
    • 響應體:
      • 成功響應 (200 OK):
        {"total": 100, // 總記錄數"books": [{"id": 1,"title": "Effective Java","author": "Joshua Bloch"},{"id": 2,"title": "Clean Code","author": "Robert C. Martin"}]
        }
        
  4. 添加 Mock 數據:

    • 在接口編輯頁面中,切換到“Mock 數據”選項卡。
    • 點擊“開啟 Mock”按鈕,啟用 Mock 功能。
    • 設置默認的 Mock 規則或自定義規則。
    • 示例:
      • 設置 Mock 響應時間為 500ms,狀態碼為 200 OK。
      • 自定義 Mock 規則以返回固定數量的書籍條目(例如,總是返回 2 條記錄)。
  5. 編寫測試用例:

    • 切換到“調試”選項卡,你可以在這里進行簡單的調試和測試。
    • 測試用例 1: 請求第一頁書籍列表,期望返回前 10 條記錄。
      • 請求配置:
        • URL: /api/books?page=1&pageSize=10
        • HTTP 方法: GET
      • 斷言:
        • 響應狀態碼為 200
        • JSONPath 斷言:$.books.length == 10
    • 測試用例 2: 請求第二頁書籍列表,期望返回接下來的 10 條記錄。
      • 請求配置:
        • URL: /api/books?page=2&pageSize=10
        • HTTP 方法: GET
      • 斷言:
        • 響應狀態碼為 200
        • JSONPath 斷言:$.books.length == 10
        • JSONPath 斷言:$.books[0].id > 10 (確保是第二頁的數據)
  6. 分享和協作:

    • 分享文檔鏈接給前端開發者:
      • 將生成的文檔 URL 分享給前端團隊,以便他們在沒有真實后端接口的情況下進行 UI 開發。
    • 邀請團隊成員加入項目:
      • 邀請其他開發人員、測試工程師等加入項目,共同維護 API 文檔和測試用例。
  7. 監控和優化:

    • 使用 Apifox 提供的統計分析工具,監控 API 的調用情況,了解性能瓶頸。
    • 根據反饋不斷優化 API 設計和實現,確保其穩定性和高效性。

總結

  • 選擇 Swagger 如果你需要一個高度標準化、廣泛支持并且能夠與現有 CI/CD 流程無縫集成的工具,特別是在大型企業環境中。
  • 選擇 ShowDoc 如果你追求簡單易用、低成本甚至免費的解決方案,并且希望快速搭建起 API 文檔管理系統,尤其是對于小型團隊或個人開發者。
  • 選擇 Apifox 如果你正在尋找一個全面而專業的 API 管理平臺,它不僅涵蓋了文檔管理,還包括 Mock 服務、自動化測試等附加功能,非常適合那些需要一站式解決方案的團隊。

根據你的具體需求和技術背景,可以選擇最適合自己的工具。每個工具都有其獨特的優勢,在不同的應用場景下都能發揮重要作用。

Mock 服務是一種在軟件開發和測試過程中用于模擬真實服務行為的技術或工具。它允許開發者創建一個模擬的服務實例,這個實例可以模仿實際服務的響應,但不需要依賴于實際的服務實現。Mock 服務主要用于以下幾種場景:

主要用途

  1. 加速開發:

    • 在前后端分離開發中,前端團隊可以在后端 API 尚未完成時使用 Mock 服務來模擬 API 響應,從而繼續進行頁面和功能的開發。
  2. 提高測試效率:

    • 單元測試和集成測試中,Mock 服務可以幫助隔離被測代碼與外部依賴,確保測試環境的穩定性和可控性。通過 Mock 服務,可以快速地為不同的測試場景配置相應的輸入輸出數據,而無需每次調用真實的外部服務。
  3. 減少對外部系統的依賴:

    • 當某些外部系統不可用、不穩定或者難以配置時(例如第三方支付網關),可以通過 Mock 服務提供一致的響應,保證開發和測試工作的連續性。
  4. 容錯機制:

    • 在微服務架構中,如 Dubbo 中的 Mock 服務,當服務提供者暫時不可用時,消費者可以調用預定義的 Mock 服務來返回默認數據,避免整個應用程序因為單個服務故障而崩潰。

Mock 服務的工作原理

  • 模擬請求和響應: Mock 服務通常會根據預先設定的規則生成特定格式的數據作為響應,這些規則可以是靜態的 JSON 文件、動態生成的數據結構或者是基于某種模式隨機生成的數據。

  • 攔截請求: 對于 Web 應用來說,Mock 服務可以通過 HTTP 請求攔截器來捕獲并處理來自客戶端的請求,然后直接返回模擬的數據,而不是將請求轉發給真正的服務器。

  • 環境獨立性: Mock 服務可以在開發環境中獨立運行,不需要依賴任何外部的真實服務。這使得開發人員可以在本地快速迭代,而不會受到網絡延遲或其他因素的影響。

使用方式

  1. 現成的 Mock Server:

    • 可以使用像 MockServer 或 Apifox 這樣的工具搭建獨立的 Mock 服務,所有接口都會指向該 Mock 服務。這種方式對業務代碼完全不具有侵入性,并且通用性強,適合大型項目或團隊協作。
  2. 代碼中的 Mock 實現:

    • 在單元測試或集成測試中,可以直接在代碼里編寫 Mock 邏輯,比如使用 Java 的 Mockito 庫來模擬對象的行為。這種方式的好處是在代碼內部就可以完成 Mock,主要適用于簡單的測試場景。
  3. 代理工具:

    • 利用 Fiddler 或 Charles 等代理工具對網絡請求進行攔截,并將其替換為自定義的 Mock 數據。這種方法操作相對簡單,但對于復雜的項目管理可能不夠靈活。
  4. 框架內置支持:

    • 某些框架(如 Spring Boot)提供了內置的支持來輕松啟用 Mock 功能,簡化了配置過程。

示例:Dubbo 中的 Mock 服務

在 Dubbo 中,Mock 服務可以通過 XML 配置、注解或屬性文件配置來啟用。例如:

<!-- XML 配置 -->
<dubbo:service interface="com.example.MyService" mock="true" />
// 注解配置
@Service(mock = "true")
public class MyServiceImpl implements MyService {// ...
}
# 屬性文件配置
dubbo.service.my-service.mock=true

此外,還可以指定具體的 Mock 實現類:

<!-- XML 配置 -->
<dubbo:service interface="com.example.MyService" mock="com.example.MyMockService" />
// 注解配置
@Service(mock = "com.example.MyMockService")
public class MyServiceImpl implements MyService {// ...
}

總之,Mock 服務作為一種有效的工具和技術手段,在現代軟件開發和測試實踐中扮演著重要角色,有助于提升開發效率、增強測試覆蓋率以及降低對外部系統的依賴。

Dubbo 是由阿里巴巴開源的一款高性能的 Java RPC(遠程過程調用)框架,主要用于構建分布式服務架構。它提供了諸如服務發現、負載均衡、容錯處理等功能,使得開發者可以更輕松地構建和管理大規模微服務應用。以下是關于 Dubbo 的詳細解釋以及一個簡單的例子。

Dubbo 核心特性

1. 透明化的遠程方法調用
  • Dubbo 提供了一種類似于本地方法調用的方式來調用遠程服務,開發者無需關心底層的網絡通信細節。通過代理模式,客戶端可以直接像調用本地對象一樣調用遠程的服務接口。
2. 智能路由與負載均衡
  • 支持多種負載均衡策略(如隨機、輪詢、最少活躍調用數等),可以根據實際需求選擇最適合的方式分配請求到不同的服務提供者,從而提高系統的可用性和性能。
3. 自動服務注冊與發現
  • 使用注冊中心(如 ZooKeeper、Nacos 等)來管理和維護服務提供者的地址信息。當消費者需要調用某個服務時,它會從注冊中心獲取最新的服務列表,并根據配置進行調用。
4. 動態配置和服務治理
  • 可以通過配置中心動態調整服務的參數和行為,例如修改超時時間、切換版本等,而不需要重啟應用程序。此外,還支持灰度發布、流量控制等高級功能。
5. 集群容錯機制
  • 內置了豐富的容錯機制,如失敗重試、熔斷器模式等,確保即使部分節點不可用,整個系統仍然能夠正常工作。
6. 監控和統計
  • 提供了詳細的監控數據,包括 QPS(每秒查詢率)、響應時間、錯誤率等,幫助運維人員及時發現問題并采取措施。

示例:構建一個簡單的 Dubbo 應用

假設我們要創建一個簡單的圖書管理系統,其中包含兩個模塊:

  • BookService:負責提供書籍相關的業務邏輯。
  • BookClient:作為消費者,調用 BookService 來獲取書籍信息。
1. 引入依賴

首先,在 pom.xml 中添加 Dubbo 和相關組件的依賴:

<dependencies><!-- Dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>2.7.8</version></dependency><!-- Zookeeper client for registry --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency>
</dependencies>
2. 定義服務接口

創建一個名為 BookService.java 的接口文件,定義書籍相關的操作:

package com.example;public interface BookService {String getBookById(int id);
}
3. 實現服務端 (Provider)

編寫 BookServiceImpl.java 文件實現上述接口,并標記為 Dubbo 服務提供者:

package com.example;import org.apache.dubbo.config.annotation.DubboService;@DubboService(version = "1.0.0")
public class BookServiceImpl implements BookService {@Overridepublic String getBookById(int id) {// 這里只是一個簡單的示例,實際應用中應該連接數據庫或其他數據源return "Book ID: " + id;}
}

配置服務提供者的 application.properties 文件:

# dubbo configuration
dubbo.application.name=book-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
4. 編寫客戶端 (Consumer)

在客戶端項目中引入相同的接口包,并編寫 BookClient.java 文件來調用遠程服務:

package com.example;import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Component;@Component
public class BookClient {@DubboReference(version = "1.0.0")private BookService bookService;public void printBookInfo(int id) {System.out.println(bookService.getBookById(id));}
}

配置客戶端的 application.properties 文件:

# dubbo configuration
dubbo.application.name=book-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
5. 啟動服務

啟動 ZooKeeper 服務器,然后分別啟動服務提供者和消費者應用。此時,消費者可以通過 Dubbo 調用遠程的服務提供者,就像調用本地方法一樣簡單。

總結

通過這個簡單的例子,我們可以看到 Dubbo 如何簡化了分布式服務之間的交互。它隱藏了復雜的網絡通信細節,讓開發者專注于業務邏輯的實現。同時,Dubbo 提供的一系列特性(如負載均衡、服務發現等)也為構建可靠且高效的微服務架構打下了堅實的基礎。

ZooKeeper和dubbo的關系

ZooKeeper 和 Dubbo 之間的關系主要體現在服務注冊與發現上。Dubbo 是一個高性能的 Java RPC 框架,而 ZooKeeper 是一個分布式協調服務,常被用作 Dubbo 的注冊中心。以下是它們之間關系的詳細解釋:

1. 服務注冊與發現

  • 服務提供者:當服務提供者啟動時,它會向 ZooKeeper 注冊自己提供的服務信息(如服務名、IP 地址和端口等)。這些信息會被存儲在 ZooKeeper 中特定的節點下,通常是以 /dubbo/${serviceName}/providers 這樣的路徑結構。

  • 服務消費者:服務消費者在啟動時會訂閱 ZooKeeper 上對應的服務節點,一旦有新的服務提供者上線或下線,ZooKeeper 就會通知所有訂閱了該服務的消費者,從而保證消費者始終擁有最新的服務列表。

2. 動態配置管理

  • 使用 ZooKeeper 作為配置中心,可以實現配置的集中管理和動態更新。例如,可以通過修改 ZooKeeper 中的配置來調整服務的參數(如超時時間),而無需重啟應用程序。

3. 負載均衡

  • 雖然負載均衡策略本身是由 Dubbo 實現的,但通過 ZooKeeper 可以輕松獲取當前所有可用的服務實例,使得 Dubbo 能夠根據預設的算法選擇最合適的服務提供者進行調用。

4. 集群容錯

  • ZooKeeper 提供了高可用性和數據一致性保障,即使某個 ZooKeeper 節點出現故障,其他節點仍然可以繼續工作。這確保了即使在網絡分區的情況下,Dubbo 應用也能正常運行,并且能夠自動恢復對失效節點的訪問。

5. 命名服務

  • ZooKeeper 的層次化命名空間非常適合用來維護全局的服務地址列表。每個服務可以在 ZooKeeper 上創建唯一的路徑,并將自身的 URL 地址寫入到相應的節點中完成服務發布。

6. 事件驅動架構

  • ZooKeeper 支持 Watcher 機制,允許客戶端監聽特定節點的變化。對于 Dubbo 來說,這意味著它可以實時感知服務提供者的上下線情況,并據此做出相應的處理(比如重新路由請求)。

7. Mastership選舉

  • 在某些情況下,Dubbo 集群可能需要選出一個主節點來進行特定的操作(例如調度任務)。ZooKeeper 提供了簡單的 Master 選舉功能,可以幫助 Dubbo 完成這一過程。

總結

綜上所述,ZooKeeper 和 Dubbo 的結合為構建可靠的分布式系統提供了強大的支持。ZooKeeper 不僅充當了 Dubbo 的注冊中心,還提供了配置管理、負載均衡、集群容錯等功能,極大地簡化了微服務架構中的服務治理問題。此外,由于 ZooKeeper 具備良好的擴展性和可靠性,因此成為了很多分布式應用和服務框架(不僅僅是 Dubbo)首選的注冊中心解決方案之一。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64575.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

邊沿檢測電路漏檢原因分析

邊沿檢測電路漏檢原因分析 常用結構如下&#xff1a; module edge_detect1( input clk, input signal, output pe, //上升沿 output ne, //下降沿 output de //雙邊沿 );reg reg1;always(posedge clk) beginreg1 < signal; endassign pe (~reg1) & signal; assign…

嵌入式硬件雜談(七)IGBT MOS管 三極管應用場景與區別

引言&#xff1a;在現代嵌入式硬件設計中&#xff0c;開關元件作為電路中的重要組成部分&#xff0c;起著至關重要的作用。三種主要的開關元件——IGBT&#xff08;絕緣柵雙極型晶體管&#xff09;、MOSFET&#xff08;金屬氧化物半導體場效應晶體管&#xff09;和三極管&#…

鴻蒙開發:了解正則表達式

前言 從給出的文本中&#xff0c;按照既定的相關規則&#xff0c;匹配出符合的數據&#xff0c;其中的規則就是正則表達式&#xff0c;使用正則表達式&#xff0c;可以使得我們用簡潔的代碼就能實現一定復雜的邏輯&#xff0c;比如判斷一個郵箱賬號是否符合正常的郵箱賬號&…

Kafka的acks機制和ISR列表

Kafka 是一個流行的分布式流處理平臺&#xff0c;用于構建實時數據流管道和應用程序。在 Kafka 中&#xff0c;acks 機制和 ISR&#xff08;In-Sync Replicas&#xff09;列表是兩個重要的概念&#xff0c;它們共同確保消息的持久性和可靠性。 acks 機制 acks 機制是 Kafka 生…

在 Ubuntu 下通過 Docker 部署 Caddy 服務器

嘿&#xff0c;伙伴們&#xff01;今天我們來聊聊如何在 Ubuntu 系統下通過 Docker 部署 Caddy 服務器。Caddy 是一個現代的 Web 服務器&#xff0c;支持自動 HTTPS&#xff0c;簡單易用&#xff0c;特別適合快速搭建網站。而 Docker 則是一個讓你可以隔離和管理應用的神器。結…

計算機網絡?自頂向下方法:網絡層介紹、路由器的組成

網絡層介紹 網絡層服務&#xff1a;網絡層為傳輸層提供主機到主機的通信服務 每一臺主機和路由器都運行網絡層協議 發送終端&#xff1a;將傳輸層報文段封裝到網絡層分組中&#xff0c;發送給邊緣路由器路由器&#xff1a;將分組從輸入鏈路轉發到輸出鏈路接收終端&#xff1…

Linux top指令

top指令概述 top 是 Linux 系統中用于實時監控系統性能和進程信息的命令&#xff0c;功能強大且靈活。它提供了系統資源的動態視圖&#xff0c;包括 CPU、內存、運行中的進程等。 這個指令可以說是Linux中最基本的工具了&#xff0c;用來監視系統的實時運行狀態&#xff0c;類…

Qt監控系統放大招/歷經十幾年迭代完善/多屏幕輔屏預覽/多層級設備樹/網絡登錄和回放

一、前言說明 近期對視頻監控系統做了比較大的更新升級&#xff0c;主要就是三點&#xff0c;第一點就是增加了輔屏預覽&#xff0c;這個也是好多個客戶需要的功能&#xff0c;海康的iVMS-4200客戶端就有這個功能&#xff0c;方便在多個屏幕打開不同的視頻進行查看&#xff0c…

網絡原理(六): UDP 協議

目錄 1. UDP 協議 1.1 協議特點 1.2 協議報文格式 1.2.1 UDP 長度 1.2.2 校驗和 1. UDP 協議 在進行網絡編程時, 我們已經對 UDP 協議進行了簡單了解. 并且應用層的很多操作, 需要調用傳輸層的提供的接口, 基于 socket api 來進行完成的. 1.1 協議特點 UDP 協議具有以…

前端頁面展示本電腦的攝像頭,并使用js獲取攝像頭列表

可以通過 JavaScript 使用 navigator.mediaDevices.enumerateDevices() 獲取電腦上的攝像頭列表。以下是一個示例代碼&#xff0c;可以展示攝像頭列表并選擇進行預覽。 HTML JavaScript 實現攝像頭列表展示和預覽 <!DOCTYPE html> <html lang"zh-CN">…

【漫話機器學習系列】028.CP

Mallows’ Cp&#xff1a;標準化公式解析與應用 Mallows’ Cp 是一種常用的模型選擇工具&#xff0c;用于在一系列候選模型中權衡擬合度和復雜性&#xff0c;幫助我們選擇性能最優的模型。本文將基于其標準化公式展開詳細解析&#xff0c;并探討其應用場景、實現方法、優點與局…

期末算法分析程序填空題

目錄 5-1 最小生成樹&#xff08;普里姆算法&#xff09; 5-2 快速排序&#xff08;分治法&#xff09; 輸入樣例&#xff1a; 輸出樣例&#xff1a; 5-3 歸并排序(遞歸法) 輸入樣例&#xff1a; 輸出樣例&#xff1a; 5-4 求解編輯距離問題&#xff08;動態規劃法&#xff09;…

深入解析 Conda 安裝的默認依賴包及其作用:conda create安裝了哪些包(中英雙語)

深入解析 Conda 安裝的默認依賴包及其作用 當我們使用 Conda 創建新環境時&#xff0c;例如執行命令&#xff1a; conda create -n olmes python3.10Conda 會自動為我們安裝一系列基礎依賴包&#xff0c;保證 Python 環境能夠正常運行。這些包不僅是我們開發的基礎工具&#…

Mac、Linux命令

Linux 查本機IP&#xff1a;ip addr 查詢文件里符合條件的字符串&#xff1a;grep Mac 查本機IP&#xff1a;ipconfig

Visual Studio 中增加的AI功能

前言&#xff1a; 人工智能的發展&#xff0c;在現在&#xff0c;編程技術的IDE里面也融合了AI的基本操做。本例&#xff0c;以微軟的Visual Studio中的人工智能的功能介紹例子。 本例的環境&#xff1a; Visual Studio 17.12 1 AI 智能變量檢測&#xff1a; 上圖展示了一…

江科大學習筆記之——HAL庫點亮一個LED燈

HAL三步走&#xff1a;1.建工程。2.設配置。3.寫代碼 一.建立工程 HAL庫寫法 點擊FinIsh 2.配置時鐘 2 、設置配置參數 把模塊.C.h單獨設置文件 生產代碼 三寫代碼 控制GPIO就三步 1.RCC時鐘使能 2.結構體配置GPIO寄存器 3.控制GPIO值 上面的步驟已經把前兩步的配置完成了接下…

Spring MVC (下)小項目實戰

1. 加法計算器 需求分析: 客戶端輸入倆個數,服務端進行相加然后返回結果. 約定前后端交互接口: 接口的概念: 接口?叫API&#xff08;ApplicationProgrammingInterface),我們?般講到 接口或者API&#xff0c;指的都是同?個東西.是指應?程序對外提供的服務的描述,?于交換信…

在K8S中,如何查看Pod狀態的詳情?事件顯示cpu不足如何處理?

在Kubernetes中&#xff0c;查看Pod狀態的詳細通常設計使用kubectl命令行工具&#xff0c;這是kubernetes提供的一個強大的管理工具。以下是如何查看Pod狀態詳情的步驟&#xff1a; 1. 查看Pod狀態詳情 列出所有Pod&#xff1a; 使用kubectl get pods命令可以查看集群所有Po…

詳細講一下React中的路由React Router

1. 基本概念 React Router 是 React 的路由管理庫&#xff0c;用于在 React 應用中實現頁面導航和路由控制。 2. 安裝 npm install react-router-dom 3. 基礎用法 // App.jsx import { BrowserRouter, Routes, Route, Link } from react-router-domfunction App() {return (…

人工智能的視覺天賦:一文讀懂卷積神經網絡

什么是CNN&#xff1f; CNN&#xff0c;全稱為卷積神經網絡&#xff08;Convolutional Neural Network&#xff09;&#xff0c;是一種模擬人類視覺感知機制的人工神經網絡。它通過層疊的卷積、池化等操作&#xff0c;從數據中提取關鍵特征&#xff0c;進而完成分類、識別或預…