Category: Software Architecture

0

[转]如何编写优美的测试

精心设计的测试是必不可少的,这也是一个工程师经验丰富的标志之一。编撰良好的测试可以充分地记录代码,使读者更容易地投入并熟悉代码。本文中,作者以其参与 Crate.io 项目的亲身经历为例,为读者介绍了为什么要进行彻底的测试,并介绍了测试中常用的测试方法以及由内而外的策略。此外,还详细阐述了具有交互能力的代码的重要性。

[转]Redis是如何写代码注释的?

[转]Redis是如何写代码注释的?

许多人认为,如果代码写得足够扎实,注释就没什么用了。在他们看来,当一切都设计妥当时,代码本身会记录其作用,因此代码注释是多余的。我对此持不同意见,主要出于两个原因: 1. 许多注释并未起到解释代码的作用。 2. 注释使读者不必凭空想象太多细枝末节,帮助读者降低认知负担。 注释的分类 我的工作始于随机地阅读Redis源代码,以检查注释是否以及为什么在不同的上下文中起作用。我很快发现,注释的作用来源于多方面:它们在功能,编程风格,长度和更新频率方面往往非常不同。我最终转向了注释分类。

0

[转]时间复杂度、空间复杂度,如何”不复杂“地学?

1. 写在之前 我们都知道,对于同一个问题来说,可以有多种解决问题的算法。尽管算法不是唯一的,但是对于问题本身来说相对好的算法还是存在的,这里可能有人会问区分好坏的标准是什么?这个要从「时效」和「存储」两方面来看。 人总是贪婪的,在做一件事的时候,我们总是期望着可以付出最少的时间、精力或者金钱来获得最大的回报,这个类比到算法上也同样适用,那就是花最少的时间和最少的存储做成最棒的解决办法,所以好的算法应该具备时效高和存储低的特点。 这里的「时效」是指时间效率,也就是算法的执行时间,对于同一个问题的多种不同解决算法,执行时间越短的算法效率越高,越长的效率越低;「存储」是指算法在执行的时候需要的存储空间,主要是指算法程序运行的时候所占用的内存空间。

0

区块链扫盲

一篇文章快速理解区块链技术原理 区块链面试招聘中可能会被问到的40个问题 TPS百万级的超级区块链架构解析 | 迅雷链来鑫 深入Blockchain:区块链安全应用落地实践 如何解决区块链的硬伤:对时间的感知 如何十分钟搭建你的区块链概念验证环境? 一个程序员眼中的区块链技术  

[转]开源社区该面对现实了! 0

[转]开源社区该面对现实了!

跟许多开源开发者一样,我也一直在围观Redis通用条款授权的评论(https://news.ycombinator.com/item?id=17814386)。其主旨是,由RedisLabs开发的特定企业级模块上的工作成果将采用Apache 2.0和通用条款授权(Common Clause license,简单来说就是个新的授权方式),这种授权方式将禁止主机提供商、云服务提供商以及其他直接从中获益的软件开发商免费使用redis。Redis以后还是主要在RedisLabs的赞助下进行开发,并采用更自由的BSD-3-Clause授权。 最初似乎产生了“Redis要采用新授权”的误解,不过后来Salvatore(antirez)辟谣了。

[转]DAG、Workflow 系统设计、Airflow 与开源的那些事儿 0

[转]DAG、Workflow 系统设计、Airflow 与开源的那些事儿

DAG (Directed Acyclic Graph) 是一个非常有用、也有很有意思的数据结构。如果说数组、链表、二叉树这类数据结构是学习中的基础,那么 DAG 绝对算得上工作中常常会听到、用到的实践知识。工作中两个 SDE 讨论技术问题,DAG 和 Array/Linkedlist/Tree 算的上是同一级的词汇、知识,默认彼此都懂。 下面我们详细讲讲原因:有向无环图 (DAG),结合拓扑排序(topolocial sort)的确是解决存在依赖关系的一类问题的利器。

0

[转]TOP 48面试最常见算法问题

很多计算机科学专业毕业生和程序员都会去 Uber、今日头条这样的独角兽公司,或者亚马逊、微软和谷歌这样的科技巨头申请编程和软件开发职位。你在申请这些工作时,肯定很想知道面试官会问到哪些问题。 在本文中,作者会分享一些常见的编程面试问题,这些问题来自于针对不同经验层次的程序员的面试——从应届毕业生到具有一两年经验的程序员。 英文版:  https://www.java67.com/2018/05/top-75-programming-interview-questions-answers.html

0

[转]小心踩雷!一个小小的正则表达式竟把CPU拖垮

前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%。 通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。 我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法,这样的报错信息在堆栈中一共超过 100 处。 通过排查代码,我们知道这个方法的主要功能是校验 URL 是否合法。很奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。

[转]MVC, MVP, MVVM 0

[转]MVC, MVP, MVVM

前言: 准备写这篇文章的时候 , 我自认为对MVC已经有深刻理解了,可是画图的时候发现,理解还是有漏洞,于是又阅读,思考,整理,加深了理解, 写了这篇文章, 估计还有漏洞,欢迎讨论。 这再一次说明了写作的好处: 很多时候自以为理解了,实际上脑海中有很多想当然的假设,写作会把这些假设给暴露出来。