软件系统设计指南

     

系统设计中的限制性与灵活性

181 2 5K

集合论中的罗素悖论以及软件系统设计中过度宽容规则的问题。 罗素悖论揭示了集合论中的自指矛盾,表明过度宽容的规则可能导致难以处理的边缘情况。 软件系统中的过度宽容规则也可能引发意想不到的问题,挑战系统的.

系统设计面试概念术语要点

135 14K

以下是系统设计学习中的要点:CAP 定理基本要素:一致性、可用性、分区容错性。分区容错性:由于通信网络固有的不可靠性,因此必须具备。一致性和可用性之间的选择:一致性:所有节点同时看到相同的数据。需要在.

设计软件最重要的目标是可理解性?

79 1 2K

当您设计一款软件时,设计时最重要的一点就是可理解性。安全性、性能和正确性都很重要,但它们次优于可理解性。被误解的软件会产生Bug缺陷如果软件的实施者和维护者对软件存在误解,那么软件最终就会出现缺陷。主.

系统分析和设计指南

132 13K

系统分析是系统设计中“做什么”之前的“如何” 。它提供了构建一个能够有效且高效地解决预期问题的系统的基本路线图。“想象一下你正在建造一座梦想之家。如果没有详细的蓝图,你不会开始敲钉子,对吧?“软件开发.

优化 REST API 设计:最佳实践

54 4K

在深入研究设计 RESTful API 的最佳实践之前,我们先简要探讨一下 API 协议的一些基本方面。REST(代表性状态转移):REST 是一种用于设计网络应用程序的架构风格,通常用于构建 API.

什么是遗传算法

60 6K

遗传算法 (GA) 是更大类别的进化算法 (EA) 的子集,是计算机科学和运筹学中使用的一种元启发式算法,其灵感来自于自然选择的过程。遗传算法经常采用受生物学启发的算子,包括变异、交叉和选择,以产生优.

案例研究:将结帐系统拆分为太多服务

81

该项目应该用现代的、可扩展的、松散耦合的实现来取代现有的、单一的、难以扩展的结账系统。 为了实现这一目标,选择微服务架构作为软件系统的目标架构。微服务应该由一些核心服务来编排。此外,还有一个 Java.

软件架构中10个反模式

188 1 11K

发现常见的架构反模式,学习如何避免它们并克服设计陷阱!获得宝贵的见解、实用的建议和实际示例,以构建更好的软件架构并改进现有架构。反模式1:货物崇拜在不了解流程、技术或方法为何以及如何运作的情况下采用它.

什么是系统设计 – 学习系统设计

161 3K

系统设计被定义为为系统的不同组件、接口和模块创建架构并提供有助于在系统中实现这些元素的相应数据的过程。系统设计是任何分布式系统设计背后的核心概念。系统设计涉及识别数据源,它是描述、创建和规划框架以满足.

编程120句格言

115 6K

1.一个人的常量就是另一个人的变量。2.函数延迟绑定;数据结构诱导绑定。寓意:在编程过程的后期对数据进行结构化。3.句法糖会导致分号癌。4.每个程序都是其他程序的一部分,很少有合适的程序。5.如果一个.

什么是系统工程师:技能、角色和职责

110 3K

每一项复杂技术的背后,系统工程师都扮演着关键的角色。系统工程师的任务是设计、实施和维护复杂的 IT 基础设施,这是我们当今看到的技术的基础。这些系统的范围从计算机网络、软件应用程序到大规模硬件配置。这.

构建弹性架构的 5 个技巧

88 2K

如何构建弹性架构和系统?提供五个建议:1、后备措施您需要考虑为您使用的任何外部服务提供后备方案。例如,这可以是支付网关或简单的 URL 缩短器。为什么?如果您依赖这些外部服务并且它们变得不可用,这可能.

亚马逊DynamoDB大规模分布式事务原理

132 4K
DynamoDB 的一个杀手级功能是任何规模的可预测性。请阅读Marc Brooker 的文章以充分理解此功能。这篇论文出现在 7 月的 USENIX ATC 2023 上。与这种可预测性原则相一致,.

Metadata:分布式系统设计要点和建议

119 6K

这些建议提示都是分布式系统研究人员和从业人员几十年来的集体成果。提示分为三类:功能、性能和容错:功能: 应用抽象 减少协调 拥抱单调性 表现: 偏爱偏序而不是全序 杠杆时间 使用间接和代理 模拟估算 .

有关软件架构的完整书籍列表

350 7K

这个github项目列举了一个全面的列表,您应该挑选一些有关您感兴趣的主题的书籍。决定读什么是你的事。这些书籍仅根据书面评论的数量进行排序。然而,还有其他重要因素值得考虑。下面从第二列开始分别是:国际.

本周Github有趣项目Voyager等

183 2K

本周Github有趣的项目、工具和库包:1、VoyagerVoyager是一个用于在内存向量集合上执行快速近似近邻搜索的库。 Voyager 针对 Spotify 的快速生产使用进行了调整,可对内存中.

解决个人偏见的三个抽象层方法

219

重点以抽象层方式思考,能够清晰地解决问题并避免个人偏见。我们有三个抽象层:自然层、中间层和人类层。 自然层是为物理和化学定律设计的,包括塑料、横梁、轮胎、玻璃、灯泡、电线等。 人类层是为人类设计的,人.

牛X软件工程师应该知道的概念

498

如果你知道以下概念的含义,你就是一个伟大的工程师,:  幂等 幺半群 解耦  依赖注入  - 单元  函数式编程  异步编程 并行编程  线程 同步锁 最终一致性  精确一致性 exactly-onc.

为什么仅有计算机科学学位是不够的?

182 2K

目前向有抱负的软件工程师传授计算机科学知识的方法与业界对他们毕业后的期望之间存在着巨大差距。虽然应届毕业生可能擅长理解算法的复杂性,如在排序列表中进行二进制搜索的 O(log(n)),但许多人在从头开.

24 条系统设计面试问答题

106

以下 24 条系统设计原则可以帮助你通过面试:1.如果需要缩放单个组件,请查看水平缩放2.要处理流量峰值,请评估使用自动扩展进行动态资源分配的情况3.如果系统需要高性能的高可用性,可考虑使用负载平衡器.

形式化验证和 TLA+ 入门

150 1 3K

这篇文章的目的是让读者了解: 为什么存在形式化方法以及为什么这些方法在分布式系统领域特别重要。 TLA+ 简介,包括它如何表示数据和时间的概念模型。 从这里开始,您应该能够阅读 TLA+ 上的更多高级.

16 个系统设计面试的概念

284 4K

要在系统设计方面表现出色,最关键的方面之一是深入了解基本的系统设计概念,例如负载平衡、缓存、分区、复制、数据库和代理。1. 域名系统 (DNS)当您在 Web 浏览器中输入域名时,DNS 负责查找关联.

量化交易中比机器学习算法更重要的系统方法

147

一些量化通常通过寻找ML算法来进行交易,这些算法确实能让他们从市场中获利。但,这些只是整个结构的第1阶段(初学者)和第1级(技术)工作。真正的系统方法涉及多个层面: - 结构 - 功能 - 功能的形式.

系统设计面试完整指南

354 7K

这是系统设计面试的指南。如果您是初级或高级工程师,或者正在过渡到需要深入了解系统设计的角色,那么您来对地方了。这篇文章将解释系统设计面试的重要性并帮助您在面试中取得好成绩。系统设计面试通常涉及一个假设.

限量抢票系统Ticketmaster的设计问题

676 3K

最近,Ticketmaster因泰勒·斯威夫特巡回演唱会门票销售时发生重大系统故障而成为新闻。该网站在需求的重压下崩溃,导致粉丝不满,声誉受损。首先,我们将看看Ticketmaster的官方声明,试图.

Slack 向蜂窝架构的迁移

235

近年来,蜂窝架构在大型在线服务中越来越受欢迎,作为增加冗余和限制站点故障影响范围的一种方式。蜂窝架构:客户端连接到路由层。路由层使用 HTTP 重定向将客户端重定向到指定的蜂窝单元。为了实现这些目标,.

架构图如何实现更好的对话?

357 2K

今年早些时候,我和 DrDoctor 的几位同事参加了 C4 架构建模1 的培训。培训师讲得非常好,经过几节课的学习,我们掌握了这种方法。我们继续运用所学知识,在 3 个月的时间里,每周四与所有人员会.

新的后端渲染:服务器驱动UI

530 5K
通过API发送UI是一种彻底的新方法,将改变传统的UI开发。一项正在改变我们对用户界面 (UI) 的看法的技术是通过 API 发送 UI,也称为服务器驱动UI。这种方法提供了新水平的活力和灵活性,正在.

缩短Session会话有效期并不能增加安全性

273

登录到 Web 应用程序时,会话不会永远保持有效。通常,会话在登录后的固定时间后或用户闲置一段时间后过期。这些时间应该是多长?在某些Web应用程序中,会话会被设置为过期:过一段时间就会注销,需要再次进.

系统设计是什么? - maheshba

422 3K

在我研究生涯的早期,我曾有机会与世界上一些最优秀的系统研究人员一起研究一些非常有趣的系统设计。研究工作的乐趣之一在于研究人员(尤其是 SOSP/OSDI 社区的研究人员)在提出新颖而实用的设计方案时所.