Day26-进程管理核心知识2

Day26-进程管理核心知识2

  • 1. top选项介绍
  • 2. 进程的三个杀手。
    • 2.1 kill
    • 2.2 killall 通过进程名字 kill processes by name
    • 2.3 pkill 通过进程名称(完整名称)
  • 3. screen命令
  • 4. 什么是进程优先级?
  • 5. strace:跟踪进程的系统调用 *

1. top选项介绍

【语法格式】top [选项]
参数选项 解释说明(都不重要)

-b	以批处理模式显示进程信息,输出结果可以传递给其他程序或写入到文件中。
-c	显示进程的整个命令路径,而不是只显示命令名称
-d	指定每两次屏幕信息刷新之间的时间间隔(top -d 1)
-n	top输出信息更新的次数,完成后将退出top命令
-p	显示指定的进程信息(top -p 进程号)
-u   指定用户的进程(搭建集群的时候可能会把程序跑在普通用户下)

1)指定pid查看进程

[root@oldboy ~]# pgrep sshd
1374
1641
13003
[root@oldboy ~]# top -p 1374

2)指定用户查看进程

[root@oldboy ~]# top -u oldboy
top - 21:58:42 up 4 days, 23:33,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 107 total,   1 running, 106 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4026136 total,   190492 free,   229320 used,  3606324 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  3522556 avail Mem PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND             79410 oldboy    20   0  116588   2960   1656 S  0.0  0.1   0:00.01 bash                79435 oldboy    20   0    4364    352    280 S  0.0  0.0   0:00.00 sleep 

3)间隔1秒刷新,一共2次,然后写到文件里

top -d 1 -b -n 2 > top.txt

然后用awk取列,然后sort排序。

4)top -a 显示程序全路径

企业面试:输入top命令以后,想看服务器有几个CPU核心?
答:按1键。

load average 平均负载 * *

2. 进程的三个杀手。

1)kill 通过发送信号,通过PID杀掉进程
2)killall 通过进程名字
3)pkill 通过进程名称(完整名称)

2.1 kill

kill 终止你希望停止的进程。
-l 列出全部的信号名称
-s 指定要发送的信号※

什么是信号?
kill命令发给操作系统,让操作系统去执行的一个指令.

[root@oldboy ~]# kill -l1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP6) 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	

常见信号列表:

数字信号		信号别名		作用
1 HUP		    挂起信号        往往可以让进程重新配置,重新加载
2 INT		    中断信号,起到结束进程的作用,和ctrl+c的作用一样
3 QUIT		    让进程退出,结果是进程退出
9 KILL		    直接结束进程,不能被进程捕获(强制杀死,慎用)
15	TERM		进程终止,这是默认信号
18	CONT		被暂停的进程将继续恢复运行
19	STOP		暂停进程
20	TSTP		用户停止请求,作用类似于ctrl+z 把进程放到后台并暂停 #后台挂起

环境测试:

[root@oldboy ~]# rpm -qa vsftpd
vsftpd-3.0.2-27.el7.x86_64
[root@oldboy ~]# yum install -y vsftpd

软件名:vsftpd FTP服务,连接用21,数据端口20

[root@oldboy ~]# systemctl start vsftpd
[root@oldboy ~]# netstat -lntup|grep vsftp
tcp6       0      0 :::21       :::*        LISTEN      66822/vsftpd  

默认不加参数关闭vsftpd

[root@oldboy ~]# pgrep vsftpd
66822
[root@oldboy ~]# kill 66822
[root@oldboy ~]# pgrep vsftpd

kill杀不死的时候
可以用kill -9 进程名 #强制杀

生产经验:
1.强制杀,导致服务起不来。一般不要操作,宁愿等一会。
2.数据服务不能强杀, mysql,oracle,mongodb(数据库里,磁盘上有自己的文件系统),千万别强杀。
3.非数据服务可以强杀,nginx,vsftpd(数据在磁盘上)

[root@oldboy ~]# kill -9 `pgrep vsftpd`
[root@oldboy ~]# pgrep vsftpd

改配置文件不重启,直接生效
1 HUP 挂起信号 往往可以让进程重新配置,重新加载
kill -1 进程ID

发送重启信号,例如 vsftpd 的配置文件发生改变,希望重新加载

[root@oldboyedu ~]# kill -1 9160

发送停止信号,vsftpd 服务有停止的脚本 systemctl stop vsftpd
模拟ctrl+z快捷键,暂停进程并放入后台。

[root@oldboy ~]# kill -20 79658
[oldboy@oldboy ~]$ sleep 100
[1]+  Stopped                 sleep 100

继续运行

[oldboy@oldboy ~]$ bg 1
[1]+ sleep 100 &

NGINX 有关KILL生产经验:
启动nginx服务(需要提前编译)

[root@oldboy ~]# /application/nginx/sbin/nginx 
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()

查看80端口是什么服务?

[root@oldboy ~]# lsof -i :80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   74537   root    6u  IPv4 397649      0t0  TCP *:http (LISTEN)
nginx   74538 nobody    6u  IPv4 397649      0t0  TCP *:http (LISTEN)
[root@oldboy ~]# netstat -lntup|grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      74537/nginx: master 

netstat参数
-l 监听
-n 数字显示
-t tcp
-u udp
-p 进程名

nginx服务有关kill信号:

1、测试配置文件是否有异常:

/application/nginx/sbin/nginx -t

2、启动:

/application/nginx/sbin/nginx

3、指定配置文件启动:

/application/nginx/sbin/nginx -c /application/nginx/conf/nginx.conf

重点:
4、重新打开日志:

kill -USR1 `cat /application/nginx/logs/nginx.pid` #进程号

5、发送【平滑】升级信号:

(银行服务:17点下班了,没有进去的不能进,已经进去的继续服务)

kill -USR2 `cat /application/nginx/logs/nginx.pid`

6、平缓停止worker process

 kill -WINCH `cat /application/nginx/logs/nginx.pid.oldbin`

7、停止老的进程

kill -QUIT `cat /application/nginx/logs/nginx.pid.oldbin`

生产经验:
判断进程是否存在方法1:

kill -0 pid  #是不发送关闭停止信号,但是会检查进程是否存在。

生产用途:检查进程是否存在。实际应用,mysql服务关闭的时候。
kill PID
以后学习shell脚本开发,关闭服务的时候,就可以用kill -0
如果vsftpd存在则输出1,否则输出0

[root@oldboy ~]# kill -0 `pgrep vsftpd` 2>/dev/null && echo 1||echo 0
1

杀掉vsftpd

[root@oldboy ~]# killall vsftpd

检查

[root@oldboy ~]# kill -0 `pgrep vsftpd` 2>/dev/null && echo 1||echo 0
0
[root@oldboy ~]# pgrep vsftpd

判断进程是否存在方法2:

[root@oldboy ~]# pgrep vsftpd &>/dev/null&&echo 1||echo 0
1
[root@oldboy ~]# killall vsftpd
[root@oldboy ~]# pgrep vsftpd &>/dev/null&&echo 1||echo 0
0

2.2 killall 通过进程名字 kill processes by name

killall 进程名
连着执行直到看到后面提示no process found

[root@oldboy ~]# killall nginx
[root@oldboy ~]# killall nginx
nginx: no process found

killall -9 进程名
killall -u 用户
问题:杀死很慢。。不断重复执行

2.3 pkill 通过进程名称(完整名称)

pkill [选项] [进程名]
-t 终端 杀死指定终端进程※
-u 用户 杀死指定用户的进程※

[root@oldboy ~]# pgrep vsftpd &>/dev/null&&echo 1||echo 0
0
[root@oldboy ~]# systemctl start vsftpd
[root@oldboy ~]# pgrep vsftpd &>/dev/null&&echo 1||echo 0
1
[root@oldboy ~]# pkill vsftpd  #杀进程名
[root@oldboy ~]# pgrep vsftpd &>/dev/null&&echo 1||echo 0
0
[root@oldboy ~]# ps -ef|grep vsftp
root      79996   1645  0 23:46 pts/0    00:00:00 grep --color=auto vsftp
[root@oldboy ~]# ps -ef|grep vsftp|grep -v grep|wc -l
0
[root@oldboy ~]# systemctl start vsftpd
[root@oldboy ~]# ps -ef|grep vsftp|grep -v grep|wc -l
1
[root@oldboy ~]# ps -ef|grep vsftp|grep -v grep      
root      80008      1  0 23:46 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

指定用户:

[root@oldboy ~]# pkill -u oldboy crond
[root@oldboy ~]# 
[root@oldboy ~]# pkill -u oldboy crond

-t 终端 杀死指定终端进程※

[root@oldboy ~]# pkill -t pts/1[oldboy@oldboy ~]$ bg 1
Session terminated, killing shell... ...killed.

重点总结:

pkill   进程名  #一次杀死
killall 进程名  #多次。-9 强杀 会引起服务起不来-u 用户
kill    PID          #默认不会引起服务起不来。
kill    -HUP  PID    #平滑重启(重新加载配置。)
kill    -0   PID     #检查进程是否存在。实际应用,mysql服务关闭的时候。
kill    -9   PID     #强杀   #可能会引起服务起不来
sed -i.bak 's#worker_processes  1;#worker_processes  16;#g' /application/nginx/conf/nginx.conf|grep work

批量杀进程

ps -ef|grep nginx|awk '{print $2}'|sed -r 's#(.*)#kill \1#g'|bash

【进程前后台切换】

  1. 为什么要学习进程前后台切换?
    1)远程拷贝大文件,持续时间长的操作。
    ​ 为了防止中断,一般要放在后台运行。
    ​ 2)有些进程需要定时执行
    ​ 3)需要一直运行(守护进程)。
  2. 命令或操作
    ctrl+z 暂停当前进程。
    bg 放入后台。
    fg 拿回前台。
    jobs 查看当前队列,含ID。

人工执行的程序,前后台切换

  1. 启动命令(默认放后台),加参数放到后台。
  2. shell脚本(命令)放后台

kill %id

睡觉:
sleep 1 #数字秒数,1秒
usleep 1000 #微秒,1毫秒

shell脚本(命令)放后台

方法2:使用&符号。

sleep 200 & #放后台运行,脚本或命令要全路径。

nohup:用户退出系统进程继续工作

【功能说明】
nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行程序的输出信息将不会显示到终端。
无论是否将nohup命令的输出重定向到终端,输出都将写入到当前目录的nohup.out 文件中。
如果当前目录的nohup.out文件不可写,输出重定向到$HOME/nohup.out文件中。
企业应用:

nohup 路径/shell脚本 &

方法3:screen
总结:让程序进入后台运行方法

  1. ctrl+z,jobs,fg,bg前台的程序,进入后台,后台运行 ##临时用
  2. 使用screen (推荐) ##管理员常用,下班了想回家,xshell有没有执行完的任务。
  3. 使用&符号 ##后台运行脚本常用

3. screen命令

作用:保持操作过的窗口连接状态。

1.安装

[root@oldboy ~]# yum install screen -y

2.开启一个screen窗口,指定名称

[root@oldboy ~]# screen -S sleep

3.在screen窗口中执行任务即可

while true;do echo oldboy >>/tmp/oldboy.log;sleep 1;done

#每隔一秒向/tmp/oldboy.log追加oldboy

4.平滑的退出screen,但不会终止screen中的任务。

ctrl+a+d

注意: 如果使用exit 才算真的关闭screen窗口

5.关闭xshell模拟下班回家,

第二天重开xshell连接。

查看当前正在运行的screen有哪些

[root@oldboy ~]# screen -list
There is a screen on:22058.sleep    (Detached)
1 Socket in /var/run/screen/S-root.

6.此时需要进入昨晚的会话,进入正在运行的screen

[root@oldboy ~]# screen -r sleep
[root@oldboy ~]# screen -r 22058

常用screen参数

screen -S yourname    #新建一个叫yourname的session
screen -ls            #列出当前所有的session
screen -r yourname    #回到yourname这个session
screen -d yourname    #远程detach某个session
screen -d -r yourname #结束当前session并回到yourname这个session

重点总结:

1.创建screen 创建

screen 或 screnn -S 窗口名称

2.退出窗口

ctrl+a+d

3.显示当前所有screen窗口

screen -ls

4.恢复,重新进入

screnn -r id

4. 什么是进程优先级?

进程执行时候是排队执行的,需要插队,要调整。
进程重要性高,需要优先多分配CPU。调整优先级。

#%1 #记住用途
nice: 调整【程序运行时】的优先级
renice:调整【运行中的进程】的优先级

区别:
nice命令常用于修改未运行的程序再运行时的优先级,
但是对于正在运行的进程,若想要修改优先级,就需要用到renice命令。

5. strace:跟踪进程的系统调用 *

系统调用:系统为应用程序提供的连接接口
进程执行:调用很多接口。。

为什么要跟踪进程的系统调用?
查找进程执行异常的原因:
PHP进程,JAVA进程,cpu%100,怎么排查?
进程执行:调用很多接口,接口如果异常,进程就会不正常。。

strace是Linux环境下的一款程序调试工具,用来检查一个应用程序所使用的系统调用及它所接收的系统信息。strace会追踪程序运行时的整个生命周期,输出每一个系统调用的名字、参数、返回值和执行消耗的时间等,是高级运维和开发人员的排查问题的杀手锏

-p pid	指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可※
-f	    跟踪目标进程,以及目标进程创建的所有子进程※
-tt	    在输出中的每一行前加上时间信息,精确到微秒。例子:11:18:59.759546※

范例1:排查Nginx 403 forbidden错误。

[root@LNMP ~]# strace -tt -f /application/nginx/sbin/nginx  

范例2:只跟踪和文件操作有关的系统调用。

范例1的命令结果输出太多了,很容易看花眼,因此可以使用过滤器,过滤掉无关信息,比如只查看文件操作信息。

[root@LNMP ~]# strace -tt -f -e trace=file /application/nginx/sbin/nginx  #<==-e trace=file的作用为只跟踪和文件操作有关的系统调用。
[root@oldboy ~]# strace -tt  -p 80008

范例3:跟踪系统调用统计。
strace不仅能追踪系统调用,使用选项-c还能将进程所有的系统调用做一个统计分析。

[root@LNMP ~]# strace -c /application/nginx/sbin/nginx  #<==使用-c参数给进程所有的系统调用做一个统计分析。

使用-o选项将strace的结果输出到文件中

strace -c -o tongji.log /application/nginx/sbin/nginx

小结:strace命令很适合程序僵尸、命令执行报错等的问题,如果从程序日志和系统日志中看不出问题出现的原因,就可以strace一下,也许有答案,不过也需要使用者有足够的耐心去查看输出!

案例1:给/etc/passwd加锁,然后用strace追踪。

[root@oldboy ~]# chattr +i /etc/passwd
[root@oldboy ~]# strace -f useradd abc

发现问题:无法打开/etc/passwd

open("/etc/passwd", O_RDWR|O_NOCTTY|O_NONBLOCK|O_NOFOLLOW) = -1 EACCES (Permission denied)
write(2, "useradd: cannot open /etc/passwd"..., 33useradd: cannot open /etc/passwd

企业案例:PHP进程CPU百分百了。请问你怎么解决?
1)pgrep 进程,获取进程号
2)strace -p 进程号 发现问题。

用户案例:
链接: https://blog.csdn.net/msllws/article/details/107090542

strace关键词。

参数选项解释说明 (带*的为重点)
-c统计每一系统调用的所执行的时间,次数和出错的次数等
-d输出strace关于标准错误的调试信息
-f跟踪目标进程,以及目标进程创建的所有子进程*****
-ff如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号
-i输出系统调用的入口指针
-q禁止输出关于脱离的消息
-r输出每一个系统调用的相对时间
-t在输出中的每一行前加上时间信息。例子: 16:45:28
-tt在输出中的每一行前加上时间信息,精确到微秒。例子: 11:18:59.759546*****
-T显示每次系统调用所花费的时间
-ofilename 将strace的输出写入文件filename*****
-ppid 指定要跟踪的进程pid,要同时跟踪多个pid,重复多次-p选项即可*****
-sstrsize 指定输出的字符串的最大长度,默认为32。文件名没有被视为字符串,默认全部输出
-uusername 以username的UID和GID执行被跟踪的命令

-e expr 输出过滤器,通过表达式,可以过滤掉你不想要的输出
expr是一个表达式,用来控制如何跟踪:[qualifier=][!]value1[,value2]…

说明:
1、qualifier只能是trace,abbrev,verbose,raw,signal,read,write其中之一
2、value是用来限定的符号或数字
3、默认的qualifier是trace
4、感叹号是否定符号

例如:
-e open等价于 -e trace=open,表示只跟踪open调用
而-e trace!=open表示跟踪除了open以外的其他调用

常见选项:

参数选项解释说明
-e trace=[set]只跟踪指定的系统调用
-e trace=file只跟踪和文件操作有关的系统调用*****
-e trace=process只跟踪和进程控制有关的系统调用
-e trace=network只跟踪和网络有关的系统调用
-e trace=signal只跟踪和系统信号有关的系统调用
-e trace=desc只跟踪和文件描述符有关的系统调用
-e trace=ipc只跟踪和进程通讯有关的系统调用
-e abbrev=[set]设定strace输出的系统调用的结果集
-e raw=[set]将指定的系统调用的参数以十六进制显示
-e signal=[set]指定跟踪的系统信号
-e read=[set]输出从指定文件中读出的数据
-e write=[set]输出写入到指定文件中的数据

企业生产经验:
资源不够用:网站运行慢。

  1. 没有给充足资源。
    上线前压测,提前测出来承受能力。
    提前预警。70% 预警时间是(资源增加的最长周期+当下百分比<80%)。
  2. 开发代码上线,BUG异常消耗资源,导致100%
    strace,gdb.后知后觉。
  3. 公司推广部门(合作广告),大流量过来,广告页(CDN),(提前准备)。
    运维感受到的:服务器流量增加,压力增大,CPU ,内存,磁盘都压力很大了。
    所有和网站相关的部门,开发,运维、运营、市场,客服(查询 离线查询,和生产用户访问库,分开)
    对于外部用户,检测,根据趋势预判。

top
ps
pstree
pgrep
kill
killall
pkill
strace
ltrace
bg
fg
jobs
kill %
screen
nohup
&
lsof
netstat
nice命令常用于修改未运行的程序再运行时的优先级
renice调整【运行中的进程】的优先级
uptime
w

ltrace:跟踪进程调用库函数
ltrace 能够跟踪进程的库函数调用,它会显现出哪个库函数被调用,而strace则是跟踪进程的每个系统调用。

参数选项 解释说明(带※的为重点)
-c 统计库函数每次调用时间,最后程序退出时打印摘要
-C 解码低级别名称(内核级)为用户级名称
-d 打印调试信息
-e expr 输出过滤器,通过表达式,可以过滤掉你不想要的输出※
-e printf 表示只查看printf函数调用
-e !printf 表示查看除printf函数以外的所有函数调用
-f 跟踪子进程
-o filename 将ltrace的输出写入文件filename
-p pid 指定要跟踪的进程pid※
-r 输出每一个调用的相对时间
-S 显示系统调用
-t 在输出中的每一行前加上时间信息。例子:16:45:28
-tt 在输出中的每一行前加上时间信息,精确到微秒。例子:11:18:59.759546
-ttt 在输出中的每一行前加上时间信息,精确到微秒,而且时间表示为unix时间戳。
例子:1486111461.650434
-T 显示每次调用所花费的时间
-u username 以username 的UID和GID执行被跟踪的命令

ltrace -o nginx.log /application/nginx/sbin/nginx

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

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

相关文章

【C++】函数入参 值传递和引用传递,与C语言的区别

在 C 中&#xff0c;函数的参数传递有值传递和引用传递两种方式。当函数的参数是 vector 类型时&#xff0c;可以选择使用 vector 或 vector& 作为参数类型&#xff0c;两者各有优劣&#xff1a; vector vect1&#xff1a;这种方式使用了值传递&#xff0c;即在函数调用时…

自学高效备考2025年AMC8数学竞赛:2000-2024年AMC8真题解析

今天继续来随机看五道AMC8的真题和解析&#xff0c;根据实践经验&#xff0c;对于想了解或者加AMC8美国数学竞赛的孩子来说&#xff0c;吃透AMC8历年真题是备考最科学、最有效的方法之一。即使不参加AMC8竞赛&#xff0c;吃透了历年真题600道和背后的知识体系&#xff0c;那么小…

Dism修复Windows出错(错误代码0x800f081f,找不到源文件)的解决方法

一、环境 系统&#xff1a;Windows 10 二、Dism修复步骤 注&#xff1a;以下操作都需要管理员权限。修复过程需要联网。 2.1 dism扫描全部系统文件 DISM /Online /Cleanup-image /Scanhealth如果结果是“未检测到组件存储损坏 ”&#xff0c;说明完好&#xff0c;可以退出…

Maven终端命令生成Spring-boot项目并输出“helloworld“

1. 生成项目 mvn archetype:generate填写groupId和artifactId&#xff0c;其余默认即可 2. 修改pom.xml文件 将如下内容放入pom.xml文件内 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artif…

Conda笔记--移动Conda环境后pip使用异常的解决

1--概述 由于各种原因&#xff0c;需要将Anaconda转变为Minicoda&#xff0c;为了保留之前安装的所有环境&#xff0c;直接将anaconda3/envs的所有环境拷贝到Miniconda/envs中&#xff0c;但在使用移动后环境时会出现pip的错误&#xff1a;bad interpreter: No such file or di…

计算机网络-物理层-传输媒体

传输媒体的分类 导向型-同轴电缆 导向型-双绞线 导向型-光纤 非导向型

面试问答总结之Java进阶

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;注解Annotaion &#xff08;java标注&#xff09;&#x1f415;内置注解&#x1f415;元注解 &#x1f380;对象克隆&#x1f415;如何实现克隆&#x1f415;如何实现深克…

Vue3教程

1.1 配置环境 vue官网&#xff1a; Vue.js - The Progressive JavaScript Framework | Vue.js 终端 Linux和Mac上可以用自带的终端。 Windows上推荐用powershell或者cmd。Git Bash有些指令不兼容。 安装Nodejs 安装地址&#xff1a; Node.js 安装vue/cli 打开Git Bash&#x…

C#,最小代价多边形三角剖分MCPT(Minimum Cost Polygon Triangulation)算法与源代码

1 最小代价多边形三角剖分算法 凸多边形的三角剖分是通过在非相邻顶点&#xff08;角点&#xff09;之间绘制对角线来形成的&#xff0c;这样对角线就不会相交。问题是如何以最小的代价找到三角剖分的代价。三角剖分的代价是其组成三角形的权重之和。每个三角形的重量是其周长…

293.【华为OD机试】剩余银饰的重量(模拟和贪心算法JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…

LLM春招准备(1)

llm排序 GPT4V GPT-4V可以很好地理解直接绘制在图像上的视觉指示。它可以直接识别叠加在图像上的不同类型的视觉标记作为指针&#xff0c;例如圆形、方框和手绘&#xff08;见下图&#xff09;。虽然GPT-4V能够直接理解坐标&#xff0c;但相比于仅文本坐标&#xff0c;GPT-4V在…

蓝桥杯练习题——dp

五部曲&#xff08;代码随想录&#xff09; 1.确定 dp 数组以及下标含义 2.确定递推公式 3.确定 dp 数组初始化 4.确定遍历顺序 5.debug 入门题 1.斐波那契数 思路 1.f[i]&#xff1a;第 i 个数的值 2.f[i] f[i - 1] f[i - 2] 3.f[0] 0, f[1] 1 4.顺序遍历 5.记得特判 …

Web前端---表格和表单

1.表格概述 表格标记&#xff1a;<table></table> 表格标题标记&#xff1a;<caption></caption> 表头&#xff1a;<th></th>------heading 行标记&#xff1a;<tr></tr>-----r是row 列标记&#xff1a;<td></t…

数据可视化原理-腾讯-散点图

在做数据分析类的产品功能设计时&#xff0c;经常用到可视化方式&#xff0c;挖掘数据价值&#xff0c;表达数据的内在规律与特征展示给客户。 可是作为一个产品经理&#xff0c;&#xff08;1&#xff09;如果不能够掌握各类可视化图形的含义&#xff0c;就不知道哪类数据该用…

快速搭建Vue前端框架

快速搭建Vue前端框架 安装Vue Vue官方安装过程:https://cli.vuejs.org/zh/guide/installation.html 二.创建Vue工程 2.2 安装淘宝镜像 安装淘宝镜像&#xff08;会让你安装Vue的速度加快&#xff09;&#xff1a; npm config set registry https://registry.npm.taobao.or…

CMU 10-414/714: Deep Learning Systems --hw0

hw0 宏观上的步骤: softmax loss: 实现softmax loss代码 概念 softmax就是将结果映射到0~1之间,且所有结果相加为1(概率形式)cross-entropy loss就是计算 p ( x ) log ⁡ q ( x ) p(x)\log {q(x)} p(x)logq(x),此值可用于衡量实际输出与期望输出的距离,进而衡量预测模…

Qt 实现橡皮擦拭显示图片

1.简介 在一些游戏中看见类似解密破案的效果&#xff0c;使用手触摸去擦拭图片上的灰尘&#xff0c;然后显示最终的图片&#xff0c;所以也想试试Qt实现的效果。大家有自己想做的效果&#xff0c;都可以尝试。 以下是效果展示图。 可以控制橡皮擦的大小&#xff0c;进行擦拭…

CRMCHAT修复获取客户ip信息,地区信息

CRMCHAT修复获取客户ip信息&#xff0c;地区信息-TP源码网原因&#xff1a; 因pv.sohu.com/cityjson?ieutf-8接口已无法正确获取ip信息&#xff0c;导致后台站点统计无法正确获取用户ip信息&#xff0c;无法获取地区信息 修改 注释掉无用接口地址 修复ip信息 也可以使用&…

PTA天梯赛L1 001-010题目解析

目 录 1.L1-001 Hello World 2.L1-002 打印沙漏 3.L1-003 个位数统计 4.L1-004 计算摄氏温度 5.L1-005 考试座位号 6.L1-006 连续因子 7.L1-007 念数字 8.L1-008 求整数段和 9.L1-009 N个数求和 10.L1-010 比较大小 1.L1-001 Hello World 代码&#xff1a; #inclu…

NLP评价指标

一、分类任务常见评估&#xff1a; 准确度(Accuracy) 评估预测正确的比例&#xff0c;精确率(Precision) 评估预测正例的查准率&#xff0c;召回率(Recall) 评估真实正例的查全率。如果是多分类&#xff0c;则每个类别各自求P、R最终求平均值。 TP&#xff08;True Positives…