- 分类
- Coding
编程开发与计算机科学
在 Windows 命令行中按下 Ctrl+C
或者 Ctrl+Break
可以结束当前正在执行的命令。通常情况下,这个方法同样适用于 Python 的控制台进程。特别地,Python 内置了一个 KeyboardInterrupt
异常专门用于捕获按下 Ctrl+C
而触发的程序退出:
……
四只鸭子在一个圆形水池中随机游动。某一时刻,四只鸭子在同一半圆内的概率是多少?
这个问题必须隐含一个前提:当水池被分为两半后,任意一只鸭子,要么属于这一边,要么属于另一边,不存在同时属于两边或不属于任何一边的情况。可以把鸭子视作质点,如果鸭子正好落在分割线上,则认为此鸭子属于顺时针方向的一侧。
……
一张经常被使用的关系图
JavaScript 中的每个对象都有一个 [[Prototype]]
的内部属性,该属性指向的对象就是当前对象的原型。每个原型对象也有自己的原型,依次向上遍历形成原型链。当我们访问一个对象的属性或者方法时,如果在当前对象中没有找到该属性或者方法,会通过原型链依次从原型对象中查找,从而实现对象继承的功能。我们可以通过 __proto__
属性或者 Object.getPrototypeOf()
/ Object.setPrototypeOf()
方法来访问对象的原型:
……
单元测试用来验证一个单元(模块、函数或类)的工作是否正常,测试过程通常需要其他单元进行配合。这种情况下,我们引入测试替身(Test doubles)来替代测试单元的外部依赖,使得测试单元能够顺利运行。这些测试替身分为五种,分别是:
……
MRO,即 Method Resolution Order、方法解析顺序,是 Python 对象调用父类方法时的遍历顺序。由于 Python 支持多重继承,类的继承关系可视作一个有向无环图,方法解析顺序就相当于拓扑排序——将图中节点线性排列。自 Python 2.3 起,新式类通过 C3 线性化算法来计算 MRO。
之所以被称作 C3,是因为算法符合如下三个特性(Consistent with 3 properties):
……
Unikernel,中文一般翻译为单一内核。是专门为了运行在虚拟机上而打造的系统。维基百科上的解释是:
A unikernel is a specialised, single address space machine image constructed by using library operating systems. A developer selects, from a modular stack, the minimal set of libraries which correspond to the OS constructs required for the application to run. These libraries are then compiled with the application and configuration code to build sealed, fixed-purpose images (unikernels) which run directly on a hypervisor or hardware without an intervening OS such as Linux or Windows.
在解释什么是 Unikernel 前,先来了解一下虚拟机运行通用操作系统有哪些痛点。
……
一直很反感那些花里胡哨的博客模板,所以为这个网站选择了一套非常简约的主题,并在此基础上简单地修改。主要是将默认的衬线字体改成了非衬线字体,增加了顶部的导航栏等。
主题默认的章节目录和正文是顺序堆叠(stacklayout)的。然而,在实际使用过程中发现,当文章内容很长时,如果没有章节目录导航的话,阅读体验相当不好,特别是在触屏移动设备上,体验更加不堪。因此,决定给文章页加上章节目录导航。
……
一个使用 Laravel 框架的项目,在某次更新生产环境代码后报了奇怪的错误。而代码在开发环境和测试环境运行都是正常的。由于无法接触到生产环境,只能通过 PHP 引擎的源代码来猜测导致错误的原因
ES8(ES2017)引入了 async
函数和 await
关键字。await
关键字可用于 async
修饰的异步函数或者一个 Promise
对象,而异步函数本质上也就是一个返回 Promise
对象的语法糖。
ES9(ES2018) 引入了新的 for await...of
语句,可用来遍历异步可迭代对象。异步可迭代对象通过 Symbol.asyncIterator
符号来指定默认的异步迭代器,如果一个对象设置了这个属性,它就是异步可迭代对象。和同步迭代器一样,异步迭代器同样包含一个 next()
方法,该方法返回一个对象,包含 done
和 value
两个属性,前者表示循环是否结束,后者是当前循环的返回值。
……
PHP Trait 只能定义成员变量和方法,不能定义常量。如下代码会报错:
php// test.php
trait UsageTrait
{
const THE_CONST_NAME = 1;
}
错误消息为:
Fatal error: Traits cannot have constants in test.php
想要在不同的类中共用一组常量,可以通过接口来解决:
……