news 2026/9/6 10:59:31

逻辑器件排列组合实战:从门电路基础到组合逻辑设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
逻辑器件排列组合实战:从门电路基础到组合逻辑设计

1. 从一堆芯片到一台机器,逻辑器件的排列组合到底在玩什么

数字电路这门课,很多人上来就背门电路真值表,与非门、或非门、异或门,背得滚瓜烂熟,一进实验室就傻眼——一堆74系列芯片摆在面前,不知道从哪儿下手。我当年也是这样,直到后来做了几个像样的项目,才慢慢琢磨明白一件事:数字电路的本质,就是用有限的逻辑器件,通过排列组合,搭出无限种功能。这话听着像废话,但确实是整个数字逻辑设计最核心的思想。

举个最直观的例子:你手头只有与非门,理论上可以搭出任何逻辑电路。反相器?把与非门两个输入端并在一起就行。与门?与非门后面再接一个反相器。或门?用德摩根定律变换一下。你看,一个芯片就能演化出一整套逻辑家族,这就是排列组合的威力。理解了这个,再看什么“用74LS00搭一个全加器”“用CD4001做一个振荡器”,就都不神秘了。

这篇东西,我就拿自己折腾数字电路的经验,把逻辑器件的排列组合这件事掰开了讲清楚。从门电路基础怎么理解,到组合逻辑怎么搭,再到几个常见芯片的实际应用,最后说说我在实操中踩过的坑。适合刚学完数字电路理论、想动手做点东西的人,也适合那些会看原理图但不太明白“为什么这么接”的爱好者。

2. 门电路到底在排列组合什么

2.1 从真值表看排列组合的逻辑本质

先别急着拿电烙铁。要理解逻辑器件的排列组合,得先回到真值表。一个两输入与门,输入A和B各有0和1两种状态,组合起来就是2的2次方等于4种情况:00、01、10、11,输出只有1和0两种可能。如果我们不限定门电路类型,把“输入状态组合”和“输出状态”的对应关系看成一张表,你会发现问题很有意思——4种输入组合,每种对应一个输出,那总共可能有多少种不同的逻辑函数?2的4次方等于16种。

这就是为什么教材里会说,两输入变量一共可以定义16种布尔函数。其中有用的就那么几个:与、或、与非、或非、异或、同或,剩下的要么是常数输出,要么退化成了单输入函数。但关键在于,这16种函数都可以用我们手头那几种门电路搭出来。排列组合的第一层含义,就是输入端的状态组合决定了函数的真值表;第二层含义,就是不同门电路之间的连接方式,决定了最终能实现哪种真值表。

我自己做实验的时候,特别喜欢干一件事:拿到一个逻辑表达式,先不急着画电路图,而是先把真值表列全,把输入的所有排列组合情况写出来,再手动推算每一行的输出。这个习惯帮我建立了从“输入组合”到“输出结果”的直觉,之后再看别人设计的电路,一眼就能看出它是干什么的。

2.2 为什么说与非门能搭出所有逻辑电路

你可能听说过“与非门是万能门”这种说法。为什么是它?原因说出来很简单:与非门天然带一个反相器结构,而任何逻辑函数经过两次取反、再配合德摩根定律展开,都能转化成只包含与非运算的表达式。

我举个具体的例子。假设要实现F = A·B + C·D,这个式子直接看需要两个与门、一个或门。但如果只有与非门呢?第一步,把F取反再取反,F = (A·B + C·D)'',这步是恒等变换。第二步,用德摩根定律把里面的或变成与:F = ((A·B)' · (C·D)')'。你看,最后得到的表达式里只有与非运算——(A·B)'是一个与非门,(C·D)'是另一个与非门(或非而不是与非,没关系,A·B整体取反后是两个与项的结果,再与非,就完成了整个功能)。

这个过程我第一次推的时候觉得特别绕,但推了几遍之后就发现规律了:任何与或式,只要把或门换成“两个与非门输出端再接一个与非门”,就能用与非门替代。这个方法不仅考试有用,实际焊板子的时候更用得上——有时候手头就一种芯片,灵活变换能救命。

2.3 从器件清单到功能框图,搭电路的第一课

理解了单种门的表达能力,下一步就是学会看器件清单。一块74LS00里面有4个独立的两输入与非门,一块74LS08里面有4个与门,一块74LS32里面有4个或门。做设计之前,我习惯先把需要的逻辑门数量统计一下,再对照手头的芯片资源做“资源分配”。

这里有个选题上的技巧:优先使用与非门和或非门。原因很实在——同系列芯片里,与非门和或非门的品种最多、价格最便宜、购买也最容易,而与门和或门反而不是那么常见。这跟芯片内部电路结构有关,与门和或门通常是在与非门或或非门的基础上再串一级反相器做出来的,既然这样,不如直接外接一个反相器,还能省一个门。

所以你在很多数字电路教材上看到的电路,明明表达式里写的是与门和或门,画出来的原理图里却全是与非门和或非门,就是这个道理。

3. 组合逻辑的核心套路:从表达式到电路图的排列组合

3.1 一个完整设计实例:三人多数表决器

纸上谈兵没意思,咱们来一个实际项目:设计一个三人多数表决器。三个人A、B、C投票,两人或两人以上同意(输入为1),输出F就是1。

第一步,列真值表。三输入变量,一共2的3次方等于8种组合。F为1的情况有四行:ABC=011、101、110、111。

第二步,写标准与或式。把F为1的每一行写成一个最小项,然后相加:F = A'BC + AB'C + ABC' + ABC。这个表达式是直接从真值表“翻译”过来的,不用动脑筋,但一般不是最简形式。

第三步,化简。观察一下,最后两项ABC和前面三项都有重叠。用公式法时,常利用A + A' = 1来合并:F = A'BC + AB'C + ABC' + ABC = BC + AC + AB。你验证一下,BC覆盖了011和111,AC覆盖了101和111,AB覆盖了110和111,四行全覆盖,没毛病。

第四步,根据化简后的表达式选器件。如果手头有与门和或门,F = AB + AC + BC,需要三个两输入与门和一个三输入或门。如果三输入或门不方便,可以拆成两个两输入或门级联:F = (AB + AC) + BC。

第五步,对照芯片管脚图连线。74LS08提供4个与门,用其中3个;74LS32提供4个或门,用其中2个。剩下一个与门和一个或门空闲,注意输入不能悬空,接地或接高电平都行。

你看,整个设计过程就是一个典型的排列组合流程:真值表的输入状态排列,逻辑表达式的最小项组合,再根据表达式把门电路连接起来。听起来平平无奇,但每一步都有讲究。

3.2 为什么卡诺图化简是排列组合思维的加速器

当年学卡诺图的时候,我一直觉得它只是考纲里的一项技能,后来做设计才发现,它真正的价值在于让你从“代数运算”里解放出来,直接用几何方式观察“哪些最小项可以合并”。

卡诺图本质上就是把真值表的行和列重新排列——让相邻的格子之间只有一位变量不同。这样一来,两个相邻的1就对应两个可以合并的最小项。比如上面那个表决器,在卡诺图上你会看到四个1围成一个2x2的圈,直接读出B·C和A·C和A·B三项,比用公式法合并快得多。

实际操作中我的建议是:如果变量不超过4个,优先画卡诺图;超过5个变量,才需要靠计算机工具或者更系统的代数化简方法。为什么?因为卡诺图的排列方式在4变量以内非常直观,格子之间有明确的“邻居”关系,圈的组合一目了然;5变量以上,虽然也能画,但需要在两个4变量图之间比较,人脑处理不过来,容易出错。

顺便说一句,很多新手在卡诺图上画圈时,容易犯两个毛病:一是圈得不够大,该合并的没合并;二是把无关项也圈进去了,结果化简出来的表达式虽然正确,但硬件实现时反而多绕了弯路。我自己的经验是,每圈一个圈,都回头核对一下:这个圈覆盖的格子,它们之间的变量是不是只有一位不同?如果有多位不同,圈就出问题了。

3.3 化简之后的电路“翻译”技巧

得到最简表达式之后,接下来的任务是把它翻译成电路连接。这里有几个我在实操中总结出来的小技巧。

优先共享公共项。比如一个系统里需要AB、AC、BC等好几个与项,如果某些与项在多个输出里都出现,可以考虑用同一片与门输出后分线出去。别小看这个细节,一个复杂一点的组合逻辑,公共项共享能省掉不少门电路。我做课程设计的时候,就因为多分了一条线,省了一块芯片的用量。

复合门的等价替换要熟练。现在的芯片库里,与非门和或非门远比与门和或门常见,所以拿到一个“与或式”之后,我习惯性地会先用德摩根定律把它转成“与非-与非”形式再动工。还是举表决器的例子:F = AB + AC + BC。先取反再取反:F = ((AB + AC + BC)')',把括号内的或变与,得到F = ((AB)' · (AC)' · (BC)')'。这时候你数一下需要的与非门数量:三个两输入与非门生成三个反相与项,再来一个三输入与非门把三项合并,一共4个与非门。74LS00里有4个,一块芯片搞定。

然后就是管脚排列。每个芯片的管脚图一定要提前查资料,74系列芯片的引脚定义基本固定,但我吃过亏:想当然认为两个输入一定是1和2,结果焊上去才发现是1和2输入、3输出。焊完再拆,浪费时间不说,板子还容易坏。所以每次拿到芯片,第一件事就是翻数据手册,把管脚图打印出来放旁边。

4. 常用芯片的排列组合实战

4.1 用74LS00搭一个振荡器,从组合逻辑进入时序逻辑

组合逻辑芯片排列组合除了搭算术电路和表决器,还有一个特别妙的用法——搭振荡器。你只需要把与非门的输出接回自己的输入,就构成了一个反馈回路,再配上电阻电容,就能产生方波信号。

具体电路是这样的:两个与非门串联,第一个门的输出接第二个门的输入,第二个门的输出经过一个电阻接到第一个门的另一个输入端和电容上。上电瞬间,电容电压为零,第一个门输出高电平,第二个门输出低电平,然后电源通过电阻给电容充电,当电容电压超过阈值时,第一个门翻转,输出低电平,第二个门输出高电平,电容开始放电,如此反复,就形成了振荡。

这个电路我折腾了一下午才稳定工作。频率大致由RC时间常数决定,我用的10k电阻和0.1uF电容,实测频率大约在700Hz左右,能听到明显的蜂鸣声。用公式算出来的理论值跟实测值会有偏差,因为门电路的阈值电压不是精确的VCC/2,不同批次的芯片也有差异。但好在做实验不需要精确频率,只要稳定就行。

有了振荡器,你就等于有了一个“时钟源”,这是从纯组合逻辑走向时序逻辑的第一步。很多音乐电路、流水灯、频率计,内核都是这个振荡器加上一堆排列组合好的逻辑门。

4.2 译码器与编码器:排列组合的“逆向思维”

如果说前面的例子是“自己搭门电路”,那译码器和编码器就是把排列组合封装成现成芯片,你只需要接对输入输出的对应关系。

74LS138是一个3线-8线译码器:3个输入A2、A1、A0,共有8种排列组合,每种组合对应8个输出Y0到Y7中的某一个为低电平。它内部其实就是一堆与非门的排列组合,但用起来你完全不用关心内部结构,只要会查真值表就行。

译码器有个特别经典的应用——实现任意组合逻辑函数。你想实现F = Σm(1,3,5,7),就是把输入接好,然后把Y1、Y3、Y5、Y7这四个低有效的输出端接到一个与非门的输入端,与非门的输出就是你要的F。原理其实还是最小项相加那一套:译码器替你生成了所有最小项,你只要把需要的项“汇聚”起来,就是完整的逻辑函数。这个思路特别适合多输出的情况,比如同时需要好几个逻辑函数,共用同一个译码器,后面接不同的与非门组合,能省下大量逻辑门。

编码器就是译码器的反向操作,比如74LS148,8个输入、3个输出,优先级编码。它在键盘扫描里用得很多:检测哪一行哪一列被按下,然后输出对应编码。理解了译码器和编码器,你就发现所谓排列组合,不只是门电路层面的连接,也包括芯片层面的“信号路由”。

4.3 数据选择器:一组开关的排列组合

另一个特别能体现排列组合思想的芯片是多路数据选择器,比如74LS151,8选1。它有3个选择输入端S2、S1、S0——这三位的排列组合决定8个数据输入端D0到D7中的哪一个被选到输出端。

数据选择器的核心应用思路,和译码器有点像,也是把逻辑函数变成一张“查找表”。你想实现一个三变量逻辑函数,直接把三个输入A、B、C接到S2、S1、S0上,然后把真值表中F的8个输出值分别接到D0到D7。当A、B、C的状态组合不断变化时,对应的D端数据就被选到输出了,实现效果和逻辑门搭出来的电路一模一样。

这个方法在原型验证的时候特别好用。因为不管是多复杂的函数,只要真值表确定,拿一块74LS151接跳线就能快速验证逻辑正确性,不用等焊板子。等验证通过了,再根据具体需求决定是用逻辑门搭还是直接用选择器做最终方案。我用这个方法排查过不少逻辑设计上的错误,效率高很多。

5. 更进一步的排列组合:多级电路与常见芯片搭配

5.1 全加器的搭法,理解“位”之间的排列组合

加法器是数字电路的经典项目。半加器处理两个一位数的相加,输出和S与进位C。全加器还要处理来自低位的进位Cin,所以是三输入。

全加器的逻辑表达式是:S = A XOR B XOR Cin,Cout = AB + Cin(A XOR B)。你先别急着背公式,关键是想明白为什么是这个结构:A和B先异或,得到的是“不考虑进位的本位和”,这个结果再和Cin异或一次,得到最终的和;而进位呢,AB之间如果都是1,必然产生进位,如果A和B中有一个为1,则进位取决于Cin。

从电路实现上看,全加器可以用两个半加器加一个或门组合出来。为什么能这样分解?因为A + B + Cin的操作可以分成两步:先算A + B,得到S1和C1;再把S1 + Cin,得到S2和C2;最后Cout = C1 + C2。这就是一个典型的“函数分解”,也是排列组合思维在算法层面的体现——大问题拆小问题,小问题的解再组合成大问题的解。

有了全加器,你就可以把它排列成4位加法器:把4个全加器级联起来,低位的Cout接到高位的Cin。这种“串行进位”的结构虽然简单,但随着位数增加,进位传递延迟会越来越大。我在实验板上搭过4位的,用按键模拟输入,LED显示结果,整体体验非常好,但如果你要做更高速的电路,就得上先行进位加法器了——那是另一个级别的排列组合艺术。

5.2 芯片级联的排列组合:用两片74LS138扩展成4线-16线译码器

单看一块芯片,功能是固定的。但芯片与芯片之间一排列组合,功能立刻翻倍。扩展译码器就是一个很经典的例子:两片74LS138,如何变成4线-16线译码器?

思路是这样的:4线输入中,高两位D3、D2决定选择哪一片芯片,低两位D1、D0作为片内译码输入。怎么实现“选择哪一片”?74LS138本身有使能端,三个使能端E1高有效,E2A和E2B低有效。把第一片的E2A和第二片的E2B都接D3的反相信号,D3为0时第一片工作;D3为1时第二片工作。低两位D1、D0同时接到两片的A1、A0上,这样每一时刻只有一片芯片输出有效信号,另一片所有输出都无效。

这个设计里最妙的地方,就是使能端的组合使用。使能端本质上是片选信号,而片选信号的设计,正是芯片级组合逻辑的核心:多个模块共享输入,但通过使能信号把数据“路由”到正确模块。无论是存储器扩展、总线设计还是外设寻址,背后都是这套思想。理解了译码器的扩展,你就理解了计算机地址解码的基本原理——CPU发出的地址信号,经过译码器的排列组合,选中内存中某个特定单元。

5.3 从理论到实践:一个数字电路音乐电路的思路

前面说的全加器和译码器都偏“正经”,我再用一个偏娱乐的项目说说排列组合的开放性——数字音乐电路。

网上有不少“音乐电路”方案,核心思路其实都一样:用计数器或振荡器产生频率可变的脉冲信号,再通过扬声器发声。音乐的本质是一串频率在时间上的排列组合,所以只要能控制不同音符对应的频率、按顺序切换,就能演奏一段旋律。

我做过一个最简单的版本:用555定时器搭一个频率可调的多谐振荡器,用一个CD4017计数器做顺序控制,再用电阻网络给不同的音高提供不同的充电电阻。CD4017是一个10输出计数器,它的状态输出Y0到Y9会依次变高,相当于“按顺序选中”不同的频率档位。每个Y输出端接一个不同的电阻到振荡器的定时端,电阻阻值决定频率,也就决定了音高。这样一来,Y0到Y9的排列顺序就变成了一段旋律的播放顺序。

说起来容易,调起来麻烦。我踩了个大坑:电阻阻值不能单纯按音乐频率比例来选,因为555的振荡频率跟电阻并不是精确的线性关系,需要边听边微调。所以我在每个电阻的位置都留了可调电阻的位置,先用10k多圈电位器调出基准音,再根据十二平均律的频率比例推算其他档位。

这个项目最大的收获,不是学会了音乐电路本身,而是顺势把前面说的振荡器、计数器、译码器、电阻网络全都串了起来。这些逻辑器件搭配起来,就是一台简单的可编程乐器——所有的音乐旋律,无非就是频率的排列组合。

6. 实战中那些绕不过去的坑和排查方法

6.1 悬空引脚的“幽灵干扰”

我做数字电路实验遇到最多的问题,就是莫名其妙的输出跳变。查了半天,最后发现是某个闲置输入引脚悬空了。CMOS芯片的输入阻抗极高,悬空引脚会感应周围电场,导致芯片内部逻辑状态漂移,进而干扰同一芯片的其他门。

处理方式就一句话:所有输入引脚必须可靠接高电平或低电平,不允许悬空。在面包板上操作时,我习惯把同一芯片的所有闲置输入引脚统一接到VCC或GND。具体接哪个,取决于闲置门的类型——与非门闲置时输入接高电平,或非门闲置时输入接低电平。这样可以保证闲置门不产生无关的电流消耗,也不会对外部电路造成干扰。

6.2 供电和去耦:数字电路的“血压”问题

芯片工作不稳定,先别怀疑芯片坏了,多数情况是供电问题。面包板上的导线电阻加上芯片切换时的瞬态电流,会让VCC产生毛刺,导致逻辑电平误判。

我的标准做法是:在每个芯片的电源引脚旁边放一个0.1uF的瓷片电容,从VCC到GND。这在高速数字电路里几乎是标配,叫去耦电容,作用是给高频瞬态电流提供就近的低阻抗通路。至于为什么选0.1uF,这个值在高频特性和储能之间取得平衡,经验值,直接照用。如果系统里有电机、继电器之类的大功率负载,还需要在电源输入端加大电解电容做储能。

6.3 检查逻辑错误的系统化方法

如果电路供电正常、引脚接对了,但功能还是不对,那就得系统化排查了。我的排查顺序是这样的:

第一,分段验证。别指望整个电路一下子就是对的。比如搭全加器,先只接半加器部分,确认S1和C1输出正确,再接上半加器二和或门。这个习惯救了我很多次,因为一旦整体不工作,你很难判断是哪一部分出了问题。

第二,对照真值表逐行测试。给输入端加每一种状态组合,用万用表或LED观察输出,跟理论真值表比对。哪一行对不上,就定位到具体逻辑路径上。

第三,用“固定输入法”缩小范围。就是说,对某个输入强行接高电平或低电平,观察输出的变化是否符合预期。比如一个与门输出不对,先把其中一个输入接低,无论另一个输入是什么,输出应当始终为0;如果不为0,说明芯片坏了或者接线错了。

第四,怀疑芯片本身。74系列芯片也分不同后缀,LS、HC、HCT、AC等,它们的输入输出电平和驱动能力都不一样。混用不同系列的芯片,可能出现电平不兼容的情况——比如TTL输出的高电平可能达不到CMOS输入要求的阈值。我一开始没注意这个问题,结果TTL芯片输出给CMOS芯片,信号就是上不去。后来统一改用同一系列,问题迎刃而解。

6.4 逻辑门振荡器的不稳定问题

回到前面那个用与非门搭的振荡器,它最大的问题就是:频率不稳定。因为门电路的翻转阈值随温度和电压漂移,RC电路的充放电过程受元件精度影响也很大。我实测同一个电路,在不同供电电压下,频率差距能达到百分之十几。

如果想要稳定频率的脉冲信号,建议换成晶振或555定时器芯片。晶振靠石英晶体的压电效应维持振动,频率精度极高;555定时器内部有比较器和触发器,输出频率由外部R和C精确决定,比门电路振荡器稳定得多。所以,虽然门电路搭振荡器看起来特别“极客”,但如果你的项目对时间精度有要求,还是老老实实换专用器件。

7. 器件选型的一点想法和项目扩展方向

前面提了好几次芯片选型,我再展开说几句。数字逻辑器件的家族很庞大,74系列是TTL,4000系列是CMOS,两者在功能上有很多对应关系,但在电气特性上差别不小。

TTL芯片速度快、驱动能力强,但功耗相对大;CMOS芯片功耗极低、电源电压范围宽,但速度相对慢。如果是电池供电的便携设备,CMOS是不二之选;如果是高速信号处理,74HC甚至74AC系列更合适。我在实验课上经常看到有人拿74LS和4000系列混搭,还抱怨为什么不工作——多半是电平兼容性的问题。

还有一个容易忽略的点是芯片的“扇出系数”,就是一个门输出能驱动多少个后续门输入。TTL标准系列的扇出系数通常是10,也就是说一个输出端最多接10个输入端,超过这个数,信号电平就会劣化。做复杂电路时,如果一个输出要分给很多路信号,需要在中间加缓冲器(比如74LS244)来增强驱动能力。这个细节在简单实验中不太明显,但做到比较大规模的电路时,就非常关键了。

如果你学会了基础的逻辑门排列组合,后续有几个方向可以玩得很深。一个是做一个小型CPU——用74系列芯片做出一个能执行简单指令的处理器,网上有完整的开源项目,做完之后再回头看“排列组合”这四个字,感受会很不一样。另一个是学习硬件描述语言,Verilog或VHDL,用代码描述逻辑电路,然后烧到FPGA里验证——这时你写的每一行代码,最终都会被综合工具映射成真实逻辑门的排列组合。有了手工搭电路的基础,写HDL的时候你对硬件行为的直觉会扎实得多。

还有一点,现在芯片采购比以前方便太多了,网上下单第二天就能到。但我真心建议,学习阶段还是要在面包板上亲手搭几次电路。因为面包板上的排列组合是看得见摸得着的——哪根线接错了、哪个引脚悬空了,逼着你把电路逻辑从头到尾理一遍。这个“物理接触”的过程,是仿真软件替代不了的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 10:55:52

BLEU与ROUGE指标解析:从精确率/召回率到机器翻译与文本摘要评估

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 10:54:47

RK3588 NPU 三路视觉任务并发部署实战:模型分配与性能调优

一块 RK3588 的板子,要同时处理三路视觉任务:人员入侵要抓,烟火要盯,垃圾分类也要出结果。刚接到这个需求的时候,我第一反应是“先拆开跑”,无非就是三个模型轮流上。真正落地之后才发现,单块 R…

作者头像 李华
网站建设 2026/9/6 10:54:12

国际军事飞行员跨国流动:技术合规与航空业人才需求分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 10:52:43

1688工业品运营深耕思路:垂直赛道与全渠道落地运营心得

一、前言:工业品1688运营的核心误区目前1688运营行业存在普遍的同质化问题,多数运营团队采用全类目通用运营模式,无差别承接各类店铺,套用标准化模板运营。这种模式适配日用、快消等消费品类目,但完全不符合工业品赛道…

作者头像 李华
网站建设 2026/9/6 10:52:36

多层感知机MLP:被低估的基础神经网络模型实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 10:52:05

Springboot实验室预约管理系统【337737】 -附源码(开箱即用)

项目介绍 面向高校实验教学中心的实验室预约与设备管理平台,支持空闲实验室预约、时段审核、设备台账与报损登记。 技术栈 层次技术后端Spring Boot 2.7、MyBatis、JWT前端Vue 3、Vite、Element Plus、Vue Router、Axios数据库MySQL 8.0架构B/S、前后端分离、RES…

作者头像 李华