阡陌 发布的文章

阡陌

回忆矿石收音机(译)

作者:David Goodsell from:https://www.nutsvolts.com/magazine/article/remembering-the-crystal-radio 在 1952 年,我 12 岁的时候,制作了一台矿石收音机。那是一个来自芝加哥联合广播公司的套件,售价 2.5 美元。我花了很多时间待在地下室里,头戴耳机,小心翼翼地调整可变电容器,以接收附近和远处的电台。有些电台信号非常微弱,以至于我年幼的想象力让我觉得自己可能在收听秘密信息。 如今,你只需要让 Alexa 调到任何一个电台,就可以收听他们的节目。再也不用忍受不舒服的酚醛塑料耳机了。在这篇文章中,我想分享 20 世纪 50 年代和 60 年代那些原始的矿石收音机的工作原理,希望能唤起你们中那些也制作过这些神秘收听设备的人的遥远记忆。顺便说一句,Etsy 网站上出售许多复古风格的矿石收音机套件,它们是由真正的木头制成的,而不是塑料!无需电池。 记忆恢复 图1展示了我在 eBay 上找到的一台非常熟悉的矿石收音机的修复过程。 图1. 这台来自芝加哥联合广播公司的修复后的矿石收音机套件在 20 世纪 50 到 60 年代售价 2.5 美元。 事实上,它和我几十年前最初制作的那个模型完全一样。我不记得我的旧收音机发生了什么;也许是我把它留在阁楼里,然后我妈妈把它扔掉了。图 2 展示了我收到的未经修复的收音机。它显然需要一些温柔和关爱。 图 2. 这台未经修复的矿石收音机是在 eBay 上找到的,附带一个耳机。它需要一些爱护。 关于制作第一台收音机,我记忆犹新的一件事是,我烧坏了 1N34A 锗二极管。那时,我们家只有一个巨大的 100 瓦 Weller 烙铁,而我严重过热了那个可怜的小二极管。更换一个要花费 0.43 美元。幸运的是,这些年来,我的焊接设备和技术都有所提高。小时候,我在绕大线圈时也遇到了麻烦。每当我绕线时,它就会松开,所以我爸爸耐心地帮我把它绕紧。 简单的原理图,长长的天线 晶体收音机通过使用简单的解调方案来接收调幅(AM)电台。原理图如图 3 所示。 图 3. 早期的晶体收音机使用天然方铅矿矿石而不是锗二极管来检测音频调制。 直径为 1.5 英寸的线圈和可变电容器形成一个谐振电路来选择频率,二极管对调制后的射频载波进行整流(解调)。如果没有二极管,调制会同时产生相等且相反的交变电压,这在耳机中会平均为零。没有声音。 二极管剥离了一个极性,耳机对产生的脉动直流电作出响应。波形图包含在图3的原理图中。更深入的解释,请参阅维基百科上关于矿石收音机和矿石检测器的精彩条目。 联合广播公司的手册中有一个建议的 50 英尺倒 L 型天线配置的图表。我决定完全按照手册和图 3 中的描述重新创建它。图 4 展示了我在我最喜欢的网站上找到的复古绝缘子和避雷器。请注意避雷器包装盒的“不完美”状态。 图 4. 室外天线使用避雷器进行保护,并使用玻璃绝缘子将接收线与地面隔离。 提高效率就是诀窍 矿石收音机的隐藏魔力在于,它们能够捕获来自遥远发射台的几乎无穷小(纳瓦到微瓦)的功率,并有效地将其转换为我们的耳朵能听到的声音。无需电池。无需放大器。 联合广播公司的设计通过使用感应耦合变压器和 20 匝初级绕组来更好地匹配天线的阻抗,从而最大限度地提高了效率。 次级在检测二极管处接点,这样可以减少对调谐电路的负载,并改善与检测器的阻抗匹配。 最后,高阻抗耳机将解调后的音频信号转换为声音。 让我们用 LCR 表检查元件 为了好玩,我想测量一下调到 960 千赫电台时谐振电路元件的大致值。我使用了互联网上广告的那种小型 LCR 元件测试仪。它们的售价仅为 19 美元或更低,而且相当准确。 图 5 展示了测量的次级线圈。 图 5. 当调到 960 千赫时,直径为 1.5 英寸的线圈和调谐电容器的测量值为 0.18 mH 和 154 pfd。 它显示为 0.18 mH,这与在线电感计算器的结果非常接近。在线计算器显示,对于那么大尺寸的线圈,电感应该是 0.176 mH。非常准确。 最后,我测量了调到 960 千赫电台时的可变电容器:154 pfd。 谐振频率: $$ \frac{1}{2\pi\sqrt{LC}} $$ 因此,0.18 mH(L)和154 pfd(C)= 956 kHz(相对于 960 kHz 的广播频率)。非常接近! 探索方铅矿矿石 有些早期的矿石收音机使用一种特殊的检波器,称为方铅矿矿石。方铅矿是结晶矿物硫化铅(PbS)的另一种名称。图 6 显示了一小块方铅矿矿石,它埋在一个小的低温焊锡制成的圆锭中,上面有一根触须与表面接触。 图 6:方铅矿矿石需要用一根微小的“触须”在其表面周围来回移动,以找到接收效果好的区域。 它不像 1N34A 那样是一个密封的单元。事实上,你必须在方铅矿的不规则表面上用细小的触须轻轻地来回移动,才能使其工作。只有某些区域才能作为整流结并表现出二极管特性。 图 7 显示了我从方铅矿矿石、1N34A、1N914B 和 1N4007 获得的二极管曲线轨迹。 图 7:各种二极管的曲线轨迹表明,方铅矿和锗二极管在此应用中的性能优越。 硅二极管不能很好地作为检波器,因为它们的拐点发生在电压过高的情况下,无法检测到矿石收音机中的微弱信号。一个视频显示我在方铅矿矿石周围来回移动以寻找最佳的收音机接收效果,可以在 https://youtu.be/auz64mtoVLY 找到。 收听电台的乐趣 还有最后一件事。我碰巧有一个小型电池供电的 RadioShack 音频放大器,所以我把它接在耳机的位置。哇!其中一个电台轰鸣声大作。非常大声! 我在谷歌上查了一下,发现广播天线距离我的位置只有四英里,白天它的功率达到了 5000 瓦!难怪这么大声!幸运的是,该电台每晚将其功率降低到 20 瓦,我能够调到其他几个电台。 即使在这么多年之后,调谐波段并看看我能接收到多少电台仍然令人兴奋。也许我会架起一个更长的 T 型天线,做一些真正的远程通信。 总的来说,我很享受重温我年轻时的激动时刻,并希望你们能考虑向你们的孩子和/或孙子介绍矿石收音机的世界。请随时通过 dsgoodsell@verizon.net与我联系,提出任何意见或分享你们的经历。 附言:如果你仍然有一个老式的矿石收音机藏在壁橱里,你会得到一颗金星。请告诉我。...

矿石检波器

1874 年,卡尔·费迪南德·布劳恩发现了某些天然矿石具有单向导通的特性,这可以被视为人类第一次发现半导体的整流特性,也是矿石检波二极管最早的雏形。随后,在 1894 年,贾格迪什·钱德拉·博斯利用方铅矿的单向导电性,制成了世界上第一个检波器——矿石检波器。英文叫:crystal detector,又叫:cat's whisker radio detector(猫须检波器),因为它是用一根细金属丝,与方铅矿进行接触,利用接触点的单向导电性进行检波的。 早期人们并没有完全理解矿石检波器的内在机理,直到 20 世纪 30 年代,人们才逐渐认识到矿石检波器实际上是利用金属-半导体接触点形成的肖特基势垒具有的单向导电性进行检波的。 肖特基势垒具有单向导电性的原理是基于金属与半导体(通常是N型半导体)接触时形成的势垒。当金属与 N 型半导体接触时,由于金属的功函数通常高于半导体的功函数,电子会从半导体流向金属,直到两者的费米能级相等。这个过程会在半导体表面形成一层正的空间电荷区,同时产生一个由半导体指向金属的内建电场。 这个内建电场会阻止电子从金属流向半导体,从而形成肖特基势垒。此时,半导体一侧的能带会向上弯曲,形成势垒高度。这个势垒高度决定了电子从金属流向半导体的难易程度。 在正向偏压下(即金属接正电压,半导体接负电压),内建电场会被削弱,半导体一侧的势垒高度降低,从而允许电子从金属流向半导体,形成正向电流。此时,肖特基势垒表现出单向导电性。 反之,在反向偏压下,内建电场会增强,势垒高度增加,电子从半导体流向金属的难度增大,因此反向电流很小。这就是肖特基势垒具有单向导电性的原理。 需要注意的是,肖特基势垒的单向导电性与 PN 结二极管有所不同。在 PN 结二极管中,正向偏压下是由于 P 区和 N 区的多数载流子相互扩散而形成电流;而在肖特基势垒中,正向电流主要是由于金属中的电子进入半导体的导带而形成的。因此,肖特基二极管通常具有更低的正向压降和更快的开关速度。 矿石检波二极管在无线电技术的发展过程中发挥了重要作用。例如,在 1900 年,美国人格林里夫·惠特勒·皮卡德基于矿石检波器成功制造了世界上第一个矿石收音机,这为无线电广播的迅速普及奠定了基础。此外,在无线电通信、电视接收等领域,矿石检波二极管也得到了广泛应用。 矿石检波器的工作原理是基于其单向导电性。当无线电波通过矿石检波器时,矿石会只允许电流在一个方向上通过,从而将无线电信号中的高频成分滤除,只保留音频信号。这样,矿石检波器就能将无线电波转换为可听的声音信号,通过耳机或扬声器播放出来。 除了方铅矿,具有单向导电性的矿石还有黄铁矿**、**硫化锌等。需要注意,这些矿石的导电性能可能受到多种因素的影响,如矿石的纯度、颗粒大小、温度等。因此,在实际应用中,可能需要对矿石进行一定的处理或选择,以获得最佳的导电效果。 矿石检波器有固定矿石检波器和活动矿石检波器两种类型。固定矿石检波器的矿石是固定的,无法调整其位置或压力。而活动矿石检波器则允许通过调整矿石的位置或压力来改变其单向导电性,以获得最佳的检波效果。 矿石检波器是矿石收音机的重要组成部分,矿石收音机是一种最简单的无线电接收装置,主要用于接收中波公众无线电广播。这种收音机无需电源,节能环保,而且可以用来测试天线或地线的效率,引导初学者和小朋友进入无线电广播的天地。尽管现代的无线电接收设备已经更加先进和稳定,但矿石检波器作为电子技术的早期应用之一,在无线电发展史上仍然具有重要的地位。...

场效应管

场效应管(Field Effect Transistor,FET)也是 Transistor,而且基本形式也是三个脚,那它是不是三极管(Transistor)的一种呢? "Transistor" 这个词的英文原意是由 "transfer" 和 "resistor" 两个词组合而成的。"transfer" 表示转移或传送,而 "resistor" 表示电阻器。因此,"transistor" 的字面意思是“转移电阻器”或“传送电阻器”。然而,在电子学中,"transistor" 并不是真的用来“转移电阻”的。实际上,晶体管(transistor)是一种半导体器件,用于放大或开关电子信号。晶体管通过控制输入电流或电压来控制输出电流,从而实现信号的放大或开关功能。所以,通常晶体管特指由电流放大作用的晶体三极管(也称双极型晶体管),在更广泛的语境中,Transistor 可用来指代各种类型的晶体管,而不仅限于三极管。 场效应管是一种电压控制型半导体器件,也称为单极型晶体管。它依靠半导体中的多数载流子导电,并利用控制输入回路的电场效应来控制输出回路的电流。FET 具有输入电阻高、噪声小、功耗低、动态范围大、易于集成、没有二次击穿现象、安全工作区域宽等优点,现已成为双极型晶体管和功率晶体管的强大竞争者。 上边提到了两个概念:单极型晶体管与双极型晶体管。那么这里的“极型”又是什么意思呢?它通常指的是半导体材料中载流子(电子和空穴)的类型以及它们如何响应外部电场或电压。单极型晶体管和双极性晶体管(双极型晶体管)是两种不同类型的晶体管,它们在工作原理、结构和应用方面有所不同。 单极型晶体管(Unipolar Transistor): 单极型晶体管主要依靠一种载流子(要么是电子,要么是空穴)来导电。 场效应管(FET)就是一种单极型晶体管。在场效应管中,电流是通过半导体中的多数载流子(在 N 型半导体中是电子,在 P 型半导体中是空穴)流动的。 FET 通过改变栅极(Gate)与源极(Source)之间的电压来控制沟道的导电性,从而控制漏极(Drain)与源极之间的电流。 双极性晶体管(Bipolar Transistor): 双极性晶体管同时利用电子和空穴两种载流子来导电。 常见的双极性晶体管有 NPN 型和 PNP 型两种。在这两种晶体管中,都有两个 PN 结,因此得名“双极”。 双极性晶体管通过控制基极(Base)与发射极(Emitter)之间的电流来控制集电极(Collector)与发射极之间的电流。这种控制作用是通过 PN 结的放大效应实现的。 简而言之,“极型”在这里指的是晶体管中参与导电的载流子类型(电子或空穴),以及晶体管结构中所涉及的 PN 结的数量和类型。单极型晶体管主要依赖一种载流子,而双极性晶体管则同时利用电子和空穴。 FET 主要有两种类型:结型场效应管(Junction FET,JFET)和金属-氧化物半导体场效应管(Metal-Oxide Semiconductor FET,MOSFET)。 FET 的工作原理是通过控制栅极(Gate)与源极(Source)之间的电压(即栅源电压 $V_{GS}$),进而改变漏极(Drain)与源极之间的电流(即漏源电流 $I_{DS}$)。当栅源电压为零时,由于 P 型半导体和 N 型半导体在空间电荷分布上的差别,会在内部产生一个电动势,这个电动势会阻止外部电流通过,此时 FET 处于截止状态。当栅源电压增加时,会吸引更多的载流子到栅极下方,形成一个导电沟道,此时 FET 开始导通,漏源电流会随着栅源电压的增加而增加。 FET 的特性包括高输入阻抗、低噪声、低功耗、高速度等,这些特性使得 FET 在模拟电路、数字电路、功率电路等领域都有广泛的应用。例如,FET 可以用作放大器、开关、振荡器、滤波器等电路元件,也可以用于制造传感器、存储器等电子器件。 理解场效应晶体管,先从 JFET 开始。 与三极管类似,箭头画在栅极 G,总是指向 N 型半导体,这是用来区分电路符号是 N 沟道还是 P 沟道的。 结型场效应晶体管(Junction Field-Effect Transistor,JFET):JFET 是由 PN 结栅极(G)与源极(S)和漏极(D)构成的一种具有放大功能的三端有源器件。其工作原理就是通过电压改变沟道的导电性来实现对输出电流的控制。 在一块 N 型半导体上制作两个高掺杂的 P 区并将它们连接在一起,所引出的电极称为栅极 G(Gate),N 型半导体两端分别引出两个电极,分别称为漏极 D(Drain),源极 S(Source)。从名字上来理解也是很通俗的,场效应晶体管好比是水空头,源极 S 是水的来源(进水口),漏极 D 是排水(Drain)口(出水口),而栅极 G 则是阀门。当改变 $V_{GS}$ 时,沟道的宽窄发生了变化,当电压达到一定程度,阀门彻底关闭,阻断电流。 场效应管是一种单极型晶体管,它只有一个 PN 结,在零偏压的状态下, 它是导通的,如果在其栅极(G)和源极(S)之间加上一个反向偏压(称栅极偏压)在反向电场作用下 PN 结变厚(称耗尽区)沟道变窄,其漏极电流将变小(如图 b) ;反向偏压达到一定时, 耗尽区将完全沟道“夹断”,此时,场效应管进入截止状态(如图 c),此时的反向偏压我们称之为夹断电压 $V_p$。 夹断电压($V_p$)与 $V_{GS}$(栅源电压)之间的关系在场效应管(特别是结型场效应管(JFET)和耗尽型绝缘栅型场效应管(MOSFET))的工作原理中非常重要。 对于这两种类型的场效应管,当 $V_{GS} = 0$ 时,已经存在导电沟道。随着 $V_{GS}$ 的负向增大(对于 N 沟道器件)或正向减小(对于 P 沟道器件),沟道逐渐变窄,沟道电阻增大,漏极电流 $I_D$ 逐渐减小。当 $V_{GS}$ 达到某个特定值时,沟道会完全夹断,此时 $I_D$ 几乎为 0。这个特定的 $V_{GS}$ 值就是夹断电压 $V_p$。 换句话说,夹断电压 $V_p$ 是使得沟道完全夹断、漏极电流 $I_D$几乎为 0 的 $V_{GS}$ 值。在 $V_{GS}$ 达到 $V_p$ 之前,场效应管处于导通状态,沟道中存在电流;当 $V_{GS}$ 达到或超过 $V_p$ 时,场效应管进入夹断区,沟道被夹断,电流几乎无法通过。 需要注意的是,对于增强型绝缘栅型场效应管(如增强型MOSFET),在 $V_{GS} = 0$ 时沟道是不存在的,需要正的 $V_{GS}$(对于 N 沟道器件)或负的 $V_{GS}$(对于 P 沟道器件)来开启沟道。因此,夹断电压的概念对于增强型器件来说并不完全适用,而是用开启电压或阈值电压来描述其特性。 对于结型场效应晶体管(JFET),最常见到的是耗尽型 JFET(D-JFET),即在 0 栅偏压时就存在有沟道的 JFET;一般,不使用增强型 JFET(E-JFET)——在 0 栅偏压时不存在沟道的 JFET。这主要是由于长沟道 E-JFET 在使用时较难以产生出导电的沟道、从而导通性能不好的缘故。不过,由于高速、低功耗电路中应用的需要,有时也需要采用 E-JFET。 JFET 导电的沟道在体内。耗尽型和增强型这两种晶体管在工艺和结构上的差别主要在于其沟道区的掺杂浓度和厚度。D-JFET 的沟道的掺杂浓度较高、厚度较大,以致于栅 PN 结的内建电压不能把沟道完全耗尽;而 E-JFET 的沟道的掺杂浓度较低、厚度较小,则栅 PN 结的内建电压即可把沟道完全耗尽。 但是,对于短沟道 E-JFET,情况则有所不同,因为这种晶体管的漏极电压可以作用到源极附近,使得沟道中的势垒降低,所以能够形成导电沟道。这种 E-JFET 从本质上来说也就是静电感应晶体管。 金属-氧化物半导体场效应管(Metal-Oxide Semiconductor FET,MOSFET)它的结构主要由金属、氧化物(通常为 $SiO_2$ 或 SiN)和半导体材料构成。 这种晶体管具有源极(Source)、栅极(Gate)、漏极(Drain)和主体(Body,也称衬底)四个端子。通常, MOSFET 的主体与源极端子会连接在一起,从而使其在三端模式下工作,与常规场效应晶体管相似。 MOSFET 的工作原理是通过控制栅极与源极之间的电压,即栅源电压($V_{GS}$),来改变漏极与源极之间的电流,即漏源电流($I_{DS}$)。具体地说,当在栅极和源极之间施加适当的电压时,会在半导体中形成一个导电沟道,使电流能够从源极流向漏极。沟道的形成和宽度受到栅极电压的控制,从而实现了对电流的调控。 原理图符号相对来说复杂了些,但很类似,不同的是箭头画在了衬底极,相同的是总是指向 N 型半导体(沟道或衬底),可以用来区分电路符号是 N 沟道还是 P 沟道的。二极管可以理解为 D 与衬底形成的 PN 结。 MOSFET 和 JFET 都是场效应晶体管(FET),不过,它们在结构和工作原理上存在一些明显的差异: 结构:JFET 是一种结型场效应晶体管,具有三个端子:源极、漏极和栅极,且其栅极是反向偏置的。而 MOSFET 是金属氧化物半导体场效应晶体管,通常具有四个端子,包括源极、漏极、栅极和衬底(尽管在实际应用中,衬底通常与源极连接,因此有时也将其视为三端器件)。 工作原理:在工作原理上,JFET 只能在耗尽模式下工作,即通过控制栅极电压来耗尽沟道中的载流子,从而控制漏极和源极之间的电流。而 MOSFET 既可以在耗尽模式下工作,也可以在增强模式下工作。在增强模式下,当栅极电压超过阈值电压时,会在沟道中形成反型层,从而允许电流从源极流向漏极。 输入阻抗:JFET 和 MOSFET 都具有很高的输入阻抗,但 MOSFET 的输入阻抗通常比 JFET 更高,这得益于金属氧化物绝缘体在栅极和沟道之间提供的高电阻。 栅极泄漏电流:虽然 JFET 和 MOSFET 的栅极泄漏电流都相对较小,但 MOSFET 的栅极泄漏电流通常比 JFET 更小,这有助于降低功耗和提高器件的稳定性。 总的来说,MOSFET 和 JFET 在结构、工作原理、输入阻抗和栅极泄漏电流等方面存在差异。这些差异使得 MOSFET 在某些应用场合(如低功耗、高输入阻抗和需要增强模式操作等)具有优势,而 JFET 则在其他应用场合(如简单结构和较低成本等)具有优势。 由于 MOSFET 具有的多种优点,如输入电阻高、噪声小、功耗低、动态范围大、易于集成、没有二次击穿现象以及安全工作区域宽等。这些特性使得 MOSFET 在电子开关领域具有广泛的应用,并已成为功率晶体管和双极型晶体管的有力竞争...

晶体二极管

在现代电子设备中,无数微小的组件共同工作,才使得我们的生活如此便捷。其中,晶体二极管(Crystal Diode)或更常见的称呼——二极管(Diode),是一种至关重要的电子元件。它的发明改变了电子技术的发展方向,使得电子设备变得更小、更快、更可靠。 在晶体二极管发明之前,主要使用的是真空电子管作为二极管的替代品。真空电子管在早期的电子设备中扮演了重要角色,用于放大电信号和进行整流等操作。然而,真空电子管存在一些显著的缺点,如制作困难、体积庞大、耗能高以及使用寿命相对较短。 正因为真空电子管的这些不足,业界开始迫切期望能够出现一种更为先进、实用的电子管替代品。这种需求推动了半导体技术的研究和发展,最终导致了晶体二极管的诞生。晶体二极管的出现不仅克服了真空电子管的缺点,而且具有更小的体积、更低的能耗和更长的使用寿命,极大地推动了电子技术的进步和电子设备的发展。 晶体二极管的起源可以追溯到 20 世纪初的“晶体检波器”时期。然而,真正的二极管——具有明显单向导电性的设备——是在 20 世纪 40 年代才被发明出来的。最为人们熟知的二极管类型是 1947 年由贝尔实验室的科学家沃尔特·布拉顿、约翰·巴丁和威廉·肖克莱发明的点接触型锗二极管。这一突破性的发明为后来的晶体管,以及集成电路的发展铺平了道路,他们也因此获得了 1956 年的诺贝尔物理学奖。晶体二极管之所以被称为“晶体”,是因为它的主要构成材料是晶体,如单晶硅或单晶锗。这些晶体材料具有特殊的电学性质,使得晶体二极管能够具有单向导电性,即只允许电流从一个方向通过。 二极管符号中箭头(三角形顶端)指向 N N 型半导体(N 为 Negative 的字头,由于电子带负电荷而得此名):掺入少量杂质磷元素(或锑元素)的硅晶体(或锗晶体)中,由于半导体原子(如硅原子)被杂质原子取代,磷原子外层的五个外层电子的其中四个与周围的半导体原子形成共价键,多出的一个电子几乎不受束缚,较为容易地成为自由电子。于是,N型半导体就成为了含电子浓度较高的半导体,其导电性主要是因为自由电子导电。 P 型半导体(P 为 Positive 的字头,由于空穴带正电而得此名):掺入少量杂质硼元素(或铟元素)的硅晶体(或锗晶体)中,由于半导体原子(如硅原子)被杂质原子取代,硼原子外层的三个外层电子与周围的半导体原子形成共价键的时候,会产生一个“空穴”,这个空穴可能吸引束缚电子来“填充”,使得硼原子成为带负电的离子。这样,这类半导体由于含有较高浓度的“空穴”(“相当于”正电荷),成为能够导电的物质。 PN 结:PN 结是由一个 N 型掺杂区和一个 P 型掺杂区紧密接触所构成的,其接触界面称为冶金结界面。 在一块完整的硅片上,用不同的掺杂工艺使其一边形成 N 型半导体,另一边形成 P 型半导体,我们称两种半导体的交界面附近的区域为 PN 结。 在 P 型半导体和 N 型半导体结合后,由于 N 型区内自由电子为多子,空穴几乎为零称为少子,而 P 型区内空穴为多子,自由电子为少子,在它们的交界处就出现了电子和空穴的浓度差。由于自由电子和空穴浓度差的原因,有一些电子从 N 型区向 P 型区扩散,也有一些空穴要从 P 型区向 N 型区扩散。它们扩散的结果就使 P 区一边失去空穴,留下了带负电的杂质离子,N 区一边失去电子,留下了带正电的杂质离子。开路中半导体中的离子不能任意移动,因此不参与导电。这些不能移动的带电粒子在 P 和 N 区交界面附近,形成了一个空间电荷区,空间电荷区的薄厚和掺杂物浓度有关。 在空间电荷区形成后,由于正负电荷之间的相互作用,在空间电荷区形成了内电场,其方向是从带正电的 N 区指向带负电的 P 区。显然,这个电场的方向与载流子扩散运动的方向相反,阻止扩散。另一方面,这个电场将使 N 区的少数载流子空穴向 P 区漂移,使 P 区的少数载流子电子向 N 区漂移,漂移运动的方向正好与扩散运动的方向相反。从 N 区漂移到 P 区的空穴补充了原来交界面上 P 区所失去的空穴,从 P 区漂移到 N 区的电子补充了原来交界面上 N 区所失去的电子,这就使空间电荷减少,内电场减弱。因此,漂移运动的结果是使空间电荷区变窄,扩散运动加强。最后,多子的扩散和少子的漂移达到动态平衡。在 P 型半导体和 N 型半导体的结合面两侧,留下离子薄层,这个离子薄层形成的空间电荷区称为 PN 结。PN 结的内电场方向由 N 区指向 P 区。在空间电荷区,由于缺少多子,所以也称耗尽层。 从 PN 结的形成原理可以看出,要想让 PN 结导通形成电流,必须消除其空间电荷区的内部电场的阻力。很显然,给它加一个反方向的更大的电场,即 P 区接外加电源的正极,N 区接负极,就可以抵消其内部自建电场,使载流子可以继续运动,从而形成线性的正向电流。而外加反向电压则相当于内建电场的阻力更大,PN 结不能导通,仅有极微弱的反向电流(由少数载流子的漂移运动形成,因少子数量有限,电流饱和)。当反向电压增大至某一数值时,因少子的数量和能量都增大,会碰撞破坏内部的共价键,使原来被束缚的电子和空穴被释放出来,不断增大电流,最终PN结将被击穿(变为导体)损坏,反向电流急剧增大。 这就是 PN 结的特性(单向导通、反向饱和漏电或击穿导体),也是晶体管和集成电路最基础、最重要的物理原理,所有以晶体管为基础的复杂电路的分析都离不开它。比如二极管就是基于 PN 结的单向导通原理工作的;而一个 PNP 结构则可以形成一个三极管,里面包含了两个 PN 结。二极管和三极管都是电子电路里面最基本的元件。 二极管有许多种类,根据材料、结构、功能等不同的分类标准,可以将其分为不同类型。 根据材料,二极管主要分为硅二极管和锗二极管。硅二极管的工作温度范围更广,稳定性更好,因此在现代电子设备中更为常见。锗二极管的正向导通电压通常比硅二极管低。 根据结构,二极管可以分为点接触型、面接触型和平面型等。不同类型的二极管在电流容量、工作速度、耐压能力等方面有所不同。 根据功能,二极管还可以分为整流二极管、检波二极管、稳压二极管、开关二极管、发光二极管(LED)等。这些二极管在电子设备中发挥着各种各样的作用,如电源整流、信号检测、电压稳定、电路开关、指示和照明等。 晶体二极管作为现代电子技术的基石之一,其重要性不言而喻。从无线电、电视、电脑,到手机、LED照明、太阳能电池板,无数我们日常生活中离不开的电子设备,其内部都有二极管的身影。随着科技的不断发展,二极管也在不断进步,更小、更快、更节能的二极管正在不断被研发出来,为我们的未来带来更多可能...

Linux 目录结构

/usr - 用于存放用户安装的软件和文件的地方。它包含了许多子目录,每个子目录有自己的特定用途。也许有人会认为它是 user 的缩写,但实际上是 Unix System Resources 的缩写,也就是 Unix 操作系统软件资源。所有系统默认的软件都会放置到 /usr 底下,因此这个目录有点类似 Windows 系统的 “C:\Windows\ + C:\Program Files\” 这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。 值得注意的是,虽然在一些 Unix 系统上,仍然把 /usr/someone 当做用户家目录,如 Minix,但现代的 /usr 只专门存放各种程序和数据,用户目录已经转移到了 /home。 /usr/bin 中包含用户程序的二进制文件。如果你在 /bin 中找不到用户二进制文件,到 /usr/bin 目录看看。例如:at、awk、cc、less、scp。 /usr/sbin 中包含系统管理员的二进制文件。如果你在 /sbin 中找不到系统二进制文件,到 /usr/sbin 目录看看。例如:atd、cron、sshd、useradd、userdel。 /usr/bin 和 /bin 在 Linux 系统中都用于存放可执行文件,但它们之间存在一些重要的区别。 首先,/bin 目录是所有用户都可以访问并执行的可执行程序,包括超级用户及一般用户。它主要存放一些系统的必备执行档,例如 cat、cp、chmod、df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar 等。 而 /usr/bin 目录则存放一些用户安装的软件的运行脚本,如 c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp 等。这些命令在 Linux 系统里的配置文件脚本里经常用到。 从用户权限的角度来看,/bin 目录下的命令管理员和一般的用户都可以使用,而 /sbin 目录下的命令通常只有管理员才可以运行。 此外,/bin 和 /sbin 目录是在系统启动后挂载到根文件系统中的,所以它们必须和根文件系统在同一分区。而 /usr/bin 和 /usr/sbin 可以和根文件系统不在一个分区。 /usr/lib 中包含了 /usr/bin 和 /usr/sbin 用到的库。 /lib 则是存放 /bin/ 和 /sbin/ 中二进制文件必要的库文件的目录。 /usr/local 中包含了从源安装的用户程序。例如,当你从源安装 Apache,它会在 /usr/local/apache2 中。 /opt - 可选的附加应用程序。 opt 代表可选的。包含从个别厂商的附加应用程序,附加应用程序应该安装在 /opt/ 或者 /opt/ 的子目录下。 /boot - 引导程序文件目录 例如:kernel、initrd。通常是一个单独的分区。 /etc - 配置文件目录 特定主机系统范围内的配置文件。 /dev - 设备目录 设备文件分为两种:块设备文件(b)和字符设备文件(c) 设备文件一般存放在 /dev 目录下,对常见设备文件作如下说明: 目录 描述 /dev/hd[a-t] IDE设备 /dev/sd[a-z] SCSI设备 /dev/fd[0-7] 标准软驱 /dev/md[0-31] 软raid设备 /dev/loop[0-7] 本地回环设备 /dev/ram[0-15] 内存 /dev/null 无限数据接收设备,相当于黑洞 /dev/zero 无限零资源 /dev/tty[0-63] 虚拟终端 /dev/ttyS[0-3] 串口 /dev/lp[0-3] 并口 /dev/console 控制台 /dev/fb[0-31] framebuffer /dev/cdrom => /dev/hdc /dev/modem => /dev/ttyS[0-9] /dev/pilot => /dev/ttyS[0-9] /dev/random 随机数设备 /dev/urandom 随机数设备 /proc - 处理信息虚拟文件系统 Linux 系统上的 /proc 目录是一种文件系统,即 proc 文件系统。与其它常见的文件系统不同的是,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。 基于 /proc 文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。例如,其中有些文件虽然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为 0 字节。此外,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这跟它们随时会被刷新(存储于 RAM 中)有关。 为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如 /proc/scsi 目录中存储的就是当前系统上所有 SCSI 设备的相关信息,/proc/N 中存储的则是系统当前正在运行的进程的相关信息,其中 N 为正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。 大多数虚拟文件可以使用文件查看命令如 cat、more 或者 less 进行查看,有些文件信息表述的内容可以一目了然,但也有文件的信息却不怎么具有可读性。不过,这些可读性较差的文件在使用一些命令如 apm、free、lspci 或 top 查看时却可以有着不错的表现。 /proc/apm 高级电源管理(APM)版本信息及电池相关状态信息,通常由 apm 命令使用; /proc/buddyinfo 用于诊断内存碎片问题的相关信息文件; /proc/cmdline 在启动时传递至内核的相关参数信息,这些信息通常由 lilo 或 grub 等启动管理工具进行传递; # more /proc/cmdline ro root=/dev/VolGroup00/LogVol00 rhgb quiet /proc/cpuinfo 处理器的相关信息的文件; /proc/crypto 系统上已安装的内核使用的密码算法及每个算法的详细信息列表; # more /proc/crypto name : crc32c driver : crc32c-generic module : kernel priority : 0 type : digest blocksize : 32 digestsize : 4 ………… /proc/devices 系统已经加载的所有块设备和字符设备的信息,包含主设备号和设备组(与主设备号对应的设备类型)名; /proc/diskstats 每块磁盘设备的磁盘 I/O 统计信息列表;(内核 2.5.69 以后的版本支持此功能) /proc/dma 每个正在使用且注册的 ISA DMA 通道的信息列表; /proc/execdomains 内核当前支持的执行域(每种操作系统独特“个性”)信息列表; /proc/fb 帧缓冲设备列表文件,包含帧缓冲设备的设备号和相关驱动信息; /proc/filesystems 当前被内核支持的文件系统类型列表文件,被标示为 nodev 的文件系统表示不需要块设备的支持;通常 mount 一个设备时,如果没有指定文件系统类型将通过此文件来决定其所需文件系统的类型; /proc/interrupts X86 或 X86_64 体系架构系统上每个 IRQ 相关的中断号列表;多路处理器平台上每个 CPU 对于每个 I/O 设备均有自己的中断号; /proc/iomem 每个物理设备上的记忆体(RAM 或者 ROM)在系统内存中的映射信息; /proc/ioports 当前正在使用且已经注册过的与物理设备进行通讯的输入-输出端口范围信息列表;如下面所示,第一列表示注册的 I/O 端口范围,其后表示相关的设备; /proc/kallsyms 模块管理工具用来动态链接或绑定可装载模块的符号定义,由内核输出;(内核 2.5.71 以后的版本支持此功能);通常这个文件中的信息量相当大; /proc/kcore 系统使用的物理内存,以 ELF 核心文件(core file)格式存储,其文件大小为已使用的物理内存(RAM)加上 4KB;这个文件用来检查内核数据结构的当前状态,因此,通常由 GBD 通常调试工具使用,但不能使用文件查看命令打开此文件; /proc/kmsg 此文件用来保存由内核输出的信息,通常由 /sbin/klogd 或 /bin/dmsg 等程序使用,不要试图使用查看命令打开此文件; /proc/loadavg 保存关于 CPU 和磁盘 I/O 的负载平均值,其前三列分别表示每 1 秒钟、每 5 秒钟及每 15 秒的负载平均值,类似于 uptime 命令输出的相关信息;第四列是由斜线隔开的两个数值,前者表示当前正由内核调度的实体(进程和线程)的数目,后者表示系统当前存活的内核调度实体的数目;第五列表示此文件被查看前最近一个由内核创建的进程的 PID; /proc/locks 保存当前由内核锁定的文件的相关信息,包含内核内部的调试数据;每个锁定占据一行,且具有一个惟一的编号;如下输出信息中每行的第二列表示当前锁定使用的锁定类别,POSIX 表示目前较新类型的文件锁,由 lockf 系统调用产生,FLOCK 是传统的 UNIX 文件锁,由 flock 系统调用产生;第三列也通常由两种类型,ADVISORY 表示不允许其他用户锁定此文件,但允许读取,MANDATORY 表示此文件锁定期间不允许其他用户任何形式的访问; /proc/mdstat 保存 RAID 相关的多块磁盘的当前状态信息,在没有使用 RAID 机器上,其显示为如下状态: /proc/meminfo 系统中关于当前内存的利用状况等的信息,常由 free 命令使用;可以使用文件查看命令直接读取此文件,其内容显示为两列,前者为统计属性,后者为对应的值; /proc/mounts 在内核 2.4.29 版本以前,此文件的内容为系统当前挂载的所有文件系统,在 2.4.19 以后的内核中引进了每个进程使用独立挂载名称空间的方式,此文件则随之变成了指向 /proc/self/mounts(每个进程自身挂载名称空间中的所有挂载点列表)文件的符号链接; /proc/modules 当前装入内核的所有模块名称列表,可以由 lsmod 命令使用,也可以直接查看;如下所示,其中第一列表示模块名,第二列表示此模块占用内存空间大小,第三列表示此模块有多少实例被装入,第四列表示此模块依赖于其它哪些模块,第五列表示此模块的装载状态(Live:已经装入;Loading:正在装入;Unloading:正在卸载),第六列表示此模块在内核内存(kernel memory)中的偏移量; /proc/partitions 块设备每个分区的主设备号(major)和次设备号(minor)等信息,同时包括每个分区所包含的块(block)数目(如下面输出中第三列所示); /proc/pci 内核初始化时发现的所有 PCI 设备及其配置信息列表,其配置信息多为某 PCI 设备相关 IRQ 信息,可读性不高,可以用 “/sbin/lspci –vb” 命令获得较易理解的相关信息;在 2.6 内核以后,此文件已为 /proc/bus/pci 目录及其下的文件代替; /proc/slabinfo 在内核中频繁使用的对象(如 inode、dentry 等)都有自己的 cache,即 slab pool,而 /proc/slabinfo 文件列出了这些对象相关 slap 的信息;详情可以参见内核文档中 slapinfo 的手册页; /proc/stat 实时追踪自系统上次启动以来的多种统计信息;如下所示,其中, “cpu” 行后的八个值分别表示以 1/100(jiffies)秒为单位的统计值(包括系统运行于用户模式、低优先级用户模式,运系统模式、空闲模式、I/O 等待模式的时间等); “intr” 行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数; “ctxt” 给出了自系统启动以来 CPU 发生的上下文交换的次数。 “btime” 给出了从系统启动到现在为止的时间,单位为秒; “processes (total_forks) 自系统启动以来所创建的任务的个数目; “procs_running”:当前运行队列的任务的数目; “procs_blocked”:当前被阻塞的任务的数目; # more /proc/stat cpu 2751 26 5771 266413 2555 99 411 0 cpu0 2751 26 5771 266413 2555 99 411 0 intr 2810179 2780489 67 0 3 3 0 5 0 1 0 0 0 1707 0 0 9620 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 427300 btime 1234084100 processes 3491 procs_running 1 procs_blocked 0 /proc/swaps 当前系统上的交换分区及其空间利用信息,如果有多个交换分区的话,则会每个交换分区的信息分别存储于 /proc/swap 目录中的单独文件中,而其优先级数字越低,被使用到的可能性越大;下面是作者系统中只有一个交换分区时的输出信息; # more /proc/swaps Filename Type Size Used Priority /dev/sda8 partition 642560 0 -1 /proc/uptime 系统上次启动以来的运行时间,如下所示,其第一个数字表示系统运行时间,第二个数字表示系统空闲时间,单位是秒; # more /proc/uptime 3809.86 3714.13 /proc/version 当前系统运行的内核版本号,在作者的 RHEL5.3 上还会显示系统安装的 gcc 版本,如下所示; # more /proc/version Linux version 2.6.18-128.el5 ([email]mockbuild@hs20-bc1-5.build.redhat.com[/email]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) #1 SMP Wed Dec 17 11:42:39 EST 2008 /proc/vmstat 当前系统虚拟内存的多种统计数据,信息量可能会比较大,这因系统而有所不同,可读性较好; # more /proc/vmstat nr_anon_pages 22270 nr_mapped 8542 nr_file_pages 47706 nr_slab 4720 nr_page_table_pages 897 nr_dirty 21 nr_writeback 0 ………… /proc/zoneinfo 内存区域(zone)的详细信息列表,信息量较大,下面列出的是一个输出片段: # more /proc/zoneinfo Node 0, zone DMA pages free 1208 min 28 low 35 high 42 active 439 inactive 1139 scanned 0 (a: 7 i: 30) spanned 4096 present 4096 nr_anon_pages 192 nr_mapped 141 nr_file_pages 1385 nr_slab 253 nr_page_table_pages 2 nr_dirty 523 nr_writeback 0 nr_unstable 0 nr_bounce 0 protection: (0, 0, 296, 296) pagesets all_unreclaimable: 0 prev_priority: 12 start_pfn: 0 ………… /root - root 用户的家目录 其他用户的家目录通常在 /home/ 下。 /mnt - 挂载目录 临时安装目录,系统管理员可以挂载文件系统。 /media - 可移动媒体设备 用于挂载可移动设备的临时目录。 举例来说,挂载 CD-ROM 的 /media/cdrom,挂载软盘驱动器的 /media/floppy。 /srv - 服务数据 srv 代表服务。 包含服务器特定服务相关的数据。 例如,/srv/cvs 包含 cvs 相关的数据。 /var - 变量文件 这个目录下可以找到内容可能增长的文件。 这包括:系统日志文件(/var/log)、包和数据库文件(/var/lib)、电子邮件(/var/mail)、打印队列(/var/spool)、锁文件(/var/lock)、多次重新启动需要的临时文件(/var/tmp)等 /tmp - 临时文件 包含系统和用户创建的临时文件。当系统重新启动时,这个目录下的文件都将被删除。 /tmp 目录在 Linux 系统中通常使用 tmpfs 文件系统,也就是内存文件系统。tmpfs 允许将一部分内存用作文件系统,可以大大提高文件访问速度,尤其适合存储临时文件。 tmpfs 的优点包括: 速度快:由于 tmpfs 直接使用内存,所以读写速度非常快,特别适合存储临时文件。 节省磁盘空间:由于 tmpfs 直接使用内存,所以不会在磁盘上留下任何数据,可以节省磁盘空间。 安全性高:由于 tmpfs 存储的是临时文件,所以即使系统崩溃或者重启,也不会丢失数据,可以提高系统的安全性。 /lost+found - 文件碎片存储目录 它的主要作用是帮助用户在文件系统发生错误或崩溃时恢复丢失的文件。 当系统意外崩溃或意外关机时,可能会导致一些文件碎片出现在 /lost+found 目录中。这些文件碎片通常是未链接的文件,可能还有一些进程正在使用它们(数据尚未被删除)。在系统启动的过程中,fsck 工具会检查这个目录,并尝试修复已损坏的文件系统。 每个 Linux 文件系统都有一个 /lost+found 目录,当文件系统崩溃时,任何在崩溃过程中损坏的文件都将被放入这个目录中。用户可以尝试在这个目录下查找并恢复这些文件。 值得注意的是,/lost+found 目录通常只有 root 用户可以访问,而且这个目录中的文件通常是未链接的文件,因此恢复过程可能会比较复杂。此外,为了防止数据丢失,建议定期备份重要数据,并保持系统更新和运行状态良...

C 语言运算符优先级

C 语言中运算符的优先级分为 15 级,从高到低依次为: 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式) / 函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成员名 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 ++变量名 / 变量名++ -- 自减运算符 --变量名 / 变量名-- * 取值运算符 *指针变量 & 取地址运算符 &变量名 ! 逻辑非运算符 !表达式 (类型) 强制类型转换 (数据类型)表达式 sizeof 长度运算符 sizeof(表达式) 3 / 除 表达式/表达式 左到右 双目运算符 * 乘 表达式*表达式 % 余数(取模) 整型表达式%整型表达式 4 + 加 表达式+表达式 左到右 双目运算符 - 减 表达式-表达式 5 <<  左移 变量<<表达式 左到右 双目运算符 >>  右移 变量>>表达式 6 >  大于 表达式>表达式 左到右 双目运算符 >=大于等于 表达式>=表达式 <  小于 表达式<表达式 <=小于等于 表达式<=表达式 7 ==等于 表达式==表达式 左到右 双目运算符 !=不等于 表达式!=表达式 8 & 按位与 表达式&表达式 左到右 双目运算符 9 ^ 按位异或 表达式^表达式 左到右 双目运算符 10 | 按位或 表达式|表达式 左到右 双目运算符 11 && 逻辑与 表达式&&表达式 左到右 双目运算符 12 || 逻辑或 表达式||表达式 左到右 双目运算符 13 ?: 条件运算符 表达式1? 表达式2: 表达式3 右到左 三目运算符 14 =赋值运算符 变量=表达式 右到左 /=除后赋值 变量/=表达式 *=乘后赋值 变量*=表达式 %=取模后赋值 变量%=表达式 +=加后赋值 变量+=表达式 -=减后赋值 变量-=表达式 <<=左移后赋值 变量<<=表达式 >>=右移后赋值 变量>>=表达式 &=按位与后赋值 变量&=表达式 ^=按位异或后赋值 变量^=表达式 |=按位或后赋值 变量|=表达式 15 , 逗号运算符 表达式,表达式,… 左到右 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。 C 语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式 x-y+z,则y应先与 - 号结合,执行 x-y 运算,然后再执行 +z 的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。如 x=y=z,由于 = 的右结合性,应先执行 y=z,再执行 x=(y=z) 运算。所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其他的都是从左至右结...

Linux 命令学习之路:man

我认为学习 Linux 命令,第一个要学的就是 man 命令。 man 命令是 Linux 系统中用于查看系统文档的重要命令,可以用来查看命令的说明、系统调用、库函数等帮助信息。man 命令的全称是 "manual",它是单词 "manual" 的缩写,意思是使用手册。也许有人一开始的时候认为它是“人”的意思,我认为也说得过去,服务于人,人性化,不都是说一个好的系统首先应该是以人为本的吗。 man 命令格式: man [OPTION...] [SECTION] PAGE... man 命令常用参数: -h 显示帮助信息,我认为这是学习每一个命令时首先要会用的参数 -a 显示所有匹配项 -d 输出调试信息,包括查找时的搜索路径等,例如: $ man -d ls ruid=1000, euid=1000 rgid=1000, egid=1000 ++priv_drop_count = 1 From the config file /etc/manpath.config: Mandatory mandir `/usr/man'. Mandatory mandir `/usr/share/man'. Mandatory mandir `/usr/local/share/man'. Path `/bin' mapped to mandir `/usr/share/man'. Path `/usr/bin' mapped to mandir `/usr/share/man'. Path `/sbin' mapped to mandir `/usr/share/man'. Path `/usr/sbin' mapped to mandir `/usr/share/man'. Path `/usr/local/bin' mapped to mandir `/usr/local/man'. Path `/usr/local/bin' mapped to mandir `/usr/local/share/man'. Path `/usr/local/sbin' mapped to mandir `/usr/local/man'. Path `/usr/local/sbin' mapped to mandir `/usr/local/share/man'. Path `/usr/X11R6/bin' mapped to mandir `/usr/X11R6/man'. Path `/usr/bin/X11' mapped to mandir `/usr/X11R6/man'. Path `/usr/games' mapped to mandir `/usr/share/man'. Path `/opt/bin' mapped to mandir `/opt/man'. Path `/opt/sbin' mapped to mandir `/opt/man'. Global mandir `/usr/man', catdir `/var/cache/man/fsstnd'. Global mandir `/usr/share/man', catdir `/var/cache/man'. Global mandir `/usr/local/man', catdir `/var/cache/man/oldlocal'. Global mandir `/usr/local/share/man', catdir `/var/cache/man/local'. Global mandir `/usr/X11R6/man', catdir `/var/cache/man/X11R6'. Global mandir `/opt/man', catdir `/var/cache/man/opt'. Global mandir `/snap/man', catdir `/var/cache/man/snap'. Added sections: `1', `n', `l', `8', `3', `0', `2', `3posix', `3pm', `3perl', `3am', `5', `4', `9', `6', `7'. is a tty using pager as pager path directory /usr/local/sbin is in the config file adding /usr/local/man to manpath adding /usr/local/share/man to manpath path directory /usr/local/bin is in the config file ... -f 等价于 whatis 命令,用于显示给定关键字的简短描述信息。使用 -f 参数时,man 命令会在关键字数据库中搜索与给定关键字相关的命令,并显示该命令的简短描述。 $ man -f ls ls (1) - list directory contents $ whatis ls ls (1) - list directory contents -k 与 apropos 命令等价,用于执行关键字搜索。该参数允许用户在手册页中搜索与给定关键字相关的条目。需要注意的是,由于这是一个模糊搜索,它可能会返回一些并不是你直接想要的结果。在这种情况下,你可以尝试使用更具体的关键字,或者结合其他 man 命令的参数和特性来进一步筛选结果。 $ man -k ls add-shell (8) - add shells to the list of valid login shells arm-linux-gnueabi-c++filt (1) - demangle C++ and Java symbols arm-linux-gnueabi-nm (1) - list symbols from object files arm-linux-gnueabi-strip (1) - discard symbols and other data from object files arm-linux-gnueabihf-c++filt (1) - demangle C++ and Java symbols arm-linux-gnueabihf-nm (1) - list symbols from object files arm-linux-gnueabihf-strip (1) - discard symbols and other data from object files blockdev (8) - call block device ioctls from the command line c++filt (1) - demangle C++ and Java symbols credentials (7) - process identifiers dircolors (1) - color setup for ls eatmydata (1) - transparently disable fsync() and other data-to-disk synchronization calls EVP_KDF-TLS13_KDF (7ssl) - The TLS 1.3 EVP_KDF implementation EVP_KDF-TLS1_PRF (7ssl) - The TLS1 PRF EVP_KDF implementation false (1) - do nothing, unsuccessfully git-credential (1) - Retrieve and store user credentials git-credential-cache--daemon (1) - Temporarily store user credentials in memory git-credential-store (1) - Helper to store credentials on disk git-difftool (1) - Show changes using common diff tools git-ls-files (1) - Show information about files in the index and the working t -s/-S 用于指定要查看的手册页的章节,也就是命令格式中的 [SECTION]。通过指定章节,您可以限制 man 命令只搜索和显示特定章节的手册页。Linux 的手册页分为多个章节,每个章节包含不同类型的信息: 第1章(1)包含了用户命令和程序,例如 ls、cp 等。 第2章(2)包含了系统调用,例如 open、read 等。 第3章(3)包含了库函数,例如 C 语言的标准库函数。 第4章(4)包含了设备文件和特殊文件。 第5章(5)包含了文件格式和约定,例如 /etc/passwd。 第6章(6)包含了游戏。 第7章(7)包含了惯例和约定。 第8章(8)包含了系统管理命令和守护进程。 第9章(9)包含了内核的函数和宏。 括号中的数字可以帮助用户快速识别手册页的类型和内容。 例如,如果您只想模糊搜索用户命令和程序相关的手册页,可以输入以下命令: $ man -s 1 -k ls(关键字) arm-linux-gnueabi-c++filt (1) - demangle C++ and Java symbols arm-linux-gnueabi-nm (1) - list symbols from object files arm-linux-gnueabi-strip (1) - discard symbols and other data from object files arm-linux-gnueabihf-c++filt (1) - demangle C++ and Java symbols arm-linux-gnueabihf-nm (1) - list symbols from object files arm-linux-gnueabihf-strip (1) - discard symbols and other data from object files c++filt (1) - demangle C++ and Java symbols dircolors (1) - color setup for ls eatmydata (1) - transparently disable fsync() and other data-to-disk synchronization calls false (1) - do nothing, unsuccessfully git-credential (1) - Retrieve and store user credentials git-credential-cache--daemon (1) - Temporarily store user credentials in memory git-credential-store (1) - Helper to store credentials on disk git-difftool (1) - Show changes using common diff tools 与上边的实例相比,只输出了第一章节的条目。 -t 用于将手册页内容输出到终端,并使用 troff 命令格式化格式进行显示(默认用的是 groff 输出格式页)。这通常用于在终端中以美观的格式查看手册页,特别是当手册页包含复杂的格式化文本或表格时。可以提供更好的可读性和视觉效果。不过,有可能你使用的终端不支持相应的格式化功能,那就看不到预期的结果了。此外也可以使用其他格式化手段,例如简单地格式化和着色:man ls |col |more -w 显示命令或函数的手册页文件路径 $ man -w ls /usr/share/man/man1/ls.1.gz man 命令的使用非常方便,用户可以通过简单的输入命令和参数来获取需要的帮助信息。在 man 页面中,用户可以使用各种快捷键来快速浏览和查找信息,例如 q 键用于退出,Enter 键按行下翻,Space 键按页下翻,b 键上翻一页等。 man 命令还可以按照默认的搜索路径和顺序去搜索文档,也可以指定 section 来只显示制定 section 的文档页内容。例如,man 5 passwd 和 man passwd 会显示不同的帮助页。 man 命令的文档页文件存放在 /usr/share/man 目录...

18650 锂电池

18650 是锂离子电池的鼻祖——日本 SONY 公司当年为了节省成本而定下的一种标准性的锂离子电池型号,其中 18 表示直径为 18mm,65 表示长度为 65mm,0 表示为圆柱形电池。 锂离子电池的能量密度很高,它的容量是同重量的镍氢电池的 1.5 ~ 2 倍,而且具有很低的自放电率。此外,几乎没有“记忆效应”以及不含有毒物质等优点也是锂离子电池广泛应用的重要原因。 锂电池标 3.7V 或 4.2V 都是一样。只是生产厂商标注的不一样而已。3.7V 指电池使用过程中放电的平台电压(即典型电压),而 4.2 伏指的是充电满电时的电压。常见的可充 18650 锂电池,电压都是标 3.6 或者 3.7V,充满电的时候是 4.2V,这跟电量(容量)关系不大,18650 电池主流的容量从 1800mAh 到 2600mAh,(18650 动力电池容量多在 2200 ~ 2600mAh),主流的容量甚至有标 3500 或 4000mAh 以上的。 一般认为将锂电池的空载电压放到 3.0V 以下就认为电用完了(具体值需要看电池保护板的门限值,比如有低到 2.8V,也有 3.2V 的)。大部分锂电池放电是不能将空载电压放到 3.2 V以下的,否则过度放电会损害电池(一般市场上的锂电池基本都是带保护板才使用的,因此过度放电还会导致保护板检测不到电池,从而无法给电池充电)。4.2V 是电池充电的最高限制电压,一般认为将锂电池的空载电压充到 4.2V 就认为电充满了。电池充电过程中,电池的电压在 3.7V 逐渐上升到 4.2V,锂电池充电不能将空载电压充到 4.2V 以上,否则也会损害电池,这就是锂电池特殊的地方。 锂离子电池的能量密度很高,它的容量是同重量的镍氢电池的 1.5 ~ 2 倍,而且具有很低的自放电率。18650 电池寿命理论为循环充电 1000 次。 锂离子电池的工作原理就是指其充放电原理。当对电池进行充电时,电池的正极上有锂离子生成,生成的锂离子经过电解液运动到负极。而作为负极的碳呈层状结构,它有很多微孔,到达负极的锂离子就嵌入到碳层的微孔中,嵌入的锂离子越多,充电容量越高。 同样道理,当对电池进行放电时(即使用电池的过程),嵌在负极碳层中的锂离子脱出,又运动回到正极。回到正极的锂离子越多,放电容量越高。通常所说的电池容量指的就是放电容...

修改 Nginx 附件大小的限制

Nginx 默认限制请求附件大小为 1MB。即:默认当你通过 Nginx 代理上传附件,大于 1M 的文件时,浏览器会抛出异常。 可以通过设置 nginx.conf 中的 http 块,添加或修改 client_max_body_size 参数来更改默认的附件大小限制。例如,将 client_max_body_size 设置为 8m,即可将附件大小限制更改为 8MB。这将影响到所有站点。当然也可以只修改某一个站点的配置,在站点的 server 块中添加或修改 client_max_body_size 即可。 修改后检查配置文件的语法是否正确:sudo nginx -t。如果没有显示语法错误,继续下一步;如果有错误,请检查配置文件并修复错误。 然后重新加载 Nginx 配置:sudo service nginx reload 或者 sudo systemctl reload ngi...

PHP 附件大小限制的修改

在 PHP 中设置附件大小限制,可以通过以下两种方式实现: 修改 php.ini 文件 在 php.ini 配置文件中,可以修改 post_max_size 和 upload_max_filesize 两个参数来分别限制 POST 数据和上传文件的大小。 这两个参数的区别: post_max_size: 这个参数定义了通过 POST 方法(例如表单提交)可以上传到服务器的数据的最大大小。 如果上传的文件大于这个值,服务器会返回一个错误。 这个限制包括了所有的 POST 数据,不仅仅是文件上传。例如,如果你在表单中填写了一些文本字段,这些数据也会被计入 post_max_size 的限制。 upload_max_filesize: 这个参数定义了通过 HTTP POST 方法上传的单个文件的最大大小。 这是对文件上传的限制,不包括其他非文件数据。 如果上传的文件超过了此限制,服务器会返回一个错误。 总结: post_max_size 是对整个 POST 数据(包括文件和其他表单字段)的限制。 upload_max_filesize 是对单个上传文件的限制。 为了确保文件上传的正常工作,通常建议: post_max_size 应该大于或等于 upload_max_filesize。 post_max_size 可以设置为更大的值以允许更多的其他 POST 数据。 例如: post_max_size = 64M upload_max_filesize = 32M 这里将 POST 数据限制为 64MB,上传文件限制为 32MB。 需要注意的是,修改 php.ini 文件需要重启 Web 服务器才能生效。 使用 ini_set 函数 在 PHP 脚本中,也可以使用 ini_set 函数动态地修改上传文件大小限制。例如: ini_set('post_max_size', '64M'); ini_set('upload_max_filesize', '32M'); 这里同样将 POST 数据限制为 64MB,上传文件限制为 32MB。 需要注意的是,在使用 ini_set 函数时,必须在 PHP 脚本执行的早期调用该函数,否则可能无法生效。这些设置只对当前脚本有效,并不会影响 PHP 的全局设置或其它脚本。另外,某些操作系统和 Web 服务器可能会对 ini_set 函数进行限制,需要进行相应的配置或授...