delphi 自带线程池

时间: 2023-07-14 20:02:07 浏览: 38
### 回答1: Delphi自带线程池是指在Delphi开发环境中,内置了线程池的功能。线程池是一种能够管理和调度线程的机制,可以提高程序的性能和效率。 在Delphi中,线程池是通过使用TThreadPool类实现的。TThreadPool类提供了一组用于创建、管理和销毁线程池的方法和属性。通过使用线程池,开发人员可以更方便地管理和控制多线程的执行。 使用Delphi自带的线程池,可以将多个任务分配给线程池中的线程进行处理。线程池会根据当前系统资源的情况自动调度线程的执行,可以充分利用系统的多核处理能力,提高程序的并发处理能力。 此外,Delphi的线程池还支持线程的优先级设置、任务队列的管理和线程的复用等功能。线程池会自动管理线程的生命周期,当任务执行完成后,线程会被放入线程池中等待下一个任务的到来,避免了频繁创建和销毁线程带来的系统资源开销。 总结起来,Delphi自带线程池提供了方便的多线程管理和调度机制,能够提高程序的并发处理能力和性能。开发人员可以使用线程池来处理并行任务,提高程序的响应速度和效率。 ### 回答2: Delphi自带一个名为TThreadPool的线程池。线程池是一种管理和复用多个线程的机制,用来提高应用程序的效率和性能。 在Delphi中,TThreadPool是一个非常方便的工具,可以通过简单的调用来创建和操作线程池。使用TThreadPool,我们可以预先创建一定数量的线程,并将它们放入线程池中进行管理。当应用程序需要执行并发任务时,可以从线程池中获取空闲的线程来执行任务,而不需要频繁地创建和销毁线程。 使用Delphi的线程池,可以避免反复创建和销毁线程所带来的开销,提高了应用程序的性能和响应速度。此外,线程池还提供了更好的线程管理和调度,可以更高效地利用系统资源,避免过度创建线程导致的资源竞争和系统崩溃。 通过TThreadPool,我们可以根据应用程序的需求设置线程池的最大线程数、空闲线程的最长等待时间等参数,实现更灵活的线程控制。同时,TThreadPool还提供了一些方便的方法,如往线程池中添加任务、等待所有任务完成等。 总之,Delphi自带的线程池是一个非常实用的工具,可以提高应用程序的并发处理能力和效率。通过合理配置线程池的参数和使用方法,可以更好地管理和控制多线程,提升程序的性能和用户体验。 ### 回答3: Delphi没有自带线程池。Delphi是一种编程语言和集成开发环境,主要用于创建Windows应用程序。尽管Delphi提供了多线程编程的功能,但它本身并没有内置的线程池。 在Delphi中,您可以使用TThread类来创建和管理多线程。您可以通过创建TThread的子类并实现Execute方法来定义线程的执行逻辑。然后,您可以创建TThread对象并通过调用Start方法来启动线程。 要实现线程池的概念,您可能需要自己编写代码来管理一组可重用的线程对象。您可以使用TThread的Synchronize和Queue方法来处理线程之间的通信和同步。此外,您还可以使用TThreadPool类来自定义管理和调度线程的逻辑。 当您需要在Delphi应用程序中使用线程池时,您可以自己实现或使用第三方库来简化操作。一些第三方库如OmniThreadLibrary、Delphi Thread Pool等提供了线程池的功能,并且可以与Delphi无缝集成使用。 总而言之,Delphi本身没有提供内置的线程池,但您可以通过自己编写代码或使用第三方库来实现该功能。

相关推荐

Delphi 平台上可以使用 TThreadPool 类来实现线程池。TThreadPool 是 Delphi 提供的一个轻量级线程池实现,用于管理和复用线程资源,以提高并发执行任务的效率。 以下是一个简单的示例,演示如何在 Delphi 中使用 TThreadPool 创建线程池并提交任务: delphi program ThreadPoolDemo; {$APPTYPE CONSOLE} uses System.SysUtils, System.Threading; type TMyTask = class(TInterfacedObject, ITask) public procedure Execute; end; procedure TMyTask.Execute; begin // 在这里编写具体的任务逻辑 Writeln('Executing task'); end; var ThreadPool: TThreadPool; Task: ITask; begin try // 创建线程池 ThreadPool := TThreadPool.Create; // 提交任务到线程池 Task := TMyTask.Create; ThreadPool.QueueTask(Task); // 主线程等待任务完成 ThreadPool.WaitForIdle; // 释放线程池 ThreadPool.Free; except on E: Exception do Writeln('Exception: ', E.Message); end; end. 在这个示例中,我们创建了一个名为 TMyTask 的自定义任务类,它实现了 ITask 接口的 Execute 方法。在 Execute 方法中,我们可以编写具体的任务逻辑。然后,我们创建了一个 TThreadPool 对象,并使用 QueueTask 方法将任务提交到线程池中。最后,我们使用 WaitForIdle 方法等待所有任务执行完成,并释放线程池对象。 这只是一个简单的示例,实际使用中可能需要更复杂的任务管理、线程同步等操作。Delphi 的线程池还提供了其他功能,如限制并发线程数、取消任务等,你可以根据具体需求进行使用和扩展。
### 回答1: Delphi提供了一个名为"远程桌面"的功能,它使开发者能够通过网络远程访问其他计算机的桌面界面。这个功能允许开发者在自己的应用程序中实现远程桌面控制和协助功能。 借助Delphi的远程桌面功能,开发者可以创建一个支持远程访问和控制的应用程序。用户可以通过该应用程序远程连接到其他计算机,查看并操作远程计算机的桌面,就像是坐在远程计算机旁边一样。这对远程技术支持和协助非常有用,用户可以通过远程桌面应用程序与技术支持人员共享屏幕,以便唤起、诊断和解决问题。 Delphi的远程桌面功能支持实时屏幕共享,允许对远程桌面进行实时交互。除了屏幕共享之外,此功能还支持对远程计算机进行文件传输,以便在本地计算机和远程计算机之间进行文件传递。这对于远程会议、远程培训和远程工作都非常有帮助。 Delphi的远程桌面功能还允许开发者自定义用户界面和功能。开发者可以根据自己的需求添加额外的功能,例如录制远程会话、远程打印和远程命令执行等。这样,开发者可以根据具体应用场景和需求来创建功能强大且个性化的远程桌面应用程序。 总之,Delphi自带的远程桌面功能为开发者提供了一个完善的远程访问和控制解决方案。它允许开发者在自己的应用程序中实现远程桌面功能,为用户提供方便的远程技术支持和协助服务。无论是远程会议、远程培训还是远程工作,Delphi的远程桌面功能都能够提供灵活、可定制且高效的解决方案。 ### 回答2: Delphi 是一款强大的集成开发环境,除了提供丰富的编程工具和组件,还附带了一些实用的功能,其中之一就是自带的远程桌面。 Delphi 自带的远程桌面功能是一个非常便捷的工具,可以实现远程访问和控制计算机的操作。通过该功能,用户可以从一台计算机远程连接到另一台计算机,并操作那台计算机上的所有功能。 远程桌面功能有很多实用的应用场景,例如: 1. 技术支持:远程桌面功能可以帮助技术支持人员远程访问用户的计算机,快速解决问题,避免因为距离或时间差而导致的延误。 2. 远程办公:在无法到达办公地点的情况下,使用远程桌面功能可以实现远程办公,访问公司内部网络和电脑上的文件,并进行各种工作任务。 3. 远程教育:教师可以通过远程桌面功能远程控制学生的计算机,实现远程教学和辅导。 Delphi 自带的远程桌面功能具有以下优势: 1. 简单易用:Delphi 远程桌面功能提供了直观的用户界面,用户可以轻松地进行远程连接和操作。 2. 高效便捷:远程桌面功能可以实现实时远程控制,用户可以即时对远程计算机进行各种操作,提高工作效率。 3. 安全可靠:Delphi 提供了安全的连接和数据传输机制,确保远程桌面操作的安全性和保密性。 总之,Delphi 自带的远程桌面功能是一项非常实用的工具,能够帮助用户轻松实现远程连接和控制,提高工作效率和便捷性。无论是技术支持、远程办公还是远程教育,都可以通过这个功能实现远程操作和访问。 ### 回答3: Delphi自带的远程桌面是一种功能强大的工具,可用于远程访问和控制其他计算机。它基于远程桌面协议(RDP),可以让用户在不同的计算机之间共享桌面和应用程序。通过Delphi自带的远程桌面,用户可以在自己的计算机上通过网络连接到远程计算机,就像坐在远程计算机前一样操作它。 Delphi自带的远程桌面具有许多强大的功能。首先,它提供了安全的远程连接,使用加密和身份验证的机制,确保远程访问的安全性。其次,它支持不同操作系统之间的远程连接,无论是Windows、Linux还是Mac OS,都可以通过Delphi的远程桌面进行访问和控制。此外,它还可以在不同的网络环境下进行远程连接,包括局域网、广域网和互联网等。 通过Delphi自带的远程桌面,用户可以远程访问和操作其他计算机上的文件和应用程序。无论是在办公室、家里还是旅途中,用户都可以通过远程桌面快捷地访问自己的工作环境,并完成各种任务。此外,远程桌面还支持剪贴板共享,可以将本地计算机上的文本、图像和文件复制到远程计算机上,方便地进行数据交换。 总的来说,Delphi自带的远程桌面是一款功能强大、安全可靠的工具,可以帮助用户实现远程访问和控制其他计算机的目的。无论是个人用户还是企业用户,都可以通过它提高工作效率和便利性。
Delphi7是一种流行的编程语言及集成开发环境(IDE),它具备强大的功能和丰富的库。在Delphi7中,系统自带了名为"JSON"的控件,用于处理JSON(JavaScript Object Notation)数据。 JSON是一种轻量级的数据交换格式,常用于现代互联网应用中的数据传输和存储。而Delphi7的JSON控件为开发人员提供了方便的功能,可以轻松处理JSON数据。 Delphi7的JSON控件具有以下主要特点: 1. 解析和生成JSON:使用JSON控件,开发人员可以将JSON字符串解析为一个对象树,便于对其中的数据进行操作和访问。同时,也可以将对象树转换为JSON字符串,用于数据的传输和存储。 2. 对象操作:JSON控件允许开发人员访问和修改JSON对象中的属性和元素。通过简单的语法,可以实现增加、删除、修改和查询操作,以满足各种业务需求。 3. 数组处理:JSON控件支持处理JSON数组,可以添加、删除和访问数组中的元素。开发人员可以利用JSON控件轻松地对数组进行排序、过滤和搜索操作。 4. 错误处理:JSON控件提供了灵活的错误处理机制,可以在处理JSON数据时捕获和处理错误。这有助于开发人员更好地控制JSON数据的处理流程,提高程序的稳定性和可靠性。 当然,除了Delphi7系统自带的JSON控件外,还有许多第三方库也提供了用于处理JSON数据的功能,如SuperObject、lkJSON等。根据具体的需求和开发习惯,开发人员可以选择适合自己的JSON库,来提升开发效率和灵活性。
Delphi PPPoE是指在Delphi开发环境中实现PPP over Ethernet(PPPoE)协议的一种解决方案。PPPoE是一种在家庭和小型企业宽带接入中广泛使用的协议,用于在以太网上建立拨号连接。以下是有关Delphi PPPoE的一些重要信息: Delphi是一种高级集成开发环境(IDE),特别适用于开发Windows平台上的桌面应用程序。Delphi中的PPP over Ethernet(PPPoE)解决方案允许开发人员在他们的应用程序中轻松集成PPPoE功能。 通过使用Delphi,开发人员可以实现PPPoE客户端和服务器功能。PPPoE客户端用于建立和管理拨号连接,而服务器用于接受和处理客户端的请求。使用Delphi的面向对象特性和广泛的类库,开发人员可以方便地创建可靠和高效的PPPoE解决方案。 Delphi PPPoE的实现通常涉及以下步骤: 1. 创建一个PPPoE客户端或服务器对象。 2. 设置连接参数,如用户名、密码、服务器地址等。 3. 建立连接并进行认证过程。 4. 在连接建立后,开发人员可以进行数据传输和其他操作,如发送和接收数据包。 使用Delphi PPPoE,开发人员可以轻松地创建支持PPPoE的应用程序,如拨号客户端、网络管理工具等。PPPoE协议的广泛应用使得Delphi PPPoE成为许多开发人员的首选,他们可以使用Delphi的优势和功能来实现具有高度可靠性和性能的PPPoE解决方案。 总结起来,Delphi PPPoE为开发人员提供了一种方便快捷的方式来集成PPP over Ethernet协议功能,使他们能够开发出高质量且功能丰富的应用程序来支持PPPoE连接。
《Delphi Cookbook》是一本介绍使用Delphi编程语言的指南书。Delphi是一种可视化的编程环境,它提供了许多可视化组件和工具,使开发者能够更快速、便捷地开发应用程序。 《Delphi Cookbook》的目的是通过示例代码和解释来帮助开发人员更好地理解和掌握Delphi编程语言。这本书涵盖了各种主题,包括基本语法、面向对象编程、图形用户界面设计、数据库连接、网络编程等。每个主题都包含多个具体的实例,通过实践来帮助读者熟悉和应用这些知识。 这本书适合有一定编程基础的读者,无论是初学者还是有经验的开发人员都可以从中受益。初学者可以通过书中的实例逐步学习Delphi的基本概念和用法,快速上手开发应用程序。有经验的开发人员可以通过阅读和实践,进一步提升自己的技能,掌握一些高级的编程技术和方法。 《Delphi Cookbook》是一本非常实用的编程指南,它不仅提供了示例代码,还解释了每个实例的原理和思路,帮助读者理解代码的逻辑和功能。通过这本书,读者可以学习到如何使用Delphi编写清晰、高效的代码,以及如何利用Delphi的特性来简化开发过程。 总之,《Delphi Cookbook》是一本适用于Delphi开发人员的实用指南,通过实例和解释,帮助读者更好地理解和运用Delphi编程语言。无论是初学者还是有经验的开发人员,都可以从中获得知识和技能的提升。
Delphi是一种具有很强开发能力的编程语言,而BS(Browser/Server)开发则是一种基于浏览器和服务器的应用程序开发模式。 在Delphi中进行BS开发,首先需要了解BS开发的基本概念和原理。BS开发通过在服务器上进行数据和业务逻辑的处理,然后通过浏览器作为客户端展示数据和交互界面。这种模式具有跨平台的特点,允许用户在不同的操作系统和设备上使用相同的应用程序。 在Delphi中进行BS开发,可以使用Delphi自带的VCL或FireMonkey框架进行界面设计和开发。VCL是用于Windows平台的图形用户界面(GUI)框架,而FireMonkey是一种跨平台的GUI框架,可以在多个操作系统上运行。 在BS开发中,需要使用Delphi提供的Web服务组件来实现与浏览器的通信。通过这些组件,可以将服务器端的数据和业务逻辑与客户端的界面进行交互。同时,还可以使用Delphi的数据库组件,如ADO或dbExpress,来进行数据的读取和存储。 在开发过程中,需要注意一些BS开发的技巧。比如,为了提高系统的性能和用户体验,可以使用Ajax技术来实现页面的异步刷新,减少网络传输的数据量。另外,为了保证应用程序的安全性,需要对用户的输入进行有效的验证和过滤,避免潜在的安全漏洞。 总之,Delphi BS开发是一种强大的开发模式,它可以帮助开发人员快速构建并部署跨平台的企业级应用程序。通过合理运用Delphi提供的各种组件和技术,可以开发出高效、安全、易于维护的BS应用程序。
Delphi FaceSDK是一个高度可扩展的人脸识别软件开发工具包。它为开发者提供了一套易于使用的API和功能,可以在各种应用中实现准确、快速的人脸检测和识别。 Delphi FaceSDK的主要特点包括: 1. 高性能:Delphi FaceSDK采用了先进的人脸识别算法,能够高效地处理大规模的人脸数据。无论是在人脸检测、人脸识别还是人脸比对方面,都能够提供快速、准确的结果。 2. 简单易用:Delphi FaceSDK提供了简洁易懂的API接口,开发者可以轻松地集成到自己的应用程序中。通过简单的几行代码,就可以实现人脸识别的功能,无需繁琐的配置和调试。 3. 跨平台支持:Delphi FaceSDK支持多种平台,包括Windows、Linux和Android等。开发者可以根据自己的需要选择合适的平台进行开发,实现一次开发多平台运行的效果。 4. 高度定制化:Delphi FaceSDK提供了丰富的参数配置和回调函数,开发者可以根据不同的需求进行定制。可以根据应用场景的不同,调整人脸识别的精度、速度或者选择特定的功能模块。 5. 安全可靠:Delphi FaceSDK采用了先进的加密和防护技术,保障人脸数据的安全性。同时,Delphi FaceSDK也支持数据的本地存储,确保用户隐私的保护。 总之,Delphi FaceSDK是一款功能强大、稳定可靠的人脸识别软件开发工具包。无论是用于安防监控、人脸支付还是人脸识别门禁等应用场景,都能够提供高质量的人脸识别解决方案。
Delphi WebBroker是一种基于Delphi编程语言开发的用于Web应用程序开发的框架。它提供了一组组件和类,帮助开发人员构建功能丰富、稳定、可伸缩和安全的Web应用程序。 Delphi WebBroker可以用于开发各种类型的Web应用程序,包括网站、Web服务、Web API等。它使用了一种基于事件驱动的开发模式,通过响应HTTP请求和生成HTTP响应来处理用户的请求和交互。 Delphi WebBroker提供了丰富的组件和类,用于处理HTTP请求和响应、处理表单数据、访问数据库、生成动态内容等。它支持多种Web服务器和协议,包括Apache、IIS、CGI、FastCGI等。 使用Delphi WebBroker进行Web开发具有以下优势: 1. 易于使用:Delphi是一种易于学习和使用的编程语言,开发人员可以快速上手并迅速开发出高质量的Web应用程序。 2. 高性能:Delphi WebBroker采用了高效的事件驱动开发模式,可以处理大量并发的HTTP请求,并提供了缓存、压缩、连接池等功能,提高了性能和吞吐量。 3. 安全性:Delphi WebBroker提供了多种安全机制,包括用户认证、访问控制、数据加密等,保护Web应用程序免受恶意攻击和数据泄露。 4. 可扩展性:Delphi WebBroker支持插件和扩展机制,开发人员可以根据需要添加自定义功能和模块,实现灵活的应用程序定制和功能扩展。 总之,Delphi WebBroker是一种强大而灵活的框架,为开发人员提供了丰富的工具和功能,帮助他们构建出高质量、高性能和安全的Web应用程序。无论是初学者还是有经验的开发人员,都可以通过Delphi WebBroker轻松地开发出各种类型的Web应用程序。
《Mastering Delphi》是一本关于Delphi编程语言的经典书籍。Delphi是由Embarcadero公司开发的一种可视化、面向对象的编程语言。它是基于Object Pascal语言的,并且集成了许多强大的开发工具和技术。 这本书的主要目的是教授读者如何掌握Delphi编程,并在实践中构建高效、可靠的应用程序。它逐步介绍了Delphi的各个方面,从基本的语法和数据类型开始,到高级主题如多线程编程、数据库连接和用户界面设计等。它还涵盖了Delphi的应用程序框架和库,如VCL(可视化组件库)和FireMonkey(用于跨平台开发的界面库)。 这本书不仅提供了理论知识,也注重实践。每一章都有大量的示例代码和实战项目,可以帮助读者加深对Delphi的理解和运用。通过阅读和实践,读者可以学会如何使用Delphi创建窗体、处理事件、编写自定义组件、编译和调试代码,以及优化应用程序的性能等。 《Mastering Delphi》还介绍了一些企业级应用开发的最佳实践和技巧,如版本控制、错误处理、安全性和性能测试等。这些知识对于那些希望将Delphi应用于商业项目中的开发人员来说尤为重要。 总的来说,《Mastering Delphi》是一本全面而深入的Delphi编程指南。无论是初学者还是有经验的开发人员,都可以通过阅读这本书,掌握Delphi编程的核心原理和技术,并将其应用于实际项目中。它是一本值得推荐的书籍,可以帮助读者在Delphi开发领域中不断进步和成长。

最新推荐

基于单片机温度控制系统设计--大学毕业论文.doc

基于单片机温度控制系统设计--大学毕业论文.doc

"REGISTOR:SSD内部非结构化数据处理平台"

REGISTOR:SSD存储裴舒怡,杨静,杨青,罗德岛大学,深圳市大普微电子有限公司。公司本文介绍了一个用于在存储器内部进行规则表达的平台REGISTOR。Registor的主要思想是在存储大型数据集的存储中加速正则表达式(regex)搜索,消除I/O瓶颈问题。在闪存SSD内部设计并增强了一个用于regex搜索的特殊硬件引擎,该引擎在从NAND闪存到主机的数据传输期间动态处理数据为了使regex搜索的速度与现代SSD的内部总线速度相匹配,在Registor硬件中设计了一种深度流水线结构,该结构由文件语义提取器、匹配候选查找器、regex匹配单元(REMU)和结果组织器组成。此外,流水线的每个阶段使得可能使用最大等位性。为了使Registor易于被高级应用程序使用,我们在Linux中开发了一组API和库,允许Registor通过有效地将单独的数据块重组为文件来处理SSD中的文件Registor的工作原

如何使用Promise.all()方法?

Promise.all()方法可以将多个Promise实例包装成一个新的Promise实例,当所有的Promise实例都成功时,返回的是一个结果数组,当其中一个Promise实例失败时,返回的是该Promise实例的错误信息。使用Promise.all()方法可以方便地处理多个异步操作的结果。 以下是使用Promise.all()方法的示例代码: ```javascript const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); const promise3 = Promise.resolve(3)

android studio设置文档

android studio默认设置文档

海量3D模型的自适应传输

为了获得的目的图卢兹大学博士学位发布人:图卢兹国立理工学院(图卢兹INP)学科或专业:计算机与电信提交人和支持人:M. 托马斯·福吉奥尼2019年11月29日星期五标题:海量3D模型的自适应传输博士学校:图卢兹数学、计算机科学、电信(MITT)研究单位:图卢兹计算机科学研究所(IRIT)论文主任:M. 文森特·查维拉特M.阿克塞尔·卡里尔报告员:M. GWendal Simon,大西洋IMTSIDONIE CHRISTOPHE女士,国家地理研究所评审团成员:M. MAARTEN WIJNANTS,哈塞尔大学,校长M. AXEL CARLIER,图卢兹INP,成员M. GILLES GESQUIERE,里昂第二大学,成员Géraldine Morin女士,图卢兹INP,成员M. VINCENT CHARVILLAT,图卢兹INP,成员M. Wei Tsang Ooi,新加坡国立大学,研究员基于HTTP的动态自适应3D流媒体2019年11月29日星期五,图卢兹INP授予图卢兹大学博士学位,由ThomasForgione发表并答辩Gilles Gesquière�

MutableDenseMatrix' object has no attribute 'flatten'

根据提供的引用内容,可以看出这是一个关于Python中矩阵操作的问题。具体来说,'MutableDenseMatrix' object has no attribute 'flatten'的错误提示表明,矩阵对象没有名为'flatten'的属性。因此,我们需要使用其他方法来展平该矩阵对象。 以下是一种可能的解决方案: ```python # 导入必要的库 from sympy import Matrix # 创建一个矩阵对象 mat = Matrix([[1, 2], [3, 4]]) # 将矩阵对象转换为列表 mat_list = mat.tolist() # 将列表展平 flat

MySQL 75道面试题及答案.docx

MySQL 75道面试题及答案.docx

HAL多学科开放获取档案库的作用及代理重加密和认证委托的研究

0HAL编号:tel-038172580https://theses.hal.science/tel-038172580提交日期:2022年10月17日0HAL是一个多学科开放获取档案库,用于存储和传播科学研究文档,无论其是否发表。这些文档可以来自法国或国外的教育和研究机构,也可以来自公共或私人研究中心。0HAL多学科开放获取档案库旨在存储和传播法国或国外的教育和研究机构、公共或私人实验室发表或未发表的研究文档。0代理重加密和认证委托的贡献0Anass Sbai0引用此版本:0Anass Sbai. 代理重加密和认证委托的贡献. 离散数学[cs.DM]. 皮卡第朱尔大学, 2021. 法语. �NNT:2021AMIE0032�. �tel-03817258�0博士学位论文0专业“计算机科学”0提交给科技与健康学院博士学位学校0皮卡第朱尔大学0由0Anass SBAI0获得皮卡第朱尔大学博士学位0代理重加密和认证委托的贡献0于2021年7月5日,在评审人的意见后,面向考试委员会进行

已有一个已排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中

已有一个已排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中,可以使用二分查找的方法来提高查找效率。具体实现如下: ```python def insert_num(arr, num): left = 0 right = len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == num: arr.insert(mid, num) return arr elif arr[m

基于单片机的语音门铃设计毕业论文.doc

基于单片机的语音门铃设计毕业论文.doc