首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏明明如月的技术专栏

    理解复杂系统的关键:耐心

    理解复杂系统的关键:耐心 复杂系统本质上是多面的、复杂的。它们通常并非被设计成一瞬间就能理解的。这对于自然发生的系统,如生态系统,和人类设计的系统,如高级软件或机械,都是适用的。 这些系统是由多个组件混合而成,每个组件都有其独特的属性和角色。要理解整个系统,理解每个组件及其相互作用是至关重要的。这个过程需要时间,因此,需要相当程度的耐心。 理解复杂系统的关键就是耐心。 其次,复杂性常常伴随着不可预测性。在复杂系统中,微小的调整或变化可能会由于组件的相互连接性而导致无法预见的后果。这种特性,通常被称为"涌现行为"(系统复杂性超过其各部分的总和),需要耐心和观察力。 草率的结论或行动很容易导致对系统真实行为的误解或误读。 耐心的路线图 那么,如何培养这个关键的技能呢?培养耐心需要改变思维方式,并有意识地接受学习的旅程。 接受复杂性:第一步是接受系统的固有复杂性。 花时间反思你所学到的东西,可以提供新的洞见,并加深对系统的理解。 总的来说,耐心在理解复杂系统的过程中,不仅是一种美德,更是一种基本的技能。它需要有意识的培养和实践,但会带来深度理解和掌握的丰富回报。

    30720编辑于 2023-08-02
  • 来自专栏玉树芝兰

    如何高效入门复杂系统仿真?

    推荐你一门好课,帮你在研究方法武器库中,添上复杂系统仿真这一项。 ? 1 方法 提到研究方法,根据你所在学科的不同,一定能想到不同的名词。 学理工科的,可能会想到实验法。 这就需要复杂系统仿真方法出场了。 2 仿真 什么叫做仿真呢? 就是用一个模型,来模拟真实世界的情况,给出一个近似结果。 仿真方法不稀奇。 但是问题在于,对于复杂系统的仿真,和它是有区别的。 前面提到了,复杂系统的特性,是变量多,而且具有强非线性关联。 因此,这种仿真,对工具是有要求的。 不过,Swarm 确实不适合普通人来入门复杂系统仿真,使用起来也不是很方便。正如我在《学 Python ,能提升你的竞争力吗?》一文中跟你提过的。 6 小结 本文为你介绍了以下知识点: 研究问题按照复杂度的分类方式; 复杂系统研究的方法,尤其是仿真方法的必要性和应用场景; 复杂系统仿真的工具 Netlogo 及其特点; 入门 Netlogo

    2.1K10发布于 2020-02-18
  • 来自专栏ThoughtWorks

    如何交接复杂的遗留系统

    2020年10月,Thoughtworks的C团队从客户团队交接了一个有近20年历史的支付网关系统。这个支付网关主要向英语系地区的企业提供信用卡支付,储蓄卡支付等支付相关的功能,每个月的交易额过亿。 业务复杂度高 业务上,这个支付网关光是在卡支付的场景下就同时支持8种技术,还有信用卡相关的安全功能,数不清的报表和各种增值服务。 鉴于项目的复杂度,在有限的交接期内达到这个目标基本是不可能的。但是如果将时间轴拉长,分阶段来实施,就比较容易做出一个切实可行的计划;同时,也能最大化交接期的价值,让团队从第一天起就朝着一个方向努力。 利用C4模型梳理系统架构 通常处理的问题都是业务问题,如果不能把一个个服务放在业务流程中去理解就没有意义。 在正式接手系统之前,团队感受到了比较大的压力。这些压力一方面是因为大部分项目成员缺少 On Call 的实战经验,另外一方面因为在交接的第一阶段里,我们缺少对业务实现细节和系统的深入了解。

    97510编辑于 2022-02-16
  • 来自专栏Web行业观察

    【转载】人脑与复杂变量系统

    欧几里得的几何学,也几乎把城里乡下能用到的数学都系统地概括了。 而今天,我们发现自己对宇宙和世界是那么的无知:无论在宏观上还是微观上,无论从数学上还是从物理意义上。 四、 人类追捧“大道至简”几千年,因为人脑压根没有分析复杂变量系统的能力。 围棋中传颂百年的各种美学,正是人类简化思维文化的精华,然而它们最终被Alpha Go的概率论砸得稀烂。 六、 医学大概是更落后的一门“科学”了,而我们大多数的疾病,其原因都是复杂的。绝大多数人无法区分吃药和自愈之间的关系,而现代实用医学只是大样本的统计学而已。 上帝究竟为什么设计了一个如此复杂、命中注定让我们越来越无法掌握无法理解的系统? 看看世界上最聪明的头脑们在“哥本哈根诠释”上的论战,我也越来越相信我们都只是生活在低维世界的微粒。 既然我们没法了解这个复杂系统,那么就去做你爱的事情吧:爱你爱的人,做你爱的工作,吃你爱的食物,买你爱的东西,投资你爱的公司(股票)... 组成我们身体的物质和能量,最终都会分解回归宇宙。

    59920发布于 2020-04-01
  • 10分钟了解Docker,告别复杂配置

    一、 Docker介绍 Docker是一种开源软件平台,用于在不同的操作系统(如Windows、Linux等)之间隔离应用程序,以便更有效和可靠地管理这些应用程序的部署和运行。 Docker平台由三个基本概念组成: 镜像(Image):镜像是 Docker 包含应用所需的一切的文件系统和配置的静态表示。镜像是一个只读的模板,可以用来创建 Docker 容器。 可移植性:由于 Docker 平台在各种操作系统上都能运行,因此应用程序可以更轻松地在不同的环境中迁移。

    98011编辑于 2024-11-16
  • 来自专栏bisal的个人杂货铺

    我们该如何处理复杂系统

    技术社群的这篇文章《我在Google当SRE时学到的:如何处理复杂系统》是谷歌工程师Teiva Harsanyi写的有关"复杂系统"的介绍,其中谈到的几个观点,包括蕴含的逻辑,值得我们借鉴。

    22610编辑于 2025-09-02
  • 来自专栏知一杂谈

    软件架构与系统复杂

    她在《复杂》一书中给出了复杂系统加以定义:『复杂系统是由大量组分组成的网络,不存在中央控制,通过简单运作规则产生出复杂的集体行为和复杂的信息处理,并通过学习和进化产生适应性。』 上述复杂系统中的组分对应软件系统中的组成部分,基于不同粒度可以是对象、函数、类、包、模块、组件和服务等。 每一部分都应该是相对单一的职责,细粒度部分之间耦合提供更粗粒度功能,不同组分之间相互协作来提供系统功能,继而组合成我们复杂的软件系统。 软件系统复杂性来自于两个方面,一方面是需求侧复杂,导致大多数系统的功能都难以理解;另一方面是难以把控需求的变化,虽然我们遵循一些设计原则可以对未来进行一些预判,但还是存在不可预测的风险。 复杂度并没有一个统一明确的度量方式,我们可以站在一个角度上对具体的某类或粒度提供一个可供参考的度量方法。不论我们如何度量,我们在开发软件系统中的一个重要目标就是控制和降低系统复杂度。

    1.1K10编辑于 2021-12-07
  • 来自专栏肉眼品世界

    系统设计之降低复杂

    2、软件系统的熵增 在软件开发、维护过程中。软件的生命力总是从最初的理想状态,逐步趋向于复杂、混乱和无序状态发展,直到软件不可维护而被迫下线或重构。 二、系统复杂性的表现 1、表象 代码混乱、新人不易上手 代码高度冗余,复用性低,开发效率低 扩展和修改困难,牵一发动全身 业务数据错乱 程序性能低下 系统难以移置 BUG率居高不下 其它…… 2、深层原因 唯一确定的方法是读取系统中的每一行代码,这对于任何大小的系统都是不可能的。甚至这可能还不够,因为更改可能依赖于一个从未记录的细微设计决策。 三、复杂性的原因 复杂性是由两件事引起的:依赖性和模糊性。 3、依赖性和模糊性的积累 复杂性不是由单个灾难性错误引起的;它堆积成许多小块。单个依赖项或模糊性本身不太可能显着影响软件系统的可维护性。 推荐的方式小步快跑的方式,在日常开发中留出5%-10%的时间来做战略设计。 2、模块的设计 开发一个新模块,如果有不可避免的复杂性。

    1K40发布于 2021-01-06
  • 来自专栏IT知识进阶学习

    So easy 10分钟搞懂时间复杂度和空间复杂度!

    原因就在于算法的复杂度,**算法2的复杂度为O(n²),虽然使用了提升了100倍运算速率的CPU去执行它,但是相对于运行让它运行复杂度的O(n)的算法,它提升的速率实际上仅为10倍。 5.1、时间复杂度   **在数据结构中,使用时间复杂度来衡量程序运行时间的多少**。 经过前辈们的经验,这个也是有相应的推导公式的,**在推导的时候我们应该采用无限大的思想来简化大O表达式**,具体如下: 用常数1代替运行时间中的所有加法的常数,如:某个算法的执行函数为f(n) = 10 ,则替换成大O阶方法的话则为:O(1),无论这个常数为10,还是100,还是1000都使用1替换,因为执行函数和问题规模n的大小无关,它是执行时间恒定的,像时间复杂度为O(1)的又被称作常数阶。 一种是计算所有情况的平均值,这种时间复杂度的计算方法称为平均时间复杂度。另一种情况则为计算最坏情况下的时间复杂度,这种也称为最坏时间复杂度,**一般没有特殊说明的情况下,指的都是最坏时间复杂度。

    47720编辑于 2022-09-13
  • 来自专栏知一杂谈

    软件系统复杂性治理方法

    这篇文章内容涵盖了软件开发的道与术,希望能对你所有帮助,欢迎评论交流~ 什么是软件复杂性 软件系统复杂性指的是系统内部组件、模块、包、类、方法之间的交互关系以及整体设计的复杂程度。 系统复杂度的高低直接影响着软件的可理解性、可维护性和可扩展性。高复杂度的系统通常意味着更难以理解和修改,也更容易引入错误。此外,复杂度过高还会增加软件开发和维护的成本。 所以说理解和管理软件系统复杂度至关重要。通过采用适当的设计原则、模式和工程实践,以及持续的重构和优化,可以有效地控制和降低软件系统复杂度,从而提高系统的可维护性、可理解性和可靠性。 这些变化可能需要对现有系统进行修改或添加新功能,从而增加了软件系统复杂性。 技术选型 选择不合适的技术栈或架构模式可能会导致系统的过度复杂化。 如何度量软件复杂性 之前写过一篇简单介绍过 软件架构与系统复杂性,下面主要介绍软件系统复杂度度量方式。

    1.2K10编辑于 2024-02-15
  • 来自专栏Elixir

    Go 编程 | 连载 10 - 复杂数据类型 Array

    数组是具有唯一相同类型且固定长度的一个序列,序列中的元素可以是任意类型如字符串、整型或者是自定义类型,但是类型一定要一致。

    38310编辑于 2022-09-26
  • 来自专栏NewBeeNLP

    NLP流水线系统发布,10分钟搭建检索、问答等复杂系统

    然而众多企业自建这些复杂系统所耗费的人力成本和时间成本巨大,成为产业智能化升级的 “拦路虎” 。 为了解决上述难题,PaddleNLP推出NLP流水线系统———PaddleNLP Pipelines,将各个NLP复杂系统的通用模块抽象封装为标准组件,支持开发者通过配置文件对标准组件进行组合,仅需几分钟即可定制化构建智能系统 图1:通过增删基础组件实现多个复杂系统的迁移 如上图,举例来说: 语义检索系统可以抽象为文档解析、语义向量抽取、向量存储、召回、排序5个基础组件; 在此基础上,只需串接1个答案定位模型组件即可构成阅读理解式问答系统 用户可通过对基础组件进行扩展来满足个性化需求,从而实现任意复杂系统的灵活定制开发。 接下来,我们来看Pipelines中内置的各类SOTA模型。 预置更多流水线系统 例如预置多模态信息抽取系统、智能语音指令系统等。

    78830编辑于 2022-11-17
  • 来自专栏架构之家

    大型复杂系统的架构设计思考

    1、 大型系统和简单系统设计有什么区别? 2、 大型系统设计不就是分布式设计吗? 3、 如何进行大型系统设计? 二、大型系统与简单系统设计的区别 从系统的简易程度可以将系统分为复杂系统或简单系统。 我们这里成复杂系统为大型系统,大型系统复杂系统,一般是指规模大、复杂度高的系统。而简单系统是指规模小,复杂度也不高的系统,一般是单体,也可能是分布式架构的简单系统。 简单的对比如下: 对比项/对比类型 大型系统 简单系统 系统类型 分布式系统 一般是单体系统 业务复杂复杂 简单 规模复杂复杂 简单 技术复杂复杂 简单 资源投入 多 少 跨部门系统 是 否 4.1 大型系统的设计步骤 大型复杂系统的设计不是一开始就进行架构设计,核心也不完全是分布式技术架构。而是要从业务开始,进行逐步设计的过程。 花名:明心 多年研发和管理经验,熟悉架构设计,设计模式,分布式(微服务)系统,中间件领域,最近在学习企业架构和DDD领域驱动设计。 2021-07-10

    1.2K20编辑于 2022-07-12
  • 来自专栏学习

    深度学习在复杂系统中的应用

    第一部分:复杂系统的特点 1.1 非线性关系 复杂系统中的变量之间存在非线性关系,这使得系统的整体行为往往难以用简单的线性模型描述。 time_step, 0])    return np.array(X), np.array(y) ​ X, y = create_dataset(scaled_values, time_step=10 这些特征的识别和模拟在复杂系统的建模中至关重要。 1.4 多尺度与异质性 在复杂系统的分析中,常常需要在不同时间和空间尺度上进行考量。 3.1 气候建模 气候建模是深度学习在复杂系统中的一个重要应用领域。 此外,利用图神经网络处理复杂系统中的多维数据,可能会带来新的突破,尤其是在处理涉及多个交互主体的系统时。 结论 深度学习在复杂系统中的应用潜力巨大,能够为理解和解决复杂问题提供新的工具与方法。

    48810编辑于 2024-11-21
  • 来自专栏深度学习与python

    现代 CI 系统复杂,方向跑偏了

    现代的 CI 系统复杂了 CI 平台的进步是以增加复杂性为代价的,我越来越觉得现代 CI 系统复杂了。 从根本上讲,CI 平台是一种远程代码执行服务,执行代码是为了构建、测试和发布软件。 虽然很粗糙,但我认为它就是一个 CI 系统。 如果你有仔细阅读,就会得出这样的结论:足够复杂的 CI 系统和足够复杂的构建系统在我看来是一样的。 不过,由于复杂的 CI 系统几乎总是附加在复杂的构建系统上,因此通过合并构建系统和 CI 系统可以缩小复杂性的表面积 (比如,你不需要操心构建 /CI 互操作性问题)。 我在这个领域工作了 10 年,见证了 Taskcluster 模式的潜力,看到了以前的、现在的和潜在的雇主都在为此不同程度地挣扎着。我知道这个想法对某些人来说是非常有价值的。 结     论 如果我有打响指的魔力,可以让离散的构建、CI(或许还有批处理系统,如数据管道)系统向前快速发展 10 年,那么我会: 让 Taskcluster 成为最好的远程执行服务平台。

    1.2K10编辑于 2023-04-01
  • 来自专栏运维开发王义杰

    技术与管理:简单系统复杂系统的交锋

    一、引言 我们生活在一个由各种系统构成的世界中,这些系统既有简单的,也有复杂的。那么这些系统是如何影响我们的职业选择和职业发展呢? 有观点认为,做技术的人面对的是简单系统,做管理的人面对的则是复杂系统。基于此,他们进一步推论,做管理的职务比做技术的更具有挑战性。 四、管理:在复杂系统中导航 相比之下,管理人员则常常要在复杂系统中导航。他们面对的是由人和社会构成的系统,这个系统的变量无数,交互关系复杂,难以预测。他们必须具备识别和处理这种复杂性的能力。 例如,公司经营,人力资源管理,项目管理,市场策略等,都是复杂系统理论的体现。 复杂系统的挑战在于,我们无法直接控制或预测它的行为,而只能通过影响其元素的互动来尝试改变其走向。 五、技术与管理:挑战性的程度看法 把管理看作是比技术更具挑战性角度,可能源于对管理涉及的复杂系统的认识。事实上,简单系统复杂系统并没有严格的优劣之分,他们只是代表了不同类型的问题和挑战。

    62610编辑于 2023-08-10
  • AI从复杂系统中提炼简单规则

    杜克大学的研究人员开发了一种新的人工智能框架,旨在揭示自然界和现代技术中一些最复杂动力学背后的清晰、易于理解的规则。该系统借鉴了历史上伟大的“动力学家”——即研究随时间变化系统的科学家——的工作成果。 使用线性模型表示高度复杂系统通常需要构建数百甚至数千个方程,每个方程都对应一个不同的变量。处理这种复杂性对人类研究人员来说十分困难。这正是人工智能体现其价值的地方。 其成果是一个紧凑的模型,该模型在数学上表现为线性系统,同时保持对现实世界复杂性的忠实。为了测试这种方法,研究人员将其应用于各种各样的系统。 这些系统从常见的钟摆摆动到电路的复杂非线性行为,以及用于气候科学和神经回路的模型。尽管这些系统差异巨大,但人工智能总能揭示出控制其行为的少数几个隐藏变量。 在许多情况下,由此产生的模型比早期机器学习方法生成的模型小10倍以上,同时仍能提供可靠的长期预测。“突出的不仅仅是准确性,还有可解释性,”陈博源说,他同时也在电气与计算机工程和计算机科学系任职。

    12710编辑于 2026-03-23
  • 来自专栏Crossin的编程教室

    开发复杂爬虫系统的经验与思考

    爬虫系统是很多Python开发者会遇到的需求。在开发中,往往会踩到各种无法预知的坑。今天给大家分享一篇关于爬虫系统开发的经验总结,让大家在技术上少走弯路。 高效 冷数据启动时丰富数据的主要工具,新业务开始时,需要抓取数据填充以便早期的测试运行 数据服务或聚合的公司,比如天眼查,企查查,西瓜数据等等 提供横向数据比较,聚合服务,比如说电商中经常需要有一种比价系统 提取出来,需要注意的是在这种场景中,「依然不需要使用 Scrapy 这种复杂的框架」,在这种场景下,由于数据量不大,使用单线程即可满足需求 2、 某天有同学又提了一个需求,想爬取网上的视频 通过抓包我们发现每个视频的 Python 由于其本身支持多线程,协程等特性,来实现这些比较复杂的爬虫设计就绰绰有余了,同时由于 Python 简洁的语法特性,吸引了一大波人写了很多成熟的库,各种库拿来即用,很是方便,大名鼎鼎的 Scrapy 根据业务场景的复杂度选择相应的技术可以达到事半功倍的效果。我们在技术选型时一定要考虑实际的业务场景。 如果文章对你有帮助,欢迎转发/点赞/收藏~ 作者:码海 来源:码海 ----

    1.8K31发布于 2021-07-27
  • 来自专栏Linyb极客之路

    高手如何应对复杂系统架构的演进

    ◆◆ 业务背景 ◆◆ 随着业务的复杂性增大、系统吞吐量增长,所有功能统一部署难度加大,各个功能模块相互影响,使系统变的笨重且脆弱;因此需要对业务进行拆分、对系统进行解耦、对系统内部架构升级,来提升系统容量及健壮性 为了解决拆分后各个子系统之间相互依赖调用的问题,这时会引入服务调用治理。系统复杂度有所加大,但系统基本解耦,稳定性相对提高,做好降级就能避免因其它系统功能异常导致系统崩溃。 ◆◆ 结构演变 ◆◆ 结构演变主要是随着系统复杂度增加及对性能要求提高而不得不做的系统内部架构升级; 早期系统基本是应用直联数据库,但在系统进行拆分后,功能本系统不能单独完成,需要依赖其它系统,就出现远程调用 ; 图4 早期应用结构 随着自身系统的业务发展,对性能要求高,而数据库一定程度上成为瓶颈,就会引入缓存及索引,分别解决key-value及复杂检索;索引加缓存现在已经成为解决高并发的基本方案,但在实施过程会有所区别 图8 复杂的结构 最后 系统结构慢慢变复杂,稳定性、健壮性逐渐提高;技术选择都需要结合业务痛点、技术储备以及资源情况,否则就有些不切实际,泛泛而谈; 以上是近几年自己经历的技术变革及升级的总结,后续可以针对个别点进行详细分享

    63120编辑于 2022-03-10
  • 来自专栏超级架构师

    【微服务】复杂系统:微服务与人类

    实际上,当你与拥有非常复杂系统的公司交谈时,他们的系统看起来更像右边的一个,非常复杂的体系结构,其中许多公司拥有数百甚至数千个服务,并且它们都相互交互。 复杂系统的两个层次 我想说的是,我们实际上有两个层次的复杂系统。我们有我们的微服务,然后我们有我们的人类组织,我们的人类系统覆盖,或者你可以称之为微服务系统的基础。没关系。 关键是它们实际上是两个系统,它们都是复杂的。他们都以有趣的方式相互交流,我认为我们需要更深入地讨论和研究。 微服务系统 当我们谈论驯服这些系统复杂性时,我的思维模式是这分为三个粗略的阶段。 我想我想让你们了解的一件主要事情是,从我的角度来看,微服务系统,是的,它们可以是超级复杂的。如果你有成百上千的微服务,它们可能很难解释。然而,正确的选择不是说“它们太复杂了,我不会走那条路。” 布莱恩特:我正在设计微服务,但我有大约10个服务,并且已经看到了很多集成问题?您如何管理这些服务中的混乱? 问题:系好安全带。我认为这是完全正确的。事情很快变得复杂起来。

    47420编辑于 2022-03-08
领券