GitHub 宕機自救指南:打造韌性開發體系

一、引言

1.1 GitHub 宕機事件回顧與影響剖析

在軟件開發的廣袤版圖中,GitHub 宛如一座熠熠生輝的燈塔,為全球超 1 億開發者照亮前行之路,其重要性不言而喻。它集代碼托管、版本控制、協作開發以及項目管理等核心功能于一身,是無數開源項目蓬勃發展的搖籃,也是企業級開發團隊高效運作的基石。

然而,即便強大如 GitHub,也難以抵御技術故障的侵襲,宕機事件時有發生。回溯 2024 年 8 月 14 日,UTC 時間當天,一場意外的宕機風暴驟然降臨,GitHub 的服務瞬間陷入癱瘓,所有用戶被無情拒之門外,就連備受青睞的 Copilot 也淪為不可用狀態。經深入排查,此次故障的罪魁禍首竟是一次配置變更,它悄然改寫了數據庫基礎設置內部的流量路由規則,最終導致服務與數據庫之間的連接如脆弱的絲線般斷裂。盡管 GitHub 團隊迅速啟動回滾操作,成功讓服務重煥生機,且幸運地未造成數據丟失的慘重后果,但此次事件仍如一顆巨石投入平靜湖面,在全球開發者社區激起千層浪,給無數開發工作帶來了難以估量的阻礙。

時光倒轉至 2022 年與 2023 年,GitHub 也曾經歷大規模宕機的嚴峻考驗,服務中斷時長動輒數小時。而在 2025 年 8 月,一場更為猛烈的宕機浪潮席卷全球,其影響范圍之廣、沖擊程度之深,讓眾多深度依賴 GitHub 平臺的團隊深陷困境。此次宕機絕非普通的服務中斷,它更像是一場突如其來的八級地震,徹底打亂了無數開發團隊的日常節奏。從最基礎的代碼提交與拉取操作無法執行,致使新功能開發與緊急熱修復工作被迫按下暫停鍵;到依賴 GitHub Webhook 觸發的 CI/CD 流水線全面崩塌,整個自動化構建、測試與部署鏈路瞬間斷裂,嚴重阻滯了軟件的持續交付進程;再到使用 GitHub Issues 進行問題追蹤、GitHub Projects 進行項目管理的團隊,瞬間失去了對任務進度的精準把控,項目推進陷入一片混沌無序之中。甚至連托管在 GitHub Wiki 上的項目文檔與知識庫,也因無法訪問,使得新加入的團隊成員仿佛置身于伸手不見五指的黑暗森林,難以快速融入項目開發的大部隊。

1.2 應對宕機的緊迫性與核心目標

面對 GitHub 宕機這一棘手狀況,倘若我們僅僅選擇消極等待,寄希望于 GitHub 團隊迅速恢復服務,無疑是將團隊的命運完全交付于他人之手,這在瞬息萬變的軟件開發戰場上是極為被動且危險的。相反,我們必須主動出擊,積極探尋行之有效的應對策略,精心構建一套即便在極端情況下也能確保開發工作穩步推進的分布式協作體系。這不僅是當下化解燃眉之急的關鍵所在,更是從長遠視角提升團隊應對不確定性、增強協作韌性的必然選擇,關乎團隊在復雜多變的技術浪潮中能否屹立不倒。

本文將如一位經驗豐富的向導,引領大家深入探索在 GitHub 宕機期間,我們可以運用的一系列技術手段與協作方法。通過這些策略的實施,幫助團隊最大限度地降低損失,維持開發工作的連貫性與穩定性,在逆境中尋得前行的方向,確保項目的順利推進不受過多阻礙。

二、本地倉庫應急協作

2.1 巧用本地克隆倉庫實現代碼交換

在日常開發的征程中,團隊成員的本地機器宛如一座寶藏庫,通常存儲著 GitHub 倉庫的克隆版本。當 GitHub 宕機的陰霾籠罩而來時,這些本地克隆倉庫便搖身一變,成為維系開發工作的中流砥柱,承載著代碼交換與協作的重任。

假設團隊成員 A 在本地全情投入某項功能的開發,期間在本地倉庫精心提交了多次代碼。此時,若需與成員 B 共享這些代碼成果,可依循以下步驟有條不紊地展開:

  1. 創建補丁文件:成員 A 在本地倉庫的命令行界面中,精準輸入git format - patch命令,該命令宛如一位技藝精湛的工匠,能夠依據提交歷史,細致入微地生成一系列補丁文件。例如,若 A 期望將最近的 3 次提交制作成補丁,只需運行git format - patch HEAD~3指令。瞬間,在當前目錄下,如0001 - commit - message.patch0002 - commit - message.patch等文件便會如魔法般誕生,這些文件猶如一本本詳細的代碼修改日志,詳盡記錄了每次提交對代碼所做的修改內容,從新增的函數、修改的變量,到調整的算法邏輯,無一遺漏。
  2. 共享補丁文件:生成補丁文件后,成員 A 需借助團隊內部常用的文件共享渠道,將這些寶貴的文件傳遞給成員 B。常見的共享途徑豐富多樣,如便捷高效的企業微信文件傳輸功能,只需輕輕拖拽文件,即可快速送達對方手中;內部郵件系統亦是不錯的選擇,通過撰寫郵件并添加附件,能確保文件準確無誤地發送到指定郵箱;若團隊擁有專門的文件共享服務器,那將補丁文件上傳至服務器相應目錄,成員 B 便可按需下載,實現無縫對接。
  3. 應用補丁文件:成員 B 在收到補丁文件后,需在自己的本地倉庫中施展git apply命令的魔法,將接收到的補丁融入自身代碼庫。假設補丁文件存放在~/patches/目錄下,B 只需進入本地倉庫目錄,輸入git apply ~/patches/*.patch指令,剎那間,A 的代碼修改便如同涓涓細流,精準無誤地同步到 B 的本地倉庫中,成功實現了在 GitHub 宕機期間的代碼交換,讓開發工作得以在本地協作的軌道上繼續穩步前行。

2.2 搭建臨時本地協作網絡

倘若團隊成員恰好處在同一局域網環境中,宛如身處一片緊密相連的協作綠洲,此時,搭建臨時的本地協作網絡便成為一種高效且便捷的應急協作方式,能夠極大地提升團隊在 GitHub 宕機期間的協作效率。以下以成員 C、D、E 為例,為大家詳細闡述搭建過程:

  1. 設置共享倉庫:成員 C 首先需精心挑選一個合適的本地目錄,將其巧妙初始化為共享倉庫。具體操作時,C 只需進入該目錄,在命令行中輸入git init --bare命令,瞬間,一個功能完備的裸倉庫便宣告誕生。隨后,C 需通過共享文件夾設置,將此倉庫目錄大方地共享給同在局域網內的 D 和 E。在 Windows 系統的世界里,這一操作猶如探索寶藏地圖,可通過文件夾屬性中的 “共享” 選項卡,依照指引輕松完成設置;而在 Linux 系統的廣袤天地中,則可借助 Samba 服務這一強大工具,實現目錄的順暢共享,為團隊協作搭建起穩固的橋梁。
  2. 添加遠程倉庫:成員 D 和 E 在各自的本地倉庫中,需運用git remote add命令,將 C 共享的倉庫巧妙添加為遠程倉庫。假設 C 共享倉庫的路徑在局域網內可訪問的地址為//192.168.1.100/shared_repo(此為示例地址,實際操作中需根據局域網 IP 和共享設置靈活調整),D 和 E 只需在本地倉庫的命令行中執行git remote add temp_repo //192.168.1.100/shared_repo指令,便能成功建立起與共享倉庫的連接,為后續的代碼推送與拉取操作做好充分準備。
  3. 推送與拉取代碼:當 D 在本地全力以赴完成部分功能開發,并在本地倉庫中鄭重提交代碼后,只需執行git push temp_repo命令,代碼便會如同離弦之箭,迅速推送到共享倉庫。而成員 E 若渴望獲取最新代碼,只需輕松執行git pull temp_repo指令,便能將共享倉庫中的最新代碼盡收囊中,實現代碼的實時同步。通過這種方式,在局域網內成功構建了一個臨時但高效的協作環境,宛如在宕機的黑暗中點亮了一盞明燈,有效避免因 GitHub 宕機導致協作陷入停滯的困境,讓團隊開發工作得以持續高效運轉。

三、替代代碼托管平臺應急啟用

3.1 國內鏡像與代碼托管平臺推薦

在 GitHub 宕機的特殊時期,國內一些可靠的代碼托管平臺宛如及時雨,能夠作為應急替代方案,為團隊提供堅實的支持與保障。其中,Gitee 便是一顆璀璨的明星,在國內開發者社區中備受青睞,它憑借國內良好的網絡訪問速度以及為國內開發者量身定制的諸多便利功能,成為眾多團隊的首選應急平臺。

  1. 注冊與創建倉庫:若團隊尚未在 Gitee 這片土地上開墾自己的 “代碼家園”,需先前往 Gitee 官網(Gitee - 基于 Git 的代碼托管和研發協作平臺 )開啟注冊之旅。在官網頁面,依照清晰的指引,填寫必要的信息,完成注冊操作。注冊成功后,登錄賬號,此時頁面右上角的 “+” 號宛如開啟寶藏之門的鑰匙,點擊它并選擇 “新建倉庫” 選項。在新建倉庫頁面,團隊需用心填寫倉庫名稱,確保其準確反映項目核心內容;撰寫詳細的倉庫描述,讓他人能快速了解項目概況;若項目計劃開源,還需審慎選擇合適的開源協議,為代碼的傳播與共享奠定基礎;同時,可根據項目需求,靈活初始化倉庫,如添加 README 文件,為項目搭建起清晰的介紹窗口;添加.gitignore 文件,巧妙排除無需納入版本控制的文件,讓倉庫管理更加井然有序。
  2. 遷移代碼:若團隊之前已將項目部分代碼克隆至本地,此時在本地倉庫的命令行中,執行git remote set - url origin <gitee_repo_url>命令,便可如同更換航船的目的地一般,將遠程倉庫地址從 GitHub 平穩切換為剛在 Gitee 創建的倉庫地址。隨后,執行git push -u origin --all命令,本地所有分支代碼便會如洶涌的潮水般,一股腦推送到 Gitee 倉庫,實現代碼的快速遷移。若本地無代碼,也無需擔憂,在 Gitee 倉庫頁面,點擊 “導入倉庫” 選項,輸入 GitHub 倉庫的 URL 地址,Gitee 便會化身勤勞的搬運工,自動將 GitHub 倉庫代碼完整遷移過來,確保團隊的代碼資產安全轉移,為開發工作的持續進行提供有力支撐。

3.2 快速遷移項目的方法與注意事項

在將項目遷移至替代平臺的過程中,猶如在復雜的航道中航行,有一些關鍵要點需團隊時刻留意,方能確保遷移工作順利完成,避免陷入不必要的困境。

  1. 分支與標簽遷移:確保所有分支(包括主分支、開發分支、功能分支等)以及標簽(如版本標簽、里程碑標簽等)完整無缺地遷移至替代平臺,這是保障項目歷史記錄與開發進度準確延續的關鍵。不同平臺在分支與標簽的管理機制上可能存在細微差異,團隊需提前深入了解目標平臺的規則,制定針對性的遷移策略,必要時可借助平臺提供的遷移工具或 API,實現精準遷移。
  2. 依賴與配置文件:項目的正常運行往往依賴于一系列外部依賴包以及精心配置的文件,如 Python 項目中的 requirements.txt 文件,記錄了項目所需的 Python 包及其版本信息;前端項目中的 package.json 文件,管理著項目的依賴關系與腳本命令。在遷移項目時,務必確保這些依賴與配置文件一同遷移至新平臺,并根據新平臺的環境特點,對配置文件進行必要的調整與適配,如修改數據庫連接字符串、調整服務器地址等,確保項目在新平臺上能夠順利構建與運行。
  3. 權限與協作設置:團隊協作的順暢開展離不開合理的權限設置,在遷移項目至替代平臺后,需及時根據團隊成員的角色與職責,重新設置倉庫的訪問權限,明確誰具有讀寫權限、誰只能進行只讀操作,以及誰可對倉庫進行管理與維護。同時,關注新平臺的協作功能,如是否支持 Pull Request 機制、如何進行代碼審查等,確保團隊成員能夠迅速適應新的協作環境,繼續高效開展開發工作。

四、CI/CD 流水線的應急處置

4.1 本地 CI/CD 環境搭建

在 GitHub 宕機導致線上 CI/CD 流水線全面癱瘓的緊急時刻,搭建本地 CI/CD 環境猶如在黑暗中筑起一座堅固的堡壘,成為保障項目持續集成與持續交付的關鍵舉措。以常見的 Python 項目為例,借助強大的工具與框架,我們能夠快速搭建起一個功能完備的本地 CI/CD 環境。

  1. 安裝必要工具:首先,需在本地機器上安裝 Python 解釋器,確保其版本與項目要求相匹配。同時,安裝構建工具(如 pipenv 或 poetry,它們能夠高效管理項目的依賴包)、測試框架(如 pytest,它提供了豐富的測試功能與插件,方便編寫與運行測試用例)以及自動化腳本執行工具(如 Invoke,可用于定義與執行項目相關的各種任務,如代碼格式化、測試運行、打包發布等)。在安裝過程中,可根據不同工具的官方文檔,依照詳細的指引,通過命令行工具輕松完成安裝操作。
  2. 配置本地流水線:創建一個本地 CI/CD 配置文件,如使用 Invoke 時,可在項目根目錄下創建一個名為 tasks.py 的文件。在該文件中,精心定義一系列任務,如編寫代碼格式化任務,使用 autopep8 工具對代碼進行自動格式化,確保代碼風格統一、規范;定義測試任務,調用 pytest 框架運行項目中的所有測試用例,實時檢測代碼質量;設置打包任務,將項目打包成可部署的格式,如創建一個 wheel 包。同時,合理設置任務的執行順序,確保代碼先經過格式化,再進行測試,測試通過后進行打包,形成一個完整的本地 CI/CD 流水線。在配置過程中,需根據項目的具體需求與結構,靈活調整任務的參數與執行邏輯,確保流水線能夠準確適配項目特點。
  3. 運行本地 CI/CD:一切準備就緒后,在本地機器的命令行中,通過執行相應的命令,便可啟動本地 CI/CD 流水線。例如,運行invoke format命令,即可觸發代碼格式化任務;執行invoke test命令,項目中的所有測試用例便會迅速運行起來;輸入invoke package命令,項目將被打包成指定格式。通過這種方式,在本地實現了項目的持續集成與持續交付,有效規避了因 GitHub 宕機導致的交付停滯風險,確保項目開發進度不受過多影響。

4.2 應急時的 CI/CD 策略調整

在 GitHub 宕機的特殊時期,除了搭建本地 CI/CD 環境,還需對 CI/CD 策略進行靈活調整,以適應復雜多變的情況,保障項目能夠以最穩健的方式繼續推進。

  1. 減少不必要的自動化任務:審視現有的 CI/CD 流水線,暫時屏蔽或移除一些對項目核心功能影響較小、非緊急的自動化任務,如一些耗時較長的性能測試任務、針對特定環境的兼容性測試任務等。這些任務在正常情況下有助于提升項目質量,但在宕機應急期間,可能會耗費大量時間與資源,影響項目的緊急修復與核心功能開發進度。通過精簡任務,集中資源處理關鍵任務,能夠顯著提高 CI/CD 流水線的執行效率,確保項目的關鍵路徑不受阻礙。
  2. 手動干預與驗證:由于線上自動化流程的中斷,在部分環節需要團隊成員進行手動干預與驗證,以確保項目的準確性與穩定性。例如,在代碼合并環節,以往可能依賴 GitHub 的自動化代碼審查與合并機制,宕機期間則需團隊成員手動審查代碼變更,仔細比對代碼差異,確保合并的代碼不會引入新的漏洞或沖突。在部署環節,手動檢查部署環境的配置是否正確,確保項目能夠在本地或備用服務器上順利部署運行。雖然手動操作增加了一定的工作量,但在特殊時期,能夠有效保障項目的質量與穩定性。
  3. 備份與記錄 CI/CD 數據:在應急處置 CI/CD 流水線的過程中,務必重視對 CI/CD 數據的備份與記錄。每次運行本地 CI/CD 任務后,及時備份生成的測試報告、構建產物等關鍵數據,這些數據不僅是項目質量的重要見證,也是后續恢復正常 CI/CD 流程時進行數據比對與分析的寶貴依據。同時,詳細記錄在應急期間對 CI/CD 策略所做的每一項調整、手動執行的每一個步驟,以便在 GitHub 恢復服務后,能夠快速回顧與總結經驗,順利將 CI/CD 流水線恢復至正常狀態,并對現有流程進行優化與完善。

五、項目管理與溝通的延續

5.1 離線項目管理工具的使用

當 GitHub 宕機致使其自帶的項目管理功能(如 GitHub Issues、GitHub Projects 等)全線崩潰時,借助離線項目管理工具延續項目管理工作,成為團隊保持項目有序推進的關鍵手段。以 Trello 和 Confluence 為例,它們在離線環境下依然能夠發揮強大的項目管理效能。

  1. Trello 的應急應用:Trello 以其簡潔直觀的看板風格而聞名,在 GitHub 宕機期間,團隊可迅速將項目任務遷移至 Trello 平臺。首先,在 Trello 官網完成注冊并登錄賬號后,創建一個新的看板,根據項目階段或任務類型,創建不同的列表,如 “待辦任務”“進行中任務”“已完成任務” 等。接著,將原本記錄在 GitHub Issues 中的任務逐一創建為 Trello 卡片,在卡片中詳細描述任務內容、負責人、截止日期等關鍵信息。團隊成員可通過拖動卡片在不同列表間的位置,直觀展示任務的進度狀態。同時,利用 Trello 的評論功能,對任務進行討論與溝通,確保信息的及時傳遞與共享。此外,Trello 還支持添加附件、設置提醒等功能,方便團隊成員圍繞任務開展協作,有效維持項目管理的連貫性。
  2. Confluence 的離線協作優勢:Confluence 是一款功能強大的團隊協作與知識管理工具,在離線環境下同樣表現出色。團隊可提前將重要的項目文檔、任務計劃、會議紀要等內容存儲在 Confluence 中,并利用其離線編輯功能,在 GitHub 宕機期間繼續對文檔進行更新與完善。例如,對于項目計劃文檔,團隊成員可根據實際開發進度,在線下實時調整任務安排、更新預計完成時間;對于會議紀要文檔,及時補充會議討論的最新



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

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

相關文章

移動端網頁調試實戰,iOS WebKit Debug Proxy 的應用與替代方案

在移動端開發中&#xff0c;iOS WebView 的調試一直是個難題。不同于 Android 可以依賴 Chrome DevTools 和 ADB&#xff0c;iOS 的 WKWebView 只能通過 Safari 開發者工具調試&#xff0c;而這需要 Mac 環境和設備直連。為了彌補限制&#xff0c;社區出現了一個常用工具 —— …

煥新升級,Sermant 2.0.0 release版本重磅發布!

Sermant社區在6月底正式發布了2.0.0 release版本&#xff0c;這次更新中&#xff0c;Sermant進行了項目所屬組織調整并新增了基于xDS協議的服務發現能力、預過濾啟動加速機制、Sermant Backend的配置管理能力。所屬組織調整使得Sermant淡化廠商屬性&#xff0c;以全新的姿態更好…

sqli-labs通關筆記-第28a關GET字符注入(多重關鍵字過濾繞過 腳本法)

目錄 一、sqlmap之tamper腳本 二、源碼分析 1、代碼審計 2、SQL安全性分析 三、滲透實戰 1、進入靶場 2、tamper腳本 3、sqlmap滲透 SQLI-LABS 是一個專門為學習和練習 SQL 注入技術而設計的開源靶場環境&#xff0c;本小節對第28a關Less 28a基于GET字符型的SQL注入關卡…

聯想打印機2268w安裝

聯想打印機2268w是支持無線打印的。在某度搜索&#xff0c;掀起蓋子長按開機鍵&#xff0c;成功初始化。之后按說明應該能用手機搜索到打印機的熱點&#xff0c;反復搜索都沒有出現。最后沒辦法&#xff0c;之后好用我自己的方法安裝。找了個筆記本&#xff0c;開機連接到wifi,…

【LeetCode】動態規劃——72.編輯距離、10.正則表達式匹配

LeetCode題目鏈接 https://leetcode.cn/problems/edit-distance/description/ https://leetcode.cn/problems/regular-expression-matching/description/ 題解 72.編輯距離 本題要定義為長度為i、長度為j的字符串的最少編輯次數&#xff0c;每次判斷字符的下標為i-1、j-1。dp[i…

[親測可用]Android studio配置國內鏡像源 Kotlin DSL (build.gradle.kts)

一、更改gradle下載鏡像Android studio項目需要下載和更新 Gradle 及其依賴。由于網絡環境&#xff0c;直接從 Gradle 官網下載可能會遇到速度慢或超時的問題。這里需要更換為使用國內的鏡像站點來加速下載。官網地址&#xff08;較慢&#xff09;&#xff1a;https://services…

《跳出“技術堆砌”陷阱,構建可演進的軟件系統》

很多團隊陷入了“技術焦慮式開發”—盲目追逐熱門框架&#xff0c;將“使用微服務”“引入云原生”“集成AI組件”當作架構先進的標簽&#xff0c;卻忽視了業務與技術的底層匹配邏輯。某互聯網團隊為了“彰顯技術實力”&#xff0c;在內部協同工具中強行接入機器學習推薦模塊&a…

賦能你的應用:英超實時數據接入終極指南(API vs. WebSocket)

在當今數據驅動的時代&#xff0c;為您的應用程序注入實時、準確的英超賽事數據&#xff0c;是提升用戶體驗、打造差異化競爭力的關鍵。無論是開發一款球迷必備的比分追蹤App&#xff0c;一個深度專業的賽事分析平臺&#xff0c;還是一個充滿互動性的夢幻足球游戲&#xff0c;首…

計算機網絡:(poll、epoll)

一、select的不足1. 最大監聽數受限&#xff1a;FD_SETSIZE 默認 1024&#xff08;Linux&#xff09;2. 每次調用需重置 fd_set&#xff1a;內核會修改集合&#xff0c;必須每次重新 FD_SET3. 用戶態與內核態拷貝開銷大4. 返回后仍需遍歷所有 fd 才能知道哪個就緒5. 效率隨 fd …

網絡編程之設置端口復用

首先來說一下為什么要設置端口復用&#xff0c;有些時候在調試服務器代碼時勢必會經常啟動或結束服務器進程&#xff0c;這樣就會出現當再次啟動服務器時有可能會出現端口綁定失敗的情況&#xff0c;造成這個情況的原因是由于你上次關閉服務器時有連接尚未斷開等等其他原因&…

stargo縮擴容starrocks集群,實現節點服務器替換

1.背景在企業中可能需要&#xff0c;將starrocks的某一臺服務器下架&#xff0c;換上另一臺服務器&#xff0c;如何實現這個操作&#xff0c;本篇將進行介紹&#xff1b;節點hadoop101hadoop102hadoop103hadoop104集群原集群節點新節點fe???&#xff08;下線&#xff09;?&…

Linux -- 進程間通信【命名管道】

目錄 一、命名管道定義 二、命名管道創建 1、指令 2、系統調用 3、刪除 三、匿名管道和命名管道的區別 四、命名管道的打開規則 五、代碼示例 1、comm.hpp 2、server.cc 3、client.cc 一、命名管道定義 # 匿名管道存在以下核心限制&#xff1a; 僅限親緣關系進程&a…

LinuxC系統多線程程序設計

一.多線程程序設計1. 線程概述&#xff1a;1.1 什么是線程?線程是進程中的一個實體(組成單元),是系統進程調度的最小單元。一個進程至少具有一個線程&#xff0c;如果進程僅有一個線程&#xff0c;該線程就代表進程本身。把代表進程本身的線程稱為主線程&#xff0c;一個進程…

Vue3 + TS + MapboxGL.js 三維地圖開發項目

文章目錄 1. 安裝依賴 2. 新建 Map 組件(components/MapView.vue) 3. 在頁面中使用(views/Home.vue) 4. 效果說明 1. 安裝依賴 npm install mapbox-gl @types/mapbox-gl --save?? 注意:需要去 Mapbox 官網,申請一個 access token。 package.json {"name":…

【編程語言】Rust 入門

目錄 一、Rust 是什么&#xff1f;為什么選擇它&#xff1f; 二、環境搭建&#xff0c;邁出第一步 2.1 Windows 系統安裝步驟 2.2 macOS 系統安裝步驟 2.3 Linux 系統安裝步驟 2.4 安裝過程中的常見問題及解決方案 三、基礎語法&#xff0c;構建知識大廈的基石 3.1 變量…

Python 編碼與加密全解析:從字符編碼到 RSA 簽名驗證

在 Python 開發中&#xff0c;字符編碼&#xff08;如 UTF-8、GBK&#xff09;和 數據加密&#xff08;如 Base64、MD5、RSA&#xff09;是處理數據傳輸、存儲安全的核心技術。本文結合實戰代碼&#xff0c;從基礎的字符編解碼入手&#xff0c;逐步深入到加密算法的應用&#x…

關于shell命令的擴展

目錄 一、邏輯運算符 1. &&&#xff08;AND&#xff09; 2. ||&#xff08;OR&#xff09; 3. 組合使用&#xff1a;A && B || C 二、輸出與重定向 1. echo 輸出 2. 標準文件描述符&#xff08;FD&#xff09; 3. 重定向操作符 4. 同時重定向 stdout 和…

MySQL EXPLAIN 查看執行計劃詳解

MySQL 的 EXPLAIN 命令。這是一個分析和優化 SQL 查詢性能不可或缺的強大工具。它展示了 MySQL 如何執行一條 SQL 語句&#xff0c;包括如何使用索引、表連接順序、估計的行數等關鍵信息。1. 如何使用 EXPLAIN在你要分析的 SELECT 語句前加上 EXPLAIN 或 EXPLAIN FORMATJSON&am…

TensorFlow 面試題及詳細答案 120道(51-60)-- 模型保存、加載與部署

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。 前后端面試題-專欄總目錄 文章目錄 一、本文面試題目錄 51. TensorFlow中保存和加…

從零開始學Shell編程:從基礎到實戰案例

從零開始學Shell編程&#xff1a;從基礎到實戰案例 文章目錄從零開始學Shell編程&#xff1a;從基礎到實戰案例一、認識Shell&#xff1a;是什么與為什么學1.1 Shell的定義1.2 常用Shell解釋器二、Shell編程快速入門&#xff1a;編寫第一個腳本2.1 步驟1&#xff1a;創建腳本文…