精粹汇总:大厂编程规范(持续更新)

欢迎来到啾啾的博客🐱。
记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。
有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。

目录

  • 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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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 下…