Add coding category

stack-3.26.0
FlintyLemming 2022-09-22 15:17:21 +08:00
parent 5833cf2c6d
commit 3a8ce2ea53
5 changed files with 229 additions and 1 deletions

View File

@ -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"
---

View File

@ -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的位置是M2P3的位置是M4P4的位置是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
## 求出校验位的值(数学法)
还是用这一题:
第一步我们要列出整个码字的编码对应的二进制。比如M11对应的就是0001M2就是0010M3就是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。

View File

@ -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)

View File

@ -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)

View File

@ -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"
+++
## 下载内核