- 分类
- Coding
编程开发与计算机科学
Python 官方文档提供了一个使用 asyncio 创建 UDP Echo Server 的示例,代码如下:
……
网上关于 asyncio 实现异步 https 请求的代码几乎都是基于Python 第三方库 aiohttp 的,而我仅需要一个无第三方依赖的、能一键运行的简单 Python 脚本。翻了翻官方文档,也没有什么值得参考的 sample 代码。无奈只能自己动手撸一个。
以下示例代码的作用是,请求百度首页,并将响应打印出来。支持 Python 3.7 及以上的版本。
……
在前文《为何 Windows 下无法用 Ctrl+C 终止 Python 进程》中,虽然解释了产生该现象的原因,但却没有解释为何同样的代码在 Linux 下就可以用 Ctrl+C 来中止。究其原因,是由于在操作系统层面,Linux 和 Windows 对 SIGINT 的信号处理方式不同所导致的。
……
在前文《为何 Windows 下无法用 Ctrl+C 终止 Python 进程》中,讲解了 Python 信号处理的基本原理。当时为了撰写文章而编写了一些测试代码,在运行某例测试代码时,发生了奇怪的 reentrant call 运行时错误。代码如下:
……
在 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 前,先来了解一下虚拟机运行通用操作系统有哪些痛点。
……