Linux shell编程学习笔记59: ps 获取系统进程信息,类似于Windows系统中的tasklist 命令
0 前言
系统进程信息是电脑网络信息安全检查中的一块重要内容,对于使用Linux和基于Linux作为操作系统的电脑来说,可以使用ps命令。
1 ps命令 的功能、格式和选项说明
1.1 ps命令 的功能
Linux 中的ps(意为:process status)命令用于显示当前进程的状态,类似于Windows系统中的tasklist 命令,我们可以查看系统中运行的进程信息,包括进程的ID、父进程ID、CPU和内存占用等信息,并可以根据需求进行进一步的过滤和排序。
我们可以使用命令 ps --help 来查看ps命令的帮助信息。
[purpleendurer @ bash ~ ] ps --helpUsage:ps [options]Try 'ps --help <simple|list|output|threads|misc|all>'or 'ps --help <s|l|o|t|m|a>'for additional help text.For more details see ps(1).
[purpleendurer @ bash ~ ]
1.2 ps命令的格式
ps [选项]
1.3 ps命令的选项
ps命令的选项非常多。
[purpleendurer @ bash ~ ] ps --help simpleUsage:ps [options]Basic options:-A, -e all processes-a all with tty, except session leadersa all with tty, including other users-d all except session leaders-N, --deselect negate selectionr only running processesT all processes on this terminalx processes without controlling ttysFor more details see ps(1).
[purpleendurer @ bash ~ ] ps --help listUsage:ps [options]Selection by list:-C <command> command name-G, --Group <GID> real group id or name-g, --group <group> session or effective group name-p, p, --pid <PID> process id--ppid <PID> parent process id-q, q, --quick-pid <PID>process id (quick mode)-s, --sid <session> session id-t, t, --tty <tty> terminal-u, U, --user <UID> effective user id or name-U, --User <UID> real user id or nameThe selection options take as their argument either:a comma-separated list e.g. '-u root,nobody' ora blank-separated list e.g. '-p 123 4567'For more details see ps(1).
[purpleendurer @ bash ~ ]
[purpleendurer @ bash ~ ] ps --help outputUsage:ps [options]Output formats:-F extra full-f full-format, including command linesf, --forest ascii art process tree-H show process hierarchy-j jobs formatj BSD job control format-l long formatl BSD long format-M, Z add security data (for SELinux)-O <format> preloaded with default columnsO <format> as -O, with BSD personality-o, o, --format <format>user-defined formats signal formatu user-oriented formatv virtual memory formatX register format-y do not show flags, show rss vs. addr (used with -l)--context display security context (for SELinux)--headers repeat header lines, one per page--no-headers do not print header at all--cols, --columns, --width <num>set screen width--rows, --lines <num>set screen heightFor more details see ps(1).
[purpleendurer @ bash ~ ]
[purpleendurer @ bash ~ ] ps --help threadsUsage:ps [options]Show threads:H as if they were processes-L possibly with LWP and NLWP columns-m, m after processes-T possibly with SPID columnFor more details see ps(1).
[purpleendurer @ bash ~ ]
[purpleendurer @ bash ~ ] ps --help miscUsage:ps [options]Miscellaneous options:-c show scheduling class with -l optionc show true command namee show the environment after commandk, --sort specify sort order as: [+|-]key[,[+|-]key[,...]]L show format specifiersn display numeric uid and wchanS, --cumulative include some dead child process data-y do not show flags, show rss (only with -l)-V, V, --version display version information and exit-w, w unlimited output width--help <simple|list|output|threads|misc|all>display help and exitFor more details see ps(1).
[purpleendurer @ bash ~ ]
[purpleendurer @ bash ~ ] ps --help allUsage:ps [options]Basic options:-A, -e all processes-a all with tty, except session leadersa all with tty, including other users-d all except session leaders-N, --deselect negate selectionr only running processesT all processes on this terminalx processes without controlling ttysSelection by list:-C <command> command name-G, --Group <GID> real group id or name-g, --group <group> session or effective group name-p, p, --pid <PID> process id--ppid <PID> parent process id-q, q, --quick-pid <PID>process id (quick mode)-s, --sid <session> session id-t, t, --tty <tty> terminal-u, U, --user <UID> effective user id or name-U, --User <UID> real user id or nameThe selection options take as their argument either:a comma-separated list e.g. '-u root,nobody' ora blank-separated list e.g. '-p 123 4567'Output formats:-F extra full-f full-format, including command linesf, --forest ascii art process tree-H show process hierarchy-j jobs formatj BSD job control format-l long formatl BSD long format-M, Z add security data (for SELinux)-O <format> preloaded with default columnsO <format> as -O, with BSD personality-o, o, --format <format>user-defined formats signal formatu user-oriented formatv virtual memory formatX register format-y do not show flags, show rss vs. addr (used with -l)--context display security context (for SELinux)--headers repeat header lines, one per page--no-headers do not print header at all--cols, --columns, --width <num>set screen width--rows, --lines <num>set screen heightShow threads:H as if they were processes-L possibly with LWP and NLWP columns-m, m after processes-T possibly with SPID columnMiscellaneous options:-c show scheduling class with -l optionc show true command namee show the environment after commandk, --sort specify sort order as: [+|-]key[,[+|-]key[,...]]L show format specifiersn display numeric uid and wchanS, --cumulative include some dead child process data-y do not show flags, show rss (only with -l)-V, V, --version display version information and exit-w, w unlimited output width--help <simple|list|output|threads|misc|all>display help and exitFor more details see ps(1).
[purpleendurer @ bash ~ ]
[purpleendurer @ bash ~ ] ps --help aUsage:ps [options]Basic options:-A, -e all processes-a all with tty, except session leadersa all with tty, including other users-d all except session leaders-N, --deselect negate selectionr only running processesT all processes on this terminalx processes without controlling ttysSelection by list:-C <command> command name-G, --Group <GID> real group id or name-g, --group <group> session or effective group name-p, p, --pid <PID> process id--ppid <PID> parent process id-q, q, --quick-pid <PID>process id (quick mode)-s, --sid <session> session id-t, t, --tty <tty> terminal-u, U, --user <UID> effective user id or name-U, --User <UID> real user id or nameThe selection options take as their argument either:a comma-separated list e.g. '-u root,nobody' ora blank-separated list e.g. '-p 123 4567'Output formats:-F extra full-f full-format, including command linesf, --forest ascii art process tree-H show process hierarchy-j jobs formatj BSD job control format-l long formatl BSD long format-M, Z add security data (for SELinux)-O <format> preloaded with default columnsO <format> as -O, with BSD personality-o, o, --format <format>user-defined formats signal formatu user-oriented formatv virtual memory formatX register format-y do not show flags, show rss vs. addr (used with -l)--context display security context (for SELinux)--headers repeat header lines, one per page--no-headers do not print header at all--cols, --columns, --width <num>set screen width--rows, --lines <num>set screen heightShow threads:H as if they were processes-L possibly with LWP and NLWP columns-m, m after processes-T possibly with SPID columnMiscellaneous options:-c show scheduling class with -l optionc show true command namee show the environment after commandk, --sort specify sort order as: [+|-]key[,[+|-]key[,...]]L show format specifiersn display numeric uid and wchanS, --cumulative include some dead child process data-y do not show flags, show rss (only with -l)-V, V, --version display version information and exit-w, w unlimited output width--help <simple|list|output|threads|misc|all>display help and exitFor more details see ps(1).
[purpleendurer @ bash ~ ]
ps命令的选项分为基本选项、列表选项、输出格式选项、显示线程选项和杂项五类,如下:
基本选项 | 功能 |
-A | 显示所有的进程,包括前台的、后台的、其他用户的进程,跟-e的效果相同 |
-a | 显示所有终端下除了session leaders外的所有进程(ssh登录的shell是一种session leader) |
a | 显示所有终端主机下存在的进程,包括session leaders进程 |
-d | 显示除了session leaders外的进程 |
-e | 显示所有的进程,包括前台的、后台的、其他用户的进程,跟-A的效果相同 |
-N --deselect | 否定选择 |
r | 仅显示终端主机正在执行中的程序 |
T | 显示当前终端主机下的所有程序 |
-x | 显示所有程序,不以终端机来区分。通常与 a 这个参数一起使用,可列出较完整信息 |
列表选项 | 功能 |
-C <command> | 显示命令名 |
-G --Group <GID> | 显示真实的组 ID 或名称 |
-g --group <group> | 显示会话或有效组名称 |
-p p --pid <PID> | 显示进程ID |
--ppid <PID> | 显示父进程ID |
-q q --quick-pid <PID> | 显示进程 id (快速模式) |
-s --sid <session> | 显示会话ID |
-t t --tty <tty> | 显示终端 |
-u [<UID>] u <UID> --user <UID> | 显示指定UID的有效用户的进程状态,未指定UID则显示当前用户的进程状态 |
-U <UID> --User <UID> | 显示指定UID的真实用户的进程状态 |
输出格式选项 | 功能 |
--context | 显示安全上下文(用于 SELinux) |
--cols <num> --columns <num> | 设置屏幕宽度 |
-F | |
-f | 把进程的所有信息都显示出来,包括命令行 |
f --forest | 用ASCII字符显示树状结构 |
--format <format> | 用户定义的格式 |
-H | 显示进程层次结构 |
--headers | 重复标题行,每页一行 |
-j | 作业格式 |
j | BSD 作业控制格式 |
-l | 较长、较详细的格式 |
l | BSD的长格式 |
--lines <num> | 设置屏幕高度 |
-M | 添加安全数据(适用于 SELinux) |
--no-headers | 不打印标题 |
-O <format> | 预加载默认列 |
O <format> | 与-O相似,但是具有BSD |
-o <format> o <format> | 与--format 相同,用户定义的格式 |
--rows <num> | 设置屏幕高度 |
s | 信号格式 |
u | 面向用户的格式 |
v | 虚拟内存格式 |
--width <num> | 设置屏幕宽度 |
X | 寄存器格式 |
-y | 不显示标志,显示 RSS 与 ADDR(与 -l 一起使用) |
显示线程选项 | 功能 |
H | 就好像它们是过程一样 |
-L | 可能带有 LWP 和 NLWP 列 |
-m m | 处理后 |
-T | 可能与 SPID 列 |
杂项 | 功能 |
-c | 显示调度类(与-l 选项使用) |
--cumulative | 包括一些死亡子进程数据 |
c | 显示真命令名 |
e | 命令后显示环境 |
--help <simple|list|output|threads|misc|all> | 显示帮助和退出 |
k | 将排序顺序指定为: [ + |-] key [ ,[ + |-] key [ ,... ]] |
L | 显示格式说明符 |
n | 显示数字 uid 和 wchan |
S | 包括一些死亡子进程数据,与 --cumulative 相同 |
--sort | 将排序顺序指定为: [ + |-] key [ ,[ + |-] key [ ,... ]] |
-y | 不显示标志,显示 rss (只与-l配合使用) |
-V V --version | 显示版本信息并退出 |
-w w | 无限输出宽度 |
2.进程的PID、PPID,PGID和SID
在Linux中,每个进程都有多个与之关联的 ID,包括:
2.1 进程 ID (Process ID,PID)
这是标识进程的任意数字。每个进程都有一个唯一的 ID,但在进程退出并且父进程检索到退出状态后,该进程 ID 将被释放以供新进程重用。
2.2 父进程 ID (Parent Process ID ,PPID)
这只是启动相关进程的进程的 PID。如果父进程在子进程之前退出,则子进程的 PPID 将更改为另一个进程(通常为 PID 1)。
2.3 进程组 ID (Process Group ID,PGID)
进程组领导者的 PID。如果 PID == PGID,则此进程是进程组的领导者。
2.4 会话 ID (Session ID,SID)
这只是会话领导者的 PID。如果 PID == SID,则此进程是会话领导者。
会话和进程组只是将许多相关进程视为一个单元的方法。进程组的所有成员始终属于同一会话,但一个进程可能具有多个进程组。
通常,一个 shell 就是一个会话领导者,该 shell 执行的每个命令进程都将是一个进程组。这是为了在shell退出时很容易杀死shell的子进程。
3 Linux进程的状态
linux中进程有以下几种状态:
- R——Runnable(运行):正在运行或在运行队列中等待。只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。
- S——sleeping(中断):休眠中,受阻,在等待某个条件的形成或接收到信号。处于这个状态的进程因为等待某某事件的发生(比如等待socket连接、等待信号量),而被挂起。这些进程的task_struct结构被放入对应事件的等待队列中。当这些事件发生时(由外部中断触发、或由其他进程触发),对应的等待队列中的一个或多个进程将被唤醒。
- D——uninterruptible sleep(不可中断):收到信号不唤醒和不可运行,进程必须等待直到有中断发生。与TASK_INTERRUPTIBLE状态类似,进程处于睡眠状态,但是此刻进程是不可中断的。不可中断,指的并不是CPU不响应外部硬件的中断,而是指进程不响应异步信号。绝大多数情况下,进程处在睡眠状态时,总是应该能够响应异步信号的。
- Z——zombie(僵死):进程已终止,但进程描述还在,直到父进程调用wait4()系统调用后释放。这个退出过程中,进程占有的所有资源将被回收,除了task_struct结构(以及少数资源)以外。于是进程就只剩下task_struct这么个空壳,故称为僵尸。之所以保留task_struct,是因为task_struct里面保存了进程的退出码、以及一些统计信息。而其父进程很可能会关心这些信息。比如在shell中,$?变量就保存了最后一个退出的前台进程的退出码,而这个退出码往往被作为if语句的判断条件。
- T——traced or stoppd(停止):进程收到SiGSTOP,SIGSTP,SIGTOU信号后停止运行。对于进程本身来说,TASK_STOPPED和TASK_TRACED状态很类似,都是表示进程暂停下来。
而TASK_TRACED状态相当于在TASK_STOPPED之上多了一层保护,处于TASK_TRACED状态的进程不能响应SIGCONT信号而被唤醒。只能等到调试进程通过ptrace系统调用执行PTRACE_CONT、PTRACE_DETACH等操作(通过ptrace系统调用的参数指定操作),或调试进程退出,被调试的进程才能恢复TASK_RUNNING状态。- W: 进入内存交换(从内核2.6开始无效)
- X——TASK_DEAD – EXIT_DEAD(死亡的任务-退出死亡):退出状态,进程即将被销毁。进程将被置于EXIT_DEAD退出状态,这意味着接下来的代码立即就会将该进程彻底释放。所以EXIT_DEAD状态是非常短暂的,几乎不可能通过ps命令捕捉到。
- <: 高优先级
- N: 低优先级
- L: 有些页被锁进内存
- s: 包含子进程
- \+: 位于后台的进程组
- l : 多线程,克隆线程
4 ps 命令实例
4.1 ps -A
[purpleendurer @ bash ~] ps -APID TTY TIME CMD1 pts/0 00:00:00 zsh47 pts/1 00:00:00 zsh72 pts/2 00:00:00 zsh100 pts/1 00:00:00 bash115 pts/3 00:00:00 zsh142 pts/4 00:00:00 zsh169 pts/5 00:00:00 zsh194 pts/6 00:00:00 zsh222 pts/6 00:00:00 bash237 pts/6 00:00:00 ps
[purpleendurer @ bash ~]
命令列出了10条进程信息
包括4列内容,其中:
- PID:进程ID
- TTY:与进程关联的终端,涵盖pts/0~pts/6。如果是?,就是与终端无关的进程,即后台服务,意味着它不依赖于终端。
- TIME:进程从触发开始所运行的时间
- CMD:启动进程的命令
4.2 ps -a
[purpleendurer @ bash ~] ps -aPID TTY TIME CMD100 pts/1 00:00:00 bash222 pts/6 00:00:00 bash238 pts/6 00:00:00 ps
[purpleendurer @ bash ~]
与2.1相比,命令列只出了3个进程,TTY分别为pts/1、pts/6。
4.3 ps a
[purpleendurer @ bash ~] ps aPID TTY STAT TIME COMMAND1 pts/0 Ss+ 0:00 /bin/zsh47 pts/1 Ss 0:00 /bin/zsh72 pts/2 Ss+ 0:00 /bin/zsh100 pts/1 S+ 0:00 bash115 pts/3 Ss+ 0:00 /bin/zsh142 pts/4 Ss+ 0:00 /bin/zsh169 pts/5 Ss+ 0:00 /bin/zsh194 pts/6 Ss 0:00 /bin/zsh222 pts/6 S 0:00 bash239 pts/6 R+ 0:00 ps a
[purpleendurer @ bash ~]
命令列出了10个进程 ,数量与 2.1相同,比2.2 不仅多了7个进程信息,包括了TTY值为pts/0、pts/2、pts/3、pts/4和pts/5的进程信息,而且在信息项数量上,也多了1列,即:
STAT(即:状态)。
4.4 ps -d
[purpleendurer @ bash ~ ]ps -dPID TTY TIME CMD102 pts/1 00:00:00 bash115 pts/1 00:00:00 ps
[purpleendurer @ bash ~ ]ps -aPID TTY TIME CMD102 pts/1 00:00:00 bash116 pts/1 00:00:00 ps
[purpleendurer @ bash ~ ]
从命令返回信息来看,-d 和 -a选项还是有一些差别的。
4.5 ps -f
[purpleendurer @ bash ~ ]ps -f
UID PID PPID C STIME TTY TIME CMD
csdn 47 0 0 23:24 pts/1 00:00:00 /bin/zsh
csdn 106 47 0 23:24 pts/1 00:00:00 bash
csdn 120 106 0 23:24 pts/1 00:00:00 ps -f
[purpleendurer @ bash ~ ]
返回的信息中有8列,其中多出的3列是:
- PPID :父进程ID
- C : CPU?
- STIME:进程触发的时间
通过对比PID和PPID,我们可以看出进程之间的父子衍生关系。
2.5 ps -F
[purpleendurer @ bash ~ ]ps -F
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
csdn 47 0 0 10039 5044 0 23:24 pts/1 00:00:00 /bin/zsh
csdn 106 47 0 3781 3488 0 23:24 pts/1 00:00:00 bash
csdn 119 106 0 13763 3808 0 23:24 pts/1 00:00:00 ps -F
返回信息包括11列,比 2.4 多了3列:
- SZ :进程核心映像的页面大小
- RSS:驻留空间的大小。显示当前常驻内存的程序的K字节数。
- PSR:绑定内核线程的处理器(如果有)的逻辑处理器号
4.6 ps -aux
[purpleendurer @ bash ~ ]ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
csdn 1 0.0 0.1 40356 5140 pts/0 Ss+ 00:02 0:00 /bin/zsh
csdn 46 0.0 0.1 40156 4956 pts/1 Ss+ 00:02 0:00 /bin/zsh
csdn 70 0.0 0.1 40156 5024 pts/2 Ss+ 00:02 0:00 /bin/zsh
csdn 98 0.0 0.1 40156 4888 pts/3 Ss+ 00:13 0:00 /bin/zsh
csdn 123 0.0 0.1 40156 5016 pts/4 Ss+ 00:13 0:00 /bin/zsh
csdn 152 0.0 0.1 40156 5044 pts/5 Ss 00:24 0:00 /bin/zsh
csdn 177 0.0 0.1 40156 4944 pts/6 Ss+ 00:24 0:00 /bin/zsh
csdn 205 0.0 0.0 15124 3404 pts/5 S 00:24 0:00 bash
csdn 219 0.0 0.1 55052 3912 pts/5 R+ 00:26 0:00 ps -aux
[purpleendurer @ bash ~ ]
返回的信息共有11列,其中:
- %CPU : 进程的cpu占用率
- %MEM: 进程使用内存的百分比
- VSZ : 进程使用的虚拟内存大小,以K为单位
4.7 ps -ef
[purpleendurer @ bash ~ ]ps -ef
UID PID PPID C STIME TTY TIME CMD
csdn 1 0 0 00:02 pts/0 00:00:00 /bin/zsh
csdn 46 0 0 00:02 pts/1 00:00:00 /bin/zsh
csdn 70 0 0 00:02 pts/2 00:00:00 /bin/zsh
csdn 98 0 0 00:13 pts/3 00:00:00 /bin/zsh
csdn 123 0 0 00:13 pts/4 00:00:00 /bin/zsh
csdn 152 0 0 00:24 pts/5 00:00:00 /bin/zsh
csdn 177 0 0 00:24 pts/6 00:00:00 /bin/zsh
csdn 205 152 0 00:24 pts/5 00:00:00 bash
csdn 218 205 0 00:24 pts/5 00:00:00 ps -ef
[purpleendurer @ bash ~ ]
相关文章:

Linux shell编程学习笔记59: ps 获取系统进程信息,类似于Windows系统中的tasklist 命令
0 前言 系统进程信息是电脑网络信息安全检查中的一块重要内容,对于使用Linux和基于Linux作为操作系统的电脑来说,可以使用ps命令。 1 ps命令 的功能、格式和选项说明 1.1 ps命令 的功能 Linux 中的ps(意为:process status&…...

在Android中使用ProgressBar显示进度
在Android中使用ProgressBar显示进度 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Android应用中使用ProgressBar来显示进度。ProgressB…...

Java基础面试题(简单版):
1.java的8个基本数据类型? 整型: byte(占用1个字节) short(占用2个字节) int(占用4个字节) long(占用8个字节) 浮点型: float(占用4个字节)、double(占用8个字节) 字符型: char 布尔型: boolean 2.ArrayList和LinkedList的区别? 可以说ArrayList和LinkedList除了是同属于集合…...

Chrome插件:Postman Interceptor 调试的终极利器
今天给大家介绍一款非常实用的工具——Postman Interceptor。 这个工具可以捕捉任何网站的请求,并将其发送到Postman客户端。 对于经常和API打交道的程序员来说,Postman Interceptor真的是神器级别的存在。 下面就让我详细说说这个插件怎么用…...

SpringBoot学习04-[定制SpringMVC]
定制SpringMVC 定制SpringMvc的自动配置定制springmvc-configurePathMatch配置定制SpringMVC-拦截器Interceptor定制SpringMVC-CORS配置全局cors配置针对某个方法加跨域解决 WebMvcConfigurer原理定制SpringMVC-JSONJSON开发jackson的使用定制化json序列化和反序列化 JSON国际化…...

QT拖放事件之六:自定义MIME类型的存储及读取demo
1、MIME类型描述 MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的标准,用来表示文档、文件或字节流的性质和格式。 MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。 浏览器通常使用 MIME 类型(而不是文件扩展名)来确定如何处理URL…...

架构师必知的绝活-JVM调优
前言 为什么要学JVM? 首先:面试需要 了解JVM能帮助回答面试中的复杂问题。面试中涉及到的JVM相关问题层出不穷,难道每次面试都靠背几百上千条面试八股? 其次:基础知识决定上层建筑 自己写的代码都不知道是怎么回事&a…...

小米平板6系列对比
小米平板6系列目前有4款,分别为6、6 Pro、6 Max、6S Pro。具体对比如下表所示。 小米平板型号66 Pro6 Max6S Pro实物图发布时间2023年4月21日2023年4月21日2023年8月14日2024年2月22 日屏幕大小11英寸11英寸14英寸12.4英寸分辨率2.8K2.8K2.8K3K刷新率144Hz144Hz120…...

用 Rust 实现一个替代 WebSocket 的协议
很久之前我就对websocket颇有微词,它的确满足了很多情境下的需求,但是仍然有不少问题。对我来说,最大的一个问题是websocket的数据是明文传输的,这使得websocket的数据很容易遭到劫持和攻击。同时,WebSocket继承自HTTP…...

【docker】2. 编排容器技术发展史(了解)
该篇文章介绍的主要是编排以及容器技术的发展史(了解即可),如果想单纯学习docker命令操作可直接略过!!! 容器技术发展史 Jail 时代 容器不是一个新概念或者新技术,很早就有了,只是近几年遇到了云计算&am…...

吉利银河L6(官方小订送的3M) 对比 威固vk70+ks15
吉利送的号称价值2000的3M效果 撕膜重贴 威固vk70ks15 之后的效果 // 忘记测反射的热量了 可以验证金属膜是反射热而不是吸热 金属膜 手机GPS还能用吗 亲测 能用 太阳能总阻隔率 3M貌似20%出头 威固前档55% 侧后挡高一点不超过60% 夏天真实太阳发热能量 即阻隔率55%到60% …...

three.js实现雪花场景效果
点击获取雪花图片素材 提取码:lywa // 雪花效果 import * as THREE from "three" export function getsnowEffect(th) {console.log(th, th) // this 场景var that th// 创建一个BufferGeometry对象,用于存储顶点数据 const geometry new THREE.Buffe…...

鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一
一、鸿蒙开发环境搭建 DevEco Studio安装 下载 访问官网:https://developer.huawei.com/consumer/cn/deveco-studio/选择操作系统版本后并注册登录华为账号既可下载安装包 安装 建议:软件和依赖安装目录不要使用中文字符软件安装包下载完成后࿰…...

Elasticsearch优化索引映射和设置
在Elasticsearch的世界中,优化索引的映射(mapping)和设置(settings)对于提高搜索性能、存储效率和系统稳定性至关重要。本文将带您深入了解如何针对Elasticsearch的索引进行优化,帮助您构建更高效、更可靠的…...

boss直聘招聘数据可视化分析
boss直聘招聘数据可视化分析 一、数据预处理二、数据可视化三、完整代码一、数据预处理 在 上一篇博客中,笔者已经详细介绍了使用selenium爬取南昌市web前端工程师的招聘岗位数据,数据格式如下: 这里主要对薪水列进行处理,为方便处理,将日薪和周薪的数据删除,将带有13薪…...

小程序人脸分析
公司的业务需求是用户在使用某个功能前,必须使用人脸识别,确保当前使用人是用户本人,防止某些功能乱用。后端用的是腾讯的人脸识别方案,这里只是前端的识别代码,保证人脸剧中,大小合适,有一个人…...

UML建模笔记
5个视图 设计。类,接口,对象如何协作。实现。组件,运行程序,文档关系。用例。用户功能期望。进程。并发与同步相关进程,线程。部署。部署到计算机。 建模目的 和客户共创追踪需求变更协同开发进度控制持续迭代测试生…...

初见SpringCloud ing
Consul 服务注册与发现 服务注册与发现 服务注册:微服务在启动时,会将自己的信息(如 IP 地址、端口、服务名称等)注册到 Consul。 服务发现:其他微服务可以通过 Consul 查询到已注册的服务,并通过这些信息…...

Python | Leetcode Python题解之第198题打家劫舍
题目: 题解: class Solution:def rob(self, nums: List[int]) -> int:if not nums:return 0size len(nums)if size 1:return nums[0]first, second nums[0], max(nums[0], nums[1])for i in range(2, size):first, second second, max(first nu…...

什么是中断?---STM32篇
目录 一,中断的概念 二,中断的意义 三,中断的优先级 四,中断的嵌套 如果一个高优先级的中断发生,它会立即打断当前正在处理的中断(如果其优先级较低),并首先处理这个高优…...

51单片机第1步_putchar()和_getkey()应用
没有开发板,没有烧录器,没有学习场所,如何学习写51单片机的程序?除了采用软件模拟仿真,没有更好的方法,因此,使用串口是学习的第一步。 1、_getkey ()函数 在C:\Keil\C51\LIB中有一个叫GETKEY…...

微信小程序中的地图的使用
微信小程序中的地图组件 是一个用于展示地图的组件,提供了丰富的功能和配置选项,可以实现定位、标记、路线规划等多种地图相关的交互。下面是对这个组件的详细介绍,包括属性、事件以及示例代码。 组件属性 基础属性 longitude: 地图中心的经…...

MySQL root密码丢失处理
没有记住MySQL数据库root用户默认密码(为初始化安装mysql时默认生成) 1)修改/etc/my.cnf文件,在[mysqld]的段中加上一句:skip-grant-tables 重启mysql服务 [root@localhost ~]# service mysqld restart 2)以无密码方式进入mysql: [root@localhost ~]# /usr/local/my…...

RabbitMQ中java实现队列和交换机的声明
java实现队列和交换机的声明 在之前我们都是基于RabbitMQ控制台来创建队列、交换机。但是在实际开发时,队列和交换机是程序员定义的,将来项目上线,又要交给运维去创建。那么程序员就需要把程序中运行的所有队列和交换机都写下来,…...

解决SPA(单页应用)首屏加载速度慢
SPA是目前流行的前端开发模式,相对于传统的多页面用户体验更好,操作更顺畅,开发效率也更高。但是SPA首屏加载速度慢一直是个致命的问题,由于SPA应用首次打开需要一次性加载大量的静态资源,这就导致了加载速度慢的问题&…...

ElementUI框架搭建及组件使用
前言: 当开始使用ElementUI框架来搭建网站或Web应用程序时,了解框架的基本结构和组件的使用是至关重要的。ElementUI是一个基于Vue.js的框架,提供了丰富的UI组件和工具,可以帮助开发人员快速构建现代化的用户界面。 在本文中,我…...

同三维T908转换器 SDI转DVI/HDMI/VGA/色差分量/AV转换器
同三维T908转换器 SDI转DVI/HDMI/VGA/色差分量/AV转换器 1路SDI进,1路DVI(可转HDMI/VGA/色差分量/AV)3.5音频1路SDI出,可以支持音频解嵌,也可把3.5音频加嵌转换输出,输出分辨率可调,支持图像翻转180度 一、产品简介 SDI转万能转…...

【设计模式】【创建型5-5】【原型模式】
文章目录 原型模式代码示例 原型模式 代码使用:spring框架里 bean的作用域 用途,以原型为模板,源源不断的创建(克隆 clone)对象。当直接创建对象的代价比较大时,则采用这种模式。 代码示例 public class…...

原子变量原理剖析
一、原子操作 原子操作保证指令以原子的方式执行,执行过程不被打断。先看一个实例,如下所示,如果thread_func_a和thread_func_b同时运行,执行完成后,i的值是多少? // test.c static int i 0;void thread…...

WebSocket走私实践(附赠LiveGBS监控系统未授权管理员密码重置)
WebSocket走私实践(附赠LiveGBS监控系统未授权管理员密码重置) 对此,我特别感谢TryHackMe和HackTheBox academy,永远相信和追随英国TryHackMe所教导的网络安全知识,并保持学习 WebSocket走私相关的知识在这里 前段时间学习过htt…...