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

Linux —— 管理进程

一、查看进程

  1. 运行态(Running)
    • 定义:处于运行态的进程正在 CPU 上执行指令。在单 CPU 系统中,同一时刻只有一个进程处于运行态;在多 CPU 或多核系统中,可能有多个进程同时处于运行态。
    • 示例
      • 当你在计算机上运行一个计算密集型程序,如科学计算软件在进行复杂的数学运算时,该程序对应的进程在 CPU 上执行运算指令,此时这个进程就处于运行态。
  2. 就绪态(Ready)
    • 定义:就绪态的进程已经准备好运行,即它们已经获得了除 CPU 资源之外的所有运行所需资源,但正在等待 CPU 分配时间片来执行。
    • 示例
      • 在一个多任务操作系统中,有多个应用程序同时打开。当你在前台运行一个程序(如文本编辑器)时,其他后台程序(如音乐播放器)对应的进程如果没有被阻塞,就处于就绪态,等待 CPU 调度。
  3. 阻塞态(Blocked)
    • 定义:阻塞态的进程由于等待某些事件的发生(如等待 I/O 操作完成、等待获取某个锁等)而暂时无法继续执行,此时即使 CPU 空闲也不能被调度运行。
    • 示例
      • 当一个进程发起了从硬盘读取数据的操作(如打开一个大型文件),在数据从硬盘加载到内存的过程中,这个进程就处于阻塞态,因为它必须等待 I/O 操作完成才能继续执行后续的指令。
      • 一个网络应用程序在等待网络数据接收时,例如等待服务器的响应,也会处于阻塞态。

(一)ps 选项 参数

        ps是 “process status”(进程状态)的缩写。它是一个用于查看当前系统中正在运行进程信息的实用程序。通过ps命令,用户可以获取有关进程的各种详细信息,如进程 ID(PID)、父进程 ID(PPID)、CPU 使用率、内存使用率、运行状态、启动时间等。—— 但是是静态的,相当于快照

选项

  • -a:显示所有终端上的所有进程,包括其他用户的进程。
  • -x:显示没有控制终端的进程。
  • -u:以用户友好的格式显示进程信息。
  • -f:全格式显示,包括父进程ID、进程状态、CPU使用率等更多列。
  • -e:显示系统中所有的进程。
  • -f:全格式显示。
  • -l:长格式显示,包括更多的信息如进程命令行、会话ID等。
  • -u:按用户显示,可以指定用户名。
  • -p:按进程ID显示,可以指定PID。
  • -o:自定义输出格式,可以指定要显示的列和排序方式。

PID:进程 ID,是每个进程在系统中的唯一标识符。

USER:进程所属的用户。

PR:进程优先级,数值越小优先级越高。

NI:进程的 Nice 值,用于调整进程优先级,范围是 - 20 到 19,负数表示更高的优先级。

VIRT:进程使用的虚拟内存大小,包括进程代码、数据、共享库以及被交换到磁盘的内存页面等所有占用的内存空间。

RES:进程正在使用的物理内存大小(驻留集大小),不包括交换到磁盘的内存部分。

SHR:进程使用的共享内存大小,这部分内存可以被多个进程共享。

S:进程状态,和ps命令中的状态表示类似,如R(运行)、S(睡眠)、D(不可中断睡眠)等。

%CPU:CPU 使用率,即进程占用 CPU 时间的百分比。

%MEM:内存使用率,即进程占用物理内存的百分比。

TIME +:进程自启动以来使用 CPU 的总时间。

COMMAND:进程对应的命令名称。

(二)top 选项 参数

  top是一个非常重要的性能监测和进程查看工具。它能够实时显示系统中各个进程的资源占用情况以及系统的整体性能状态。top这个名字可以理解为 “top processes”(顶级进程),因为它主要用于展示占用资源最多的进程相关信息。—— 动态显示

选项

  • 基本选项

    • -d <秒数>:指定屏幕信息刷新的时间间隔。默认情况下,top每3秒刷新一次显示的数据。用户可以通过这个选项来调整刷新频率,以适应不同的监控需求。
    • -p <进程ID>:只监视特定PID的进程。这个选项允许用户专注于一个或多个特定的进程,而不是查看所有进程的信息。
    • -u <用户名>:仅显示指定用户的进程。当系统中有大量用户时,使用这个选项可以快速定位属于某个用户的进程。
    • -b:批处理模式输出,适合脚本或重定向到文件。这使得top的输出可以被保存到文件中或者进一步处理,而无需用户交互。
  • 高级选项

    • -n <次数>:指定top命令运行的次数后自动退出。例如,top -n 5将会更新五次后自动退出。
    • -H:在进程信息中显示线程详细信息。这对于需要分析多线程应用程序的性能非常有用。
    • -i:不显示闲置(idle)或无用的进程。这个选项可以帮助用户忽略那些不影响系统性能的进程。
    • -c:显示完整的命令行而不截断。默认情况下,top可能会截断显示过长的命令行,使用这个选项可以避免这种情况。
  • 交互式操作

    • h 或 ?:显示帮助页面。用户可以在运行时通过按键触发这些命令来获取更多的帮助信息。
    • k:终止一个进程(需要输入PID)。这个命令允许用户在不离开top界面的情况下终止不需要的进程。
    • r:更改一个进程的优先级(需要输入PID和新的nice值)。通过这个命令,用户可以动态地调整进程的优先级,以优化系统性能。
    • q:退出top。这是退出top的标准方式。

下面两张图对比,可以发现数据发送了变化

(三)pstree 选项

   pstree是一个用于以树状结构展示进程间关系的工具。它能够清晰地呈现出各个进程之间的父子关系,帮助用户直观地理解系统中进程的层次结构。

选项

  1. -a:显示每个程序的完整指令,包含路径、参数或是常驻服务的标示。
  2. -c:不使用精简标示法,强制展开相同的子树。
  3. -G:使用VT100终端机的列绘图字符。
  4. -h:列出树状图时,特别标明现在执行的程序。
  5. -H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序。
  6. -l:采用长列格式显示树状图。
  7. -n:用程序识别码排序。预设是以程序名称来排序。
  8. -p:显示程序识别码。
  9. -u:显示用户名称。
  10. -U:使用UTF-8列绘图字符。
  11. -V:显示版本信息。

(四)pgrep 选项 参数

   pgrep是一个用于根据进程名称或其他属性来查找进程 ID(PID)的工具。它可以帮助用户快速定位符合特定条件的进程,在进程管理和监控等场景中非常有用。

选项

  1. -a:列出PID和完整的命令行。
  2. -c:计算匹配的进程数量,而不是正常输出。
  3. -d:指定输出分隔符。
  4. -f:使用完整进程名来匹配。
  5. -g:匹配列出的进程组ID。
  6. -G:匹配真实组ID。
  7. -h:列出树状图时,特别标明现在执行的程序。
  8. -l:显示PID和进程名称。
  9. -n:仅显示找到的最大(结束)进程号。
  10. -o:仅显示找到的最小(起始)进程号。
  11. -P:只匹配给定父进程的子进程。
  12. -s:匹配会话ID。
  13. -t:匹配控制终端。
  14. -u:匹配有效用户ID。
  15. -U:匹配真实用户ID。
  16. -v:反向匹配。
  17. -w:列出所有线程ID。
  18. -x:与命令名完全匹配。
  19. -F:从文件中读取PID。
  20. -L:如果PID文件未锁定则失败。
  21. --ns:匹配属于同一命名空间的进程。
  22. --nslist:列出哪些命名空间将被视为--ns选项。
  23. -V:输出版本信息。
  24. -help:显示帮助信息并退出。

案例:查找与sshd服务相关的进程

显示有五个PID

PID 是 “Process Identification Number”(进程标识号)的缩写。在 Linux 和其他操作系统中,它是一个独一无二的数字标识符,用于区分系统中正在运行的各个进程。就像每个人都有一个独一无二的身份证号码一样,每个进程也有一个唯一的 PID 来标识自己。

二、终止进程

(一)kill 选项 参数

        kill的选项选项一般是信号,参数为PID

1、查看信号

常见信号类型及含义

  • SIGTERM(15)
    • 这是kill命令默认发送的信号。它是一种比较温和的终止信号,用于请求进程正常终止。大多数进程在收到SIGTERM信号后,会先进行一些清理工作,如释放资源、保存数据等,然后再终止。例如,当你使用kill <PID>(没有指定信号编号)命令时,实际上就是向进程发送SIGTERM信号,希望进程能够优雅地结束。
  • SIGKILL(9)
    • 这是一个强制终止信号。与SIGTERM不同,进程收到SIGKILL信号后会立即终止,不会进行任何清理工作。它通常用于当进程无法响应SIGTERM信号,或者需要立即终止一个可能处于死锁或失控状态的进程。不过,由于这种方式是强制终止,可能会导致数据丢失或系统资源未正确释放等问题。例如,kill -9 <PID>命令会发送SIGKILL信号来强行终止指定的进程。
  • SIGSTOP(19)和SIGCONT(18)
    • SIGSTOP信号用于暂停一个进程的执行,进程在收到这个信号后会停止运行,并且不会自动恢复,直到收到SIGCONT信号。这两个信号通常用于进程调试或者作业控制。例如,在调试一个多进程程序时,可以使用kill -19 <PID>暂停某个进程,然后进行检查,检查完毕后使用kill -18 <PID>恢复进程的执行。
  • SIGINT(2)
    • 这个信号通常在用户通过键盘输入Ctrl + C组合键时发送。它用于中断一个正在运行的前台进程,进程收到SIGINT信号后可以选择终止或者忽略该信号并继续运行。在很多命令行工具中,收到SIGINT信号后会停止当前操作并返回提示符状态。例如,当你在运行一个长时间的脚本,按Ctrl + C就会向脚本进程发送SIGINT信号。

2、终止进程

案例:终止PID为2443的进程

因为我使用远程工具,而2443就是它的进程,终止后远程终止了

重新连接后PID会重新定义

(二)killall 选项 参数

       使用kill我们会发现一个问题,就是kill只能一次终止一个进程,如果一个软件占大进程很多,我们需要多次操作。但killall可以终止全部进程。

killall的选项选项一般也是信号,参数为服务名称

案例:启动Nginx服务,查看,再关闭

要在root用户下操作

1、切换到软件的所在目录

2、启动服务,但是发现80端口被占用了

3、发现被httpd使用了

4、找到nginx.con的文件

4、把80端口修改为8080,保存退出

5、启动、查看服务,可以正常启动了

6、关闭进程,可以看到关闭后查不到如何进程了

三、前台任务与后台任务

前台任务

  • 定义:在 Linux 系统中,前台任务是指在当前终端会话中正在交互执行的任务。当一个程序在前台运行时,它会占据当前终端的输入和输出,直到该任务完成或被暂停、终止。—— 需要和用户交互,优先级高

想象你在舞台上表演节目,这个舞台就是你的终端。当你在舞台上表演(执行任务)时,台下的观众(你自己)都只能看着你表演,不能做别的事情,这就是前台任务。

比如你在终端打开一个文本编辑器来编辑文件,在你关闭这个文本编辑器之前,你不能在这个终端做其他操作了,这个文本编辑器的操作就是前台任务。

后台任务

  • 定义:后台任务是指在系统中运行,但不占据当前终端的输入和输出的任务。后台任务允许用户在启动任务后继续在终端进行其他操作。

还是用舞台来比喻,后台任务就像是在舞台后面有一群人在帮忙准备道具、布置场景。他们在工作的时候,舞台上的表演(你的终端操作)不受影响,你还可以继续在舞台上做其他事情。

例如,你让电脑在后台下载一个很大的文件。你在终端发出下载命令后,不用一直盯着下载进度,你可以在这个终端继续输入其他命令,做其他工作,下载这个操作就是后台任务。

(一)jobs 选项 参数

   jobs命令用于查看当前终端会话中正在运行的后台作业(任务)。当你将一个程序放到后台运行时,jobs命令可以帮助你了解这些后台任务的状态。

选项

  1. -l:列出作业的状态(运行、停止等)以及作业的命令行。这是默认行为,通常不需要显式指定。

  2. -p:只显示作业的进程ID(PID),不包括作业号或命令行。

  3. -r:只显示正在运行的作业。如果作业已停止,则不会显示。

  4. -s:只显示已停止的作业。如果作业正在运行,则不会显示。

案例:没有任何任务

案例:后台执行top命令

(二)bg 参数

bg命令用于将已停止的后台作业恢复到后台继续运行。

将前台任务调到后台

在后台执行top命令

(三)fg命令

将后台任务调到前台任务

进入hello后随便写点内容,然后ctrl+z快捷键停止任务

调到后台

调到前台,直接进行文件

四、服务管理

        服务进程又称守护进程

CentOS 7版本之前使用service、chkconfig命令,但是CentOS 9使用systemctl代替了service、chkconfig。

(一)systemctl 功能命令 服务进程

功能命令

  • 启动服务
    • 命令systemctl start <service - name>
    • 功能:用于启动指定的服务。例如,要启动httpd服务(假设系统中安装了httpd),可以使用systemctl start httpd。这会使httpd服务开始运行,开始监听相应的端口并处理请求(如果是网络服务的话)。
  • 停止服务
    • 命令systemctl stop <service - name>
    • 功能:用于停止正在运行的服务。例如,systemctl stop httpd会停止httpd服务,使其不再处理新的请求,关闭相关的监听端口。
  • 重启服务
    • 命令systemctl restart <service - name>
    • 功能:用于重启指定的服务。这相当于先执行stop命令再执行start命令。例如,systemctl restart httpd会先停止httpd服务,然后再重新启动它,这在对服务的配置文件进行修改后需要重新加载配置时很有用。
  • 查看服务状态
    • 命令systemctl status <service - name>
    • 功能:用于查看指定服务的当前状态。例如,systemctl status httpd会显示httpd服务是否正在运行、最近的启动或停止时间、是否有错误等信息。输出内容包括服务的活跃状态(activeinactive)、进程 ID(如果正在运行)、日志信息等。
  • 使服务开机自启
    • 命令systemctl enable <service - name>
    • 功能:用于设置指定的服务在系统开机时自动启动。例如,systemctl enable httpd会将httpd服务配置为开机自启,这样在系统下次重新启动时,httpd会自动开始运行。
  • 取消服务开机自启
    • 命令systemctl disable <service - name>
    • 功能:用于取消指定服务的开机自启设置。例如,systemctl disable httpd会将httpd服务从开机自启列表中移除,系统下次重启时不会自动启动httpd
  • 查看所有服务列表
    • 命令systemctl list - units --type=service
    • 功能:用于列出系统中所有的服务。这个命令会显示服务的名称、状态(loadedactive等)、描述等信息,帮助用户全面了解系统中安装和运行的服务情况。
  • 重新加载服务配置
    • 命令systemctl reload <service - name>
    • 功能:用于重新加载指定服务的配置文件。这与restart不同,reload通常不会中断服务的运行,只是重新读取配置文件使其生效。例如,对于一些配置文件修改频繁的服务(如nginx等),使用systemctl reload nginx可以在不中断服务的情况下使新配置生效。
  • 查看服务是否开机自启
    • 命令systemctl is - enabled <service - name>
    • 功能:用于检查指定服务是否设置为开机自启。如果是,会返回enabled;如果不是,返回disabled。例如,systemctl is - enabled httpd可以判断httpd服务是否会在开机时自动启动。

案例:以http为例子,使用systemctl的用法

1、安装http服务,该服务的守护进程为httpd

2、查看http服务运行状态——关闭状态

3、开启http服务

4、终止http服务

5、设置http服务开机自启动

五、计划任务

(一)at 选项 参数

选项

        -l:查看计划任务。

        -f:从文件中读取任务

        -d:删除计划任务,参数为任务编号。

1、案例:制定计划任务,18:00重启http服务

输入完systemctl restart httpd 回车2次即可

查看计划

(二)crontab 选项 参数

选项

        -e:编辑crontab文件

        -l:查看当前的计划任务

        -r:删除计划任务

        -u:编辑其他用户的计划任务,通常root使用该选项

* * * * * command_to_execute
- - - - -
| | | | |
| | | | +---- 星期几 (0 - 7) (星期天=0或7)
| | | +------ 月份 (1 - 12)
| | +-------- 一个月中的第几天 (1 - 31)
| +---------- 小时 (0 - 23)
+------------ 分钟 (0 - 59)

案例:每周末凌晨3点进入系统维护状态,30分钟后重启系统

1、编辑cronjob文件,把定时任务写入

2、加载命令,确认执行

3、查看计划

这个定时任务的含义如下:

  • 时间设置
    • 分钟0,表示在 0 分钟时。
    • 小时3,表示在 3 点。
    • 日期*,表示任意日期。
    • 月份*,表示任意月份。
    • 星期几6,表示星期六。
  • 执行的命令/usr/sbin/shutdown -r -t 1800
    • 这是一个系统关机命令。-r选项表示重启系统,-t 1800表示在执行关机操作前等待 1800 秒(30 分钟)。

相关文章:

Linux —— 管理进程

一、查看进程 运行态&#xff08;Running&#xff09; 定义&#xff1a;处于运行态的进程正在 CPU 上执行指令。在单 CPU 系统中&#xff0c;同一时刻只有一个进程处于运行态&#xff1b;在多 CPU 或多核系统中&#xff0c;可能有多个进程同时处于运行态。示例&#xff1a; 当…...

Diffusino Policy学习note

Diffusion Policy—基于扩散模型的机器人动作生成策略 - 知乎 建议看看&#xff0c;感觉普通实验室复现不了这种工作。复现了也没有太大扩展的意义。 Diffusion Policy 是监督学习吗 Diffusion Policy 通常被视为一种基于监督学习的方法&#xff0c;但它的实际训练过程可能结…...

【Python】*args和**kwargs

【Python】*args和**kwargs 一、*args: 接收不定数量的位置参数示例1&#xff1a;简单的加法计算器示例2&#xff1a;转发参数给另一个函数 二、**kwargs: 接收不定数量的关键字参数示例3&#xff1a;创建用户配置文件示例4&#xff1a;合并多个字典 三、组合使用*args和**kwar…...

使用正则表达式提取PDF文件页数的实现方案

文章目录 背景介绍实现原理代码实现1. 基础函数结构2. 页数提取逻辑3. 使用示例 正则表达式解析优点与局限性优点局限性 错误处理建议性能优化建议最佳实践建议总结参考资源 背景介绍 在Web应用开发中,我们经常需要获取上传PDF文件的页数信息。虽然可以使用pdf.js等第三方库,但…...

Android实现RecyclerView边缘渐变效果

Android实现RecyclerView边缘渐变效果 1.前言&#xff1a; 是指在RecyclerView中实现淡入淡出效果的边缘效果。通过这种效果&#xff0c;可以使RecyclerView的边缘在滚动时逐渐淡出或淡入&#xff0c;以提升用户体验。 2.Recyclerview属性&#xff1a; 2.1、requiresFading…...

springboot443旅游管理系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统旅游管理系统信息管理难度大&#xff0c;容错率低&#…...

利用git上传项目到GitHub

GitHub是基于git实现的代码托管。git是目前最好用的版本控制系统了&#xff0c;非常受欢迎&#xff0c;比之svn更好。 GitHub可以免费使用&#xff0c;并且快速稳定。 利用GitHub&#xff0c;你可以将项目存档&#xff0c;与其他人分享交流&#xff0c;并让其他开发者帮助你一…...

Rust之抽空学习系列(四)—— 编程通用概念(下)

Rust之抽空学习系列&#xff08;四&#xff09;—— 编程通用概念&#xff08;下&#xff09; 1、函数 函数用来对功能逻辑进行封装&#xff0c;能够增强复用、提高代码的可读 以下是函数的主要组成部分&#xff1a; 名称参数返回类型函数体 1.1、函数名称 在Rust中&…...

K-Means 聚类:数据挖掘的瑞士军刀

引言 在数据科学领域&#xff0c;聚类算法是一种非常重要的无监督学习方法&#xff0c;它能够帮助我们发现数据中的自然分组或模式。其中&#xff0c;K-Means 聚类算法因其简单高效而成为最常用的聚类算法之一。无论是市场细分、社交网络分析&#xff0c;还是图像分割等领域&a…...

项目练习:若依-前端项目的目录结构介绍

文章目录 一、目录截图二、目录讲解 一、目录截图 二、目录讲解 1、首先&#xff0c;我们可以看到&#xff0c;这个VUE项目&#xff0c;只有一个App.vue&#xff0c;所以&#xff0c;它是一个单页面系统。 这个App.vue是根组件&#xff0c;root组件。 2、public目录 在Vue 3.…...

知网研学 | 知网文献(CAJ+PDF)批量下载

知网文献&#xff08;CAJPDF&#xff09;批量下载 一、知网研学安装二、插件及脚本安装三、CAJ批量下载四、脚本下载及PDF批量下载浏览器取消拦截窗口 一、知网研学安装 批量下载知网文件&#xff0c;格式为es6文件&#xff0c;需使用知网研学软件打开&#xff0c;故需先安装该…...

设计模式期末复习

一、设计模式的概念以及分类 二、设计模式的主题和意图 三、面向对象程序设计原则&#xff0c;记住名字&#xff0c;还要理解它的使用场景以及如何用&#xff1f; 四、松耦合、紧耦合、强关联、弱关联、静态复用、动态复用的概念&#xff0c;还有静态委派&#xff0c;动态委…...

CentOS7源码编译安装nginx+php+mysql

1.安装nginx 安装依赖 yum -y install gcc gcc-c wget automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed pcre-devel openssl openssl-devel 创建一个不能登录的nginx运行用户 groupadd www-data useradd -s /sbin/nologin -g www-d…...

linux CentOS系统上卸载docker

一、停止Docker服务 首先&#xff0c;需要停止Docker服务。使用systemctl命令来停止Docker服务&#xff1a; bash复制代码sudo systemctl stop docker二、卸载Docker软件包 接下来&#xff0c;使用CentOS的包管理器yum来卸载Docker软件包。根据安装的Docker版本和组件&#…...

css中相对定位的应用场景

元素位置微调 文本与图标组合微调&#xff1a;在网页设计中&#xff0c;经常会有文本和图标的组合&#xff0c;比如一个带有搜索图标的搜索框。可以使用相对定位来微调图标在搜索框内的位置。例如&#xff0c;有以下HTML结构&#xff1a; <input type"text" class…...

Android 获取屏幕物理尺寸

注&#xff1a;编译 sdk 需要使用 30 因为引入了 WindowMetrics、uild.VERSION_CODES.R 新 sdk 才存在的类和属性 某些场景处理 view &#xff0c;对 view 显示的位置要求比较精确&#xff0c;通常我们使用context.getResources().getDisplayMetrics().widthPixels 获取到的宽、…...

C缺陷与陷阱 — 8 编译与链接

目录 1 程序的编译过程 2 动态链接的优缺点 2.1 动态链接的优点 2.2 动态链接的缺点 2.3 只使用动态链接 3 函数库链接的5个特殊秘密 4 警惕Interpositioning 5 产生链接器报告文件 1 程序的编译过程 程序的编译过程是将源代码转换成计算机可以执行的机器代码的过程。…...

知识分享第三十天-力扣343.(整数拆分)

343 整数拆分 给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。 说明: 你可…...

Springboot 整合DL4J 打造智能写作助手(文本生成)

项目准备 环境要求: Java 1.8或以上 Maven 或 Gradle&#xff08;用于项目管理&#xff09; Spring Boot框架 DL4J库&#xff08;DeepLearning4J&#xff09; 创建 Spring Boot 项目 使用 Spring Initializr 来生成一个新的 Spring Boot 项目。选择合适的依赖&#xff0c;例如…...

SPL06 基于stm32F103 HAL库驱动(软件模拟IIC)

talk is cheap, show you my code SPL06.c #include "SPL06.h"//*************全局变量*************// Factor_List* b_list; //存储过采样率对应的系数KP&#xff0c;KT COEF_ValueStruct Coefficient { 0 }; //存储校准系数…...

【C#】List求并集、交集、差集

值类型List List<int> intList1 new List<int>() { 1, 2, 3 };List<int> intList2 new List<int>() { 3, 4, 5 };var result intList1.Union(intList2);Console.WriteLine($"并 {string.Join(,,result)}");result intList1.Intersect(in…...

YOLOv8目标检测——详细记录使用ONNX Runtime进行推理部署C++/Python实现

概述 在之前博客中有介绍YOLOv8从环境安装到训练的完整过程&#xff0c;本节主要介绍ONNX Runtime的原理以及使用其进行推理加速&#xff0c;使用Python、C两种编程语言来实现。 https://blog.csdn.net/MariLN/article/details/143924548?spm1001.2014.3001.5501 1. ONNX Ru…...

mfc140u.dll是什么文件?如何解决mfc140u.dll丢失的相关问题

遇到“mfc140u.dll文件丢失”的错误通常影响应用程序的运行&#xff0c;这个问题主要出现在使用Microsoft Visual C环境开发的软件中。mfc140u.dll是一个重要的系统文件&#xff0c;如果它丢失或损坏&#xff0c;会导致相关程序无法启动。本文将简要介绍几种快速有效的方法来恢…...

Redis篇-19--运维篇1-主从复制(主从复制,读写分离,配置实现,实战案例)

1、概述 Redis的主从复制&#xff08;Master-Slave Replication&#xff09;是一种数据冗余机制&#xff0c;它允许将一台Redis服务器的数据复制到其他Redis服务器。在主从复制中&#xff0c;有一台主服务器&#xff08;Master&#xff09;和一个或多个从服务器&#xff08;Sl…...

【Elasticsearch入门到落地】4、Elasticsearch的安装

接上篇《3、es与mysql的概念对比》 上一篇我们学习了Elasticsearch与Mysql的概念与区别。本篇我们来进行Elasticsearch的环境准备及软件安装。 一、环境准备 如果我们没有自己的Linux服务器&#xff0c;且现在正在使用的是Windows操作系统的电脑&#xff0c;那么首先我们需要安…...

计算无人机俯拍图像的地面采样距离(GSD)矩阵

引言 在无人机遥感、测绘和精细农业等领域&#xff0c;地面采样距离&#xff08;Ground Sampling Distance&#xff0c;简称 GSD&#xff09;是一个非常重要的指标。GSD 是指图像中每个像素在地面上实际代表的物理距离&#xff0c;通常以米或厘米为单位。GSD 决定了图像的空间…...

牛客网 SQL37查找多列排序

SQL37查找多列排序 select device_id,gpa,age from user_profile order by gpa asc,age asc#select [字段1,字段2] from [表名] order by [字段1] [升序(asc)/降序(desc)],[字段2] [升序(asc)/降序(desc)] #select&#xff1a;查询 #order by 排序 每日问题 如何处理对象的状…...

el-tabs标签过多

tab-position&#xff1a;top情况 .el-tabs__nav-wrap{overflow-x: auto ;width: 86% ;margin-left: 10px ; } 效果&#xff1a; tab-position&#xff1a;left情况 .el-tabs__nav-wrap{overflow-x: auto ;height: 高度 ;margin-top: 10px ; } 效果&#xff1a; 注意&…...

如何制作搞笑配音视频?操作方法

在数字娱乐盛行的今天&#xff0c;搞笑配音视频凭借其独特的幽默感和创意&#xff0c;在网络上赢得了大量观众的喜爱。如果你也想尝试制作一部让人捧腹的搞笑配音视频&#xff0c;那么请跟随以下步骤&#xff0c;从撰写搞笑文案到视频配音剪辑&#xff0c;一步步打造你的作品。…...

[Unity]Unity跨平台开发之针对Android开发

用户手册的这一部分包含Android平台关于输入&#xff08;input&#xff09;、资产管理&#xff08;asset management&#xff09;和调试&#xff08;debugging&#xff09;等相关主题的开发信息。 Android移动脚本编写 注意&#xff1a;安卓可以在C#中使用UNITY_ANDROID来进行…...