精粹匯總:大廠編程規范(持續更新)

歡迎來到啾啾的博客🐱。
記錄學習點滴。分享工作思考和實用技巧,偶爾也分享一些雜談💬。
有很多很多不足的地方,歡迎評論交流,感謝您的閱讀和評論😄。

目錄

  • 1 引言
  • 2 并發控制 (Concurrency Control)
  • 3 事務控制 (Transaction Control)
  • 4 數據庫與緩存 (Database & Cache)
  • 5 遠程調用 (Remote Procedure Call)
  • 6 異常處理與日志 (Exception Handling & Logging)
  • 7 算法研發與數據生產 (Algorithm & Data)

1 引言

看到螞蟻的編程軍規有點觸動,讓AI匯總來一下各大廠編程規范,去掉了基礎的命名規范,看一些常見但偶爾總有同事會忽略的。

內容由AI生成,本人做整理核對。如有錯漏,還請聯系更正,感謝。

2 并發控制 (Concurrency Control)

并發控制是指在多線程或多進程環境下,對共享資源的訪問進行有效管理,以避免數據競爭和不一致的問題。這在處理高并發場景時至關重要。
在高并發場景下,如果缺乏有效的并發控制,多個線程同時讀寫共享數據,很容易導致數據錯亂、更新丟失等嚴重問題。例如,經典的“庫存超賣”問題就是典型的并發控制不當造成的。

規范

  • 一鎖二判三更新: 在更新共享資源時,首先獲取鎖,然后再次判斷是否滿足執行條件,確認無誤后才進行更新操作。
  • 并行查詢超時: 當需要并行查詢多個外部服務時,應為每個查詢設置合理的超時時間,避免因某個服務延遲而導致整個請求長時間阻塞。
  • 樂觀鎖與悲觀鎖: 根據業務場景選擇合適的鎖策略。對于讀多寫少的場景,可以使用樂觀鎖(如版本號機制)來提高吞吐量;對于寫多或沖突嚴重的場景,則需要使用悲觀鎖(如synchronized或ReentrantLock)來保證數據一致性。

3 事務控制 (Transaction Control)

事務控制是確保一組數據庫操作要么全部成功,要么全部失敗的機制,是保證數據最終一致性的核心手段。
在許多業務場景中,一個完整的業務操作可能包含多個數據庫讀寫步驟。如果其中任意一步失敗,整個業務操作都應該被回滾(視業務場景而定),以防止出現數據狀態不一致的“半拉子”工程。例如,在轉賬操作中,扣款和收款必須在同一個事務中完成。

規范

  • 懸掛監控要及時: 對于跨服務、長周期的分布式事務,需要有完善的監控和告警機制,及時發現并處理“懸掛”(長時間未完成)的事務。
  • 必須防止空回滾: 在進行事務回滾操作時,必須先判斷對應的正向操作是否已經執行,防止因網絡延遲等原因導致的回滾請求先于正向請求到達,造成數據不一致。
  • 定是最終一致性: 在分布式系統中,強一致性往往會犧牲可用性。因此,在很多場景下會采用最終一致性的方案,通過可靠消息、定時任務補償等方式,保證數據在一定時間窗口內最終達到一致狀態。

4 數據庫與緩存 (Database & Cache)

這是關于如何高效、安全地使用數據庫和緩存的規范,旨在提升系統性能和穩定性。
數據庫是系統的核心數據存儲,其性能直接影響整個系統的響應速度。而緩存則是提升性能的利器,但如果使用不當,也可能引入數據不一致、緩存穿透等問題。

規范:

  • 查詢執行走索引: 所有數據庫查詢都必須經過EXPLAIN分析,確保利用到了合適的索引,避免全表掃描。對于大數據量的歸檔表,要根據查詢場景建立合適的索引。
  • 鏈接要看機器數: 數據庫連接池的大小需要根據數據庫實例的規格和應用的QPS進行合理配置,避免連接數過多耗盡數據庫資源。
  • 緩存使用:
    • 數據過期要控制: 為緩存數據設置合理的過期時間,并通過被動失效(LRU等)和主動更新相結合的方式,保證數據的時效性。
    • 緩存擊穿要兜底: 當熱點數據失效時,大量請求會直接涌向數據庫,造成“緩存擊穿”。可以通過加鎖或者使用分布式鎖的方式,只允許一個線程去查詢數據庫并回寫緩存。
    • 存儲容量要考慮: 緩存資源是有限的,需要評估業務數據量,合理規劃緩存容量,并制定清晰的數據淘汰策略。

5 遠程調用 (Remote Procedure Call)

遠程調用是指一個服務調用另一個獨立部署的服務所提供的接口,是構建分布式系統的基礎。
在微服務架構下,系統被拆分為多個獨立的服務,服務之間通過遠程調用進行協作。如果遠程調用不穩定,會直接影響整個系統的可用性。

規范:

  • 接口規約要明確: 服務提供方需要提供清晰、穩定、向后兼容的接口定義。調用方必須嚴格按照接口規約進行調用。
  • 請求返回超時: 必須為所有遠程調用設置合理的超時時間,并配置相應的重試機制。
  • 考慮調不通: 在設計上必須考慮到任何遠程調用都有可能失敗的情況。需要有相應的降級、熔斷、限流策略,保證在下游服務不可用時,核心業務流程依然能夠繼續或者優雅地失敗。

6 異常處理與日志 (Exception Handling & Logging)

這是關于如何規范地處理程序運行時的異常情況,以及如何記錄有價值的日志信息的規范。
健壯的異常處理機制是系統穩定性的重要保障。而清晰、規范的日志則是排查線上問題、進行數據分析的唯一線索。

規范:

  • 日志打印要規范:
    • 日志級別(INFO, WARN, ERROR)要使用得當。
    • 禁止打印無用日志,避免日志泛濫。
    • 敏感信息必須脫敏。
    • 日志中必須包含唯一的請求ID(TraceId),以便串聯起整個調用鏈路。
  • 降級限流需落實: 在系統負載過高或依賴的服務出現問題時,為了保證核心功能的可用性,需要主動降級部分非核心功能或限制流量。
  • 監控校對全覆蓋: 必須對系統的核心指標(QPS、延遲、錯誤率)、業務指標(訂單量、用戶數)以及資源使用情況(CPU、內存)進行全方位的監控,并設置合理的告警閾值。

7 算法研發與數據生產 (Algorithm & Data)

這部分規范主要針對涉及機器學習、數據處理等場景,強調樣本質量、模型評估和數據生產流程的管控。
在數據驅動的業務中,“垃圾進,垃圾出”。高質量的數據和嚴謹的算法模型是產出有價值結果的前提。

規范:

  • 樣本質量要保證: 訓練模型所用的樣本數據必須具有代表性、無偏性,并經過嚴格的清洗和標注。
  • 特征提取要謹慎: 特征工程是模型效果好壞的關鍵。提取的特征需要有明確的業務含義,并進行充分的驗證。
  • 模型選擇要評估: 需要根據業務目標、數據特點和計算資源,選擇合適的模型,并從多個維度(如準確率、召回率、性能)進行綜合評估。
  • 數據生產:
    • 節點新增需管控: 新增數據生產或處理的節點,必須經過評審,明確其必要性和對上下游的影響。
    • 開發生產莫混用: 嚴禁在生產環境進行數據開發和測試,必須建立隔離的開發測試環境。
    • 執行效率調最優: 對于數據處理任務,需要持續優化其執行效率,降低資源消耗。

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

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

相關文章

curl 檢查重定向的命令總結

查看是否發生了重定向: curl -I http://yourdomain.com跟蹤整個重定向鏈: curl -IL http://yourdomain.com禁止跳轉,檢查是否返回 301/302: curl -I --max-redirs 0 http://yourdomain.com如果你只想看跳沒跳 HTTPS&#xff0c…

STM32 Bootloader:使用文件頭加載并啟動應用程序

文章目錄 STM32 Bootloader:使用文件頭加載并啟動應用程序的完整解析一、系統整體流程二、鏡像頭結構 image\_header\_t三、Bootloader 主函數流程1. 初始化 UART2. 調用啟動函數3. 拷貝 APP 并跳轉啟動 四、跳轉執行 APP 的實現五、總結與擴展思路 明白了&#xff…

無外接物理顯示器的Ubuntu系統的遠程桌面連接(升級版)

文章目錄 操作步驟實踐截圖配置 Xorg 的虛擬顯示界面(升級版) 操作步驟 “遠程連接”,在設置里直接打開就可以.進行配置就行. 1.配置 GRUB 以支持無顯示器啟動 sudo nano /etc/default/grub (里面有一行改為: GRUB_CMDLINE_LINUX_DEFAULT"quiet splash videovesa:off vi…

ACCU-100安科瑞協調控制器:精準調控光伏逆變器

產品概述 ACCU-100微電網協調控制器是一款應用于微電網、分布式發電、儲能等領域的智能協調控制器。它能接入光伏系統、風力發電、儲能系統以及充電樁等設備,通過對微電網系統進行數據采集與分析,實時監控各類設備的運行狀態和健康狀況。在此基礎上&…

長春光博會 | 麒麟信安:構建工業數字化安全基座,賦能智能制造轉型升級

6月10日-13日,2025長春國際光電博覽會Light國際會議(簡稱長春光博會)在長春東北亞國際博覽中心盛大舉行,吉林省委書記黃強出席并宣布開幕,省委副書記、省長胡玉亭致辭。本屆大會聚焦光電信息領域的前沿技術和最新產品&…

書寫時垂直筆畫比水平筆畫表現更好的心理機制分析

你有寫字的時候總是垂直方向筆畫好寫,水平方向的筆畫不好寫的情況存在嗎? 書寫時垂直筆畫比水平筆畫表現更好的心理機制分析 從人類認知和行為模式的角度來理解這種現象。以下是深度心理分析: 核心心理動因 重力知覺內化: 垂直…

SpringAI使用總結

SpringAI使用總結 基本使用ChatModel和ChatClient簡單對話流式輸出預設角色prompt(提示詞)function call(工具調用)參考 基本使用 ChatModel和ChatClient SpringAi支持非常多的模型,為了統一處理,SpringA…

歷史交易數據漲跌分級

歷史交易數據漲跌分級 # encoding:utf-8 import sys,traceback from loguru import loggersys.path.append("..") from QhSpiderTool import QhDorpFiled from QhCsvMode import *def QhZhangDieFenJi(QhDfData,QhFangFa"A"):"""歷史交易數…

Kafka入門4.0.0版本(基于Java、SpringBoot操作)

Kafka入門4.0.0版本(基于Java、SpringBoot操作) 一、kafka概述 Kafka最初是由LinkedIn公司開發的,是一個高可靠、高吞吐量、低延遲的分布式發布訂閱消息系統,它使用Scala語言編寫,并于2010年被貢獻給了Apache基金會&…

react react-router-dom中獲取自定義參數v6.4版本之后

路由配置, AutnToken 組件作為權限、登錄管理 import { createBrowserRouter, Navigate } from react-router-dom; import Layout from /layout/index; import Login from /pages/login; import Page404 from /pages/404;import AutnToken from /components/authToken; import…

AI中的Prompt

1. System 作用:設定 AI 的“角色設定”和“行為準則”。 內容:通常是描述 LLM 的身份、語氣、行為范圍、約束規則。 類似:在大語言模型中是最優先被考慮的提示。 示例: 你是一個專業的商品評價分析助手,請根據用戶…

從人工到智能:IACheck如何重構檢測報告審核工作流?

從人工到智能:IACheck如何重構檢測報告審核工作流? 在當今AI技術迅猛發展的時代,各行各業正經歷從“人工驅動”到“智能驅動”的根本性變革。檢測認證(TIC)行業作為關乎質量與安全的重要支柱,也不例外。在…

React事件處理:如何給按鈕綁定onClick點擊事件?

系列回顧: 在前幾篇文章中,我們已經學會了如何使用 State 管理組件的內部數據,以及如何通過 Props 實現父子組件之間的通信。我們的組件現在已經有了“數據”和“外觀”。但是,它還像一個只能看的“模型”,無法與用戶進…

【機器學習|學習筆記】粒子群優化(Particle Swarm Optimization, PSO)詳解,附代碼。

【機器學習|學習筆記】粒子群優化(Particle Swarm Optimization, PSO)詳解,附代碼。 【機器學習|學習筆記】粒子群優化(Particle Swarm Optimization, PSO)詳解,附代碼。 文章目錄 【機器學習|學習筆記】粒…

深度剖析:AI 社媒矩陣營銷工具,如何高效獲客?

在社交媒體營銷領域,競爭日益激烈,傳統的社媒矩陣運營方式面臨諸多挑戰。而 AI 社媒矩陣營銷工具的出現,正以前所未有的方式重構社媒矩陣的底層架構,為營銷人員帶來了全新的機遇與變革。接下來,我們將從技術破局、實戰…

Spring XML 常用命名空間配置

Spring XML 常用命名空間配置 下面是一個綜合性的Spring XML配置樣例&#xff0c;展示了各種常用命名空間的使用方式&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&quo…

UE5場景漫游——開始界面及關卡跳轉

UE中實現UMG游戲界面搭建及藍圖控制&#xff0c;點擊游戲界面中的按鈕實現關卡的跳轉效果。 一、游戲界面顯示。1.創建UMG&#xff0c;2.搭建UI。3.關卡藍圖控制顯示 二、點擊按鈕之后實現關卡跳轉

CSS 外邊距合并(Margin Collapsing)問題研究

在 CSS 中&#xff0c;margin-top 屬性會導致外部 DIV 移動的現象主要是由于 外邊距合并&#xff08;Margin Collapsing&#xff09; 造成的。這是 CSS 盒模型的一個特性&#xff0c;可能會與直覺相悖。 外邊距合并的原理 當一個元素&#xff08;如內部 DIV&#xff09;的 ma…

清理電腦C磁盤,方法N:使用【360軟件】中的【清理C盤空間】

1、先下載并打開【360安全衛士】&#xff0c;點擊如下位置&#xff1a; 之后&#xff0c;可以把這個東西&#xff0c;創建快捷方式到電腦桌面&#xff0c;方便以后使用&#xff1a;

微服務集成seata分布式事務 at模式快速驗證

微服務集成Seata分布式事務 本次demo代碼地址業務場景&#xff1a;一般用于以下場景&#xff1a;使用 AT 模式的優勢&#xff08;適用于快速驗證&#xff09;&#xff1a;快速驗證建議步驟&#xff1a;注意事項&#xff1a; 工具環境微服務版本選擇Nacos 環境搭建與啟動nacos 下…