Dojo
话题
新佳
订阅
极道
元认知
元逻辑
元设计
元编程
元语言
松耦合设计
分布式单体的六大病症
当公式的组织架构及其代码被拆分以后,但仍然存在紧密耦合时,就会出现分布式单体。这已经成为一个问题,因为系统的规模增加,单体的所有部分都需要一起管理,这会放慢开发速度并增加任何变化的风险。 能够识别何时处理分布式单体很重要: [b]1.
能够自动分析出Java应用中相互依赖程度的工具:Jarviz -Expedia
[url=
编写易于删除的代码 - ploeh
如何编写易于更改的代码?朝更方便地删除代码方向努力。 [i]“您可以删除部分而不重写其他部分的系统通常称为松散耦合” - [url=
软件Bug、耦合以及因果推理 - Michael Feathers
当你思考是否“是A引起C”?然后您意识到是A导致B然后导致C”,然后又会想到“也许A和B引起C”,然后您看到一个模糊轮廓,并想知道这个隐藏的轮廓是否在A,B和C存在之前就已经存在了。 众说纷纭: 系统思考无疑是改变生活的事情! 首先更改实体,然后更改因果关系。 数
用无上下文的Go语言实现HTTP服务
许多Go开发者,尤其是新开发者,发现一个不明显的问题是,我到底该如何把所有我需要的东西都传到我的处理程序中? 我们没有像Java或C#那样花哨的控制反转系统。 http.处理程序是静态签名,所以我不能只传递我真正想要的东西。看来我们只有3个选择:使用globals、将处理程
Zephyr是一个类似OSGI的Java插件框架
Zephyr 是一个基于Java的开源插件框架,具有智能依赖管理、模块化设计和占用空间小的特点。 Zephyr 智能管理插件生命周期的各个方面,包括类加载、启动/停止顺序、更新等。 Zephyr 仅重 1.3 MB,运行只需几 KB 内存,在一个小巧、方便的包中提供了强大的功能。 Zephyr 可以
无服务器可能导致代码进入分布式意大利面条糨糊2.0新时代 - TechRepublic
人们通常不知道微服务需要独立的自治。例如各种服务共享一个数据库;另一个问题是,服务之间通过RPC/Restful进行网络之间的同步调用链太长。这些都是分布式意大利面条一样的糨糊结构,这种架
生成式 AI 的模式语言
GPT-4之于皮尔士符号学就像冯·诺依曼计算机之于布尔逻辑。 然而,不同之处在于GPT-4的架构师(与冯·诺依曼不同)并不了解皮尔士符号学。 为何需要符号学(Semiotics)?语义学不行吗? 语义学的概念本身掩盖了太多的细节。 我们需要一种语言来解释意义是如何构建的。 符号学以更精细的细节解构语
Spring Modulith 1.0 GA发布
我很荣幸地代表 Spring 社区和所有做出贡献的人宣布 Spring Modulith 1.0 GA 正式发布。5 年多前,Modulith 还是一个研发辅助项目,2022 年成为 Spring 的一个实验项目,现在已成为 Spring 社区完全支持的顶级项目。
如何按照功能设计模块包?
下图是一个高耦合、低相干性的两个包调用设计: [code]┌──────────────────────────────────┐ ┌──────────────────────────────┐ │ pl.koziolekweb.app.controllers │ │ pl.koziolekweb
Claude Harness架构拆解:大脑和双手分离,长任务不断档
你的AI员工正被关在盒子里干活,容器一崩,连工资单都跟着陪葬。这不是科幻,是你明天就要面对的生产事故。 Anthropic的工程师发现,自家AI跑长周期任务时总在关键时刻掉链子。研究一轮才发现,问题不在AI智商,而在于他们把AI的大脑和双手绑在了同一台服务器上。容器崩了,会话没了;会话
抽象是昂贵的 - specbranch
当你建立一个计算机系统的时候,一些小事情就开始出现了: [list] [*]也许一个数据库查询对于你正在建立的功能来说是尴尬的, [*]或者你发现你的服务器在传输数千兆字节的十六进制ASCII数据时陷入困境, [*]或者你的应用程序为成千上万的独立用户即时翻译成日语。 [/list]
反射意味隐秘的耦合 - yegor256
当您的代码动态更改自身时,就会发生反射式编程(或反射)。例如,一个类的方法,当我们调用它时,会向该类添加一个新方法(也称为[url= Ja
从Monolith到微服务:理论与实践 - Kent Beck
我们如何才能快速地从整体变为微服务? 无法回答这个问题。首先,“迅速”就在窗外。你一个月都没弄糟。您将不会在一个月内修复它。其次,您希望从微服务中获得一些您目前无法获得的好处。那有什么好处?微服务不是重点。 拒绝了这个问题之后,我将
分裂中的NodeJS模块:为什么CommonJS和ES模块无法相处? - Dan Fabulich
自从Node诞生以来,Node模块就被编写为CommonJS模块。我们require()用来导入它们。当实现供他人使用的模块时,我们可以exports通过设置定义“命名导出”: [code]
高聚合低耦合 - theregister
我们都喜欢内聚,讨厌耦合(高聚合低耦合),关于内聚和耦合的标准建议是,设计应努力使内聚最大化并最小化耦合。这是一个很好的口头禅,但是在没有很好地理解真正意图的情况下,这常常是一种误导,或者被认为是学术上无关紧要的正确废话。 一个简单的特征是,耦合是系统中各个部分的互连程度,而
Mathias Verraes:软件设计中,越小越好,粒度越细越好往往是一种坏建议
在软件设计中,“越小越好”几乎普遍是坏建议,例如针对数据库分区,消息大小,μsvcs,有界上下文,类名,方法一致性等。一些关键业务逻辑会越过这些细粒度边界,并导致实施不当。 小粒度事物看起来很简单,因为错误不是隐藏在事物内部,而是隐藏在它们的连接中。 事物边界会变大,
DDD与敏捷非常类似,它们都喜欢哲学、思维方式、原则与规则。 - jamesmh
dddesign就像agile。许多人认为这与低级的具体实现细节和策略有关。但是,实际上,两者或多或少都像是一种思考软件和业务问题的方式。他们喜欢哲学...思维方式...原则与规则...。 它们的影响在于构建软件的高级战略方法。 “我们如何将这个庞大的系统分成可征服的小块?”
下页