【Linux系统】—— 权限的概念

【Linux系统】—— 权限的概念

  • 1 权限
    • 1.1 什么是权限
    • 1.2 为什么要有权限
    • 1.3 理解权限
  • 2 文件的权限
    • 2.1 文件角色
    • 2.2 文件权限
    • 2.3 修改文件权限
      • 2.3.1 修改目标属性
        • 2.3.1.1 字符修改法
        • 2.3.1.2 8进制修改法
      • 2.3.2 修改角色
  • 3 文件权限补充知识点
    • 3.1 只能修改自己的文件权限
    • 3.2 没有权限
    • 3.3 确定权限位规则
    • 3.4 root 用户的权限
    • 3.5 如何理解可执行
  • 4 目录的权限
    • 4.1 rwx 分别对目录代表什么
    • 4.2 理解 Linux 多用户之间的隔离
    • 4.3 缺省权限
  • 5 粘滞位
    • 5.1 现象引出
    • 5.2 删除文件所需权限
    • 5.3 多用户如何进行文件级别协作
    • 5.4 粘滞位

1 权限

1.1 什么是权限

权限的本质:能或不能做某些事情

  权限决定的是能还是不能的问题。比如校长能进他的办公室,你就不能进校长办公室;某些电影电视剧只有 VIP 能看,而你不是 VIP 就不能看。
  

1.2 为什么要有权限

  为什么要有权限呢?本质上还是为了控制用户的行为,防止错误的发生
  
  如果没有权限:一个关键的文件,本来只有管理员才能卸载的,没有权限随便一个普通人就能卸载,那可能导致整个系统的崩溃。我新写的文件,随便被某个人复制过去,我做任何事情都没有任何东西保护……如果没有权限,可能会导致各种各样的错误发生。

  权限规则的设定,永远是最顶级的上层的人设计,比如写 Linux 的程序员,以限制普通用户的行为,防止混乱和错误的发生
  

1.3 理解权限

  现在我们对权限的概念还很模糊,我们通过两个例子来了解权限。

例一:
  为什么校长能进校长办公室,而你不能进校长办公室?这说明权限首先限制的是“人”
我们再想一想:假如校长叫老王,它能进校长办公室是因为它叫老王还是因为它是校长呢?
  我们发现在这个世界上你是谁一点都不重要,你扮演什么角色才是最重要的
  一个公司的大老板,事业辉煌时人前人后;日落西山,没人理他。人还是那个人,之所以这样是以为他的角色变了
  权限首先限制的是角色
  
例二:
  我是无法再VS上看电影的,我也无法再爱奇艺上写代码。
  这说明什么呢?
  这说明如果要访问的目标对象天然没有目标属性,那么他也绝对不会具备对应的权限
  即便我是爱奇艺的顶级会员,我也没有在其上面写代码的能力,因为爱奇艺压根没有写代码的功能
  所以 权限要求对应的目标必须具备对应的属性

  
结论:

权限 = 角色 + 目标权限属性

  

2 文件的权限

2.1 文件角色

  通过前面的学习,我们知道 Linux中一切皆文件,因此未来我们操作 Linux 系统都是面对的对象都是文件。

权限 = 角色 + 目标权限属性

  对一个文件来说它的文件属性无非就三个:读权限写权限执行权限
  而文件的角色又有谁呢?也分三种:拥有者所属组other

  我们在系统目录下查看到的文件信息基本都如下图所示:

在这里插入图片描述

  黄框那一列表示文件的拥有者,蓝框那一列表示文件的所属组。那怎么不见 o t h e r other other 呢? o t h e r other other 不用单独记录,只要不是拥有者和所属组,就是other。拥有者和所属组一定是具体的某个人,而 o t h e r other other 非常多,不必记录,也不可能完全记录

  这里问大家一个问题:root、gy、user1、user2等用户与拥有者、所属组、other他们是什么关系呢?
  拥有者、所属组、other 是一种角色,像前面的校长角色;而 root、gy、user1、user2 是具体的人,像前面的老王。
  
  一个文件通常有拥有者等角色,而每个角色是由对应的"人"来扮演的。比如 gy 用户,它可以是一个文件的拥有者,也可以是一个文件的 other。他们间并不冲突,反而还互相补充。


什么是所属组呢?
  首先所属组可以是很多人构成一组,也可以是一个用户自成一组。现在使用 Linux 很多时候都不用考虑所属组的问题,因为大部分时候都是自成一组
  
  那为什么要设计界出所属组呢?
  举个栗子:
  背景如下:现在公司让小明所在的 A组 与 B组 共同研发一个功能,看谁研发出来的更好就用谁的。
  小明吭哧吭哧敲了几天代码,一天组长要看小明的代码写的怎么样了。组长要看到小明写的代码,小明就要开放相关文件的权限,如果文件的角色只有 拥有者 和 other ,那么拥有者无疑是小明,组长是other身份,所以组长要看代码小明只能开放 other 角色的权限,那 B组 的成员也是 other 角色,这样不就也可以看到了小明的文件内容了吗。所以 Linux 设计出了所属组的角色,这样小明只需要将组长拉进所属组的角色,开放所属组的权限,这样组织就能看到,而 B组 成员还是 other 角色,就看不到小明的代码了。
  

2.2 文件权限

  对于一个文件来讲,它所具备的属性无非就三种:读属性写属性执行属性
  在 Linux 中:读用 r 表示;写用 w 表示;执行用 x 表示

  未来我们表述文件的权限时,要把文件的角色和目标属性结合起来进行表述
  如:某某文件的拥有者具备读写属性、所属组具备读写属性、other 具备读属性
  对于任意文件来讲,它有三种角色,每种角色对应三种属性

  在前面 「ll」 命令所显示的众多文件属性中,第一大列所显示的属性就代表着文件的权限

  它的第一大列的第一列即第一个字符表示 文件类型;第一大列除去第一个字符还剩下 9 个字符,这 9 个字符又每三个字符分为一组,每组分别代表着三种角色所拥有的权限,按顺序分别代表着拥有者、所属组、other
  在这里插入图片描述

  

在这里插入图片描述

  每一组分别有三个字符:第一个字符表示该角色是否允许读(r/-)、第二个字符表示该角色是否允许写(w/-)、第三个字符表示该角色是否允许执行(x/-)
  每组的的三个字符代表的属性一定是按顺序:读(r/-)、写(w/-)、执行(x/-),该位置上只能有对应字母和 "-"两种字符
  例如描述 root.txt 文件的权限:该文件的拥有者是 root,拥有者能够读、写文件但不能执行;所属组是 root。所属组对该文件只有读权限不能写和执行;other 对该文件只有读权限不能写和执行

Linux表示说明Linux表示说明
r–只读-w-仅可写
–x仅可执行rw-可读可写
-wx可写和可执行r-w可读可执行
rwx可读可写可执行无权限

  

2.3 修改文件权限

2.3.1 修改目标属性

2.3.1.1 字符修改法
  • 语法:「chmod」 [选项] 权限 文件名
  • 功能:改变文件或目录的访问权限,用它控制文件或目录的访问权限。

+ - = 权限字符

  • + : 向权限范围增加权限代号所表示的权限
  • - : 向权限范围取消权限代号所表示的权限
  • = : 向权限范围赋予权限代号所表示的权限

用户符号:

  • u:拥有者
  • g:拥有者同组
  • o:其它用户
  • a:所有用户

  

我们以 t e s t . t x t test.txt test.txt 文件为例:
在这里插入图片描述
  
给拥有者减去r权限
在这里插入图片描述

  
给所属组加上x权限
在这里插入图片描述
  
给 other 加上 wx 权限
在这里插入图片描述
  
给所有人减去 w 权限
在这里插入图片描述
  
给拥有者和所属组加上 w 权限
在这里插入图片描述

  

2.3.1.2 8进制修改法

  除了上面的修改方法,修改文件属性还能利用8进制进行修改

  前面曾经说过,每一组都有三个字符,每一位由:r/-、w/-、x/- 二选一,你会发现三个位置上的状态都是两态的,可以认为是:是和否。
  既然是两态的,我们为什么不能把他 看做是1/0 呢?如:r- - 看成 100;-w- 看成 010;rw- 看成 110。反正每个位上表示的属性是确定的,1代表该位置有效、0代表代位置无效
  同时因为2进制对我们用户不友好,我们转换为 8进制(3个 bit 位)。110 = 6 = rw-、100 = 4 = r--

  我们可以利用这点来修改文件属性

在这里插入图片描述

  

2.3.2 修改角色

  • 语法1:「chown」 [选项] 用户名 文件名
  • 功能:更改文件或目录的拥有者。

  我们以 test.txt 文件为例。此时 test.txt 文件的拥有者和所属组都是 gy 用户

在这里插入图片描述

  将拥有者改为 root

在这里插入图片描述

  我们发现不能改
  是不是不能给 root 呢?那我把文件给普通用户

在这里插入图片描述

还是不行。

  为什么呢?
  你想把你的文件给别人,你凭什么给被人呢?将文件的属性修改,是因为这个文件是你的你可以去修改,影响上只能影响你自己。但你把文件给别人,影响的就不仅仅是你自己,要是你给我一个全是 bug 的文件,甩锅给我,那我怎么办。

  所以系统默认不允许把文件给别人,想给别人必须高权限!
  所以想将文件给别人要切换 root 用户或者指令的短暂提权(你要不要?不要我揍你),这里我们直接切换 root 用户

在这里插入图片描述

  

「chown」还能同时修改拥有者和所属组

  • 语法:「chown」 [选项] 拥有者:所属组 文件名
  • 功能:更改文件或目录的拥有者和所属组。

  先将 test.txt 文件的拥有者改回来

在这里插入图片描述

  同时修改拥有者和所属组

在这里插入图片描述

  
如果只想改文件的所属组,可以用「chgrp」

  • 语法:「chgrp」 [选项] 用户组名 文件名
  • 功能:修改文件或目录的所属组

在这里插入图片描述

  
  

3 文件权限补充知识点

3.1 只能修改自己的文件权限

  任何人都能修改文件权限吗?
  不是的,用户只能修改自己的文件权限

  上面我们能改 test.txt 的文件权限,那是因为改文件拥有者是 gy 的,而我们是以 gy 用户的身份去改的

在这里插入图片描述

  如果文件拥有者是 root/user1/user2 等,gy 用户是不能修改的

在这里插入图片描述

  

3.2 没有权限

  如果我们本身不具备某种权限,那么系统会拒绝我们的访问

  我现在是 test.txt 文件的拥有者,我可以对文件进行操作

在这里插入图片描述
在这里插入图片描述

  我们将拥有者的 r 权限关闭,无法读只能写

在这里插入图片描述

  再把拥有者的 w 权限关闭,写也不能写了

在这里插入图片描述

  可见如果我们本身不具备某种权限,那么系统会拒绝我们的访问
  

3.3 确定权限位规则

  可是有细心的小伙伴可能发现:gy 用户确实是 test.txt 文件的拥有者,该文件的拥有者权限也确实全关闭了,可 gy 用户还是 test.txt 文件的所属组啊,所属组的读和写权限还在呢?为什么我不能以所属组的身份去访问呢?系统依然不允许我们去读和去写

在这里插入图片描述

  实际上,在确定权限信息时,系统会先确定用户是谁?是拥有者、所属组还是 other。在 ubunto 和 centos 下用户角色的确定,只确定一次,顺序依次是拥有者、所属组、other。即一旦确定用户是拥有者,只看拥有者对应的权限,即使拥有者没有任何权限也不再二次确认用户是否是所属组

  有小伙伴可能会问:关所属组和 other 的权限我能理解,为什么要拥有者的权限呢?闲的没事干吗
  有时候我们是需要将拥有者的权限关闭的。有些文件比较重要,这时为了防止自己误操作,就可以将自己的权限关闭。而且自己的权限随时能打开,毕竟文件是自己的,文件权限随时能修改

  

3.4 root 用户的权限

  我们关闭 test.txt 文件 other 的所有权限

在这里插入图片描述

  现在,我们用 root身份 去读和写 test.txt 文件
  理论上来说,root 不是拥有者也不是所属组,理应是不能读和写的,但事实真是这样吗?

在这里插入图片描述

  事实是 r o o t root root 即能读也能写。

   r o o t root root 还能把整个文件的权限关了,自己依然能访问

在这里插入图片描述

  
  听说拥有者能把权限改回来?那我把拥有者改为我自己,这文件你也不要要了

在这里插入图片描述

  所以: r o o t root root 的权限不受任何权限约束
  所有的规则权限都是用来限制普通人的,总要有一个超用户权限来进行一些错误的修正

  这也说明了为什么普通用户不能把文件给别人,而 root 可以强制将文件给别人
  

3.5 如何理解可执行

  在前面我们谈论文件的权利时,主要谈论的是读和写,但别忘了文件还有一个属性是可执行

  如果我给角色可执行的权利,那这个文件就可以被执行了吗?

在这里插入图片描述

  答案是否定的。
  可执行权限 != 文件可执行

  怎么理解呢?
  有一句话叫:给你机会你不中用啊
  这句话说明什么呢?什么你想办成一件事,首先要给你机会,其次你要有能力机会和能力缺一不可
  给你机会你不中用意思是给了你就会但你没这个能力,所以这事你也做不成。

  给文件加了可执行权限只是允许这个程序将来可以被执行,但不代表这个程序本身就可以执行。只有你具有可执行权限,在加上你本身就可以执行,两者结合你才能真正的才能执行

  

4 目录的权限

4.1 rwx 分别对目录代表什么

  现在我问大家一个问题:如果我想进入一个目录,需要什么权限呢?会是读权限吗
  现在我们想进入 code 目录中

在这里插入图片描述

控制变量法,我们挨个来试一下
  

  1. 只开读权限
    在这里插入图片描述
    与读权限没关系
  1. 只开写权限
    在这里插入图片描述
    与写权限没有关系
  1. 只开执行权限
    在这里插入图片描述
    成功了

  所以进入一个目录需要执行权限

  既然进入目录需要执行权限,那读权限和写权限对于目录来讲意味着什么呢?

没有读权限,我们无法查看目录中的文件内容,即「ls」指令无效
在这里插入图片描述

没有写权限,我们无法在目录中新建文件或者删除文件
在这里插入图片描述

  

总结:

  • 可执行权限:如果目录没有可执行权限,则无法进入目录中
  • 可读权限:如果目录没有可读权限,则无法通过「ls」等指令看到目录中的文件内容
  • 可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件

  那如果我是超级用户呢?
  超级用户不受权限约束,即使目录没有任何权限,超级用户依然可以为所欲为

  默认情况下,新建一个目录,rwx 权限都要有,因为少一个权限它的操作就不完整

在这里插入图片描述

  

4.2 理解 Linux 多用户之间的隔离

  在 Linux 下,可以创建多个用户,用户之间彼此是互相不影响的。 Linux 是怎么做到的呢?

  在我们的 Linux 系统中,我们每新建一个普通账号,这个普通账号都会在 home 目录下新建一个以该用户名命名的目录。当以某一用户登录时,默认所处家目录就是:/home/用户名

在这里插入图片描述

  仔细观察一下 gy 目录,发现它拥有者权限是全部开启,但是 所属组 和 other 关闭了写的权限。这意味着任何其他用户都不能对其他用户的家目录进行修改
  这样就能实现多用户之间的隔离
  

4.3 缺省权限

  我们新建一个文件,默认权限是这样的

在这里插入图片描述

  新建一个目录,默认权限是这样的

在这里插入图片描述

  为什么默认权限会是这样子的?

  • 对于普通文件:起始权限从 666 开始,即普通文件默认不带可执行。
  • 对于目录文件:起始权限从 777 开始。

  可是这好像也不对,新建出的普通文件是 664,而目录是 775。甚至各位小伙伴可以自己新建一个普通文件和目录,发现其权限与我当前都不一样。

  也就是说最终的权限并不等同于起始权限。系统中有一个概念叫权限掩码,最终的权限还受权限掩码的影响

  权限掩码可通过 umsk 去查看

在这里插入图片描述

  我当前系统的权限掩码是 0002

  权限掩码是在系统默认是设置好的,它是一个8进制的数字
  第一个 0 我们不用考虑,它是与用户相关的,我们只需要考虑后面的数字
  这里的 002 换成二进制 000 000 010
  文件最终权限 == 起始权限 &( ~umask )

  我们以普通文件777为例
  777 换成二进制为 111 111 111
  000 000 010 按位取反为 111 111 101
  按位与得 111 111 101
  因此普通文件最终权限为775

  那 u n a s k unask unask 的目的是什么?
   u m a s k umask umask 最终的目的是:凡是在 u m a s k umask umask 总出现的权限,都不应该在最终权限中出现

  为什么要有 u m a s k umask umask 呢?
  如果没有 u m a s k umask umask,一个文件创建时默认的权限,由 OS 自主决定,无法在创建前进行修改。由 u m s k umsk umsk,则系统可以灵活满足不同的需要。
  在有些特殊情况下,我们可以通过配置 u m a k umak umak 控制文件的默认权限,让我们的代码都是可控的

   u m a s k umask umask 是可以修改的

在这里插入图片描述

  
  这时我们再新建普通文件和目录就没有任何权限啦

在这里插入图片描述

  
   u m a k umak umak 是内存级的,也就是说你修改了 u m a s k umask umask ,下次登录时 u m a k umak umak 还是系统的默认值。

  
  

5 粘滞位

5.1 现象引出

  下面,我以 root 用户在普通用户 gy 的目录下创建一个 root.txt 文件

在这里插入图片描述

  

  此时文件的拥有者与所属组都是 root,我们再将文件的 other 权限全部关闭

在这里插入图片描述

  
  我们再切换回普通用户 gy,通过前面的学习我们知道,此时 gy 用户是无法进行读写的

在这里插入图片描述

  
  但是我们吃惊的发现,gy 用户居然可以删除 root.txt 文件

在这里插入图片描述

  为什么呢?我不是文件的拥有者,而且对该文件没有任何的权限,但我却可以删它!

  

5.2 删除文件所需权限

  我不能读不能写你的文件,但我可以把你的文件删了?这正常吗?
  在 Linux 中这是正常的,为什么这么说呢?

  当前我们是在 lesson5 的目录下

在这里插入图片描述

  lesson5 用户的拥有者与所属组都是 gy 用户

  gy用户对该目录有写权限,前面我们说过:对一个目录有写权限,就可以修改该目录。 创建新文件算是修改目录的内容,那么删除文件是不是修改目录的内容呢?很明显也算。
  所以对于目录来讲,你有 w 权限,不仅能创建新文件,删除也算修改,同样可以删除文件
  所以为什么 gy 用户能删除 root 用户的文件呢?
答案很简单,因为一个文件能否删除和文件本身无关,只与文件所在目录的 w 权限有关

  大家想一想:你先别问我为什么能删root的文件,你先回答我你为什么要在我的目录新建文件,还这么猖狂不给我开权限

  一个文件能读能写能执行,是由文件自身决定的,但文件能不能"或"并不由它自己决定,而由它所在的目录决定的
  毁灭你,与你何干

  事实上,上述情况是很少发生的,因为普通用户是无法进入另一个用户的工作目录下的

在这里插入图片描述

  我进都进不去,还怎么在里面搞事情呢?
  一般能在别人工作目录下新建文件的只有 root;如果是普通用户,那它一定是先变成 root 再进去新建的

  

5.3 多用户如何进行文件级别协作

  现在有一个问题:多用户之间如何进行文件级别的协作呢?
  什么意思呢?
  举个例子:小明的任务是往文件中写入数据,而小帅的任务是对小明写入的数据进行分析

   通过前面的学习,我们意识到这个文件一定不能放在一个私人的账号里,不然另一个人如何进去都是一个问题。

  要知道,在 Linux 系统中不仅仅只有 /home 路径,在根目录/下,还有许多与 /home 路径平级的路径,他们不属于任一用户,只属于 root
  比如:/tmp

在这里插入图片描述

  tmp 目录通常放的是临时的数据
  我们可以直接将文件放在 tmp 下,该目录给所有人都开放权限,这样大家都能进入该目录访问里面的文件,就能进行多用户之间的协作了。

  这里我们为了演示,我们用 root 用户创建一个 temp-backup 文件(在根目录创建文件只能用 root 账号创建),并开放所有权限

在这里插入图片描述

  
  比如,现在我用 gy 用户在 temp-backup 目录下创建新文件 gy.txt,gy 用户可以对它进行读写

在这里插入图片描述

  
  此时,cwq 用户也可以进入到 temp-backup 目录中,对该文件进行读

在这里插入图片描述

  当然,如果gy用户如果开放写权限,cwq用户还能对该文件进行写

  这样,gy 用户和 cwq 用户之间就能进行文件协作了。
  

5.4 粘滞位

  可是上述有这样一个隐患:如果有人误操作或者故意将 gy.txt 文件删掉怎么办?又或者 cwq 和 gy 闹掰了,cwq 一气之下把 gy.txt 文件删除了怎么办
  因为文件的创建与删除至于当前所在目录的 w 权限有关,现在 temp-backup 目录对 other 都开放了 w 权限,也就是说所有人都可以在里面创建文件,也可以删除文件
  能不能通过关闭 w 解决呢?
  不行,因为关闭 w,虽然所有人都不能删除了,但是所有人也都不能创建了,也就失去了共享目录的意义

  也就是说现在我们有一个需求:对于共享目录,任何人都能创建新文件,但是我们不想让该文件的非拥有者删除文件。

  为此,Linux 引入了一个新的权限标志位:t
  我们将 t 称为粘滞位

  我们先进行实验
  首先我们用 root 用户来将 temp-backup 目录加上粘滞位

在这里插入图片描述

  加上粘滞位后,我们发现目录权限中 other 权限位中的 x 变成 t

  此时 cwq 用户依然可以读 gy.txt 文件

在这里插入图片描述

  但是无法再删除文件了

在这里插入图片描述

  为什么呢?因为现在有了对应的权限位约束

  粘滞位 t 可以让我们在共享目录下,不会让一个非文件拥有者删除文件,即使它有该目录的 w 权限

  那 root 可以删除吗?root 是可以的。前面我们说过:root 跳出所有规则的约束,而且 root 是该目录的拥有者

:粘滞位 t 只能给需要共享的目录添加粘滞位,加粘滞位不是在自己的家目录中加,这样没有任何意义

  我们平时是不用让 root 新建一个 temp-backup 来进行文件共享的,根目录下本来就有个 tmp 目录,就是用来进行多用户减的文件协作的

在这里插入图片描述

  而且我们注意到 tmp目录默认也是加了粘滞位 t 的
  
  
  
  


  好啦,本期关于权限的知识就介绍到这里啦,希望本期博客能对你有所帮助。同时,如果有错误的地方请多多指正,让我们在 L i n u x Linux Linux 的学习路上一起进步!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

重生之我在异世界学编程之C语言:深入文件操作篇(上)

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 函数递归与迭代 引言正文一、为什么要用文件二、文…

ctfshow-web 151-170-文件上传

151. 我们首先想到就是上传一句话木马。但是看源代码限制了png。 (1)改前端代码。 这里是前端限制了上传文件类型,那我们就改一下就好了嘛,改成php。 这里直接修改不行,给大家推荐一篇简短文章,大家就会了&#xff08…

【Flutter_Web】Flutter编译Web第一篇(插件篇):Flutter_web实现上传TOS上传资源,编写web插件

前言 由于Flutter在双端的开发体验几乎接近的情况下,尝试将Flutter代码转Web端进行部署和发布,在其中遇到的所有问题,我都会通过这种方式分享出来。那么第一个要解决的就是上传资源到TOS上,在双端中都是通过插件的方式在各端通过…

成都银泰生物科技有限责任公司简介

成都银泰生物科技有限责任公司成立于2014年,是一家专注于体外诊断产品销售和服务的公司。公司位于中国四川省成都市。其所售产品涵盖了生化、免疫、POCT、凝血、输血、血球、尿液、分子诊断、病理等多个技术平台。 成都银泰生物科技有限责任公司以“科技服务人类健…

【构建工具】现代开发的重要角色

你可能有所听闻构建工具,但是不知道是干什么的,或者是开发中用到了,大概会使用,但是想理解一下具体的工作原理等,那么我将分享一下我对其的理解。【 我将分为两篇来讲解】。 当我们谈到构建工具时,可以把它…

Spring 面试题整理

文章目录 一、控制反转 IoC什么是 Bean 和 Spring Bean?依赖注入的常见方式?Bean 的作用域有哪些?protype bean 里面的依赖是 singleton bean 的话,IoC 容器会怎么处理?Bean 的生命周期?Resource 和 Autowi…

Visual Studio 2022+CMake配置PCL1.14.1

前言 本教程只是提供高效的PCL配置流程,不提供Qt环境配置,如果需要GUI界面,则需要自寻查找Cmake配置QT的教程。请相信,在CMake之下没有任何事是困难的,最困难的工作已经由前辈们完成。因此,对于C用户来说学…

可视化数据

数据科学家会直观呈现数据,以更好地理解数据。 他们可以扫描原始数据、检查摘要度量值(如平均值)或绘制数据图表。 图表是一种可视化数据的强有力方式,数据科学家经常使用图表快速了解适度复杂的模式。 直观地表示数据 绘制图表…

【Linux网络编程】传输协议UDP

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系…

SEC_ASA 第二天作业

拓扑 按照拓扑图配置 NTP,Server端为 Outside路由器,Client端为 ASA,两个设备的 NTP传输使用MD5做校验。(安全 V4 LAB考点) 提示:Outside路由器作为 Server端要配置好正确的时间和时区,ASA防…

HTML5 拖拽 API 深度解析

一、HTML5 拖拽 API 深度解析 1.1 背景与发展 HTML5 的拖拽 API 是为了解决传统拖拽操作复杂而设计的。传统方法依赖鼠标事件和复杂的逻辑计算,而 HTML5 提供了标准化的拖拽事件和数据传递机制,使得开发者能够快速实现从一个元素拖拽到另一个元素的交互…

阿里云-通义灵码:测试与实例展示

目录 一.引子 二.例子 三.优点 四.其他优点 五.总结 一.引子 在软件开发的广袤天地中,阿里云通义灵码宛如一座蕴藏无尽智慧的宝库,等待着开发者们去深入挖掘和探索。当我们跨越了入门的门槛,真正开始使用通义灵码进行代码生成和开发工作…

第P2周:Pytorch实现CIFAR10彩色图片识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标 实现CIFAR-10的彩色图片识别实现比P1周更复杂一点的CNN网络 具体实现 (一)环境 语言环境:Python 3.10 编 译 器: …

【数字花园】数字花园(个人网站、博客)搭建经历汇总教程

目录 写在最最前面第一章:netlify免费搭建数字花园相关教程使用的平台步骤信息管理 第二章:本地部署数字花园数字花园网站本地手动部署方案1. 获取网站源码2.2 安装 Node.js 3. 项目部署3.1 安装项目依赖3.2 构建项目3.3 启动http服务器 4. 本地预览5. 在…

Hadoop一课一得

Hadoop作为大数据时代的奠基技术之一,自问世以来就深刻改变了海量数据存储与处理的方式。本文将带您深入了解Hadoop,从其起源、核心架构、关键组件,到典型应用场景,并结合代码示例和图示,帮助您更好地掌握Hadoop的实战…

使用 GD32F470ZGT6,手写 I2C 的实现

我的代码:https://gitee.com/a1422749310/gd32_-official_-code I2C 具体代码位置:https://gitee.com/a1422749310/gd32_-official_-code/blob/master/Hardware/i2c/i2c.c 黑马 - I2C原理 官方 - IIC 协议介绍 个人学习过程中的理解,有错误&…

WPF Prism ViewInjection

ViewInjection介绍 ViewInjection是Prism框架提供的一种机制,用于将视图动态地注入到指定的容器(Region)中。这种注入方式允许你在运行时动态地添加、移除或替换视图,从而实现更灵活的用户界面设计。 ViewInjection示例 GitHub…

软考高级架构 - 11.1- 信息物理系统CPS

信息物理系统CPS 信息物理系统(CPS)是控制系统、嵌入式系统的扩展与延伸。通过集成先进的感知、计算、通信、控制等信息技术和自动控制技,构建了物理空间与信息空间中人、机、物、环境、信息等要素相互映射、适时交互、高效协同的夏杂系统。 CPS的本质是基于…

后端开发工程师需要掌握哪些设计模式?

大家好,我是袁庭新。 作为后端开发者,学习和掌握设计模式是非常有必要的。不仅可以帮助后端开发者更好地设计和实现软件架构,还可以提高代码的质量和可维护性。此外,设计模式也是后端开发面试中常见的考点之一,掌握它…

【Android Studio】学习——数据存储管理

AndroidStudio实验——数据存储管理 文章目录 AndroidStudio实验——数据存储管理[toc]一:实验目标和实验内容:二:数据库的CRUD操作【一】创建(Create)【2】读取(Read)【3】更新(Upd…