复习之Linux系统中的进程管理

news2024/11/24 12:48:21

1.什么是进程?线程?

进程(Process):是操作系统进行资源分配的最小单位。一个进程是一个程序的一次执行过程。每启动一个进程,操作系统就会为它分配一块独立的内存空间,用于存储PCB、数据段、程序段等资源。每个进程占有一块独立的内存空间。

线程(英语:thread)是操作系统能够进行运算调度的最小单位。线程是进程的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

通俗解释:一个进程指的是一个正在执行的应用程序。线程的功能是执行应用程序中的某个具体任务,比如一段程序、一个函数等。程序执行流是从上倒下贯穿运行的。

线程和进程之间的关系,类似于工厂和工人之间的关系,进程好比是工厂,线程就如同工厂中的工人。一个工厂可以容纳多个工人,工厂负责为所有工人提供必要的资源(电力、产品原料、食堂、厕所等),所有工人共享这些资源,每个工人负责完成一项具体的任务,他们相互配合,共同保证整个工厂的平稳运行
每个进程执行前,操作系统都会为其分配所需的资源,包括要执行的程序代码、数据、内存空间、文件资源等。一个进程至少包含 1 个线程,可以包含多个线程,所有线程共享进程的资源,各个线程也可以拥有属于自己的私有资源。

2.进程的5种状态

在linux系统中,进程有5种状态,分别是:

R(TAKS_RUNNING)  : 可执行态

S(TASK_INTRRUPTABLE)  :可唤醒休眠

D(TASK_UNINTRRUPTABLE) :不可唤醒休眠

T(TASK_STOP) :暂停状态

Z(EXIT_ZOMBIE) :僵死态

下面详细介绍每一种状态:

(1)R(TAKS_RUNNING)  : 可执行态

正在运行或者就绪队列中等待运行的进程。此时进程资源已经准备就绪,就等运行。一个进程处于RUNNING并不代表他一定在被执行,由于在多任务系统中,各个就绪进程需要并发执行,所以某个特定时刻,这些处于RUNNING状态的进程中,只有一个能得到处理器,而其他进程必须有一个就绪队列中等待,即使在多处理器的系统中,linux只能同时让一个处理器执行任务。

(2) S(TASK_INTRRUPTABLE)  :可唤醒休眠

处于这种状态的进程在等待队列中,当资源有效时,可以由操作系统进行唤醒,与不可唤醒休眠状态区别是:处于此状态中的进程也可以被其他进程所唤醒(可以被其他进程通过信号来唤醒,或者通过操作系统的wake_up()唤醒);唤醒后即可转为可执行态。

(3) D(TASK_UNINTRRUPTABLE) :不可唤醒休眠

处于这种状态的进程正在等待队列中,当资源有效时,可以由操作系统唤醒(通过wake_up()调用唤醒),否则一直处于等待状态;一般而言,Linux中如果我们等待的是磁盘资源,当进程等待磁盘资源拷贝写入的过程,此时进程处于阻塞状态,这种进程阻塞状态就是D状态(不可被中断),操作系统也不能杀掉该进程,只能等D状态进程自己醒来。等待磁盘给回应才能醒来。

(4) T(TASK_STOP) :暂停状态

停止运行(STOPPED),也就是挂起状态,进程被暂停,需要通过其它进程的信号才能被唤醒

(5) Z(EXIT_ZOMBIE) :僵死态

程序退出后的中间等待处理状态。表示进程结束但尚未消亡的一种状态,此时进程已经结束运行并释放掉大部分资源,但尚未释放进程控制块。

Z状态是一种已经死亡的状态,但是死了之后,不要让操作系统释放它。那该状态存在的意义是什么呢?当一个Linux中的进程退出的时候,一般不会直接进入X状态(死亡,资源可以立马回收),而是进入Z状态,为什么?

因为进程被创建出来一定是要有任务完成,当进程退出的时候,我们怎么知道进程把任务给我们完成了呢?需要将进程的执行结果告知给父进程或者操作系统。

子进程退出,维护Z状态,就是为了让父进程或者操作系统来读取执行结果!父进程和操作系统通过进程等待来读取僵尸进程的信息

 僵死状态是一个比较特殊的状态。当进程退出并且父进程(使⽤用wait()系统调⽤)没有读取到子进程退出的返回代码时就会产生僵死(尸)进程。僵死进程会以终⽌止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。所以只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态。

3.图形方式查看进程

(1)鼠标点击桌面查看

utilities-----> system moniter  :  即可查看进程

(2)gnome命令查看

#  gnome-system-monitor

 4.PS命令详解

PS命令是Process Status的缩写,是在Linux中是查看进程的命令。可以用ps这个命令来获取进程的运行状态和管理进程。

在linux系统中,ps命令有为三种执行风格:

  • Unix风格:参数前加单破折线,来源于贝尔实验室开发的AT&T Unix系统
  • BSD风格:参数前不加破折线,来源于加州大学伯克利分校开发的一个Unix系统
  • GNU风格:参数前面加双破折线,来源于GNU计划&Linux内核的Linux系统

# man ps  : 查看ps命令的帮助

 (1)Unix风格

参数作用
-e显示所有进程
-f显示信息的完整格式
-H显示进程的层级结构
-o显示指定参数
--sort排序

# ps  -e : 显示所有进程

# ps  -f  : 显示信息的完整格式

 

#  ps  -H  : 显示进程的层级结构

 

# ps  -o  指定信息  : 显示指定信息

 

# ps     -eo    %cpu      --sort  = %cpu :升序排列所有进程的cpu信息

参数说明

参数作用
UID运行这个进程的用户(如果该用户名过长,会显示成用户id)
PID进程ID
PPID父进程ID(有时我们要干掉一个进程总是失败,这是我们要考虑是不是要干掉它的父进程)
C该进程生命周期的CPU利用率(CPU使用时间/进程运行时间*100%,单位%)
STIME进程启动该时的系统时间(进程的启动时间,时间较久显示日期,当天的显示具体时间HH:MM)
TTY进程启动时的终端设备(?表示没有终端)
TIME运行进程需要的累计CPU时间(就是到目前为止该进程使用CPU一共多久了)单位[dd]-hh:mm:ss
CMD启动进程的命令

 (2)  BSD风格

参数作用
f进程层级关系
a显示跟任意终端关联的所有进程(当用户登陆系统后产生的进程都是带终端的)
x显示所有的进程,甚至包括未分配任何终端的进程
r仅显示运行中的进程
u采用基于用户的格式显示
o显示指定参数
p显示指定pid的进程

# ps  f  :  显示层级关系

#  ps  a  :  显示跟终端相关的进程

 # ps  x  : 显示所有进程,内容包括ps  a 的显示结果

 # ps  r :  仅显示运行中的进程

 # ps  u : 用户信息归类的查看方式

#  ps o  指定参数 : 显示指定参数

 

# ps p pid : 显示指定pid的进程

 # ps  aux : 以用户格式显示所有进程

参数说明
对比Unix风格,主要多出了几个参数

参数作用
VSZ进程在内存中的大小,单位KB
RSS进程在未换出时占用的物理内存
STAT代表当前进程状态的双字符状态码
第一个字符:S休眠 R运行
第二个字符:<高优先级进程 N低优先级进程 L有页面锁定在内存 s控制进程 l多线程进程 +前台进程

5.pgrep 和 pidof 命令详解

(1)pgrep命令

pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。

# pgrep  -u  uid : 显示指定uid用户的进程id

# pgrep  -U  用户名 :显示指定用户的进程id

 # pgrep  -t  终端名 :显示指定终端进程id

 # pgrep  -lU   westos  : 显示westos用户的进程id及名称,顺序一定!l在U前!

#pgep   -lt  pts/1 : 显示终端的进程id及名称

# pgrep  -alU   westos  : 显示westos用户的进程id及完整名称,顺序一定!l在U前!

#pgep   -alt  pts/1 : 显示终端的进程id及完整名称

# pgrep    -P  父进程号 :显示子进程id

首先在 shell-1  产生子进程 cat ,并查看父进程id

 在shell-2 查看该子进程的id

 在shell-3 利用pgrep 命令显示子进程的id,与上完全一致!证明该命令显示的是

id为7026的子进程的id

 (2)pidof命令

pidof命令用于查找指定名称的进程的进程号id号。

# pidof  进程名 : 显示该进程的进程id

首先在shell-1 打开cat 进程,在shell-2打开vim进程

在shell-3利用pidof命令查看j进程id

6.top命令的用法

top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。

(1)top输出参数含义

#  top : 实时显示进程的资源占用情况。

 1)前5行参数信息

# 第一行 :任务队列信息

内容含义
 20:35:56当前时间
up 41 min系统运行时间 格式为时:分
 2 users当前登录用户数
load average: 0.00, 0.01, 0.05系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

# 第二行:任务状态信息统计

内容含义
 218 total进程总数
 1 running正在运行的进程数
217 sleeping睡眠的进程数
0 stopped停止的进程数
0 zombie僵尸进程数

# 第三行:cpu信息

内容含义
 0.5 us用户空间占用CPU百分比
0.3 sy 内核空间占用CPU百分比
0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.2 id空闲CPU百分比
0.0 wa 等待输入输出的CPU时间百分比
0.0 hi硬中断(Hardware IRQ)占用CPU的百分比
 0.0 si软中断(Software Interrupts)占用CPU的百分比
0.0 st用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间。

# 第四行:内存信息

内容含义
2046936 total物理内存总量
445784 free空闲内存总量
683564 used使用的物理内存总量
917780 buff/cache用作内核缓存的内存量

# 第五行:交换区信息

内容含义
2097148 total交换区总量
2097148 free空闲交换区总量
0 used使用的交换区总量
860784 avail Mem代表可用于进程下一次分配的物理内存数量

2)进程信息

列名含义
PID进程id
USER进程所有者的用户名
PR优先级
NInice值。负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb
RES进程使用的、未被换出的物理内存大小,单位kb
SHR共享内存大小,单位kb
S进程状态
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,单位1/100秒
COMMAND命令名/命令行

(2)top内部指令

在top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的):

  • ?:显示在top当中可以输入的命令 
  • P:以CPU的使用资源排序显示 
  • M:以内存的使用资源排序显示 
  • N:以pid排序显示 
  • T:由进程使用的时间累计排序显示 
  • k:给某一个pid一个信号。可以用来杀死进程 
  • r:给某个pid重新定制一个nice值(即优先级) 
  • q:退出top(用ctrl+c也可以退出top)

(3)top命令参数

  • -d:指定刷新频率,表示top命令显示的页面更新一次的间隔。默认是3秒。
  • -b:以批次方式显示,静态输出。
  • -n:指定显示的批次数量,与-b结合使用。
  • -p:指定特定的pid进程号进行观察。

 7.进程的优先级

(1)优先级的概念

系统是多任务多用户的操作模式,任务的重要性是有区分。一般根据进程的优先级来确定任务的重要性。具体来说:

  • cpu分配资源的先后顺序就是优先级
  • 优先权高的进程有优先执行的权利
  • 可以让进程运行在指定的cpu上,改善系统整体性能

(2)优先级的范围

  • 范围: 0--139
  • 内核自控优先级范围:0-99
  • 用户可控优先级:100-139

 我们只能更改用户可控优先级,即100-139!

nice值是反应一个进程“优先级”状态的值,其取值范围是-20至19,一共40个级别。这个值越小,表示进程”优先级”越高,而值越大“优先级”越低。

由nice的范围,可以推出pri的范围:

命令含义
nice-20~19
pri39~0
priority100~139

(3) 更改进程的优先级

#  renice   -n   -5   进程id  :    更改进程的优先级
#  nice   -n   -5    进程名  :    指定优先级打开进程

 (4)优先级相关的stat状态信息

#  ps   -o   pid ,  nice , stat ,  comm  :关注stat那一列

8. 进程的前后台调用

linux系统中有些命令会占用shell,我们可以将它打入后台刮起。eg:cat ,vim ,gedit

# <  ctrl > + < z >  :  把占用shell的进程打入后台挂起

# jobs : 查看当前shell在后台的所有工作

 # bg  序号:把后台挂起的进程运行起来

# bg :  默认在后台运行有“+”号的进程

ps:有些进程可以执行后台运行操作,但会立即停止。因为运行需要界面支持,例如cat,vim命令。

# fg  序号:把指定的后台的进程调回前台

# fg  : 把后面有“+”的进程调回前台

 # 命令   & :直接运行进程在后台,不占用shell(有些命令无法后台运行,cat ,vim)

 如果向结束在后台的进程,有两种方法:

1)将进程调回前台,在<ctrl>+<c>结束进程

2)#  killall  -9  进程名 : 结束指定进程

 9.进程信号的理解

(1)进程信号的含义

利用# man  7 signal 可以查看进程信号的含义

具体的如下表:

(2)进程信号控制工具

#  kill   进程信号   pid : 精准结束指定进程


#  killall   进程信号 进程名字 :批量结束进程


#  pkill   进程信号 进程条件 :按条件结束进程

(3)进程信号实验理解

#  kill   -2   6332 :清空该内存中的进程数据

ps: 输入命令后,一串字符后出现c(等于按了ctrl c),表示该数据被清空

 # < ctrl > + < \ >  :  鼠标消失,动一下就恢复了!(看视频全屏鼠标消失)

 # kill  -15  id :正常关闭进程,会被阻塞。

#  kill  -9  id : 强行结束进程,不会被阻塞。

ps:因为kill -15信号只是通知对应的进程要进行"安全、干净的退出",程序接到信号之后,退出前一般会进行一些"准备工作",如资源释放、临时文件清理等等,如果准备工作做完了,再进行程序的终止。但是,如果在"准备工作"进行过程中,遇到阻塞或者其他问题导致无法成功,那么应用程序可以选择忽略该终止信号。kill -9 是强制杀死一个进程,不管这个进程有多重要。

 # kill    -18  id :  运行被暂停的进程

 # kill   -19  id : 暂停进程,不会被阻塞

# kill  -20  id : 暂停进程,会被阻塞

当运行被暂停的进程后,刚刚输入没出现的字符立即出现!

 10.守护进程

(1)守护进程定义

Linux守护进程是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。

(2) 实验环境设定

在虚拟机中添加与主机同一网段的ip:172.25.254.173

主机:172.25.254.73

具体添加步骤如下:

 

 

 

 添加成功后用ip  a  查看是否添加成功!

添加成功后,用虚拟机ping主机,一般可以ping通,但是这里我出了问题了! 虚拟机和主机相互无法ping通!

在同一网段一般可以ping 通,不用设置dns,网关.....

 首先关闭防火墙,selinux,结果还是无法ping通,后来设置了桥接模式顺利解决!

 保存后再次尝试ping,发现ping通拉!

 ping通后我们利用ssh远程操作虚拟机!

# ssh  -l  root  172.25.254.173 : 远程连接到173虚拟机的root用户

之所以能连接是因为支持sshd这个服务!

 (3) symtemctl 管理系统服务(以sshd服务为例)

systemctl 命令的含义如下:

命令含义
start开启服务
stop关闭服务
status查看状态
reload重新加载
restart重新启动服务
enable设定服务开机自启动
disable设定服务开机不启动
enable  --now设定服务开机启动并当前开启服务
diaable  --now设定服务开机不启动并当前关闭服务
list-units查看系统所有服务当前状态
list-unit-files查看服务开机状态
list-dependencies列出服务的依赖性
mask冻结服务
unmask解冻服务

# systemctl  status  sshd : 查看sshd服务的状态

ps:可以看出该服务是开启的,所以主机才能ssh 虚拟机

 # systemctl  stop  sshd : 关闭sshd服务

 关闭sshd服务后,再次用真机ssh虚拟机,发现无法连接!

  # systemctl  start  sshd : 开启sshd服务

 # systemctl  restart  sshd : 重新启动服务,先stop再start(id变了)

  # systemctl  reload  sshd : 重新加载服务,id不变!

 # systemctl  enable   sshd :设定服务开机启动

 # systemctl  disable   sshd :设定服务开机不启动

# systemctl  able   --now   sshd :设定服务开机启动并当前开启服务

# systemctl  disable   -- now  sshd :设定服务开机不启动并当前关闭服务

 # systemctl  list-units  : 查看系统所有服务当前状态

 # systemctl  list-unit-files : 查看系统所有服务当前状态

# systemctl   list-dependencies  sshd : 列出sshd服务的依赖性

 # systemctl  mask  sshd : 冻结服务

ps:冻结服务后无法通过start开启服务,必须解冻才可以!

# systemctl  unmask  sshd : 解冻服务!

# systemctl get-default :查看系统的运行级别

# runlevel : 查看运行级别---数字版 (一共有7个运行级别)

# init  6 : 重启  # init 5 : 开启有图形运行

运行级别含义
0关机
1单用户
2-4无图形
5有图形
6重启

# systemctl set-default multi-user.target :设定默认运行模式为无图形模式

# systemctl set-default graphical.target :设定默认运行模式为有图形模式

11. 系统登陆审计体系

统计登陆系统的账号信息

#  w : 显示正在登陆系统的账号

# w  -i :显示登陆系统账号的来源

ps:此时显示的是/var/run/utmp里的信息

 # last : 显示过去登陆成功的账号,现在已经退出

ps:此时显示的是 /var/log/wtmp里的信息

# lastb : 显示尝试登陆没成功的账号!

ps:此时显示的是/var/log/btmp里的信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/609152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何从复盘中获得真正的收获?持续改进是关键!

复盘&#xff0c;本是围棋术语&#xff0c;每次博弈结束后&#xff0c;双方棋手把刚才的对局复演一遍&#xff0c;分析对局当中得失关键&#xff0c;提升自己棋力的好方法。复盘是对思维的训练。 通过复盘&#xff0c;当类似局面再次出现&#xff0c;你就能快速预测接下来的动态…

【网络】TCP套接字创建服务客户端与守护进程

文章目录 Tcp服务端TcpServer.hppTcpServer.cc Tcp客户端TcpClient.hppTcpClient.cc TCP客户端处理守护进程守护进程化 Tcp服务端 TcpServer.hpp TCP服务端创建流程如下&#xff1a; 创建socket文件套接字对象&#xff0c;面向字节流SOCK_STREAM bind绑定自己的网络信息&…

nacos注册中心配置springboot动态刷新源码解读

0丶简介 如何快速启动,请去官网看文档,言简意赅 https://nacos.io/zh-cn/docs/quick-start.html 只描述为何实现动态刷新的关键源码 1丶基于目前最新版本 <!-- https://mvnrepository.com/artifact/com.alibaba.boot/nacos-config-spring-boot-starter --> <depend…

命名管道详解

一、命名管道 1、命名管道与匿名管道一个很显著的区别是&#xff1a;匿名管道只能在有血缘关系的进程间进行通信&#xff0c;但命名管道可以让两个毫无关系的进程进行通信。 2、如果我们想在不相关的进程间交换数据&#xff0c;我们可以用到FIFO文件来进行通信&#xff0c;这…

【Nginx rewrite】

目录 一、常见的Nginx 正则表达式二、location1、location 解释2、location 示例说明&#xff1a;3、实际网站使用中&#xff0c;至少有三个匹配规则定义&#xff1a; 二、rewrite1、rewrite跳转实现&#xff1a;2、rewrite 执行顺序如下&#xff1a;3、rewrite 示例 一、常见的…

B-3:Linux 系统渗透提权

B-3&#xff1a;Linux 系统渗透提权 任务环境说明&#xff1a; 服务器场景&#xff1a;Server2204&#xff08;关闭链接&#xff09; 用户名&#xff1a;hacker 密码&#xff1a;123456 1.使用渗透机对服务器信息收集&#xff0c;并将服务器中 SSH 服务端口号作为 flag 提 …

Java工厂模式(随笔)

前言&#xff1a;Java工厂模式是一种创建型设计模式&#xff0c;它提供了一种将对象创建过程封装到一个单独的类中的方式&#xff0c;这个类就是被称为‘工厂类’&#xff0c;它根据特定的条件来决定应该创建哪个对象&#xff01; 文章目录&#xff1a; 三大工厂模式介绍特殊工…

计算机网络第二章——物理层(上)

提示&#xff1a;男儿何不带吴钩&#xff0c;收取关山五十州 文章目录 2.1.1 物理层基本概念知识引导物理层接口特征 2.1.2 数据通信基础知识数据通信相关术语数据通信系统要考虑的问题三种通信方式串行传输&并行传输同步传输&异步传输 脑图时刻 2.1.3 数据通信基础知识…

Google Play上架aab保姆级教程(纯aab上架/已上架apk转aab上架)

0、上传密钥 & 应用签名密钥 “Google 会使用上传证书验证您的身份&#xff0c;并使用您的应用签名密钥为 APK 签名以进行分发” 以上为官方解释。 2021年8月起&#xff0c;上传google play的应用必须以aab格式&#xff0c;aab的签名流程要比之前apk的复杂一些。需要上传…

如何真正有效地应对项目中的需求变更?

需求变更在奉行唯快不破的互联网公司&#xff0c;可算程序员头号噩梦&#xff0c;“996”直接元凶。 阿里口号拥抱变化。既然需求变更无法被消灭&#xff0c;就要通过学习&#xff0c;掌握更好应对需求变更方法。 1 常见的需求变更流程 先要发起变更申请&#xff0c;由变更委…

从IO多路复用到redis线程模型

文章目录 Unix IO模型分类阻塞IO - Blocking IO非阻塞IO - NoneBlocking IOIO多路复用 - IO multiplexing信号驱动IO - signal driven IO异步IO - asynchronous IO同步与异步的定义阻塞与非阻塞的定义 IO多路复用有哪些实现IO多路复用的大致实现selectpollepoll redis的线程模型…

Python实战基础19-异常处理及程序调试

1、异常概述 在程序运行过程中&#xff0c;经常会遇到各种各样的错误&#xff0c;这些错误统称为“异常”。 这些异常有的是由于开发者将关键字敲错&#xff0c;这类错误产生的是SyntaxError:invalid syntax&#xff08;无效语法&#xff09;&#xff0c;这将直接导致程序不能…

3.二进制高可用安装k8s 1.23集群(生产级)

二进制高可用安装k8s集群(生产级) 本文档适用于kubernetes1.23 节点 Etcd Cluster Etcd是一个数据库,k8s做的一些变更啥的都会存到Etcd中 如果集群比较大建议与master节点分装,单独装Etcd master节点 master分为几个重要的组件 你所有的流量都会经过Kube-APIServer Co…

排序算法——希尔排序图文详解

文章目录 希尔排序基本思想整体插入思想预排序结论 代码实现实现代码直接插入排序与希尔排序的效率比较测试代码&#xff1a; 时间复杂度 希尔排序 注1&#xff1a;本篇是基于对直接插入排序法的拓展&#xff0c;如果对直接插入法不了解&#xff0c;建议先看看直接插入排序 注…

Learning C++ No.27 【布隆过滤器实战】

引言 北京时间&#xff1a;2023/5/31/22:02&#xff0c;昨天的计算机导论考试&#xff0c;三个字&#xff0c;哈哈哈&#xff0c;摆烂&#xff0c;大致题目都是一些基础知识&#xff0c;但是这些基础知识都是非常非常理论的知识&#xff0c;理论的我一点不会&#xff0c;像什么…

【自制C++深度学习框架】表达式层的设计思路

表达式层的设计思路 在深度学习框架中&#xff0c;Expression Layer&#xff08;表达式层&#xff09;是指一个通用的算子&#xff0c;其允许深度学习网络的不同层之间结合和嵌套&#xff0c;从而支持一些更复杂的操作&#xff0c;如分支之间的加减乘除&#xff08;elementAdd…

PyTorch 深度学习 || 专题二:PyTorch 实验框架的搭建

PyTorch 实验框架的搭建 1. PyTorch简介 PyTorch是由Meta AI(Facebook)人工智能研究小组开发的一种基于Lua编写的Torch库的Python实现的深度学习库&#xff0c;目前被广泛应用于学术界和工业界&#xff0c;PyTorch在API的设计上更加简洁、优雅和易懂。 1.1 PyTorch的发展 “…

Numpy---生成数组的方法、从现有数组中生成、生成固定范围的数组

1. 生成数组的方法 np.ones(shape, dtypeNone, orderC) 创建一个所有元素都为1的多维数组 参数说明: shape : 形状&#xff1b; dtypeNone: 元素类型&#xff1b; order &#xff1a; {‘C’&#xff0c;‘F’}&#xff0c;可选&#xff0c;默认值&#xff1a;C 是否在内…

BPMN2.0自动启动模拟流程

思路&#xff1a;BPMN的流程模拟启动&#xff0c;主要是通过生成令牌&#xff0c;并启动令牌模拟 流程模拟的开启需要关键性工具&#xff1a;bpmn-js-token-simulation&#xff0c;需要先行下载 注&#xff1a;BPMN2.0的流程模拟工具版本不同&#xff0c;启动方式也不一样&am…

Kafka某Topic的部分partition无法消费问题

今天同事反馈有个topic出现积压。于是上kfk管理平台查看该topic对应的group。发现6个分区中有2个不消费&#xff0c;另外4个消费也较慢&#xff0c;总体lag在增长。查看服务器日志&#xff0c;日志中有rebalance 12 retry 。。。Exception&#xff0c;之后改消费线程停止。 查…