本章梗概
- Other collections—more complex and interesting ones this time
- The question mark operator—just type ? to handle errors
- When panic and unwrap are good
计算机只能存储二进制数,无法直接存储字符,但我们又不能直接用二进制(因为太麻烦)。所以就有了编码表,如ASCLL码表。

当然,每一个字符在编码表下都被转换成了二进制数,一位可以表示两个数据

二进制数是不连续的,所以理论上是无法存储音频的。但凡事无绝对,我们可以通过以下方式来存储音频

第一步是找到方法,通过量化,采样来使不可测量的音频可以被测量

我们采样的周期越短音质就越清晰

量化就是变得可以测量,你要把采样的周期与取值确定了,并且使资源利用最合理(例如你不能把周期设置为1.01253198746325425,那样就会浪费许多位)

编码时当然会选择最优化的方法(如补码就比有符号整数更合理,好用),每样本位决定了音频的细腻程度,每样本数决定了音频的流畅度。

像素就是图像的最小单位

解析度就是色块的大小与数量,色彩深度就是光的密度,波的频率。通过红、黄、蓝三种光来“调配”颜色

真彩色是一个统一的标准,224种颜色已经可以满足大部分的需要了,甚至有点“太”细致了,于是就有了“简化的”索引色

索引色其实就是mini的真彩色,它的优点是需要的内存少,画质还可以

光栅图的单位毕竟是色块,放大了就会失真。而矢量图则是公式,可以理解为函数图像。由一个个图像,公式来实时运算,调整。你放大一次,计算机就重新计算一遍。

视频就是快速闪过的图像,能存储图像就能存储视频。每一张图片就是一帧

注:网站和图片均来自于JZStudio计算机编程的计算机导论视频

如上,定点表示法无法满足我们的需求,于是“浮点表示法”就诞生了。
顾名思义,浮点就是小数点可以移动,不用在规定几位数用来表示什么,跟十进制的“科学计数法”如出一辙。所以,计算机从原来需要存储单纯的数码变成了符号+定点数+位移量(小数点移动的位数,用指数存储。如科学计数法的3.14*103一样,例如1.01011*29的9一样(因为二进制是满二进一,所以底数是2))

例如1.011*218,我们只需要存储符号“+”,“011″(因为浮点表示法第一位必须是1,不然就没有意义了,既然是定值就没必要占用变量的空间),”18“(2是底数,永远确定)

余码系统就是先设置一个偏移量,再用偏移后的数表示。(如偏移量是7,那么我想表示0就用7(7-7=0),-5就是2(2-7=-5))这样就可以在一定程度内表示负数了。

(2m-1已经在整数最大讲过了)

这个偏移量没有具体标准,不好经行数据传输,于是一个具体标准产生了

符号S表示+/-,标数表示浮点表示法的指数,尾数表示规范化的浮点表示法的小数部分。下面是个例子

注:网站和图片均来自于JZStudio计算机编程的计算机导论视频

多媒体就是对大部分数据类型的总称

| 换算 | 例子 | |
| bit(位) | 1bit | 最小的单位 |
| byte(字节) | 1byte=8bit | 一个字母或符号 |
| 千字节 | 1kb=1024byte | 一张图片 |
| 兆字节 | 1MB=1024kb | 3、5分钟的音频 |
| 吉字节 | 1GB=1024MB | 视频 |
| 太字节 | 1TB=1024GB | 电影的单位 |


无符号整数只能存储非负数,假如我用3位来存储二进制的1001就存不下来,就发生了溢出。这时,计算机会将从左往右数第三位以后的数全部丢弃掉。如果我只存储10,那计算机为了填满这三位就会往左补0,变成010。(最大无符号整数之前已经讲过了,感兴趣的可以往前翻)
无符号整数只能存储非负数,那为了表示符号该用什么方法呢?很简单,用一位来表示+/-就行

这时就出现了一个问题,1000和0000都表示0,所以,这个系统有两个0
溢出时计算机会舍去剩下的数
符号加绝对值表示法虽然可以表示负数,但浪费了一位。补码就完美的解决了这个问题。
算法:二进制数X
X>0:X补=X
X<0:X补=X反码+1(如0010取补码等于1110(01101+1))
反码:所有位0变成1,1变成0。(如0010取反等于1101)
注意:补码第一位是0,则这个整数为正,是1就是负


如-3在4位中存储:
-3为负,则将3转换为二进制取补码
3=(11)2=0011
取补码等于 1101(1100+1)
结束
数字系统用数码或其他符号来表示数字,在不同的系统中,数字的表示方法也不一样。(如“5”和“v”都表示5)
数字系统分位置化系统和非位置化系统

如上,下面是几个例子。
数为123.456时(十进制),
Sk=1,……,S2=2,S1=3,S-1=4,S-2=5,……,S-l=6
S=(0,1,2,3,4,5,6,7,8,9)(阿拉伯数字)
b=10(因为是十进制)
b=S中的符号数(因为有几个符号表示数字,那就有几个“数码”,就是几进制)
那+/-小数点该怎么存储呢?
之后的IEEE浮点单精度表示法会解决。
我们假设有个二进制数是11
那它的“个位”和“十位”就可以拆成1+10
二进制十位的“1”是由个位进一次位得到的,而二进制是满二进一,所以10=1+1,21,那二进制的11就等于1+1+1(两个一是十位的,一个是个位的),转为十进制就是1+1+1=3.如果有百位那就是十位进的,单位就是1+1+1+1(两个十位),22。以此类推
X=(Sk……S2S1.S-1S-2…….S-l)n
Sk*nk-1+……+S2*n1+S1*n0+S-1*n-1+S-2*n-2+……+S-l*n-l就是十进制的数
我们假设是x进制,求n位数的最大值。
x进制是满x进一,n位数的最大值就是最小的n+1位数减一。那最小的就是最高位为1,其他位都是0。这个数就是xn(满x进一,进了n次),少一就是xn-1

二进制表达太麻烦,十进制不好转换,就有了十六进制和八进制
无(与十进制的相互转换都讲了)

设这个十进制数为y,要转换成n进制
用短除法将y和n短除到0为止,中途有余数就写在右边,最终将所有数从下往上依次写出即可
设这个十进制数为y,要转换成n进制
将这个数乘n,取个位上的数为n进制数的十分位,剩下的数继续重复这个步骤并依次排列
如十进制的0.375
0.375*2=0.75(取“0”)
0.75*2=1.5(取“1”)
0.5*2=1(取“1”)
0.375=(0.011)2
注:网站和图片均来自于JZStudio计算机编程的计算机导论视频
https://www.bilibili.com/video/BV13V41117xc?t=38.8
(说的全是场面话)要打好基础,不是一开始就学编程学语言
计算机导论共18章,分别有基础组成,硬件,软件,语言,计数等多方面知识(注:纯理论书籍)。
阿兰图灵在1937年首次提出通用计算机设想:所有的计算都有可能在一种特殊的机器上执行。(注:这只是一种在数学上的猜想,不是实际机器)


| 相同数据 | 不同数据 | |
| 相同程序 | 输出数据相同 | 输出数据不同 |
| 不同程序 | 输出数据不同 | 输出数据不同 |
基于通用图灵机建造的计算机都是在存储器(内存/寄存器)上存储数据的(程序也能被存储在内存中)

计算机的存储器都可以存储数据和程序,那么就意味着数据和程序应该有着相同的格式——位模式(由0、1串组成的序列)
计算机由3大部分组成分别是硬件,数据,软件

因为以前的计算机是使用晶体管为元件的,只有高电压和低电压两种模式,所以只能用二进制。

机器语言:位模式
符号语言:用符号代表某种概念或算法(如用“1”代表1)
高级语言:更复杂的“符号语言”(如“rust”“c”“c++”等)
无(内容太多了,而且不重要)

我对社会公正不是很理解
apt update
apt upgrade
apt install certbot python3-certbot-dns-cloudflare
编辑配置文件
vim /etc/letsencrypt/cloudflare.ini
# Cloudflare API token used by Certbot
dns_cloudflare_api_token = 0123456789abcdef0123456789abcdef01234567
更改权限为只读
chmod 600 /etc/letsencrypt/cloudflare.ini
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
--key-type ecdsa \
-d "shufue.top,*.shufue.top"
Certbot会默认安装证书时创建一个自动续签任务,但我们可以手动确认或者设置续签任务。
certbot renew --dry-run
crontab -e
0 0 * * * certbot renew --quiet --deploy-hook "/usr/bin/systemctl reload nginx"
这个任务会每天运行一次,检查证书是否需要续签。如果需要,它会自动续签,并在完成后重载 Nginx
欢迎使用 WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!