0%

本篇博客主要分享知乎专栏 巷说异闻录:[细思恐极的民间传说](https://www.zhihu.com/xen/market/remix/paid_column/1207723280049823744)为会员内容 本人整理留着自己学习 请勿二次传播
共八篇

第一篇 破地狱

楔子

民国三十年,从江西来了一班野道士。

师徒三人在各处荒祠野庙里落脚,不打醮、不画符、不算卦、不扶乩,专给人做白事超度。就是这么一班来路不明、没有根基的野道士,不到半年就在江淮一带的沦陷区闯出了名声,只因他们有一手独门灵术——破地狱。

所谓破地狱,顾名思义就是帮新死的亡魂打破地狱的边界。东南西北四方形式各异,但核心步骤大抵相同,在灵堂中结坛焚表,在法坛边缘置几枚瓦片,施术者一边舞剑一边唱经,待唱经完毕后,回身拿手中铁剑用力把瓦片击碎,象征着地狱的铁壁被击破,亡灵飞升天堂。这本是日常入门的道术,别说正一、全真有传承的道士,就是乡间的神汉、乩童、喃呒佬(一种由正一道衍生出的民间信仰神职人员,至今在两广、港澳一带仍有很大影响。)都能照猫画虎地熟练操作。

而这三个道士能凭借这样平常的道术成名立蔓儿,是因为他们的「破地狱」有三处与别的道士不同,令人咋舌称奇。

头一奇,这班江西道士做法事时不烧冥钱锡箔,不烧经衣纸扎,焚化黄表之后只烧战前国民政府发行的法币真钱。别说草纸切的冥钱,就是市面上通用的汪伪中储券、日本军票都不烧。

这二一奇,烧完纸钱,跳完禹步法事时,手上的桃木剑不碰瓦片,两三步之外隔空一击便能将瓦片破得粉碎。

三一奇,头七回魂夜里,亡人一定会入主家老爷、太太的梦,或是交代遗言后事,或是讨要过冬衣物,无一不爽。因这三件奇处,皖东、苏西各县的大户家里有人去世都会出高价请他们来作法,一来是求一个厚葬久丧的孝名,二来久居乡间的大户老爷们也想自己开开眼界。

慎县曹大户家年过耄耋的老太太寿终正寝。曹大户自幼读孔孟书,原本不信佛道,在乡贤故旧的反复劝说下,才不情愿地花重金请这班江西道士来作法超度。谁想到,这场原本敲锣打鼓的喜丧,却因这班道士引出了一场骇人的惊天命案。

Read more »

原文链接:https://hackernoon.com/how-sql-database-engine-work-483e32o7

SQL是编程语言还是查询语言?

使用SQL时候,我们可以互换编程语言和查询语言,许多人将SQL视为特殊的编程语言,是因为SQL 引擎包含编译器和垂直计算机:编译器将query编译为过程,虚拟机则运行该过程。SQL引擎编译和执行SQL查询的概念使其成为一种编程语言。 因此,如果有人说SQL是一种编程语言,那么在某种程度上他将被认为是正确的。

如果我们任何一种编程语言都可以创建CRUD操作程序,为什么还要使用SQL?

的确,使用任何一种编程语言,我们都可以创建一个可以执行简单的CRUD(Create Read Update and Delete,创建读取更新和删除)操作的程序,但是当涉及到复杂的查询时,我们必须用几行等价的代码编写数百行 SQL。

SQL概述

SQL代表结构化查询语言,它可以被称为编程语言或查询语言,是SQL与关系数据库进行交互的主要目的,其中关系数据库以表格形式存储数据。 SQL可以管理大量数据,特别是如果数据是同时写入的,并且我们在数据上可以有许多形式上的变化。
当用户使用SQL进行数据管理时,用户可以在数据库之间执行创建,检索,更新和删除数据的功能。 有各种关系数据库管理系统(DBMS),例如MySQL,SQLite,Postgres SQL等,它们都提供相同的功能。
数据库中有一些术语,例如数据库服务器,数据库引擎或数据库管理系统(database management system)。 在数据库中,我们可以互换使用这三个术语,因此当我们说SQL引擎或SQL Server时,不要混淆,它们都是相同的。

什么是数据库引擎?

SQL引擎是一种收集和解释SQL命令的软件,因此可以在关系数据库上执行适当的操作。 SQL引擎的目的是从数据库中创建,读取,更新和删除(CRUD)数据。
SQL引擎或SQL Server数据库引擎包括两个主要组件:存储引擎和查询处理器,如今,一些现代SQL DBMS包含多个存储引擎。 我们有许多类型的SQL引擎,它们都有不同的体系结构,但是用于执行相同的目标,包括对数据库的CRUD操作和许多其他功能。
SQL已覆盖在线市场的很大一部分,许多企业将其SQL系统用于在线事务处理和在线分析处理。

数据库引擎怎么工作?

表面上我们都知道,SQL的编译器编译查询,而虚拟机执行编译的查询。 现在让我们谈谈数据库引擎如何工作。
SQL具有查询编译和执行过程的许多阶段。 每个SQL数据库引擎都包含两个主要组件:编译器和虚拟机,以执行查询。 编译器读取查询并将该查询转换为适当的字节码,然后由虚拟机评估该字节码并向客户端返回适当的响应。
查询的完全执行将类别分为几个主要阶段
编译(解析,检查和语义) Compiling (Parsing, Checks, and Semantics)
捆绑 Binding
优化 Optimising
执行中 Executing

编译-解析
这是编译过程的一部分,在编译过程中,查询语句被标记为带有适当的词法和从句的单个单词。

编译-检查语义
The compiling semitics检查语句的有效性,并将其与系统目录匹配。 此编译阶段验证查询是否有效,还验证用户执行该语句的权限。

编译-捆绑
binding为输入的查询语句创建相应的二进制表示形式。 所有SQL Server引擎都具有此编译状态,在该状态下将生成byte code。
到此编译阶段,该语句已被编译,现在将其发送到数据库服务器以进行优化和执行。

优化
它为byte code优化了最佳算法。 此功能也称为查询优化器或关系引擎。

执行
虚拟机得到了优化后的code然后执行

SQL STATEMENT –> Parsing –>Binding –> Query Optimization –> Query Execution –> Result
注意:解析编译过程不需要数据库的任何许可,这使其成为最快的编译处理阶段。

SQL将数据转换为表
SQL用C语言编写,它使用Binary-Tree原理,使传入的数据存储在Rows和Columns中。 在二叉树结构中,我们有几个分支一直指向新的数据元素,SQL数据库遵循相同的结构,在该结构中,数据被转换成表,其中每一列和每一行数据彼此指向。

SQL引擎将查询处理为多阶段。 查询的处理可以从一个关系DBMS到另一个关系DBMS。 在第一阶段,查询将被解析并转换为兼容格式,例如JASON文件,然后进行另一个编译过程,以检查已解析文件的语义,在编译的最后阶段,已解析文件将转换为相应的字节码 。
第二步是优化,其中将适当的算法(例如排序,搜索等)应用于字节码。 最后,虚拟机执行代码并为客户端提供适当的结果。

什么是SQL Sever 存储引擎

它是用于在磁盘和内存之间执行CRUD(创建,读取,更新和删除)操作的软件。

结论

要创建数据库环境,我们需要SQL数据库引擎,并且为了构建数据库引擎,我们经常使用低级编程语言(例如C ++或C),因为它们使用户可以控制内存管理,在高级编程语言中,内存管理由操作系统自动完成。 SQL引擎是跨平台的,开发人员可以使用不同的平台来构建某些程序,但是所有平台都可以与SQL引擎链接以获取数据库功能。

从计算机架构说起

一个定律的黄昏 一个时代的开启

摩尔定律是由英特尔(Intel)创始人之一戈登·摩尔(Gordon Moore)提出来的。其内容为:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。

可以看出,指数增长的集成电路晶体管密度是驱动人类社会飞速发展的稳定动力。比如,互联网和计算科学的发展,以及相比从前便宜太多的基因测序等等。
image.png
然而,近些年来,摩尔定律正在逐渐放缓。从技术上讲,随着晶体管尺度小得不可思议的情况下,其复杂性和差错率也将呈指数增长,同时也使全面而彻底的芯片测试几乎成为不可能。一旦芯片上线条的宽度达到纳米(10^-9米)数量级时,相当于只有几个分子的大小,这种情况下材料的物理、化学性能将发生质的变化,致使采用现行工艺的半导体器件不能正常工作。从经济上讲,随着尺度越来越小,集成度越来越高,成本增长得更加块。
传统的晶体管是个非常简单的结构,而现在已经演变成了非常复杂的3D结构。所以,如果我们尝试继续缩小晶体管的尺寸,就会更加复杂。例如,需要控制量子隧穿效应,以减少漏电流的产生,这就像当我们关闭开关时,它就应该完全关闭。对于这些问题,人们总是能够找到很多极具创意的解决方法,如台积电的FinFET技术,只不过越来越难了。
在传统的计算机体系架构的基础上,摩尔定律带来的收益正在递减。因此出现了很多诸如神经计算的新计算范式。但是对于硬件来说,维持摩尔定律还是需要依靠架构的创新。
2019年,两位图灵奖得主John Hennessy 和David Patterson 发表论文《A New Golden Age for Computer Architecture
》,计算机体系架构已经进入新的黄金时代。传统架构显然已经无法满足现有的数据处理任务,更不用说应对未来的需求,行业亟需架构的创新。

Read more »

原文链接https://www.cnblogs.com/yi-mu-xi/p/10469458.html

固态硬盘的PCIE,SATA,M2,NVMe,AHCI

M2 和 SATA

我们常说的M2其实是M.2,更多是指一种尺寸或者插槽,就是上图中右边的尺寸较小的直接插主板上的这种,而SATA也是,通常是指上图左边那个尺寸较大的一大块那种

还要提的是M.2插槽也是有两种的,一种是金手指有两个缺口的Socket 2跟金手指只有一个缺口的Socket 3,这两种可以走不同的通道

SATA和PCIE

串行高级技术附件的全称是Serial Advanced Technology Attachment(串行高级技术附件,一种基于行业标准的串行硬件驱动器接口)就是我们现在经常所说的SATA,是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范。
PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。
PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。
PCIe交由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI-Express”,简称“PCI-e”。它的主要优势就是数据传输速率高,而且还有相当大的发展潜力。
PCI Express也有多种规格,从PCI Express x1到PCI Express x32,能满足将来一定时间内出现的低速设备和高速设备的需求。PCI-Express最新的接口是PCIe 3.0接口,其比特率为8Gbps,约为上一代产品带宽的两倍,并且包含发射器和接收器均衡、PLL改善以及时钟数据恢复等一系列重要的新功能,用以改善数据传输和数据保护性能。
PCIe闪存卡的供应商包括:INTEL、IBM、LSI、OCZ、三星(计划中)、SanDisk、STEC、SuperTalent和东芝(计划中)等,而针对海量的数据增长使得用户对规模更大、可扩展性更强的系统所应用,PCIe 3.0技术的加入最新的LSI MegaRAID控制器及HBA产品的出色性能,就可以实现更大的系统设计灵活性。截止2019年1月份,当前主流主板均支持pcie 3.0。
SATA跟PCIE,这两个东西是指串行接口或者就是数据走的通道;SATA更多是指插槽,而这里的SATA是指数据走的通道,目前的新设备普遍都是SATA3接口了,但是SATA3是向下兼容SATA2跟SATA1的
PCI-E跟SATA3简单说就是数据走的“路”,PCI-E就像是特别宽大的路,数据可以走的特别快,而SATA3与之相比更像是一条崎岖的小路,数据走的特别慢,但是CPU内部就那么大一点,修不了特别多的大路,所以PCI-E通道也就仅有那么几条。
通常SATA的插槽只能走SATA3的通道,

而M.2的插槽上文我们说了分为Socket 2跟Socket 3,

M.2(Socket 2)的固态可以走SATA3或者PCI-E 3.0×2通道(就是两条PCI-E),而M.2(Socket 3)的固态则可以走PCI-E 3.0×4通道。

需要说的是每条PCI-E 3.0的带宽是8Gbps,而SATA 3.0的带宽则只有6Gbps

NVME和AHCI

高级主机控制器接口(英文:Advanced Host Controller Interface,缩写:AHCI),是一种由英特尔制定的技术标准,它允许软件与SATA存储设备沟通的硬件机制,可让SATA存储设备激活高级SATA功能,例如原生指令队列及热插拔。AHCI详细定义一个存储器架构规范给予硬件制造商,规范如何在系统存储器与SATA存储设备间传输数据,目前(2014年3月)最新AHCI规范为1.3.1版。
许多SATA设备控制器可个别激活AHCI功能或与RAID功能合并使用,英特尔就建议如果在其支持AHCI芯片组上使用RAID功能,采取AHCI模式组建RAID可以获得最大弹性,因为AHCI可在完成安装的操作系统中切换RAID组建模式。
在一般硬盘上,大多数制造商均在3.5英寸及2.5英寸提供相关支持技术。
NVM Express (Non-Volatile Memory express )是标准和信息的开放收集,以充分展示非易失性存储器在从移动设备到数据中心的所有类型的计算环境中的优势。NVMe从头开始设计,可为当前和将来的NVM技术提供高带宽和低延迟的存储访问。NVM Express标准包括:
NVM Express –用于PCI Express附加存储的寄存器接口和命令集,以及适用于多种操作系统的行业标准软件。NVMe被广泛认为是PCIeSSD的事实上的行业标准。NVMe管理界面–用于NVM Express存储的带外管理的命令集和体系结构(例如,使用BMC发现,监视和更新NVMe设备)。架构上的NVMe – NVM Express的扩展,可通过PCIe以外的其他传输方式对NVM Express命令集进行隧道传输。NVMe over Fabric通过允许同一协议扩展到各种网络接口上,扩展了在全球最大的数据中心中大规模高效存储架构的优势。
最后要说的就是经常被商家拿来当作卖点的NVMe了,其实NVMe跟AHCI都是一种规范,就像是在路上走如果没有交通规则的限制,那么肯定是一团拥挤肯定都走不动了,而NVMe跟AHCI就像是这种交通规则
AHIC是针对SATA这种弯路的交通规则,然后开发者发现,这种针对弯路的规范,数据只能一个一个通过的规则用在宽敞的PCIE通道上面实在太浪费了,于是针对PCIE通道又开发出了NVME规范,可以让很多数据同时通过
总结:M.2跟SATA其实可以说是插槽的形状,而PCI-E跟SATA3就是数据从硬盘到CPU或者内存走的通道,而NVME跟AHCI就是针对PCI-E跟SATA通道的“交通规则”

NVME

NVMe其实与AHCI一样都是逻辑设备接口标准(是接口标准,不是接口!不是接口!不是接口!因为很重要所以说三次),NVMe全称Non-Volatile Memory Express,非易失性存储器标准,是使用PCI-E通道的SSD一种规范,NVMe的设计之初就有充分利用到PCI-E SSD的低延时以及并行性,还有当代处理器、平台与应用的并行性。SSD的并行性可以充分被主机的硬件与软件充分利用,相比与现在的AHCI标准,NVMe标准可以带来多方面的性能提升。

NVMe的官方定义将其描述为“一个开放的标准和信息集合,以充分释放非易失性存储在从移动端到数据中心的所有类型的计算环境中能够提供的优势。NVMe从底层开始设计,为当前和未来的NVM技术提供高带宽和低延迟存储访问。”NVMe是通过PCI Express总线将存储连接到服务器的接口规范,简单来说就是,使SSD与主机系统通信的速度更快。它有助于缓解闪存通过最初为HDD设计的SAS或SATA连接到系统时出现的瓶颈。
Read more »

本文对SQL内容进行了一些梳理
来源声明
来源来自日本MICK所著的SQL教程,有能力的请去社区支持正版,文末附有电子书供学习使用

绪论-搭建SQL的学习环境

PostgreSQL的安装和连接设置

PostgreSQL官网 下载合适自己设备的版本
如果仅供本地使用
在 C:\Program Files\PostgreSQL\9.5\data 路径中将

1
listen_addresses = '*'

修改为

1
listen_addresses = 'localhost'

登录SQL
打开cmd
输入

1
C:\PostgreSQL\9.5\bin\psql.exe –U postgres

窗口显示出“postgres=#”,意味着连接成功了。 下面就可以执行 SQL 语句了。

创建学习使用的数据库
1. 执行创建数据库的SQL语句

1
CREATE DATABASE shop;

2. 结束psql
数据库创建成功之后,结束 psql。为了结束 psql, 需要输入“\q”,然后按下回车键。这样就切断了与 postgreSQL 的连接,返回到命令提示符窗口

连接学习用的数据库(登录)
登录上一步输入的shop

1
C:\PostgreSQL\9.5\bin\psql.exe –U postgres –d shop

d是指定某一个数据库的意思

数据库和SQL

Read more »

スターダストクルセイダース

无敌的白金之星

高潔なる教皇

DIO!吃我一记半径20米的绿宝石水花!

白金の拳

到我的bgm了

Walk Like an Egyptian

抵达目的地前都是旅程

ジョジョ その血の記憶~end of THE WORLD~

沉睡的时钟开始摆动 踏上不该踏上的旅途

Last Train Home

生命是一场太长太凶险的旅行

canzoni preferite
啊~我搞大伟

il vento d’or
GIO GIO!

更新中

计算机架构的黄金时代

ISA

软件与硬件的通信是通过指令集架构(ISA,Instruction Set Architecture)进行的.在 1960 年代早期,IBM 有四个互不兼容的计算机产品线,每个都有自己的 ISA、软件堆栈、I/O 系统和利基市场(分别针对的是小型企业、大型企业、科研和实时应用)。大家认为需要一种方案,让便宜的 8 位数据路径计算机与高速的 64 位数据路径计算机都能共用一个ISA。 Maurice Wilkes 提出了一种简化控制硬件的方法。控制可被描述为一个二维数组,他称之为控制存储器(control store)」。这个数组的每一列都对应于一条控制线,每一行都是一个微指令(microinstruction),而编写微指令则被称为微编程(microprogramming)。一个控制存储器包含一个用微指令编写的 ISA 解释器,所以执行一个常规指令需要多个微指令。这种控制存储器是通过内存实现的,成本比逻辑门要低得多。
Table 1. Features of four models of the IBM System/360 family; IPS is instructions per second.
表格1列出了 IBM 在1964年4月7日宣布的System/360 ISA的4种型号。数据路径的变化范围有 8 倍,内存容量的变化范围有16倍,时钟频率是4倍,性能是50倍,成本接近6倍。成本最高的计算机的控制存储器最宽,因为更复杂的数据路径使用更多控制线。成本最低的计算机因为硬件更简单而有更窄的控制存储器,但因为它们需要更多时钟周期来执行一个 System/360 指令,所以需要更多微指令。

从IC到IBM PC

当计算机开始使用集成电路时,摩尔定律意味着控制存储器可以变大很多。更大的内存反过来又意味着允许使用更复杂的ISA。
某些制造商选择开放微编程功能,让选定的客户能添加定制功能,他们称之为「可写控制存储器(WCS)。最有名的 WCS 计算机是 Alto,是第一款个人计算机(PC),配备有首款位映像显示器(bit-mapped display)和首个以太网局域网。用于这种全新显示器和网络的设备控制器是存储在一个 4096 字×32 位 WCS 中的微程序。
之后便是英特尔抓住机会用8086获得了给IBM供货的机会。1970 年代的微处理器(比如英特尔的 8080)仍处于 8 位时代,主要依靠汇编语言编写程序。到了1980年代,英特尔把8086的寄存器和指令集扩展成了 16 位。IBM 当时正在开发一款个人计算机来与 Apple II 竞争,最终采用了8086的8位总线版本,在全球售出了1亿台。

CISC Vs RISC

从复杂指令集到精简指令集计算机

References:

1. Hennessy, J. L., & Patterson, D. A. J. C. A. (2019). A new golden age for computer architecture. 62(2), 48-60.