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

每个程序员都该知道的五大定律

定律 - 或称法则,可以指导我们并让我们在同伴的错误中学习。这篇文章中,我将介绍我每次设计或实现软件时出现在我脑海的五大定律。其中有些和开发有关,有些和系统组织有关。...它们可以帮助你成为合格的软件工程师。 墨菲定律 “ “凡事可能出错,就一定出错” ” “墨菲定律” 是一种心理学效应,是由爱德华 · 墨菲(Edward A. Murphy)提出的。...在举个具体的例子,我曾经在一个批处理框架中使用字符串 “null” 来表示空值,我并不认为这有问题,直到有个名字叫 “Null” 的用户提交了一个交易订单,我们的报表流程中断了几个小时…… 还有一次,在另一个项目中...这些设计没有好坏之分,但它们都是受到团队沟通方式的影响。在全球有大量独立开发者的开源项目,通常是模块化和可重用库,这就是很有说服力的例子。 当前,将大的集成应用解耦成微服务已成趋势。...建反应堆是一件巨大而复杂的任务,没有人能完全掌控全局。他们完全信赖流程和系统专家,并很快接受了项目。 另一边,建车棚是一般人都可以做的,每个人都可以对颜色有意见。

1.3K50

每个程序员都该知道的 5 个定律 转

定律或称法则,可以指导我们并让我们在同伴的错误中学习。 这篇文章中,我将介绍我每次设计或实现软件时出现在我脑海的 5 个定律。其中有些和开发有关,有些和系统组织有关。...举个例子,我曾经在一个批处理框架中使用字符串 null 来表示空值,我并不认为这有问题,直到有个名字叫 Null 的用户提交了一个交易订单,我们的报表流程中断了几个小时…… 还有一次,在另一个项目中。...然而,这条规则并不应该阻止你去学习编程语言的性能权衡和正确的数据结构。并且,正如所有其他性能问题,你在优化前要测量开销。...这些设计没有好坏之分,但它们都是受到团队沟通方式的影响。在全球有大量独立开发者的开源项目,通常是模块化和可重用库,这就是很有说服力的例子。 如今,将大的集成应用解耦成微服务已成趋势。...另一边,建车棚是一般人都可以做的,每个人都可以对颜色有意见。事实上,每个会议成员都会表达自己的意见,使得建车棚的决议所花费的时间远远超过建反应堆的。

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

    每个程序员都该知道的 5 个定律

    其中有些和开发有关,有些和系统组织有关。它们可以帮助你成为合格的软件工程师。 墨菲定律 “凡事可能出错,就一定出错。”...举个例子,我曾经在一个批处理框架中使用字符串 null 来表示空值,我并不认为这有问题,直到有个名字叫 Null 的用户提交了一个交易订单,我们的报表流程中断了几个小时…… 还有一次,在另一个项目中。...然而,这条规则并不应该阻止你去学习编程语言的性能权衡和正确的数据结构。并且,正如所有其他性能问题,你在优化前要测量开销。...这些设计没有好坏之分,但它们都是受到团队沟通方式的影响。在全球有大量独立开发者的开源项目,通常是模块化和可重用库,这就是很有说服力的例子。 如今,将大的集成应用解耦成微服务已成趋势。...另一边,建车棚是一般人都可以做的,每个人都可以对颜色有意见。事实上,每个会议成员都会表达自己的意见,使得建车棚的决议所花费的时间远远超过建反应堆的。

    55280

    如何管理和组织一个机器学习项目

    如果你写的东西不能作为一个类很好地工作,那么把代码组织成函数。函数是可重用的。 ? 代码管理示意图 代码管理:目录 使用多个模块来组织代码,并将这些模块组织到目录中。...我认为测试研究代码更重要,因为研究的全部意义在于你不知道“正确答案”是什么,如果你不知道生成答案的代码是否正确那么如何确保答案是正确的呢?...至少,最好对代码中最关键的部分进行单元测试,例如复杂的数据处理或模型中奇怪的张量排列。确保代码是正确的决不是浪费时间。 这些单元测试包括对一些内置PyTorch函数的测试,以便进行演示。...用于定义像素级分割的整数与标签描述字符串之间的映射是正确的。比如:1正确地映射为“飞机”。 重采样步骤并没有“破坏”输入图像或分割图像。...jupyter notebooks只是大量的JSON文件,因此正确地合并它们或用它们执行提交请求基本上是不可能的。 jupyter notebooks 使人们很难与他人合作。

    1.5K20

    Power Designer数据库建模工具,正向、逆向工程

    可参考下图: ? ? 点击【确定】按钮之后,可以在桌面上找到bos_bc.sql这样的一个文件,打开,即可看到t_user表的建表语句: ?...有了这样一个bos_bc.sql文件之后,怎样将其导入到数据库中并创建相应的表呢?有两种方式: 第一种,使用图形化界面工具来操作。 ? 第二种,使用命令行工具,在mysql中执行sql脚本 ?...可发现这并不是我们所想要的,因为虽然建立了两表之间的外键关联关系,但是是t_user表的主键(id)引用了t_dept表的主键(id)。...为了在两表之间建立正确的外键关联关系,就要双击连接线,在弹出的对话框中选择【Joins】选项卡,如下: ? 点击【确定】按钮,即可如我们所愿: ? 而且建表语句为: ?...确定之后进行reverse。具体需要的时间要根据数据库对象的多少来定 逆向工程之后的PDM 如下图 ?

    1.7K30

    敏捷、DevOps、平台工程的混乱阻碍了开发人员

    我在其他地方描述了我参与的五次组织转型中有三次没有按预期进行。在每种情况下,缺乏领导层的支持或关注都是导致失败的主要因素。...开发人员生产力的难题 在组织中,信任源自高层。失去信任也令人不安地容易;一种方式是不展示你所拥护的价值观,但其他方式包括在公司盈利时进行大规模裁员或将绩效评估与容易操纵的统计数据联系起来。...Sazhin 表示,以这种方式衡量开发人员的愿望源于对团队成员和个人的微观管理愿望。它源于对团队自我组织能力缺乏信任。但这种想法与 UST 的核心原则不符。...包括亚马逊、Intuit 和 Netflix 在内的企业每年进行数千次实验。“我鼓励[亚马逊的]员工走入死胡同并进行实验,”杰夫·贝索斯说。...“我们已经尝试创建工具来降低实验成本,以便我们可以进行更多实验。如果你可以将实验数量从一百个增加到一千个,你将大幅增加你产生的创新数量。”

    11310

    单细胞转录多样性是发育潜能的一个标志

    我们还探讨了“基因计数”效用,即每个细胞中可检测到的表达基因的数量。...由于scRNA-seq设计用于捕获单细胞基因表达,因此我们认为其表达方式与基因计数相关的基因可能会更好地捕获分化状态。...由于这些细胞不能仅通过基因计数或RNA含量来识别,因此本分析证实了细胞追踪的实用性,并展示了一种从scRNA-seq数据中阐明组织特异性干细胞的方法。 ? ?...因此,我们的数据与一个模型是一致的,在这个模型中,较不成熟的细胞保持较松散的染色质,以便对转录组进行更广泛的采样,而分化程度较高的细胞在特化时通常限制染色质的可及性和转录多样性(图S6C)66。...与大多数现有的沿袭轨迹分析方法不同,CytoTRACE可以以一种独立于特定时间尺度或数据中存在连续发育过程的方式预测相对状态和分化方向,而与特定时间尺度或数据中是否存在持续发展的过程无关。

    1.9K10

    在没有技术术语的情况下介绍Adaptive、GBDT、XGboosting等提升算法的原理简介

    以下是建立森林的步骤: ? 像建普通的树一样建一个树桩。所以选择能够正确分类大多数样本的变量。这就是我们的投票者。 投票者1的准确率为83%,而Tim的分类是错误的。...所以我将样本Tim的权重提高到0.3,其他样本的权重降低到0.14,让它们加起来等于1。 我使用新的加权样本建立了树桩2,准确率为87%。John的错误最多。...这里的概念是:如果叶子的总和是很大的负数或很大的正数,它就把正确的样本分组在一起。另一方面,如果它们不相同,值会相互抵消,因此接近于0。 一棵树的值是它所有叶子节点的总和。...在上面的公式中,分母中的P是最后一棵树给出的基于其总log(odds)的概率。我在下面列出了四种情况,以便我们了解这个公式的含义。 ?...它构建树来将残差进行分组。就像我之前提到的,相似的样本会有相似的残值。树节点是可以分离残差的值。因此,XGboost中的叶子是残差,而XGboost中的树节点是可以对残差进行分组的值!

    88910

    最佳PHP代码审查关键原则与实践技巧

    在这个步骤中,我发现能够将代码发布到审查应用程序或暂存服务器,并确认我在代码审查中的发现及其实际工作方式是很有帮助的。对于棘手的部分,我也倾向于搜索添加的单元测试。...开始直接将代码与项目的需求或规范进行比较。您是否已实现所有必要的功能?是否有不正确的行为或缺少任何东西?接下来,仔细地逐步执行代码的逻辑。执行是否遵循从接收到的输入到最终输出的合理路径?...这些标准为PHP代码建立了一种通用语言,定义了缩进、命名约定、文件组织等规则。 通过遵循标准,您的代码变得可预测和一致,减少了阅读者的认知负担。...错误处理:代码是否避免向用户暴露原始错误消息或堆栈跟踪?是否在内部记录错误,以便开发人员进行故障排除?在出现故障时,是否有用户友好的后备机制? 5....它们为您提供了快速查明问题和改善用户体验所需的线索。 将代码评审作为一种习惯 代码审查不应该被看作是一次性的苦差事,也不应该被看作是简单地发现bug的一种方式。

    14710

    独家 | 数据科学家对可复用Python代码的实用管理方法(附链接)

    您可能已经这样做了(我希望是的),但如果没有,以下是我作为一名数据科学家,对自己所写的可复用 Python 代码进行管理的几种固化下来的方法(按照最通用到最不通用来进行排序)。...因此,我自己写了一段简单的代码,它接受一个字符串、一个子字符串以及我所求的第n次出现的“n”作为输入,返回值是字符串中子字符串第n次出现开始的位置索引(具体代码出处见: https://stackoverflow.com...我很快发现,将其中一些算法函数的副本各自保存在一个单独的脚本中以供调用并不是最佳选择,反而将它们先集中在一个脚本中再进行导入会更好。...随着这些代码变得越来越参数化和具有普适性,它们最终被放到了一个正式的库中。 这似乎是事情的常见进展方式,至少根据我的经验是这样的:您在脚本中编写了一个满足当下使用需要的函数,然后使用它。...以上就是我作为数据科学家对可复用 Python 代码管理方法的概述。希望它们能对您有所帮助!

    60710

    如何阻止人们询问:“我们何时得到AI?”

    这只是一种花哨的说法,意思是“我们正在评估 AI 技术以进行采用”。然后,你会礼貌地趁他们弄明白你刚才说的话的时候溜出前面提到的门。 开始吧 很好。...如果你对每个问题都不能很好地回答(不要难过,几乎所有组织在至少一个领域都有所不足),那么你需要进行适当的数据清理——通过修复或删除任何不正确、不完整、不相关、重复或格式不当的数据来为分析准备数据。...API 定义了独立软件之间可能的交互,以便它们可以请求和返回或呈现服务——所有这些都无需一个软件了解另一个软件的任何信息。...为了利用 AI(特别是为了实现自动化和捕获效率等业务目标),你需要一种与其互动的方式,无论是数字的还是物理的。API 是如何打开舱门的方式。 4. 机器人也需要人 非常好!...现在你已经建立了一个优质的、对 AI 友好的数据质量和管理基础,为与现有系统的功能和服务进行必要的 AI 交互创建了 API,并且获得了一些生成式 AI 生态系统的实践经验,你已准备好 AI 上线的最后一步

    10910

    好消息:终于可以将Discord服务器组织到文件夹中

    好消息:终于可以将Discord服务器组织到文件夹中   我已经等了很久了。Discord今天宣布,您现在可以将服务器组织到文件夹中,最终为您提供一种对已加入的数十台服务器进行正确排序的方法。...以前,组织服务器的唯一方法是更改它们的显示顺序,如果您是十几个服务器中的一员,最终可能会变得很笨拙。 1.png   要创建一个文件夹,只需将要分组的服务器拖放在一起即可。...您可以对这些文件夹进行重命名或颜色编码,以便将与朋友共享的服务器放在一个文件夹中,并为您所订阅的流光播放另一个文件夹。此外,Discord允许您按文件夹消除通知,从而添加了一种更强大的管理通知方式。...以前,我不得不隐约地将相同类型的服务器分组到一个看上去似乎是无休止的长列的不同部分,并在我的脑海中画出它们之间的假想线。   ...您创建的文件夹将出现在台式机,移动设备和Web浏览器的各个平台上,因此使用起来非常方便。最新更新已经发布,因此您可以立即开始组织服务器。有需要云服务器优惠券需求,可以关注赵一八笔记。

    2.4K10

    独家 | 准确度VS速度——数据科学家能从搜索中学到什么?(附链接)

    现在,您必须从精确性的角度考虑模型的运行方式,转而考虑如何将它们作为一个组件安装到一个更大的系统中。 采取一种“缩小方法”,扪心自问:“我清楚了解最终目标了吗?我的模型得有多快?它们可扩展吗?”...作为数据科学家,我们正朝着一个非常接近和可以实现的未来努力,那时人们将以对话的方式与应用程序交互。这已经发生在我们作为消费者的体验中,但它也正开始全面应用到我们交互的所有数字应用程序中了。...我们已经看到了在处理提取口头或自由形式的文本,并用机器可以理解的方式翻译它们,以便用一个用户可以理解和操作的形式来产生查询并推出相关结果和建议的挑战上的巨大成功。...例如,当销售专业人员键入:“为我的西北地区提供我的管道”时,理解其意图可能意味着,如果需要外展,结果还包括联系信息,如果他/她正在准备报告,则总结过去的沟通,或者对你的西南地区进行并排比较,以便进行基准测试...大多数“独角兽”发现自己处于这三个领域的交叉点:算法知识、系统/架构知识和业务/通信技能。 搜索是一种教科书式的表示,它描述了这些东西是如何组合在一起的,以便使系统发出声音。

    50520

    什么是永续盘存系统?

    永续盘存是一种连续的会计惯例,可实时记录库存变化,而无需实物盘存,因此账簿库存可准确显示实际存货。仓库使用输入设备(例如销售点(POS)系统和扫描仪)记录永久库存。...永续盘存系统是一种程序,可以根据您的电子记录(而不是实物盘存)连续估算您的存货。该系统从物理计数的基线开始,并根据进货和出货量进行更新。...我建议您进行3D计数,在此您可以经常计算横截面,以便随着时间的推移考虑整个横截面。您可以考虑将其永久保留,但是它需要由软件驱动并遵循规则或进行更改。” 库存管理软件和流程允许实时更新库存数量。...永久库存可以通过以下方式为您节省金钱: 无需定期关闭设施以进行实物盘点, 扫描条形码中的数据可帮助您预测库存, 您可以对所有交易进行核算,从而对您的产品提供完全的责任。...如果商店已经装运了产品,则此扫描将更新库存中的数量。当客户购买其中一种产品时,数据库会在数量上少列出一种产品。 该系统取决于正确的库存控制程序,例如,系统需要确保员工迅速扫描任何新库存。

    1.6K20

    Java面试之基础及语法

    计数机软件按照其功能划分为系统软件与应用软件 * 什么是计数机语音 * 就是人与计算机之间进行信息交流沟通的一种特殊语音 **/ 1、面向对象的特征有哪些方面?...【基础】 答:栈是一种线形集合,其添加和删除元素的操作应在同一段完成,栈按照后进先出的方式进行处理;堆是栈的一个组成元素。 12、Math.round(11.5) 等于多少?...32、abstract 的method 是否可同时是static,是否可同时是native,是否可同时是synchronized? 【基础】 答:都不能。 33、静态变量和实例变量的区别?...,1 个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:如(“我ABC”,4)应该截为“我AB”,输入(“我ABC 汉DEF”,6)应该输出为“我ABC”而不是“我ABC+汉的半个”。...【中等难度】 答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一般来说,assertion 用于保证程序最基本、关键的正确性。

    46630

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

    我们的系统实际上是可观察的、经过良好测试的、可维护的。事故是健康系统的重要组成部分。因为我们希望我们的客户体验一个非常可靠的系统,他们可以以适合自己业务需求的方式进行交互。 让我们谈一谈事件。...一个非常明显的例子是新冠病毒,它不可能以一种全面的方式进行规划。作为一个组织,我们需要处理并充分利用它。...我想强调的是,这不仅仅是事件。您可以对组织的健康状况提出同样的论点,影响您交付功能的速度、代码的可维护性等等。...然后,这实际上与我在行为经济学中感兴趣的研究有关,比如说,与激励有关。我们是否在我们的环境和组织中建立了正确的激励机制?我们是否确保激励人们寻求帮助,激励他们与其他团队合作?...我觉得有点深。我认为,从我的角度来看,当激励措施以一种创造正确行为的方式建立起来,并且实际上让人们快乐并发展他们的事业时,激励措施最有效。

    31820

    从Java里认识汇编指令重排序

    例如,编译器可以将数据按照特定的格式进行排列,以便处理器可以更快地访问它们。 2....指令重排(Instruction Scheduling):编译器和处理器可以对指令进行重新排序,以优化程序的执行效率。...例如,编译器可以将一些指令的输入输出操作放在不同的寄存器中,以便处理器可以更快地访问它们。 这些重排方式都可以提高程序的性能和效率,但同时也需要注意保证程序的正确性。...这是因为`volatile`变量会在每个读取操作前都去缓存中查看是否有更新,而不是使用寄存器中的值,从而确保每个线程都能看到最新的值。...为了确保程序的正确性,我们需要理解并遵守JMM的规定,正确使用同步机制比如volatile关键字和synchronized关键字,避免使用可能引入竞争条件的算法。 ​

    41870

    使用Crossplane、K8s和门户实现驱动程序开发人员自助服务

    想想像 AWS 和 GCP 这样的云服务提供商能够向最终用户提供服务的方式,因为它们是围绕一个统一的控制平面设计的。...我可以查看我的控制平面是否已准备就绪,以及有关控制平面使用的配置、版本和 AWS 提供商的详细信息,以直接与我的 AWS 云帐户进行交互。...蓝图是一个完全可配置的数据对象,一个模式,您可以对其进行建模以适合您想要表示的资产。...EKS 集群请求 继续进行 EKS 集群请求。这是平台工程师跟踪他或她对资源的所有请求的一种方式。这可以修改为 Upbound 可以为您管理的任何类型的云资源,因此它不仅限于 EKS 集群。...记分卡 为了更进一步,我还配置了 EKS 集群蓝图上的几个记分卡。这使我能够创建一个 EKS 就绪仪表板,向我展示我的所有集群以及它们如何根据组织配置的标准执行。

    10710

    【数据湖架构】Hitchhiker的Azure Data Lake数据湖指南

    ADLS Gen2 何时是您数据湖的正确选择? 设计数据湖的关键考虑因素 术语 组织和管理数据湖中的数据 我想要集中式还是联合式数据湖实施? 如何组织我的数据?...如果您想优化以简化管理,特别是如果您采用集中式数据湖策略,这将是一个值得考虑的好模型。 多个存储帐户使您能够在不同帐户之间隔离数据,以便可以对它们应用不同的管理策略或单独管理它们的计费/成本逻辑。...进行分析处理需要 1000 个计算能力核心,请联系我们的产品组,以便我们可以计划适当地支持您的要求。...Parquet 是一种非常流行的数据格式,值得为您的大数据分析管道进行探索。 Apache Parquet 是一种开源文件格式,针对读取繁重的分析管道进行了优化。...,那么您将每隔一小时左右运行一次分析管道,以对来自特定传感器的数据与来自其他传感器的数据进行三角测量以确保它们正常工作。

    93120

    Matrix SQLiteLint -- SQLite 使用质量检测

    这种方式问题是: 事后发现,负面影响已经发生。 关注的只是没这么差。eg. 监控阈值为 500ms ,那么一条可优化为 20ms 而平均耗时只有 490ms 的 sql 就被忽略了。...b) 若使用 Android 默认的 DB 框架,SQLiteLint 提供了一种无侵入的获取到执行的sql语句及耗时等信息的方式。...所以对查询计划自动且正确的分析,不是一件容易的事。SQLiteLint 很大的功夫也在这件事情上 所以对查询计划自动且正确的分析,不是一件容易的事。SQLiteLint 很大的功夫也在这件事情上。...当前 SQLiteLint 的分析算法依然不足够严谨,还有很大的优化空间。 这里还有另一个思路去应对准确性的问题:对所有上报的问题,结合耗时、是否主线程、问题等级等信息,进行优先级排序。...而使用 without rowid 来建表: ? 数据树构建是以 name 为 key ,mark 为 data 的,并且是以普通 B-tree 的方式存储。

    2.9K20
    领券