摘要: 1.7.1 浮点记数法 以8个位长度的位模式来演示浮点数的表示: 最高位为符号位,符号位右边3位为指数域,最后4位为尾数域 1. 浮点数解码 例如:0 110 1011 对这个8位模式来表示的浮点数进行十进制的解码。第一位是0,说明这个数是个非负数 先在最后四位的前面加一个小数点为: .1011 再 阅读全文
posted @ 2018-10-31 00:49 MysticGrrrr 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 数学家长久以来对数字记数系统很感兴趣,计算机中常用的两种整数的记数系统为二进制补码记数法和余码记数法。都基于二进制,但特性不同。 1.6.1 二进制补码记数法 现今系统中二进制补码记数法用的很普遍,其中每个数值用一个32位的模式表示。位模式中最左端的位为符号位,0代表非负数,1代表负数 32模式可以 阅读全文
posted @ 2018-10-30 18:02 MysticGrrrr 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 1.5.1 二进制记数法 无论哪个进制,每一个位置的表示都与一个量值有关。 十进制,最右边位置的量值是1,向左一位量值是10,再次向左一位量值是100,每个位置的量值都是其右边位置量值的10倍。例如: 375 就等于 3× 100 + 7 × 10 + 5 × 1 更技术性的表示法为:3×10^2 阅读全文
posted @ 2018-10-30 14:31 MysticGrrrr 阅读(794) 评论(0) 推荐(0) 编辑
摘要: 1.4.1 文本表示 符号编码 ASCII码 大小写英文字母和标点都有唯一的一个位模式来表示。最初,一个字符用长度为7的位模式来表示,后来扩展到8位 在最高位补0。这样,8位的位模式与字节型储存单元的长度相匹配,而且还附加了128个位模式(最高位赋值1) ASCII码表示英文字母虽已足够,但表示非拉 阅读全文
posted @ 2018-10-29 22:54 MysticGrrrr 阅读(1153) 评论(0) 推荐(0) 编辑
摘要: 1.2.1 存储器结构 主存储器以8个位,也就是1个字节为一个存储单元。 计算机中没有左右的概念,为了方便描述,人为的将存储单元中的位看成是排列成一排的。以一个存储单元来看,8个位排成一排,最左边的称为高位端,对应着这个存储单元中所存数值的最高有效位,最右边的称为低位端, 对应着这个存储单元中所存数 阅读全文
posted @ 2018-10-24 00:23 MysticGrrrr 阅读(555) 评论(0) 推荐(0) 编辑
摘要: 1.1.1 布尔运算 在计算机中数据以0,1表示,称之为位。 位代表的是符号,而非数值。因为除了数字以外,字符、声音、图像等也都是以位来表示的。位代表什么,要结合数据的上下文环境 处理真假值的运算称之为布尔运算,布尔运算有三个基本运算:与AND、或OR、异或XOR。它们与加减乘除运算一样,属于两目运 阅读全文
posted @ 2018-10-23 00:10 MysticGrrrr 阅读(988) 评论(0) 推荐(0) 编辑
摘要: 此分类不再更新 阅读全文
posted @ 2018-10-22 22:33 MysticGrrrr 阅读(2431) 评论(1) 推荐(1) 编辑
摘要: 首先,阻塞这个词来自操作系统的线程/进程的状态模型中,如下图 : 一个线程/进程经历的5个状态,创建,就绪,运行,阻塞,终止。各个状态的转换条件如上图,其中有个阻塞状态,就是说当线程中调用某个函数,需要IO请求,或者暂时得不到竞争资源的,操作系统会把该线程阻塞起来,避免浪费CPU资源,等到得到了资源 阅读全文
posted @ 2018-09-21 22:48 MysticGrrrr 阅读(347) 评论(0) 推荐(1) 编辑
摘要: 转自:https://newt0n.github.io/2017/02/10/PHP-%E5%8D%8F%E7%A8%8B%E5%8E%9F%E7%90%86/ 实现 PHP 协程需要了解的基本内容。 多进程/线程 最早的服务器端程序都是通过多进程、多线程来解决并发IO的问题。进程模型出现的最早,从 阅读全文
posted @ 2018-09-01 00:36 MysticGrrrr 阅读(896) 评论(0) 推荐(0) 编辑
摘要: 原文:http://wiki.phpboy.net/doku.php?id=2017-07:55-异步_并发_协程原理.md Linux 操作系统在设计上将虚拟空间划分为用户空间和内核空间,两者做了隔离是相互独立的,用户空间给应用程序使用,内核空间给内核使用。 一、异步 应用程序和内核 内核具有最高 阅读全文
posted @ 2018-09-01 00:34 MysticGrrrr 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 在本章中,我们研究了可称为典型PHP代码的内容。 在此代码中,我们检测到难以测试的依赖项。 有几种不同的方法可以解决这个问题,但最好的方法是编写干净的代码,代码可以在必要时轻松扩展或重构。 在我们的例子中,我们采用了重构方法,将代码分成两个类。 我们将User测试为一个拥有单元测试核心功能的实体。 阅读全文
posted @ 2018-08-08 15:07 MysticGrrrr 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 执行代码时错误是常见的。 有时候是需要它们的,有时候是不需要他们的。处理意外或不需要的情况的更好方法是使用异常。 理由是你可以通过将代码包装到try-catch语句中然后选择处理什么的方式从异常中恢复代码执行,不是让它死掉。 在编写测试时,您甚至想要测试这些场景,是的,这是可能的。 1.测试错误和异 阅读全文
posted @ 2018-08-08 14:50 MysticGrrrr 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 在我们的例子中,解决依赖性问题的最干净方法是将User类与数据库访问和Mail类用法分开。 逻辑是User类是一个实体,但是我们将有第二个UserManager类,它允许我们在数据库中持久存储(存储)User类的对象。 要测试User类,我们将使用单元测试,并测试UserManager,我们将使用集 阅读全文
posted @ 2018-08-08 13:25 MysticGrrrr 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 令人惊讶的是,这很容易。 记住单元测试的一个黄金法则:隔离。 在程序中,如果另一个函数被调用或另一个类时,则含有它的代码不被隔离。 这可能导致测试方法或功能之外的测试失败。 因此,它不能被视为单元测试。 使用诸如文件系统,数据库和网络之类的资源也是如此。 结果可能会受到这些资源的影响,从而导致代码不 阅读全文
posted @ 2018-08-08 12:09 MysticGrrrr 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 在本章中,您将看到编写PHPUnit测试时遇到的最大问题之一是依赖项。 您可能想知道依赖关系的含义。 显然,代码需要与其他代码交互,您需要知道它的工作原理。 是的,这是事实,但是通过单元测试,您正在尝试验证尽可能小的代码是否按预期工作,并确保没有其他任何东西破坏经过测试的代码,您需要隔离代码。 代码 阅读全文
posted @ 2018-08-08 11:43 MysticGrrrr 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 本章简要介绍了单元测试,但学习如何游泳的最佳方法是跳入水中。 这就是为什么我们不仅仅考虑了几个PHPUnit测试。 理解单元测试部分对于理解为什么要编写测试,如何编写好的测试以及有哪些限制非常重要。 基本的PHPUnit测试结构之后是一个如何测试函数以及如何测试类及其方法的示例. 但在开始测试之前, 阅读全文
posted @ 2018-08-08 02:27 MysticGrrrr 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 在查看如何测试单个功能之后,您可能会问,整个Web应用程序如何? 如前所述,有以下级别的测试: 单元测试 集成测试 功能测试 在开始编写测试时考虑这一点很重要。 可能还有其他类型的测试,但现在让我们关注这三种测试。 在谈论Web应用程序时,您将需要所有这些测试,但不同的测试有不同的应用场景。 您可能 阅读全文
posted @ 2018-08-08 02:24 MysticGrrrr 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 现在,让我们仔细看看测试结构的样子。 让我们从一个简单的测试用例开始,它将显示基本的PHPUnit测试结构。 以下代码片段是测试用于排序数组的两个PHP函数的一个非常基本的示例:asort()用于对数组进行排序并维护索引,而ksort()用于按键对数组进行排序。 首先,我们有一系列蔬菜,其中名称是关 阅读全文
posted @ 2018-08-08 00:59 MysticGrrrr 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 在查看代码之前,最好提一下编写单元测试和使用单元测试的一些基本信息和规则。 记住这些基本规则并理解单元测试的重点非常重要。 单元测试不仅仅是一个很好的功能,而且是任何正规软件项目中绝对必要的部分。 1.什么是单元测试 一个简单的问题,什么是单元测试? 单元测试是在已知的上下文中使用已知的输入去执行另 阅读全文
posted @ 2018-08-07 00:53 MysticGrrrr 阅读(137) 评论(0) 推荐(0) 编辑
摘要: (第一、二章主要讲了如何安装PHPUnit以及配置,因此跳过了前两章,直接从第三章开始) 前两章,我们安装了PHPUnit并且设置了IDE,使得IDE可以编写和运行测试。现在让我们在单元测试的泳池中尽情的畅游。有很多关于单元测试的理论文章,测试驱动开发、行为驱动开发、以及许多更聪明的方法。但是作为开 阅读全文
posted @ 2018-08-07 00:32 MysticGrrrr 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 一、知易行难——设计模式应用的问题 “形而下者谓之器,形而上者谓之道”。 有很多人熟读且牢记每一个模式的内容,但到真实项目中时却总感觉到无从下手去实践设计模式,不知道什么情况下应该用,不知道为什么要这样用。这种情况说明,很多人只是掌握了设计模式的器,并未掌握设计模式的道。设计模式的器,只是告诉了我们 阅读全文
posted @ 2018-08-01 12:05 MysticGrrrr 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 设计模式是重复发生的问题的解决方案。 一个模式一般包含如下几部分: 名称:隐含了模式要解决的问题、方案、效果等 问题:描述了模式的应用场景。准确的理解模式对应的问题,是理解模式的关键,也是实践中应用模式的关键 解决方案:描述模式如何解决问题。模式提供的解决方案不是针对某个具体的问题,也不是具体的设计 阅读全文
posted @ 2018-08-01 12:02 MysticGrrrr 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 设计原则指导了类的设计,设计模式则指导的是类的行为的设计。 当我们设计类时使用设计原则作为标尺来衡量我们设计的类是否合理。那么这5个原则的应用场景是什么?什么时候使用? 1.SPR原则:用于类的设计 当我们设计出一个类或类的原型,使用SPR原则来核对类的设计是否符合SPR要求 2.OCP原则:总的指 阅读全文
posted @ 2018-08-01 02:52 MysticGrrrr 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 首先看定义: 1.高层模块不依赖于低层模块,两者都应该依赖于抽象层 2.抽象不能依赖于细节,细节必须依赖于抽象 首先,模块是个抽象的概念,可以大到一个系统中的子系统作为一个模块,也可以是某个子系统中的组件,也可以是某个组件中的某个类。都可以称为模块。 先看第一条: 高层依赖于低层模块:是指高层模块需 阅读全文
posted @ 2018-08-01 02:34 MysticGrrrr 阅读(225) 评论(0) 推荐(0) 编辑
摘要: ISP应用的场景是某些类不符合SRP原则,但使用这些类的客户端应该根据它们的父类来使用(我感觉这句话应该改为:客户端应该根据它们的抽象类\接口来使用它们),而不是直接使用它们。 定义: 客户端不应该依赖它不需要的接口 类间的依赖关系应该建立在最小的接口上 我们可以把这两个定义概括为一句话:建立单一接 阅读全文
posted @ 2018-03-28 00:24 MysticGrrrr 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 子类的对象提供了父类的所有行为,且加上子类额外的一些东西(可以是功能,可以是属性)。当程序基于父类实现时,如果将子类替换父类而程序不需修改,则说明符合LSP原则。 这个解释看的似懂非懂,再看下面更进一步的解释: 函数使用指向父类的指针或引用时,必须能够在不知道子类类型的情况下使用子类的对象。 子类必 阅读全文
posted @ 2018-03-27 22:49 MysticGrrrr 阅读(310) 评论(0) 推荐(0) 编辑
摘要: OCP原则:“对扩展开放,对修改关闭” 这句话是简述,其实隐藏了重要的主语。真正的意义是:对使用者修改关闭,对提供者扩展开放。 例如: class A 和 class B。A调用了B的一个方法,那么A就是consumer,也就是使用者。B就是provider,提供者。对使用者修改关闭是指业务逻辑上有 阅读全文
posted @ 2018-03-21 21:47 MysticGrrrr 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 1.一个类具有什么职责,应该是站在他人的角度或者说是使用者的角度来定义。职责不是一件事,而是许多和职责相关的事组成的。 例如:一个快递员,除了送快递,还需要做分包、收款。那么快递员的职责是和快递相关的一系列的事。快递员不能说我还可以有做饭。作为快递员的使用者,只希望你能处理好他的快递,并不会希望你还 阅读全文
posted @ 2018-03-21 21:35 MysticGrrrr 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 1.为什么高内聚低耦合? 为了降低复杂度。如何去降低?首先看低内聚,高耦合是什么样的。 1.低内聚 一个低内聚的模块,会存在一些职责之间没有关联的方法。它内部的每个职责都会有对应的使用者模块。当这个模块内部某个职责发生改变的时候,其他与这个职责不相关的使用者模块因为也依赖于它,因此也就需要重新测试来 阅读全文
posted @ 2018-03-06 23:12 MysticGrrrr 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 1.耦合的定义 模块之间互相依赖的程度。 耦合和内聚的区别:耦合关注的是模块间的依赖程度;内聚关注的是模块内部元素的结合程度。 2.耦合的分类 无耦合:模块间完全没有关系和交互。无耦合的模块意味着所有的功能都是自给自足,什么都得自己做。如果是非常底层的模块,还可以接受,但是非底层模块如果完全无耦合, 阅读全文
posted @ 2018-03-06 22:39 MysticGrrrr 阅读(893) 评论(0) 推荐(0) 编辑