【Linux基础】权限管理

👻内容专栏: Linux操作系统基础
🐨本文概括: 用户之间的切换、sudo提权、Linux权限管理、文件访问权限的相关方法、目录权限、粘滞位等
🐼本文作者: 阿四啊
🐸发布时间:2023.9.11
Linux权限
概念
Linux权限是一种关键的安全概念,用于控制用户对文件和目录的访问和操作。理解和管理权限对于确保系统的安全性和数据的保护至关重要。
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
用户切换命令
普通用户切换到root用户
su root:切换到root用户,但不改变环境。
使用 su root 命令,将切换到root用户的身份,但不会改变当前环境设置。这意味着将继续使用原始用户的环境变量、路径设置等。
例如,如果使用 su root 切换到root用户,将继续使用原始用户的工作目录和shell配置。
[Asi@localhost ~]$ su root
Password:
[root@localhost Asi]# exit
[Asi@localhost ~]$
su - root:切换到root用户,同时改变环境。
使用 su - root 命令,将切换到root用户的身份,并且会改变当前环境设置,包括工作目录、环境变量和shell配置。这样子会话更像是以root用户的身份登录系统一样。
例如,如果使用 su - root 切换到root用户,将获得root用户的工作目录和与root用户相关的环境设置。
[Asi@localhost ~]$ su - root
Password:
Last login: Sun Sep 10 19:00:11 CST 2023 on pts/0
[root@localhost ~]# logout
[Asi@localhost ~]$
说明:普通账号更为root账号,
su:单纯的账号切换。su -:让root账号重新登录。- 需要输入root用户的密码。
普通用户之间的切换
su和su -命令切换到普通用户和root是一样的,所以你需要切换到另一个用户,前提还是需要知道Ta的密码啦~
[Asi@localhost ~]$ whoami
Asi
[Asi@localhost ~]$ su cyn
Password:
[Asi@localhost ~]$ su - cyn
Password:
[Asi@localhost ~]$
sudo提权
普通用户可以使用 sudo 执行需要root用户权限的命令,例如安装软件、修改系统配置文件或执行系统维护任务。
[Asi@localhost ~]$ sudo ls
[sudo] password for Asi:
Asi is not in the sudoers file. This incident will be reported.
若显示"xx is not in the sudoers file. This incident will be reported."说明该普通用户没有sudo权限,因为新建的普通用户默认不支持sudo权限。

需要编辑"sudoers"文件。步骤如下:
- 首先切换到root用户,输入以下命令(或使用 vim /etc/sudoers)
[root@localhost ~]# sudo visudo
- 在文件中查找下面的行(可以在底行模式输入
/Allow搜索即可)
## Allow root to run ang commands anywhere
- 在上述行的下面,添加一行以允许普通用户使用sudo。例如,如果要允许用户"Asi"使用sudo,可以添加以下行:

然后我们创建一个test.txt文件,是以普通用户Asi创建的,然后我们再用sudo命令创建一个test2.txt的文件,并没有要求我输入密码,是因为以方便普通用户在几分钟或者十几分钟之内可能仍需要强权执行任务。
[Asi@localhost ~]$ sudo ls
[sudo] password for Asi:
[Asi@localhost ~]$ touch test.txt
[Asi@localhost ~]$ ll
total 0
-rw-rw-r-- 1 Asi Asi 0 Sep 10 19:52 test.txt
[Asi@localhost ~]$ sudo touch test2.txt
[Asi@localhost ~]$ ll
total 0
-rw-r--r-- 1 root root 0 Sep 10 19:53 test2.txt
-rw-rw-r-- 1 Asi Asi 0 Sep 10 19:52 test.txt
Linux权限管理
在linux操作系统当中,大多数的操作都涉及对于文件的操作。所以说,权限通常与文件、目录关联在一起。
文件访问者的分类(人)
- 拥有者:文件和文件目录的所有者:u—User(中国平民 法律问题)
- 所属组:文件和文件目录的所有者所在的组的用户:g—Group
- other:其它用户:o—Others (外国人)
📌说明:那么上面的root用户和普通用户,与这里的用户有冲突吗?并不是,超级用户与普通用户是指具体的人,而这里的文件访问者可以看作一种角色,而具体的人,可以承担各种各样的角色。
文件类型和访问权限(事物属性)
[Asi@localhost ~]$ ll
total 4
-rw-rw-r-- 1 Asi Asi 103 Sep 11 10:31 test.txt

文件类型
⚠️注意:在Linux当中,Linux系统本身区分文件类型与后缀无关,是与该文件是否具有可执行权限有关,后缀是给人看的!
那么Linux文件类型如何分类呢?用第一列的第一个字符来区分文件类型。
d[directory]:文件夹-:普通文件l[link]:软链接(类似Windows的快捷方式)b[block]:块设备文件(例如硬盘、光驱等)p[pipe]:管道文件c[char]:字符设备文件(例如屏幕等串口设备)s[socket]:套接口文件
基本权限
- 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
- 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
- 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
- “-” :表示不具有该项权限。
文件权限值的表示方法
- 字符表示方法
| Linux表示 | 说明 | Linux表示 | 说明 |
|---|---|---|---|
| r - - | 只读 | - w - | 仅可写 |
| - - x | 仅可执行 | r w - | 可读可写 |
| - w x | 可写可执行 | r - x | 可读可执行 |
| r w x | 可读可写可执行 | - - - | 无权限 |
- 八进制数值表示方法
| 权限符号 | 八进制 | 二进制 |
|---|---|---|
| r | 4 | 100 |
| w | 2 | 010 |
| x | 1 | 001 |
| r w | 6 | 110 |
| r x | 5 | 101 |
| w x | 3 | 011 |
| r w x | 7 | 111 |
| - - - | 0 | 000 |
文件访问权限的相关设置方法
1. chmod命令
-
功能:设置文件的访问权限
-
格式:chmod [参数] 权限 文件名
-
常用选项:
- R->递归修改目录文件的权限
- 说明:只有文件的拥有者和root才可以修改文件的权限
-
chmod命令权限值的格式:
- ①用户标识符+、-、=权限字符
权限符号:
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户标识符:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户- 示例
[Asi@localhost ~]$ ll total 4 -rw-rw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rw-r-- 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod u+x abc.txt [Asi@localhost ~]$ ll total 4 -rwxrw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rw-r-- 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod g+x,o+w abc.txt [Asi@localhost ~]$ ll total 4 -rwxrwxrw- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rw-r-- 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod a+x test.txt [Asi@localhost ~]$ ll total 4 -rwxrwxrw- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rwxrwxr-x 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod u=rw test.txt [Asi@localhost ~]$ ll total 4 -rwxrwxrw- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rwxr-x 1 Asi Asi 103 Sep 11 10:31 test.txt- ②三位八进制数字
示例:
[Asi@localhost ~]$ ll total 4 -rwxrwxrw- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rwxr-x 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod 664 abc.txt [Asi@localhost ~]$ ll total 4 -rw-rw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rwxr-x 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod 640 test.txt [Asi@localhost ~]$ ll total 4 -rw-rw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-r----- 1 Asi Asi 103 Sep 11 10:31 test.txt
2. chown命令
- 功能:修改文件的拥有者
- 格式:chown [参数] 用户名 文件名
- 示例:
[Asi@localhost ~]$ chown user1 test.txt chown: changing ownership of ‘test.txt’: Operation not permitted [Asi@localhost ~]$ sudo chown user1 test.txt [Asi@localhost ~]$ ll total 4 -rw-rw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-r----- 1 user1 Asi 103 Sep 11 10:31 test.txt
3. chgrp命令
-
功能:修改文件或目录的所属组
-
格式:chgrp [参数] 用户组名 文件名
-
常用选项:-R 递归修改文件或目录的所属组
-
示例:
[Asi@localhost ~]$ sudo chgrp user1 test.txt [sudo] password for Asi: [Asi@localhost ~]$ ll total 4 -rw-rw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-r----- 1 user1 user1 103 Sep 11 10:31 test.txt
4. umask命令
-
前提:我们先研究一下默认权限
通过观察,我们可以看到创建普通文件的默认权限用八进制数字表示是664
创建目录文件的默认权限用八进制数字表示是775[Asi@localhost ~]$ touch test1.txt [Asi@localhost ~]$ mkdir dir1 [Asi@localhost ~]$ ll total 8 drwxrwxr-x 2 Asi Asi 4096 Sep 11 13:16 dir1 -rw-rw-r-- 1 Asi Asi 0 Sep 11 13:16 test1.txt -
功能:查看或修改文件权限掩码
- 新建文件起始权限为
666,新建目录起始权限为777 - 所以实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到权限掩码
umask的影响。
- 新建文件起始权限为
-
格式:umask [权限值]
我们可以输入umask查看Linux的默认权限掩码为0002,是需要看后三位,第一位告诉我们为八进制数字,不需要管第一位。那么我们使用umask 0004修改权限掩码之后,再次创建test2.txt文件,发现这个文件的权限变为了662,咦,那么最终的权限是怎么推算的呢?[Asi@localhost ~]$ umask 0002 [Asi@localhost ~]$ umask 0004 [Asi@localhost ~]$ touch test2.txt [Asi@localhost ~]$ ll total 8 drwxrwxr-x 2 Asi Asi 4096 Sep 11 13:16 dir1 -rw-rw-r-- 1 Asi Asi 0 Sep 11 13:16 test1.txt -rw-rw--w- 1 Asi Asi 0 Sep 11 13:27 test2.txt -
规则:
最终权限 = 起始权限 & (~umask).凡是在权限掩码中出现的权限,最终都要在起始权限中去掉。
那么,最终的权限就是单纯的起始权限减去umask所得到的结果吗?- 验证:
如果对于一个普通文件起始权限为666,将权限掩码设为003,那么最终普通文件权限会是我们计算的rw-rw--wx权限吗?

我们执行umask 0003,创建一个test3.txt文件,然后执行ll命令,发现此普通文件的权限为rw-rw-r--.结果是怎么回事呢?
[Asi@localhost ~]$ umask 0003 [Asi@localhost ~]$ touch test3.txt [Asi@localhost ~]$ ll total 8 -rw-rw-r-- 1 Asi Asi 0 Sep 11 14:03 test3.txt👇🤔让我们具体分析一下:

所以我们的计算并不是相减那么简单,当然也并不复杂,这里就需要用到按位与运算符
&来计算。我们知道,1 & 1 = 1, 1 & 0 = 0 ,0 & 1 = 0, 0 & 0 = 0,所以我们可以先对umask按位取反再按位与上起始权限,所得到的就是最终权限了。 - 验证:
5. file 命令
- 功能说明:辨识文件类型
- 语法: file [选项] 文件或目录
- 常用选项:
- -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
- -z 尝试去解读压缩文件的内容
目录的权限
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中。
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
-
进入一个目录,需要什么权限呢?
我们对拥有者的r、w、x权限进行了验证,最后没有x权限的情况下,系统提示:-bash: cd: dir: Permission denied,所以,进入一个目录,需要执行权限。[Asi@localhost study]$ mkdir dir [Asi@localhost study]$ ll dir total 0 [Asi@localhost study]$ ll total 4 drwxrwxr-x 2 Asi Asi 4096 Sep 11 14:53 dir [Asi@localhost study]$ chmod u-r dir [Asi@localhost study]$ cd dir [Asi@localhost dir]$ cd .. [Asi@localhost study]$ chmod u+r,u-w dir [Asi@localhost study]$ cd dir [Asi@localhost dir]$ cd .. [Asi@localhost study]$ chmod u+w,u-x dir [Asi@localhost study]$ ll total 4 drw-rwxr-x 2 Asi Asi 4096 Sep 11 14:53 dir [Asi@localhost study]$ cd dir -bash: cd: dir: Permission denied -
那么对于一个目录的
r权限,将有什么限制呢?
通过下面验证,我们可以知道,是否允许一个指定用户查看目录的文件列表,需要r权限。[Asi@localhost study]$ ll total 4 d-wxrwxr-x 2 Asi Asi 4096 Sep 11 14:53 dir [Asi@localhost study]$ cd dir [Asi@localhost dir]$ ls ls: cannot open directory .: Permission denied [Asi@localhost dir]$ touch test.txt [Asi@localhost dir]$ ll ls: cannot open directory .: Permission denied -
那么对于一个目录的
w权限,将有什么限制呢?
我们删去了dir目录的w权限,发现可以进入该目录,可以查看该目录的文件列表,但是不可以在该目录下创建文件。[Asi@localhost study]$ chmod u+r,u-w dir [Asi@localhost study]$ ll total 4 dr-xrwxr-x 2 Asi Asi 4096 Sep 11 15:03 dir [Asi@localhost study]$ cd dir [Asi@localhost dir]$ pwd /home/Asi/study/dir [Asi@localhost dir]$ ll total 0 -rw-rw-r-- 1 Asi Asi 0 Sep 11 15:03 test.txt [Asi@localhost dir]$ touch test1.txt touch: cannot touch ‘test1.txt’: Permission denied
于是, 问题来了~~
换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.
这好像不太对啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下。
[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 lisi lisi 4096 9月 19 15:53 lisi
-rw-r--r--. 1 root root 0 9月 19 15:59 root.c
[root@localhost ~]# su - lisi
[lisi@localhost ~]$ rm /home/root.c #lisi可以删除root创建的文件
rm:是否删除有写保护的普通空文件 "/home/root.c"?y
[lisi@localhost ~]$ exit
logout
一般而言,不同的账号是不会在同一目录下的。
因为默认新建的用户,只有拥有者,也就是`root`才具有权限。
[root@localhost home]# ll
total 24
drwx------ 3 admin admin 4096 Aug 31 11:14 admin
drwx------ 4 Asi Asi 4096 Sep 11 14:52 Asi
drwx------ 2 zhangsan zhangsan 4096 Sep 11 12:56 user1
drwx------ 2 zhangsan zhangsan 4096 Sep 11 15:25 zhangsan
那么假如有特殊情况,应任务需要,在一个团队中多个账号协同共享一些数据呢?这样就不会在某一个人的主工作目录之下,而是在root用户的根目录下创建一个名为shared的目录,要求团队用户都在这个share路径下工作,那么此时对于root的角度来说,other的rwx权限也需要同时放开,那么为了避免他人删除该目录下的一些共享数据(假如两人闹掰了,张三想要删除李四在shared目录里写的文件),此时w权限是不是应该取消呢? 如果取消,那么团队里的成员该如何往shared里面写数据呢?
这样的问题是不是很棘手,下面针对这个问题,我们引入粘滞位的概念。
粘滞位
[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": 不允许的操作
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
相关文章:
【Linux基础】权限管理
👻内容专栏: Linux操作系统基础 🐨本文概括: 用户之间的切换、sudo提权、Linux权限管理、文件访问权限的相关方法、目录权限、粘滞位等 🐼本文作者: 阿四啊 🐸发布时间:2023.9.11 …...
C++初阶--类和对象(中)
目录 类的6个默认成员函数构造函数使用方法 析构函数使用方法 拷贝构造函数使用方法 赋值运算符重载赋值运算符重载 const成员 上篇末尾我们讲到了关于c实现栈相较于c语言在传递参数时的一些优化,但实际上,c在 初始化 清理 赋值 拷贝等方面也做了很大程…...
【MySQL系列】视图特性
「前言」文章内容大致是MySQL事务管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 视图1.1 视图概念1.2 创建视图1.3 修改互相影响1.4 删除视图1.5 视图规则和限制 视图 1.1 视图概念 视图是一个虚拟表,其内容由查询定义同真实的表一样…...
管理类联考——数学——汇总篇——知识点突破——应用题——最值问题
⛲️ 一、考点讲解 最值问题是应用题中最难的题目,也是考生普遍丢分的题目。最值问题一般要结合函数来分析,一般结合二次函数和平均值定理求解。最值问题的求解步骤是:先设未知变量,然后根据题目建立函数表达式,最后利…...
学习SpringMvc第二战之【SpringMVC之综合案例】
目录 一. 参数传递 1.前期准备工作(替换pom.xml中的部分依赖) 1.1将log4j替换成为slf4j(将打印语句替换成为日志文件输出结果) 2.正式操作 1.基础传参 1.1创建方法,用于验证传参 1.2构建界面回显 1.3设置访问路径(localho…...
【算法日志】单调栈: 单调栈简介及其应用
代码随想录刷题60Day 目录 单调栈简介 单调栈的应用 下次更高温 下一个更大元素1 下一个更大元素2 接雨水 柱状图中最大矩形 单调栈简介 单调栈(Monotonic Stack)是一种特殊的栈数据结构,它满足元素的单调性,这种单调性需…...
VSCode自动分析代码的插件
今天来给大伙介绍一款非常好用的插件,它能够自动分析代码,并帮你完成代码的编写 效果如下图 首先我们用的是VSCode,(免费随便下) 找到扩展,搜索CodeGeeX,将它下载好,就可以实现了 到…...
设计模式之外观模式
文章目录 影院管理项目传统方式解决影院管理传统方式解决影院管理问题分析外观模式基本介绍外观模式原理类图外观模式解决影院管理传统方式解决影院管理说明外观模式应用实例 外观模式的注意事项和细节 影院管理项目 组建一个家庭影院: DVD 播放器、投影仪、自动屏…...
Web端测试和 App端测试有何不同?
Web 端测试和 App 端测试是针对不同平台的上的应用进行测试,Web应用和App端的应用实现方式不同,测试时的侧重点也不一样。 今天这篇文章就来介绍下两者的不同之处以及测试时的侧重点。 同时,我也准备了一份软件测试面试视频教程(…...
12.(Python数模)(相关性分析一)相关系数矩阵
相关系数矩阵 相关系数矩阵是用于衡量多个变量之间关系强度和方向的统计工具。它是一个对称矩阵,其中每个元素表示对应变量之间的相关系数。 要计算相关系数矩阵,首先需要计算每对变量之间的相关系数。常用的相关系数包括皮尔逊相关系数和斯皮尔曼相关…...
系统架构设计师(第二版)学习笔记----嵌入式系统及软件
【原文链接】系统架构设计师(第二版)学习笔记----嵌入式系统及软件 文章目录 一、嵌入式系统1.1 嵌入式系统的组成1.2 嵌入式系统的特点1.3 嵌入式系统的分类 二、嵌入式软件2.1 嵌入式系统软件分层2.2 嵌入式软件的主要特点 三、安全攸关软件的安全性设…...
Python列表操作指南:索引、切片、遍历与综合应用
文章目录 列表简介创建列表索引和切片列表的长度列表的拼接和重复检查元素是否存在列表的方法index() 方法count() 方法 列表的修改和删除修改元素删除元素列表的排序和反转添加元素 列表的拷贝列表的遍历列表的切片列表的嵌套列表推导式 python精品专栏推荐python基础知识&…...
第15章_锁: MySQL并发访问相同记录以及从数据操作的类型划分锁(读锁、写锁)
事务的 隔离性 由这章讲述的 锁 来实现。 1. 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在程序开发中会存在多线程同步的问题, 当多个线程并发访问某个数据的时候, 尤其是针对一些敏感数据(订单, 金额), 我们就需要保证这个数据在任何时刻最多只有一个线…...
PHP 排序函数使用方法,按照字母排序等操作
详解PHP排序方法使用 一、sort() 函数 用于对数组单元从低到高进行排序。 //数组 $data array(D,F,A,C,B); //排序 sort($data); //输出排版标签 echo "<pre>"; //打印数据 print_r($data);die;输出结果: 二、rsort() 函数 用于对数组单元从高到…...
windows本地验证码识别工具
windows本地验证码识别小工具 - 可以用在windows系统中,并可以集成在Java或python程序中 演示视频如下:可用于识别4-7位的字母数字组合的验证码(识别准确率在70% - 80%)。 验证码识别演示 本项目未开源,如需使用请联…...
修改图片尺寸的几个简单方法
修改图片尺寸的几个简单方法~~图片,是我们常用的文件格式,也是日常生活与工作中重要的文件。图片记录了非常多的元素和内容,其中不乏有工作上的内容,也有对一些日常生活的记录。所以说,图片文件对我们来说是非常重要的…...
三、GoLang字符串的基本操作
一、转义符是什么? 转义字符意义\n换行,将当前位置移动到下一行开头\r回车,将当前位置移到本行开头\t相当于一个Tab键\\代表一个反斜线“\”\"代表一个双引号字符 代码实战 package mainimport "fmt"/* *字符串基本用法 */ func main…...
基于vue-cli创建后台管理系统前端页面——element-ui,axios,跨域配置,布局初步,导航栏
目录 引出安装npm install安装element-ui安装axios 进行配置main.js中引入添加jwt前端跨域配置 进行初始布局HomeView.vueApp.vue 新增页面和引入home页面导航栏总结 引出 1.vue-cli创建前端工程,安装element-ui,axios和配置; 2.前端跨域的配…...
在 ubuntu20.04 上安装 Pytorch
参考资料:https://www.linode.com/docs/guides/pytorch-installation-ubuntu-2004/ sudo apt update sudo apt install nvidia-cuda-toolkit (3G) mkdir anaconda cd ~/anaconda wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh chmod …...
远程恋爱网站部署秘籍——群晖虚拟机助ni秀恩爱
文章目录 前言1. 安装网页运行环境1.1 安装php1.2 安装webstation 2. 下载网页源码文件2.1 访问网站地址并下载压缩包2.2 解压并上传至群辉NAS 3. 配置webstation3.1 配置网页服务3.2 配置网络门户 4. 局域网访问静态网页配置成功5. 使用cpolar发布静态网页,实现公网…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
