- 分类
- Coding
编程开发与计算机科学
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想要在不同的类中共用一组常量,可以通过接口来解决:
……
这里先给出小众的定义:以 TIOBE Index for October 2021 为标准,排名在 20 位以后的编程语言。其中排名前 20 的编程语言为:
……
最近,微软宣布所有用户现可从其帐户中完全删除密码。用户可以通过在手机上安装 Microsoft Authenticator 应用来接收验证码进行登录。详见《微软账户进入无密码时代,现可将你的密码彻底删除》:
微软副总裁 Vasu Jakkal 表示,“近年来,我们一直都在强调无密码机制的重要性。今天我在这里很高兴地向大家宣布,这项愿景终于有了实质性进展。从今天开始,您可以将你微软账户中的密码彻底删除。”
对于这么做的原因,微软表示单纯的密码机制已经成为了安全系统的软肋,每年仅仅因为这个原因发生的相关攻击就多达 180 亿次,约每秒 579 次。
不过各位小伙伴还请不要以为微软取消密码就没有安全保护机制了,因为在迈入无密码时代之前你还需要在自己的手机上安装一个 Microsoft Authenticator 应用(如果您愿意,您可以随时为帐户重新添加密码),之后根据实际使用位置的不同,通过 Windows Hello、安全密钥,或者是通过邮件、手机或其他应用以及服务(包括 Outlook、OneDrive、Microsoft 家庭安全等)接收到的验证码进行登录。
……
近几年经常被提起的无锁队列,似乎被视为解决高并发的万能良药。无锁队列是一种通过CPU提供的原子操作指令 CAS 和 FAA,以及循环重试,来实现的乐观并发控制算法。虽然无锁队列算法并未显式调用锁,但事实上,在多核环境下,所谓的无锁队列算法本质上就是实现了锁的功能。
首先,原子指令本身就是一种带锁的操作,只是锁的颗粒度较小而已。单核 CPU 系统的情况比较简单,因为单条指令操作总是原子的;而 SMP 的情况就比较复杂了,需要使用缓存一致性(Cache Coherence)的机制来确保操作的原子地执行。
早期 CPU 不支持原生的 CMPXCHG 指令,要实现 CAS 原子操作,必须先用 LOCK 指令锁住总线或需要访问的内存块。
……
从中文字面上还是挺难区分「并行」和「并发」的,两者都带着一个「并」,似乎是个同义词。而在计算机科学中,「并行」和「并发」完全是两个不同的概念。两者并非互斥,也有相关联,但含义绝不可混淆。
「并行」的英文是 parallel,「并发」的英文是 concurrent。有意思的是,台湾将前者翻译成「平行」,后者翻译成「并行」。可见中文翻译基本是词不达意的。要区分两者还需从英文原文着手。
……
「九宫格」的布局是指:在一个正方形的容器中,以 3x3 排列共九个正方形的元素。当容器大小发生变化时,容器内部的九个元素尺寸也能随着容器大小而缩放,并保持正方形的外形。当容器内元素不满九个时,每行元素能够等比放大并撑满一行