硬件基础——模拟电路
本篇为模拟电路。目的是在为计算机和编程做知识的铺垫,在电子电路上了解一些与编程和计算机相关的知识即可。
知识图谱如下

模拟电路是指用来对模拟信号进行传输、变换、处理、放大、测量和显示等工作的电路。它主要包括放大电路、信号运算和处理电路、振荡电路、调制和解调电路及电源。
在模拟电路中,电压高低(或电流大小)是模拟了所代表的物理量的变化,例如声音信号,声音被话筒转换成电压时,电压的高低直接反映了音量大小,声音的频率(音调)直接就是电信号的频率,此谓模拟的概念。
我们现在使用的是晶体管,那么它的前身是谁?
电子管是一种在气密性封闭容器中产生电流传导,利用电场对真空中的电子流的作用以获得信号放大或振荡的电子器件。早期应用于电视机、收音机扩音机等电子设备。

电子二极管,也叫真空二极管。只具有一个阴极与一个阳极(板极)的电子管。它是靠被灯丝加热的阴极发射电子导电的,因为灯丝有热损耗,所以效率比半导体二极管低。

上图来自(https://www.bilibili.com/video/BV1774114798?p=2)

它有一个真空的玻璃泡,阴极是一条加热灯丝,通电后会发出热电子,然后在阳极的吸引下飞向阳极,形成电流。中间有一个栅极,就是用金属丝做的网,通过这个电极来调节流过的电子,起到放大信号的作用.

上图来自(https://www.bilibili.com/video/BV1774114798?p=2)
半导体(semiconductor),指常温下导电性能介于导体(conductor)与绝缘体(insulator)之间的材料。
化学中外核电子为4的在常温下的属性就类似半导体。所以,本文的主角用我们常见的硅来举例(电子为2.8.4——常态下即不容易得到电子,也不容易失去电子。)

元素半导体是由单一元素制成的半导体材料。主要有硅、锗、硒等,以硅、锗应用最广。
纯净的半导体,我们成为本征半导体(可以理解为一群硅在一起,即不会多电子,也不会少电子。电子总数不便的这种)

N型半导体:在纯净的硅晶体中掺入五价元素(如磷),使之取代晶格中硅原子的位置,形成N型半导体。(多了一个电子,电子带负电,取名消极(Negetive)简称N型半导体doge)

P型半导体:在纯净的硅晶体中掺入三价元素(如硼),使之取代晶格中硅原子的位置,就形成了P型半导体。(少了一个电子,空出来一个位置,这个空位置称空穴 ,可以理解为整体需要吸引电子(也就是带”正电“)取名积极(Positive)简称P型半导体doge)

有了P型和N型半导体,我们就可以做很多事情了。比如这个‘最简单’的PN结。
PN结实一种特殊的材料基础结构:将P和N半导体以特定的工艺进行原子级的结合就可以产生PN结。

因P型半导体中的空穴和N型半导体中的电子互相‘渗透’会形成一个接触电场,方向为从N端指向P端。

当分别在P,N端加上电压时,PN结将表现出宝贵的单项导电性。
P+正电,N为负电,电场被消弱,PN结导通

正向导通时,因接触电场的存在,将会在结上形成一固定降压,硅PN结降压一般为0.6V左右,为了好算直接按0.7V计算(0.7必定够用~)

上图来自(https://www.bilibili.com/video/BV1774114798?p=3)
N+正电,P为负电,电场被加强,电子无法通过

晶体管(transistor)是一种固体半导体器件(包括二极管、三极管、场效应管、晶闸管等,有时特指双极型器件),具有检波、整流、放大、开关、稳压、信号调制等多种功能。晶体管作为一种可变电流开关,能够基于输入电压控制输出电流。
了解了PN结,晶体二极管就好理解了。
在PN区分别接上欧姆接触电极,就构成了晶体二极管。

双极结型晶体管,又称三极管。他与二极管的区别是有三个引出的电极,基本组成还是PN结。以NPN型为例。

2号通电时(0.7V)打通PN结,1号电子涌入2号,而二号做的薄还小存不了这么多电子,会涌入低浓度的三号。

当三号通正电时候,大量的电子会涌入到三号(电子是负电,被正电吸引~)相当于1号和3号通电了!

此时2号只要有极少的变化,3号就会有很大的变化。眼熟不?!这不就是三极管吗

可以分为发射极,基极,集电极

晶体三极管作用和电子三极管一样,都是放大信号。
本篇文章了解三极管是什么就行,非专业不要深究!!!
MOS场效应管即金属-氧化物-半导体型场效应管,英文缩写为MOSFET(Metal-Oxide-Semiconductor Field-Effect-Transistor,即金属氧化物合成半导体的场效应晶体管),属于绝缘栅型。

上图来自(https://www.bilibili.com/video/BV1774114798?p=6)

上图来自(https://www.bilibili.com/video/BV1774114798?p=6)
原理我就不深究了,只要知道栅极的正负控制电路的通阻,换句话说:正电为1,负电为0.这不就是计算机梦开始的地方吗!
如果想了解mos场效应管,可查看参考资料。附上大神文章链接了,需要自取。
参考资料——
逻辑资料:《编程前你最好了解的基本硬件和计算机基础知识(模拟电路)》https://www.bilibili.com/video/BV1774114798?spm_id_from=333.999.0.0
备注资料:
360百科《半导体》https://baike.so.com/doc/1619052-1711651.html
黑皮书《计算机科学概论》
《详细分析mos场效应管的基本结构及工作原理-图文详解-KIA MOS管》--------http://www.kiaic.com/article/detail/1088.html
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
假设我在Store的模型中有这个非常简单的方法:defgeocode_addressloc=Store.geocode(address)self.lat=loc.latself.lng=loc.lngend如果我想编写一些不受地理编码服务影响的测试脚本,这些脚本可能已关闭、有限制或取决于我的互联网连接,我该如何模拟地理编码服务?如果我可以将地理编码对象传递到该方法中,那将很容易,但我不知道在这种情况下该怎么做。谢谢!特里斯坦 最佳答案 使用内置模拟和stub的rspecs,你可以做这样的事情:setupdo@subject=MyCl
在ruby中,你可以这样做:classThingpublicdeff1puts"f1"endprivatedeff2puts"f2"endpublicdeff3puts"f3"endprivatedeff4puts"f4"endend现在f1和f3是公共(public)的,f2和f4是私有(private)的。内部发生了什么,允许您调用一个类方法,然后更改方法定义?我怎样才能实现相同的功能(表面上是创建我自己的java之类的注释)例如...classThingfundeff1puts"hey"endnotfundeff2puts"hey"endendfun和notfun将更改以下函数定
我有一个gem,它有一个根据Rails.env的不同行为的方法:defself.envifdefined?(Rails)Rails.envelsif...现在我想编写一个规范来测试这个代码路径。目前我是这样做的:Kernel.const_set(:Rails,nil)Rails.should_receive(:env).and_return('production')...没关系,只是感觉很丑。另一种方法是在spec_helper中声明:moduleRails;end而且效果也很好。但也许有更好的方法?理想情况下,这应该有效:rails=double('Rails')rails.sho
我有一个rspec模拟对象,一个值赋给了属性。我正在努力在我的rspec测试中满足这种期望。只是想知道语法是什么?代码:defcreate@new_campaign=AdCampaign.new(params[:new_campaign])@new_campaign.creationDate="#{Time.now.year}/#{Time.now.mon}/#{Time.now.day}"if@new_campaign.saveflash[:status]="Success"elseflash[:status]="Failed"endend测试it"shouldabletocreat
我正在尝试测试命令行工具的输出。如何使用rspec来“伪造”命令行调用?执行以下操作不起作用:it"shouldcallthecommandlineandreturn'text'"do@p=Pig.new@p.should_receive(:run).with('my_command_line_tool_call').and_return('resulttext')end如何创建stub? 最佳答案 使用newmessageexpectationsyntax:规范/虚拟规范.rbrequire"dummy"describeDummy