【Linux权限 (二)】Linux权限机制深度解析:umask如何决定默认权限与粘滞位的妙用

🔥艾莉丝努力练剑:个人主页

专栏传送门:《C语言》《数据结构与算法》C/C++干货分享&学习过程记录Linux操作系统编程详解笔试/面试常见算法:从基础到进阶

⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平


🎬艾莉丝的简介:


🎬艾莉丝的Linux专栏简介:


目录

前情提示

[1 ~> 本期指令](#1 ~> 本期指令)

[2 ~> 文件访问权限的相关设置方法](#2 ~> 文件访问权限的相关设置方法)

[3 ~> 所属组补充](#3 ~> 所属组补充)

[34 file(知识点补充)](#34 file(知识点补充))

[34.3 file指令回顾](#34.3 file指令回顾)

[34.3.1 功能说明](#34.3.1 功能说明)

[34.3.2 语法](#34.3.2 语法)

[34.3.3 常用选项](#34.3.3 常用选项)

[34.4 file:查看文件更详细类型](#34.4 file:查看文件更详细类型)

[41 sudo(补充知识点)](#41 sudo(补充知识点))

[41.4 使用sudo分配权限](#41.4 使用sudo分配权限)

[41.4.1 修改/etc/sudoers文件分配文件](#41.4.1 修改/etc/sudoers文件分配文件)

[41.4.2 使用sudo调用授权的命令](#41.4.2 使用sudo调用授权的命令)

[41.4.3 示例](#41.4.3 示例)

[53 umask](#53 umask)

[53.1 功能](#53.1 功能)

[53.2 格式](#53.2 格式)

[53.3 说明](#53.3 说明)

[53.4 示例](#53.4 示例)

[53.5 最佳实践](#53.5 最佳实践)

[3 ~> 为什么新建文件的时候,新建的就是我们看到的权限?](#3 ~> 为什么新建文件的时候,新建的就是我们看到的权限?)

[3.1 程序掩码](#3.1 程序掩码)

[3.2 一些细节](#3.2 一些细节)

[3.3 最佳实践](#3.3 最佳实践)

[4 ~> 权限收尾](#4 ~> 权限收尾)

[4.1 目录的权限](#4.1 目录的权限)

[4.2 关于权限的总结](#4.2 关于权限的总结)

[5 ~> 粘滞位(虽是选学,但很重要!)](#5 ~> 粘滞位(虽是选学,但很重要!))

[5.1 粘滞位基础](#5.1 粘滞位基础)

[5.1.1 示例](#5.1.1 示例)

[5.1.2 被设置为粘滞位的目录谁能删?](#5.1.2 被设置为粘滞位的目录谁能删?)

[5.2 再谈关于文件删除的话题](#5.2 再谈关于文件删除的话题)

[5.2.1 普通账号自己删自己创建的文件](#5.2.1 普通账号自己删自己创建的文件)

[5.2.2 普通账号也可以删除root账号创建的文件](#5.2.2 普通账号也可以删除root账号创建的文件)

[5.2.3 删除文件不由目标文件决定,由你这个文件所在的目录权限决定](#5.2.3 删除文件不由目标文件决定,由你这个文件所在的目录权限决定)

[5.3 关于Linux操作系统的话题](#5.3 关于Linux操作系统的话题)

博主手记

一、为什么新建文件的时候,新建的直接就是我们看到的权限

二、粘滞位

结尾


前情提示

1 ~> 本期指令

2 ~> 文件访问权限的相关设置方法

3 ~> 所属组补充

**所属组:**小范围地进行权限管理。



34 file(知识点补充)

【Linux指令 (四)】基础指令收尾:打包、网络、历史与Shell运行原理深度解析------涵盖tar/scp/history/shutdown等Linux核心运维指令

在前面艾莉丝已经介绍过file这个指令了,这里是再补充一些知识点。

34.3 file指令回顾

34.3.1 功能说明

辨识文件类型。

34.3.2 语法

file [选项] 文件或目录 . . .

34.3.3 常用选项

-c:详细显示指令执行过程,便于排错或分析程序执行的情形。
-z:尝试去解读压缩文件的内容。

34.4 file:查看文件更详细类型

file除了可以查看文件的类型之外------

bash 复制代码
[jqj@VM-4-17-centos ~]$ file test.txt
test.txt: empty

还可以------

**功能:**查看一个文件的更详细类型。

bash 复制代码
[jqj@VM-4-17-centos dir]$ file /user/bin/ls
/user/bin/ls: cannot open (No such file or directory)

// 注意不要错写成user哦!!!

[jqj@VM-4-17-centos dir]$ file /usr/bin/ls
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=c8ada1f7095f6b2bb7ddc848e088c2d615c3743e, stripped
[jqj@VM-4-17-centos dir]$ file /usr/bin/yum
/usr/bin/yum: Python script, ASCII text executable

41 sudo(补充知识点)

41.4 使用sudo分配权限

41.4.1 修改/etc/sudoers文件分配文件

bash 复制代码
# chmod 740 /etc/sudoers
# vi /etc/sudoer

格式:接受权限的用户登陆的主机 =(执行命令的用户)命令。

41.4.2 使用sudo调用授权的命令

bash 复制代码
$ sudo-u 用户名 命令

41.4.3 示例

bash 复制代码
$ sudo -u root /usr/sbin/useradd u2

53 umask

53.1 功能

1、查看或修改文件掩码;

2、新建文件夹默认权限=0666;

3、新建目录默认权限=0777;

4、但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是:mask &(~umask)------umask先取反,再和默认权限按位与。

53.2 格式

umask权限值。

53.3 说明

将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为
0022,普通用户默认为0002。

53.4 示例

bash 复制代码
umask 755
umask //查看
umask 044//设置

53.5 最佳实践


3 ~> 为什么新建文件的时候,新建的就是我们看到的权限?

3.1 程序掩码

3.2 一些细节

细节1:不同的系统,不同的用户,umask可能不一样!
细节2:不用担心umask倍更改的问题,退出XShell登录,重新登陆,umask就会恢复默认;
细节3:然后创建一批普通文件?只需要这样:举个例子------hello{1.100}.txt。

3.3 最佳实践

bash 复制代码
[jqj@VM-4-17-centos ~]$ ll
total 8
drwxrwxr-x 2 jqj jqj 4096 Oct 30 10:47 dir
drwxrwxr-x 3 jqj jqj 4096 Oct 27 12:19 gitcode
-rw-rw-r-- 1 jqj jqj    0 Oct 23 11:58 test.txt
[jqj@VM-4-17-centos ~]$ touch hello{1..100}.txt
[jqj@VM-4-17-centos ~]$ ll
total 8
drwxrwxr-x 2 jqj jqj 4096 Oct 30 10:47 dir
drwxrwxr-x 3 jqj jqj 4096 Oct 27 12:19 gitcode
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello100.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello10.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello11.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello12.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello13.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello14.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello15.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello16.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello17.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello18.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello19.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello1.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello20.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello21.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello22.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello23.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello24.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello25.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello26.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello27.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello28.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello29.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello2.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello30.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello31.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello32.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello33.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello34.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello35.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello36.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello37.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello38.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello39.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello3.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello40.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello41.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello42.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello43.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello44.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello45.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello46.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello47.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello48.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello49.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello4.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello50.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello51.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello52.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello53.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello54.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello55.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello56.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello57.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello58.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello59.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello5.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello60.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello61.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello62.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello63.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello64.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello65.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello66.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello67.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello68.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello69.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello6.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello70.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello71.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello72.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello73.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello74.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello75.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello76.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello77.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello78.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello79.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello7.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello80.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello81.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello82.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello83.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello84.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello85.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello86.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello87.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello88.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello89.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello8.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello90.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello91.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello92.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello93.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello94.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello95.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello96.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello97.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello98.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello99.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:23 hello9.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 23 11:58 test.txt

4 ~> 权限收尾

4.1 目录的权限

于是,问题来了------换句话来讲,就是只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限。这好像不太科学啊,张三创建的一个文件,凭什么可以被李四删掉?我们用下面的过程印证一下------

bash 复制代码
[root@localhost ~]$ chmod 0777 /home/
[root@localhost ~]$ ls /home/ -ld 
drwxrwxrwx. 3 root root 4096 9⽉ 19 15:58 /home/
[root@localhost ~]$ touch /home/root.c
[root@localhost ~]$ ls -l /home/
总用量 4
-rw-r--r--. 1 root root 0 9⽉ 19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9⽉ 19 15:53 litao
-rw-r--r--. 1 root root 0 9⽉ 19 15:59 root.c
[root@localhost ~]$ su - litao
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的⽂件 
rm:是否删除有写保护的普通空文件 "/home/root.c"?y
[litao@localhost ~]$ exit 
logout

为了解决这个不科学的问题,Linux引入了粘滞位的概念。

4.2 关于权限的总结

(1)目录的可执行权限是表示你可否在目录下执行命令;

(2)如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目,即使目录仍然有-r读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件);

(3)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限;

(4)所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。


5 ~> 粘滞位(虽是选学,但很重要!)

5.1 粘滞位基础

5.1.1 示例

bash 复制代码
[root@localhost ~]$ chmod +t /home/ # 加上粘滞位 
[root@localhost ~]$ ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]$ su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别⼈的⽂件 
rm:是否删除有写保护的普通空⽂件 "/home/abc.c"?y
rm: ⽆法删除"/home/abc.c": 不允许的操作

5.1.2 被设置为粘滞位的目录谁能删?

当一个目录被设置为"粘滞位"(用chmod+t),则该目录下的文件只能由------

5.2 再谈关于文件删除的话题

5.2.1 普通账号自己删自己创建的文件

bash 复制代码
[jqj@VM-4-17-centos ~]$ ll
total 8
drwxrwxr-x 2 jqj jqj 4096 Oct 30 10:47 dir
drwxrwxr-x 3 jqj jqj 4096 Oct 27 12:19 gitcode
-rw-rw-r-- 1 jqj jqj    0 Oct 23 11:58 test.txt
[jqj@VM-4-17-centos ~]$ pwd
/home/jqj
[jqj@VM-4-17-centos ~]$ touch hello{1..4}.txt
[jqj@VM-4-17-centos ~]$ ll
total 8
drwxrwxr-x 2 jqj jqj 4096 Oct 30 10:47 dir
drwxrwxr-x 3 jqj jqj 4096 Oct 27 12:19 gitcode
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:10 hello1.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:10 hello2.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:10 hello3.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 30 15:10 hello4.txt
-rw-rw-r-- 1 jqj jqj    0 Oct 23 11:58 test.txt

同理也可以删除------

bash 复制代码
[jqj@VM-4-17-centos ~]$ rm hello{1..4}.txt
[jqj@VM-4-17-centos ~]$ ll
total 8
drwxrwxr-x 2 jqj jqj 4096 Oct 30 10:47 dir
drwxrwxr-x 3 jqj jqj 4096 Oct 27 12:19 gitcode
-rw-rw-r-- 1 jqj jqj    0 Oct 23 11:58 test.txt

5.2.2 普通账号也可以删除root账号创建的文件

bash 复制代码
[root@VM-4-17-centos jqj]# touch hello{1..4}.txt
[root@VM-4-17-centos jqj]# ll
total 8
drwxrwxr-x 2 jqj  jqj  4096 Oct 30 10:47 dir
drwxrwxr-x 3 jqj  jqj  4096 Oct 27 12:19 gitcode
-rw-r--r-- 1 root root    0 Oct 30 15:15 hello1.txt
-rw-r--r-- 1 root root    0 Oct 30 15:15 hello2.txt
-rw-r--r-- 1 root root    0 Oct 30 15:15 hello3.txt
-rw-r--r-- 1 root root    0 Oct 30 15:15 hello4.txt
-rw-rw-r-- 1 jqj  jqj     0 Oct 23 11:58 test.txt

普通账号也可以删除root账号创建的文件!!!

bash 复制代码
[jqj@VM-4-17-centos ~]$ rm hello{1..4}.txt
rm: remove write-protected regular empty file 'hello1.txt'? y
rm: remove write-protected regular empty file 'hello2.txt'? y
rm: remove write-protected regular empty file 'hello3.txt'? y
rm: remove write-protected regular empty file 'hello4.txt'? y
[jqj@VM-4-17-centos ~]$ ll
total 8
drwxrwxr-x 2 jqj jqj 4096 Oct 30 10:47 dir
drwxrwxr-x 3 jqj jqj 4096 Oct 27 12:19 gitcode
-rw-rw-r-- 1 jqj jqj    0 Oct 23 11:58 test.txt

5.2.3 删除文件不由目标文件决定,由你这个文件所在的目录权限决定

5.3 关于Linux操作系统的话题

bash 复制代码
[jqj@VM-4-17-centos /]$ ll
total 72
lrwxrwxrwx.   1 root root     7 Mar  7  2019 bin -> usr/bin
dr-xr-xr-x.   5 root root  4096 Jul  8  2024 boot
drwxr-xr-x    2 root root  4096 Nov  5  2019 data
drwxr-xr-x   19 root root  3040 Sep 10 22:54 dev
drwxr-xr-x.  95 root root 12288 Oct 23 10:29 etc
drwxr-xr-x.   5 root root  4096 Oct 23 10:05 home
lrwxrwxrwx.   1 root root     7 Mar  7  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  7  2019 lib64 -> usr/lib64
drwx------.   2 root root 16384 Mar  7  2019 lost+found
drwxr-xr-x.   2 root root  4096 Apr 11  2018 media
drwxr-xr-x.   2 root root  4096 Apr 11  2018 mnt
drwxr-xr-x.   4 root root  4096 Sep 10 22:54 opt
dr-xr-xr-x  108 root root     0 Sep 10 22:53 proc
dr-xr-x---.   9 root root  4096 Oct 27 18:23 root
drwxr-xr-x   27 root root  1000 Oct 28 16:54 run
lrwxrwxrwx.   1 root root     8 Mar  7  2019 sbin -> usr/sbin
-rw-r--r--    1 root root     0 Oct 30 00:38 shared_dir
drwxr-xr-x.   2 root root  4096 Apr 11  2018 srv
dr-xr-xr-x   13 root root     0 Sep 27 17:51 sys
drwxrwxrwt.   9 root root  4096 Oct 30 03:47 tmp
drwxr-xr-x.  14 root root  4096 Jan  8  2021 usr
drwxr-xr-x.  20 root root  4096 Jan  8  2021 var

博主手记

一、为什么新建文件的时候,新建的直接就是我们看到的权限

二、粘滞位


结尾

uu们,本文的内容到这里就全部结束了,艾莉丝再次感谢您的阅读!

往期回顾:

【Linux权限 (一)】厘清三大"角色",看懂文件权限规则

结语: 本期我们在前一篇博客的基础上继续深入学习了Linux中的指令篇,希望对学习Linux指令相关内容的uu有所帮助,不要忘记给博主"一键四连"哦!

🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡

૮₍ ˶ ˊ ᴥ ˋ˶₎ა

相关推荐
C++_girl6 小时前
c++、java/python语言有什么区别?为什么c++更快?
java·开发语言·c++
彩妙不是菜喵6 小时前
基于C语言上,面向对象语言:C++基础(学完C语言后再看)
c语言·开发语言·c++
武子康6 小时前
大数据-140 ClickHouse CollapsingMergeTree详解 外部数据源最小闭环HDFS/MySQL/Kafka
大数据·后端·nosql
shan~~7 小时前
ubuntu系统安装elasticsearch
ubuntu·elasticsearch·jenkins
夜晚中的人海7 小时前
【C++】位运算算法习题
开发语言·c++·算法
稚辉君.MCA_P8_Java7 小时前
Java 基本数据类型 - 四类八种
java·linux·后端·mysql·架构
东木君_7 小时前
芯外拾遗第二篇:编译、工具链、烧录,你真的搞懂了吗?
linux·单片机·操作系统·嵌入式
文火冰糖的硅基工坊7 小时前
[人工智能-大模型-107]:模型层 - 神经元的功能角色:特征提取与相似度量化
大数据·人工智能
虚伪的空想家7 小时前
HUAWEI A800I A2 aarch64架构Ubuntu服务器鲲鹏920开启 IOMMU/SMMU 硬件虚拟化功能
linux·服务器·ubuntu