首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

过度设计问题

这是学习笔记第 2069 篇文章 前几天碰到了一个严重硬件问题导致服务受到影响,我在总结思考时候,脑袋里冒出了一个观点:过度设计。...,如果节点漂移之后,某一个服务器资源负载会有显著提升,而在批量计算过程中一旦因为资源过度使用而导致集群节点再次出现问题,那么这种问题就是连锁式,排除这种极端情况,一个服务器上部署了过多节点,...我想了下我们工作中存在很多过度设计问题,如果细数一下这个过程,可以从功能,性能,可用性这个阶段来说,而归根结底是基于成本,即最小成本获得最高收益,这个收益绝非是简单性能。...,而过度倾斜就会是上面的这种情况,这种情况下是基于性能视角来设计,但是没有充分考虑数据可用性和可恢复性,所以第三层设计应该是基于故障设计方案,我们在设计之初就应该明确服务器是不可靠,资源是不能完全可靠...常见过度设计有 1.集群规模过大,但是使用率不高 2.单机多实例设计过度,导致业务难以恢复 3.数据分片过度 ?

42930

过度设计是罪恶

软件开发哪个阶段最容易招人喷?如果你严格按照什么瀑布模式、敏捷模式开发的话,你会发现永远是概要设计评审阶段。 这个时候,屎山还没有成为既定事实。...组件替换问题 如果我们技术栈,选用是MySQL,我们会采用JDBC、MyBatis、JPA等一系列基础编码工具。但这种选择,对追求接口和实现分离同学来说,却是不可忍受。...值得注意是,Spring家族在这些完美的目标上,产出了不少优秀组件,比如Spring Data、Spring Cloud Stream等。 但这不代表你可以过度设计。...一旦你做了某个决定,想要完整抽象就变非常奢侈,它不会比更换开发语言有更少工作量。 这是一种思维惯式,也是一个度问题。...在评审会议上喷一下非常爽,但没有人会多想一想背后工期、需求和必要性。 但如果放任耦合无限制产生,显然也不是我们想要,这个度度量需要一定学问。

25840
您找到你想要的搜索结果了吗?
是的
没有找到

向上转型理解

下面是《Java开发入行真功夫》中关于Java向上转型讲解 我们在现实中常常这样说:这个人会唱歌。在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向于使用抽象概念“人”。...再例如,麻雀是鸟类一种(鸟类子类),而鸟类则是动物中一种(动物子类)。我们现实中也经常这样说:麻雀是鸟。这两种说法实际上就是所谓向上转型,通俗地说就是子类转型成父类。...不过,由于向上转型,a对象会遗失和父类不同方法,例如b1()。有人可能会提出疑问:这不是多此一举吗?我们完全可以这样写: B a = new B(); a.a1(); 确实如此!...但这样就丧失了面向抽象编程特色,降低了可扩展性。其实,不仅仅如此,向上转型还可以减轻编程工作量。...可以看出,向上转型体现了类多态性,增强了程序简洁性。

52921

认识抽象陷阱-过度设计

原文链接:https://mp.weixin.qq.com/s/o-P9EUMPbAZlTwbykBioPQ 提到过度设计,大概很多人都知道。但怎么样界定过度设计,确是很难说清楚。...就是因为难以界定,所以就出现了可意会不可言传意味。仿佛成为了一种非常高深传统文化。 那么怎么界定呢?要界定,那么就应该要有衡量标准。找到这个衡量标准,而且是可以描述,可量化,可理解。...在做抽象时候,或者在利用一些设计模式时候(其实这也是一种抽象,只不过是利用前人总结好抽象)。目的是为了什么? 在我上一篇文章中 《系统架构设计一点思考》提到了系统复杂度概念与描述。...这种是在于,从自身主观思维出发,只看到局部,而未见整体系统结构。 评判标准界定,我认为是应该是从系统角度,去做评判才是正确。这个评判不是以个人主观意识出发。...值得一提是Petri网图形表达直观性和便于编程实现技术特点,使得它已经成为工作流及作业流建模主要工具之一。

31620

积极向上锯齿图

在我们日常报告中,柱形图一直占很大比重,这让我们对它无比熟悉,这种熟悉虽然可以让我们快速领会图表所要表达意义,但也因为它千篇一律表现形式让我们很难对它提起兴趣,所以做一些必要修饰非常有意义。...前面有关柱形图推送里我们介绍了利用图标填充来提升图表气场方法,这次我们讨论一个积极向上图表——锯齿图。 ? 为什么说锯齿图显得很积极?...因为它主要成分是三角形,而且是一个很“锋利”三角形,有很明显“锐意”,所以说猛地看上去会给人积极向上感觉。(这段话其实是我为了引出教程内容瞎编,但写完我还是感觉挺有道理,对吧?)...如果在画三角形时,把透明度修改一下,复制黏贴到图表中,再修改系列重叠,这种半透明折叠效果也是不错。 ? ? 锯齿图还可以做成3D立体图样式。...下图是我制作乐高风格模板中一个图表页,为配合乐高风格手机透视,我采用了3D图表,整体看效果貌似还不错。 ?

61720

向下取整和向上取整符号_python向上取整函数

注意,向上取整和向下取整是针对有浮点数而言; 若整数向上取整和向下取整, 都是整数本身。...---- 四舍五入:更接近自己整数; 把小数点后面的数字四舍五入 即:如被舍去部分头一位数字小于五,则舍去; 如大于等于五,则被保留部分最后一位数字加1 向上取整:比自己大最小整数; 向下取整...---- 2.向下取整(下有起止,开口向上): ⌊59/60⌋ = 0 ⌊-59/60⌋ = -1 ---- 请看以下测试 提示: 向上向下取整函数数只会对小数点后面的数字不为零数进行操作,...---- 对小数部分不为零数操作: 给定一个数: 4.9 调用用向下取整函数 得到是 4 调用用向上取整函数 得到是 5 ---- 之所以在向上取整时,分子部分要减去1,是为了避免出现,a 能被...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/200396.html原文链接:https://javaforall.cn

11K40

AutoML很火,过度吹捧结果?

跨行业数据挖掘标准流程 这个过程中每一个步骤都项目是否成功起着至关重要作用。然而,内行人会认为建模是最关键部分,一个完善ML模型能给企业带来很多价值。...AutoML基本想法就是在相对短时间里找到这样优质超参数。...简单来说: 如果(从模型中收益 > 数据科学小组花费时间)= 不需要节省时间 如果(从模型中收益 <= 数据科学小组花费时间)= 你真的解决了问题吗?...下面的基准测试是于2019年7月1日发布,作者将几个AutoML库性能与调整后随机森林进行比对。 ? 看到这个结果也吸引了我好奇,我决定自己建立一个基准测试。...你可能花费了大量时间来设计完善又复杂功能、选择神经网络或调整随机森林参数来创造一个强大引擎,但是如果忽略了车其他部分组件,也是白费力。

2.1K30

请勿过度依赖Redis过期监听

作者:迪壳 https://juejin.im/post/6844904158227595271 Redis 过期监听场景 业务中有类似等待一定时间之后执行某种行为需求 , 比如 30 分钟之后关闭订单...网上有很多使用 Redis 过期监听 Demo , 但是其实这是个大坑 , 因为 Redis 不能确保 key 在指定时间被删除 , 也就造成了通知延期 ....(executor); // 设置监听Topic return container; } 设置 Redis 过期监听 以及线程池信息 , 最后测试结果是当 key 数量小于 1 万时候...", 这两个文章读下来你会感觉 , 卧槽 Redis 过期策略其实也挺'Low' 其实公众号看多了 , 你会发现大部分 Demo 都是互相抄来抄去 , 以及翻译官方 Demo ....建议大家还是谨慎一些 , 真要使用的话 , 最好读一下官方文档 , 哪怕用百度翻译也要有一些自己理解 . 文章比较枯燥 , 感谢大家耐心阅读 , 如有建议 恳请留言.

78730

过度设计会扼杀你产品

如果我们按照维基百科严格定义来看,过度设计指的是以超过必要更复杂方式设计产品事实: 过度设计(或过度工程化,或性能过剩)指的是以过于复杂方式设计产品或提供问题解决方案行为,而在这种情况下,可以证明存在一种更简单解决方案...嗯,请坐稳椅子,因为在经历了二十年职业生涯之后,我可以向你保证,过度设计并非例外:这是常态。 过度设计原因 谁也不是出于恶意这么做。...代码复杂性与经验 界定宽松需求也会加剧这一问题。假如一个工程师没有一个明确界定问题,他就会倾向于过度设计来避免不确定性。 无聊同样也会导致过度设计。...之所以如此,这是因为要从良好实践中获益,你需要有产品与市场契合度,而过度设计会使你首先无法得到它。 过度设计例子 第一个想到是基于微服务架构。...如何避免过度设计 在我看来,避免过度设计最好方法是让你工程师成为真正产品工程师。

17330

向上管理两个职场案例

之前分享过很多职场成长内容,其中也聊了很多关于向上管理工作汇报个人经验,最近好几个同学在公众号后台留言咨询,有没有比较实际向上管理案例可以分享,想参照学习一下。...,并说明如何收敛bug数量,提高线上质量; 内部复盘,找到团队存在根因问题(流程不规范、方法手段缺乏),提出后续改进方案并推动落地; 案例二:工作汇报 案例概况:公司规定,定时对自己工作进行向上汇报...很多测试同学说自己做了很多事情,加班也不少,但就是不知道如何把自己工作产出很好进行汇报,绩效不是很好,心里也不舒服。 以性能测试为例,假设你是负责性能测试同学,你如何向上级汇报你产出呢?...这样做好处是接触到信息面更广,且是多个维度视角,有助于更好开展自己工作,或者跨团队协作。 环境和信息会制约我们认知,为了更好做事,扩大已知信息范围是很好一种方法。...一个公司工作机制和流程,就是最好项目管理和执行方向,循迹而行,结果往往不会差,至于能拿到60及格还是90优秀,就看你如何执行,以及向上沟通了。

24420

【说站】java向上转型发生时机

java向上转型发生时机 1、直接赋值 public static void main(String[] args) {         //父类引用 引用了 子类引用所引用对象         ...Animal animal = new Cat();;//向上转型 } 2、方法传参,把一个Cat子类传给一个Animal类型父类,这里也是能发生向上转型。...Animal animal) {              }     public static void main(String[] args) {         //父类引用 引用了 子类引用所引用对象...        Cat cat = new Cat();         func(cat);     } } 3、方法返回,func方法返回类型是Animal,但返回的确是一个Cat类型,这里也是发生了向上转型...    }     public static void main(String[] args) {         Animal animal = func();     } } 以上就是 java向上转型发生时机

15210

腾讯云数据库向上之路

好在,中国数据库产业虽然较国际市场起步晚,但是经过三十多年发展,也逐步成熟。国产数据库产品占国内数据库市场份额正在逐步提升并开始超越国外厂商在国内市场增速。...在这样大背景下,2020年,国内所有数据库厂商都铆足了劲,但从公开信息梳理下来老鱼发现,士别三日当刮目相待,腾讯云数据库向上之路表现尤为突出。...全新升级后腾讯云TDSQL将涵盖分布式、分析型、云原生等多引擎融合完整数据库产品体系。...基于新产品形态版本,产品交付可以具备一体机交付方式,而过去只能通过私有云或者公有云输出。...最后,在国产化趋势下,国产化适配显然是不可缺失一环, 2020年,TDSQL完成全线国产化适配,具备从硬件到软件,适配包括全系国产化芯片、操作系统等完整解决方案。

4.1K20

过度使用懒加载对 Web 性能影响

但懒加载过度使用会给应用性能带来负面影响。所以在这篇文章中,我会详述懒加载对性能影响,来帮助你理解应该何时使用它。 什么是懒加载?..." loading="lazy" alt="an image of a laptop" /> // with IFrame <iframe src="about-page.<em>html</em>...优化资源消耗:通过资源懒加载优化系统资源使用,这在内存以及处理能力较低<em>的</em>移动设备上效果比较好。 在另一方面,<em>过度</em>使用懒加载会对性能产生一些明显<em>的</em>影响。...但如果你<em>过度</em>使用懒加载,会产生一些负面影响。当 SEO 索引时,搜索引擎爬行网站抓取数据以便索引页面,但由于懒加载,网络爬虫无法获取所有页面数据。...总结 懒加载可以提升网页使用率以及性能,对 Web 开发者而言是一个称手<em>的</em>工具。所谓“<em>过度</em>烹饪烧坏汤”,<em>过度</em>使用这项技术也会降低网站性能。

1.1K10

停止过度设计中等规模前端应用程序

在软件开发领域,不陷入过度工程化陷阱,写出可维护代码做法,已经越来越少见了。...在处理中等规模应用程序时,找到在编写足够测试以确保稳定性和不过度工程化测试过程之间平衡非常重要。我们应该专注于创建一个坚实单元测试和集成测试基础来覆盖应用程序。...虽然在具有复杂业务逻辑和多个团队协作大型应用程序中,DDD可能非常有用,但对于中型应用程序来说,可能会过度。...这种分离允许更大灵活性、可测试性和可维护性。 与DDD类似,实施六边形架构对于具有复杂业务逻辑和众多外部依赖大型应用程序可能是有益,但对于中型应用程序来说,这绝对是过度设计。...总结 过度工程化是所有恶根源。当涉及到中等规模应用开发时,我们大多数人都有罪。

19620

自下向上编写容易阅读代码(上)

我在 关于极简编程思考 中曾提到要编写可阅读代码。因为代码是编写一次,阅读多次。 阅读者包括代码编写者,以及后来维护人员。能让阅读代码更轻松,有利于增强项目或者产品可维护性。...这些都是我在实际工作一些体会以及代码审查过程中跟同事一起得出一些经验。没有太高深理论,适合所有人借鉴交流。...相对于MyBatis和我写BeetlSql,这一点JPA就不行了-提供了一个返回数组查询接口。 我发现我每次在博客提到我写开源,就有人说我想宣传自己开源。...不一定要取有意义变量名 java 里for循环一般都是使用i变量,这说明了有些情况下,可以用一些简单变量名字代替有意义变量名字。...,可能还能列出更多规则,我个人觉得这些规则并不重要,重要是能时刻想到后来人会如何阅读你代码才是最重要,如果他阅读你代码,毫无障碍达到一目十行,觉得你写代码没什么高深,那就是好代码。

74480

过度设计说根本不是设计问题

YF 2021-2-6 14:04 我们领导昨天教育我们说,不要过度设计,先做最重要功能!最近学了潘老师书,题也做了一些,感觉好像说是功能不是设计,老师怎么看?...---- 即使是看起来真的是说“内部”设计,其实有可能还是需求问题,比如,网络上摘一篇名为《软件开发-什么是过度设计》文章里举例子: ?...以上文章以为所说问题是“设计”,其实问题是,考虑了不存在需求,跟设计过度过度没什么关系。...至于真正过度设计”——系统需求是正确,但系统内部构造精妙到过分了,呵呵,似乎我见都没见过。 见到基本上都是伪装成“过度设计”“没有设计”。...更糟糕是,“过度设计”还成为拒绝思考遮羞布——我害怕自己“过度设计”,所以干脆就不学习设计了,这样就避免了陷入“过度设计”陷阱。

71210
领券