当前位置: 首页 > news >正文

Linux开发讲课9--- Linux的IPC机制-内存映射(Memory Mapping)

        Linux的IPC(Inter-Process Communication,进程间通信)机制是多个进程之间相互沟通的方法,它允许不同进程之间传播或交换信息。Linux支持多种IPC方式,包括但不限于:

  1. 管道(Pipe):包括无名管道和命名管道(FIFO)。无名管道是半双工的,通常用于具有亲缘关系的进程间通信,如父子进程。命名管道也称为FIFO,是一种特殊类型的文件,它可以在无关进程之间进行双向通信。

  2. 信号(Signal):信号是在软件层次上对中断机制的一种模拟,它是异步的,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。

  3. 消息队列(Message Queue):消息队列是一种消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

  4. 共享内存(Shared Memory):共享内存就是映射一段能被其他进程访问的内存,这段内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它可以被用来实现高速数据传输和大量数据的传输。

  5. 信号量(Semaphore):主要作为进程间以及同一进程内不同线程之间的同步手段。

  6. 套接字(Socket):Socket是一种进程间通信机制,与其他通信机制不同的是,它可用于不同主机间的进程通信。

  7. 内存映射(Memory Mapping):内存映射可以实现让不同的进程映射到同一段物理内存,从而实现数据的共享和快速访问。

        这些机制各有特点和适用场景,例如管道和命名管道适用于相关的进程间通信,而套接字则支持不同主机上的两个进程IPC。在使用这些机制时,开发者需要根据具体的应用需求和环境来选择合适的IPC方式。

        

内存映射是一种允许文件或设备的内存被应用程序视为其虚拟地址空间一部分的技术。

        内存映射是现代操作系统中一个非常重要的概念,它允许进程直接访问文件的内容,而不需要执行传统的读写操作。这种机制将文件的内容映射到进程的虚拟地址空间中,使得文件的读写就像访问内存数组一样直接和高效。

以下是内存映射的一些关键点:

  1. 概念和原理:内存映射通过mmap系统调用实现,它将文件或设备的内容映射到进程的虚拟内存中。这样,对文件的操作就可以像对内存操作一样进行,提高了效率和灵活性。

  2. 优势:内存映射的主要优势在于提高了文件处理的效率,因为它减少了CPU的负载和上下文切换的次数。此外,它还可以实现进程间的共享,因为多个进程可以映射同一文件的不同部分。

  3. 与虚拟内存的区别:虽然内存映射与虚拟内存都涉及到虚拟地址空间的概念,但内存映射特指将文件内容映射到内存的过程,而虚拟内存则是指操作系统用来管理物理内存和提供更大地址空间的一种技术。

  4. API函数:在Linux系统中,主要使用mmap和munmap接口来进行内存映射和解除映射。mmap用于创建映射,munmap用于删除映射。

  5. 注意事项:虽然内存映射提供了许多便利,但也有一些限制和注意事项,比如映射的大小限制、内存保护和权限问题等。内存映射是一种强大的技术,它通过将文件内容映射到进程的虚拟地址空间,简化了文件的读写操作,提高了数据处理的效率和便捷性。

内存映射是一种高效的文件访问技术,它允许进程直接访问文件内容而无需传统的读写操作。然而,在使用内存映射时,需要注意以下几点:

        

  • 映射区域大小限制:内存映射的大小受限于系统可用的虚拟内存大小。如果尝试映射的文件非常大,可能会因为超出虚拟内存的限制而导致失败。

  • 内存保护和权限问题:内存映射区域通常受到操作系统的保护,这意味着对映射内存的非法访问(如越界访问或未经授权的写入)可能会导致段错误(segmentation fault)。

  • 内存映射的生命周期:内存映射的生命周期与进程相关联。当进程终止时,所有相关的内存映射都会被自动清理。如果需要在多个进程间共享内存映射,需要使用特定的IPC机制(如共享内存)。

  • 内存同步问题:虽然内存映射提高了文件访问的效率,但在某些情况下,对映射内存的修改可能不会立即同步到磁盘文件中。这可能导致在系统崩溃或断电时数据丢失。为了确保数据的一致性,可能需要定期调用msync()函数来同步映射内存与文件的数据。

  • 指针返回值和转换:mmap()函数成功时会返回一个指向映射区域的指针。这个指针是逻辑地址,实际访问时需要通过内存管理单元(MMU)将其转换为物理地址。内存映射是一种强大的技术,但在使用时需要考虑到上述限制和注意事项,以确保数据的安全性和程序的稳定性

        

内存映射的原理

        内存映射是一种高效的文件访问技术,它允许进程直接访问文件内容而无需传统的读写操作。以下是其原理的详细解释:

  • 建立映射关系:内存映射的基本原理是建立硬盘上文件的位置与进程逻辑地址空间中一块大小相同的区域之间的一一对应关系。这种对应关系是逻辑上的,物理上并不存在实际的数据拷贝。这意味着文件并没有被实际加载到物理内存中,而是逻辑上存在于内存中。

  • 系统调用mmap()的作用:通过系统调用mmap(),操作系统会为进程创建并初始化相关的数据结构,这些数据结构描述了虚拟地址与文件位置之间的映射关系。这样,当进程访问这些特定的虚拟地址时,CPU会自动将它们转换为对文件的操作。

  • 虚拟内存的管理:在内存映射中,所谓的内存实际上是指虚拟内存。操作系统会为每个进程维护一个虚拟内存空间,这个空间中有一部分专门用于文件映射和匿名映射。当调用mmap()进行内存映射时,所需的虚拟内存就是从这个区域中分配的。

  • 直观性和效率:内存映射的优势在于它的直观性和效率。它将抽象的文件系统操作转化为直接的内存操作,使得程序员能够以更加直观的方式处理数据,从而提高了数据处理的效率。内存映射是一种将文件或其他内存区域映射到进程的虚拟地址空间的技术,它通过建立映射关系、利用系统调用和虚拟内存管理,实现了高效的数据访问。

内存映射效率优化:

        要优化内存映射的效率,可以采取以下几种方法:

  1. 合理设置内存保护标志:通过mmap函数的prot参数,可以设置内存映射区域的保护方式,包括可执行、可读和可写权限。合理设置这些标志可以提高安全性,同时确保映射区域能够按预期使用。

  2. 避免不必要的映射:内存映射虽然高效,但不应该滥用。只有在需要频繁访问文件数据时,才应该使用内存映射。如果只是偶尔访问文件,传统的文件I/O可能更合适。

  3. 注意映射大小:映射的大小应该与文件大小相匹配,避免映射不必要的部分,这样可以减少内存占用和提高系统的整体效率。

  4. 考虑CPU和IO资源:内存映射可能会增加系统的负载,尤其是在大量数据需要从磁盘读取到物理内存时。因此,需要监控CPU和IO资源的使用情况,确保系统不会因为过度的内存映射而变得不稳定。

  5. 同步映射与回写:在进程对映射区域进行修改后,操作系统会在适当的时候将“脏页”回写到磁盘。可以通过msync函数来手动同步这些修改,确保数据的一致性。

  6. 利用内存映射进行进程间通信:除了文件映射,mmap还可用于创建匿名内存映射,这可以用于进程间通信或共享内存,从而提高效率。内存映射是一种高效的文件访问技术,但也需要合理使用和优化,以确保系统的稳定性和性能。

内存映射中的脏页概念:

        脏页是指在内存中的数据与磁盘上的数据不一致的页面。

当一个内存页中的数据被修改后,这个页就被认为是“脏”的,因为它与磁盘上的数据不再同步。在数据库系统中,脏页的存在对性能有重要影响。以下是脏页的一些关键信息:

  • 脏页的产生:当通过内存映射文件(mmap)或文件系统的write接口对文件进行修改时,如果这些修改没有被立即同步到磁盘,那么对应的内存页就会变成脏页。

  • 脏页的跟踪:Linux内核会跟踪哪些页是脏的,以便在适当的时机将这些页回写到磁盘。这种跟踪发生在两个层面:页表项记录和页描述符记录。只有共享的文件页需要跟踪脏页,因为匿名页和私有文件页不需要同步到磁盘。

  • 脏页的影响:脏页的数量会影响系统性能,特别是在数据库操作中。当脏页需要被同步到磁盘时,可能会导致性能下降,因为这通常涉及到磁盘I/O操作,而这些操作比内存操作要慢得多。

  • 脏页的刷新时机:脏页不会立即刷新到磁盘,而是在特定条件下才会执行。例如,当事务日志写满或者缓冲池不够用时,系统可能会暂停更新操作,将脏页同步到磁盘。理解脏页的概念对于优化内存映射效率和系统性能至关重要。通过合理管理脏页的生成和刷新,可以确保数据的一致性,同时减少对性能的影响

内存映射存在优缺点

内存映射是一种允许文件或设备的内存被应用程序视为其虚拟地址空间一部分的技术。以下是内存映射的优缺点:

优点:

  1. 提高文件访问效率:内存映射可以将文件内容直接映射到进程的虚拟地址空间,使得对文件的访问像访问内存一样快速,减少了数据从磁盘到内存的拷贝过程。

  2. 减少IO操作开销:由于避免了频繁的磁盘I/O操作,内存映射可以显著减少系统调用的次数,从而降低了IO操作的开销。

  3. 便于多进程共享数据:内存映射允许多个进程共享同一块内存区域,这为进程间通信提供了便利,无需额外的数据复制步骤。

缺点:

  1. 消耗大量虚拟地址空间:特别是在32位系统中,内存映射可能受到虚拟地址空间大小的限制,通常只能映射小于4GB的文件。

  2. 增加系统负载:操作系统需要将文件数据从磁盘读取到物理内存中,这可能会占用大量的CPU和IO资源,增加系统的负载。

  3. 安全性问题:内存映射文件可以直接对文件进行读写操作,如果不当使用,可能会被黑客利用进行攻击,因此需要谨慎处理权限和安全问题。

        综上所述,内存映射是一种高效的文件访问技术,它在提高数据处理速度和简化进程间通信方面有着显著的优势。然而,它也有一些潜在的缺点,如对系统资源的要求较高和安全性风险。在实际应用中,需要根据具体情况权衡利弊,合理使用内存映射技术。

相关文章:

Linux开发讲课9--- Linux的IPC机制-内存映射(Memory Mapping)

Linux的IPC(Inter-Process Communication,进程间通信)机制是多个进程之间相互沟通的方法,它允许不同进程之间传播或交换信息。Linux支持多种IPC方式,包括但不限于: 管道(Pipe)&#…...

Java赋值运算符

Java赋值运算符分为以下: 符号 作用 说明 赋值 int a 10,把10赋值给变量a 加后赋值 ab,将ab的值赋值给变量a - 减后赋值 a-b,将a-b的值赋值给变量a* 乘后赋值 a*b,将a*b的值赋值给变量a / 除后赋值 a/b,将a/b的值赋值给变量a % 取余赋值 a%b,将a%b的值赋值给变量…...

Qt做群控系统

群控系统顾名思义,一台设备控制多台机器。首先我们来创造下界面。我们通过QT UI设计界面。设计界面如下: 登录界面: 登录界面分为两种角色,一种是管理员,另一种是超级管理员。两种用户的主界面是不同的。通过选中记住…...

【专业英语 复习】第10章 Information System

1. 单选题 (1分) An example of this type of report would be a sales report that shows that certain items are selling significantly above or below forecasts. () A. Inventory B. Demand C. Periodic D. Exception 正确答案: D 这种类型的报…...

09-axios在Vue中的导入与配置

09-axios 前言首先简单了解什么是Axios?以上完成后就可以使用了 前言 我们接着上一篇文章 08-路由地址的数据获取 来讲。 下一篇文章 10-vuex在Vue中的导入与配置 首先简单了解什么是Axios? Axios是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端…...

odoo17 小变更4

odoo17 小变更4 1、代码中去除了访问私人地址权限,但翻译中均还有,怪不 model:res.groups,name:base.group_private_addresses msgid "Access to Private Addresses" msgstr "" 代码也查看了,的确没有了此权限组 --><record model="res.g…...

Flink assignTimestampsAndWatermarks 深度解析:时间语义与水印生成

目录 概述 时间语义 时间戳分配 水印的作用 最佳实践 案例分析 注意事项 应用场景 概述 在Apache Flink中,assignTimestampsAndWatermarks是一个重要的方法,它允许数据流处理程序根据事件时间(event time)分配时间戳和生成水印(watermarks)。这个方法通常用于处理…...

C++排序算法——合并有序数组

合并有序数组 思路 我们可以设想一个排序的函数 这个函数里 我们有三个while while(第一次的执行条件) {先进行第一次的合并 } while(第二次的合并条件) { 把a数组在第一次没有排序上的给加进去 }while(第三次的合并条件) { 把b数组在第一次没有排序上的给加进去 }看完了这个…...

安装pytorch环境

安装&#xff1a;Anaconda3 通过命令行查显卡nvidia-smi 打开Anacanda prompt 新建 conda create -n pytorch python3.6 在Previous PyTorch Versions | PyTorch选择1.70&#xff0c;安装成功&#xff0c;但torch.cuda.is_available 返回false conda install pytorch1.7.0…...

内卷从古到今就一直存在,并不是近年的“新物”,破局在于你是否有意识地学习。

一.背景&#xff1a; 反思自己过去从学生时代到职场时代。“内卷”其实已经一直存在&#xff0c;从古到今都一直存在&#xff0c;也并不是近几年产出的“新物”。已经连续5年高考人数在1000万以上&#xff0c;而今年1300多万达到新高&#xff0c;对于竞争压力如此之大&#xf…...

跟《经济学人》学英文:2024年6月15日这期 The war for AI talent is heating up

The war for AI talent is heating up Big tech firms scramble to fill gaps as brain drain sets in 争夺人工智能人才的战争正在升温 随着人才流失的到来&#xff0c;大型科技公司争相填补空缺 brain drain&#xff1a;人才流失 scramble&#xff1a;争夺&#xff1b;争…...

港湾周评|高盛眼中的618增长

《港湾商业观察》李镭 年中最重要的购物节618终于尘埃落定了。2024年的618各大电商平台竞技情况如何&#xff1f;又有哪些新的亮点&#xff1f;都成为外界观察消费行为的参考指标。 根据京东618数据显示&#xff1a;累计成交额过10亿的品牌83个&#xff0c;超15万个中小商家销…...

SPSS知识

特点 SPSS的一些特点&#xff1a; 分析结果清晰、直观&#xff1a;SPSS提供了丰富的图表和表格&#xff0c;可以帮助用户直观地理解数据分析的结果。分析结果通常包含详细的统计量、图形和文本描述&#xff0c;使得分析结果易于解释。 易学易用&#xff1a;SPSS的用户界面设计…...

【网络安全的神秘世界】关于Linux中一些好玩的字符游戏

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 佛祖保佑 把 motd 通过xtp拖到Linux中 liyangUbuntu2204:~$ cp motd /etc/motd #一定要放在etc下 liyangUbuntu2204:~$ exi…...

【LeetCode】Hot100:验证二叉搜索树

给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树 只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 英文题目 Given the root…...

[Qt] Qt Creator 编译输出乱码,问题页中的报错、警告内容,编译输出乱码

确保文件编码为"UTF-8"&#xff0c;"如果编码是UTF-8则添加"&#xff0c;如下图&#xff1a; 设置IDE环境语言跟随系统语言&#xff0c;Text codec for tools&#xff1a; "System" 瑞斯拜...

sed

1、sed的定义 sed是一种流编辑器&#xff0c;按行处理&#xff0c;一次处理一行内容 处理方式&#xff1a;如果只是展示&#xff0c;会放在缓冲区&#xff08;模式空间&#xff09;&#xff0c;展示结束后&#xff0c;会从模式空间把操作结果删除 一行一行处理&#xff0c;处…...

C++一文讲透thread中的detach和join的差别

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、thread详解二、线程何时运行三、线程启动方式1.join2.detach 总结 前言 无论哪种语言线程在绝大多数项目中都是会用到的&#xff0c;C也一样&#xff0c;C…...

当Windows台式电脑或笔记本电脑随机关机时,请先从这8个方面检查

序言 你的Windows笔记本电脑或PC是否意外关闭?笔记本电脑电池故障、电源线松动、过热、电源设置错误、驱动程序过时或电脑组件故障等问题都可能是罪魁祸首。如果你对这个问题感到沮丧,试试这些解决方案。 进行一些初步检查 与从电池中获取电力的笔记本电脑不同,台式电脑依…...

【凤凰房产-注册安全分析报告-缺少轨迹的滑动条】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…...

【建议收藏】逻辑回归面试题,机器学习干货、重点。

. . . . . . . . . . .纯 干 货 . . . . . . . . . . . .今天是机器学习面试题&#xff0c;16大块的内容&#xff0c;124个问题总结的第二期&#xff1a;逻辑回归面试题。 逻辑回归是一种用于解决分类问题的统计学习方法&#xff0c;尤其在二分类…...

C++使用教程

目录 一、软件使用 二、C基础规则补充 关键字 整型取值范围 浮点型取值范围 字符型使用规则 字符串型使用规则 布尔类型 常用的转义移字符 三、数组、函数、指针、结构体补充 1.数组 2.函数 声明&#xff1a; 分文件编写&#xff1a; 值传递&#xff1a; 3.指…...

k8s volcano + deepspeed多机训练 + RDMA ROCE+ 用户权限安全方案【建议收藏】

前提&#xff1a;nvidia、cuda、nvidia-fabricmanager等相关的组件已经在宿主机正确安装&#xff0c;如果没有安装可以参考我之前发的文章GPU A800 A100系列NVIDIA环境和PyTorch2.0基础环境配置【建议收藏】_a800多卡运行环境配置-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞8…...

设计模式(七)创建者模式之建造者模式

这里写目录标题 概述需求需求类图BikeBuilderMobikeBuilderOfoBuilderDirectorClientClient优缺点使用场景 模式扩展ComputerClient创建者模式对比工厂方法模式VS建造者模式抽象工厂模式VS建造者模式 总结 概述 建造者模式又叫生成器模式&#xff0c;是一种对象构建模式。它可…...

# class中的__call__方法解析

class中的__call__方法解析 文章目录 class中的__call__方法解析1. 为什么要有call&#xff0c;什么情况下用call&#xff1f;1.1 为什么要有 __call__ 方法1.2 没有 __call__ 方法是否可以1.3 使用 __call__ 方法的典型场景1.3.1 示例1&#xff1a;简单函数对象1.3.2 示例2&am…...

React逻辑复用的方式都有哪些

在日常开发中&#xff0c;能够优雅的复用组件和逻辑&#xff0c;是优秀开发者的职责。在react中&#xff0c;复用逻辑的方式有很多&#xff0c;可以适用于不同的业务场景。今天说三个比较有代表性的&#xff0c;Render Props、HOC、Hooks Render Props 创建一个接受函数作为其…...

【LinuxC语言】线程重入

文章目录 前言线程重入是什么线程重入实现示例代码总结前言 在并发编程中,我们经常需要处理多个线程同时访问和修改共享资源的问题。这可能会导致数据竞争和状态不一致,从而使程序的行为变得不可预测。为了解决这个问题,我们引入了一种称为“线程重入”的机制。线程重入,或…...

【Streamlit学习笔记】Streamlit-ECharts箱型图添加均值和最值label

Streamlit-ECharts Streamlit-ECharts是一个Streamlit组件&#xff0c;用于在Python应用程序中展示ECharts图表。ECharts是一个由百度开发的JavaScript数据可视化库Apache ECharts 安装模块库 pip install streamlitpip install streamlit-echarts绘制箱型图展示 在基础箱型…...

Docker镜像仓库:存储与分发Docker镜像的中央仓库

探索Docker镜像仓库&#xff1a;存储与分发Docker镜像的中央仓库 如果你是Docker的新手&#xff0c;或者已经在使用Docker但还不太了解Docker镜像仓库&#xff0c;那么这篇博客将是你的最佳指南。我们将从基础概念开始&#xff0c;逐步深入&#xff0c;帮助你全面掌握Docker注…...

FreeRTOS必考面试题及参考答案

什么是RTOS?FreeRTOS是什么?它主要应用于哪些领域? RTOS,即实时操作系统(Real-Time Operating System),是一种专门为实时应用程序设计的操作系统,它强调的是对外部事件的快速响应和可预测性。实时系统通常要求在严格的时限内完成关键任务,因此RTOS具备优先级调度、确…...

面试题2:从浏览器输入一个URL,到最终展示前端页面这一过程,会发生什么?

这是一个高频的面试题目。 题目答案是开放性的&#xff0c;一般以后端开发的角度回答。 当地址栏输入一个 URL 后&#xff1a; 一、首先会进行 DNS 域名解析 DNS 域名解析&#xff1a;网络上的设备都是通过 IP 地址&#xff0c;作为身份标识的。但是由于点分十进制的 IP 地址 …...

<Rust><iced><resvg>基于rust使用iced构建GUI实例:使用resvg库实现svg转png

前言 本文是使用rust库resvg来将svg图片转为png图片。 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;resvg 代码分析 resvg是一个基于rust的svg渲染库&#xff0c;其官方地址&#xff1a; An SVG rendering li…...

面试突击:Java 中的泛型

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。今天想和大家聊聊 Java 中的泛型。 什么是泛型&#xff1f; Java 泛型&#xff08;Generics&#xff09; 是 JDK 5…...

3_2、MFC常用控件用法:组合框、滚动条和图片控件

MFC控件用法 1、组合框1.1 简介1.2 创建CComboBox类的主要成员函数 1.3 实例 2、滚动条控件2.1 简介2.2 创建CScrollBar类的主要成员函数 2.3 实例 3、图片控件3.1 简介3.2 创建图片控件静态加载图片图片控件动态加载图片 1、组合框 1.1 简介 组合框其实就是把一个编辑框和一…...

如何使用gprof对程序进行性能分析

如何使用gprof对程序进行性能分析 目录 1 gprof概述 2 gprof原理简述 3 gprof使用 3.1 gprof使用简述 3.2 gprof使用示例 4 小结 1 gprof概述 gprof 是 一个 GNU 的程序性能分析工具&#xff0c;可以用于分析C\C程序的执行性能。gprof工具可以统计出各个函数的调用次数、执…...

四川汇聚荣科技有限公司靠谱吗?

在如今这个信息爆炸的时代&#xff0c;了解一家公司是否靠谱对于消费者和合作伙伴来说至关重要。四川汇聚荣科技有限公司作为一家位于中国西部地区的企业&#xff0c;自然也受到了人们的关注。那么&#xff0c;这家公司究竟如何呢?接下来&#xff0c;我们将从多个角度进行深入…...

可灵王炸更新,图生视频、视频续写,最长可达3分钟!Runway 不香了 ...

现在视频大模型有多卷&#xff1f; Runway 刚在6月17号 发布Gen3 &#xff0c;坐上王座没几天&#xff1b; 可灵就在6月21日中午&#xff0c;重新夺回了王座&#xff01;发布了图生视频功能&#xff0c;视频续写功能&#xff01; 一张图概括&#xff1a; 二师兄和团队老师第一…...

oracle中使用临时表GLOBAL TEMPORARY TABLE

需要在存储过程中返回一个临时结果集&#xff0c;这个结果集又是多个语句通过循环查询出来的&#xff0c;这时候就想到了将结果插入到临时表中&#xff0c;然后返回临时表的数据的思路&#xff0c;于是有了以下操作&#xff1a; 1.创建临时表 -- Create table create global …...

Gradio入门—快速开始

目录 安装构建您的第一个演示分享您的演示核心 Gradio 课程聊天机器人gr.ChatInterface自定义演示gr.BlocksGradio Python 和 JavaScript 生态系统 Gradio 是一个开源 Python 软件包&#xff0c;可让您快速为机器学习模型、API 或任何任意 Python 函数构建演示或 Web 应用程序。…...

AOP应用之系统操作日志

本文演示下如何使用AOP&#xff0c;去实现系统操作日志功能。 实现步骤 引入AOP包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>2.6.6</version></de…...

海外云手机自动化管理,高效省力解决方案

不论是企业还是个人&#xff0c;对于海外社媒的营销都是需要自动化管理的&#xff0c;因为自动化管理不仅省时省力&#xff0c;而且还节约成本&#xff1b; 海外云手机的自动化管理意味着什么&#xff1f;那就是企业无需再投入大量的人力和时间去逐一操作和监控每一台设备。 通…...

后仿真中的 《specify/endspecify block》之(5)使用specify进行时序仿真

前面我们学习了specify...endspecify 具体是什么东西。今天,我们使用specify block 中定义的延时,来进行一次仿真。看看到底是背后如何运转的呢。 一 基本例子 一个用 specify 指定延迟的与门逻辑描述如下: module and_gate(output Z,input A, B);assign Z = A & …...

win10/11磁盘管理

win10/11磁盘管理 合并磁盘分区的前提是你的两个磁盘区域是相邻的&#xff0c;比如如下&#xff1a; 如果需要吧这个磁盘进行分解&#xff0c;你可以选择压缩一部分磁盘或者是直接删除卷 我这里的话&#xff0c;因为压缩出来的卷和C盘好像是不相邻的&#xff08;我之前做过&…...

【昇思初学入门】第四天打卡

数据变换Transforms 心得体会 MindSpore提供了丰富的数据变换工具&#xff0c;针对图像数据可以使用如Rescale、Normalize和HWC2CHW等&#xff0c;且使用Compose类允许我们定义一个变换序列&#xff0c;并将它们作为一个整体应用到数据上。 composed transforms.Compose([v…...

禁用/屏蔽 Chrome 默认快捷键

Chrome 有一些内置的快捷键&#xff0c;但是它并没有像其他软件一样提供管理快捷键的界面。在某些时候&#xff0c;当我们因为个人需求希望禁用 Chrome 某些快捷键时&#xff0c;又无从下手。 好在有开发者开发了 Chrome 插件&#xff0c;可以禁用 Chrome 快捷键的插件&#x…...

移动端+PC端应用模式的智慧城管综合执法办案平台源码,案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析

城市管理综合执法管理平台实现执法办案、业务全流程在线办理&#xff0c;依托移动端PC端的“两端”应用模式&#xff0c;保障能够通过信息化手段进行日常的执法办案工作&#xff0c;强化执法监督功能。提供了案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析等功能&a…...

AI音乐大模型时代:版权归属与创意产业的新生长点

AI在创造还是毁掉音乐&#xff1f; 简介&#xff1a;最近一个月&#xff0c;轮番上线的音乐大模型&#xff0c;一举将素人生产音乐的门槛降到了最低&#xff0c;并掀起了音乐圈会不会被AI彻底颠覆的讨论。短暂的兴奋后&#xff0c;AI产品的版权归属于谁&#xff0c;创意产业要…...

C++函数作为参数

C++函数作为参数 在C++中,函数作为另一个函数的参数是非常常见的做法,特别是在处理回调函数和泛型编程时。我们展示了如何在C++中将函数作为参数传递给另一个函数,包括普通函数、std::function 和 std::bind、lambda表达式以及类成员函数。每种方法都有其独特的优势,可以根…...

考前刷题练手感(北航期末往年数据结构编程题)

本次因为是考前一天极速刷题&#xff0c;所以没有讲解&#xff0c;若有问题可私信。 目录 一、 查找同时空人员二、 老鼠回家-无回路三、函数调⽤关系四、东二食堂模拟五、栈帧 一、 查找同时空人员 【问题描述】 假设一共有6个手机基站&#xff0c;都具有记录手机连接基站状…...

Android记录9--实现转盘效果

自定义View /2013.10.16_TurnPlate_Demo/src/com/wwj/turnplate/TurnPlateView.java package com.wwj.turnplate; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; im…...