新闻详情

新闻详情

首页 / 资讯中心 / 详情

计算机组成原理:DMA方式原理、三种传送方式与408考点解析

发布时间:2026/9/28 1:51:20来源:尧图网络
计算机组成原理:DMA方式原理、三种传送方式与408考点解析
1. 从一道408真题说起DMA到底在考什么如果你正在准备计算机408统考或者正在啃唐朔飞、白中英那几本计算机组成原理的教材那你一定绕不开一个知识点——DMA方式。这个知识点几乎年年出现在选择题甚至大题里比如24年45题就考了DMA相关的计算与概念辨析。很多同学第一次学到这里的时候脑子里全是问号为什么有了中断方式还不够DMA控制器到底是怎么绕过CPU搬运数据的周期挪用和停止CPU访存这两种方式到底有什么区别我当年复习408的时候DMA这一块也是反复看了好几遍才真正理清楚。教材上讲得比较抽象王道和各类试题库里的题目又往往只给结论不给推导过程导致很多人是背下来的而不是理解了的。但这恰恰是408最容易失分的地方——因为DMA的考点非常细选择题可以考你三种DMA传送方式的效率对比大题可以考你DMA传送时间的计算甚至还能和总线、存储器、中断系统串起来综合出题。所以这篇内容我想从一个过来人的角度把I/O设备与主机之间信息传送的控制方式这条主线彻底捋清楚重点把DMA方式的原理、三种实现方式、与中断方式的本质区别、以及考试中常见的计算套路讲透。不管你是刚开始学组成原理的小白还是已经刷了几套题但总觉得DMA这块不踏实的考研党看完之后应该都能有一个清晰的框架。我会尽量用生活化的类比来解释那些抽象概念同时把考试里真正会考的细节一个不落地补上。2. 为什么程序查询和中断方式都不够用2.1 程序查询方式CPU被彻底绑死要理解DMA为什么会出现得先看看它前面的两种方式有什么问题。最早的信息传送方式是程序查询方式也叫程序轮询。它的逻辑特别简单粗暴CPU不断读取I/O设备的状态寄存器看看设备准备好了没有如果准备好了就传送一个数据没准备好就继续循环等待。你可以把它想象成你去一家很火的餐厅吃饭但是这家餐厅没有取号系统你只能站在柜台前一遍遍问服务员好了吗好了吗。在等待的这段时间里你什么别的事都干不了。对应到计算机里就是CPU在轮询期间完全被这个I/O操作占住了不能执行其他程序。对于慢速的I/O设备比如键盘CPU可能要轮询成千上万次才能等到一个字符输入效率低得令人发指。这种方式唯一的优点是硬件结构简单不需要额外的控制电路。所以在一些极其简单的嵌入式场景里偶尔还能见到但在现代计算机系统中基本已经被淘汰了。2.2 中断方式CPU解放了但数据搬运还是它干中断方式的出现是一次巨大的进步。它的核心思想是CPU不需要主动去问设备你好了没而是设备准备好之后主动给CPU发一个中断信号CPU收到信号后再暂停当前程序转去执行中断服务程序来处理数据传送。还是用餐厅的类比现在餐厅有了取号系统你拿个号就可以去逛街了等叫到你的号再回来。这期间你的时间被解放出来了可以干别的事。对应到计算机里就是CPU在等待I/O设备准备数据的过程中可以继续执行其他程序只有真正需要传送数据的时候才被打断。但是中断方式有一个容易被忽略的隐藏成本每一次数据传送都需要CPU亲自参与。具体来说当设备准备好一个数据后它发中断给CPUCPU需要保存现场、跳转到中断服务程序、执行数据传送指令从设备寄存器读到内存或者反过来、恢复现场、返回原程序。这一套流程下来CPU花在搬运上的开销其实非常大。对于高速设备比如磁盘、网卡数据传送非常频繁如果每传送一个字都要走一遍完整的中断流程CPU大部分时间都在做搬运工真正用于计算的时间被严重挤压。这就好比你虽然可以逛街了但每次叫号你都得亲自跑回餐厅端一次菜如果菜很多你跑来跑去的次数多了逛街也逛不安生。2.3 瓶颈的本质数据搬运必须经过CPU程序查询和中断方式有一个共同的本质特征数据传送必须经过CPU的寄存器。也就是说数据从I/O设备到主存的路径是I/O设备 → CPU寄存器 → 主存反过来也一样。CPU在这里扮演了一个中转站的角色。这个瓶颈在低速设备场景下还能忍但到了高速大批量数据传输的场景就完全不行了。于是一种新的思路出现了能不能让数据不经过CPU直接在I/O设备和主存之间开辟一条通道这就是**DMADirect Memory Access直接存储器访问**方式的核心思想。3. DMA控制器的内部结构与工作流程3.1 DMA控制器的核心组成部件DMA方式之所以能让数据绕过CPU关键在于系统中增加了一个专门的硬件部件——DMA控制器DMAC。这个控制器本质上是一个能接管总线控制权的小型处理器它内部有几个关键的寄存器理解了这几个寄存器就理解了DMA的工作机制。首先是内存地址寄存器AR它存放的是本次DMA传送在主存中的起始地址。每传送一个数据这个地址会自动加一或减一指向下一个存储单元。其次是字计数器WC它记录还需要传送多少个数据每传送一个就减一减到零时表示传送完毕。这两个寄存器决定了数据传到哪里和传多少。然后是数据缓冲寄存器用于暂时存放正在传送的数据。还有设备地址寄存器或者叫设备端口寄存器用来指定与哪个I/O设备进行数据交换。最后是控制与状态寄存器里面存放着传送方向是读还是写、是否启动DMA、传送是否完成等控制信息和状态信息。除了这些寄存器DMA控制器还需要一套中断机构。注意DMA传送结束后DMA控制器会向CPU发一个中断信号告诉CPU这批数据我搬完了。所以DMA方式并不是完全不用中断而是只在整批数据传送完成后才中断一次而不是每传一个数据就中断一次。这个区别非常关键也是考试常考的点。3.2 DMA传送的完整流程拆解我把DMA的一次完整传送过程拆成几个阶段来讲这样你脑子里会有一个清晰的时间线。第一阶段是预处理阶段。CPU在执行主程序的过程中发现需要启动一次DMA传送比如要从磁盘读取一个文件块到内存于是CPU通过程序设置DMA控制器的各个寄存器把主存起始地址写入AR把要传送的数据个数写入WC把设备地址写入设备寄存器把传送方向和控制信息写入控制寄存器。设置完成后CPU启动DMA控制器然后就可以去执行其他程序了。第二阶段是数据传送阶段。DMA控制器被启动后开始向CPU发出总线请求信号HRQ。CPU在当前总线周期结束后如果同意让出总线就发出总线响应信号HLDA。DMA控制器收到响应后就接管了总线的控制权开始直接在I/O设备和主存之间传送数据。每传送一个数据AR加一WC减一。这个过程完全由硬件控制不需要CPU干预。第三阶段是结束处理阶段。当WC减到零时DMA控制器知道这批数据传完了于是释放总线控制权同时向CPU发出中断请求。CPU响应中断后执行一小段中断服务程序做一些收尾工作比如检查传送是否有错误、设置标志位表示数据可用等。整个流程中CPU真正参与的只有最开始设置寄存器和最后处理中断这两小段中间大批量的数据搬运完全由DMA控制器硬件完成。这就是DMA效率高的根本原因。3.3 总线控制权的交接DMA和CPU怎么抢总线这里有一个很多同学容易迷糊的点DMA控制器接管总线的时候CPU在干什么答案是CPU被暂停了对总线的使用。因为总线是共享资源同一时刻只能有一个主设备控制总线。当DMA控制器成为总线主设备时CPU就不能访问主存了。但注意CPU不一定完全停止工作。如果CPU当前执行的指令和数据都在Cache里那么即使不访问主存CPU也能继续执行一段时间。这就是为什么现代计算机中Cache的存在能进一步提高DMA的效率——CPU和DMA控制器可以并行工作一个在Cache里跑程序一个在主存和I/O之间搬数据。不过从408考试的角度通常简化处理为DMA传送期间CPU不能访存。这个简化假设在做计算题的时候非常重要后面讲计算的时候会详细说。4. 三种DMA传送方式停止CPU访存、周期挪用与交替访问4.1 停止CPU访存方式简单但浪费停止CPU访存方式是最简单的一种DMA实现。当DMA控制器需要传送数据时它向CPU发出总线请求CPU响应后完全放弃总线的控制权直到整批数据全部传送完毕才把总线还给CPU。这种方式的好处是控制简单DMA控制器不需要复杂的时序逻辑。但缺点也很明显在DMA传送期间CPU要么完全停止访存如果Cache未命中就只能干等要么只能依靠Cache运行。如果传送的数据量很大CPU被冻结的时间就会很长对系统性能影响很大。打个比方这就像你要搬一批家具进房间你把房间门完全锁上不让任何人进出直到所有家具搬完才开门。虽然搬家具的过程很顺畅但其他人这段时间完全没法用这个房间。这种方式适合数据传输率极高的设备因为如果设备传输率极高CPU就算想穿插访存也插不进去多少不如干脆让DMA一次传完。4.2 周期挪用方式DMA偷一个周期周期挪用方式也叫周期窃取方式是实际系统中最常用的一种。它的核心思想是DMA控制器不需要一直霸占总线而是在需要传送一个数据的时候向CPU借一个总线周期或者叫挪用、窃取一个存储周期传完这个数据就把总线还给CPU。具体来说当DMA控制器准备好一个数据要传送时它向CPU发出总线请求。CPU在当前总线周期结束后响应请求让出一个总线周期给DMA使用。DMA在这个周期内完成一个数据的传送然后释放总线。CPU继续执行程序直到DMA下一次需要传送数据时再重复这个过程。这种方式的好处是CPU和DMA可以交替使用总线CPU不会长时间被阻塞。但代价是DMA控制器的控制逻辑更复杂而且每次传送都要经历一次总线请求和响应的过程有一定的开销。用搬家具的类比这次你不是把门锁上了而是每次搬一件家具的时候跟房间里的人说借过一下搬完一件就让人家继续用房间。这样房间里的人虽然会被打断几次但不会长时间没法用。这里有一个考试常考的计算点在周期挪用方式下DMA传送一个数据需要占用一个存储周期。如果主存的存取周期为TDMA需要传送n个数据那么DMA总共占用的存储周期数是nCPU被偷走的时间就是n×T。但注意DMA传送数据本身也需要时间如果I/O设备的数据传输率很高DMA请求非常频繁那么CPU被挪用的周期比例就会很高甚至可能影响CPU的正常执行。4.3 交替访问方式把时间切片分给双方交替访问方式也叫透明DMA方式它的思路又不一样。这种方式下不需要DMA发出总线请求而是把存储周期分成两个时间片一个给CPU用一个给DMA用。比如存储周期为T前半个周期T/2给CPU访存后半个周期T/2给DMA传送数据。两者交替使用互不干扰。这种方式的好处是不需要总线请求和响应的握手过程时序控制简单CPU和DMA都能获得固定的访存时间。但缺点是对主存的存取速度要求更高因为存储周期被分成了两半相当于要求主存的速度翻倍。如果主存本身速度不够快这种方式就无法实现。这种方式适合高速外设因为DMA有固定的时间片可用不需要等待总线请求的响应。但由于对主存速度要求高实际系统中用得不如周期挪用方式普遍。4.4 三种方式的对比与考点总结我把三种方式的关键特征整理成一张表方便你对比记忆对比维度停止CPU访存周期挪用交替访问总线控制方式DMA独占DMA与CPU交替时间片固定分配CPU受影响程度最大可能完全停止访存较小被挪用个别周期固定每周期让出一半DMA控制复杂度最简单较复杂中等对主存速度要求无特殊要求无特殊要求要求较高适用场景高速大批量传送通用场景高速外设是否需要总线请求需要需要不需要考试中最常考的是周期挪用方式因为它最典型也最实用。你需要记住的核心结论是周期挪用方式下DMA每传送一个数据占用一个存储周期CPU被挪用的时间等于DMA传送的数据个数乘以存储周期。5. DMA方式与中断方式的本质区别5.1 从谁在搬数据看本质差异很多同学学完DMA之后还是分不清DMA和中断到底有什么本质区别。我用一句话来概括中断方式是CPU亲自搬数据DMA方式是DMA控制器替CPU搬数据。在中断方式下数据传送的路径是I/O设备 → CPU寄存器 → 主存CPU必须执行指令来完成这个搬运。在DMA方式下数据传送的路径是I/O设备 → 主存或反向CPU不参与具体的数据搬运只负责最开始设置参数和最后处理中断。这个本质差异带来了一系列连锁反应。因为CPU不参与搬运所以DMA方式下不需要保存和恢复现场那是中断才需要的也不需要执行指令传送速度可以非常快。也因为CPU不参与搬运所以DMA方式下数据不经过CPU的寄存器这对CPU的寄存器资源也是一种节省。5.2 中断时机与响应方式的差异中断方式是每传送一个数据就中断一次CPU需要频繁地响应中断、保存现场、恢复现场。DMA方式是整批数据传送完成后才中断一次中断频率大大降低。这个差异在考试中经常以对比题的形式出现。比如题目会问DMA方式与中断方式相比主要优点是什么标准答案是DMA方式在数据传送过程中不需要CPU干预只在传送结束后才中断CPU因此CPU开销小适合高速大批量数据传送。还有一个容易混淆的点DMA请求和中断请求是两种不同的请求。DMA请求的是总线控制权中断请求的是CPU的处理时间。DMA请求的优先级通常高于中断请求因为总线控制权如果被中断抢走了DMA传送就会中断可能导致数据丢失。所以在优先级排序上通常是DMA请求 中断请求 程序查询。5.3 响应时机的差异中断方式下CPU通常在一条指令执行完毕后才响应中断请求。而DMA请求可以在一个总线周期结束后就响应响应粒度更细。这也是DMA方式效率更高的一个原因——它不需要等到一条指令执行完只要当前总线周期结束就可以让出总线。不过这里要注意DMA请求虽然可以在总线周期结束后响应但CPU当前正在执行的总线周期是不能被打断的。也就是说如果CPU正在进行一次访存操作DMA必须等这次访存完成才能接管总线。这个细节在做时序分析题的时候可能会用到。6. DMA传送时间的计算套路与真题拆解6.1 周期挪用方式下的时间计算这是408考试中最常考的一类计算题。我先把基本公式说清楚然后用一个具体例子来演示。在周期挪用方式下假设主存的存取周期为T单位通常是nsDMA需要传送n个数据那么DMA占用总线的时间就是n×T。但这里有一个关键问题DMA传送数据的速度受限于I/O设备的数据传输率。如果I/O设备每传送一个数据需要的时间是t那么DMA两次请求之间的间隔至少是t。如果t T那么DMA不会连续占用总线CPU有足够的时间在两次DMA请求之间执行程序。如果t T那么DMA请求会非常频繁CPU可能来不及执行多少指令就被再次挪用周期。考试中常见的问法是给定主存存取周期、I/O设备传输率、数据块大小求DMA传送占用的时间比例或者求CPU被挪用周期占总周期的比例。举个例子主存存取周期为500nsI/O设备的数据传输率为2MB/s要传送一个4KB的数据块。首先计算I/O设备传送一个字节需要的时间1s / 2MB 1s / (2×10^6 B) 500ns。也就是说I/O设备每500ns准备好一个字节。而主存存取周期也是500ns所以DMA每500ns挪用一次总线每次挪用500ns。这意味着总线几乎被DMA和CPU各占一半。传送4KB数据需要挪用4096次总时间约为4096×500ns 2.048ms。6.2 停止CPU访存方式下的时间计算停止CPU访存方式的计算更简单DMA从开始传送到结束CPU完全不能访存。传送n个数据的时间取决于I/O设备的速度和主存的速度中较慢的那个。如果I/O设备每t时间准备好一个数据主存每T时间能完成一次存取那么传送一个数据的实际时间大约是max(t, T)。总时间就是n×max(t, T)。但考试中通常简化处理直接认为DMA传送n个数据占用n个存储周期即n×T。因为在这种方式下DMA一旦获得总线就连续传送不需要反复请求。6.3 一道典型真题的完整拆解我拿一道经典的408风格题目来演示完整的解题思路某计算机主存存取周期为200nsCPU主频为500MHz。现采用DMA方式从磁盘读取一个4KB的数据块到主存磁盘的数据传输率为10MB/s。假设采用周期挪用方式求DMA传送期间CPU被挪用周期占总周期的比例。解题步骤第一步计算磁盘传送一个字节需要的时间。磁盘传输率10MB/s即每秒传送10×10^6个字节每个字节需要的时间是1/(10×10^6) 100ns。第二步计算DMA传送4KB数据需要挪用的存储周期数。每个字节需要挪用一次总线共4096次每次占用一个存储周期200ns。所以DMA总共占用总线的时间是4096×200ns 819200ns。第三步计算整个传送过程的总时间。由于磁盘每100ns就准备好一个字节而DMA每200ns才能挪用一次总线所以DMA实际上是被主存速度限制的。传送一个字节需要200ns因为要等一个存储周期4096个字节总共需要4096×200ns 819200ns。第四步计算CPU被挪用的比例。在819200ns的总时间内DMA占用了819200ns的总线时间所以CPU被挪用的比例是100%。这个结果说明当I/O设备速度很快而主存速度相对较慢时周期挪用方式下CPU几乎无法访存这时候可能就不如直接用停止CPU访存方式了。这道题的关键在于理解周期挪用方式下DMA占用总线的时间取决于主存存取周期和数据个数的乘积而总时间取决于I/O设备传输率和主存存取周期中较慢的那个。很多同学容易把这两个概念搞混。7. 复习DMA这一块时我踩过的坑和总结的技巧7.1 别把DMA和中断的优先级搞反我当年做题的时候有一道选择题问DMA请求和中断请求哪个优先级更高我下意识觉得中断更重要所以优先级更高结果选错了。正确答案是DMA请求优先级更高。原因前面说过DMA请求的是总线控制权如果被中断抢走了总线DMA传送的数据可能会丢失。而中断请求晚一点响应通常不会造成数据丢失只是会稍微增加响应延迟。这个知识点在唐朔飞教材里有明确说明但很多同学看书的时候一扫而过做题的时候就容易错。我的建议是把DMA请求 中断请求 程序查询这个优先级顺序当成常识记下来做题的时候直接套。7.2 计算题里存储周期和总线周期别混用在做DMA计算题的时候题目有时候给的是存储周期有时候给的是总线周期有时候给的是机器周期。这三个概念在DMA计算中通常可以近似认为是一样的都表示一次访存需要的时间但严格来说有区别。408考试中一般不会在这上面设陷阱但你要知道题目给的是哪个参数用对应的数值去算。另外如果题目给了CPU主频你要能算出CPU时钟周期然后根据题目条件判断一个存储周期等于几个时钟周期。这个换算在综合题里经常用到。7.3 DMA传送结束后中断CPU这个中断属于什么类型这是一个容易被忽略的细节DMA传送结束后向CPU发出的中断请求属于可屏蔽中断还是不可屏蔽中断答案是通常属于可屏蔽中断。因为DMA传送完成并不是什么紧急到不可延迟的事件CPU可以过一会儿再处理。但有些教材可能不强调这一点考试中如果考到你要知道DMA结束中断一般是可屏蔽的。7.4 王道和唐朔飞的教材怎么配合看如果你用的是王道复习指导我建议DMA这一块先看唐朔飞教材的对应章节把DMA控制器的结构和工作流程搞清楚然后再做王道的题目。因为王道偏应试知识点讲得比较浓缩如果没有教材的基础直接看王道容易知其然不知其所以然。唐朔飞的教材在DMA这部分讲得比较细尤其是三种传送方式的对比和时序分析值得仔细看一遍。白中英的教材在DMA部分也有独到之处特别是对DMA控制器内部寄存器的描述比较清晰。如果你时间充裕两本教材对照着看效果会更好。7.5 做真题时注意DMA和其他知识点的综合DMA很少单独出大题它经常和总线仲裁、存储器扩展、中断系统等知识点综合出题。比如一道大题可能先问你总线仲裁的方式再问你DMA传送的时间计算最后问你中断服务程序的执行流程。这种综合题要求你对整个I/O系统有全局的理解不能只盯着DMA一个点。我的建议是复习到DMA的时候主动把它和中断、总线、存储器这几个章节串起来想一遍。比如问自己DMA控制器接管总线的时候总线仲裁器在干什么DMA传送的数据经过Cache吗DMA传送结束后CPU怎么知道数据已经准备好了这些问题想清楚了综合题就不怕了。8. 从408到实际系统DMA在真实硬件中的影子虽然408考试里的DMA是简化过的模型但它的核心思想在真实硬件中无处不在。你如果玩过STM32一定听说过串口DMA、SPI DMA、ADC多通道DMA采集这些词。STM32里的DMA控制器和408里讲的DMA控制器在原理上是一模一样的都是让数据在外设和内存之间直接搬运不经过CPU。比如你用STM32做ADC多通道采集如果不使用DMA你就得在中断里逐个读取ADC数据寄存器的值CPU开销很大。使用了DMA之后你只需要配置好DMA的源地址ADC数据寄存器、目的地址内存数组、传输长度启动DMA然后ADC每转换完一个通道DMA就自动把数据搬到内存里全部搬完之后再中断CPU一次。这和408里讲的DMA传送结束后中断CPU完全对应。再比如Linux内核里的DMA子系统它管理着各种设备的DMA通道提供了一套统一的API让驱动开发者使用。内核DMA保护机制可以防止恶意设备通过DMA访问不该访问的内存区域这在408里当然不会讲但如果你对系统底层感兴趣这是一个很好的延伸方向。所以我的体会是408里的DMA知识不是死记硬背的考点它是一套真实存在的硬件工作机制的简化模型。你如果在复习的时候能把它和实际硬件对应起来不仅记得更牢而且对以后做嵌入式或者系统开发也有实实在在的帮助。9. 几个容易出选择题的细节补充最后再补充几个408选择题里经常出现的细节这些都是我在刷题过程中反复遇到的。第一个细节DMA控制器中的字计数器记录的是还需要传送的数据个数而不是已经传送的个数。每传送一个数据计数器减一减到零表示传送结束。有些题目会故意把减到零说成加到某个值你要注意区分。第二个细节DMA方式下数据传送方向是由控制寄存器中的方向位决定的而不是由DMA控制器自动判断的。CPU在预处理阶段需要明确告诉DMA控制器是从设备读到内存还是从内存写到设备。第三个细节DMA控制器不是中断控制器它虽然能发中断但它的主要功能是控制数据传送中断只是它通知CPU的一种手段。不要把DMA控制器和中断控制器的功能搞混。第四个细节在周期挪用方式下DMA控制器每传送一个数据都需要发一次总线请求。而在停止CPU访存方式下DMA控制器只需要在开始传送时发一次总线请求整批数据传送完毕后释放总线。这个区别在时序图题里经常考。第五个细节DMA传送不需要CPU执行指令所以DMA传送过程中CPU的指令执行不受影响除了访存被暂停。但中断方式下CPU需要执行中断服务程序指令执行流会被打断。这个区别在比较两种方式效率的时候是核心论据。把这些细节都吃透DMA这一块的选择题基本就不会丢分了。大题的话重点练周期挪用方式的时间计算把公式和推导过程练熟考试的时候直接套就行。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

从 CHANGELOG.md 到插件指纹:WPScan 如何用变更日志精准识别 WordCamp Dashboard Widget 版本 2026/9/28 2:46:03

从 CHANGELOG.md 到插件指纹:WPScan 如何用变更日志精准识别 WordCamp Dashboard Widget 版本

网络安全漏洞扫描渗透测试应用安全CLI 【免费下载链接】wpscan WPScan WordPress security scanner. Written for security professionals and blog maintainers to test the security of their WordPress websites. Contact us via contactwpscan.com 项目地址: ht…

阅读更多 →
区块链做网站避坑指南:3步省下50%冤枉钱 2026/9/28 2:46:03

区块链做网站避坑指南:3步省下50%冤枉钱

区块链做网站避坑指南:3步省下50%冤枉钱 找建站公司报价时,你是不是也心里直打鼓?对方张口就是“区块链概念”、“去中心化架构”,报价单上全是看不懂的术语,总价轻松破万甚至破十万。你明明只是想要个展示项目或者落地页,却担心自己不懂行被当成“…

阅读更多 →
Webiny React 依赖审计与现代化迁移指南:基于 dependencies/react.md 的完整解读 2026/9/28 2:46:03

Webiny React 依赖审计与现代化迁移指南:基于 dependencies/react.md 的完整解读

CMS后端前端 【免费下载链接】webiny-js Open-source, self-hosted CMS platform on AWS serverless (Lambda, DynamoDB, S3). TypeScript framework with multi-tenancy, lifecycle hooks, GraphQL API, and AI-assisted development via MCP server. Built for developers at…

阅读更多 →
NoneBot2 中的 aiohttp 驱动适配器:纯客户端 HTTP/WebSocket 连接的实现与使用 2026/9/28 2:46:03

NoneBot2 中的 aiohttp 驱动适配器:纯客户端 HTTP/WebSocket 连接的实现与使用

后端即时通讯 【免费下载链接】nonebot2 跨平台 Python 异步聊天机器人框架 / Asynchronous multi-platform chatbot framework written in Python 项目地址: https://gitcode.com/gh_mirrors/no/nonebot2 点击查看 免费下载 NoneBot2 的 nonebot.drivers.aiohttp …

阅读更多 →
动物图像数据集清洗实战:从28K原始图到生产级训练数据 2026/9/28 2:46:03

动物图像数据集清洗实战:从28K原始图到生产级训练数据

简介:本资源是一个面向计算机视觉初学者与AI实践者的动物图像分类数据集,适用于图像识别、数据增强、模型训练与迁移学习等典型CV任务。数据集涵盖狗、猫、马、蜘蛛、蝴蝶、鸡、羊、牛、松鼠、大象共10类常见动物,总计约28,000张中等质量JPG/…

阅读更多 →
mGBA 贡献指南:从 Issue 提报到编码规范与 MPL 2.0 许可合规的完整实践 2026/9/28 2:45:56

mGBA 贡献指南:从 Issue 提报到编码规范与 MPL 2.0 许可合规的完整实践

游戏开发 【免费下载链接】mgba mGBA Game Boy Advance Emulator 项目地址: https://gitcode.com/gh_mirrors/mg/mgba 点击查看 免费下载 mGBA 是一个以 C 和 C 编写的 Game Boy Advance 模拟器,同时支持 Game Boy / Game Boy Color 与 Super Game Boy&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉