一份看似完美的项目总结
当我们复盘项目过程时能找到很多问题点比如人力不足需求过于复杂开发和测试工作量大。前后端开发、测试都是从其他团队抽掉的对当前项目的业务和技术不熟悉。跨团队组建的临时团队职责定义不清晰项目管控不严格。开发对项目的用到的技术不熟悉没有经过原有项目成员的CodeReview。测试通过太草率压测方案设计不合理。…列出问题后很快就能一一写出改进点。从公司层面加强的整体项目安排避免重复玩法的项目资源投入到重点的几个活动中。加强团队的能力培养总结文档供新人学习。对于核心代码进行CodeReview遇到问题时项目经理协调资深开发协助解决。将临时组建团队职责定义清晰各负责人沟通清楚。严格控制测试质量测试有上线的否决权。…这些总结看起来一点问题没有列出了问题也列出了改进点甚至可以当成样板去使用了是不是咱们就这么结束了呢。当然不是 它本身的说法没有错错在把问题的前提当作问题的原因。我们来看两种表述。下次我们要组建一个经验丰富的项目团队避免质量问题发生。当下次我们面临一个临时组建经验不足的项目团队时如何避免质量问题发生。这两种表述的差异在哪前一种表述是因为我们“团队”的原因导致了本次质量问题所以我们要解决“团队”的问题。而后一种是我们的团队就是临时组建的我们的开发、测试就是对新项目的业务和技术不熟悉在这个前提下才会出现质量问题那么在这个前提下怎么避免质量问题呢临时组建经验不足不是问题的原因它们是出现问题的前提这是客观存在的。这就好比我们说解决一个问题时最快的方式是我们不解决问题解决出问题的人就行了。在这里不就变成了我们不解决问题解决出问题的团队就行了。正是因为这个误区我们很多时候一出现项目质量问题就把锅甩给我们团队的协作有问题或者我们的项目时间紧张然后一句下次改进就结束了。这样的万能回答看似一点没错但往往就没法落地了。明明项目时间紧新团队协作经验不足本来就客观的存在没有它就没有问题怎么可以当作问题本身给解决掉呢。1、质量问题的关键原因带着这个前提我们再回头看前面的总结其实就能过滤出真正有价值的点了。我们也可以这么问问题是不能避免的但为什么在项目过程中我们的性能问题没有暴露出来三个角度从项目角度没有严格按项目流程来特别是最后测试任务紧张bug较多时赶工给出了测试报告。从开发角度没有找熟悉业务和技术的同学做CodeReview。从测试角度压测方案设计不合理不符合真实场景。逐一分析下。前面提到事故是后台的性能问题从项目角度就算流程严谨也没法暴露出性能问题特别是在项目过程中已暴露的风险是前端人力不足中间加了人手从功能的角度后端进度完全正常。再看开发角度这里我没有提开发的经验不足不是在推脱责任这同我们作为一个临时团队对业务的经验不足一样它是一个客观存在的前提。当你接触新项目使用新技术时经验不足是肯定存在的。问题是在自身经验不足时如何去完成任务那么和熟悉业务和技术的同学做CodeReview是主要的手段。再从测试角度功能测试是没有问题的但跟性能相关的压测方案是有问题的并且一开始就没有引起正视。最开始的压测方案是开发只出接口和参数文档直接丢给测试去压现在看来这是错误的。因此这次质量问题的关键总结如下。当下次我们面临一个临时组建经验不足的项目团队时面对大流量的业务需求开发们需要注意让熟悉业务和技术的同学帮忙做CodeReview。设计出符合业务场景的压测方案。这两点就可以落地了这也不是说项目管理上没有改进的而是优先保证这两点能更有效的降低风险。CodeReview的技巧这里就不多少说来谈谈我们做的几次压测方案的改进。2、三轮的压测改进单用户单接口双机压测随机用户多接口全量压测随机用户功能分组接口全量压测最开始压测方案是用一个用户两台服务器一个缓存分片做压测然后简单的用服务器QPS的均值乘以线上部署机器数量当作压测结果。这个方案如果是下图左侧的场景调用链路上的服务器可以同时弹性扩展自然是可以的。但要是右侧的场景调用链路上存在瓶颈比如数据库是一个节点并且无法扩展那就问题了。同样的这次项目的问题就是Redis成为了一个单节点的瓶颈。另外由于用户id是固定的所以缓存很可能被重复使用这样就难以测试到频繁创建缓存的场景。在系统重构后改进了一种压测方案通过随机用户Id批量轮询接口并且通过测试环境的弹性扩展完全模拟线上的部署环境。还通过加降级开关把入参合法性、风控、时效性校验等临时关闭以便能让压测的请求贯穿整个主流程。接着在这一方案的基础上通过对接口分组和伪造恰当的数据编写贴近真实的调用行为的脚本再次做了压测。在执行人员上也经历了从开发提供数据测试全权负责到测试主导开发参与再到开发主导测试协助的过程。由此压测方案就越来越贴近真实场景压测结论自然就更加可信 。3、高并发场景下的设计前面谈到了系统设计的不合理导致了本次性能问题来分析下这里面的根本原因。首先要理解的是Redis集群是由多个分片构成的一条数据被写到哪个分片里是由key的hash值来离散的。比如说我们要在Redis里面缓存一批用户信息并且能通过ID来存取。如果用Redis自带的Hash表结构写法如下存redis.hset(“userMap”,ID,userInfo)读redis.hget(“userMap”,ID)那么因为key是固定的userMap这意味着所有的用户信息都会被写到一个分片里。而对于通常的分布式系统的设计一个基本原则是让流量尽可能的被集群的机器平摊。固定的key就无法利用分布式的优势了并且如果并发量高这就会让一个分片去抗所有的流量再加上如果用户量数十万还有一次性读取所有数据的操作这样就变成一场灾难了。实际设计时直接把整个Redis集群当作一个Hash表的方式更加高效。存redis.set(“userMap”ID,userInfo)读redis.get(“userMap”ID)这里的key“userMap”IDID不同key就被离散了请求会集群平摊从而充分发挥分布式系统的性能。三、黑产和羊毛党的问题在项目上线后另一个没重视的问题出现了那就是大量的黑产和羊毛党出现活动奖励全被这些用脚本的人占据了。对黑产的事前考虑太少了仅做了简单的风控校验根本检测不足异常用户导致黑产可以通过脚本大量刷接口。这里的经验有两点对包含现金、现金等价物或高价值奖励的活动要有面对黑产的心理预期。在大公司专业的事情找专业的人做基于业务场景提前跟风控团队沟通好。对于第一点基本上只要值点钱的活动黑产肯定跑不了空手套白狼抢到就是赚到不妨想想如果你是黑产结合下业务场景你会怎么来刷自己的系统。基于第一点公司没有风控团队那就只能自己做了而一般上点规模的公司都有自己的风控团队利用好现成资源。风控主要考虑两方面有风控团队的接入他们的通用风控模型。针对项目的业务场景定制化一些风控模型。通用风控模型基本是通过新老账号、异地登录、人机识别等等用户行为建立的用户画像通过离线计算和实时校验来处理。定制化模型视情况而定比如拉一个单独的小黑户放进去的用户不能参与这个活动等等。被拦截的用户一般是走验证码或直接拉黑对于后者别忘了和客服的妹子们打好招呼准备下话术应对客诉。四、结语

相关新闻

通义听悟、Ai好记、Get笔记做音视频笔记有什么区别?三款AI笔记工具横评对比

通义听悟、Ai好记、Get笔记做音视频笔记有什么区别?三款AI笔记工具横评对比

市面上的视频总结和音视频笔记工具越来越多,选哪个成了新的难题。通义听悟、讯飞听见、Ai好记、Get笔记、BiBiGPT、ima……名字多得记不住,每个都说自己好用。 但实际用下来发现一个事:它们不是一个品类的东西。 选工具之前,先搞清…

2026/10/16 11:40:56 阅读更多 →
17.4%年复合增长的边缘AI推理SoC,为什么是2026年芯片圈最值得all in的赛道

17.4%年复合增长的边缘AI推理SoC,为什么是2026年芯片圈最值得all in的赛道

各位技术圈的CEO、产品负责人、投资人、嵌入式开发同行,今天我们抛开纸面参数,从30年产业研究市场落地的双重视角,把边缘AI推理SoC的真实商业逻辑给你讲透——这不是靠堆TOPS炒出来的概念,而是接下来7年能跑出千亿级增量的硬核赛道…

2026/10/16 19:20:53 阅读更多 →
记一次生产事故的思考

记一次生产事故的思考

二 事故描述 某天晚上突发了一批预警,当时的场景: A:B,帮忙看下你们的服务,我这里预警了 B:我刚发布了一个补丁,跟我有关? A:我这里没有发布,当然有关系了&am…

2026/10/8 22:56:18 阅读更多 →

最新新闻

拆解供应链体系:核心指标、牛鞭效应与信息流优化实践

拆解供应链体系:核心指标、牛鞭效应与信息流优化实践

做供应链这个领域十几年,每次跟人介绍自己的工作,十次有八次会被理解成“管仓库的”或者“搞运输的”。这也难怪,供应链这个词听起来确实抽象,但它本质上就是一家企业、甚至一个行业能不能赚钱、能不能活下去的底层逻辑。这篇是这…

2026/10/17 7:15:05 阅读更多 →
职称论文难写?实测4款AI工具助你选题、写作、润色、查重一步到位

职称论文难写?实测4款AI工具助你选题、写作、润色、查重一步到位

职称论文这东西,写过的人都懂:白天要上班,晚上要带娃,只能靠周末和深夜去挤那几千字的论文。更要命的是,评审专家一个个火眼金睛,既要看你的理论深度,又要看你有没有工程实践支撑,最…

2026/10/17 7:15:05 阅读更多 →
基于YOLOv8与PyQt5的桌面端七类人脸情绪识别系统实战

基于YOLOv8与PyQt5的桌面端七类人脸情绪识别系统实战

做一个人脸情绪识别系统,最怕的就是搞成“实验室玩具”——模型在测试集上准确率挺高,一放到真实摄像头前就原形毕露;或者模型勉强能跑,但界面粗糙得没法给别人演示。这篇文章记录一下我用YOLOv8配合PyQt5实现一套桌面端七类情绪识…

2026/10/17 7:15:05 阅读更多 →
具身智能的Scaling Law:零样本泛化如何被数据规模与质量双重驱动

具身智能的Scaling Law:零样本泛化如何被数据规模与质量双重驱动

1. 这不是“又一个大模型突破”,而是机器人智能演进的关键拐点最近在内部技术复盘会上,我反复回看一段30秒的视频:Helix 2.5机械臂在完全陌生的家庭厨房里,第一次见到微波炉、第一次接触带盖玻璃餐盒、第一次面对没拆封的即食燕麦…

2026/10/17 7:15:05 阅读更多 →
医院NTP时钟服务器:医疗时间同步的底层生命线

医院NTP时钟服务器:医疗时间同步的底层生命线

1. 为什么医院里一台“不起眼”的NTP时钟服务器,比很多设备更不能出错?你进过三甲医院的急诊抢救室吗?心电监护仪屏幕上的时间跳动、护士站电子病历系统右下角的数字、检验科全自动生化分析仪打印报告的时间戳、手术室麻醉记录单自动生成的起…

2026/10/17 7:15:05 阅读更多 →
Ling-3.1-flash工具调用完整教程:Function Calling接入指南,快速打造你的AI编程助手

Ling-3.1-flash工具调用完整教程:Function Calling接入指南,快速打造你的AI编程助手

人工智能大模型基础模型推理模型 【免费下载链接】Ling-3.1-flash 项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/Ling-3.1-flash 点击查看 免费下载 Ling-3.1-flash 是 inclusionAI 开源的 560B 总参数 MoE 大模型,每 token 激活 25B 参数…

2026/10/17 7:14:05 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →