IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:system design

共 9 篇相关文章

IT 累计浏览 7,470

程序员和工程师有什么不一样?

这篇讲的是作者从初入职场时对“程序员”与“工程师”称谓的困惑出发,通过多年观察和反思,系统阐述了两者在工程实践层面的核心区别。 作者首先指出,工程师绝不写“黑箱程序”——那些难以调试、运行状态不可见的代码。他强调,成熟的系统需要清晰的层次划分和完善的运行信息暴露机制,这与单纯追求功能实现的程序员思维形成对比。 其次,作者强调工程师具备强烈的“接口意识”。他们不仅完成功能,更会设想代码的使用场景与扩展性,实现逻辑与具体操作的分离。文中列举了登录模块、数据加载等例子,说明接口分离如何提升系统的灵活性与可维护性。 此外,工程师注重功能点之间的逻辑联系。他们不止于堆砌功能,而是持续构建系统的逻辑框架,将复杂操作整合为有意义的动作(如“登录”),从而控制整体复杂度,避免系统沦为一堆割裂的操作手册。 文章从个人实践出发,具体剖析了工程师在代码可维护性、设计前瞻性和架构逻辑性上需要具备的素养,对理解软件开发中的工程思维很有启发。

IT 累计浏览 3,226

为什么我认为架构师需要坚持写代码?

这篇文章从近期技术圈关于“架构师应具备哪些能力”的讨论切入,剖析了架构师的两种类型:一种擅长任务分解、资源整合与项目交付,本质上是在既定框架内填充内容;另一种则具备“技术杠杆”能力,能借助代码与技术方案大幅提升效率或创造新可能,例如通过算法改进用户体验。作者的核心观点是,后者才是能驱动技术变革的关键角色,而这样的架构师必须坚持写代码。 文章进一步指出,不写代码的架构师容易沦为“填格子的人”,难以深入理解技术细节,更无法运用技术力量放大业务价值。在评估架构师能力时,作者提到一种实用的面试方法:让候选人先完成小型代码编写测试,以此作为能力基线,再讨论架构设计。这能有效区分出真正有一线编码经验、能用技术解决问题的候选人,而非仅擅长沟通与流程管理的人。 整体来看,作者强调架构师的价值不仅在于设计蓝图,更在于通过亲手实践保持技术嗅觉,从而找到以技术杠杆撬动更大成果的机会。这对团队如何定义架构师角色、进行人才评估,提供了务实的视角。

IT 累计浏览 3,187

每个程序员都应该知道的一些访问时延值

这篇文章分享了一组程序员最好烂熟于心的参考值——从CPU各级缓存、主存、固态硬盘到跨地域网络请求的访问延迟。这组经典数据最早源自谷歌传奇工程师 Jeff Dean 的演示文稿,它用具体数字将抽象的“快”与“慢”量化成了直观的层次。 例如,从L1缓存访问只需几纳秒,而访问一次固态硬盘则需要几万纳秒,一次跨大西洋的网络往返可能要一百多万纳秒。这之间几个数量级的差异,直接决定了我们在设计算法、选择存储方案和搭建分布式系统时的性能天平该如何倾斜。文章作者不仅呈现了数据,还提供了社区整理的精炼版链接,并讲述了关于 Jeff Dean 的著名轶事,让这组数据多了几分传奇色彩。 在编程世界里,凭感觉优化往往事倍功半。而将这些延迟数字内化于心,能帮助你在架构层面做出更明智的判断,比如何时该引入缓存、数据该如何分区、或是如何设计一个能容忍网络延迟的服务。有了这些量化概念,做技术决策时才能心中有“数”。

IT 累计浏览 4,171

做一个不喊爸不喊妈的程序员

作者从亲身经历的项目攻坚阶段出发,聊了聊程序员解决问题能力的几个层级。在无休止的加班、不合理的版本发布和各种“扯淡想法”的挤压下,他观察到面对BUG时,同事们的行为可以粗略分为四类:从最基础的“出现异常立刻汇报”,到“描述清晰文字”,再到“分析日志并推测”,直至最高阶的“尝试自己修复并验证”。他认为前两种本质上是在将问题转移给上级或同事,看似省力或“有益于项目”,实则会阻碍个人追踪能力与自信心的成长,并可能在团队中形成不良的依赖效应。 文章的核心观点并非强调技术细节,而是指向一种职业态度:倡导程序员在遇到问题时,首先应尽力独立分析与解决,而非习惯性“向上求助”。在当今强调工程效能与个人Owner意识的背景下,这种“不喊爸不喊妈”的独立解决问题的精神,或许是比单纯的技术积累更基础、也更关键的职业素养。

IT 累计浏览 3,363

系统设计黄金法则 简单之美

复杂系统设计中一个常见的陷阱是“过度工程”——为了应对想象中的复杂性,引入层层抽象和冗余设计,最终系统反而变得脆弱且难以维护。这篇讲的是,作者从多年架构实践与观察中提炼出的一条核心原则:**简单性**,才是系统设计的“黄金法则”。 文章并非泛泛而谈,而是具体阐述了“简单”在不同技术层面的体现。比如在架构决策上,它推崇先采用最直接的技术方案,用清晰的业务逻辑替代复杂的技术组件;在代码实现上,它强调可读性远胜于炫技式的“聪明”写法。作者指出,遵循简单原则的系统,其优势不仅在于初期的开发效率,更在于长期的可维护性、可理解性以及团队协作的流畅度。 这篇分享像一位资深架构师的经验之谈,提醒我们:在技术选型与架构演进的每一步,都不妨先问一句——是否有更简单、更直接的方式来达成目标?拥抱简单,往往能让系统在复杂世界中走得更稳、更远。

IT 累计浏览 4,545

时延和带宽的关系

这篇讲的是网络基础概念中的一个常见误区。作者坦诚,自己多年间曾一直认为“时延”和“带宽”是反比关系——时延低,带宽就高。但深入理解后发现,这完全是两个独立维度的指标。 文章的核心在于厘清这一对比:时延是数据包从源头到目的地所需的时间(单位通常是毫秒),它主要受限于物理距离、中间设备的处理速度等“传输路径”特性。而带宽是网络链路在单位时间内能传输的最大数据量(单位通常是Mbps/Gbps),它取决于线路的物理介质和协议设计,是“管道”的粗细。 关键差异在于,两者并无直接的制约关系。一条高带宽的跨洋光纤,因为距离遥远,其时延可能远高于一根低带宽的局域网网线。优化目标也不同:对实时交互(如视频会议、游戏)更关键的是低时延;而对大文件下载、流媒体高清视频,则更需要高带宽来提升吞吐量。 作者从个人认知纠偏出发,把这个容易混淆的知识点讲透了。这提醒我们,在做网络性能优化或方案选型时,必须分清瓶颈究竟是在“管道宽度”(带宽)还是“路径耗时”(时延),才能对症下药。

IT 累计浏览 2,325

游戏数值策划

这篇源于微博争论的长文,将焦点对准了“游戏数值策划”这一具体而微妙的领域。作者并非进行泛泛而谈,而是从自身参与的一场在线讨论切入,指出许多关于游戏设计的争执,其根源往往在于对“数值策划”这一角色的认知错位。文章试图厘清:数值策划的核心工作究竟是调整数值、保证体验,还是构建底层的系统规则与经济模型?作者通过列举行业内的具体做法与数据,剖析了这份工作常被忽视的复杂性——它需要同时理解玩家心理、商业目标与数学模型,在看似冰冷的数字背后平衡趣味与盈利。对于游戏开发者和爱好者而言,这篇内容提供了一个难得的视角,去审视那些驱动游戏体验的隐性骨架,以及为何“平衡”二字背后是如此巨大的工程。

IT 累计浏览 6,091

毕业后如何进大公司工作?

这篇讲的是作者面对不少毕业生或在校生关于职业发展的咨询后,结合自身经历给出的一些建议。文章没有宏大的方法论,而是从一个过来人的个人视角,坦诚地分享了自己对职业问题的思考,并推荐了几位资深人士的分享作为补充。 作者在文中坦言,自己的经验可能缺乏广泛的代表性,但正是这份真诚,让建议显得格外实在。他特别为那些即将踏入职场、或许正感到迷茫的同学而写,从自己的角度提供了一些可能有用的参考。对于那些已经在职场打拼多年的人,这篇文章可能意义有限;但对于正站在人生十字路口的学子们,其中一些切身的体会和思路,或许能帮助你们在规划第一份工作时,多一份冷静的思考。

IT 累计浏览 3,046

“并发用户数”、“系统用户数”和“同时在线用户数”的计算公式

这篇讲的是如何区分三个常被搞混的性能指标:并发用户数、系统用户数和同时在线用户数。作者从实际场景出发,用一个具体的例子拆解了它们的不同定义与计算逻辑。 核心差异在于视角与用途。系统用户数是系统潜在的总用户量,通常用于容量规划;同时在线用户数反映某一时刻登录系统的实际人数,关注会话保持;而并发用户数则指同一时刻向服务器发起请求的用户数,是评估系统负载能力的关键。文章特别强调,很多人误将“在线”等同于“并发”,但实际场景中,并发用户数通常远小于同时在线用户数——因为大多数在线用户在某一时刻可能只是空闲浏览或思考,并未持续产生请求。 区分清楚这些概念,对于做压测、设定性能目标和规划系统资源至关重要。文章通过实例把抽象定义变得直观,帮助读者在后续工作中更准确地量化需求与评估系统表现。