分类: 未分类

  • [Rust]6更多集合和更多错误处理

    本章梗概

    • 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的真彩色,它的优点是需要的内存少,画质还可以

    • 存储图像——矢量图
    • 存储视频

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

  • 计算机导论笔记(第四章)

    • 浮点表示法

    如上,定点表示法无法满足我们的需求,于是“浮点表示法”就诞生了。

    顾名思义,浮点就是小数点可以移动,不用在规定几位数用来表示什么,跟十进制的“科学计数法”如出一辙。所以,计算机从原来需要存储单纯的数码变成了符号+定点数+位移量(小数点移动的位数,用指数存储。如科学计数法的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表示+/-,标数表示浮点表示法的指数,尾数表示规范化的浮点表示法的小数部分。下面是个例子

  • 计算机导论笔记(第三章)

    • 数据类型

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

    换算例子
    bit(位)1bit最小的单位
    byte(字节)1byte=8bit一个字母或符号
    千字节1kb=1024byte一张图片
    兆字节1MB=1024kb3、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)

    如-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浮点单精度表示法会解决。

    十六进制

    二进制表达太麻烦,十进制不好转换,就有了十六进制和八进制

    八进制

    无(与十进制的相互转换都讲了)

    进制小结

    • 其他

  • 计算机导论笔记(第一章)

    • 起始篇

    https://www.bilibili.com/video/BV13V41117xc?t=38.8

    (说的全是场面话)要打好基础,不是一开始就学编程学语言

    • 书籍介绍

    计算机导论共18章,分别有基础组成,硬件,软件,语言,计数等多方面知识(注:纯理论书籍)。

    • 图灵模型

    阿兰图灵在1937年首次提出通用计算机设想:所有的计算都有可能在一种特殊的机器上执行。(注:这只是一种在数学上的猜想,不是实际机器

    相同数据不同数据
    相同程序输出数据相同输出数据不同
    不同程序输出数据不同输出数据不同
    • 冯诺依曼模型

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

    计算机由3大部分组成分别是硬件,数据,软件

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

    机器语言:位模式

    符号语言:用符号代表某种概念或算法(如用“1”代表1)

    高级语言:更复杂的“符号语言”(如“rust”“c”“c++”等)

    • 计算机简史

    无(内容太多了,而且不重要)

    • 社会问题和道德问题

    我对社会公正不是很理解

  • Certbot申请cloudflare证书并自动续签

    安装certbot和插件

    apt update 
    apt upgrade 
    apt install certbot python3-certbot-dns-cloudflare

    配置Cloudflare API密钥

    1. 登录到 Cloudflare 控制台
    2. 进入 API Tokens 页面:
      • 点击右上角的用户图标 -> My Profile -> API Tokens。
      • 点击 Create Token 创建一个新密钥。
    3. 创建一个 自定义 Token,为它设置适当的权限:
      • 选择 Zone.Zone、Zone.DNS 权限,这样 Certbot 可以管理 DNS 记录。
      • 设置为 “Edit” 权限。
    4. 生成 API Token 后,记下 Token,这将在配置 Certbot 时用到。

    编辑配置文件

    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

    设置定时cron任务检查过期续签

    crontab -e
    0 0 * * * certbot renew --quiet --deploy-hook "/usr/bin/systemctl reload nginx"


    这个任务会每天运行一次,检查证书是否需要续签。如果需要,它会自动续签,并在完成后重载 Nginx

  • 世界,您好!

    欢迎使用 WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!