Solid

【译】Jest 初学者教程:JavaScript 测试入门

我的梦境 提交于 2020-04-06 02:36:24
来源 | AlloyTeam 作者 | zhongzhong 地址 | http://www.alloyteam.com/2020/02/14255 转载 | 前端时空 测试的意义是什么? 在编程术语中,测试意味着检查我们的代码是否符合某些期望。例如:一个名为 transformer 的函数应在给定某些输入的情况下返回期望的输出。 测试类型很多,但简单来说测试分为三大类: 单元测试 集成测试 UI 测试 在本 Jest 教程中,我们将仅介绍单元测试,但是在本文结尾,您将找到其他类型的测试的资源。 Jest 教程:什么是 Jest Jest 是 JavaScript 测试运行程序,即用于创建,运行和构建测试的 JavaScript 库。 Jest 是作为 NPM 软件包分发的,您可以将其安装在任何 JavaScript 项目中。 Jest 是目前最受欢迎的测试运行程序之一(我觉得没有之一),也是 Create React App 的默认选择。 首先,我怎么知道要测试什么? 在测试方面,即使是简单的代码块也可能使新手懵逼。最常见的问题是 “我怎么知道要测试什么?”。如果你正在编写 Web 应用程序,那么一个好的切入点就是测试应用程序的每个页面以及每个用户的交互。但是, Web 应用程序也由功能和模块之类的代码单元组成,也需要进行测试。大多数情况下有两种情况: 你继承了未经测试的旧代码

天呐,一个简单的统一日志格式我踩了多少坑

大兔子大兔子 提交于 2020-04-05 21:55:40
天呐,一个简单的统一日志格式我踩了多少坑 这几天接到一个需求,是要求将 log4j 的配置文件统一封装到 jar 文件,同时这个 jar 依赖 skywalking 的相关包,从大的层面上来说,为了统一整个公司的日志输出格式,便利的接入 skywalking 和 elk 做准备。 我是怎么考虑的 全局格式统一,也就是说需要约束好 log4j2.xml 的文件位置 由于我们现有的日志文件位置是写死在 log4j2.xml 的 ,现在并不想调整该文件的内容,但是每个应用的日志应该在单独的文件夹下,所以需要在xml配置文件中配置一个变量用来设置应用名称。 不同的环境对代码中日志的输出级别不同 例如在开发环境中,我们需要对 sql 日志进行输出,但是在生产环境中,由于性能和日志量的问题,并不会输出 sql 的日志信息。 配置要简单 配置是需要有学习成本的,最好能够不需要单独的配置就能够完成日志的统一 兼容 读取配置文件的方式要兼容,例如项目中可能存在配置文件为 yml 、 properties ,而且命名方式可能千奇百怪,应该对各个应用做最大程度上的兼容 文档 提供一定程度的文档,指导能够个性化配置一些内容 研究相关技术 log4j2 SpringBoot Logging SpringBoot 生命周期 整个开发的主要做法 如何读取配置文件内容 熟悉 Spring 的朋友应该知道,

css 字体样式设置大全

杀马特。学长 韩版系。学妹 提交于 2020-04-05 20:04:31
css样式大全(整理版) 字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD 样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常) 行高 {line-height: normal;}(正常) 单位:PX、PD、EM 粗细 {font-weight: bold;}(粗体) lighter;(细体) normal;(正常) 变体 {font-variant: small-caps;}(小型大写字母) normal;(正常) 大小写 {text-transform: capitalize;}(首字母大写) uppercase;(大写) lowercase;(小写) none;(无) 修饰 {text-decoration: underline;}(下划线) overline;(上划线) line-through;(删除线) blink;(闪烁) 常用字体: (font-family) "Courier New", Courier, monospace, "Times New Roman", Times, serif, Arial, Helvetica, sans-serif, Verdana 背景属性:

软件设计必备之“SOLID原则”

本小妞迷上赌 提交于 2020-04-05 19:07:48
原创 未知bug 最后一个bug 2月21日 01SOLID原则简介 在我们的软件设计和维护的过程中总需要不断的更改我们代码或者必要的时候还需要修改我们的设计,更别说领导要别的工程师来维护代码的囧境了,那么工程师之间一定要有一套设计的原则来维系一套优秀的代码。那么"SOLID原则"将派上用场,与其说它是原则还不说是一种理想的目标吧!因为基本上很难有代码能够全面的满足它。 "SOLID"其实是5种软件设计原则名称得首字母,他们分别是: “Single Responsibility Principle”; "Open Closed Principle"; "Liskov Substitution Principle "; "Interface Segregation Principle"; "Dependency Inversion Principle"。 根据英文单词大体的意思分别是:单一职责原则,开闭原则,Liskov替换原则,接口分离原则,依赖原则。这样看来确实有必要,单一职责就是模块的封装,替换原则应该就是灵活性,接口便是可移植性等等,我这里只是简单的理解下,后面再对每个原则详细聊一聊。 02单一职责原则 从字面上的意思很好理解,也就是我们的数据和函数功能上的单一。这样一方面便于模块化,也能让模块变得更加内聚! 比如说收银员负责收钱就好,服务员负责为客人服务

详解时间、空间复杂度(内含彩蛋~~)

拥有回忆 提交于 2020-04-05 16:58:02
目录 一、时间复杂度:执行算法所需要的计算工作量 (一)时间复杂度的理解 1.时间频度定义 2.(渐进)时间复杂度定义 (二)时间复杂度的计算 计算攻略: 常见的算法时间复杂度由小到大排序: 大O表示法推导实例: 1.常数阶 ⇒ O(1) 2.线性阶 ⇒ O(n) 3.平方阶 ⇒ O(n2) 二、 空间复杂度:执行这个算法所需要的内存空间 三、彩蛋 学习算法我们首先需要清楚的概念就是时间复杂度和空间复杂度 接下来我们就详细讲解一下时间复杂度和空间复杂度,为大家后面的学习打好基础! 算法入门书籍挑选点这里~ 帮你快速找到适合自己的算法书籍(详细,内含彩蛋哦~) 一、时间复杂度:执行算法所需要的计算工作量 (一)时间复杂度的理解 1.时间频度定义 我们需先明白: 一个 算法花费的时间 是与 算法中语句的执行次数 成 正比 的 (也就是说一个算法中语句执行次数越多,花费的时间也就越多) 时间频度:T(n): 一个算法中的语句执行次数,记为T(n) 2.(渐进)时间复杂度定义 T(n): 算法中基本操作重复执行的次数是问题规模n的某个函数。 f(n): 某个辅助函数 算法的(渐进)时间复杂度O(f(n)): 若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。 记作T(n)=O(f(n)),称O(f(n))

面试刷题13:接口和抽象类有啥区别?

纵然是瞬间 提交于 2020-03-26 12:41:43
3 月,跳不动了?>>> <br /> <br /> <br /> 掌握面向对象的原则可以提高开发,沟通的效率和质量。<br /> <br /> <br /> 我是李福春,我在准备面试,今天的问题是:<br /> <br /> 接口和抽象类有什么区别?<br /> <br /> <br />接口和抽象类是面向对象语言的重要设计元素。<br /> <br />区别如下:<br /> <br /> <br />下面扩展一下,面试官可能延伸的问题。<br /> <br /> <br /> <br /> 面向对象的特性 <br /> <br />封装: 一切皆对象,对象具备成员和方法,封装了内部细节,使得具备边界,提高程序的安全性和简洁性;<br /> <br />继承:代码复用的手段,是一种强耦合关系,但是只能单继承,应该避免过度使用继承<br /> <br />多态:通过抽象类和接口都可以实现多态,在不同的实现类或者子类中,行文定义有不同的实现形态。<br /> <br /> <br /> 重写和重载 <br />重写是方法签名一致<br /> <br />重载是方法名称一致,返回值一致,而参数列表不一致。<br /> <br /> <br /> SOLID设计模式原则 <br /> <br />在做软件研发的过程中,如何写出高质量的代码,借鉴设计模式的几个原则作为检查依据很有必要。

设计原则之依赖倒置原则(DIP)

只谈情不闲聊 提交于 2020-03-26 00:27:07
3 月,跳不动了?>>> 简介 依赖倒置原则是系统解耦的重要原则,遵循它可以让我们的系统更加健壮。 定义 依赖倒置原则(Dependency Inversion Principle)是 Robert C. Martin 提出的,原则声明了两个方面: 上层模块不应该依赖下层模块,双方都应依赖于抽象。 抽象不应依赖实现,实现应该依赖抽象。 依赖倒置原则的声明中有几个概念:上层、下层,抽象、实现。 上层、下层是一类概念,在计算机的设计中,分层是常见的任务分解方法,每一层都使用下层提供的功能,又为更上层提供自己的功能。依赖倒置原则要求在设计层间通信、交互标准时,不应依赖于某个下层,而是应该依赖于抽象,这样上下层之间就没有强耦合,如果两个实现都遵循了同样的抽象,则可以在上层无感知的情况下替换下层实现。 抽象、实现是一类概念,抽象是对同一类任务本质属性的表达,实现则是具体每一类任务的细节的表达。依赖倒置原则说明实现应该依赖于抽象,是因为实现是对抽象骨架的填充,而抽象不应依赖于实现,是因为抽象是对本质的归纳,应去掉细节的干扰。 看了上面的规则,还需要问一下依赖倒置原则倒置了什么呢? 从字面看依赖倒置当然是倒置了依赖,但核心是控制权的反转。我们从下面的例子来解释。 实践 需求要求实现一个排序系统,系统需要实现各种排序算法,使用方可以根据需要调用不同的排序算法来对自己的数据进行排序。 设计的接口如下

AdversarialNetsPapers: The classical Papers about adversarial nets

笑着哭i 提交于 2020-03-25 09:09:31
3 月,跳不动了?>>> AdversarialNetsPapers The classical Papers about adversarial nets The First paper ✅ [Generative Adversarial Nets] [Paper] [Code] (the first paper about it) Unclassified ✅ [Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks] [Paper] [Code] ✅ [Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks] [Paper] [Code] (Gan with convolutional networks) ✅ [Adversarial Autoencoders] [Paper] [Code] ✅ [Generating Images with Perceptual Similarity Metrics based on Deep Networks] [Paper] ✅ [Generating images with recurrent

用CSS绘制梯形

半城伤御伤魂 提交于 2020-03-25 08:41:26
倒直角梯形   .mask1 { height: 0; width: 100px; border-top: 100px solid red; border-right: 37px solid transparent; } 效果如下: 等腰梯形 .mask2 { width:100px; height:0; border-width:0 37px 100px 37px; border-style:none solid solid; border-color:transparent transparent red; } 效果如下: 倒等腰梯形 .mask3 { width:100px; height:0; border-top: 100px solid red; border-right: 37px solid transparent; border-left:37px solid transparent; } 效果如下: 倒直角梯形2 .mask4 { width:100px; height:0; border-top:100px solid red; border-left:37px solid transparent; } 来源: https://www.cnblogs.com/hyql/p/4876933.html

运维利器万能的 strace

十年热恋 提交于 2020-03-24 07:33:41
3 月,跳不动了?>>> strace是什么? 按照strace官网的描述, strace是一个可用于诊断、调试和教学的 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 strace底层使用内核的ptrace特性来实现其功能。 在运维的日常工作中,故障处理和问题诊断是个主要的内容,也是必备的技能。strace作为一种动态跟踪工具,能够帮助运维高效地定位进程和服务故障。它像是一个侦探,通过系统调用的蛛丝马迹,告诉你异常的真相。 strace能做什么? 运维工程师都是实践派的人,我们还是先来个例子吧。 我们从别的机器copy了个叫做some_server的软件包过来,开发说直接启动就行,啥都不用改。可是尝试启动时却报错,根本起不来! 启动命令: 1 . / some _ server . . / conf / some_server . conf 输出: 1 2 FATAL : InitLogFile failed iRet : - 1 ! Init error : - 1655 为什么起不来呢?从日志看,似乎是初始化日志文件失败,真相到底怎样呢?我们用strace来看看。 1 strace - tt - f . / some _ server . . / conf / some_server . conf 输出: