零基础Linux_4(权限和初识操作系统)具体用户分类+rwx+umask+粘滞位

news2024/11/25 5:03:32

目录

1. 操作系统初识

1.1 操作系统的基本概念

1.2 操作系统的意义

1.3 指令操作的意义

2. shell命令及运行原理

2.1 shell的概念

2.2 shell 的意义

3. Linux权限

3.1 Linux 具体用户的分类

3.2 用户管理

adduser 新用户名(添加普通用户)

用户登陆 - SSH 用户名

userdel -r 普通用户名(删除用户)

3.3 Linux 中文件相关的权限概念

3.4 Linux下权限分类

3.5 文件权限的修改chmod

3.6 rwx权限的作用

3.7 文件权限的转让

3.8 默认创建后的权限和umask

3.9 粘滞位(Sticky bit)

4. 相关笔试题

答案及解析

本篇完。


1. 操作系统初识

在任何一本教材上,都可以看到操作系统的定义。

这些定义虽然没什么问题,但是对于初学者来说理解起来还是会一脸懵的。

我们将通过一些简单的例子,带着大家去理解 "什么是操作系统" 。

我们不妨先思考几个问题:

思考:是先有计算机(硬件)还是先有操作系统呢?

答案是先有计算机,换言之操作系统是在有了计算机后诞生的产物。

思考:为什么要有操作系统?

因为单纯的硬件计算机操作起来效率特别低,难度特别高。是为了降低计算机的使用难度的。

思考:显示器是硬件吗?

是的,printf、cout (软件)向显示器打印,本质就是向硬件写入数据(硬件)。

也就是说,软件实际上是可以操作硬件的,那这个操作具体是怎么完成的呢?

在我们计算机的整个结构中,最底层我们称之为 "硬件" 。

所谓的硬件就是键盘、显示器、网卡、显卡等各种设备……在底层它们都叫硬件。

这些硬件之间的组织方式,我们后面讲解。

1.1 操作系统的基本概念

百度百科:操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。

操作系统是人与计算机之间的接口,也是计算机的灵魂。

上面我们得到一个既定的事实:软件在操作硬件!

在硬件层上还存在着一个软件层,我们称之为 "驱动软件层" 。

我们可以通过驱动软件层帮上层实现对硬件的基本访问。

每一种硬件都有一种与之匹配的驱动程序。

举个例子,不知道大家有没有这样的操作经历 —— 我们在 Windows 中使用鼠标,鼠标没有插入计算机中时我们滚动鼠标时没有反应的,但当我们把鼠标插入到USB接口中的一瞬间,此时滚动可能还是没有反应的(当然,现在鼠标的响应已经时间短的让人难以察觉了),即使鼠标在物理上已经插入到计算机USB接口中了。大概过了几秒电脑驱动提示音响了一声,此时鼠标就和电脑相连接了。

当我们往我们的计算机新增一个设备时,刚开始插入的时候短暂期间其实都是没有反应的,过了一会它就有反应了,这个 "过了一会" 操作系统在做什么呢?

操作系统在根据你的硬件帮你选择对应的驱动程序。也就是说,它的核心工作是能够给上层提供访问硬件的接口,就好比你自己写C++代码,你封装一个类,类里面封装了各种成员方法,我们这么做不就是想让我们定义出来的对象可以使用类中定义的成员方法来进行操作吗?所以我们写类写方法就是为了让类给我们提供接口。

一般而言,一种硬件都会有厂商给我提供对应的驱动软件,获取驱动的方式,一般而言是由 OS 帮我们获取与安装的。这些对用户来说是透明的。

驱动软件层:帮上层实现对硬件的基本访问。

再往上,还有一层软件层,我们一般把它称之为 OS Kernel(操作系统内核)。

狭义上来讲,这个就是我们的操作系统。

操作系统的内部它一般会有四大构成:① 进程管理  ② 文件管理  ③ 内存管理  ④ 驱动管理。

操作系统的核心工作是帮助我们进行这上面这些内容的管理工作。

再再往上就是 "用户层" 了,比如我们的图形化界面、各种库,用户的一些应用程序等。

1.2 操作系统的意义

为什么要有操作系统?

我们可以分成 "对上" 和 "对下" 来说明:

  • 对上:给用户提供一个良好的、稳定的、高效的运行环境。
  • 对下:要管理好底层的软硬件资源。

上面我们提了这么多,这些都可以归结成一个词:管理

管理的目的:① 对上:提供一个良好稳定的运行环境    ② 对下:管理好软硬件资源。

从而整体达到提高操作效率的目的,这就叫操作系统。

软件管理软件,这合理吗?

人管人,软件管理软件有啥奇怪的,这有啥不合理的,这很合理。

总结:操作系统是一款软件,用来进行对软硬件资源进行管理的软件。

好,操作系统我知道是什么了,那什么是Linux操作系统呢?

这就如同现实中我们有中国银行、中国建设银行、中国农业银行……

我们的操作系统也有不同的种类:Windows,Linux,MacOS......

Linux操作系统也就是操作系统的一种罢了,

不管它有多么特别,它最终都是围绕我们刚才所说的 "向上和向下" 展开的。

1.3 指令操作的意义

为什么要进行指令操作?

指令操作对于非专业人员,没有必要。对于专业人员,可以必要,也可以不必要。

但是,对于我们学习 OS 原理、编程、指令操作,必须需要掌握。

用图形化界面不香吗?是先有指令,还是现有图形化界面?

早期的操作系统,是键盘给OS、计算机数据的。

如何输入数据给计算机?打字机 → 计算机键盘(从打字机演化过来的)。

你有没有想过,为什么我们键盘上是按 QWER 的顺序,还不是 ABCD 去排列的?

其实是历史原因导致的,这是根据使用频率去设计的。

先有指令操作,后有的操作系统,刚开始的时候全部都是支持指令操作的。

如果你对计算机图形化的内容感兴趣,可以百度了解了解。

我们的 Windows 也是有指令操作的,也就是 cmd 命令提示符:

指令操作显著的缺点就是操作成本高,

所以当时操作系统公司为了 "迎合" 用户,都去开发了图形化界面。

我们再回到问题本身:那我们为什么要学习指令呢?指令的意义是什么?

因为指令操作距离 OS 更近,便于我们更好地掌握 OS。

所以我们学习指令除了学习指令本质外,我们更是为了接近操作系统的特性。

2. shell命令及运行原理

2.1 shell的概念

Linux严格意义上说的是一个操作系统,我们称之为 —— Kernel(核心), 

但我们一般用户,是不能直接使用Kernel的,而是通过Kernel的 "外壳" 程序,

也就是所谓的shell,来与Kernel进行 "沟通 " 。

如何理解?为什么不能直接使用kernel? 从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含: 将使用者的命令翻译给核心(kernel)处理。 同时,将核心的处理结果翻译给使用者。 对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。 shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运 行出结果,通过shell解析给用户。 帮助理解:如果说你是一个害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头让你心动的女嘉宾小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。

2.2 shell 的意义

所以为什么不能直接使用kernel,而是要通过shell:

① 降低操作 OS 的成本:用户不善于和内核沟通,需要通过外壳来做解释。

② shell 保护操作系统:外壳的存在让内核不会暴露给用户,用户所有的非法、不合理操作会直接被外壳拦住,某种意义上来说是对操作系统的一种保护。

我们的 Centos7常用的命令行解释器(shell),叫做 bash。

它是存在于 /usr/bin 目录下的一个可执行文件:

 他们两个之间有什么关系呢? shell 是所有解释器的统称,bash 是具体的一款解释器。

bash 属于 shell 中的一种,常见的 shell 工具:sh、bash、csh、tcsh、ash 等。

它们的关系就像是 Linux 和 Centos7.6 的关系,一个是统称的,一个是具体的。

3. Linux权限

什么是权限?

① 约束人的(对人进行分类)

② 需要对应的事物具有特定的属性

3.1 Linux 具体用户的分类

Linux 的用户分为 root 和普通用户,root 为超级用户,就像 Windows 系统中的管理员。

  • 超级用户:可以在 Linux 系统下做任何事情,不受限制。
  • 普通用户:在 Linux下做有限的事情。
超级用户的命令提示符是 # ,普通用户的命令提示符是 $ 。
命令 su [ 用户名 ]
功能 :切换用户。
例如,要从 root 用户切换到普通用户 user ,则使用 su user 。 要从普通用户 user 切换到 root 用户则使用 su root( root 可以省略),此时系统会提示输入 root 用户的口令。

3.2 用户管理

adduser 新用户名(添加普通用户)

当前我们系统当中是不存在任何一个用户的,只有一个 root,也只能有一个超级用户。

如果我想给自己创建一个用户,该如何创建呢?(注意,前提是 root )

在前面讲指令时我们用的都是root 用户,确认当前你是哪个用户,可以输入 whoami 指令:

当前是root,所以可以输入adduser 新用户名(添加一个普通用户)

创建完后,当前我们创建的用户是不能进行登陆的,我们还需要给它设置密码:

(这里非常不建议root密码和普通用户密码设置成一样)

当然,如果密码设置的太简单,会出现 BAD PASSWORD 的提示,但这也仅仅是个建议。

随后再输入一遍确认密码即可,这和我们网站注册一样,需要你 "确认密码" :

成功后会显示: all authentication tokens updated successfully.

此时我们就把用户添加好了。

用户登陆 - SSH 用户名

添加用户后,我们想登陆一下我们刚刚创建的用户。

但是我们现在是处于 root下的,可以直接su 普通用户名,然后输入普通用户名进行切换,但建议先 "退出登录" ,我们可以输入exit,回车,然后双击所有会话中的建立的会话,

之后就可以登录我们刚才创建的用户啦,输入用户名和密码就行:

(这里也建议不要选记住用户名/密码)

 登陆成功后,我们可以输入whoami查询当前用户。

 

值得注意的是,现在命令行界面的前缀由 # 变为 $ 了,

上面说了,# 代表 root管理员权限,$ 代表普通用户。

userdel -r 普通用户名(删除用户)

如果我们想删除一个用户呢?我们接下来就来看看如何删除一个用户。

我们切换到 root:直接输入su,然后输入root的密码,输出ls /home即可查看用户:

通常情况/home路径下只有保存的用户,但是我们之前为了方便演示,把一个目录建立在里面了,现在我们进入home目录然后,把linux_3删掉:

 再建立两个用户来方便演示:

 userdel -r 普通用户名(删除用户),现在删除rtx3用户(我们现在是root超级用户)

此时发现,第一次userdel rtx3已经删掉rtx3这个用户了,只是在home目录下的rtx3目录没有删,所以不能在新建一个rtx3用户,如果rtx3用户没有被删掉,应该是像新建rtx2用户一样显示:用户已经存在。所以我们删了rtx3用户后,应该在home删掉rtx3目录:

普通用户转到root用户我们已经讲过了,

在 root 用户下,想要切到普通用户甚至连密码都不需要输:

当然,如果你是普通用户想切换到另一个普通用户,当然还是需要输入密码的。

root 什么身份都可以切,由此可见 root 账号非常重要。

3.3 Linux 中文件相关的权限概念

为了方便演示,我们切换到rtx2用户,然后进入/home/rtx2路径下建立几个文件和目录:

当我们输入 ll 显示详细信息时,你有没有注意到第一部分的drwx等信息?

我们既然要学习权限,我们重点要理解 ls -l 显示的若干的字母组合。

drwxrwxr-x

 -rw-rw-r--

第一列的第一个字符,叫做 "文件类型" 。

Linux 中不是以文件名后缀区分文件类型的,而是通过 ls -l 显示的第一个字符区分文件类型的。这有点颠覆我们的直觉,因为我们 Windows 是文件末尾 [ .类型 ] 的格式去区分文件类型的,而在 Linux 下你跟我说文件类型跟后缀没有关系?确实是这样,这里就不验证了。

在Windows 下,这里的 a.txt 这就是一个文本,但是在 Linux 是完全不关心你后缀是什么的。

Linux 的文件后缀纯属摆设,我们写后缀只是是为了给自己看的。

概念:Linux 是根据第一列第一个字符去区分文件的类型的。

d :目录(文件夹)
-  : 普通文件,文本、源代码、可执行文件、第三方动态库等。
l    : 软链接(类似 Windows 的快捷方式)
b   :块设备文件(例如硬盘、光驱等)
p   :管道文件
:字符设备文件(例如屏幕等串口设备)
:套接口文件

所以现在输入ll出来的第一个字母知道是什么意思了,

既然 Linux 文件后缀纯属摆设,那我们把 test.c 改成 test.txt,然后用 gcc 编译可以吗?

这是不行的gcc是Linux下的一个软件,Linux下不看后缀,但是gcc看。

虽然 Linux不以文件名后缀区分类型,但是 Linux 并不排斥以后缀做文件类型。

3.4 Linux下权限分类

权限 = 人 + 事物属性,所以权限的概念以及操作都是围绕人和概念的属性展开的。

Linux 上,对文件的权限:这个文件谁能访问?这个文件谁不能访问?

对应的文件应该具备的某种属性:

读(r/4):read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写(w/2):write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“—”表示不具有该项权限

rwx的位置都是固定的,所以上面的属性排列组合就有下面8种情况: 

八进制数值表示方法:

(利用八进制数值进行操作,用起来会非常的方便,等下面讲完文件的修改操作后再详细讲解)

在 Linux 系统中,人分三类:

① 文件的拥有者 owner     ② 文件的所属组 grouper       ③ 文件的其他用户 other

root 和普通用户都可称为文件的拥有者、所属组、其他用户,他们并不冲突,反而是相互补充的。其他用户是出了拥有者和所属组外的所有用户。(不会被记录)

然后详细信息的第一个字母后的九个字母也能知道是什么意思了,

前三个是拥有者的权限,中间三个是所属组的权限,后三个是其他用户的权限,

后面的数字先不管,后面的两个名字分别是文件的拥有者和所属组,这里都是rtx2。

3.5 文件权限的修改chmod

chmod
功能: 设置文件的访问权限
格式: chmod [ 参数 ] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明: 只有文件的拥有者和root才可以改变文件的权限
chmod 命令权限值的格式:
① 用户表示符 +/-= 权限字符
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限
用户符号:  
u:拥有者owner
g:所属组grouper
o:其它用户other
a:所有用户all

现在我们是文件的拥有者,下面来随意演示一下:对file1.txt操作:

对code1操作:

 前面说了rwx位置是不变的,而且有就是有没有就是没有,所以可以用二进制表示:

000到111最大是7,所以我们的修改权限还可以以八进制进行修改:

3.6 rwx权限的作用

如果只没有 r 权限,允许进入目录、允许在该目录/文件下创建(写入),只不过是不允许查(看)

 

 如果只没有 w 权限,允许进入,允许在该目录下查看文件列表,但是不允许(写)创建

(需要注意的是,如果一个目录的其他用户other有w权限,那么该目录下无论谁创建的文件其他用户就都能删除了,这是下面的粘滞位要说的内容)

 

  如果只没有 x 权限,允许在该目录下查看文件列表,允许创建,但是不允许进入

其它的组合差不多一样,比如:

如果同时没有 rw 权限,允许进入,但是不允许创建和查看目录下的文件列表:

(注意:不是文件内容,文件的内容是否可以查看由文件自己的权限决定)

 比如在code1创建一个file3.txt,然后写入点东西:

需要注意的是权限只会被认证一次,如果你像上面即使拥有者也是所属组,此时你会先被认证为拥有者,如果拥有者权限什么都没有,而所属组权限什么都有,那么你的权限还是什么都没有。

还有需要注意的是rwx权限对root超级用户是没有用的,它可以顺便读写进入,它甚至可以改你的权限,当然它改后,拥有者还是可以改过来,所以一般只有root和拥有者可以改权限。在公司,root用户你是不能拿到的,一般只是普通用户,所以以后操作尽量在普通用户下操作。

Linux 下一切皆文件,目录也是文件。再结合 "文件 = 内容 + 属性" 去理解。

目录里面保存的是部分文件的 "属性" 。

(文件名和 id 之间是有对应的映射关系的,有可能被系统缓存了)

3.7 文件权限的转让

chown 用户名 文件名(修改文件的拥有者)

如果我是一个文件的拥有者,我想把文件给别人:

被禁止了,当你想给别人东西的时候,要不要经过别人的同意?

当然需要,这里我们可以用 sudo 指令强制给别人(在前面的chown rtx code1前加sudo)

(sudo 有关一个叫信任列表的东西,你现在输入如果出现报错是因为 root 没有把你添加到信任列表里,这个我们后期讲完 vim 之后再说。在 /etc/sudoers 路径下。)

当然我们还可以直接切换成 root,通过 root 去给,别人不要也不行:

通过修改文件的拥有者,我们还能验证一个文件的创建者和拥有者不一定是同一个人

chown 用户名 文件名(修改文件的所属组)

和 chown 一样的用法,我们在root下,可以用 chgrp 指令改变文件的所属组 grouper。

3.8 默认创建后的权限和umask

默认权限:① 默认目录的起始权限:777(rwx)     ② 默认普通文件的权限:666(rw-)

在前面的学习发现目录没有x权限很麻烦,所以一般目录默认创建的权限都有x。默认创建后的权限一定是上面两种吗?

为了方便演示和形成好习惯,我们删掉rtx2里的文件和目录(删不掉可以切换到root删掉再切回来),在rtx2里创建一个linux_2目录,然后进入linux_2目录新建几个文件和目录:

有童鞋就发现了,上面不是说应该是 777 和 666,为什么这里是 775 和 664 呢?

因为系统中有一个默认的 "权限掩码" ,叫做 umask:

默认权限 != 最终权限,Linux 中的最终权限 = 默认权限 "去掉" umask 中存在的权限。

umask 权限掩码:凡是在权限掩码中出现的权限,都不应该在最终权限中出现!

输入umask查看你的机器的权限掩码:

最终权限 = 默认权限 & (~umask) -----(默认权限按位与上umask的二进制按位取反)

只看umask的后三位,按着下面图心算一下就是这样的:

 umask 是可以修改的:首先输入umask,跟着输入要改的值,四位,第一位是0,:

按照 最终权限 = 默认权限 & (~umask) ,想要最终权限和默认权限一样,那就把umask改成0000了,不过一般习惯改为0002,这里改回来,然后把演示的文件删一部分。

3.9 粘滞位(Sticky bit)

共享目录:

Linux 下可以存在一些目录,拥有者和所属组是 root,

其他人允许以 other 的身份在该目录下进行文件的创建、读取、删除和修改等操作:

这里的tmp目录就是共享目录 

注意事项:在一个共享目录下的文件,你不让我写,不让我读,但防不住我删除。(讲w权限的时候讲了)

比如,有两个普通用户A和B都在root的共享目录下创建了几个文件,用户A不想让用户B访问它的文件,于是就 chmod 把 other 的 rw全撤咯,于是用户B急了,恼羞成怒,啊你不给我用你也别想用了,得不到就毁掉!直接给你把文件删了。此时B是可以删A创建的文件的,(讲w权限的时候讲了)如果不想让别人删,那么这个共享目录的其他用户other不应该有w权限,此时应该是root使用chmod o-w去掉其他用户other的w权限,那么此时B不能删除A的文件了,但是A也不能删除自己的文件了因为A也是这个共享用户的其他用户,而且A和B都不能创建新文件了,也不能往文件里写东西了,这就需要粘滞位来解决。

如果你仍然是想在共享目录下形成临时文件,但又怕别人给你删了,

你可以给共享的 <目录> 加上粘滞位来解决。

注意,是给目录加粘滞位!即你共享哪个目录,你就在哪个目录下加上粘滞位。

我们下面来介绍一下 Sticky bit ——粘滞位。

chmod +t 目录名(添加粘滞位)

粘滞位只能给目录加,只能给其他用户other加:

为了方便演示,这里切换到root新建一个类似上面tmp共享目录的共享目录mytmp,

把mytmp的权限改为777,然后切换到rtx2进入这个目录创建一个文件:

此时rtx2.txt是我rtx2创建的文件,我只想自己rwx这个文件,不想其它人有,所以改一下,

但是此时其他用户,(这里切换到root用户再新建一个djs用户),切换到djs用户,djs还是可以删除rtx2.txt:

上面说了:

如果你仍然是想在共享目录下形成临时文件,但又怕别人给你删了,

你可以给共享的 <目录> 加上粘滞位来解决。

这里切换到root,然后对我们的共享目录mytmp:chmod +t 目录名(添加粘滞位)

这里的mytmp共享目录的其他用户的权限就变成wrt了,这个t你可以看作x的特殊情况,

然后切换rtx2再重新创建一个rtx2.txt文件:重复上面的步骤

目录设置了粘滞位 t 后,作为 other 就无法随意地删除其他用户的文件了。

不过 root 还是想删就删,想干啥就干啥。

普通用户再怎么进行文件操作,对 root 都是无效的。

4. 相关笔试题

1. 如果系统的umask设置为244,创建一个新文件后,它的权限( )

A.--w-r--r--

B.-r-xr--r--

C.-r---w--w-

D.-r-x-wx-wx

2. 关于沾滞位,一下描述正确的是( )[多选]

A.其它用户在设置了沾滞位的目录下不可以删除别人的文件

B.其它用户在设置了沾滞位的目录下不可以创建文件

C.使用chmod +t 设置目录沾滞位

D.使用chmod +x 设置目录沾滞位

3. 在Linux中,file.sh文件的权限为-rw-r--r-x,其对应权限用数值形式表示为( )

A.775

B.745

C.645

D.643

4. linux下给文件start.sh设置权限为自己可读可修改可执行,组内用户为可读可执行不可修改,其余用户没有任何权限,那么设置该文件权限的命令为 ( )

A.chmod start.sh 706

B.chmod start.sh 750

C.chmod start.sh 705

D.chmod start.sh 777

答案及解析

1. C

umask是linux下设置文件默认创建权限掩码, 文件给定权限与掩码取反相与得到实际权限

默认创建普通文件给定权限666(不给予可执行权限),

666 & (~244) = 422 -> 100010010 -> -r---w--w-

2. AC

沾滞位的作用:在设置的沾滞位的目录下,其它用户可以创建文件,但是只能删除自己的文件,不可以删除别人的文件;可以通过chmod +t设置其它用户权限位中的沾滞位

3. C

linux下文件的权限外在表示为-rw-r--r-x

但是在系统中使用二进制位存储,也就是使用0和1表示是否具备操作的权限,因此该权限被表示为:-110100101,以每3个比特位表示一个八进制数字,则转换为三个8进制数字为645

4. B

自己可读可修改可执行:111 ->7

组内用户为可读可执行不可修改:101->5

其余用户没有任何权限:000->0

因此整体转换后的权限为:750

本篇完。

权限就先讲到这里了。下一篇:零基础Linux_5(开发工具_上)yum和vim和gcc/g++和gdb。

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

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

相关文章

视频号挂公众号链接没完全堵死,还能加,最新方法教程,玩私域流量的福音来了

视频号挂公众号链接 视频号挂公众号链接&#xff0c;不限号&#xff0c;不限次数&#xff0c;不需要绑定公众号&#xff0c;不需要10000阅读量 视频号评论区能挂链接&#xff0c;对视频号做公转私的人来说&#xff0c;可以说是大惊喜&#xff0c;对公司来讲放上自己的推广链接…

前缀和实例1 (【模板】前缀和 )

题目&#xff1a; 算法原理&#xff1a; 前缀和算法能快速求出某一个区间内所有元素的和 1 预处理出来一个前缀和数组dp dp[i] dp[i-1]v[i] (v数组由输入的数字组成&#xff09;&#xff0c;即区间[1,i]的所有元素的和区间[1,i-1]所有元素的和v数组中i下标的元素 2 使用前缀…

获取1688店铺详情 API接口(获取卖家昵称、店铺类型、公司信息、店铺标题、店铺主页)

seller_info-获得店铺详情 1688.seller_info进入测试 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,it…

计算机竞赛 大数据商城人流数据分析与可视化 - python 大数据分析

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据的基站数据分析与可视化 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度…

探索移动应用的自动化测试:如何做出明智的工具选择

引言 随着移动应用的日益普及&#xff0c;其在日常生活和工作中的作用也越来越大。为了确保应用的稳定性和用户体验&#xff0c;自动化测试已经成为了开发流程中不可或缺的一部分。本文将深入探讨如何为移动应用选择合适的自动化测试工具&#xff0c;以及这些工具背后的技术原…

【广州华锐互动】云智慧工厂数字孪生:打造高效、灵活的智能制造新模式

随着工业4.0的到来&#xff0c;数字孪生技术逐渐成为实现工业生产智能化升级的关键。云智慧工厂数字孪生利用先进的数字化技术&#xff0c;创建物理实体的虚拟模型&#xff0c;实现对生产过程的实时监控、优化与管理。 云智慧工厂数字孪生是指通过数字孪生技术&#xff0c;构建…

考研英语笔记:程序员是否勤奋就看他的英语好不好

一位大佬朋友圈写道&#xff1a;看程序员是否勤奋就看他的英语好不好&#xff0c;智商高不高就看他算法好不好。 这句话我当时看到了很触动&#xff0c;默默的记在了心底。 对我来说&#xff0c;算法就免了&#xff0c;但学英语我一直在坚持。我不敢说我是优秀的程序员&#xf…

如何在三星手机上截屏?每一款三星手机的每一种方法,包括S23

无论你是将截图作为保存图片、消息或信息的快速方式&#xff0c;还是作为演示像这篇文章这样有用的操作方法的方式&#xff0c;能够截图都会非常有用。 但并不是所有的手机都以相同的方式进行屏幕截图。事实上&#xff0c;并不是所有的三星手机都能做到这一点。例如&#xff0…

MySql安装包配置

电脑重配过多次&#xff0c;此为mysql安装记录贴&#xff0c;方便查阅 从官网下载的安装包进行本地配置 下载地址 解压下载下来的zip压缩包 解压出来的文件中新增配置my.ini文件 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirD:\\software\\package\\M…

神经网络 05(损失函数)

一、损失函数 在深度学习中, 损失函数是用来衡量模型参数的质量的函数, 衡量的方式是比较网络输出和真实输出的差异&#xff0c;损失函数在不同的文献中名称是不一样的&#xff0c;主要有以下几种命名方式&#xff1a; 损失函数 &#xff08;loss function&#xff09; 代价函…

科研小工具|胰岛素敏感性计算公式

简介 胰岛素敏感就是描述胰岛素抵抗的程度。 计算方式 HOMA-IR是用于评价个体胰岛素抵抗水平的指标。计算方法如下&#xff1a; 胰岛素抵抗指数&#xff08;HOMA-IR&#xff09;空腹血糖&#xff08;FPG&#xff0c;mmol/L&#xff09;空腹胰岛素&#xff08;FINS&#xff0…

上海某游戏小厂面试,也扛不住了...

今天分享一位同学面试上海某游戏公司的面经&#xff0c;同学的技术栈是Java后端&#xff0c;虽然不是大厂&#xff0c;但是一面面试也被问了 25 多个问题&#xff0c;时长也接近 1 小时了 面试过程中&#xff0c;也问到了 Linux socket 编程&#xff0c;游戏公司都会对网络协议…

封神台----为了女神小芳

目录 目录 前言 文章框架 1&#xff0c;题目 2&#xff0c;实验前的准备 3&#xff0c;进入传送门 4,使用Sqlmap对网站进行监测 4.1.检测目标地址是否存在注入点 4.2、检测数据库中的库名 4.3、选择需要爆的库开始爆表名 4.3.1,后面内容的一些注意点: 4.3.2,开始进…

esxi下实现ikuai相同的两个网卡,单独路由配置

1.首先安装配置双网卡。 因为esxi主机只接入了一根外网的网线&#xff0c;那么我们这两个网卡都是一样的网卡&#xff0c;具体的到系统里面进行设置。 2.开机安装系统 进入配置界面&#xff0c;此处就不用多说了&#xff0c;可以看我之前的文档&#xff0c;或者网上其他人的安…

中文版Chatbase轻松帮你实现智能回复

在数字时代&#xff0c;信息量可以说是爆炸性增长&#xff0c;很多企业网站都面临着一个共同的问题&#xff1a;如何在繁忙时还能为访客提供及时而有用的回复&#xff1f;那我可以坚定地说AI问答机器人可以做到。很多人都知道使用Chatbase可以创建聊天机器人来即时回答访客的问…

vue2配置环境变量并且nginx运行成功

需求&#xff1a;我在vue项目配置了生产环境和开发环境&#xff0c;之后通过proxy代理的方式把地址转发到真实的服务器地址上用于请求接口&#xff0c;之后把项目打包后上传到nginx上&#xff0c;之后接口报错404&#xff0c;但是本地运行是可以访问的&#xff0c;找了很久终于…

滑动窗口详解

滑动窗口本质其实也是一种双指针算法&#xff0c;只是因为它维护的区间随着遍历的进行在不停变化&#xff0c;所以形象地称为“滑动窗口” 一、⻓度最⼩的⼦数组 题目要求找到满足条件的长度最小的子数组&#xff0c;我们先来想想暴力的做法&#xff0c;再来想想能不能优化&am…

LeetCode 1462. 课程表 IV:拓扑排序

【LetMeFly】1462.课程表 IV&#xff1a;拓扑排序 力扣题目链接&#xff1a;https://leetcode.cn/problems/course-schedule-iv/ 你总共需要上 numCourses 门课&#xff0c;课程编号依次为 0 到 numCourses-1 。你会得到一个数组 prerequisite &#xff0c;其中 prerequisite…

npm 清缓存(重新安装node-modules)

安装node依赖包的会出现失败的情况&#xff0c;如下图所示&#xff1a; 此时 提示有些依赖树有冲突&#xff0c;根据提示 “ this command with --force or --legacy-peer-deps” 执行命令即可。 具体步骤如下&#xff1a; 1、先删除本地node-modules包 2、删掉page-loacl…

redis实战-redis实现异步秒杀优化

秒杀优化-异步秒杀思路 未优化的思路 当用户发起请求&#xff0c;此时会请求nginx&#xff0c;nginx会访问到tomcat&#xff0c;而tomcat中的程序&#xff0c;会进行串行操作&#xff0c;分成如下几个步骤 1、查询优惠卷 2、判断秒杀库存是否足够 3、查询订单 4、校验是否是一…