一、数据备份

1.Linux服务器中需要备份的数据

        (1)Linux系统重要数据:/root/目录,/home/目录,/etc/目录

        (2)安装服务的数据:Apache(配置文件,网页主目录,日志文件)

2.备份策略

        (1)完全备份:把所有需要备份的数据全部备份(整块硬盘、整个分区或某个具体目录)

                        优点:数据恢复方便

                        缺点:备份数据量大,备份时间长,占据空间较多

        (2)增量备份:先进行一次完全备份,后比较数据差异,只备份差异数据

                        优点:备份数据较少,耗时较少,占用空间较少

                        缺点:数据恢复比较繁琐(先恢复完全备份,后按照第一、第二.....增量备份数据恢复)

        (3)差异备份:先进行一次完全备份,后每次备份都备份和原始完全备份数据不同的数据

                        优点:不需要备份所有数据,数据恢复也比较方便

                        缺点:随时间增加,差异备份也可能变得数据庞大,备份缓慢,占用较大空间

3.备份工具

命令格式:dd if="输入文件" of="输出文件"  bs="数据块"  count="数量"

  • if:定义输入数据的文件,也可以是输入设备
  • of:定义输出数据的文件,也可以是输出设备
  • bs:指定数据块大小,默认512字节
  • count:指定bs的数量

注:如果想要备份分区,则分区大小不能比原分区小,只能和原分区大小一致或比原分区大;如果需要恢复,只需要把输入项和输出项反过来即可

网络复制工具:rsync和scp

  • rsync:可以实现服务器之间的备份数据,也可以增量备份,实现类似镜像的效果
  • scp:在Linux之间传文件,基于ssh的cp

scp  /root/本地文件  root@192.168.25.16:/root/        #上传

scp  root@192.168.25.6:/root/本地文件   /root/         #下载

4.xfs文件系统的备份与恢复

注:xfs文件系统支持备份功能,使用xfsdump命令和xfsrestore可以完成备份与恢复

备份——可进行完全备份、增量备份、差异备份

注意事项

  1. 不支持对未挂载文件系统进行备份
  2. 必须使用root身份才有权限执行
  3. 只能备份xfs文件系统,默认只支持备份文件系统
  4. 备份数据只能被xfsrestore解析
  5. 通过UUID来辨别备份文件,不能备份两个具有相同UUID的文件系统

xfsdump选项

  • -L:记录每次备份的说明标签
  • -M:指定存储媒介的说明标签
  • -l:指定备份级别(0-9),0是完整备份,1-9是增量备份
  • -f:指定转储的目的地
  • -I:从/var/lib/xfsdump/inventory列出目前备份的信息状态

(1)备份整个分区:xfsdump  -f  备份文件路径  被备份路径或设备文件

注:被备份路径可以写成/dev/sda1或/disk1,不能写成/disk1/

(2)指定备份是免交互操作

语法:xfsdump  -f  /opt/dump_2  /disk1  -L  dump_2  -M  sda1

(3)指定只备份分区中的某个目录(-s  文件路径[相对路径])

语法:xfsdump  -f  /opt/dump_test  -s  test  /disk1  -L  dump_test  -M  sda1

(4)文件系统恢复

语法:xfsrestore  -f  指定恢复文件的位置  指定存放恢复后的文件路径

(5)增量备份

全备:xfsdump  -f  /opt/dump_full  /disk1  -L  dump_full  -M  sda1

第n次:xfsdump  -l  n  -f  /opt/dump_backn  /disk1  -L  dump_backn  -M  sda1

二、进程管理

1.进程概述和PS管理进程

进程的组成部分:已分配内存的地址空间,进程ID(PID),程序代码,进程状态

进程管理包括:进程调度、中断处理、信号、进程优先级、进程切换、进程状态、进程内存等

进程的生命周期:

  1. 父进程复制自己的地址空间(fork)创建一个新的子进程结构
  2. 每个进程分配一个唯一的进程ID(PID),满足跟踪安全性之需
  3. PID和父进程(PPID)是子进程环境的元素,任何进程都可以创建子进程
  4. 所有进程都是第一个系统进程的后代
  5. Centos5或6 PID为1的是init,Centos7是systemd

僵尸进程:不执行代码,占用内存地址空间

  1. 当一个进程收到终止信号时,它结束之前需要一段时间来结束所有任务
  2. 在进程执行所有代码之后,它将相关终止报告发给父进程
  3. 父进程正常情况下会移除所有子进程的数据结构
  4. 如果父进程没能接收到子进程的退出信号,那么子进程就变为了僵尸进程
  5. 所以通常在某个很短的时间内,子进程是一个僵尸进程
  6. 使用kill命令不能杀死僵尸进程,因为它已经被认定为死亡
  7. 可尝试杀死僵尸进程的父进程,僵尸进程也会随之消失
  8. 如果一个进程为僵尸状态,父进程是init或systemd,那么需要重启系统来解决问题

2.进程、线程、协程

  • 进程:是一个执行环境, 包含指令、用户数据、部分系统数据,以及运行期内获取的其他资源
  • 线程:较小的轻量级实体,进程中产生的一个执行单位(线程直接可以共享资源,包括内存、地址空间、打开文件等)
  • 协程:最小实体,可通过并发方式运行;协程的创建、切换和销毁开销非常低,因为它们在用户态完成,不涉及操作系统的内核切换(与线程相比,需要的系统资源少,能在更小的内存空间中运行)

3.上下文切换

  1. 在处理器执行期间,运行进程的信息被存储在处理器的寄存器和高速缓存中。
  2. 执行的进程被加载到寄存器的数据被称为上下文。
  3. 在实际处理器运行过程中,先存储运行进程的上下文。
  4. 然后将下一个要运行的进程的上下文恢复到寄存器,这个过程称之为上下文切换。
  5. 一般不能有太多上下文切换。
  6. 因为处理器每次要刷新寄存器和高速缓存,以便释放空间给新进程,可能导致性能下降。

4.中断处理

  1. 中断是优先级最高的任务之一。
  2. 通常由 I/O 产生,比如网络接口、键盘、磁盘控制器等。
  3. 当一个中断信号到达内核的时候,内核必须从当前执行的进程切换到一个新的进程,以便处理这个中断。
  4. 这意味着中断会导致上下文切换。也就是说大量中断会导致性能下降。

注:Linux中有硬中断和软中断。硬中断由硬件产生,需要快速响应(如磁盘I/O中断,键盘中断,鼠标中断等);软中断被用来处理可以推迟的任务(TCP/IP,SCSI协议操作等)

5.进程的属性

  • 进程 ID(PID):是唯一的数值
  • 父进程的 ID(PPID)
  • 启动进程的用户 ID(UID)和所归属的组(GID)
  • 进程状态:状态分为运行 R、休眠 S、僵尸 Z
  • 进程执行的优先级
  • 进程所连接的终端名
  • 进程资源占用:比如占用资源大小(内存、CPU 占用量)

6.使用PS查看进程工具

常见选项组合:ps  aux |  more

  • a:显示跟当前终端关联的所有进程
  • u:基于用户的格式显示
  • x:显示所有进程,不以终端来区分

  • USER: 启动这些进程的用户
  • PID: 进程的 ID
  • %CPU 进程占用的 CPU 百分比
  • %MEM 占用内存的百分比
  • VSZ:进程占用的虚拟内存大小(单位:KB)
  • RSS:进程占用的物理内存大小(单位:KB)
  • STAT:该程序目前的状态,Linux 进程有 5 种基本状态:
    R :该程序目前正在运行,或者是可被运行(在运行队列)
    S :该程序目前正在睡眠当中 ,但可被某些信号唤醒
    T :该程序目前是停止状态
    Z :该进程应该已经终止,但是其父程序却没有正常的终止它
    D 不可中断的睡眠状态,通常存在于 I/O 情况下
    I:空闲的内核进程(Rocky9.X)
  • START:该进程被触发启动的时间
  • TIME :该进程实际使用 CPU 运行的时间
  • COMMAND:该程序的实际指令

基本状态后字符:

  • <:进程运行在高优先级上
  • N:进程运行在低优先级上
  • l:进程有页面锁定在内存中
  • s:进程是控制进程
  • I:进程是多线程的
  • +:当前进程运行在前台
  • t:进程被调试器跟踪时会出现(在编程调试期间会出现)

实验——

步骤一:在一个终端下创建aaa.txt文件,并vim打开,不修改,另开一个终端查看当前状态

步骤二:在aaa.txt终端按下ctrl +z 停止进程,在另一个终端再次查看当前状态

步骤三:tar -zcvf usr.gz /usr/,然后在另一个终端不断查看状态,由 S+,R+变为 D+

常见选项组合:ps  -ef

  • e:显示所有进程
  • f:显示完整格式输出

  • UID: 启动这些进程的用户
  • PID: 进程的 ID
  • PPID: 父进程的进程号
  • C: 进程生命周期中的 CPU 利用率
  • STIME: 进程启动时的系统时间
  • TTY: 表明进程在哪个终端设备上运行。如果显示?表示与终端无关,这种进程一般是内核态进程。另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示运行在虚拟终端上的进程。
  • TIME: 运行进程一共累计占用的 CPU 时间
  • CMD: 启动的程序名称

实验——

步骤一:终端一:dd if=/dev/zero of=/a.txt count=10 bs=100M;终端二: ps -axu | grep dd

7.补充:free命令

第一行:total 是总内存量,used 是已经使用的内存量,free 是空闲的内存,shared 是多个进程共

享的内存总数,buffers 是缓冲内存数,cached 是缓存内存数。默认单位是 KB。
第二行开始:

  • total 系统中有 1.9Gi 的物理内存,
  • used 是已经使用的内存数量。
  • free 是空闲的内存数量。
  • shared 是多个进程共享的内存数量。
  • buff/cache 用来作为缓冲和缓存的空间,内核会在内存将要耗尽时释放这部分内存给其他进程使用。
  • availble:可使用空间,评估有多少内存可用于启动新应用程序。

注:available 字段考虑了页缓存,而不是所有可回收的内存。正因为这个原因所以通常

free+buff/cache 的数值要比 available 的数值大。
第三行为 swap 虚拟内存。

  1. 在上面信息中我们可以看到,其实系统上并没有运行什么服务。但是有 1.4G 的 cache,这是因为在实验过程中进行过多次读写执行等操作。
  2. 这些文件会被系统暂时缓存下来,以便下次运行的时候能够快速的读取。
  3. 这种使用都是正常的情况,说明物理内存正在被合理的使用
  4. 但是如果我们发现 swap 区域一直被大量使用,这就说明物理内存不足。
  5. 可能需要考虑系统上 swap 使用比例或者添加物理内存。

三、uptime查看系统负载--top动态管理进程

1.uptime查看cpu负载工具

18:54:11当前时间
48系统运行时间,说明系统已经运行了48分钟
3当前登录用户数
load average:0.08,0.17,0.25系统负载均衡,即任务队列的平均长度。三个数值为1分钟、5分钟、15分钟前到现在的平均值

任务队列的平均长度(cpu队列数为3时):

注:如果服务器cpu为1核,则load average>=3为负载过高;如果服务器cpu为4核,则>=12为负载过高(通常单核一分钟平均负载不要超过3)

2.top命令动态管理

Cpu(s)系统用户进程使用cpu百分比
sy内核中的进程占用cpu百分比
ni用户进程空间内改变过优先级的进程占用cpu百分比
id空闲cpu百分比
wacpu等待I/O完成的时间总量
hi(硬中断消耗时间)硬中断占的cpu百分比
si(软中断消耗时间)软中断占的cpu百分比
st(steal偷)虚拟机偷取物理的时间

PID进程id
USER进程所有者的用户名
PR优先级,由内核动态调整,用户不能修改。rt表示任务正在实时调度优先级下运行
NI进程优先级,nice值。负值表示高优先级
VIRT虚拟内存,是进程正在使用的所有内存
RES是进程所使用的物理内存,是实际使用内存
SHR共享内存大小,单位kb
S进程状态
%CPU上次更新到现在的cpu占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的cpu时间总计,单位1/100s
COMMAND命令名;命令行

快捷键

  • 默认三秒刷新一次,按s修改刷新时间
  • 按空格立刻刷新
  • q退出
  • P按cpu排序
  • M按内存排序
  • T:按时间排序
  • 数字键1:显示每个内核的cpu使用率
  • -p:进程pid,查看某个进程状态
  • -u/U:指定显示用户
  • h:帮助

注:lscpu命令可以查看cpu系统中cpu详细信息,并且在sockets字段表示物理cpu数量

实验——

步骤一:使用top动态只查看某个或某些进程的信息

步骤二:找出系统中使用cpu最多的进程

注:在一个linux进程中,最多可以使用的cpu占用百分比跟内核数有关,可以超过100%

3.fuser命令根据文件或端口号找相应进程

  • -k:默认结束进程,也可以执行发送信号(可用信号与kill命令不同)
  • -i:在结束进程前会交互式确认
  • -u:在进程后显示进程所属用户名
  • -c:查看有哪些进程访问挂载点下文件

实验——

步骤一:根据/media目录查看有哪些进程正在访问目录,并列出进程用户名称

步骤二:查看 boot 分区下有哪些进程在访问文件

步骤三:查看 tcp 协议 22 号端口有哪些进程

注:对文件或目录执行会输出相应的进程号(c表示执行进程的用户在当前查询目录中;f表示文件,但通常文件默认不显示;r表示root目录;e表示正在运行的可执行文件)

4.lsof命令:用于查看进程打开的文件、端口(TCP,UDP)

  • -i:列出符合条件的进程。IPv4或IPv6(4,6,协议,:端口,@ip)
  • -p:列出指定进程号所打开的文件

一般用于进程在读哪些文件,或哪个进程在使用端口

四、前后台进程切换-nice进程优先级

1.Linux后台进程与前台进程的区别

  1. 前台进程:是在终端中运行的命令,命令执行过程中持续占用前台。
  2. 依赖终端:那么该终端就为进程的控制终端,一旦这个终端关闭,这个进程也随之消失。
  3. 脱离终端:一旦这个终端关闭,这个进程不会消失。
  4. 后台进程: 进程放入后台运行,通常不会影响当前终端后续命令执行。如:tar -cf 命令等。
  5. 后台运行并脱离终端:其中有一类进程也叫守护进程(Daemon),是运行在后台的一种特殊进程,不受终端控制,它不需要终端的交互。
  6. Linux 的大多数服务器就是用守护进程实现的。比如,Web 服务器 httpd 等。

2.进程前台与后台运行(跟系统任务相关的几个进程)

&跟在命令最后,可以把命令放在后台执行
ctrl+z将前台命令放在后台,并且暂停
jobs查看当前后台运行进程(作业控制命令)
fg将后台命令调至前台继续运行(fg %命令序号)
bg 将后台暂停命令变为继续执行(bg %命令序号)
nohup脱离终端

注:虽然bg 1使得后台暂停命令继续运行,但vi命令无法在后台执行,因此很快就停止运行

3.kill给进程发送信号

  • 相关 3 个命令:kill、killall、pkill
  • kill 命令:kill 进程号
  • killall 和 pkill 命令用杀死指定名字的进程
  • 通过信号的方式来控制进程的
  • kill -l =====> 列出所有支持的信号

信号编号信号名作用
1SIGHUP重新加载配置
2SIGINT键盘中断:ctrl + c
3SIGQUIT退出
9SIGKILL强制终止
15SIGTERM终止(正常结束),缺省信号
18SIGCONT继续
19SIGSTOP停止
20SIGTSTP暂停ctrl + z

命令一:kill命令

补充

实验一:kill -1重新加载配置实验,用sshd进程来看,我们正常情况下修改sshd服务监听22号端口号,改为2200端口,然后再用kill -1命令重新加载更新端口号

准备:SELinux不允许随便修改服务的监听端口,因此我们需要先暂时关闭这个服务(enforcing开启,permissive关闭,也可以直接在配置文件/etc/selinux/config里面永久修改)

查看当前端口号,然后在配置文件/etc/ssh/sshd_config中修改端口号为2200

保存之后,通过systemctl  restart  sshd命令重启sshd服务,会发现监听端口号改变,但sshd的进程号也随着服务的关闭开启而改变

再次将端口号改回22,使用kill -1重载配置,会发现命令是通过进程重载配置文件,进程号不会变

实验二:kill -9强制终止实验。使用sshd服务,正常情况下远程连接会在/var/run/sshd.pid下生成保存远程连接进程号的文件。首先通过systemctl stop命令远程关闭服务,会发现这个文件会被删除

重新启动sshd服务,然后改用kill -9强制终止进程,会发现该配置文件没有被正常清理,变成残留

因此kill  -9命令存在缺陷,会导致一些因进程产生的文件残留。

命令二:killall命令(-i 交互式杀死某个进程)

命令三:pkill命令(-t 终端号:按照终端号剔除用户)

4.进程的优先级管理

注:优先级取值为(-20,19),越小优先级越高,默认为0

命令1:nice -n——指定程序运行的优先级

命令2:renice——改变进程的运行优先级

5.tmux终端复用工具

  • tmux终端复用工具,在R9.4系统中可通过光盘进行rpm安装。
  • 在系统中默认情况下我们登录系统会打开相应的终端用于命令输入,用户输入的命令中部分命令属于依赖终端运行。也就是说用户退出终端,终端结束,依赖终端命令的进程也就随之结束。
  • 在tmux中我们可以打开会话,这里的会话类似于系统中的打开终端
  • 在基于tmux的“会话”当中,如果我们以特定方式“退出”会话,会话相应进程是不会结束的(我们可以再次回到此会话),那么基于会话存在的依赖终端的进程也就可以继续运行。

实验——

步骤一:安装tmux包后,开启会话:tmux或tmux  new-session -s hf01(默认会话名称为0)

步骤二:切换会话,让会话临时退出

ctrl+b+w:列出所有会话,通过上下键+Enter切换会话

ctrl+b+d:临时退出当前会话

进入会话执行exit则表示关闭会话

步骤三:在退出tmux后,可通过输入tmux ls列出当前存在的会话名称

步骤四:进入指定会话

步骤五:结束会话(除exit之外)

6.time命令:查看命令执行时间

格式:time CMD

  • real time:时钟走过的时间
  • user time:程序在用户态的CPU时间
  • sys time:程序在内核态的CPU时间

7.ulimit:限制普通用户开启进程数量

临时生效配置:ulimit  -u  15(限制用户能够开启的进程数量是15)

永久生效配置:vim  /etc/security/limits.d/20-nproc.conf(rocky9没有这个文件,要自己写)

第一列:用户名。如果是*则表示全局用户

第二列:soft指当前系统生效的设置值。hard表面系统中所能够设置的最大值

第三列:操作系统级别对每个用户创建的进程数的限制

第四列:限制用户的进程数量

注:配置重启之后,可以查看当前用户限制打开的进程数量:ulimit -u

验证:安装stress压力测试工具进行验证(需要先安装epel-release扩展源或直接网上下载rpm包)

步骤:user1用户使用stress命令开启15个进程,,用root用户查看进行验证

补充:限制用户能够写入的文件大小:ulimit  -f(查看当前用户能够创建的文件大小)

注:默认单位kb

补充

  1. 进程调度:操作系统决定哪个就绪进程获得cpu的执行权的过程
  2. 中断处理:cpu响应硬件或软件中断,暂停当前任务,转而去执行中断服务程序,完成后恢复原任务
  3. 信号:内核或进程向目标进程发送的异步通知
  4. 进程优先级:决定进程被调度执行的优先顺序
  5. 进程切换:CPU从一个进程切换到另一个进程时,保存当前进程的上下文,并加载新进程的上下文
  6. 进程状态:运行、就绪、阻塞
  7. 进程内存:进程运行时分配的地址空间

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

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

相关文章

docker volume卷入门教程

1. 基础概念 Docker卷是专门用于持久化容器数据的存储方案&#xff0c;独立于容器生命周期。其核心优势包括&#xff1a; 数据持久化&#xff1a;容器删除后数据仍保留跨容器共享&#xff1a;多个容器可访问同一卷备份与迁移&#xff1a;支持直接复制卷数据驱动支持&#xff1a…

计算机网络——协议

1. 计算机网络分层1.1 OSI 7层模型应用层表示层会话层传输层网络层数据链路层物理层1.2 TCP/IP 4 层模型应用层运输层网际层网络接口层1.3 5层体系机构应用层传输层网络层数据链路层物理层2. 应用层协议2.1 HTTP协议2.1.1 基本介绍HTTP&#xff08;HyperText Transfer Protocol…

【React】hooks 中的闭包陷阱

在 React Hooks 中的 闭包陷阱&#xff08;Closure Trap&#xff09;在 useEffect、事件回调、定时器等场景里很常见。1. 闭包陷阱是什么 当你在函数组件里定义一个回调&#xff08;比如事件处理函数&#xff09;&#xff0c;这个回调会捕获当时渲染时的变量值。如果后面状态更…

校园快递小程序(腾讯地图API、二维码识别、Echarts图形化分析)

&#x1f388;系统亮点&#xff1a;腾讯地图API、二维码识别、Echarts图形化分析&#xff1b;一.系统开发工具与环境搭建1.系统设计开发工具后端使用Java编程语言的Spring boot框架 项目架构&#xff1a;B/S架构 运行环境&#xff1a;win10/win11、jdk17小程序&#xff1a; 技术…

Python网络爬虫(二) - 解析静态网页

文章目录一、网页解析技术介绍二、Beautiful Soup库1. Beautiful Soup库介绍2. Beautiful Soup库几种解析器比较3. 安装Beautiful Soup库3.1 安装 Beautiful Soup 43.2 安装解析器4. Beautiful Soup使用步骤4.1 创建Beautiful Soup对象4.2 获取标签4.2.1 通过标签名获取4.2.2 通…

【Linux基础知识系列】第九十四篇 - 如何使用traceroute命令追踪路由

在网络环境中&#xff0c;了解数据包从源主机到目标主机的路径是非常重要的。这不仅可以帮助我们分析网络连接问题&#xff0c;还可以用于诊断网络延迟、丢包等问题。traceroute命令是一个强大的工具&#xff0c;它能够追踪数据包在网络中的路径&#xff0c;显示每一跳的延迟和…

达梦数据闪回查询-快速恢复表

Time:2025/08/12Author:skatexg一、环境说明DM数据库&#xff1a;DM8.0及以上版本二、适用场景研发在误操作或变更数据后&#xff0c;想马上恢复表到某个时间点&#xff0c;可以通过闪回查询功能快速实现&#xff08;通过全量备份恢复时间长&#xff0c;成本高&#xff09;三、…

力扣(LeetCode) ——225 用队列实现栈(C语言)

题目&#xff1a;用队列实现栈示例1&#xff1a; 输入&#xff1a; [“MyStack”, “push”, “push”, “top”, “pop”, “empty”] [[], [1], [2], [], [], []] 输出&#xff1a; [null, null, null, 2, 2, false] 解释&#xff1a; MyStack myStack new MyStack(); mySta…

微软推出AI恶意软件检测智能体 Project Ire

开篇 在8月5号&#xff0c;微软研究院发布了一篇博客文章&#xff0c;在该篇博客中推出了一款名为Project Ire的AI Agent。该Agent可以在无需人类协助的情况下&#xff0c;自主分析和分类二进制文件。它可以在无需了解二进制文件来源或用途的情况下&#xff0c;对文件进行完全的…

哪些对会交由SpringBoot容器管理?

在 Spring Boot 中,交由容器管理的对象通常称为“Spring Bean”,这些对象的创建、依赖注入、生命周期等由 Spring 容器统一管控。以下是常见的会被 Spring Boot 容器管理的对象类型及识别方式: 一、通过注解声明的组件(最常见) Spring Boot 通过类级别的注解自动扫描并注…

Android POS应用在android运行常见问题及解决方案

概述 本文档记录了在Android POS应用开发过程中遇到的两个关键问题及其解决方案&#xff1a; UnsatisfiedLinkError: couldnt find "libnative.so" 错误ActivityNotFoundException 错误商户信息一致性检查绕过 问题1&#xff1a;UnsatisfiedLinkError - libnative.so…

基于SpringBoot的旅游网站系统

1. 项目简介 旅游线路管理系统是一个基于Spring Boot的在线旅游服务平台&#xff0c;提供旅游线路展示、分类、预订、订单管理等功能。系统包含前台用户界面和后台管理模块&#xff0c;支持用户注册登录、线路浏览、收藏、下单支付、客服咨询等核心功能。管理员可管理线路信息、…

CVPR 2025 | 机器人操控 | RoboGround:用“掩码”中介表示,让机器人跨场景泛化更聪明

点击关注gongzhonghao【计算机sci论文精选】1.导读1.1论文基本信息论文标题&#xff1a;ROBOGROUND: Robotic Manipulation with Grounded Vision-Language Priors作者&#xff1a;Haifeng Huang, Xinyi Chen, Hao Li&#xff0c; Xiaoshen Han, Yilun Chen, Tai Wang, Zehan W…

构建Node.js单可执行应用(SEA)的方法

如果为了降低部署复杂度&#xff0c;可以考虑使用vercel/ncc。除非有特别理由&#xff0c;不建议使用SEA。1. 环境准备1.1. 基础要求Node.js: > 19.0.0 (推荐最新LTS版本)1.2. 安装依赖npm install postject typescript1.3. 验证环境node -v # 确认版本 > 19 ts…

Java19 Integer 位操作精解:compress与expand《Hacker‘s Delight》(第二版,7.4节)

compress(int i, int mask) 这个方法是Java 19中新增的一个强大的位操作函数。compress 方法的核心功能可以理解为 “按位过滤和压缩” 。过滤 (Filter): 它使用 mask&#xff08;掩码&#xff09;作为过滤器。对于输入整数 i&#xff0c;只有那些在 mask 中对应位为 1 的比特才…

minio部署和双机热备

安装单机版MinIO&#xff08;准备2台机器A、B,A、B服务器操作一致&#xff09;切换目录并下载MinIO二进制文件cd /usr/local/bin wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio chmod x minio编辑配置文件vi /etc/default/minio.confMINIO_VOLUMES&quo…

【Java】 Java 21 革命性升级:虚拟线程与结构化并发的深度实践指南

还在为高昂的AI开发成本发愁?这本书教你如何在个人电脑上引爆DeepSeek的澎湃算力! Java 21 作为 Oracle JDK 的长期支持版本,引入了多项革命性特性,其中虚拟线程(Virtual Threads)和结构化并发(Structured Concurrency)尤为突出。这些特性旨在解决传统线程模型在高并发…

Apache IoTDB 全场景部署:基于 Apache IoTDB 的跨「端-边-云」的时序数据库 DB+AI

Apache IoTDB 全场景部署&#xff1a;基于 Apache IoTDB 的跨「端-边-云」的时序数据库 DBAI 文章目录Apache IoTDB 全场景部署&#xff1a;基于 Apache IoTDB 的跨「端-边-云」的时序数据库 DBAIApache IoTDB 介绍Docker部署指导企业版数据库配套工具 WorkbenchTimechoDB&…

计算机网络---传输控制协议Transmission Control Protocol(TCP)

一、TCP的定位与核心特性 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是TCP/IP协议栈中传输层的核心协议&#xff0c;与UDP&#xff08;用户数据报协议&#xff09;共同承担端到端数据传输功能。其设计目标是在不可靠的IP网络上提供可靠…

week1-[分支嵌套]公因数

week1-[分支嵌套]公因数 题目描述 给定 444 个正整数 a,b,c,ka,b,c,ka,b,c,k。如果 a,b,ca,b,ca,b,c 都是 kkk 的倍数&#xff0c;那么称 kkk 是 a,b,ca,b,ca,b,c 的公因数。否则如果某两个数都是 kkk 的倍数&#xff0c;那么称 kkk 是这两个数的公因数。问 kkk 是哪些数的公因…