[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"consumer-news-detail-855":3,"consumer-news-interaction-855":41,"consumer-news-related-855":44},{"detail":4,"item":36},{"card":5,"schemaVersion":23,"fields":24,"content":30},{"id":6,"kind":7,"targetType":8,"targetId":9,"subtype":7,"typeLabel":10,"title":11,"subtitle":12,"summary":13,"coverUrl":14,"badgeText":15,"href":16,"sourceName":12,"meta":17,"metrics":20,"tags":21,"resolved":22},"NEWS_ARTICLE:855","news","NEWS_ARTICLE",855,"资讯","被罚了500后，整个人都变老实了","博客园","我们组有个同事，以前是那种闲不住的人。现在也闲不住 只不过是不敢动了。 去年部门空降了一位新总监，阿里P8，第一次全员会PPT上就八个大字：拥抱变化，永不言弃。 新领导上来搞流程改革，每个模块指定Owner，出事追责到人，A级事故罚款500起步，B级300 依次类推，发版上线改配置全走审批。说实话之","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F273387\u002F202608\u002F273387-20260818222617092-925481998.png","","\u002Fnews\u002F855",[18,19],"2026","软件开发",{},[19],true,"consumer-content-detail-v1",{"sourceName":12,"authorName":25,"categoryName":19,"summary":13,"description":13,"publishTime":26,"updateTime":27,"sourceUrl":28,"language":29},"欢醉","2026-09-02T07:59","2026-09-02T20:37:50","https:\u002F\u002Fwww.cnblogs.com\u002Fzhangs1986\u002Fp\u002F22556068","中文",{"format":31,"policy":32,"normalized":22,"html":33,"text":34,"wordCount":35,"hasBody":22},"HTML","NEWS_CONTENT_V1","\u003Cp>\u003Cimg src=\"https:\u002F\u002Fi1.wp.com\u002Fimg2024.cnblogs.com\u002Fblog\u002F273387\u002F202608\u002F273387-20260818222617092-925481998.png?w=720&amp;quality=65&amp;strip=all\" alt=\"7c3e19b0dfe693f843d47b062dbd96ff_jIl0jLYTPAWipWF4WMMVwBloUhAuXBbKACdR6Epd+CAaZPIcnLRAqQucliDz55BVuJzgtbigaUywFDsXdAqUgxvUpyUGQDMCalkBzgIAtx3H+0pCLiYAAAAASUVORK5CYII=\">\u003C\u002Fp>\n\u003Cp>我们组有个同事，以前是那种闲不住的人。现在也闲不住 只不过是不敢动了。\u003C\u002Fp>\n\u003Cp>去年部门空降了一位新总监，阿里P8，第一次全员会PPT上就八个大字：拥抱变化，永不言弃。\u003C\u002Fp>\n\u003Cp>新领导上来搞流程改革，每个模块指定Owner，出事追责到人，A级事故罚款500起步，B级300 依次类推，发版上线改配置全走审批。说实话之前部门确实乱，发版靠嘴说，出事互相踢，推这套的时候大家都觉得我们终于靠近大场了 挺正规的。那哥们周会上还主动表态，说流程规范是好事。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>后来第一刀来得挺快。\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>有天快下班，隔壁组一同事小王跑来找他，说自己有个紧急修复要发，审批人请假了，让他帮忙点一下确认。就改了一行配置，测试都过了，客户催得急，回头请喝奶茶。\u003C\u002Fp>\n\u003Cp>他犹豫了一下。按新流程他不是人家组的审批人，不该碰。但想着就点一下的事，以前没流程的时候这种忙天天帮，同事一场，不至于。就帮人点了，下班了。\u003C\u002Fp>\n\u003Cp>晚上九点电话响了，线上炸了。小王那行配置把数据库连接池参数写错了，服务挂了半小时。\u003C\u002Fp>\n\u003Cp>周一复盘会才是真正让他开眼的环节。\u003C\u002Fp>\n\u003Cp>对方负责人复盘原因就是：事故根因——跨组违规审批，发布流程未严格执行。 然后一二三条分析下来——审批人不对，违规；操作记录是他的账号，赖不掉；代码变更经过了测试，问题出在发布环节没走正规流程。\u003C\u002Fp>\n\u003Cp>他急了，说配置是小王改的吧？参数写错了才是根因吧？对方不慌不忙地说，测试环境没复现，走正规流程的话发布前有生产校验，问题能拦住。正因为跨组审批跳过了这步才流到生产。\u003C\u002Fp>\n\u003Cp>代码没问题，测试没问题，全是不走流程的锅。小王改错参数？不重要。\u003C\u002Fp>\n\u003Cp>小王全程低着头，会后微信发了句\"哥对不住\"，然后就没然后了。\u003C\u002Fp>\n\u003Cp>A级事故，责任人他，通报批评罚款。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>第二刀砍得更狠，因为砍的是他自己主动做的东西。\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>这哥们以前有段时间看各组都在写重复的工具类、异常处理，手痒，业余时间封装了个公共SDK。接入简单，引个依赖就行，自己项目跑了几个月没问题，后来三四个组都在用。领导还在周会上夸过他。\u003C\u002Fp>\n\u003Cp>一年多零故障，然后某天下午好几个项目突然同时报空指针。查下来是某个项目组调SDK方法传了个null进来，那个方法没做null校验，直接炸了。\u003C\u002Fp>\n\u003Cp>他跟我说的时候摊了摊手：是他们传了null，不是我SDK自己崩的。\u003C\u002Fp>\n\u003Cp>但复盘会上人家写上原因：公共组件健壮性不足，缺乏入参校验机制。 防御性编程嘛，行业共识，公共组件就得对所有入参做校验。你文档写了不能传null，文档约束不等于技术约束。\u003C\u002Fp>\n\u003Cp>结论：使用方有责任，但Owner负主要责任。\u003C\u002Fp>\n\u003Cp>新领导也发话了：你写的东西别人用出了问题，就是设计不够健壮，调用方是有问题，但组件要做最后兜底。这话搁哪个技术分享会都挑不出毛病，但写代码的人听了就是憋屈。\u003C\u002Fp>\n\u003Cp>又是一个500块 主责，次责研发，复盘报告他写。\u003C\u002Fp>\n\u003Cp>500块不多，但那之后他整个人肉眼可见地变了。\u003C\u002Fp>\n\u003Cp>有人找他帮忙发版，他笑笑说按流程走。有人想用他的工具，他说你自己看着办，出问题别找我。有人提议做公共组件提效，他直接摆手，别搞了各写各的。\u003C\u002Fp>\n\u003Cp>他还把SDK文档改了，最上面加了一行红字：本组件仅供参考，使用者自行承担风险。\u003C\u002Fp>\n\u003Cp>有次吃饭我问他，你怎么现在什么都不愿意多干了？\u003C\u002Fp>\n\u003Cp>他放下筷子认真跟我说：你算这笔账——做十件好事没人记得，出一件事全是你的。按流程走每一步留痕，不该碰的别碰，到点下班绩效也不差。多一事不如少一事。\u003C\u002Fp>\n\u003Cp>我说那你以前写那SDK图啥呢？\u003C\u002Fp>\n\u003Cp>他扒了口饭：以前觉得做技术总得有点追求吧。\u003C\u002Fp>\n\u003Cp>不过他有些话说得确实有道理。\u003C\u002Fp>\n\u003Cp>他说你看这套制度推下来，事故率确实降了，发版也规范了，管理变得可预测可追溯，从管理角度肯定是成功的。但你看现在谁还愿意写公共组件？谁还做技术分享？谁还跨组帮忙？每个人守着自己一亩三分地，不出错就是最高目标。\u003C\u002Fp>\n\u003Cp>制度管得住人不犯错，但管不住人不做事。你可以罚一个写错代码的人，但你罚不了一个什么都不做的人。\u003C\u002Fp>\n\u003Cp>大厂那套东西能在阿里跑通，是因为人家有配套的激励体系、资源冗余、人才梯队。咱们十几人的小团队照搬，管理成本说不定比它能避免的损失还高。\u003C\u002Fp>\n\u003Cp>他说得也对，但新制度带来的有好也有坏，也不能一概而论。\u003C\u002Fp>\n\u003Cp>前阵子有个新人跑来问他：哥，我想做个公共工具库，你觉得怎么样？\u003C\u002Fp>\n\u003Cp>我正好在旁边。他看着那新人愣了几秒，说：你先想想，出了问题谁来背锅？新人没说话。\u003C\u002Fp>\n\u003Cp>现在每天按时交活，不越界不帮忙不创新，到点下班，周末电话都不接。\u003C\u002Fp>\n\u003Cp>你觉得这算成熟了还是被磨平了？\u003C\u002Fp>","我们组有个同事，以前是那种闲不住的人。现在也闲不住 只不过是不敢动了。 去年部门空降了一位新总监，阿里P8，第一次全员会PPT上就八个大字：拥抱变化，永不言弃。 新领导上来搞流程改革，每个模块指定Owner，出事追责到人，A级事故罚款500起步，B级300 依次类推，发版上线改配置全走审批。说实话之前部门确实乱，发版靠嘴说，出事互相踢，推这套的时候大家都觉得我们终于靠近大场了 挺正规的。那哥们周会上还主动表态，说流程规范是好事。 后来第一刀来得挺快。 有天快下班，隔壁组一同事小王跑来找他，说自己有个紧急修复要发，审批人请假了，让他帮忙点一下确认。就改了一行配置，测试都过了，客户催得急，回头请喝奶茶。 他犹豫了一下。按新流程他不是人家组的审批人，不该碰。但想着就点一下的事，以前没流程的时候这种忙天天帮，同事一场，不至于。就帮人点了，下班了。 晚上九点电话响了，线上炸了。小王那行配置把数据库连接池参数写错了，服务挂了半小时。 周一复盘会才是真正让他开眼的环节。 对方负责人复盘原因就是：事故根因——跨组违规审批，发布流程未严格执行。 然后一二三条分析下来——审批人不对，违规；操作记录是他的账号，赖不掉；代码变更经过了测试，问题出在发布环节没走正规流程。 他急了，说配置是小王改的吧？参数写错了才是根因吧？对方不慌不忙地说，测试环境没复现，走正规流程的话发布前有生产校验，问题能拦住。正因为跨组审批跳过了这步才流到生产。 代码没问题，测试没问题，全是不走流程的锅。小王改错参数？不重要。 小王全程低着头，会后微信发了句\"哥对不住\"，然后就没然后了。 A级事故，责任人他，通报批评罚款。 第二刀砍得更狠，因为砍的是他自己主动做的东西。 这哥们以前有段时间看各组都在写重复的工具类、异常处理，手痒，业余时间封装了个公共SDK。接入简单，引个依赖就行，自己项目跑了几个月没问题，后来三四个组都在用。领导还在周会上夸过他。 一年多零故障，然后某天下午好几个项目突然同时报空指针。查下来是某个项目组调SDK方法传了个null进来，那个方法没做null校验，直接炸了。 他跟我说的时候摊了摊手：是他们传了null，不是我SDK自己崩的。 但复盘会上人家写上原因：公共组件健壮性不足，缺乏入参校验机制。 防御性编程嘛，行业共识，公共组件就得对所有入参做校验。你文档写了不能传null，文档约束不等于技术约束。 结论：使用方有责任，但Owner负主要责任。 新领导也发话了：你写的东西别人用出了问题，就是设计不够健壮，调用方是有问题，但组件要做最后兜底。这话搁哪个技术分享会都挑不出毛病，但写代码的人听了就是憋屈。 又是一个500块 主责，次责研发，复盘报告他写。 500块不多，但那之后他整个人肉眼可见地变了。 有人找他帮忙发版，他笑笑说按流程走。有人想用他的工具，他说你自己看着办，出问题别找我。有人提议做公共组件提效，他直接摆手，别搞了各写各的。 他还把SDK文档改了，最上面加了一行红字：本组件仅供参考，使用者自行承担风险。 有次吃饭我问他，你怎么现在什么都不愿意多干了？ 他放下筷子认真跟我说：你算这笔账——做十件好事没人记得，出一件事全是你的。按流程走每一步留痕，不该碰的别碰，到点下班绩效也不差。多一事不如少一事。 我说那你以前写那SDK图啥呢？ 他扒了口饭：以前觉得做技术总得有点追求吧。 不过他有些话说得确实有道理。 他说你看这套制度推下来，事故率确实降了，发版也规范了，管理变得可预测可追溯，从管理角度肯定是成功的。但你看现在谁还愿意写公共组件？谁还做技术分享？谁还跨组帮忙？每个人守着自己一亩三分地，不出错就是最高目标。 制度管得住人不犯错，但管不住人不做事。你可以罚一个写错代码的人，但你罚不了一个什么都不做的人。 大厂那套东西能在阿里跑通，是因为人家有配套的激励体系、资源冗余、人才梯队。咱们十几人的小团队照搬，管理成本说不定比它能避免的损失还高。 他说得也对，但新制度带来的有好也有坏，也不能一概而论。 前阵子有个新人跑来问他：哥，我想做个公共工具库，你觉得怎么样？ 我正好在旁边。他看着那新人愣了几秒，说：你先想想，出了问题谁来背锅？新人没说话。 现在每天按时交活，不越界不帮忙不创新，到点下班，周末电话都不接。 你觉得这算成熟了还是被磨平了？",1741,{"id":6,"kind":7,"title":11,"summary":13,"image":14,"href":16,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":40},"2026 · 软件开发","#2563eb","16 \u002F 10",[19],{"targetType":8,"targetId":9,"likedByMe":42,"likeCount":43,"commentCount":43,"contentLikeCount":43,"contentCommentCount":43,"sourceLikeCount":43,"sourceCommentCount":43},false,0,[45,51,57,63,70,77,84,90],{"id":46,"kind":7,"title":47,"summary":48,"image":15,"href":49,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":50},"NEWS_ARTICLE:832","用 runtime-async 写一个支持 async\u002Fawait 的轻量脚本引擎","起因：一个好奇 事情的开头很简单。 给 .NET 做过动态脚本的人大概都碰到过同一堵墙：表达式树也好、Reflection.Emit 也好，都很难支持 async\u002Fawait。原因不在语法，而在 await 的实现方式——C# 编译器要为每个 async 方法生成一个状态机结构体，把方法体切成若干片","\u002Fnews\u002F832",[19],{"id":52,"kind":7,"title":53,"summary":54,"image":15,"href":55,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":56},"NEWS_ARTICLE:862","go中make声明切片, 修改切片,append给切片扩容,合并切片,复制切片","make 声明切片 make([]类型, 长度， 容量) kage main import (&quot;fmt&quot;) \u002F\u002F 入口函数 func main() { \u002F\u002F make 声明切片，长度是4， 容量是10 var sliceArr1 = make([]int, 4, 10) fmt.","\u002Fnews\u002F862",[19],{"id":58,"kind":7,"title":59,"summary":60,"image":15,"href":61,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":62},"NEWS_ARTICLE:866","Spring Boot事件监听，这东西到底解决啥问题？","一、先聊个场景，你就明白这玩意儿干啥的了 点过外卖吧？那咱们就用这个场景来说事。 你掏出手机下了单，付了钱。接下来会发生啥？ 厨房那头开始备菜炒菜（这件事耽误不得，客户饿着呢） 手机收到一条短信：&quot;您的订单已收到，预计30分钟送达&quot; 你的会员账户里多了一堆积分 店长那个收银小喇叭","\u002Fnews\u002F866",[19],{"id":64,"kind":7,"title":65,"summary":66,"image":67,"href":68,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":69},"NEWS_ARTICLE:881","RSA 密码传输加密通用接入方案","@目录前言一、介绍二、RSA 在本方案中的角色三、密文协议格式四、密钥生成与 Apollo 配置4.1 编译工具类4.2 执行生成密钥4.3 执行输出示例4.4 Apollo 配置示例五、后端接入方式AOP 注解示例六、后端解密流程七、前端接入方式7.1 获取公钥和 nonce7.2 使用 RSA-","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F1867541\u002F202608\u002F1867541-20260831165110853-162420906.png","\u002Fnews\u002F881",[19],{"id":71,"kind":7,"title":72,"summary":73,"image":74,"href":75,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":76},"NEWS_ARTICLE:888","[开源] LogCrate：免解压、支持筛选和 AI 分析的 PC 端桌面日志工具","日常排查客户软件运行问题时，经常需要反复下载日志、解压缩，再从一堆文件里慢慢翻找，过程比较麻烦；而且很多日志工具也不支持针对具体字段进行筛选。 对比了一些市面上的日志分析工具后，发现能够同时兼容归档阅读、目录监控、到达通知、结构化筛选和 AI 分析的工具并不多，于是就自己动手做了一款。 PS：自己做","https:\u002F\u002Fiili.io\u002FCy4ztaa.png","\u002Fnews\u002F888",[19],{"id":78,"kind":7,"title":79,"summary":80,"image":81,"href":82,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":83},"NEWS_ARTICLE:900","java 多线程开发系列之七：玩转多线程（线程的协作）","线程的协作多种多样，这次主要说说wait和notify两种Object的方法。这也是java早期原生的重要的协作机制之一。先说下这两个英文单词：wait [weɪt] v.等待;等候;(尤指长期地)希望，盼望，期待notify [ˈnəʊtɪfaɪ] vt.通知;(正式)通报;也就是一个等待，一个通","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F704073\u002F202608\u002F704073-20260831103138251-1707185366.png","\u002Fnews\u002F900",[19],{"id":85,"kind":7,"title":86,"summary":87,"image":15,"href":88,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":89},"NEWS_ARTICLE:902","DeepSeek Harness 插件","准备环境 dsh 从源码运行，见 dsh 说明。或见之前分享的 DeepSeek Harness 开始。 开发插件 依照 dsh 文档，动手做一遍： 第一个插件: https:\u002F\u002Fdeepseek-harness.github.io\u002Fdeepseek-harness\u002Fdevelop\u002Fbasic\u002F 第","\u002Fnews\u002F902",[19],{"id":91,"kind":7,"title":92,"summary":93,"image":94,"href":95,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":96},"NEWS_ARTICLE:917","[python] pywinauto使用指北","当业务系统没有API、命令行接口或可直接集成的数据通道时，桌面自动化往往是打通业务流程的最后一公里。pywinauto库通过Win32 API与Microsoft UI Automation（UIA）访问Windows窗口及控件，使Python脚本能够驱动桌面应用。本文聚焦于pywinauto的基础","https:\u002F\u002Fgitlab.com\u002Fluohenyueji\u002Farticle_picture_warehouse\u002F-\u002Fraw\u002Fmain\u002FCSDN\u002F%5Bpython%5D%20pywinauto%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8C%97\u002Fimgs\u002F1.jpg","\u002Fnews\u002F917",[19]]