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

讨论软件架构的30个共同原则

据说,作为软件架构师,人们应该像园丁一样思考而不是指挥官。前者塑造,策划并去除杂草,而后者定义和指示。建筑师应该策划而不是指挥,塑造而不是定义,并煽动讨论而不是标签。但是,如何让它发挥作用?...原则指导我们并使我们的讨论根深蒂固。他们还避免了永远持续的哲学战争。最后,如果设计师从未听说过这个原理,那么他很容易学习。 以下是其中一些原则。有些是众所周知的,而有些则是我们选择的方式。...极客喜欢扩展点,像样本和脚本的开发人员,像UI这样的普通人。 原则23: 最好的产品不需要手册。它的用途是不言而喻的。...你应该策划而不是指挥,塑造而不是定义,并煽动讨论而不是标签。 虽然短期内可能会更便宜,更容易决定架构,但从长远来看,指导并让团队找到自己的方式会带来好处。...如果你不小心,建筑飞行更容易,设计师只告诉他的架构是错误的,但不是为什么它是错的。避免这种情况的一种方法是拥有一套普遍接受的原则,这些原则成为讨论的锚点,也是新兴建筑师的学习路径。

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

    电面基础:Java基于MapHashtable的问题讨论

    电面基础:Java基于Map/Hashtable的问题讨论 前言:电话面试(简称电面)以知识点考察为主,在数据结构方面,对于Map/Hashtable的考察绝对是必不可少的一部分。...Java作为一门被业界广为应用的语言,在集合类方面有非常全面成熟的解决方案,因此我们用一个专题的形式来讨论在Java中有关Map/Hashtable题和解答。...简单问题的背后主要考察candidate是否了解和使用过Hash相关的数据结构。...那么根据HashMap在java中的实现,以下几点应该在回答中准确的表达: Hash相关的数据结构本质上都是key value pair; Hash中不能存在duplicate key; HashMap...提供非常快速查找时间复杂度; 在HashMap具体实现中,Null可以作为key或者value存在; HashMap不是线程安全; 由于Java中和Hash相关的类比较多,我们帮助大家梳理一下,比如 “

    66870

    关于Java中静态字段与静态方法的讨论

    static void main(String[] args) { System.out.println("hello world"); } main方法中加入,static,修饰符,下面我们来讨论这个修饰符的含义...静态字段 如果将一个字段定义为static,每个类只有这样一个的字段,而对于非静态的实例字段,每个对象都有自己的一个副本,例如:,假设需要给每个员工赋予唯一的标识码,这里给Employee类添加id和一个静态字段...也就是说,需要通过Math类的一个对象来访问PI,并且每一个Math对象都有他自己的一个PI副本。 静态方法 静态方法是不在对象上执行的方法。例如,Math类的pow方法就是一个静态方法。...静态方法的俩种场景: 方法不需要访问对象状态,它所需要的所有参数都要通过显式参数提供Math.pow(3,5) 方法只需要访问类的静态字段(例子见下) public static int getId()...静态的main方法将执行并构造程序所需要的对象 最后 本文为博主学习使用 参考书籍 ——java核心技术卷1

    78440

    recoveriX脑机接口脑卒中康复系统讨论会议——关于脑卒中患者康复情况与软件特点的讨论

    在对手部的训练阶段,前后的评估分数有非常明显的变化,从15增长至26。在第一段训练后与腿部训练前的一段时间呈现出一定程度的下降趋势。...其次,该患者的大拇指的运动能力得到显著提高。 同理,在下图中反应的则是在各个阶段得到的对下肢的评估分数的变化。最终由24增长到28 (增加了12%)。...从起初的14.0s下降至最后的10.6s。总共24%的变化,这是一个非常明显的变化。同样也是对康复疗效的正面反馈。...对于下肢的运动的基于运动想象的康复治疗 在进行训练的前后,都要对患者的情况进行多项详细的评估。...随后,研究人员就上图recoveriX报告给出的ERD/ERS图进行了更进一步的解读(如下图)。 图中的第一行展示的是在进行右手的运动想象任务时大脑的C3与C4区域的事件相关电位变化。

    45920

    JAVA月薪两万的一些讨论

    如果你达到我说的水准,我们谈的起薪就是2w,有其他优秀的表现我们在这个基础上加点。但纯JAVA方面待遇是比较吻合的,毕竟这几个企业我都待过或面试过。...那些质疑我的人去面试一下就明白我说的对不对,不要随便就质疑。如果有机会可以再开一题,来谈谈互联网的JAVA面试题,我可以把90%的题目全部给你列出来。...13)会使用eclispe ,idea,maven,我觉得各一天就行 如果刚毕业就有人告诉我这些该多好,我毕业好多年了,走了好多弯路,在不重视技术的行业软件公司浪费了好几年,又做了好几年测试,...(作为一个自己创业开软件公司的人,我觉得能给到的薪资) 但是有一个前提。不是空口白话。无论说的那些会不会。一个成套的政府系统商城需要自己能去当主程。包括前端后台逻辑数据库运维。...写一个手机端的api都不知道加上token验证和错误回传 配置完了redis然后嚷嚷着数据库出问题了吧为什么mysql库没有数据存入 这些人。通常讨论高深技术。很high。真写起来。狗屁不通。

    89610

    软件开发:RUP与敏捷开发过程的比较与讨论

    在软件开发领域,RUP(Rational Unified Process)和敏捷开发是两种主要的开发方法论。尽管它们都旨在提高软件开发的效率和质量,但它们在理念、实践和工具使用上有着显著的差异。...RUP(Rational Unified Process)简介 RUP是一种基于迭代的软件开发过程框架,由Rational Software公司在1990年代开发。...严格的文档和过程:RUP提供详细的指导和模板,强调过程的规范性。 敏捷开发简介 敏捷开发是一种更灵活、更快速的软件开发方法。它强调个体和互动胜于过程和工具,响应变化胜于遵循计划。...特点 迭代和增量开发:敏捷开发通过短周期的迭代来逐步完成软件开发。 人本主义和沟通:敏捷开发强调团队之间的密切合作和直接沟通。 适应性和灵活性:敏捷方法能够快速适应需求和环境的变化。...作为软件开发的专业人士,理解这两种方法的优缺点,并能够根据实际情况灵活运用它们是一个重要的职业技能。

    57110

    平行的讨论方式

    今天听了樊登速读的「斯坦福大学创意课」,里面有两个故事很有意思: 第一个故事是说好莱坞大片的剧本是怎么来的,先有一个故事梗概,然后一堆顶尖的编剧在一起先想该怎么写好,然后写完后过一周再聚在一起全部推翻,...第二个故事是用六顶思考帽来讨论议题,把议题分为5个方面(感觉,事实,赞成,反对,改进),当主持人说现在我们讨论「赞成」的时候,所有与会的人尤其是反对者,都必须说这个议题的优点,为什么要做这个议题。...而当主持人说我们现在讨论「反对」的时候,所有与会的人尤其是支持者,都必须说这个议题的坏话,为什么不能做这个事情。而在讨论「改进」的时候,所有人都不可以做任何评价,并且总是鼓励更多的方案与想法。...这两个故事其实都是平行思考,就是大家讨论的时候必须站在同一个面,即时自己的立场是反面的,此时此刻也必须为对方说话,等到议题到了讲反面的时候自然有机会说。对于减少会议中的无意义争辩应该会很有效。

    49350

    当我们讨论swoole的时候,我们在讨论什么?

    首先,我们需要肯定的是,它的出现是为了弥补php更准确的是laravel的短板:性能和资源利用率。其次,就我们现有的场景来说,更多的是开发http的相关功能。...为什么要使用swoole php的开发效率。毋庸置疑的是,php加上laravel是如虎添翼,开发效率很高,特别是crud一块提供了大量的语法糖,减轻了开发人员的工作量。 公司现有的技术积累。...公司从成立到现在,上到老板下到现在的各个开发团队的开发人员,php是后端绝对的开发语言,并且公司的存量项目中也是使用的php。 开发人员的技术储备。...不同点:swoole的只能在协程容器中使用,go的能到处使用,go的可以不指定容量大小,swoole的必须指定。...Laravel的orm使用的的数据库连接是单例,而go语言的grom实现的是连接池。 当然go的连接使用也是有需要注意的,也有安全与不安全之分。

    5.9K40

    算法讨论题 —— Java实现两数之和

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。即:每个index上的数字只能用一次。...能不能我们在构建的时候就完成操作。答案是肯定的。...如果需要考虑效率的话,重构数据结构,通常是比较有效的方法,Java 中用得比较多的是 Map,因为 Map 通常能够存储更多的信息,而且遍历效率高。...我们对一些问题,如果算法不太好弄的话,通常考虑的是能不能给它们换个数据结构,比如说 List ,Map 呀这种的。个人感觉这个题目在算法中是属于比较简单的题目,但是不同的解法可能会比较多。...https://www.isharkfly.com/t/java/14998/1

    22430

    由人工智能参数讨论基于Bug的软件测试质量分析

    上文和大家一起讨论了人工智能样本的评价参数:准确度、精准度、召回率和F1分数。这篇文章,我们结合这些参数来讨论基于Bug的软件测试质量分析。...软件测试质量分析是软件测试工作中非常重要的管理工作,其实在没有了解准确度、精准度、召回率这些概念之前,我们其实已经多多少少使用了这些概念。...现在假设讨论的周期为一次正式的版本发布,版本经过研发,并且在客户现场运行了一段时间,目前基本上发现不了Bug了。...这里的度量指标反映了版本发布之前的质量效率。 现在假设有一个测试机器人来进行软件测试,我们如何来评估这个测试机器人的测试质量呢?...测试机器人发现的正确的缺陷为真阳性,发现的错误的缺陷为假阳性,同时配合人工测试,人工测试发现的正确的缺陷去除与测试机器人发现的重复的正确的缺陷为假阴性,人工测试发现的错误的缺陷去除与测试机器人发现的重复的错误的缺陷

    86710

    动力节点Java学习资料讨论JMS与ActiveMQ的内部逻辑

    1999年,原来的SUN公司领衔提出了一种面向消息的中间件服务--JMS规范(标准); JMS即Java消息服务(Java Message Service的简称),是Java EE 的标准/规范之一。...JMS是Java EE中定义的一组标准API,它自身并不是一个消息服务系统,它是消息传送服务的一个抽象,也就是说它定义了消息传送的接口而并没有具体实现。...JMS规范经历了多年的发展,并随着Java EE进行了几次升级,版本从1.0到最新的2.1,它们分别是: Java EE 8 --> Java Message Service API 2.1 Java...Message Service API 1.1 J2EE1.4 --> Java Message Service API 1.1 我们知道JMS只是消息服务的一组规范和接口,并没有具体的实现,而ActiveMQ...就是JMS规范的具体实现; ActiveMQ是Apache下的一个项目,采用Java语言开发; ActiveMQ 是一款非常流行的开源消息服务器,实现了JMS规范,官网: http://activemq.apache.org

    39210

    大讨论:如何尽可能接近掌握软件工程?

    不久前,他发起了“如何尽可能接近掌握软件工程”的大讨论,吸引了不少读者参与讨论。InfoQ 中文站翻译并整理成文,以飨读者。 “工程”是以一种有原则的方式制造东西——因此,肯定存在“软件工程”。...对于这些人来说,“掌握软件工程意味着与当前的实践保持同步”。 我是一个老顽固,我更喜欢一种早期的、更严厉的、更开明的“愿望”,并且喜欢比较和思考如何让软件开发更接近于现有的工程。...“软性”软件(以及从对“软性”软件的理解)所需要的就是在一个工件的生命周期中具有“极端灵活性”(“软性”是我们制造可编程计算机的原因)和“极端安全和完整性”。...作为一名富有成效且有价值的软件工程师的途径就是注重(掌握)软件工程的原理。学会怎样学习。也许听起来奇怪,但这是一个工程师需要掌握的重要技能。学会迅速掌握新技术。...因此,我并不赞同文章的观点。掌握软件工程在几十年前和今天一样难。因为软件工程的基本原理并没有改变。 每六个月,作为一名软件工程师,都要重新塑造自己。

    26710

    软件开发:计算机最大数字进制讨论

    在计算机科学中,讨论“最大进制”这个概念是非常有趣的。许多人可能认为十六进制是计算机中使用的最大进制,但实际上,理论上计算机可以使用任何进制来表示和处理数据。...在本文中,我们将探讨进制的概念,以及为什么十六进制在计算机中如此普遍,并且还会讨论更高进制的可能性和应用。 进制基础 进制,或称为数制,是数的表示方式的基础。它决定了数值是如何计算和表示的。...更高的进制 理论上,可以使用任意高的进制来表示数值。二十进制、三十二进制乃至更高的进制都是可能的。然而,随着进制的增加,使用和理解这些系统变得更加复杂。...例如,三十二进制将需要32个不同的符号来表示每个位的值。 高进制的应用 在某些特定的领域,使用高于十六进制的系统可能有其独特的优势。...例如,在某些类型的数据压缩或编码方案中,使用更高的进制可以进一步减少表示数据所需的字符数量。但这通常伴随着更高的计算复杂度和更低的可读性。

    16110

    关于Matlab的若干讨论

    在看Scilab的时候不小心进了知乎,回答很有趣,我这里做个小随笔。主要是推荐的软件,或者是精妙的言论。...别的软件不是不可以写,单反复合图灵规范的都可以写,但是你会去干嘛?你不会。...这个是Linux的话,这个有点大丈夫背负了许多的味道 这个人论述了,为什么国内没有这样软件的大环境 以及为什么会发送这样的事情 给了一些国产软件生存的通法 我觉得重要的是,有没有愿意付出 https...://github.com/xuhao1/pyaircraftiden 模型辨识 笑死我这个,刺激 开源软件不会用也是一个重大的毛病 盗版是推广手段,正解!...这软件是各个其他行业里最会写代码的人搞出来的,虽然软件工程上来讲可能不太好用,但一定适合本专业。 国家应该发力让相关人员制作工业软件

    35030

    创建界面方法的讨论

    以前在入门的时候,找的入门书籍上编写的 demo 都是基于 Storyboards 拖界面的。后来接触公司项目,发现界面都是用纯代码去写复杂的 autoLayout 的。...Custom Code 文章介绍了三种构建界面的方法,并对不同方法分别讨论了优缺点。 其实对于这几种方法,没有最好,只有最适合。...总结下来就是 Storyboards 是一个容易观察并且使用简单的 iOS UI 设计工具。它也消除了固定的创建控件的模板代码,但导致了很严重的灵活性的缺失。...同样的话题,在唐巧的博客里,也讨论过这个问题:iOS 开发中的争议(二) 其中比较有说服力的一段是他分析了100多个 App 包含 xib 文件的个数,大概推测出很多著名的 App 里大部分界面都是手写来完成的...最最后,我想起来以前上学搞 MFC 的时候,那时候也有关于手写界面还是拖界面的讨论,当时一个很有说服力的评论是,手写界面可以锻炼你对 MFC 程序的理解,可能你还是无法知道 MFC 的实现原理,但你会很熟悉

    76310

    推荐+1置顶+1(分享、讨论、实现) 通用软件注册功能之建立有效的软件保护机制

    推荐+1置顶+1(分享、讨论、实现) 通用软件注册功能之建立有效的软件保护机制          众所周知,一些共享软件往往提供给使用者的是一个功能不受限制的限时使用版,在试用期内使用者可以无限制的使用软件的全部功能...(只是可能会出现提示使用者 注册的窗口),试用期一过部分(或全部)功能失效,要想继续使用只能向作者索取注册码(或注册文件)完成对软件的合法注册,注册后的软件将解除一切使用限 制。...如果您也开发出一个有价值的作品,是否也希望为自己的软件增加一个这样的功能呢?当前对于.NET反编译的问题不在本文讨论之内,相关文章已经很多! 本文我们就一起探讨软件注册功能的实现。       ...,软件开发商获得这些机器码后利用手中的私钥对这些信息进行RSA数字签名,生成的签名 信息(即注册码)发回给用户,用户将收到的注册码输入注册模块的注册码框,软件即可利用公钥执行签名验证,如果输入的注册码被证明就是经过开发商数字签名...图2 注册文件管理器 通过“注册文件管理器”,我们就可以根据用户提供的信息来生成软件的注册文件。

    49210
    领券