Linux基础_3

news2024/10/7 13:19:17

一、Linux安全模型

资源分派:

  • Authentication:        认证:验证用户身份
  • Authorization:          授权:不同的用户设置不同权限
  • Accouting|Audition: 审计

当用户成功登录时,系统会自动分配令牌token,包括:用户标识UID和组成员等信息


1 用户

Linux中每个用户是通过User Id (UID)来唯一标识的。

  • 管理员: root,0(不一定是root)

  • 普通用户: 1-60000 自动分配
    • 系统用户:1-499 (C6以前),1-999 (C7以后),对守护进程获取资源进行权限分配
    • 登录用户: 500+ (C6以前),1000+ (C7以后), 给用户进行交互式登录使用

     


2 用户组

Linux中可以将一个或多个用户加入用户组中,用户组是通过Group ID (GID) 来唯一标识的。

  • 管理员组:root,0(不一定是root)
  • 普通组:
    • 系统组:1-499 (C6以前),1-999 (C7以后),对守护进程获取资源进行权限分配
    • 普通组:500+  (C6以前),1000+ (C7以后),给用户使用

3 用户和组的关系

  • 用户的主要组(primary group): 用户必须属于一个且只有一个主组,默认创建用户时会自动创建和用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组(必要的)

  • 用户的附加组(supplementary group):    一个用户可以属于零个或多个辅助组

  • Linux里允许组和用户同名

 前面是主要组,后面是附加组


4 安全上下文

Linux安全上下文Context: 运行中的程序,即进程(process),以进程发起者的身份运行,进程所能够访问资源的

权限取决于进程的运行者的身份

比如: 分别以root和个人用户joyce的身份运行bin/cat/etc/shadow ,得到的结果是不同的,资源/文件能否能被访问,是由运行者的身份决定,非程序本身


二、用户和组的配置文件

1 用户和组的主要配置文件

  • /etc/passwd:      用户及其属性信息(名称、UID、主组ID等)
  • /etc/shadow:      用户密码及其相关属性     
  • /etc/group:         组及其属性信息
  • /etc/gshadow:    组密码及其相关属性

2 passwd文件格式

  • login name:  登录用名 (wang)
  • passwd:       密码(x)
  • UID:             用户身份编号(1000)
  • GID:             登录默认所在组编号(1000)
  • GECOS:      用户全名或注释
  • home directory:用户主目录(/home/wang)
  • shell:            用户默认使用shell(/bin/bash)

3 shadow文件格式

以下均用::分割每个属性

  • 登录用名
  • 用户密码:一般用sha512加密
  • 从1970年1月1日起到密码最近一次被更改的时间
  • 密码再过几天可以被变更
  • (0表示随时可被变更)
  • (99999表示永不过期)
  • 密码再过几天必须被变更
  • 密码过期前几天系统提醒用户(默认为一周)
  • 密码过期几天后帐号会被锁定
  • 从1970年1月1日算起,多少天后帐号失效

更改密码加密算法

authconfig    --passa1go=sha256    --update

密码的安全策略

  • 足够长
  • 使用数字、大写字母、小写字母及特殊字符中至少3种
  • 使用随机密码
  • 定期更换,不要使用最近曾经使用过的密码

生成随机密码

tr -dc '[:alnum:]' < /dev/urandom | head -c 12  :在urandom中取前12位
openssl rand -base64 9	 :生成9位随机数

4 group文件格式

  • 群组名称:    就是群组名称
  • 群组密码:    通常不需要设定,密码是被记录在/etc/gshadow
  • GID:     就是群组的ID
  • 以当前组为附加组的用户列表(分隔符为逗号)

5 gshdow文件格式

  • 群组名称:   就是群的名称
  • 群组密码:
  • 组管理员列表:    组管理员的列表,更改组密码和成员
  • 以当前组为附加组的用户列表:多个用户间用逗号分隔

6 文件操作

  • vipw和vigr
  • pwck和grpck

三、用户和组管理命令

用户管理命令

  • useradd
  • usermod
  • userdel

组帐号维护命令

  • groupadd
  • groupmod
  • groupdel

1 用户创建

useradd 命令可以创建新的Linux用户

useradd [options] LOGIN

常见选项:

  • -U     UID
  • -o     配合 -u 选项,不检查UID的唯一性
  • -g     GID 指明用户所属基本组,可为组名,也可以GID
  • -c    “COMMENT” 用户的注释信息
  • -d     HOME_DIR 以指定的路径(不存在)为家目录
  • -S     SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
  • -G    GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在
  • -N    不创建私用组做主组,使用users组做主组
  • -r     创建系统用户 Centos 6之前:ID<500,Centos 7以后:ID<1000
  • -m   创建家目录,用于系统用户
  • -M   不创建家目录,用于非系统用户

useradd 命令默认值设定由/etc/default/useradd定义

[11:16:25 root@CentOS8]#cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1		对应/etc/shadow文件第7列,即用户密码过期的宽限期
EXPIRE=			对应/etc/shadow文件第8列,即用户账号的有效期
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

新建用户的相关文件

/etc/default/useradd 新建账号时的默认设置文件
/etc/skel/*    新建账号都配置有的文件目录
/etc/login.defs 存放口令相关配置

批量创建用户

newusers passwd格式文件

批量修改用户口令,,可以将前面保存成文件直接管道

echo username:passwd | chpasswd

2 用户属性修改

usermod 命令可以修改用户属性

usermod [OPTION] ogin

常见选项:

  • -u     UID:    新UID
  • -g     GID:     新主组
  • -G    GROUP1LGROUP2..[GROUPN]: 新附加组,原来的附加组将会被覆盖,若保留原有,则要同时使用-a选项
  • -S    SHELL:    新的默认SHELL
  • -c    'COMMENT:新的注释信息
  • -d    HOME:     新家目录不会自动创建,若要创建新家目录并移动原家数据,同时使用-m选项
  • -l     login_name:新的名字
  • -L    lock    指定用户,在/etc/shadow 密码栏增加!
  • -U   unlock    指定用户将 /etc/shadow 密码栏的!拿掉
  • -e    YYYY-MM-DD:指明用户账号过期日期
  • -f     INACTIVE    设定非活动期限,宽限期

3 删除用户

userdel可删除Linux 用户

userdel [OPTION]... Login

常见选项:

-f    --force        强制  
-r    --remove    删除用户家目录和邮箱 (慎用,数据比较重要)


4 查看用户相关的ID信息

id 命令可以查看用户的UID,GID等信息

id [OPTION]... [USER]

常见选项:

  • -u     显示UID
  • -g     显示GID
  • -G    显示用户所属的组的ID
  • -n     显示名称,需配合ugG使用

5 切换用户或以其他用户身份执行命令

su: 即switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

su [options...] [-] [user [args...]]

切换用户的方式:

  • su UserName:     非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
  • su-UserName:    登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

说明: root su至其他用户无须密码;非root用户切换时需要密码

换个身份执行命令:

su [-] UserName -c 'COMMAND'

常见选项:

-l    --login su -l UserName 相当于su-UserName

6 设置密码

passwd可以修改用户密码

passwd [OPTIONS] UserName

常用选项:

  • -d     删除指定用户密码
  • -l      锁定指定用户
  • -u    解锁指定用户
  • -e    强制用户下次登录修改密码
  • -f     强制操作
  • -n    mindays     指定最短使用期限
  • -x    maxdays    最大使用期限
  • -w     warndays 提前多少天开始警告
  • -i    inactivedays    非活动期限
  • --stdin        从标准输入接收用户密码

如:

echo "PASSWORD" |  passwd --stdin USERNAME

7 修改用户密码策略

chage可以修改用户密码策略

chage [OPTION]... LOGIN

常见选项:

  • -d    LAST_DAY
  • -m  --mindays   MIN_DAYS
  • -M  --maxdays  MAX_DAYS
  • -W --warndays  WARN_DAYS
  • -I   --inactive     INACTIVE    密码过期后的宽限期
  • -E --expiredate  EXPIRE_DATE    用户的有效期
  • -l    显示密码策略

8 用户相关的其它命令

chfn 	指定个人信息
chsh 	指定shell
finger 	可看用户个人信息

9 创建组

groupadd实现创建组

groupadd [OPTIoN]... group_name

常见选项:

  • -g    GID    指明GID号;[GID_MIN,GID_MAX]
  • -r        创建系统组,Centos 6之前:ID<500,CentOs 7以后:ID<1000

范例:

groupadd -g 48 -r apache

10 修改组

组属性修改: groupmod

groupmod [OPTION]... group

常见选项:

  • -n group_name:新名字
  • -g GID: 新的GID

11 组删除

groupdel 可以删除组

groupde1 [options] GROUP

常见选项:

  • -f,--force 强制删除,即使是用户的主组也强制删除组

12 临时切换主组

su命令可以切换主组

su 用户

四、文件权限管理


4.1 文件所有者和属组属性操作

  • 如果用户属于所有者,即有前3个权限。
  • 如果用户属于所属组,则有中间3个权限
  • 如果都不属于,则有最后3个权限
  • 从左到右顺序匹配,如果是所有者,权限立即生效,不再匹配后面2个

4.1.1 设置文件的所有者chown

chown 命令可以修改文件的属主,也可以修改文件属组

chown [OPTION]...[OWNER][:[GROUP]] FILE...
chown [OPTION]...--reference=RFILE FILE..

用法说明:

  • OWNER    只修改所有者
  • OWNER:GROUP     同时修改所有者和属组
  • :GROUP     只修改属组,冒号也可用.替换
  • -R:     递归,修改文件夹及文件夹中文件,慎用
  • --reference=RFILE 参考指定的的属性,来修改

范例:我先修改所有者,再修改属组

 也可同时修改,:前写所有者后写属组即可

4.1.2 设置文件的属组信息chgrp

chgrp 命令可以只修改文件的属组

chgrp [OPTION]...GROUP FILE.
chgrp [OPTION]...--reference=RFILE FILE...
-R递归

4.2 文件权限

4.2.1 文件权限说明

文件的权限主要针对三类对象进行定义
每个文件针对每类访问者都定义了三种权限

  • owner     属主,u
  • group     属组,g
  • other      其他,o

每个文件针对每类访问者都定义了三种常用权限

  • r      ReadabTe
  • w    Writable
  • x     eXcutabTe

对文件的权限:

  • r    可使用文件查看类工具,比如: cat,可以获取其内容
  • w    可修改其内容
  • x    可以把此文件提请内核启动为一个进程,即可以执行(运行) 此文件(此文件的内容必须是可执行)

对目录的权限:

  • r      可以使用ls查看此目录中文件列表
  • w    可在此目录中创建文件,也可删除此目录中的文件
  • x     可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
  • X    只给目录x权限,不给3个用户都无执行权限的文件x权限

八进制数字:

--- 000 0
--x 001 1
-W- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

 如:

755 rwx r-x r-x
640 rw- r-- ---

 

 4.2.2 修改文件权限chmod

​​​​​​​chmod [OPTION]... MODE[,MODE]... FILE...    模式法
chmod [OPTION]... OCTAL-MODE FILE...        数字法    
#参考RFILE文件的权限,将FILE的修改为同RFILE
chmod [OPTION]... --reference=RFILE FILE...

说明:

MODE:who opt permission
who:u, g, o, a
opt:+, -, =
permission:r , w, x

修改一类用户的所有权限

  • u= g= o= ug= a= u=,g=

修改一类用户某位或某些位权限

  • u+ u- g+ g- 0+ 0- a+ a- + -
  • -R: 递归修改权限

范例:

chmod u+wx,g-r,o=rx filename

对于文件夹:

  • 只有 wx 权限,不能列出文件夹中文件,如果事先知道,则可以修改与访问文件
  • 只有 rw 权限,不能进去文件夹,能读出文件夹中文件,但不能删除文件

所以一般文件夹的权限: rwx / rx / ---


4.3 新建文件和目录的默认权限

umask的值可以用来保留在创建文件权限

umask		查看当前umask值
umask -S	模式方式显示
umask -p	数字方式显示
 
umask #     修改umask为#(临时)

实现方式:

新建文件的默认权限:666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
新建目录的默认权限:777-umask
  • 非特权用户umask默认是002
  • root的umask 默认是022

仅对某个生成的文件改用特殊的umask,而不影响系统当前的umask,即一次性使用

( umask 666; touch /data/f1.txt ) 

持久保存umask

  • 全局设置:/etc/bashrc
  • 用户设置:~/.bashrc

注意:修改文件系统权限需要文件系统支持,而和操作系统无关


4.4 Linux文件系统上的特殊权限

前面介绍了三种常见的权限: r,w,x 还有三种特殊权限:SUID,SGID,sticky

4.4.1 特殊权限SUID

前提:进程有属主和属组,文件有属主和属组SUID权限的设置:

chmod u+s  file...
chmod 6### file...
chmod u-s  file...
  • 1.任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
  • 2.启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
  • 3.进程访问文件时的权限,取决于进程的发起者
    • (a)进程的发起者,同文件的属主: 则应用文件属主权限
    • (b)进程的发起者,属于文件属组;则应用文件属组权限
    • (c)应用文件其它”权限

二进制的可执行文件上SUID权限功能:

  • 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
  • 启动为进程之后,其进程的属主为原程序文件的属主
  • SUID只对二进制可执行程序有效
  • SUID设置在目录上无意义

4.4.2 特殊权限SGID

二进制的可执行文件上SGID权限功能

    任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
启动为进程之后,其进程的属组为原程序文件的属组

SGID权限设定:

chmod g+s  FILE..
chmod 2### FILE
chmod g-s  FILE...

目录上的SGID权限功能

默认情况下,用户创建文件时,其属组为此用户所属的主组,一旦某目录被设定了SGID,则对此目录有写权限的
用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录

4.4.3 特殊权限 Sticky 位

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件

sticky 设置在文件上无意义

Sticky权限设定:

chmod o+t  DIR..
chmod 1### DIR
chmod o-t  DIR...

4.4.4 特殊权限数字法

SUID SGID STICKY
 4       2     1
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

范例:

chmod 4777 /tmp/a.txt 给a.txt文件以suid权限,相当于u+s
chmod 6777 /tmp/a.txt 给a.txt文件以suid和sgid权限,相当于u+s,g+s
chmod 7777 /tmp/a.txt 给a.txt文件以suid和sgid权限和sticky,相当于u+s,g+s,o+t

权限位映射

suID: 	user,占据属主的执行权限位
	s:	属主拥有x权限
	S:	属主没有x权限
SGID: 	group,占据属组的执行权限位
	s:group拥有x权限
	S:group没有x权限
Sticky:	other,占据other的执行权限位
	t:other拥有x权限
	T:other没有x权限

4.5 设定文件特殊属性

设置文件的特殊属性,可以防止 root 用户误操作删除或修改文件

不能删除,改名,更改
chattr +i filename
删除i的功能:-i即可
chattr -i filename

只能追加内容,不能删除和改名
chattr +a filename
删除a的功能:-a即可
chattr -a filename

显示带有的特定属性
lsattr

4.6 访问控制列表

我们目前有3种身份的用户:所有者、属组、other
当我们想要给某个用户单独设置一些特殊的不属于以上3种身份权限的用户时,传统Linux无法实现
未来实现这种功能,可以使用ACL

4.6.1 ACL权限功能

ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
Centos7默认创建的xfs和ext4文件系统具有ACL功能
Centos7之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

tune2fs -o ac1 /dev/sdb1
mount -o ac1 /dev/sdb1 /mnt/test

ACL生效顺序:

所有者,自定义用户,所属组|自定义组,其他人
 

4.6.2 ACL相关命令

setfacl可以设置ACL权限
setfacl -m u:joyce:0/rx filename    设置ACL权限
setfacl -b u:joyce filename            取消ACL权限

getfacl可查看设置的ACL权限

mask权限

  • mask使所有者和other之外的人和组的权限有一个最大值,不可超过这个值 
  • mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)
  • 用户或组的设置必须存在于mask权限设定范围内才会生效
  • 一旦有了ACL:chmod g=rx filename这种的g不再代表属组,而是mask,而文件--- --- --- 中间的三条也不是组而是mask

范例:

setfac1 -m mask::rx filename 或 chmod g=rx filename

--set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以
范例:

setfac1 --set u::rw,u:wang:rw,g::r,o::- filel

4.6.3 备份和还原ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p参数。但是tar等常见的备份工具是不会保留目录
和文件的ACL信息

getfacl -R /tmp/dir > acl.txt    #备份ACL权限到acl.txt里

setfacl -R -b /tmp/dir    #消除ACL权限

setfacl -R --set-file=acl.txt tmp/dir    #还原ACL权限

setfacl --restore acl.txt    #还原ACL权限

getfacl -R /tmp/dir        #查看ACL权限

一般情况下,ACL比chmod更加方便安全,因为chmod修改后如果我们不记得原来的权限,则很难恢复;还容易给文件增加执行权限。而ACL是单独设置,修改后如果想修改也很简单,更加安全

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

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

相关文章

从CPU缓存结构到原子操作

文章目录 一、CPU缓存结构1.1 CPU的多级缓存1.2 Cache Line 二、写回策略三、缓存一致性问题及解决方案3.1 缓存一致性问题3.2 解决方案3.2.1 总线嗅探3.2.2 事务的串行化3.2.3 MESI 四、原子操作4.1 什么是原子操作4.2 c 标准库的原子类型4.2.1 atomic<T\>4.2.2 is_lock…

软件安全测试流程与方法分享(上)

安全测试是在IT软件产品的生命周期中&#xff0c;特别是产品开发基本完成到发布阶段&#xff0c;对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。安全是软件产品的一个重要特性&#xff0c;安全测试也是软件测试重的一个重要类别&#xff0c;本系列文章我们与…

MySQL简单查询操作

系列文章目录 前言SELECT子句SELECT后面之间跟列名DISTINCT,ALL列表达式列更名 WHERE子句WHERE子句中可以使用的查询条件比较运算特殊比较运算符BETWEEN...AND...集合查询&#xff1a;IN模糊查询&#xff1a;LIKE空值比较&#xff1a;IS NULL 多重条件查询 ORDER BY子句排序复杂…

线性规划解的概念

一、线性规划的可行解 若x1,x2满足条件[1]-[4],则称向量为线性规划问题的一个可行解。 例如 其中x(1),x(2)为可行解&#xff0c;而x(3),x(4)不是可行解。 二、线性规划的可行域 所有可行解构成的集合称为该线性规划的可行域。 三、线性规划的最优解 使目标函数最大或最小的…

Git ① 通过git将本地两个项目进行合并

一、新建一个本地仓库 ① 新建一个文件夹&#xff0c;打开之后在命令行输入git init 初始化仓库。 git init ② 在新建的文件夹中随便创建一个文件&#xff08;这样才能新建新的分支&#xff0c;不然新建分支命令没有作用&#xff09; ③ 输入命令 git add . 和 git commit…

如何实现对视频录像文件的AI算法分析?

有用户提出需求&#xff0c;提供视频文件给平台&#xff0c;并进行AI算法分析。值得一提的是&#xff0c;我们的平台不仅仅可以基于AI算法&#xff0c;对设备实时传输的视频流进行分析&#xff0c;也能对视频回放录像文件进行智能分析。那么是如何实现的呢&#xff1f; EasyDSS…

Linux 共享内存

概念&#xff1a; 在Linux系统中&#xff0c;共享内存是一种用于进程间通信的机制&#xff0c;它允许多个进程共享同一块内存区域。 Linux 共享内存的作用和目的&#xff1a; Linux共享内存的主要目的是在不同的进程之间实现高效的数据交换和共享。它可以用于以下几个方面&…

在uniapp 小程序 vue中报 错 Cannot read property ‘substring‘ of undefined

是因 是因为对字符串使用substring的时候页面中的数据还没有加载 。 错误代码&#xff1a; 可以使用 v-if 修改为&#xff1a;

Alibaba官方上线!SpringBoot+SpringCloud全彩指南(终极版)

Alibaba作为国内一线互联网大厂&#xff0c;其中SpringCloudAlibaba更是阿里微服务最具代表性的技术之一&#xff0c;很多人只知道SpringCloudAlibaba其实面向微服务技术基本上都有的下面就给大家推荐一份Alibaba官网最新版&#xff1a;SpringSpringBootSpringCloud微服务全栈开…

2023 WAIC | 自然机器人向全球传递新一代智能自动化之声

2023年7月6日-7月8日&#xff0c;备受瞩目的“2023世界人工智能大会”在上海世博中心及世博展览馆隆重召开&#xff0c;本届大会的主题是“智联世界&#xff0c;生成未来”&#xff0c;大会由上海市人民政府和国家发改委、工信部、科技部、国家网信办、中国科学院、中国工程院、…

JavaScript实现归并排序算法详解

JavaScript实现归并排序算法详解 说明 归并排序&#xff08;Merge Sort&#xff09;算法&#xff0c;也叫合并排序&#xff0c;是创建在归并操作上的一种有效的排序算法。算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用&#xff0c;且各层…

Talk预告 | 南洋理工大学助理教授潘新钢:拖动你的GAN - 在生成图像流形上基于控制点的交互式图像编辑

本期为TechBeat人工智能社区第511期线上Talk&#xff01; 北京时间7月6日(周四)20:00&#xff0c;南洋理工大学 助理教授—潘新钢的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “拖动你的GAN - 在生成图像流形上基于控制点的交互式图像编辑”&…

嵌入式_Keil (MDK - ARM) 的调试步骤

目录 1. 编译 调试 2. 复位 全速运行 3. 单步调试 4. 逐步调试 5. 跳出调试 6. 运行到光标处 7. 跳转到暂停行 8. 调试窗口 首先为什么需要在 MDK 中进行程序的调试呢&#xff1f; 在 MDK 中进行程序调试的主要目的是识别和解决程序中的问题和错误。 比如说找到程序中…

五种网络 I/O 模型

文章目录 1. 阻塞式 I/O 模型2. 非阻塞式 I/O 模型3. I/O 多路复用4. 信号驱动式 I/O5. 异步 I/O6. I/O 模型的分类 Unix 下有五种可用的 I/O 模型&#xff1a; 阻塞式 I/O 非阻塞式 I/O I/O 多路复用&#xff08;select/poll/epoll&#xff09; 信号驱动式 I/O&#xff08;…

【Spring MVC】Spring MVC程序开发教程:常见的注解及使用方式详情

前言 Spring MVC是一种常用的Web框架&#xff0c;它可以帮助开发人员快速构建可扩展的Web应用程序。为了提供更好的开发体验和更高的代码效率&#xff0c;Spring MVC提供了各种注解。这些注解可以用于控制器、请求参数、响应类型、表单数据验证、异常处理等方面。在本文中&…

卡尔曼滤波(附C++代码)

是什么 任何时候对于动态系统存在不确定信息&#xff0c;都可使用卡尔曼滤波&#xff08;Kalman Filter&#xff0c;下面简称为KF&#xff09;对系统下一步要做什么做出有根据的猜测。 KF对于连续变化的系统是理想的&#xff0c;优点是占用内存小而且速度快&#xff0c;非常适…

在Linux中安装RabbitMQ

RabbitMQ下载网址 Socat下载网址 erlang下载网址 RabbitMQ安装包依赖于Erlang语言包的支持&#xff0c;所以需要先安装Erlang语言包&#xff0c;再安装RabbitMQ安装包 通过Xftp软件将这三个压缩包上传到linux中的opt目录下 ,双击即可 在安装之前先查询…

Android oss policy上传

OSS Policy方式上传 一、 流程对比1.1 普通上传1.2 服务端签名后直传 二、获取上传的policy签名配置三、请求OSS上传文件四、调用应用服务器接口同步文件五、关于上传OSS报错注意事项六、附送链接 一、 流程对比 1.1 普通上传 缺点&#xff1a; 上传慢&#xff1a;用户数据需…

数学建模常用模型(五):多元回归模型

数学建模常用模型&#xff08;五&#xff09;&#xff1a;多元回归模型 由于客观事物内部规律的复杂性及人们认识程度的限制&#xff0c;无法分析实际对象内在的因果关系&#xff0c;建立合乎机理规律的数学模型。所以在遇到有些无法用机理分析建立数学模型的时候&#xff0c;…

docker中运行RabbitMq的启用插件指南

我们使用 Docker 来运行 RabbitMQ&#xff0c;有时需要启用一些插件&#xff0c;这个与正常安装的启用插件的步骤会有所不同。以下是在 Docker 中启用 RabbitMQ 插件的一般步骤&#xff1a; 首先&#xff0c;确认已经将 rabbitmq_delayed_message_exchange-3.12.0.ez 插件文件复…