RHCE9学习指南 第8章 用户管理

news2024/9/28 5:32:59

8.1 基本概念

用户在操作系统中是非常重要的一块,我们登录系统,访问共享文件夹等都需要用户进行验证。所以,掌握管理用户的知识是非常有必要的。
说到用户,我们会提到两个名词账户信息和木马信息。
账户信息:我们可以理解为QQ号码,QQ签名,QQ中填写的个人资料等。
密码信息:就是登录QQ的密码。
用户的账户信息是存储在/etc/passwd中的,在此文件中一行一个用户的信息,用“:”隔开,例如,下图所示的例子。
file

1:用户名。
2:原来此处用于存储用户的密码,因为安全性问题,这里统一用x作为占位符。
3:用户的uid,每个用户都会有一个user id,简称为uid。root的uid为0。
4:用户的gid,每个组也会有一个group id,简称为gid。
5:用户的描述信息。
6:用户的家目录。
7:用户的shell。
上面的命令也可以通过命令“getent password 用户名”获取,如下所示。

[root@server ~]# getent  passwd  lduan
lduan:x:1000:1000:lduan:/home/lduan:/bin/bash
[root@server ~]#

用户的密码信息存储在/etc/shadow中,如下所示。

[root@server ~]# grep lduan /etc/shadow
lduan:$6$Z7aM5EPapyU3cvCV$ha.zQkx9XgRmGyMnub.Fw7hqxmcwhGxMqXGSO.ZXmFt.uBXSpzbzQ.1ATUfyNBA6gppPigSU45NatmpipZv48/::0:99999:7:::
[root@server ~]# 

上面第一个和第二个冒号之间部分的斜体字就是被加密后的密码。上面的信息也可以通过命令“getent shadow 用户名”获取,如下所示。

[root@server ~]# getent shadow lduan
lduan:$6$Z7aM5EPapyU3cvCV$ha.zQkx9XgRmGyMnub.Fw7hqxmcwhGxMqXGSO.ZXmFt.uBXSpzbzQ.1ATUfyNBA6gppPigSU45NatmpipZv48/::0:99999:7:::
[root@server ~]#

判断一个用户存在不存在可以使用“id 用户名”,如下所示。

[root@server ~]# id tom
id: “tom”:无此用户
[root@server ~]# 

这里tom用户不存在,则显示无此用户。如果用户存在则显示用户信息,如下图所示。
file

1:显示用户的uid信息
2:显示用户的gid信息
3:显示用户的gid信息
如果id后面没有跟用户,则显示当前用户自己的信息。

[root@server ~]# id 
uid=0(root) gid=0(root)=0(root) 环境=unconfined_u:unconfined_r:unc...
[root@server ~]#

8.2 管理用户

管理用户包括创建用户和修改用户属性。

8.2.1 创建用户

利用命令useradd可以创建用户,useradd中常见的选项包括8种。
(1)-d:用户指定家目录,默认为/home/用户名。
(2)-m:创建家目录,默认就创建一般不用指定。
(3)-M:不为用户创建家目录,即创建好用户之后没有“/home/用户名”。
(4)-s:用户指定用户的shell,默认为/bin/bash。
(5)-c:用来指定备注信息,不指定则为空。
(6)-u:指定用户UID。
(7)-g:默认情况下创建用户时会创建一个同名组,例如,创建tom用户,则会创建一个tom组,然后把tom用户加入tom组中,如果指定了-g root,则创建用户时直接把tom加入root组,就不会再创建tom组,此时tom只属于一个组。
(8)-G:指定附属组,即把用户加入一个额外的组,此时tom属于2个组。
如果-g -G同时指定比如 -g root -G users 意思就是不再为tom创建命名组直接加入root组,同时再额外地加入users组,此时tom就属于2个组,即root和user组。
下面创建tom用户,如下所示。

[root@server ~]# useradd -d /tom -s /sbin/nologin \
>  -c "Im tom" -u 2000 -g root -G users tom
[root@server ~]#

这里创建一个tom用户,因为命令太长所以最后加一个反斜线后按【Enter】键,这里虽然换行了但是系统会认为仍然是一行的。
记住反斜线后面不能有空格,当按【Enter】键之后前面会自动出现一个提示符“>”,这个“>”不是我们输入的。
现在查看tom用户的属性,如下所示。

[root@server ~]# grep tom /etc/passwd
tom:x:2000:0:Im tom:/tom:/sbin/nologin
[root@server ~]#

可以看到,这里tom的属性完全是按照我们的要求创建出来的。
查看下密码信息,如下所示。

[root@server ~]# grep tom /etc/shadow
tom:!!:18848:0:99999:7:::
[root@server ~]#

因为我们在创建用户时,并没有指定用户的密码,所以这里密码为空。当我们创建用户时,没有给这个用户设置密码,则这个用户是处于被锁定状态即不能登录,如下所示。

[root@server ~]# passwd -S tom
tom LK 2023-12-23 0 99999 7 -1 (密码已被锁定。)
[root@server ~]#

现在为tom设置密码,可以通过如下所示命令。

[root@server ~]# passwd tom
更改用户 tom 的密码 。
新的 密码:haha001
无效的密码: 密码少于 8 个字符
重新输入新的 密码:haha001
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]#

这里把密码设置为haha001,或者使用如下命令。

[root@server ~]# echo haha001 | passwd --stdin tom

更改用户 tom 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]#

再次查看用户的状态,如下所示。

[root@server ~]# passwd -S tom
tom PS 2023-12-23 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@server ~]#

这里显示用户已经设置了密码,查看密码信息,如下所示。

[root@server ~]# grep tom /etc/shadow
tom:$6$dj7axXv3/Dw7FliM$DRlhxqOKlHCVmjrkzlk30jFYsEGm7LjQyanzZswAVpDgvo8055XJKv0LsIS9Y4kTIJMscup4mrw3qy/cg6Enl0:18848:0:99999:7:::
[root@server ~]#

这里已经有了密码。
但是现在用户仍然是不能登录的,我们现在用su命令切换到tom用户:

[root@server ~]# su - tom
This account is currently not available.
[root@server ~]#

这是因为tom用户的shell被设置为了/sbin/nologin,任何用户的shell被设置为/sbin/nologin,则此用户是不能登录系统的。那么,创建此用户的意义何在?很多时候我们搭建了服务,如用samba共享了一个目录,希望其他主机来访问此共享目录时不能以匿名用户访问,必须要输入相关的用户名和密码,但又不想让他能登录系统,这种情况下就可以用到了。

8.2.2 修改用户属性

如果想修改用户属性,可以使用usermod选项,usermod命令所能用到的选项和useradd是差不多的,下面讲最常见的5个选项。
(1)-c:修改注释信息。
(2)-s:修改shell信息。
(3)-d:修改家目录。
(4)-L:锁定用户。
(5)-U:解锁用户。
把tom的shell改成/bin/bash,并把备注信息修改成 hello tom,如下所示。

[root@server ~]# usermod -s /bin/bash -c "hello tom" tom
[root@server ~]# 
[root@server ~]# grep tom /etc/passwd
tom:x:2000:0:hello tom:/tom:/bin/bash
[root@server ~]#

1. 锁定用户

锁定用户的命令如下所示。

[root@server ~]# usermod -L tom
[root@server ~]# passwd -S tom
tom LK 2023-12-19 0 99999 7 -1 (密码已被锁定。)
[root@server ~]# 

锁定用户,使用root用户是可以su过去的,但是使用其他用户是不能su过去的,如下所示。

[root@server ~]# su - tom
[tom@server ~]$ exit
注销
[root@server ~]#

root用户可以su过去。再打开一个终端,这个终端中是以lduan用户登录的,然后通过su命令切换到tom用户,如下所示。

[lduan@server ~]$ su - tom
密码:
su: 鉴定故障
[lduan@server ~]$ 

可以看到,lduan用户su不过去,提示为鉴定故障。

2. 解锁用户

如果要解锁用户,可以用usermod -L命令,下面把tom用户解锁。

[root@server ~]# usermod -U tom
[root@server ~]# passwd -S tom
tom PS 2023-12-19 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@server ~]#

在第二个终端中用lduan用户su到tom。

[lduan@server ~]$ su - tom
密码:
[tom@server ~]$ whoami
tom
[tom@server ~]$ pwd
/tom
[tom@server ~]$ exit
注销
[lduan@server ~]$ 

此时其他用户是可以正常切换的。

3. 修改用户家目录

前面已经看到了,tom用户的家目录设置为/tom,现在想把家目录改到/home/tom,命令如下所示。

[root@server ~]# usermod -d /home/tom tom
[root@server ~]# grep tom /etc/passwd
tom:x:2000:0:hello tom:/home/tom:/bin/bash
[root@server ~]#

可以看到,tom的家目录已经设置为了/home/tom,在第二个终端中测试输入如下命令。

[lduan@server ~]$ su - tom
密码:
su: 警告:无法更改到 /home/tom 目录: 没有那个文件或目录
[tom@server lduan]$

这里显示无法切换到/home/tom,因为创建用户时用户的家目录是创建在/tom下的,但是手动修改tom的家目录为/home/tom,但是这个家目录并没有在/home下创建,所以才会出现刚才的问题。我们只要把原来的家目录拷贝过去即可,在第一个终端中执行如下命令。

[root@server ~]# cp -a /tom/ /home/
[root@server ~]# ls /home/
lduan  tom
[root@server ~]#

再回到第二个终端中测试,输入如下命令。

[tom@server lduan]$ exit
注销
[lduan@server ~]$ su - tom
密码:
[tom@server ~]$ pwd
/home/lduan
[tom@server ~]$ exit
注销
[lduan@server ~]$

可以看到,已经可以切换到家目录了。

4. 管理组

所有组的信息都是放在/etc/group中的,如果判断一个组是否存在,可以到/etc/group中查询,例如,现在判断bob组是否存在,命令如下。

[root@server ~]# grep bob /etc/group
[root@server ~]#

没有任何结果显示,则是bob组不存在,如果想创建一个新的组,则用“groupadd 组名”,例如,现在要创建bob组,命令如下。

[root@server ~]# groupadd bob
[root@server ~]# grep bob /etc/group
bob:x:1001:
[root@server ~]#

如果要删除某个组,则用groupdel 组名,例如,现在要删除bob组,命令如下。

[root@server ~]# groupdel bob
[root@server ~]# grep bob /etc/group
[root@server ~]#

创建组时,可以通过-g来指定gid信息,例如,创建bob组,组id设置为3000,命令如下。

[root@server ~]# groupadd -g 3000 bob
[root@server ~]# grep bob /etc/group
bob:x:3000:
[root@server ~]#

再次删除bob组。
查看用户属于哪个组的,可以用 groups 用户 来查看,例如,查看tom属于哪个组,命令如下。

[root@server ~]# groups tom
tom : root users
[root@server ~]#

可以看到,tom属于root和users组。如果想把用户继续添加到其他组中,可以用“gpasswd -a 用户 组”来添加,例如,现在要把tom加入bin组,命令如下。

[root@server ~]# gpasswd -a tom bin
正在将用户“tom”加入“bin”组中
[root@server ~]# 
[root@server ~]# groups tom
tom : root bin users
[root@server ~]# 

这里可以看到,tom已经属于bin组了。
要是想把用户从某个组中踢出去,则用“gpasswd -d 用户 组”来删除,例如,现在要把tom从bin组中删除,命令如下。

[root@server ~]# gpasswd -d tom bin
正在将用户“tom”从“bin”组中删除
[root@server ~]# groups tom
tom : root users
[root@server ~]#

此处可以看到,tom已经不属于bin组了。

8.3 用户的密码策略

很多人是没有修改密码习惯的,设置了一个密码就一直使用下去,那么这样会带来一定的安全隐患。所以,为了安全性需要设置一定的密码策略,使用的命令是chage。
chage常见的选项包括以下几种。
(1)-l:列出用户的信息。

[root@server ~]# chage -l tom
最近一次密码修改时间			:12月 19, 2023
密码过期时间					:从不
密码失效时间					:从不
	...输出...
[root@server ~]# 

这里也可以看到,tom的密码是在2023-12-19改的。
(2)-d:用于更改最近一次修改密码的日期,如改成2023-12-08。

[root@server ~]# chage -d 2023-12-08 tom
[root@server ~]# chage -l tom
最近一次密码修改时间			:12月 08, 2023
密码过期时间					:从不
密码失效时间					:从不
	...输出...
[root@server ~]#

(3)-E:设置此账户什么时候过期,如要设置2025-12-21日过期。

[root@server ~]# chage -E 2025-12-21 tom
[root@server ~]# chage -l tom
	...输出...
账户过期时间						:12月 21, 2025
两次改变密码之间相距的最小天数		:0
	...输出...
[root@server ~]#

那么,tom用户到了2025-12-21就会被锁定,不能登录系统了。
(4)-E -1:设置为永不过期。

[root@server ~]# chage -E -1 tom
[root@server ~]# chage -l tom
最近一次密码修改时间				:12月 08, 2023
	...输出...
账户过期时间						:从不
	...输出...
[root@server ~]# 

(5)-E 1:立即过期的意思。
(6)-M:最大使用天数,过了这个天数还不修改密码,账户将被锁定。
(7)-m:最小使用天数,两次修改密码的间隔不得低于这个天数,不能今天改了明天再改回去。
(8)-W:达到最大使用天数之前,提前几天警告。如同房贷,提前一周短信通知银行卡余额要足够。
(9)-I:达到最大使用天数之后还没修改密码,不会立即锁定账户,再给你几天的缓冲期,但是在这缓冲期内不管何时登录系统,都会强迫你修改密码。如果在缓冲期内也没有修改密码,则要锁定账户。

[root@server ~]# chage -m 5 -M 30 -W 6 -I 3 tom
[root@server ~]# chage -l tom
最近一次密码修改时间			:12月 08, 2023
密码过期时间					:1月 07, 2024
密码失效时间					:1月 10, 2024
账户过期时间						:从不
两次改变密码之间相距的最小天数		:5
两次改变密码之间相距的最大天数		:30
在密码过期之前警告的天数	:6
[root@server ~]#

这里把最小使用时间设置为5天,密码最大使用天数设置为30天,警告天数为6天,缓冲期为3天。我们能看到上次修改密码是在7月8号,到8月7日是最大使用天数了,加上3天的缓冲期即8月10号,到现在还在缓冲期内(做本实验的日期是8月9号)。在第二个终端中su 到tom。

[lduan@server ~]$ su - tom
密码:旧密码
You are required to change your password immediately (password expired)
Current password: 旧密码
新的 密码:
重新输入新的 密码:
[tom@server ~]$

此处输入原来的密码之后并没有进入系统,而是开始强制设置新密码了。
在第一个终端中,再次把密码设置为haha001。

[root@server ~]# echo haha001 | passwd --stdin tom
更改用户 tom 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]#

设置下次登录强制修改密码,命令如下所示。

[root@server ~]# chage -d 0 tom
[root@server ~]# 

此时tom登录时,必须要重置密码才可以。
上面关于账户的锁定及密码的过期时间,也可以使用passwd命令实现,如下图所示。
file
提示:具体操作,读者可以自行练习。
这里需要注意的是,如果想清除某用户的密码,可以使用passwd -d 用户名 来实现,命令如下所示。

[root@server ~]# passwd -d tom
清除用户的密码 tom。
passwd: 操作成功
[root@server ~]# passwd -S tom
tom NP 2021-08-09 5 30 6 3 (密码为空。)
[root@server ~]#

tom再登录系统时,是不需要密码的。

[lduan@server ~]$ su - tom
[tom@server ~]$
[tom@server ~]$ exit
注销
[lduan@server ~]$

删除用户的命令是userdel。

[root@server ~]# userdel -r tom
[root@server ~]# ls /home/
lduan
[root@server ~]# id tom
id: “tom”:无此用户
[root@server ~]#

userdel 后面加上-r的意思是除删除此用户外,同时把用户的家目录,邮件等全部删除。

8.4 用户的授权

前面讲了普通用户很多时候权限是不够的,例如,下面的命令。

[lduan@server ~]$ mount /dev/cdrom /mnt
mount: 只有 root 能执行该操作
[lduan@server ~]$ 

要执行该操作,需要使用su命令切换到root。但是并不希望其他人知道root密码,那怎么办?那么,我们可以让root用户通过sudo对普通用户进行授权。
首先查看本机的主机名,命令如下所示。

[root@server ~]# hostname
server.rhce.cc
[root@server ~]#

到/etc/sudoers.d/下随便创建一个文件,建议使用用户名作为文件名(不过文件名可以随便取的),这样比较方便看出来是对哪个用户授权的,假设现在对lduan用户授权,则创建文件/etc/sudoers.d/lduan,文件中的格式如下。

userX   主机名Z=(userY)    命令1,命令2,命令3,...

这里表明授权用户userX在主机名Z这台主机上有权限执行命令1,命令2,命令3,…。

需要注意的是,这里主机名要写本机的主机名,不要写错了,为了防止写错,可以把主机名写成ALL。

userX   ALL=(userY)    命令1,命令2,命令3,...

如果要通过sudo给某个组里所有的用户授权的用法是:

%组名   主机名Z=(userY)    命令1,命令2,命令3,...

假设现在授权lduan用户在本机能以root身份使用mount命令,编辑内容如下。

[root@server ~]# cat /etc/sudoers.d/lduan
lduan	server.rhce.cc=(root)	/bin/mount
[root@server ~]#

用户要是想执行sudo授权过的命令,则命令前面要加上sudo。
在另外一个终端中,执行mount命令,如下所示。

[lduan@server ~]$ sudo mount /dev/cdrom /mnt
	...输出...
[sudo] lduan 的密码:此处输入lduan的密码
mount: /mnt: WARNING: device write-protected, mounted read-only.
[lduan@server ~]$

此时可以看到,已经可以执行了,这里输入的密码会保留5分钟,5分钟之内再次执行sudo是不要密码的,过了5分钟再执行sudo命令则还需要密码。可以使用“sudo -k”立即清除记忆的密码。
下面执行umount操作,命令如下所示。

[lduan@server ~]$ sudo umount /mnt
对不起,用户lduan无权以root的身份在server.rhce.cc上执行/bin/umount /mnt。
[lduan@server ~]$

还是不行,为何?因为我们只授权lduan执行mount命令,并没授权执行umount命令。下面使用root授权lduan能执行umount命令,修改/etc/sudoers.d/lduan内容如下。

[root@server ~]# cat /etc/sudoers.d/lduan
lduan	server.rhce.cc=(root)	/bin/mount,/bin/umount
[root@server ~]#

此时对lduan授权mount和umount命令,然后到第二个终端中再次执行如下命令。

[lduan@server ~]$ sudo umount /mnt
[lduan@server ~]$

已经可以正常执行了。
查看lduan被授权执行哪些命令,可以通过sudo -l查看,命令如下所示。

[lduan@server ~]$ sudo -l
...一堆输出...
用户lduan可以在server上运行以下命令:
    (root) /bin/mount, /bin/umount
[lduan@server ~]$

前面介绍了sudo命令需要输入密码,这个密码会保留5分钟,如果想修改此默认时间,可以通过vim修改/etc/sudoers添加Defaults timestamp_timeout=N,此处N为一个数字,单位为分钟,如果想立即清除保存的密码,用sudo -k即可。
如果让lduan执行授权命令时不需要输入密码,则可以加上NOPASSWD即可,修改/etc/sudoers.d/lduan内容如下。

[root@server ~]# cat /etc/sudoers.d/lduan
lduan    server.rhce.cc=(root) NOPASSWD:   /bin/mount,/bin/umount
[root@server ~]# 

在另外终端上验证,命令如下所示。

[lduan@server ~]$ sudo -k
[lduan@server ~]$ sudo mount /dev/cdrom /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
[lduan@server ~]$ sudo -k
[lduan@server ~]$ sudo umount /mnt
[lduan@server ~]$

此时并没有输入密码,这里特意执行sudo -k的目的就是确保没有缓存密码。
如果想授权所有命令给lduan,则可以在命令位置上用ALL替代,命令如下所示。

[root@server ~]# cat /etc/sudoers.d/lduan
lduan      server.rhce.cc=(root) NOPASSWD:      ALL
[root@server ~]#

此时lduan用户通过sudo -i无密码切换到root用户,命令如下所示。

[lduan@server ~]$ sudo -i
[root@server ~]# 
[root@server ~]# exit
注销
[lduan@server ~]$

在编辑/etc/sudoers.d/lduan时,为了防止主机名写错,可以把主机名的位置可以写ALL,命令如下所示。

[root@server ~]# cat /etc/sudoers.d/lduan
lduan            ALL=(root) NOPASSWD:              ALL
[root@server ~]#

8.5重置root密码

在前面已经讲了对用户的管理,我们都是以root用户操作的,如果忘记了root用户的密码,那么该如何重新设置root密码呢?下面开始练习如何重置root密码。
步骤1:首先重启系统,在看到内核引导界面时通过上下键选择第一行(默认选择的就是第一行),如图8-4显示。
file

步骤2:在键盘上按【e】键,表示编辑,通过上下键把光标调到linux那行,然后按键盘上的【End】键,把光标调整到linux那行的最后,输入“rw rd.break”,如下图。
file

步骤3:修改之后按【Ctrl+x】组合键启动系统,之后能看到一个提示符,如下图。
file

然后直接回车,之后进入到界面
file

现在进入的是一个处于内存中的临时系统,之前挂载到"/"的分区/dev/sda1被挂载到当前这个系统的/sysroot目录中了,且这里是以rw的方式挂载的如图。
file

步骤4:通过chroot /sysroot命令切换到硬盘所在系统,如下图。
file

这样我们所处在就不再是内存中的那个临时系统了,而是进入了之前安装在/dev/sda1中的操作系统中了。
步骤6:把root密码修改为redhat111,如下图。
file

步骤7:在/目录下创建隐藏文件/.autorelabel。
file
因为重置了密码,所以要重置selinux标签,创建这个文件的目的就是重置selinux标签。关于selinux的内容,在后面有专门章节讲解。
需要注意的是,这里是/.autorelabel,不是/.autorelable,也不是./autorelabel。
步骤8:执行exit 回车,再次执行exit回车,如下图。
file

之后系统会自动重启系统,不过这里需要稍微等待一会才能重启成功。

作业

  1. 下面哪个文件是存储用户加密后密码信息的?
    a. /etc/passwd
    b. /etc/shadow
    c. /etc/users
    d. /etc/secure

  2. 下面哪个文件是存储用户账户信息的?
    a. /etc/passwd
    b. /etc/shadow
    c. /etc/users
    d. /etc/secure

  3. 下面哪个配置文件,可以指定创建用户时的默认家目录?
    a. /etc/login.defaults
    b. /etc/login.defs
    c. /etc/default/useradd
    d. /etc/default/login.defs

  4. 设置用户tom密码最大使用天数为40天,请问在该使用哪个命令?
    a. chage –M 40 tom
    b. passwdmax 40 tom
    c. chage –m 40 tom
    d. passwd –M 40 tom

  5. 创建用户bob时,默认会为此用户创建一个私人组群bob,现在要求创建bob时不创建bob组,而是直接把bob加入root组,使用哪个选项?
    a. –G
    b. –g
    c. –a
    d. 不可能的

  6. 如果想锁定tom账户,请问用如下哪个命令?
    a. usermod –l tom
    b. usermod –L tom
    c. userloack tom
    d. passwd –L tom

  7. 系统中存在tom用户,如果此时想查看tom的账户信息,可以用的命令是?
    a. getent passwd tom
    b. getent password tom
    c. getent shadow tom
    d. grep tom /etc/passwd

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

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

相关文章

TikTok与环保:短视频如何引领可持续生活方式?

在数字时代,社交媒体平台扮演着塑造文化和价值观的关键角色。而TikTok,作为一款全球短视频平台,不仅塑造着用户的娱乐方式,还在悄然地引领着可持续生活方式的潮流。本文将深入探讨TikTok与环保之间的关系,分析短视频如…

Vue编写登录注册页面前端校验

登录注册校验 template页面 <div class"app-login"><!--登录 --><div class"form"><el-form ref"form" size"large" autocomplete"off" v-if"isLogin" :model"registerData" :r…

2023.12.24 关于 Redis 中 String 类型内部编码 及 应用场景

目录 String 类型内部编码 3 种内部编码方式 String 类型应用场景 Cache 缓存 键名命名规则 计数&#xff08;Counter&#xff09; 共享会话&#xff08;Session &#xff09; 手机验证码 总结 String 类型内部编码 3 种内部编码方式 int&#xff1a;用来表示 64 位 —…

计算机网络基础知识分享

计算机网络基础知识分享 发送一个http请求&#xff0c;从客户端到服务器端&#xff0c;都经历了什么? **Ⅰ&#xff0c;浏览器生成消息 ** &#xff08;1&#xff09;浏览器输入网址 我们的探索之旅从在浏览器中输入网址开始&#xff0c;网址&#xff0c;准确来说应该叫 UR…

鸿蒙4.0基础开发教程

开发准备 熟悉鸿蒙官网安装DevEco studio开发工具 熟悉官网和安装开发工具视频,本套笔记基于这套视频所写 ArkTS语言 ArkTs语言文档 例如在页面做个按钮并带有点击效果需要html,css,js共同完成 html(按钮标签)-css(按钮样式)-js(控制按钮点击操作) 当学完了ArkTs即可以同时…

K8S三台服务器一键部署总结

随着互联网、云计算技术的深入发展&#xff0c;为降低企业大规模云应用建设的难度和成本&#xff0c;支持云应用开发、运行与运维一体化的云应用平台软件应运而生。在数通家族中对企业集成套件的云平台开发、部署、管理、运维进行统一管理&#xff0c;实现数据集成和共享的平台…

【Linux系统基础】(6)在Linux上大数据NoSQL数据库HBase集群部署、分布式内存计算Spark环境及Flink环境部署详细教程

大数据NoSQL数据库HBase集群部署 简介 HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。 和Redis一样&#xff0c;HBase是一款KeyValue型存储的数据库。 不过和Redis设计方向不同 Redis设计为少量数据&#xff0c;超快检索HBase设计为海量数据&#xff0c;…

基于深度学习的瓷砖色差分类方法研究——学习笔记(评价:色差的定义太模糊。。。问题描述不清楚,太水了)

文章目录 摘要0 引言1 瓷砖图像处理1.1 图像采集1.2 图像处理 2 基于深度学习的瓷砖色差分类算法设计2.1 数据预处理2.2 卷积神经网络的设计2.3 实验设计 3 瓷砖色差分类平台的设计与实现 摘要 瓷砖是人类建筑不可或缺的一种材料&#xff0c;而瓷砖品质最重要的指标之一就是色…

为什么要出现并发?并发的三要素

大家好&#xff0c;我是"java继父"伯约&#xff0c;假如这篇对大家有帮助的话求一个赞&#xff0c;另外文章末尾放了我从小白到架构师多年的学习资料。 1.为什么需要多线程 众所周知&#xff0c;CPU、内存、I/O 设备的速度是有极大差异的&#xff0c;为了合理利用 C…

一个利用摸鱼时间背单词的软件

大家好&#xff0c;我是 Java陈序员。 最近进入了考试季&#xff0c;各种考试&#xff0c;英语四六级、考研、期末考等。不知道大家的英语四六级成绩怎么样呢&#xff1f; 记得大学时&#xff0c;英语四级都是靠高中学习积累的老本才勉强过关。 而六级则是考了多次&#xff…

cesium实现二三维联动

记录项目中实现二三维地图联动 效果如下&#xff1a; 第一步&#xff1a;现在页面中加载二三维地图&#xff08;地图的初始化已省略&#xff09; <template><div><div><button click"show">二三维联动</button></div><div&…

【Datawhale 大模型基础】第十一章 环境影响

第十一章 环境影响 This blog is based on datawhale files and a paper. The initial consideration revolves around the potential positive or negative direct impact on the environment. Other transformative technological advancements, like the metaverse, are li…

Redis-实践知识

转自极客时间Redis 亚风 原文视频&#xff1a;https://u.geekbang.org/lesson/535?article681062 Redis最佳实践 普通KEY Redis 的key虽然可以自定义&#xff0c;但是最好遵循下面几个实践的约定&#xff1a; 格式&#xff1a;[业务名称]:[数据名]:[id] 长度不超过44字节 不…

C语言蛇形矩阵

文章目录 每日一言题目解题思路全部代码结语 每日一言 山有榛&#xff0c;隰有苓。云谁之思&#xff1f;西方美人。 --邶风简兮 题目 解题思路 话不多说&#xff0c;直接看图 通过观察图表&#xff0c;我想到了这种方法&#xff1a; 我将数字放置的位置分为两大类&#xff…

VMware虚拟机的安装配置

目录 一. VMware虚拟机的安装 二. VMware配置虚拟机 三. VMware安装windows server 2012 一. VMware虚拟机的安装 1. 双击安装&#xff0c;点击下一步 2. 勾选接受许可&#xff0c;点击下一步 3. 选择安装位置&#xff0c;点击下一步 4. 用户体验设置&#xff08;可选&#…

Matlab仿真2ASK/OOK、2FSK、2PSK、QPSK、4QAM在加性高斯白噪声信道中的误码率与归一化信噪比的关系

本文为学习所用&#xff0c;严禁转载。 本文参考链接 https://zhuanlan.zhihu.com/p/667382398 QPSK代码及高斯白噪声如何产生 https://ww2.mathworks.cn/help/signal/ref/butter.html 滤波器 https://www.python100.com/html/4LEF79KQK398.html 低通滤波器 本实验使用matlab仿…

LeetCode刷题--- 字母大小写全排列

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述递归递归、搜索与回…

磁钢的取向和充磁方向

充磁是磁钢生产中的必备工序&#xff0c;如果磁铁不充磁&#xff0c;就不具备磁性&#xff0c;也就丧失了作为永磁材料的基本功能。磁钢作为一个立体的工件&#xff0c;形状和尺寸各异&#xff0c;如何给磁钢充磁&#xff1f;不同方向的充磁效果一样吗&#xff1f;今天我们就来…

Spring源码分析---Bean 的生命周期 03

来源&#xff1a;Spring 3. Bean 的生命周期 自定义一个 SpringBoot 的主启动类&#xff1a; SpringBootApplication public class A03Application {public static void main(String[] args) {ConfigurableApplicationContext context SpringApplication.run(A03Applicatio…

什么牌子国产主食冻干猫粮好?十大放心猫粮国产名单前五名推荐

很多新手铲屎官在为自家猫咪购买猫食品时&#xff0c;都会非常注重成分和安全性。养了这么多年的猫&#xff0c;可以说&#xff0c;他们购买过的猫食品数量一定比大多数人都要多。自从冻干猫粮流行起来之后&#xff0c;很多铲屎官都开始给自家的猫咪喂冻干。冻干不仅可以作为主…