From 3a8ce2ea53a36e8585d368718f3f486ba2692898 Mon Sep 17 00:00:00 2001 From: FlintyLemming Date: Thu, 22 Sep 2022 15:17:21 +0800 Subject: [PATCH] Add coding category --- content/categories/Coding/_index.md | 9 ++ .../index.zh-cn.md | 86 +++++++++++++++++++ .../index.zh-cn.md | 59 +++++++++++++ .../index.zh-cn.md | 74 ++++++++++++++++ .../index.zh-cn.md | 2 +- 5 files changed, 229 insertions(+), 1 deletion(-) create mode 100644 content/categories/Coding/_index.md create mode 100644 content/post/126cc71ce5234e699042036798edcf66/index.zh-cn.md create mode 100644 content/post/61e42de30de34c3f93bd30e2dc4403c5/index.zh-cn.md create mode 100644 content/post/66c80801f93043e9b964ed612a93abc0/index.zh-cn.md diff --git a/content/categories/Coding/_index.md b/content/categories/Coding/_index.md new file mode 100644 index 0000000..a8b8054 --- /dev/null +++ b/content/categories/Coding/_index.md @@ -0,0 +1,9 @@ +--- +title: "Coding" +description: "编程相关" +slug: "coding" +image: "https://img.mitsea.com/blog/categories/coding.png?x-oss-process=style/ImageCompress" +style: + background: "#254840" + color: "#fff" +--- diff --git a/content/post/126cc71ce5234e699042036798edcf66/index.zh-cn.md b/content/post/126cc71ce5234e699042036798edcf66/index.zh-cn.md new file mode 100644 index 0000000..365eade --- /dev/null +++ b/content/post/126cc71ce5234e699042036798edcf66/index.zh-cn.md @@ -0,0 +1,86 @@ ++++ +author = "FlintyLemming" +title = "海明校验码" +date = "2020-06-01" +description = "" +categories = ["Coding"] ++++ + +在了解海明校验码之前,需要知道一个重要的概念——码距。 + +## 概念介绍-码距 +码距是指是两个码字中不相同的二进制位的个数,举个例子,有两个编码,分别是01101101和01000101,可以发现,这两个编码有两位值不相同,所以他们的码距为2。 +那么,你还有可能听到这么一个说法:“8421码码距d=1”,这里的码距指的是“该数据编码的最小码距”,是整个编码系统中中任意两个码字的码距的最小值。还有一个问题,使用四位二进制的编码系统,码距一定是1吗?显然不是,虽然用的是四位二进制编码系统,但是没有限定编写什么码字。如果我用这个编码系统只编写0000、0011、0101这三个码字,那么这个编码系统的码距就是2,因为这三个码子互相之间的码距最小值为2。 + +## 码字的结构 +接下来,我还要介绍一下添加校验码后,整个码字的结构。码字包括信息位和校验位,这里设信息位的位数为k,校验位的位数为r,那么整个码字的长度就是k+r。 + +## 所需校验位的计算 +对于校验位来说,需要有足够的位数来表示信息位中发生的错误,而海明校验码只表示信息位中一位的错误。 +举个例子(并不是海明码的结构,不严谨,仅作理解),现在有信息位0110,那么,校验位就需要有四个状态分别表示信息位的第一、二、三或者第四位有误。那么校验位如果只有一位,0和1,并不能表示四种状态。我们试试两位:比如校验位我用00表示信息位第一位发生错误,01表示第二位发生错误,用10表示第三位发生错误,11表示第四位发生错误。看似没有问题,但是忘了一点:校验位如何表示信息位没有错误呢?所以其实我们需要4+1=5种情况来表示信息位的校验信息,即需要3位的校验位。 +而对于海明码来说,数据位和校验位穿插,存在校验位可以“我 查 我 自 己”的情况,需要检查的位数就是k+r。所以对于k位的信息位,r位的校验位,需要满足2^r-1>k+r才能检查出1个位的错误。 + +## 确定校验码和数据的位置 +上节提到,海明码的校验位和信息位是穿插的,所以我们需要确定校验位的各个位置。为了方便说明,我们给校验码定义为P1、P2、P3…;数据为定义为D1、D2、D3…;最终整个码字的编码依次为M1、M2、M3……那对于校验码Pi来说,它的位置是M[2^(i-1)],比如P1的位置是M1、P2的位置是M2,P3的位置是M4,P4的位置是M8……那么剩下的就是数据的位置 +M1    M2    M3    M4    M5    M6    M7    M8    M9 +P1    P2     D1    P3     D2    D3     D4    P4     D5 + +## 求出校验位的值(规律法) +这里以一个例子讲解,比如我们现在掌握如下信息 + +M1    M2    M3    M4    M5    M6    M7    M8    M9    M10 + +P1    P2     D1    P3     D2    D3      D4    P4    D5     D6 + +(空)    (空)    1    (空)    0        1         1    (空)    0        1 + +表里可以看出已经给定了一组信息位的值,现在,我们先计算P1的值: +我们从**P1开始,连续1个,中间间隔1个,再连续1个**,组合成一个串: +【为了方便理解,我详细说一下上方加粗的过程:从P1(也就是对应的M1)开始,连续一个,就还是P1;然后间隔一个,就跳过M2;再连续一个,取M3的值;然后间隔一个,也就是跳过M4;再连续一个,取M5的值…以此类推,我们取了P1、3、5、7…的值,把它放在一个串里】 +然后对这个串进行偶校验,也就是说,保证这个串中1的个数为偶数个,可以看到,已经有两个1了,所以我们在第一位补0: +这也就是我们得到的P1的值 + +为了加强理解,我们再计算一下P2的值: +我们**从P2开始,连续2个,中间间隔2个,再连续2个**,组合成一个串: + +【为了方便理解,我再详细说一下加粗部分的过程:从P2(也就是对应的M2)开始,连续两个,就是M2、M3,取M3的值;然后间隔2个,跳过M4、M5;再连续两个,取M6、M7的值;再间隔两个,跳过M8、M9;再连续两个,取M10、M11…以此类推,我们取了M3、6、7、10的值】 +然后同样进行偶校验,发现已经有4个1,所以补0: +这也就是我们得到的P2的值 + +同理,计算P3的过程中,我们**从P3开始,连续3个,中间间隔3个,再连续3个**,也就是取M4、5、6;跳过M7、8、9;取M10、11、12 +然后进行偶校验,补0: + +P4同理,最后补的是1: +这样,我们就依次获得了校验位的数据,P1-4依次为0、0、0、1 + +## 求出校验位的值(数学法) +还是用这一题: +第一步,我们要列出整个码字的编码对应的二进制。比如M1,1对应的就是0001;M2,就是0010;M3就是0011 +观察这个二进制编码,以M3为例,0011,第一位和第二位都是1,那么我们称M3和P1、P2有关 +第二步,我们要找到还有哪些和P1有关,可以发现,M1、3、5、7、9都和P1有关 +第三步,以此类推,找出哪些和P2有关(可以找到M2、3、6、7、10),哪些和P3有关…… +第四步,去掉第一位(因为比如对于P1来说,M1、3、5、7、9中,M1并没有值),列出如下方程式: +P1 = M3 ⊕ M5 ⊕ M7 ⊕ M9 = 1 ⊕ 0 ⊕ 1 ⊕ 0 = 0 +P2 = M3 ⊕ M6 ⊕ M7 ⊕ M10 = 1 ⊕ 1 ⊕ 1 ⊕ 1 = 0 +P3 = M5 ⊕ M6 ⊕ M7 = 0 ⊕ 1 ⊕ 1 ⊕ = 0 +P4 = M9 ⊕ M10 = 0 ⊕ 1 = 1 +便可以算出校验位的值 + +## 接收端校验 +参考上一节求出校验位的值(数学法)中求P的过程,我们需要把P,和其相关的数据位相加,比如上面我们计算了P1 = M3 ⊕ M5 ⊕ M7 ⊕ M9 = 1 ⊕ 0 ⊕ 1 ⊕ 0 = 0,这里我们就校验P1 ⊕ M3 ⊕ M5 ⊕ M7 ⊕ M9 是否等于 0,接着,依次计算P2 ⊕ M3 ⊕ M6 ⊕ M7 ⊕ M10、P3 ⊕ M5 ⊕ M6 ⊕ M7、P4 ⊕ M9 ⊕ M10是否都等于0,如果都是0,说明这个数据没有问题。 +如果出问题了呢?下面举个例子: +还是上面那一题,如果M5在传输中发生错误,0变成了1 +那么计算中就会发现: +P1 ⊕ M3 ⊕ M5 ⊕ M7 ⊕ M9 = 1 +P2 ⊕ M3 ⊕ M6 ⊕ M7 ⊕ M10 = 0 +P3 ⊕ M5 ⊕ M6 ⊕ M7 = 1 +P4 ⊕ M9 ⊕ M10 = 0 +得出出错位为:0101(2)位,即第五位,那么,只要把M5的值反转,即可得到正确的字串。 + +## 海明码的码距 +回到一开始说的码距问题,有题目会问,海明码的码距是多少?答案是3。为什么呢,其实我们不妨再观察一下用数学法计算校验位的过程: +P1 = M3 ⊕ M5 ⊕ M7 ⊕ M9 = 1 ⊕ 0 ⊕ 1 ⊕ 0 = 0 +P2 = M3 ⊕ M6 ⊕ M7 ⊕ M10 = 1 ⊕ 1 ⊕ 1 ⊕ 1 = 0 +P3 = M5 ⊕ M6 ⊕ M7 = 0 ⊕ 1 ⊕ 1 ⊕ = 0 +P4 = M9 ⊕ M10 = 0 ⊕ 1 = 1 +不难发现,即使是靠前的数据位,比如M3、M5,都至少与两个校验位有关,所以变了一个数据位,会更改两个校验位,一共改变三个值。即可得出海明码的码距为3。 \ No newline at end of file diff --git a/content/post/61e42de30de34c3f93bd30e2dc4403c5/index.zh-cn.md b/content/post/61e42de30de34c3f93bd30e2dc4403c5/index.zh-cn.md new file mode 100644 index 0000000..c616b1f --- /dev/null +++ b/content/post/61e42de30de34c3f93bd30e2dc4403c5/index.zh-cn.md @@ -0,0 +1,59 @@ ++++ +author = "FlintyLemming" +title = "QNAP 设置桥接" +date = "2021-04-02" +description = "" +categories = ["HomeLab", "Network"] +tags = ["QNAP", "NAS"] +image = "https://img.mitsea.com/blog/posts/2021/04/QNAP%20%E8%AE%BE%E7%BD%AE%E6%A1%A5%E6%8E%A5/title.jpg?x-oss-process=style/ImageCompress" ++++ + +最近购入了一台 QNAP TS-532X NAS,这是一台万兆交换机。想要两个设备之间以万兆的速度连接,除了两个设备都要有万兆网卡,往往会认为他们必须要接到一个万兆交换机上才能用,就像这样。 + +![](https://img.mitsea.com/blog/posts/2021/04/QNAP%20%E8%AE%BE%E7%BD%AE%E6%A1%A5%E6%8E%A5/1.png?x-oss-process=style/ImageCompress) + +但其实不必,通过桥接 NAS 的 1GbE 和 10GbE 两个网口,就可以让 NAS 直接以 10Gbps 承载另一个有万兆网卡的设备,就像这样。 + +![](https://img.mitsea.com/blog/posts/2021/04/QNAP%20%E8%AE%BE%E7%BD%AE%E6%A1%A5%E6%8E%A5/2.png?x-oss-process=style/ImageCompress) + +按照我的理解(可能不正确),TS-532X 首先自己内部生成了一个虚拟交换机,交换机的上联口是到路由器,绑定 1GbE 网口。下联口一个是内部虚拟的,通给 NAS 本身,另一个绑定 10GbE 网口,通给另一台万兆设备。 + +下面介绍下如何设置: + +## NAS 设置 + +1. 打开 网络与虚拟交换机,左下角,切换到 高级,点击 新增 + + ![](https://img.mitsea.com/blog/posts/2021/04/QNAP%20%E8%AE%BE%E7%BD%AE%E6%A1%A5%E6%8E%A5/3.png?x-oss-process=style/ImageCompress) + +2. 点击 基本模式 + + ![](https://img.mitsea.com/blog/posts/2021/04/QNAP%20%E8%AE%BE%E7%BD%AE%E6%A1%A5%E6%8E%A5/4.png?x-oss-process=style/ImageCompress) + +3. 分别勾选 1GbE 和 10GbE 两个网口,勾选下方的”启用扩展树协议“,点 应用 + + ![](https://img.mitsea.com/blog/posts/2021/04/QNAP%20%E8%AE%BE%E7%BD%AE%E6%A1%A5%E6%8E%A5/5.png?x-oss-process=style/ImageCompress) + +4. 回到 总览,就可以看到桥接成功了。不过这里的拓补图讲道理有点迷惑,比如他这个交换机也有 IP(按理说他这个应该算是无网管交换机,应该没有 IP),然后 10GbE 的那个口 IP 跟 NAS 是一样的,总之有点迷惑,不用管它。 + + ![](https://img.mitsea.com/blog/posts/2021/04/QNAP%20%E8%AE%BE%E7%BD%AE%E6%A1%A5%E6%8E%A5/6.png?x-oss-process=style/ImageCompress) + +## PC 设置 + +按理说此时直接用 10G 网线连接 PC 和 NAS 就可以直接用了,但是 QNAP 这个我不知道为什么,如果你不对这个虚拟交换机设置 DHCP 服务器,PC 就没法自动获取 IP 并联网。我担心设置 DHCP 服务器后跟路由器里的 DHCP 服务冲突,就没有开了。但这样的话,需要给 PC 手动指定一个 IP 地址。 + +1. 打开 控制面板 - 网络和 Internet - 网络和共享中心 - 更改适配器设置,可以看到 10GbE 的口已经启用了。当然一开始这边可能显示无网络权限啥的,我这边是已经配置好了的。 + + ![](https://img.mitsea.com/blog/posts/2021/04/QNAP%20%E8%AE%BE%E7%BD%AE%E6%A1%A5%E6%8E%A5/7.png?x-oss-process=style/ImageCompress) + +2. 双击打开这个网络连接,然后点击 属性 - Internet 协议版本 4 + + ![](https://img.mitsea.com/blog/posts/2021/04/QNAP%20%E8%AE%BE%E7%BD%AE%E6%A1%A5%E6%8E%A5/8.png?x-oss-process=style/ImageCompress) + +3. IP 地址设置一个跟内网其他设备不冲突的 IP 地址,子网掩码、网关、默认DNS地址和内网中其他设备一致 + + ![](https://img.mitsea.com/blog/posts/2021/04/QNAP%20%E8%AE%BE%E7%BD%AE%E6%A1%A5%E6%8E%A5/9.png?x-oss-process=style/ImageCompress) + +4. 设置完毕 + + ![](https://img.mitsea.com/blog/posts/2021/04/QNAP%20%E8%AE%BE%E7%BD%AE%E6%A1%A5%E6%8E%A5/10.png?x-oss-process=style/ImageCompress) \ No newline at end of file diff --git a/content/post/66c80801f93043e9b964ed612a93abc0/index.zh-cn.md b/content/post/66c80801f93043e9b964ed612a93abc0/index.zh-cn.md new file mode 100644 index 0000000..feb916c --- /dev/null +++ b/content/post/66c80801f93043e9b964ed612a93abc0/index.zh-cn.md @@ -0,0 +1,74 @@ ++++ +author = "FlintyLemming" +title = "蜗牛星际A款更换电源" +date = "2020-12-13" +description = "" +categories = ["HomeLab", "Consumer"] +tags = ["NAS", "捡垃圾"] +image = "https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/title.jpg?x-oss-process=style/ImageCompress" ++++ + +2019 年购入的蜗牛星际 A 款,当时很便宜,才 240。这个设备好是好,就是有点吵,机箱风扇和电源风扇都挺吵的。 + +机箱风扇比较好搞,加个减速线就行,我是加了个47欧的电阻,声音就好很多了,也不影响散热。但是电源都很麻烦了,而且这个东西我也不敢拆,之前拆过相机,被电容电过。 + +所以索性我就换个电源,一步到位,买了个海韵 250w Flex 电源,淘宝 365 入手,真不便宜,比当时买整个设备都贵了。 + +下面放下电源的实拍照 + +![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/1.jpeg?x-oss-process=style/ImageCompress) + +![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/2.jpeg?x-oss-process=style/ImageCompress) + +是支持全模组的,还是比较不错的。 + +下面拆机,换电源 + +1. 拧下及其后侧的四颗紫色螺丝 + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/3.jpeg?x-oss-process=style/ImageCompress) + +2. 然后就能在侧面看到电源了,很脏… + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/4.jpeg?x-oss-process=style/ImageCompress) + +3. 卸下支架上的一颗螺丝,和机箱后侧的四个螺丝 + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/5.jpeg?x-oss-process=style/ImageCompress) + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/6.jpeg?x-oss-process=style/ImageCompress) + +4. 以及上方的大4pin供电线(这个线插得非常紧……),就可以取下自带电源了。 + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/7.jpeg?x-oss-process=style/ImageCompress) + +5. 接着换上新电源,然后就发现一个问题,这里的支架够不到。这里应该是转为自带电源设计的,所以我这种电源应该是没法用了。 + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/8.jpeg?x-oss-process=style/ImageCompress) + +6. 那没办法,只能用双面胶了…我这边选用比较厚的这种,贴上两层,顺便把电源稍稍垫起。 + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/9.jpeg?x-oss-process=style/ImageCompress) + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/10.jpeg?x-oss-process=style/ImageCompress) + +7. 最后,接上主板、CPU、硬盘供电线 + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/11.jpeg?x-oss-process=style/ImageCompress) + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/12.jpeg?x-oss-process=style/ImageCompress) + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/13.jpeg?x-oss-process=style/ImageCompress) + +8. 最后就是这样 + + ![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/14.jpeg?x-oss-process=style/ImageCompress) + +**然后出了大问题!这么多线我塞不好,盖子盖不上!** + +于是过了一周,定制线搞定…这成本可真不低…… + +![](https://img.mitsea.com/blog/posts/2020/12/%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85A%E6%AC%BE%E6%9B%B4%E6%8D%A2%E7%94%B5%E6%BA%90/15.jpeg?x-oss-process=style/ImageCompress) + +Photo by [Alex Cheung](https://unsplash.com/@alexcpl?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/nas?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) + \ No newline at end of file diff --git a/content/post/8e7cc0b5b40540faac8f561bec460a72/index.zh-cn.md b/content/post/8e7cc0b5b40540faac8f561bec460a72/index.zh-cn.md index 332ee64..b5b1472 100644 --- a/content/post/8e7cc0b5b40540faac8f561bec460a72/index.zh-cn.md +++ b/content/post/8e7cc0b5b40540faac8f561bec460a72/index.zh-cn.md @@ -5,7 +5,7 @@ date = "2019-11-11" description = "" categories = ["HomeLab", "Network"] tags = ["Clash"] -image = "https://img.mitsea.com/blog/posts/2020/05/%E5%8E%9F%E7%94%9F%E7%94%A8%E6%88%B7%E7%9A%84%20iQOO%20%E7%94%9F%E5%AD%98%E6%8C%87%E5%8D%97/title.jpg?x-oss-process=style/ImageCompress" +image = "https://img.mitsea.com/blog/posts/2019/11/ClashR%20%E8%B7%AF%E7%94%B1%E5%99%A8%E5%AE%89%E8%A3%85/title.jpg?x-oss-process=style/ImageCompress" +++ ## 下载内核