AI驅動的軟件工程(中):文檔驅動的編碼與執行


📚 系列文章導航
AI驅動的軟件工程(上):人機協同的設計與建模
AI驅動的軟件工程(中):文檔驅動的編碼與執行
AI驅動的軟件工程(下):AI輔助的質檢與交付


大家好,我是阿威。

在上一篇文章 《人機協同的設計與建模》 中,我們探討了如何與AI協作,將一個模糊的想法,通過一個結構化的三階段流程,打磨成一套完整、嚴謹的設計藍圖。我們得到了《需求規格說明書》、《系統設計說明書》以及每個模塊的《詳細設計說明書》。

這套設計文檔,是我們項目的堅實地基。但一個更嚴峻、也更令人興奮的挑戰隨之而來:我們能把這套藍圖直接交給AI,讓它自己來完成所有的編碼實現嗎?

如果你的經驗和我最初一樣,那么答案可能是否定的。直接把設計文檔丟給一個通用的AI助手,然后說“照著這個去寫代碼”,結果往往是一場災難。AI會很快忘記文檔的細節,它會用自己“喜歡”的方式組織代碼,它會在不同模塊間創造出不一致的接口。最終,你得到的會是一個難以維護的、拼接起來的“代碼怪獸”。

問題出在哪里?問題在于,我們只給了AI一張“地圖”(設計文檔),卻沒有給它一套“導航系統和駕駛手冊”(開發流程與規范)。一個人類開發者拿到設計文檔后,會運用自己腦中的整個軟件工程知識體系——版本控制、代碼規范、測試、日志記錄——來進行工作。而AI的腦中,沒有這些隱性的紀律。

要讓AI成為真正的核心開發者,我們就必須為它顯式地構建這一整套工程紀律

這就是我在這篇文章中要分享的核心方法論:AIDC(AI-Driven Development and Collaboration)。它的精髓在于,我們不依賴AI那短暫、不可靠的內置記憶,而是通過一系列外部化的文檔,為它打造一個持久的“外部大腦”和一套強制執行的“行為準則”。我們不再請求它“寫代碼”,而是指令它“遵循流程”。

歡迎來到整個體系的“發動機艙”。在這里,我們將見證,設計藍圖是如何被一個遵循嚴格紀律的AI,一行行地轉化為真實可用的代碼。

AIDC方法論:為AI打造開發“熔爐”

AIDC的核心,是承認并正視AI的固有局限性,然后用工程化的手段去系統性地解決它們。這個方法論建立在四大原則之上,它們共同構成了一個足以熔煉出高質量代碼的“開發熔爐”。

1. 外部化記憶 (Externalized Memory)
AI的記憶是昂貴且善變的。因此,我們將所有關鍵信息——需求、設計、計劃、規范、甚至開發過程中的每一次提交記錄——全部持久化為項目內的Markdown文檔。這些文檔共同構成了AI的“外部長期記憶”。在每一次執行任務前,AI的第一個動作,必須是“閱讀”這些記憶。

2. 指令驅動執行 (Instruction-Driven Execution)
我們與AI的交互,不再是開放式的“對話”,而是明確的“指令下達”。通過一份我稱之為“標準作業程序(SOP)”的文檔,我們將AI的每一步操作都固化為可預測、可重復的指令。這從根本上杜絕了AI在執行任務時的隨機性和行為偏差。

3. 自動化守衛 (Automated Guardians)
我絕不會浪費時間去檢查AI寫的代碼有沒有遵循PEP8,或者括號是不是對齊了。這些低級但重要的工作,必須交由自動化工具來強制執行。通過在流程中嵌入Linter、格式化器、類型檢查器等工具,我們為項目建立了一道“自動化防線”,AI必須自己確保它的產出能通過這道防線。

4. 人機角色明確 (Defined Human-AI Roles)
在編碼階段,我們的角色再次轉換。我不再是“架構師”,而是**“項目經理”和“代碼審查者”。我負責下達高級別的開發任務(比如“去實現這個模塊”),并在關鍵節點審查代碼的業務邏輯。而AI的角色,則是“軟件開發者”和“DevOps助理”**,它負責執行SOP中定義的所有具體、繁瑣的戰術操作。

基于這四大原則,AIDC的開發生命周期被劃分為四個清晰的階段。

關鍵輸入/產出
AIDC 生命周期
新功能/模塊
循環或完成
人類需求
設計文檔
項目骨架
SOP與規范文檔
功能代碼與更新日志
階段二: 奠基與初始化
階段一: 設計與構思
階段三: 規范與流程定義
階段四: 迭代開發循環
1. 上下文同步
2. 制定計劃 (TODO)
3. 編碼實現
4. 自我檢查 (Linter/Test)
5. 版本提交 (Git)
6. 狀態歸檔 (Log/Plan)

階段一我們已經完成。現在,我們從階段二開始,看看如何一步步為AI鋪設好軌道。

奠基與初始化:AI的第一次DevOps任務

在正式編碼前,我需要AI為我創建一個專業、規范的開發環境。這本身就是對AIDC方法論的一次小型演練。

我會給AI下達第一個指令:

“根據我們已經完成的設計,請初始化AgentWeaver項目。你需要:

  1. 創建標準的項目目錄結構(例如 agentweaver/, docs/, tests/)。
  2. 將我們之前生成的所有設計文檔,歸檔到 docs/ 目錄下。
  3. 初始化Git倉庫。
  4. 創建一份專業的 .gitignore 文件、一份包含基礎依賴的 requirements.txt 和一份包含項目簡介的 README.md。”

AI會像一個DevOps助理一樣,使用它的文件操作和終端工具,精確地完成這些任務。這個過程的產出,是一個結構清晰、已納入版本控制的項目倉庫骨架。更重要的是,它讓AI從一開始就進入了“被指令、被管理”的工作模式。

規范與流程定義:鍛造AI的“SOP”

這是整個方法論最核心、最關鍵的一步。我們要在這里,和AI一起,創造出未來將要嚴格“統治”AI自身行為的一系列“法律文件”。這些文件將構成它的“外部大腦”,是后續所有開發活動的基石。

我會指示AI創建以下幾份核心治理文檔:

  1. 《AI開發者標準工作流程(SOP).md》:這是給AI自己看的“用戶手冊”,是“指令驅動執行”原則的最終體現。它用最明確的指令語言,規定了AI從接收任務到完成提交的每一個步驟。后文我們會詳細拆解這份SOP的內容。
# AI 開發者標準工作流程 (SOP)**版本: 1.0**## 1. 核心指令本文檔是指導你在 AgentWeaver 項目中執行開發任務的標準操作流程(SOP)。**你必須嚴格、完整地遵循以下所有步驟**。在每個新會話開始時,用戶會將此文檔作為核心指令提供給你。---## 2. 階段一:上下文同步與理解 (強制執行)在開始任何編碼之前,你必須首先完成對項目狀態的全面同步。這是強制性步驟,不可跳過或部分執行。-   **指令 1.1:理解高層設計**-   [ ] 讀取并完全理解 `docs/需求規格說明書.md`。-   [ ] 讀取并完全理解 `docs/概要設計說明書.md`。-   **指令 1.2:理解模塊詳細設計**-   [ ] 讀取并完全理解當前任務分配的模塊詳細設計文檔,例如 `docs/詳細設計-X-模塊名.md`。-   **指令 1.3:遵循開發規范**-   [ ] 讀取并完全理解 `docs/開發編碼規范.md` 。你后續的所有代碼輸出都**必須**嚴格遵守此規范。-   **指令 1.4:回顧開發歷史**-   [ ] 讀取并完全理解 `docs/開發日志.md` ,了解項目此前的關鍵決策和問題。-   **指令 1.5:明確當前進度**-   [ ] 讀取并完全理解 `docs/項目開發計劃.md` ,找到你將要開發的任務條目,明確其當前狀態和依賴關系。---## 3. 階段二:計劃制定與任務執行在完全理解上下文后,開始進行計劃和編碼。-   **指令 2.1:制定開發計劃**-   [ ] 基于以上所有文檔,為你當前要開發的模塊制定一個詳細的、分步驟的執行計劃。-   [ ] **必須**使用你的 `todo_write` 工具,將此計劃轉化為一個代辦事項清單。清單的粒度應足夠細,例如到**函數級別**或**接口級別**。-   **指令 2.2:執行開發任務**-   [ ] 嚴格按照你創建的代辦事項清單,逐項完成開發。-   [ ] 使用 `edit_file` 工具進行編碼。-   [ ] 每完成一個清單項,立即使用 `todo_write` 工具更新其狀態為 `completed`。---## 4. 階段三:代碼驗證與版本提交在模塊核心功能開發完成后,或在每個有意義的節點,執行以下驗證和提交流程。-   **指令 3.1:代碼質量檢查**-   [ ] **必須**使用 `run_terminal_cmd` 工具執行以下命令:1.  格式化代碼: `black .`2.  靜態檢查與修復: `ruff check . --fix`-   [ ] 如果命令執行后報告任何錯誤,你**必須**修復它們,并重新運行檢查,直到所有檢查都通過。-   **指令 3.2:提交到版本控制**-   [ ] 使用 `run_terminal_cmd` 工具執行 `git add .`。-   [ ] 執行 `git commit`。**提交信息(commit message)必須嚴格遵循以下格式**:-   **格式**: `<類型>(<范圍>): <主題>`-   **示例**: `feat(api): 實現創建任務的POST端點`-   **類型**: `feat` (新功能), `fix` (bug修復), `docs` (文檔), `style` (格式), `refactor` (重構), `test` (測試), `chore` (構建或工具)。-   **主題**: **必須使用中文書寫**,簡明扼要地描述本次提交的內容。---## 5. 階段四:項目狀態歸檔與更新每次成功提交后,你**必須**立即更新項目的狀態記錄,以確保信息的實時同步。-   **指令 4.1:更新開發日志**-   [ ] 使用 `edit_file` 工具打開 `docs/開發日志.md`。-   [ ] **必須**在文件**末尾追加一行**,記錄本次開發。**嚴禁修改歷史日志**。格式如下:-   `YYYY-MM-DD HH:MM - <模塊名>: <本次開發的簡要總結,包括遇到的關鍵問題和解決方案>`-   **指令 4.2:更新項目開發計劃**-   [ ] 使用 `edit_file` 工具打開 `docs/項目開發計劃.md`。-   [ ] 找到與本次開發相關的任務條目(可以是模塊、功能或接口)。-   [ ] 將其狀態從“待開發”更新為“**完成**”。-   [ ] 如果開發中遇到問題導致阻塞,則更新為“**擱置**”或“**錯誤**”,并**必須**在同一行附上簡要原因。---
**流程結束。此工作流是確保你高效、可靠地參與本項目的核心。請在每次會話中嚴格遵循。** 
  1. 《項目開發計劃.md》:這是一個高階的路線圖。我會讓AI基于《系統設計說明書》中的模塊列表,生成這份計劃。它通常是一個Markdown表格,包含模塊名、負責人(默認是AI)、狀態(如:待開發、進行中、完成)、依賴關系和預計完成日期。這份文檔是“外部化記憶”的一部分,用于宏觀地追蹤項目進度。
    在這里插入圖片描述

該項目計劃文檔完全由AI自主生成并在開發完成某個模塊時遵循《AI開發者標準工作流程(SOP).md》規則自主更新,無需人類干預

  1. 《開發日志.md》:這是一份嚴格按時間順序、只增不改的日志文件。我要求AI在每一次代碼提交后,都必須在這里追加一行記錄,注明時間、開發的模塊,以及對本次工作的簡要總結。這份日志提供了寶貴的、可追溯的開發歷史。
    在這里插入圖片描述

開發日志文檔也完全由AI遵循《AI開發者標準工作流程(SOP).md》自主生成、更新

  1. 《開發編碼規范.md》:這份文檔定義了代碼風格、命名約定、注釋標準等。我會提供一些初步的規則,然后讓AI將其擴充和完善,并保存成正式文檔。在后續的開發中,AI必須嚴格遵守這份它自己參與制定的規范。
    在這里插入圖片描述

該規范文檔由人類指導AI完成,在AI進行編碼時會依據《AI開發者標準工作流程(SOP).md》定義的流程規則完全遵守該開發編碼規范

當這四份文檔創建完成后,我們就擁有了一套完整的項目治理體系。AI不再是一個自由的“藝術家”,而是一個有法可依、有章可循的“工程師”。

迭代開發循環:SOP驅動下的AI一日

現在,萬事俱備。我們終于可以進入激動人心的編碼階段了。讓我們以開發“AIFactory”模塊為例,完整地走一遍AI在SOP驅動下的標準工作流程。

我的任務下達過程非常簡單,我只需要對AI說:

“任務:實現‘AIFactory’模塊。請嚴格遵循《AI開發者標準工作流程(SOP)》進行操作。”

接下來,所有事情都將由AI根據SOP自動完成。


步驟一:上下文同步(強制)

這是SOP中的第一條,也是最重要的一條指令。AI必須首先閱讀所有相關的“記憶”文檔,以構建完整的上下文。它會依次執行:

  • 讀取 docs/需求規格說明書.md
  • 讀取 docs/系統設計說明書.md
  • 讀取 docs/詳細設計-AIFactory模塊.md (本次任務的核心依據)
  • 讀取 docs/開發編碼規范.md
  • 讀取 docs/開發日志.md (了解歷史)
  • 讀取 docs/項目開發計劃.md (明確當前任務的位置)

這個看似冗余的步驟,恰恰是解決AI“失憶癥”的唯一有效方法。它確保了AI在開始工作時,腦子里裝的是項目的全局視圖,而不僅僅是我剛剛下達的一句簡單指令。


步驟二:制定計劃(TODO List)

在完全理解了上下文之后,SOP指令AI進行任務分解。
AI會基于詳細設計-AIFactory模塊.md中的內容,使用它的todo_write工具,為自己生成一份細粒度的、精確到函數級別的執行計劃。

這份TODO清單可能會是這樣:

  • [ ]agentweaver/core/ 目錄下創建 ai_factory.py 文件。
  • [ ]ai_factory.py 中定義抽象基類 BaseLLM
  • [ ] 實現 OpenAIModel 類,繼承自 BaseLLM
  • [ ] 實現 LocalHFModel 類,繼承自 BaseLLM
  • [ ] 實現核心類 AIFactory
  • [ ]AIFactory 中實現 register_model 方法。
  • [ ]AIFactory 中實現核心方法 get_model,包含緩存邏輯。
  • [ ] 為模塊添加必要的異常類,如 ModelNotFoundError

這份清單不僅讓任務的執行過程變得透明、可控,也再次強化了AI的短期記憶,讓它對即將開始的工作有了清晰的步驟規劃。


步驟三:執行編碼

AI會嚴格按照它自己創建的清單,逐項進行編碼。它會使用edit_file工具,一次只專注于一個最小化的任務,比如創建文件、實現一個類或一個方法。

每當它完成一項,比如實現了BaseLLM類,它就會再次調用todo_write工具,將對應項的狀態更新為completed

  • [x]agentweaver/core/ 目錄下創建 ai_factory.py 文件。
  • [x]ai_factory.py 中定義抽象基類 BaseLLM
  • [ ] 實現 OpenAIModel 類,繼承自 BaseLLM

這個過程會一直持續,直到清單上的所有任務都被勾選完成。


步驟四:自我檢查(自動化守衛)

在模塊的核心功能編碼完成后,SOP中一個強制性的驗證流程被觸發。
AI必須使用run_terminal_cmd工具,在項目根目錄下執行以下命令:

  1. black . (代碼格式化)
  2. ruff check . --fix (靜態檢查與自動修復)

如果這些命令返回任何錯誤或警告,SOP要求AI必須自行修復這些問題,然后重新運行檢查,直到所有檢查都干凈通過。我,作為人類,完全不需要介入這個過程。自動化工具成為了保證代碼基礎質量的第一道,也是最有效的一道防線。


步驟五:版本提交

通過所有自動化檢查后,代碼進入了提交階段。
SOP要求AI使用run_terminal_cmd工具執行git add .git commit

其中,commit message必須嚴格遵循我在《開發編碼規范.md》中定義的格式
例如:feat(core): 實現AI工廠模塊的核心功能

  • 類型(type): feat (新功能), fix (bug修復), docs (文檔) 等。
  • 范圍(scope): 影響的模塊,如core, api
  • 主題(subject): 用中文簡明扼要地描述本次提交。

這種規范化的提交信息,使得我們的Git歷史清晰、可讀,為未來的代碼考古和自動化工具集成打下了良好基礎。


步驟六:狀態歸檔

一次成功的提交,并不意味著一個開發循環的結束。SOP的最后一步,也是“外部化記憶”原則的最后一道保障,是讓AI立即更新項目的狀態記錄。

AI會使用edit_file工具,執行兩個操作:

  1. 更新開發日志: 在docs/開發日志.md文件的末尾追加一行新記錄,嚴禁修改歷史。

    2023-10-27 15:30 - AIFactory模塊: 完成了核心功能的開發,包括模型注冊和基于配置的動態加載。關鍵是實現了緩存機制以提高性能。

  2. 更新項目開發計劃: 在docs/項目開發計劃.md中,找到“AIFactory模塊”這一行,將其狀態從“進行中”更新為“完成”。

至此,一個完整的、閉環的、可追溯的開發循環才算真正結束。從上下文同步到狀態歸檔,每一步都在SOP的嚴格規定下進行,AI的行為是可預測的,其產出是高質量且符合規范的。

結論:從“創作者”到“流水線工人”

通過AIDC方法論,特別是這套文檔驅動的迭代開發循環,我們成功地改變了AI的角色。它不再是一個天馬行空、難以捉摸的“創作者”,而更像是一個高效、精準、不知疲倦的“流水線工人”。

我們為它鋪設了軌道(項目骨架),教會了它讀懂圖紙(設計文檔),給了它一本操作手冊(SOP),并設定了質檢標準(自動化工具)。我們把復雜的軟件開發過程,分解成了一系列AI可以理解并能精確執行的、標準化的“工序”。

這套體系的威力在于,它是可復制、可擴展的。每當有一個新模塊要開發,我們只需要重復這個循環即可。整個項目的開發過程,變成了一系列穩定、高效的“事務”。

當然,代碼寫完,并不等于項目完工。AI生成的代碼,即便通過了所有靜態檢查,其業務邏輯是否正確?在真實環境中能否順利運行?當多個模塊集成在一起時,是否會出現意想不到的問題?

這就引出了我們這個系列的最后一篇文章要解決的問題:終局質檢。在下一篇中,我將分享一套人機協同的質檢與交付流程,為我們這個由AI構建的項目,進行最終的質量把關。

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

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

相關文章

HTML應用指南:利用GET請求獲取河南省胖東來超市門店位置信息

胖東來作為中國知名的零售企業&#xff0c;自1995年成立以來&#xff0c;始終致力于為消費者提供豐富、新鮮的商品選擇與優質的購物體驗。經過近30年的穩步發展&#xff0c;目前已在河南省內的許昌、新鄉等地共開設13家門店&#xff0c;涵蓋大型綜合百貨商場、中型社區超市及服…

8.服務通信:Feign深度優化 - 解密聲明式調用與現代負載均衡內核

讓服務調用更優雅 在微服務架構中,服務間通信如同血液流動般重要。傳統方式中,開發者需要手動拼接URL、處理負載均衡、管理連接池——這些重復性工作不僅效率低下,還容易出錯。Spring Cloud OpenFeign 的誕生,正是為了解決這一核心痛點。它通過聲明式接口將HTTP請求模板化…

Docker入門指南(超詳細)

一、什么是docker 在云計算和微服務架構盛行的今天&#xff0c;Docker 作為容器技術的標桿&#xff0c;徹底改變了應用部署和運行的方式。簡單來說&#xff0c;Docker 是一個開源的容器化平臺&#xff0c;它通過將應用程序及其依賴環境打包成一個輕量級、可移植的容器&#xff…

學習秒殺系統-實現秒殺功能(商品列表,商品詳情,基本秒殺功能實現,訂單詳情)

文章目錄前言數據庫設計秒殺商品列表頁秒殺商品詳情實現簡單秒殺訂單詳情前言 由于慕課課程中是先實現最基本的功能然后對其壓測&#xff0c;壓測那個地方出問題&#xff0c;然后在對其優化。所以本文記錄的也是實現的是簡單的秒殺功能沒有涉及到高并發的優化。 數據庫設計 …

React 的常用鉤子函數在Vue中是如何設計體現出來的。

1、定義響應式數據&#xff1a; React 通過 useState 和 useReducer Vue 通過 ref 和 reactiveconst [state, setState] useState(initialState)const [state, dispatch] useReducer(reducer, initialState)2、定義緩存數據&#xff1a; React 通過 memo 和 useMemo useCal…

開源的 H.264/AVC 視頻編碼器庫-x264 的交叉編譯 和 程序測試

一、環境準備 安裝交叉編譯工具鏈 根據目標ARM架構選擇對應工具鏈&#xff08;如arm-linux-gnueabihf-&#xff09;&#xff1a;# Ubuntu/Debian系統 sudo apt-get install gcc-arm-linux-gnueabihf g-arm-linux-gnueabihf# 驗證安裝 arm-linux-gnueabihf-gcc --version或者手動…

自由學習記錄(69)

RectToPolar() 是 將直角坐標系 (笛卡爾坐標系) 的 uv 坐標&#xff0c;轉化為極坐標系&#xff08;θ&#xff0c;r&#xff09; uv - centerUV&#xff1a;將坐標原點平移&#xff0c;使 (0.5, 0.5) 變成原點。 r length(uv)&#xff1a;距離中心點的半徑&#xff08;從中…

Spring Boot 敏感信息入庫加密全面解決方案

Spring Boot 敏感信息入庫加密全面解決方案 在當今數據驅動的時代,保護用戶隱私數據已成為系統設計的必備要求。本文將詳細介紹 Spring Boot 應用中敏感數據加密存儲的完整方案,涵蓋從基礎實現到生產級落地的全流程。 一、加密方案選型 1.1 常見加密類型對比 加密類型特點…

docker0網卡沒有ip一步解決

正常查看ip的時候一直顯示沒有ip這里先刪除docker0網卡ip link delete docker0然后重啟服務systemctl restart docker再次查看顯示有ip了并且查看配置文件也是正常的cat /etc/docker/daemon.json {"registry-mirrors": ["https://docker.m.daocloud.io",&q…

MYSQL-索引篇

索引結構概述MySQL 的索引是在存儲引擎層實現的&#xff0c;不同的存儲引擎有不同的索引結構&#xff0c;主要包含以下幾種&#xff1a;索引結構描述BTree索引最常見的索引類型&#xff0c;大部分引擎都支持 B 樹索引Hash索引底層數據結構是用哈希表實現的&#xff0c;只有精確…

(純新手教程)HTML零基礎教學

&#xff08;下一章&#xff1a;python網絡爬蟲&#xff09;HTML 簡介HTML&#xff08;HyperText Markup Language&#xff0c;超文本標記語言&#xff09;是用于創建網頁的標準標記語言。什么是 HTML&#xff1f;HTML 不是編程語言&#xff0c;而是一種標記語言使用標簽來描述…

前端面試寶典---項目難點2-智能問答對話框采用虛擬列表動態渲染可視區域元素(10萬+條數據)

引言 在我參與智能問答項目中一個智能體回話并不會像豆包一樣&#xff0c;每次新建會話都是是從頭開始&#xff0c;而項目中你想創建新會話就像chatbox一樣&#xff0c;是點擊橡皮擦開啟新的聊天上下文&#xff0c;但是直接的聊天記錄依然存在&#xff0c;針對超過十萬&#xf…

Python元組:不可變數據的強大用法

文章目錄元組概念1.基本特性2.創建元組3.訪問元素4.元組的不可變性5.元組操作6.元組解包7.命名元組8.元組與列表的比較9.元組的優勢10.適用場景11.常用方法小結元組 概念 元組是 Python 中一個非常重要的內置數據結構&#xff0c;它與列表(list)相似但具有關鍵差異。下面我將…

若爾蓋濕地的花湖

花湖位于若爾蓋縣和甘肅的郎木寺之間的213國道旁&#xff0c;屬于若爾蓋濕地國家級自然保護區內。又名“梅朵湖”&#xff0c;因陽光照射下湖面色彩斑斕如絢麗的花瓣得名。花湖的大門是梯形高大石柱搭成&#xff0c;我們需要過天橋到對面檢票坐小交通。通過車窗看到一層一層的云…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | DoubleClickHeart(雙擊愛心)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— DoubleClickHeart組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 Composition API&#xff08;<script se…

1-緒論-1-數據結構的基本概念

&#x1f389; 數據結構的魔法世界&#x1f4da;&#x1f468;?&#x1f393;“數據就像大海中的浪花&#xff0c;結構則是那神秘的洋流。掌握數據結構&#xff0c;就是掌握在信息海洋中自由航行的力量&#xff01;”引言&#xff1a;為什么要學數據結構&#xff1f;&#x1f…

linux網絡相關命令簡介

目錄 一、IP命令 1、Link或L:管理網絡接口(網卡) 2、Address或Addr,A:管理Ip地址 3、Route或R:管理路由表

教育培訓機構如何為課程視頻添加防盜錄的強水印?

在知識付費時代&#xff0c;教育培訓機構的課程視頻是核心資產&#xff0c;但盜錄、非法傳播等問題卻讓機構防不勝防。如何在不影響學員觀看體驗的前提下&#xff0c;為課程視頻添加“強效防盜水印”&#xff0c;精準追蹤泄露源頭&#xff1f;本文將為您揭秘高安全性水印的添加…

python的形成性考核管理系統

前端開發框架:vue.js 數據庫 mysql 版本不限 后端語言框架支持&#xff1a; 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 數據庫工具&#xff1a;Navicat/SQLyog等都可以 摘要 隨著…

A*算法詳解

A*算法詳解一、A*算法基礎概念1.1 算法定位1.2 核心評估函數1.3 關鍵數據結構二、A*算法的核心步驟三、啟發函數設計3.1 網格地圖中的啟發函數3.2 啟發函數的選擇原則三、Java代碼實現四、啟發函數的設計與優化4.1 啟發函數的可采納性4.2 啟發函數的效率影響4.3 常見啟發函數對…