先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注go)

正文
我们往杯子里倒水,水位会随着倒入的水量的多少而变化。现在就用这个米尺来测量我们杯子里的水位的高度。水位变化是连续的,而我们只能通过尺子上的刻度来读取水位的高度,获取我们想得到的水位的数字量信息。这个过程,就可以简单理解为我们电路中的 ADC采样。
我们在选取和使用 A/D 的时候,依靠什么指标来判断很重要。由于 AD 的种类很多,分为积分型、逐次逼近型、并行/串行比较型、Σ-Δ型等多种类型。同时指标也比较多,并且有的指标还有轻微差别,在这里我是以同学们便于理解的方法去讲解,如果和某一确定类型A/D 概念和原理有差别,也不会影响实际应用。
ADC 的位数
一个 n 位的 ADC 表示这个 ADC 共有 2 的 n 次方个刻度。8 位的 ADC,输出的是从 0~255 一共 256 个数字量,也就是 2 的 8 次方个数据刻度。
基准源
基准源,也叫基准电压,是 ADC 的一个重要指标,要想把输入 ADC 的信号测量准确,那么基准源首先要准,基准源的偏差会直接导致转换结果的偏差。比如一根米尺,总长度本应该是 1 米,假定这根米尺被火烤了一下,实际变成了 1.2 米,再用这根米尺测物体长度的话自然就有了较大的偏差。假如我们的基准源应该是 5.10V,但是实际上提供的却是 4.5V,这样误把 4.5V 当成了 5.10V 来处理的话,偏差也会比较大。
分辨率
分辨率是数字量变化一个最小刻度时,模拟信号的变化量,定义为满刻度量程与 2n-1 的比值。假定 5.10V 的电压系统,使用 8 位的 ADC 进行测量,那么相当于 0~255 一共 256 个刻度把 5.10V 平均分成了 255 份,那么分辨率就是 5.10/255 = 0.02V。
INL(积分非线性度)和 DNL(差分非线性度)
初学者最容易混淆的两个概念就是“分辨率”和“精度”,认为分辨率越高,则精度越高,而实际上,两者之间是没有必然联系的。分辨率是用来描述刻度划分的,而精度是用来描述准确程度的。同样一根米尺,刻度数相同,分辨率就相当,但是精度却可以相差很大,如图 17-2 所示。

图 17-2 米尺精度对比
图 17-2 表示的精度一目了然,不需多说。和 ADC 精度关系重大的两个指标是 INL(Integral NonLiner)和 DNL(Differencial NonLiner)。
INL 指的是 ADC 器件在所有的数值上对应的模拟值,和真实值之间误差最大的那一个点的误差值,是 ADC 最重要的一个精度指标,单位是 LSB。LSB(Least Significant Bit)是最低有效位的意思,那么它实际上对应的就是 ADC 的分辨率。一个基准为 5.10V 的 8 位 ADC,它的分辨率就是 0.02V,用它去测量一个电压信号,得到的结果是 100,就表示它测到的电压值是 100*0.02V=2V,假定它的 INL 是 1LSB,就表示这个电压信号真实的准确值是在1.98V~2.02V 之间的,按理想情况对应得到的数字应该是 99~101,测量误差是一个最低有效位,即 1LSB。
DNL 表示的是 ADC 相邻两个刻度之间最大的差异,单位也是 LSB。一把分辨率是 1 毫米的尺子,相邻的刻度之间并不都刚好是 1 毫米,而总是会存在或大或小的误差。同理,一个 ADC 的两个刻度线之间也不总是准确的等于分辨率,也是存在误差,这个误差就是 DNL。
一个基准为 5.10V 的 8 位 ADC,假定它的 DNL 是 0.5LSB,那么当它的转换结果从 100 增加到 101 时,理想情况下实际电压应该增加 0.02V,但 DNL 为 0.5LSB 的情况下实际电压的增加值是在 0.01~0.03V 之间。值得一提的是 DNL 并非一定小于 1LSB,很多时候它会等于或大于 1LSB,这就相当于是一定程度上的刻度紊乱,当实际电压保持不变时,ADC 得出的结果可能会在几个数值之间跳动,很大程度上就是由于这个原因(但并不完全是,因为还有无时无处不在的干扰的影响)。
转换速率
转换速率,是指 ADC 每秒能进行采样转换的最大次数,单位是 sps(或 s/s、sa/s,即 samples per second),它与 ADC 完成一次从模拟到数字的转换所需要的时间互为倒数关系。ADC 的种类比较多,其中积分型的 ADC 转换时间是毫秒级的,属于低速 ADC;逐次逼近型 ADC转换时间是微妙级的,属于中速 ADC;并行/串行的 ADC 的转换时间可达到纳秒级,属于高速 ADC。
ADC 的这几个主要指标大家先熟悉一下,对于其它的,作为一个入门级别的选手来说,先不着急深入理解。以后使用过程中遇到了,再查找相关资料深入学习,当前重点是在头脑中建立一个 ADC 的基本概念。
分辨率和精度的概念
很多A/D转换器和仪器厂商常拿分辩率来忽悠人, 很多人的确上套, 即使专业人士也常常逃不过. 其实这两者的区别很大, 但有联系.
1, 精度是接近真实值的程度, 即绝对误差或相对误差的大小.精度做到0.01%极其难
2, 分辩率是量化刻度的细度大小,分辩率做到0.00001%不很难(如24位A/D,0.0000056%)
3, 概念理解:
例1:一把1米的软尺,有1000个刻度,分辩率1毫米(分辩率0.1%),用标准尺量下绝对误差+5毫米,精度+0.5%。如果能把尺拉长20毫米,此时绝对误差+25毫米,精度降为2.5%, 可是尺还是1000个刻度,其分辨率还是1毫米(0.1%).
例2:两杆称来称真重1克的物体, 一杆的结果为1.03克, 另一杆的结果为0.8333333333333333333333333克, 哪个准呢?
4, 关系
分辩率高是精度高的必要条件,不是充分条件;分辩率高不等于精度高. 认定精度才是王道.
“精度”是用来描述物理量的准确程度,其反应的是测量值与真实值之间的误差,而“分辨率”是用来描述刻度划分的,其反应的是数值读取过程中所能读取的最小变化值。简比喻:一把常见的量程为10厘米的刻度尺,上面有100个刻度,最小能读出1毫米的有效值。那么我们就说这把尺子的分辨率是1毫米,他只能1、2、3、4……100这样读值;而它的实际精度就不得而知了,因为用这把尺读出来的2毫米,我们并不知道他与真实绝对的2毫米之间的误差值。而当我们用火来烤一下它,并且把它拉长一段,然后再考察一下它。我们不难发现,它还有100个刻度,因而它的“分辨率”还是1毫米,跟原来一样!然而,它的精度显然已经改变了。
对于编码器来说,“分辨率”除了与刻线数有关外,还会因电气信号方面的影响而改变,它是可调的,可控的,它可以随着对信号的细分而改变,细分倍数越高,分辨率越小,但是细分倍数越高,引入加大的误差就越大。而精度,更多的偏向于机械方面,一个产品生产出来后,他的精度基本已经固定(有些高精度的产品可以对信号进行补偿等来提高精度),这个数值是通过检测出来的,它与产品的做工,材料等综合性能息息相关,我们难以通过计算来得出一个具体的数值作为精度的依据,大多只能在使用的过程当中判断出精度的好坏来。
例如,对于13bit的,其码盘上的绝对位置数为:8192,则:计算出的分辨率为158角秒,也就是说,在读取数值的时候,要求数值间的跳动是158角秒,如果要读取的第一个数值是0,则第二个读取的数值要大于158,若要小于158,则我们需要选取更小的分辨率。当要读取158这个数值的时候,由于误差的存在,并不可能得到绝对的158秒,编码器所读取出来的158秒与绝对真实158秒之间的误差,就取决于精度了。所以说,精度,是在分辨率的基础上来谈的。
而并非越细分得到小的分辨率就越好,因为细分会引入误差和扩大误差,过度的细分将无法保证精度!需要多少倍的细分,能做到多少倍的细分,前提必须是在保证精度的基础上进行的,因为精度在使用前的不可见性而高倍细分是不负责任的。码盘质量越高,刻线越好,信号质量信号越好,细分后产生的误差就越小,这受到一台编码器综合性能的影响,这也就是为什么会在相同的参数下,会有不同品牌,不同价位编码器的一个原因。
例如,我们要读取的数值为1、2、4、7、8,我至少要选择1个单位的分辨率,选择2个单位的分辨率是显然不行的,因为我们读出了1这个数值,则2是读不出来的,在选择1个单位分辨率的基础上,我们读出来的1与真实绝对的1的误差就是精度。机床上的数控系统对于直光栅是有分辨率的设定的,需要读取的数值间隔小于分辨率,机床就有可能会抖动或出错等。
对于绝对式带增量信号编码器,能够精确的保持串行传输的绝对位置值与增量值同步,绝对值确切的对应一个增量信号,位置值一定在一个增量信号的正弦周期之内。如13位绝对式,带512线的增量信号,绝对位置间隔158秒,若要读取两个码盘位置中间的一个位置是不合适的,但是,我们可以通过对其所带的1Vpp增量信号进行细分,如细分100倍,则相当于在两个绝对位置之间又引入了几个细分后的位置,我们可以在绝对位置值的基础上,通过计算细分后的增量脉冲数而读取两个绝对位置之间的一个位置值,如:512线细分100倍,绝对位置1数值是0,绝对位置2数值是158,则读取这两个位置间的位置可以在位置1:数值0的基础上多出一个脉冲则是25,两个则是25x2=50……但是,带增量信号的绝对式编码器本身是不带细分的,这就要求用户能自行的对增量信号进行细分处理。
总结
LSB在位序中表示的是最低位,在ADC中对应的是分辨率。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
HW-1713542693397)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
,2024年最新金三银四Golang面试的一些感受&spm=1001.2101.3001.5002&articleId=137981230&d=1&t=3&u=15454e5648f64b3895ccc4fbecf090f5)
8276

被折叠的 条评论
为什么被折叠?



