Linux kill、killall、pkill 命令区别

news2024/12/23 14:58:22

注:本文为 “Linux kill、killall、pkill” 相关几篇文章合辑。
未整理去重。


kill、killall、pkill、kill -9 区别

区别

进程 ID 唯一,所以 kill 一次只能杀死 1 个进程,其他相同名称的进程仍然存在,而 pkill 和 killall,则可以一次杀死所有拥有相同名称的进程.

killall 和 kill

killall 命令用于杀死指定名字的进程

kill 命令用于杀死指定进程 ID 的进程

killall 相当于 查询进程 ID+ kill 进程 ID 两步合一

killall = 1) ps -aux | grep name 得出 pid;2) kill pid

pkill 和 kill

pkill 和 kill 用法相同,不同的地方在于 kill 指定的进程 ID,pkill 指定的是进程名

pkill -signal process_name, signal 和 kill 一样也是默认 15,强制的话也是指定 9

kill -9 process_id 等同 pkill -9 process_name

(kill -9 pidof process_name 等同 pkill -9 process_name)

pkill 和 killall

killall 和 pkill 的用法几乎相同,但 pkill 可以指定非完整名称,而 killall 则必须指定完整进程名称

kill 和 kill -9

kill -9 就是 kill 指定了信号 9

kill 不指定信号,则默认是发送 15

即:kill = kill -15

kill -15,15 信号通知进程退出,进程在退出之前可以清理并释放资源。9 信号直接杀死进程,只有在万不得已时,才用 kill 信号 (9), kill -2 = CTRL+C

相关参数

killall 命令

killall [参数][进程名]

-Z 只杀死拥有 scontext 的进程
-e 要求匹配进程名称
-I 忽略小写
-g 杀死进程组而不是进程
-i 交互模式,杀死进程前先询问用户
-l 列出所有的已知信号名称
-q 不输出警告信息
-s 发送指定的信号
-v 报告信号是否成功发送
-w 等待进程死亡
--help 显示帮助信息
--version 显示版本显示

例如:

1:杀死所有同名进程
killall nginx
killall -9 bash
2. 向进程发送指定信号
killall -TERM ngixn  或者  killall -KILL nginx

kill 命令

kill [参数][进程 id]
命令参数

-l  信号,若果不加信号的编号参数,则使用 “-l” 参数会列出全部的信号名称
-a  当处理当前进程时,不限制命令名和进程号的对应关系
-p  指定 kill 命令只打印相关进程的进程号,而不发送任何信号
-s  指定发送信号
-u  指定用户

1、kill 命令可以带信号号码选项,也可以不带。如果没有信号号码,kill 命令就会发出终止信号 (15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用 kill 向进程发送特定的信号。例如:
kill -2 123

它的效果等同于在前台运行 PID 为 123 的进程时按下 Ctrl+C 键。但是,普通用户只能使用不带 signal 参数的 kill 命令或最多使用 - 9 信号。

2、kill 可以带有进程 ID 号作为参数。当用 kill 向这些进程发送信号时,必须是这些进程的主人。如果试图撤销一个没有权限撤销的进程或撤销一个不存在的进程,就会得到一个错误信息。

3、可以向多个进程发信号或终止它们。

4、当 kill 成功地发送了信号后,shell 会在屏幕上显示出进程的终止信息。有时这个信息不会马上显示,只有当按下 Enter 键使 shell 的命令提示符再次出现时,才会显示出来。

5、应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用 kill 信号 (9),因为进程不能首先捕获它。

要撤销所有的后台作业,可以输入 kill 0。因为有些在后台运行的命令会启  动多个进程,跟踪并找到所有要杀掉的进程的 PID 是件很麻烦的事。这时,使用 kill 0 来终止所有由当前 shell 启动的进程,是个有效的方法。

范例

实例 1:列出所有信号名称

\# kill -l

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

说明:
只有第 9 种信号 (SIGKILL) 才可以无条件终止进程,其他信号进程都有权利忽略。

下面是常用的信号:

HUP    1    终端断线
INT     2    中断 (同 Ctrl + C)
QUIT    3    退出 (同 Ctrl + \)
TERM   15    终止
KILL    9    强制终止
CONT   18    继续 (STOP 相反, fg/bg 命令)
STOP    19    暂停 (同 Ctrl + Z)

实例 2:得到指定信号的数值

\#  kill -l KILL
9

\# kill -l SIGKILL
9

\]# kill -l TERM
15

\# kill -l SIGTERM
15

实例 3:先用 ps 查找进程,然后用 kill 杀掉

\# ps -ef|grep vim
root      3268  2884  0 16:21 pts/1    00:00:00 vim install.log
root      3370  2822  0 16:21 pts/0    00:00:00 grep vim

\# kill 3268

实例 4:彻底杀死进程

\# kill –9 3268   //-9 强制杀掉进程

ps: init 是 Linux 系统操作中不可缺少的程序之一。所谓的 init 进程,它是一个由内核启动的用户级进程。内核自行启动 (已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等) 之后,就通过启动一个用户级程序 init 的方式,完成引导进程。所以,init 始终是第一个进程 (其进程编号始终为 1)。 其它所有进程都是 init 进程的子孙。init 进程是不可杀的!

pkill 命令

pkill 和 killall 应用方法差不多,pkill 可以指定非完整名称,而 killall 则必须指定完整进程名称。


kill、killall、pkill 命令区别

Cape0915 于 2017-11-12 17:33:39 发布

首先可以通过 ps aux 查看系统有哪些进程正在运行。

这里写图片描述

  1. 用 kill 来杀死某一个进程

kill,加选项 - 9,加 PID,表示杀死进程编号为 PID 的这个进程
-1 重启

\# kill -9 PID

杀死进程 PID 为 2899 的进程

\# kill -9 2899123456
  1. 用 killall 杀死一类进程

#killall,加选项 - 9,加服务名, 表示杀死该服务的所有进程
-1 重启

\# killall -9 service

杀死 httpd 服务的所有进程

\# killall -9 httpd 123456
  1. 用 pkill 踢出某个终端

pkill,加选项 -9,加终端号,表示踢出该终端的所有进程
-1 SIGHUP 重载配置

\# pkill -9 pts/0

终止远程登录终端 pts/0 上的所有进程

[root@localhost ~]# pkill -9 pts/0

精通 Linux “kill” 命令

译者:flsf

校对:wxy

| 2013-10-17 22:25

无论你使用哪种操作系统,你一定会遇到某个行为失常的应用,它把自己锁死并拒绝关闭。在 Linux (还有 Mac),你可以用一个 “kill” 命令强制终结它。在这个教程中,我们将展示给你多种方式使用 “kill” 命令终结应用。

Kill 命令和信号

当你执行一个 “kill” 命令,你实际上发送了一个信号给系统,让它去终结不正常的应用。总共有 60 个你可以使用的信号,但是基本上你只需要知道 SIGTERM (15) 和 SIGKILL (9)。

你可以用这个命令看到所有信号的列表:

kill -l

img

  • SIGTERM - 此信号请求一个进程停止运行。此信号是可以被忽略的。进程可以用一段时间来正常关闭,一个程序的正常关闭一般需要一段时间来保存进度并释放资源。换句话说,它不是强制停止。
  • SIGKILL - 此信号强制进程立刻停止运行。程序不能忽略此信号,而未保存的进度将会丢失。

使用 “kill” 的语法是:

kill [信号或选项] PID (s)

默认信号(当没有指定的时候)是 SIGTERM。当它不起作用时,你可以使用下面的命令来强制 kill 掉一个进程:

kill SIGKILL PID

或者

kill -9 PID

这里 “-9” 代表着 SIGKILL 信号。

如果你不知道应用的 PID,仅需要运行这个命令:

ps ux

它会显示所有正在运行的应用还有应用的 PID。

img

例如,要 kill 掉 Chrome 命令:

kill -9 3629

也可以在同一时间 kill 多个进程。

kill -9 PID1 PID2 PID3

PKill

“pkill” 命令允许使用扩展的正则表达式和其它匹配方式。你现在可以使用应用的进程名 kill 掉它们,而不是使用 PID。例如,要 kill 掉 Firefox 浏览器,只需要运行命令:

pkill firefox

使用正则表达式匹配的话,你可以输入进程名的部分字符,比如:

pkill fire

为了避免 kill 掉错误的进程,你应该用一下 “pgrep -l [进程名]” 列表来匹配进程名称。

img

Killall

killall 同样使用进程名替代 PID,并且它会 kill 掉所有的同名进程。例如,如果你正在运行多个 Firefox 浏览器的实例,可以用命令把它们全部 kill 掉:

killall firefox

在 Gnome 中,你可以使用这个命令重启 Nautilus:

killall nautilus

xkill

xkill 是图形方式 kill 一个应用。当你在终端键入 “xkill”,你的光标将立刻变成一个 “十字”。你只需要做的是在不正常的应用上点击一下,它就会立刻 kill 掉这个应用。如果你经常用,也可以添加一个键盘快捷键来激活 xkill.。

结论

当应用不正常而导致系统挂起的时候,往往重启计算机并且再一次开启所有的任务。而有了这些 “kill” 命令,你将能够更好的处理不正常的应用,从而避免导致系统崩溃。当你不想因一个不正常的进程而导致服务器宕机时,它尤其的有用。


在 Linux 中找到一个进程 ID 并杀死它

作者:Arindam

译者: LCTT yzuowei

| 2022-12-12 10:39

一个简单的教学展示,如何找到正在运行中的进程 ID 并杀死它,可以使用终端或者 GUI,这个方法适用于各类 Linux 发行版。

你的 Linux 系统中运行的应用可能会让你的电脑变慢,特别是你的电脑配置较低的时候。在 Linux (以及所有其他 OS)中,程序或者应用都携带一个特别的 PID (进程 ID)可供你简单地分辨它们。

然而,大部分 Linux 初学者用户并不知道如何在 Linux 中寻找运行中的进程并杀死它。在这篇指南中,我们将会解释用不同的方法以杀死 Linux 中的运行进程。这包括了使用终端和 GUI 的方法。

记住,你只应该杀死未响应的进程,或者你发现应用无法被正常关闭 (针对基于 GUI 的应用)。

找到正在运行中的进程

你可以使用命令 top 来列出所有正在进行中的进程和它们的 PID,以及其他细节。程序 top 在所有 Linux 发行版和所有基于 Unix 的系统中都是默认安装了的。

top

Top program output

同样地,你可以执行命令 ps 附带额外选项来获取某个指定的进程的 PID。例如,你可以使用以下命令来获得 firefox 的 PID。

ps -el | grep -i firefox
  • ps:表示 “process status”,用于显示当前系统的进程状态。
  • -e:显示所有用户的进程,等同于 -A
  • -l:显示长格式的输出,提供更多的详细信息。

Firefox process id using ps command - example

现在你已经找到 PID 了,让我们看看你该如何杀掉它。

杀死运行中的进程

使用以下命令,你可以通过进程的名字或者 PID 来杀掉这个正在运行中的进程:

  • killall:通过运行进程的名字来杀死进程
  • kill:通过 PID 来杀死进程

现在,让我们首先使用进程 killall 通过 Firefox 这个名字来杀死它的,命令如下:

killall -9 firefox
  • 参数 -9 发送了信号 SIGKILL 通知 OS 来终止这个进程。
  • 使用以下命令,你也可以列出一些别的信号。
kill -l

同样地,如果你想要通过 PID 来杀死进程,你可以用以下命令:

kill -9 <PID>

在这个例子中,命令会长这样:

kill -9 33665

让我们看看在不同发行版中,你该如何使用图形用户界面(GUI)来杀死任意进程或应用。

通过 GUI 寻找 PID 并杀掉

现在有很多图形界面程序可以枚列进程。大部分 Linux 发行版的桌面环境中已经携带了它们。我们在这里列举出了一些。

GNOME(在 Ubuntu、Fedora 工作站等) & 在 Linux Mint 中

在应用菜单中搜索 “system monitor” 并打开它(LCTT 译注:中文桌面环境也可以搜 “system monitor”,我在 Ubuntu 里试过了)。在 “进程 Processes” 标签页下找到你的进程,右击进程名字打开快捷菜单,选择选项 “杀死 Kill”。

Kill a process in Linux using gnome system monitor

KDE Plasma(Kubuntu、Fedora-KDE 或任何基于 Plasma 的发行版)

在应用菜单中搜索并启动 “system monitor”。这会打开以下程序。在左边菜单栏点击 “进程 Processes” ,你因该能看见一列正在运行的程序。你可以右击列表里的进程或应用并选择 “杀死 Kill” 来终止进程。

System monitor in KDE Plasma

Xfce 桌面

Xfce 桌面可以完成这项任务的原生应用是 任务管理器 Task Manager,你可以通过 “应用 Application > 系统 System > 任务管理器 Task manager” 来找到它。右击进程名字然后选择 “杀死 Kill” 来终止应用或进程。

Xfce task manager to kill a process

如何在其他桌面或发行版上杀死一个进程或程序

如果你找不到任何相似的程序,你可以选择使用终端的方法。或者,你可以使用以下命令来安装 gnome-system-monitor。

Ubuntu 以及相关发行版:

sudo apt install gnome-system-monitor

Fedora 以及其相关的发行版:

sudo dnf install gnome-system-monitor

还有 Arch Linux:

sudo pacman -S gnome-system-monitor

总结一下

我们已经解释了如何在 Linux 中找到一个运行中的进程的 PID 并杀死它的不同方法:你可以通过名字或者 PID 来杀死进程。希望这对你有所帮助。


杀掉僵尸进程

作者:Linuxandubuntu

译者: LCTT DarkSun

| 2017-12-14 22:30

僵尸进程(Zombie Processes)

进程的工作原理:启动一个程序,开始任务,然后等任务结束了,停止这个进程。进程停止后,该进程就会从进程表中移除。

你可以通过 System-Monitor 查看当前进程。

img

但是,有时候有些程序即使执行完了也依然留在进程表中。

那么,这些完成了生命周期但却依然留在进程表中的进程,我们称之为 “僵尸进程”。

它们是如何产生的?

当你运行一个程序时,它会产生一个父进程以及很多子进程。所有这些子进程都会消耗内核分配给它们的内存和 CPU 资源。

这些子进程完成执行后会发送一个 Exit 信号然后死掉。这个 Exit 信号需要被父进程所读取。父进程需要随后调用 wait 命令来读取子进程的退出状态,并将子进程从进程表中移除。

若父进程正确第读取了子进程的 Exit 信号,则子进程会从进程表中删掉。

但若父进程未能读取到子进程的 Exit 信号,则这个子进程虽然完成执行处于死亡的状态,但也不会从进程表中删掉。

僵尸进程对系统有害吗?

不会。由于僵尸进程并不做任何事情,不会使用任何资源也不会影响其它进程,因此存在僵尸进程也没什么坏处。不过由于进程表中的退出状态以及其它一些进程信息也是存储在内存中的,因此存在太多僵尸进程有时也会是一些问题。

你可以想象成这样

“你是一家建筑公司的老板。你每天根据工人们的工作量来支付工资。有一个工人每天来到施工现场,就坐在那里,你不用付钱,他也不做任何工作。他只是每天都来然后呆坐在那,仅此而已!”

这个工人就是僵尸进程的一个活生生的例子。但是,如果你有很多僵尸工人,你的建设工地就会很拥堵从而让那些正常的工人难以工作。

找出僵尸进程

打开终端并输入下面命令:

\# ps aux | grep Z

会列出进程表中所有僵尸进程的详细内容。

杀掉僵尸进程

正常情况下我们可以用 SIGKILL 信号来杀死进程,但是僵尸进程已经死了,你不能杀死已经死掉的东西。因此你需要输入的命令应该是

\# kill -s SIGCHLD pid

将这里的 pid 替换成父进程的进程 id,这样父进程就会删除所有以及完成并死掉的子进程了。

你可以把它想象成

“你在道路中间发现一具尸体,于是你联系了死者的家属,随后他们就会将尸体带离道路了。”

不过许多程序写的不是那么好,无法删掉这些子僵尸(否则你一开始也见不到这些僵尸了)。因此确保删除子僵尸的唯一方法就是杀掉它们的父进程。


via:

  • [Linux] killall 、kill 、pkill 命令详解 - 骑着蜗牛游世界 - 博客园 posted @ 2015-10-16 18:22
    https://www.cnblogs.com/rsky/p/4886043.html

  • centos下kill、killall、pkill命令区别_centos6 pkill-CSDN博客 Cape0915 于 2017-11-12 17:33:39 发布
    https://blog.csdn.net/capecape/article/details/78513194

  • Mastering the “Kill” Command in Linux - Make Tech Easier
    http://www.maketecheasier.com/kill-command-in-linux/

    译者:flsf 校对:wxy 由 LCTT 原创编译,Linux 中国. 荣誉推出

  • How to Find a Process ID and Kill it in Linux [CLI & GUI]
    https://www.debugpoint.com/find-process-id-kill-linux/

    作者:Arindam 选题:lkxed 译者:yzuowei 校对:wxy 由 LCTT 原创编译,Linux 中国. 荣誉推出

  • What Are Zombie Processes And How To Find & Kill Zombie Processes?
    http://www.linuxandubuntu.com/home/what-are-zombie-processes-and-how-to-find-kill-zombie-processes

    作者:linuxandubuntu 译者:lujun9972 校对:wxy 由 LCTT 原创编译,Linux 中国. 荣誉推出

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

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

相关文章

1139: Coin-row problem

解法&#xff1a; #include <bits/stdc.h> using namespace std; const int N 1e53; int dp[N]; int main() {int n;cin>>n;for (int i1;i<n;i) cin>>dp[i];for (int i2;i<n;i) {dp[i]max(dp[i-1],dp[i-2]dp[i]);}cout<<dp[n]<<endl;retur…

Ubuntu压缩打包解压

ubuntu压缩打包 上图&#xff0c;压缩当前目录svn 为svn.tar.gaz&#xff0c;解压后再当前解压目录生成svn文件 在Ubuntu中&#xff0c;你可以使用tar命令来创建一个压缩包&#xff0c;或者使用zip命令来创建一个.zip压缩文件。以下是两种常见的压缩方法&#xff1a; 下图&am…

Excel 合并工具 将文件复制到目标工作表中与操作日志记录

指定文件夹中读取符合条件的 Excel 文件&#xff0c;将其中的数据按照一定规则复制到目标工作表中&#xff0c;并进行相关的日志记录和工作簿保存操作。 先看下 excel 的结构 合并的结果 log 记录 vba 代码 Sub DeltaCheck()作者和创建时间的注释 定义工作表变量Dim ws As Wor…

Github----提交人不是自己

账号用户名都设置对的,但是提交人不是自己 解决 发现是用户名和账号都夹了"号导致 git config --global user.name "Your Name" git config --global user.email "your.emailexample.com"不用引号 git config --global user.name Your Name git …

ZZCMS2023存在跨站脚本漏洞(CNVD-2024-44822、CVE-2024-44818)

ZZCMS是一款用于搭建招商网站的CMS系统&#xff0c;由PHP语言开发&#xff0c;可快速搭建&#xff1a;医药招商、保健品招商、化妆品招商、农资招商、孕婴童招商、酒类副食类等招商网站。 国家信息安全漏洞共享平台于2024-11-14公布其存在跨站脚本漏洞。 漏洞编号&#xff1a…

[免费]SpringBoot+Vue企业OA自动化办公管理系统【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue企业OA自动化办公管理系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue企业OA自动化办公管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着信息技术在管理上越来越深入…

【MySQL】表的基本查询(下)

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

目前Java后端就业前景到底怎么样?

很多人都说今年对于IT行业根本没有所谓的“金三银四”“金九银十”。在各大招聘网站或者软件上不管是大厂还是中小公司大多都是挂个招聘需求&#xff0c;实际并不招人&#xff1b;在行业内的程序员基本都已经感受到了任老前段时间口中所谓的“寒气”。 虽然事实确实是如此&…

机器学习--张量

机器学习–张量 机器学习的数据结构–张量 张量是机器学习程序中的数字容器&#xff0c;本质上就是各种不同维度的数组&#xff0c;如下图所示。 张量的维度称为轴&#xff08;axis&#xff09;&#xff0c;轴的个数称为阶&#xff08;rank&#xff09; 标量–0D张量 impor…

3D 视觉定位技术:汽车零部件制造的智能变革引擎

在汽车零部件制造领域&#xff0c;传统工艺正面临着前所未有的挑战。市场对于零部件精度与生产效率近乎苛刻的要求&#xff0c;促使企业寻求突破之道。而 3D 视觉定位技术&#xff0c;为汽车零部件制造开启了精准定位与智能化生产的新纪元。 3D 视觉定位系统的核心技术原理 3…

uni-app之web-view组件 postMessage 通信【跨端开发系列】

&#x1f517; uniapp 跨端开发系列文章&#xff1a;&#x1f380;&#x1f380;&#x1f380; uni-app 组成和跨端原理 【跨端开发系列】 uni-app 各端差异注意事项 【跨端开发系列】uni-app 离线本地存储方案 【跨端开发系列】uni-app UI库、框架、组件选型指南 【跨端开…

数据结构 (37)外排序的基本方法

前言 外排序&#xff08;External Sorting&#xff09;是指处理那些无法完全加载到内存中的数据集时所使用的排序方法。由于数据量巨大&#xff0c;无法一次性全部放入内存&#xff0c;因此需要使用外部存储设备&#xff08;如磁盘&#xff09;来辅助排序过程。外排序的基本方法…

「Mac玩转仓颉内测版49」小学奥数篇12 - 图形变换与坐标计算

本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换&#xff0c;并学会用编程实现坐标变化。 关键词 小学奥数Python Cangjie图形变换坐标计算 一、题目描述 编写一个程序&#xff0c;模拟以下三种图形变换&a…

springboot系列--拦截器加载原理

一、拦截器加载原理 拦截器是在容器启动时&#xff0c;就创建并加载好&#xff0c;此时并未放入拦截器链中&#xff0c;只是放在一个拦截器集合当中&#xff0c;当一个请求进来之后&#xff0c;会通过匹配路径&#xff0c;查看是否有命中集合中的拦截器的拦截路径&#xff0c;如…

高通QCA-WiFi-10.4驱动源码解析文档:无线驱动开发的利器

高通QCA-WiFi-10.4驱动源码解析文档&#xff1a;无线驱动开发的利器 【下载地址】高通QCA-WiFi-10.4驱动源码解析文档分享 本仓库提供了一份高通最新的QCA-WiFi-10.4驱动源码解析文档&#xff0c;该文档对于无线驱动开发人员来说&#xff0c;是一份非常宝贵的帮助资料。通过这份…

数据结构与算法 五大算法

文章目录 1&#xff0c;时间复杂度与空间复杂度 2&#xff0c;插入排序 3&#xff0c;希尔排序 4&#xff0c;选择排序 1&#xff0c;单趟排序 2&#xff0c;选择排序PLUS版本 5&#xff0c;冒泡排序 6&#xff0c;快速排序 1&#xff0c;hoare版本 2&#xff0c;挖坑法 前言 …

数据链路层总结

- - 链路、物理链路&#xff1a;两节点间物理线路&#xff08;有线、无线&#xff09;&#xff0c;中间没有任何其他的交换节点 数据链路、逻辑链路&#xff1a; 链路 协议需要的硬件、软件 网络适配器(网卡)&#xff1a;包含物理层、数据链路层 网络适配器软件驱动程…

入门pytorch-Transformer

前言 虽然Transformer是2017年由Google推出&#xff0c;如果按照读论文只读近两年的思路看&#xff0c;那它无疑是过时的&#xff0c;但可惜的是&#xff0c;目前很多论文的核心依然是Transformer&#xff0c;或者由其进行改进的&#xff0c;故本文使用pytorch来搭建一下Trans…

PHP中GD库的使用

由于我要用到php的验证码 <?php session_start();// 生成验证码 $random_code substr(md5(uniqid(mt_rand(), true)), 0, 6);// 将验证码保存到 session 中 $_SESSION[captcha] $random_code;// 创建图片 $font 6; $image_width 100; $image_height 40;// 创建图像 $…

【OpenCV】图像转换

理论 傅立叶变换用于分析各种滤波器的频率特性。对于图像&#xff0c;使用 2D离散傅里叶变换&#xff08;DFT&#xff09; 查找频域。快速算法称为 快速傅立叶变换&#xff08;FFT&#xff09; 用于计算DFT。 Numpy中的傅立叶变换 首先&#xff0c;我们将看到如何使用Numpy查…