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

RHCE8 资料整理(五)

RHCE8 资料整理

  • 第五篇 系统管理
    • 第18章 进程管理
      • 18.1 进程介绍
      • 18.2 查看进程
      • 18.3 向进程发送信号
      • 18.4 进程优先级
    • 第19章 日志
      • 19.1 rsyslog的配置
      • 19.2 查看日志
    • 第20章 网络时间服务器
      • 20.1 时间同步必要性
      • 20.2 配置时间服务器
      • 20.3 配置客户端
    • 第21章 计划任务
      • 21.1 at
      • 21.2 crontab
      • 21.3 anacron

在这里插入图片描述

第五篇 系统管理

第18章 进程管理

18.1 进程介绍

参考 https://blog.csdn.net/u010230019/article/details/132311926

18.2 查看进程

通过ps能够查看进程信息,不加选项的ps显示当前终端的进程

[root@server ~]# psPID TTY          TIME CMD42301 pts/0    00:00:00 bash42351 pts/0    00:00:00 ps

关于ps详细内容查看 https://blog.csdn.net/u010230019/article/details/132301168

通过pgrep [-f] xxx能够查看某个进程的PID

[root@server ~]# pgrep sshd
899
42289
42291
42293
42312

也可以通过pidof xxx查看PID

[root@server ~]# pidof sshd
42312 42293 42291 42289 899

pgrep会把进程CMD中含有sshd的进程的PID全部找出来,而pidof找的是CMDsshd

ps查看的是执行命令的一瞬间的情况,而想要动态查看进程信息的,可以使用top命令,默认3秒刷新一次,可以通过-d来指定刷新时间
详细参考https://blog.csdn.net/u010230019/article/details/132301168

top - 16:47:00 up 14 days, 22:56,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 299 total,   1 running, 298 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1748.7 total,    178.4 free,    897.0 used,    673.3 buff/cache
MiB Swap:   4096.0 total,   4096.0 free,      0.0 used.    656.1 avail MemPID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND772 root      20   0  456396  11304   7496 S   0.2   0.6  24:42.64 vmtoolsd1344 gdm       20   0 3449740 177048 101844 S   0.2   9.9   8:28.06 gnome-shell42252 root      20   0       0      0      0 I   0.2   0.0   0:00.03 kworker/u256:0-events_unbound42373 root      20   0       0      0      0 I   0.2   0.0   0:00.24 kworker/1:0-mpt_poll_042395 root      20   0  226152   4488   3508 R   0.2   0.3   0:00.03 top1 root      20   0  170640  14660   9460 S   0.0   0.8   0:15.04 systemd2 root      20   0       0      0      0 S   0.0   0.0   0:01.84 kthreadd

18.3 向进程发送信号

通过kill -l查看所有信号

[root@server ~]# 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

常用信号有:

  • 15:以正常的结束进程来终止该进程。由于是正常的终止, 所以后续的动作会将他完成。不过,如果该进程已经发生问题,就是无法使用正常的方法终止时, 输入这个 signal 也是没有用的。
  • 9:代表强制中断一个进程的进行,如果该进程进行到一半, 那么尚未完成的部分可能会有『半产品』产生,类似 vim 会有 .filename.swp 保留下来。
  • 2:相当于用键盘输入 [ctrl]-c 来中断一个进程的进行
  • 1:启动被终止的进程,可让该 PID 重新读取自己的配置文件,类似重新启动

通过kill -n PID可以向进程发送信号,通过killall -n processname可以向所有processname发送信号

18.4 进程优先级

系统中所有的进程都要消耗CPU资源,CPU会为每个进程分配一个时间片,轮到某个进程时CPU会处理这个进程的请求,时间片到期,则会把进程暂停放回队列等待下一轮时间片。在同一颗CPU上如果运行太多的程序就会导致CPU资源不足,可以调整进程的优先级,让指定进程获取更多的资源,更优先的去执行。

进程的优先级由两个值决定:优先顺序(priority)和优先级(niceness)。其中优先顺序由内核对它进行动态更改,我们不需要做太多干预。对用户而言,只需要修改nice值,nice值范围为-20~19,nice值越小,进程就越先执行。

多个进程如果运行在不同的CPU上是互不干扰的,不会发生资源抢占情况。只有运行在同一颗CPU上才会发生资源抢占情况。

查看CPU情况,命令:

[root@server ~]# lscpu
Architecture:            x86_64CPU op-mode(s):        32-bit, 64-bitAddress sizes:         43 bits physical, 48 bits virtualByte Order:            Little Endian
CPU(s):                  2On-line CPU(s) list:   0,1
...

调整优先级示例
可以看到有两颗CPU(一颗CPU有两个核,则被认为是两颗CPU),编号分别是0和1。现在关闭1号CPU,命令如下:

[root@server ~]# cat /sys/devices/system/cpu/cpu1/online
1
[root@server ~]# echo 0 > /sys/devices/system/cpu/cpu1/online
[root@server ~]# cat /sys/devices/system/cpu/cpu1/online
0
[root@server ~]# lscpu
Architecture:            x86_64CPU op-mode(s):        32-bit, 64-bitAddress sizes:         43 bits physical, 48 bits virtualByte Order:            Little Endian
CPU(s):                  2On-line CPU(s) list:   0Off-line CPU(s) list:  1

可以看到1号CPU已经离线,/sys/devices/system/cpu/cpu1/online中的值如果是0则表示CPU离线,1则表示在线

[root@server ~]# cat /dev/zero > /dev/null &
[1] 42453
[root@server ~]# cat /dev/zero > /dev/null &
[2] 42454
[root@server ~]# top -d 5PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND42453 root      20   0  221096   1048    964 R  49.6   0.1   0:16.22 cat42454 root      20   0  221096   1024    940 R  49.4   0.1   0:14.75 cat

可以看到两个cat进程消耗的CPU是差不多的,因为他们的nice值相同,可以平等的消耗CPU资源,下面使用renice修改进程的nice值,改为-10,如下:

[root@server ~]# renice -n -10 42453
42453 (process ID) old priority 0, new priority -10
[root@server ~]# top -d 5PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND42453 root      10 -10  221096   1048    964 R  89.5   0.1   1:39.67 cat42454 root      20   0  221096   1024    940 R   9.7   0.1   1:29.11 cat
[root@server ~]# killall -9 cat

可以看到42453比42454占用了更多的CPU资源,nice值越小可以获得更多的CPU资源

前面是对运行中的进程调整优先级,也可以直接以某个特定的nice值启动进程

nice -n 10 cat /dev/zero > /dev/null &

开启1号CPU

第19章 日志

详细参考
https://blog.csdn.net/u010230019/article/details/127772295
https://blog.csdn.net/u010230019/article/details/132359825

在REHL8/CentOS8中,日志由rsyslogd服务管理的,不同类别的日志由/etc/rsyslog.conf决定保存在具体的文件中
/etc/rsyslog.conf定义规则格式:

日志类别.日志基本标准线	文件

日志类别:

相对序号服务类别说明
0kern(kernel)就是核心(kernel)产生的讯息,大部分都是硬件侦测以及核心功能的启用
1user在用户层级所产生的信息,例如后续会介绍到的用户使用
2mail只要与邮件收发有关的讯息记录都属于这个;
3daemon主要是系统的服务所产生的信息,例如systemd就是这个有关的讯息!
4auth主要与认证/授权有关的机制,例如login,ssh,su等需要账号/密码的咚咚;
5syslog就是由syslog相关协议产生的信息,其实就是rsyslogd这支程序本身产生的信息啊!
6lpr亦即是打印相关的讯息啊!
7news与新闻组服务器有关的东西;
8uucp全名为Unix to Unix Copy Protocol,早期用于unix系统间的程序数据交换;
9cron就是例行性工作排程cron/at等产生讯息记录的地方;
10authpriv与auth类似,但记录较多账号私人的信息,包括pam模块的运作等!
11ftp与FTP通讯协议有关的讯息输出!
16~23local0~local7保留给本机用户使用的一些登录文件讯息,较常与终端机互动。

日志级别:

等级数值等级名称说明
none不需登录等级,忽略掉某些服务的信息
7debug用来 debug (除错) 时产生的讯息数据;
6info仅是一些基本的讯息说明而已;
5notice虽然是正常信息,但比 info 还需要被注意到的一些信息内容;
4warning
(warn)
警示的讯息,可能有问题,但是还不至于影响到某个 daemon 运作的信息;基本上,info, notice, warn 这三个讯息都是在告知一些基本信息而已,应该还不至于造成一些系统运作困扰;
3err
(error)
一些重大的错误讯息,例如配置文件的某些设定值造成该服务服法启动的信息说明, 通常藉由 err 的错误告知,应该可以了解到该服务无法启动的问题呢!
2crit比 error 还要严重的错误信息,这个 crit 是临界点 (critical) 的缩写,这个错误已经很严重了喔!
1alert警告警告,已经很有问题的等级,比 crit 还要严重!
0emerg
(panic)
疼痛等级,意指系统已经几乎要当机的状态! 很严重的错误信息了。通常大概只有硬件出问题,导致整个核心无法顺利运作,就会出现这样的等级的讯息吧!

19.1 rsyslog的配置

*.info;mail.none;authpriv.none;cron.none                /var/log/messages# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog# Log cron stuff
cron.*                                                  /var/log/cron# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

*.info;mail.none;authpriv.none;cron.none /var/log/messages除了mail,authpriv和cron的所有info及以上的讯息都记录在/var/log/messages

模拟产生一个mail日志,级别为debug

[root@server ~]# logger -p mail.debug "1111"
[root@server ~]# tail -1  /var/log/maillog
Nov  9 17:42:38 server root[42476]: 1111

19.2 查看日志

不同的日志记录在不同的日志文件中,参考 https://blog.csdn.net/u010230019/article/details/127772295 查看不同的日志信息

  • 查看系统的引导日志,可以查看/var/log.boot.log
  • 查看通过ssh,ftp等登录系统或尝试登录系统的用户,可以查看/var/log/secure
  • 邮件相关日志,可以查看/var/log/maillog
  • 查看安装或卸载了哪些包,可以查看/var/log/dnf.log(REHL)

还可以通过journalctl查看系统的所有日志,格式

journalctl [OPTIONS...] [MATCHES...]
-f : 持续输出
-p 级别:查看指定级别日志
[root@server ~]# journalctl -p crit
Oct 25 17:50:22 server.rhce.cc kernel: Warning: Unmaintained hardware is detected:  e1000:100F:8086 @ 0000:02:00.0
Oct 25 17:50:23 server.rhce.cc kernel: Warning: Unmaintained hardware is detected:  e1000:100F:8086 @ 0000:02:03.0

第20章 网络时间服务器

20.1 时间同步必要性

大部分集群服务器都要求时间必须保持一致,否则会提示警告信息。

20.2 配置时间服务器

这里主要使用chrony进行配置时间服务器

主机ip类型
node-140192.168.17.140时间服务器
node-138192.168.17.138客户端
  1. 启动服务
systemctl start chronyd
systemctl status chronyd
systemctl enable chronyd
  1. 指定时间服务器使用的上层时间服务器,编辑/etc/chrony.conf
[root@server ~]# grep pool  /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (https://www.pool.ntp.org/join.html).
pool 127.127.1.0 iburst

pool后面指定上层时间服务器,由于我们这里把node-140作为时间服务器,修改pool 2.rhel.pool.ntp.org iburstpool 127.127.1.0 iburst,即上层时间服务器设置为本地时钟的IP:127.127.1.0

  1. 允许指定的客户端访问
[root@server ~]# grep allow  /etc/chrony.conf
allow 192.168.17.0/24

如果允许所有客户段都能访问,则可以设置allow 0/0allow all

  1. 修改local statum
[root@server ~]# grep local  /etc/chrony.conf
# Allow NTP client access from local network.
local stratum 10

表示即使服务器本身没有和时间服务器保持时间同步,也可以对外提供时间服务

  1. 重启chronyd服务
systemctl restart chronyd

chrony使用的是UDP的123和323端口,所以查看端口

[root@server ~]# ss -nltpu|grep chronyd
udp   UNCONN 0      0            0.0.0.0:123        0.0.0.0:*    users:(("chronyd",pid=42637,fd=7))
udp   UNCONN 0      0          127.0.0.1:323        0.0.0.0:*    users:(("chronyd",pid=42637,fd=5))
udp   UNCONN 0      0              [::1]:323           [::]:*    users:(("chronyd",pid=42637,fd=6))
  1. 如果开启了防火墙,则需要把这两个端口开放,如下
[root@server ~]# firewall-cmd --add-port=123/udp --permanent
success
[root@server ~]# firewall-cmd --add-port=323/udp --permanent
success
[root@server ~]# firewall-cmd --reload
success

20.3 配置客户端

  1. node-138设置为时间服务器客户端,编辑/etc/chrony.conf,修改如下:
[root@node-138 ~]# egrep -v '^$|^#' /etc/chrony.conf
server 192.168.17.140 iburst
driftfile /var/lib/chrony/drift
makestep 200 3
rtcsync
logdir /var/log/chrony
  1. 同步时间
[root@node-138 ~]# date;ssh node-140 date
Thu Nov  9 11:16:23 CST 2023
Thu Nov  9 06:19:33 PM CST 2023
[root@node-138 ~]# systemctl restart chronyd
[root@node-138 ~]# date;ssh node-140 date
Thu Nov  9 11:16:42 CST 2023
Thu Nov  9 06:19:52 PM CST 2023
[root@node-138 ~]# date;ssh node-140 date
Thu Nov  9 18:19:54 CST 2023
Thu Nov  9 06:19:54 PM CST 2023

可以看到时间并不是一下同步的,而是逐渐同步的,为什么呢?
这还需要从/etc/chrony.confmakestep选项说起,makestp那行,格式如下:

makestep 阈值 limit

客户端向时间服务器同步时间有两种方式:stepslew

  • step:跳跃着更新时间,如时间从1点直接跳到7点
  • slew:平滑着移动时间,晶体芯片跳动的会快一些,好比秒针的转速“快进”了一样

如果客户端和服务器时间相差较多,则通过step的方式更新时间;如果相差不多,则通过slew更新时间。那么时间相差多与不多的标准又是什么呢?
这就要看时间差是否超过makestep后面的阈值了。以makestep 10 3为例,如果相差10秒以上,就认为时间相差较多,则前3次通过step方式更新时间(有些程序会因为时间跳动带来问题)。如果是10秒以内,则会通过slew缓慢平滑更新时间。

可以通过chronyc -n sources -v查看现在的同步状况

[root@node-138 ~]# chronyc -n sources -v
210 Number of sources = 1.-- Source mode  '^' = server, '=' = peer, '#' = local clock./ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.17.140               10   6   377    64    +33us[  +70us] +/-  396us

可以看到node-138是向node-140进行时间同步的

第21章 计划任务

详细参考 https://blog.csdn.net/u010230019/article/details/132290764

21.1 at

使用at执行一次性计划任务,格式

at 时间点 <【按Enter】>
> 输入要执行的命令
Ctrl + D 提交atq job	#查询
at -c job #详细查询具体内容,一般配合 tail -3 使用
atrm job #删除
[root@node-138 ~]# at now+1minutes
at> echo 123
at> <EOT>
job 12 at Thu Nov  9 18:46:00 2023
[root@node-138 ~]# atq
9       Wed Feb 14 01:00:00 2024 a root
10      Wed Feb 14 01:00:00 2024 a root
12      Thu Nov  9 18:46:00 2023 a root

21.2 crontab

如果周期性执行计划任务,则需要使用crontab

crontab -e [-u xxx] #[为其他用户]创建计划任务
crontab -l [-u xxx] #[为其他用户]查询计划任务
crontab -r #删除

详细查询 https://blog.csdn.net/u010230019/article/details/132290764

[root@study ~]# cat /etc/crontab
SHELL=/bin/bash <==使用哪种 shell 接口
PATH=/sbin:/bin:/usr/sbin:/usr/bin <==执行文件搜寻路径
MAILTO=root <==若有额外 STDOUT,以 email 将数据送给谁
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
  • /etc/cron.allow:
    将可以使用 crontab 的账号写入其中,若不在这个文件内的使用者则不可使用 crontab;
  • /etc/cron.deny:
    将不可以使用 crontab 的账号写入其中,若未记录到这个文件当中的使用者,就可以使用 crontab

同时存在时,allow生效

可以直接将指令放到 /etc/cron.hourly/ 让系统每小时定时执行之外,在 /etc/ 底下其实还有 /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/,那三个目录是代表每日、每周、每月各执行一次的意思

21.3 anacron

anacron 并不是用来取代 crontab 的,anacron 存在的目的就在于我们上头提到的,在处理非 24 小时一直启动的 Linux 系统的 crontab 的执行! 以及因为某些原因导致的超过时间而没有被执行的排程工作。

其实 anacron 也是每个小时被 crond 执行一次,然后 anacron 再去检测相关的排程任务有没有被执行,如果有超过期限的工作在, 就执行该排程任务,执行完毕或无须执行任何排程时,anacron 就停止了。

关于详细内容查看上面连接

相关文章:

RHCE8 资料整理(五)

RHCE8 资料整理 第五篇 系统管理第18章 进程管理18.1 进程介绍18.2 查看进程18.3 向进程发送信号18.4 进程优先级 第19章 日志19.1 rsyslog的配置19.2 查看日志 第20章 网络时间服务器20.1 时间同步必要性20.2 配置时间服务器20.3 配置客户端 第21章 计划任务21.1 at21.2 cront…...

CPU 飙高系统反应慢怎么排查

mic老师面试题摘选 面试过程中&#xff0c;场景类的问题更容易检测出一个开发人员的基本能力。 这不&#xff0c;一个小伙伴去阿里面试&#xff0c;第一面就遇到了关于“CPU 飙高系统反应慢怎么排查” 的问题&#xff1f; 对于这个问题&#xff0c;我们来看看普通人和高手…...

深度学习之基于YoloV5-Deepsort人物识别与追踪系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 YoloV5-Deepsort是一种基于深度学习的人物识别与追踪系统&#xff0c;具有较高的准确率和实时性能。 YoloV5是一种…...

Spring Boot中配置多个数据源

配置数据源实际上就是配置多个数据库&#xff0c;在一个配置文件中配置多个数据库&#xff0c;这样做主要的好处有以下几点&#xff1a; 数据库隔离&#xff1a;通过配置多个数据源&#xff0c;可以将不同的业务数据存储在不同的数据库中&#xff0c;实现数据的隔离。这样可以…...

C++学习笔记---命名空间namespace

文章目录 前言简介定义命名空间using指令不连续&嵌套的命名空间 前言 wu 简介 C中的命名空间&#xff08;Namespace&#xff09;是一种用于组织和封装代码的机制&#xff0c;它允许你将一组相关的函数、类、变量和其他标识符放置在一个逻辑分组内&#xff0c;以便在不同的…...

缓存-Spring Cache 缓存抽象

缓存-Spring Cache 缓存抽象 Spring从版本3.1开始提供非侵入的将Cache集成到Spring应用的方式。Spring Cache提供Cache的统一抽象&#xff0c;支持集成各种不同的缓存解决方案。从4.1版本开始&#xff0c;提供了注解和更多的定制参数。 Spring Cache 抽象提供了对Java方法的缓存…...

Java修仙传之神奇的ES2(巧妙的查询及结果处理篇)

SDL语句查询 查询的基本语法 GET /indexName/_search {"query": {"查询类型": {"查询条件": "条件值"}} } 根据文档id查询 #查询文档 GET hotel/_doc/36934 查询所有 会弹出该索引库下所有文档// 查询所有 GET /indexName/_searc…...

架构设计的课程资料

架构设计课 枫叶云笔记...

数据结构与算法C语言版学习笔记(5)-串,匹配算法、KMP算法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、串的定义二、串的存储结构1.顺序结构2.链式结构 三、串的朴素的模式匹配算法&#xff08;暴力匹配算法&#xff09;1.背景2.假设我们要从下面的主串 S"…...

新版HI3559AV100开发注意事项

新版HI3559AV100开发注意事项 一、在Hi3559A上使用openCV VideoCapture开启.mp4影像档, isOpened一直得到false 在Hi3559A上已经cross compile ffmepg 4.1openCV 3.4.4 但使用openCV VideoCapture开启.mp4影像档, isOpened一直得到false 请问要如何知道是什么原因无法开启影像…...

Django(一、简介,安装与使用)

文章目录 一、Django引入1.web应用程序什么是web&#xff1f;web引用程序的优点web应用程序的缺点什么是web框架 2.纯手写web框架1.web框架的本质2.HTTP协议的特性&#xff1a;3.编写基于wsgire模块搭建web框架代码封装优化代码封装 二、Django框架的学习1.Python中的主流框架2…...

【Linux C IO多路复用】多用户聊天系统

目录 Server-Client mutiplexingServer mutiplexingClient mutiplexing Server-Client 在Linux系统中&#xff0c;IO多路复用是一种机制&#xff0c;它允许一个进程能够监视多个文件描述符&#xff08;sockets、pipes等&#xff09;的可读、可写和异常等事件。这样&#xf…...

JSON——数组语法

一段JSON可能是以 ”{“ 开头 也可能仅包含一段JSON数组 如下 [ { "name" : "hello,world"}, {"name" : "SB JSON”}&#xff0c; {“name” : "SB互联网房地产CNM“}&#xff0c; ] 瞧&#xff0c;蛋疼不...CJSON过来还是得搜下网…...

运营商大数据精准获客:我们提供精准客源渠道的最大资源体?

运营商大数据精准营销 谈起精准获客&#xff0c;竞争对手永远是为我们提供精准客源渠道的最大资源体&#xff01; 最新的获客方式&#xff0c;就是从竞争对手的手中把他们的精准客户资源变为自己的。 今年最火的运营商大数据精准营销是拒绝传统营销方式的烧钱推广&#xff0…...

表象变换与矩阵元

表象变换 一维粒子哈密顿量 表象中的矩阵元 态的表象变换 不难证明 算符的表象变换 坐标表象 Non-denumerable basis...

vue乾坤微前端项目

1、主应用 安装乾坤 npm i qiankun -S 注册微应用并启动&#xff1a; import { registerMicroApps, start } from qiankun;//设置两个微应用 registerMicroApps([{name: vue1, //要跟package.json中的name保持一致entry: //localhost:8081, //本地就这么写container: #cont…...

大语言模型比武

今年随着 ChatGPT 的流行&#xff0c;并在各个领域有一定程度生产级别的应用。国内外也掀起了一股大语言模型浪潮&#xff0c;各大厂商都推出了自己的大语言模型&#xff0c;阿里推出了 通义千问&#xff0c;腾讯推出了 Hunyuan&#xff0c;亚马逊云推出了 Titan&#xff0c;大…...

王道数据结构第五章二叉树的遍历第13题

目录 解题思路 宏定义 二叉树定义 栈定义 实现函数 测试代码 测试结果...

微服务的发展历程的详细说明及每个阶段主流的架构和组件

微服务的发展历程的详细说明及每个阶段主流的架构和组件如下&#xff1a; 一、微服务的发展历程&#xff1a; 起始阶段&#xff1a;这个阶段主要是面向服务的架构&#xff08;SOA&#xff09;的兴起。此时&#xff0c;企业开始尝试将单体应用拆分为多个服务&#xff0c;但此时…...

2023年眼镜行业分析(京东眼镜销量数据分析):市场规模同比增长26%,消费需求持续释放

随着我国经济的不断发展&#xff0c;电子产品不断普及&#xff0c;低龄及老龄人口的用眼场景不断增多&#xff0c;不同年龄阶段的人群有不同的视力问题&#xff0c;因此&#xff0c;视力问题人口基数也随之不断加大&#xff0c;由此佩戴眼镜的人群也不断增多。 同时&#xff0c…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...