当前位置: 首页 > news >正文

linux 文件权限识别及其修改

一、文件权限认识

在 Linux 系统中,一切皆文件,目录也是一种文件形式叫目录文件,它们的属性主要包含:索引节点(inode),类型、权限属性、链接数、所归属的用户和用户组、最近修改时间等内容。
如下为根目录下目录:

$ ls -lih
total 60K263121 lrwxrwxrwx   1 root root    7 Jun  2  2017 bin -> usr/bin263122 dr-xr-xr-x   2 root root 4.0K Dec  7  2017 boot1 drwxr-xr-x   5 root root  360 Aug 11 14:36 dev
1315847 drwxr-xr-x   1 root root 4.0K Aug 11 14:36 etc263621 drwxr-xr-x   5 root root 4.0K Nov 29  2019 home264862 lrwxrwxrwx   1 root root    7 Jun  2  2017 lib -> usr/lib264863 lrwxrwxrwx   1 root root    9 Jun  2  2017 lib64 -> usr/lib64264864 drwx------   2 root root 4.0K Jun  2  2017 lost+found264865 drwxr-xr-x   2 root root 4.0K Dec 13  2015 media264866 drwxr-xr-x   2 root root 4.0K Dec 13  2015 mnt264867 drwxr-xr-x   3 root root 4.0K Nov 29  2019 opt1 dr-xr-xr-x 373 root root    0 Aug 11 14:36 proc
4851238 dr-xr-x---   1 root root 4.0K Dec 11  2019 root
4851241 drwxr-xr-x   1 root root 4.0K Feb 14 11:17 run264881 lrwxrwxrwx   1 root root    8 Jun  2  2017 sbin -> usr/sbin264882 drwxr-xr-x   2 root root 4.0K Dec 13  2015 srv1 dr-xr-xr-x  13 root root    0 Aug 11 14:36 sys
4851264 drwxrwxrwx   1 root root 4.0K Feb 14 11:17 tmp
4851265 drwxr-xr-x   1 root root 4.0K Nov 29  2019 usr
4852397 drwxr-xr-x   1 root root 4.0K Jun  4  2019 var

1.1、索引节点

在 Linux 文件系统中,每个文件都有一个用于标识和管理它的唯一索引节点号(inode number)。索引节点位于文件系统的元数据区域,包含了文件的所有元数据信息,例如文件的所有者、权限、大小、创建时间、修改时间、访问时间等。

索引节点号是一个唯一的数字,用于标识一个文件。在 Linux 文件系统中,每个文件和目录都有一个唯一的索引节点号,这个号码在文件系统中是唯一的。

使用如下命令查看文件目录索引节点:

$ ls -i
total 12528
266890 locale-archive# 266890 即为文件locale-archive的索引节点

一个文件可以有多个硬链接(hard link),每个硬链接都有一个不同的文件名,但它们共享同一个索引节点号。因此,通过硬链接可以让多个文件名指向同一个物理文件。

硬链接和软链接

硬链接(Hard Link)是指多个文件名指向同一个物理文件的链接。多个硬链接共享同一个索引节点号(inode number),因此它们在文件系统中的位置相同,且没有任何区别。每个硬链接都是一个完整的文件名,都可以作为原始文件名使用,并且都可以对文件进行读写操作。

符号链接(Symbolic Link,也称软链接)是指一个特殊类型的文件,它包含了指向另一个文件的路径名。符号链接本身是一个文件,其中包含的路径名指向另一个文件。当访问符号链接时,实际上是访问链接所指向的文件。与硬链接不同,符号链接指向的是文件名,而不是物理文件。

硬链接和符号链接的主要区别如下:

  • 硬链接只能链接同一文件系统中的文件,而符号链接可以跨越文件系统。
  • 硬链接会共享同一个索引节点,因此它们必须指向同一个物理文件,而符号链接可以指向任意文件或目录。
  • 删除原始文件对硬链接没有任何影响,因为它们共享同一个索引节点,而删除原始文件会导致符号链接失效。

示例如下:

# 新建文件file.txt, 写入“Hello World!”
$ vim file.txt# 分别对file.txt 建立硬链接和软链接
$ ln file.txt hard_file.txt$ ln -s file.txt soft_file.txt  # 与硬链接区别在于加 -s$ ll
total 8
-rw-r--r-- 2 root root 13 Aug 11 16:35 file.txt
-rw-r--r-- 2 root root 13 Aug 11 16:35 hard_file.txt
lrwxrwxrwx 1 root root  8 Aug 11 16:36 soft_file.txt -> file.txt# 查看文件内容
$ cat file.txt 
Hello World!$ cat hard_file.txt 
Hello World!$ cat soft_file.txt # 有文章说符号链接无法查看内容,只是显示文件名,这里无法确认 
Hello World!# 删除原始文件后查看文件内容
$ rm -rf file.txt $ cat hard_file.txt 
Hello World!$ cat soft_file
cat: soft_file: No such file or directory

1.2、类型

1.2.1、普通文件:

-代表普通文件,如下:

$ ll /etc/passwd
-rw-r--r-- 1 root root 1690 Aug 14 04:46 /etc/passwd

1.2.2、目录文件

d代表目录文件,如下:

$ ll /home/
drwx------   3 admin       admin 4096 Mar 21 10:32 admin

1.2.3、块设备文件

b代表目录文件,如下:

brw-rw----  1 root disk    253,   0 Nov 30  2022 vda
brw-rw----  1 root disk    253,   1 Nov 30  2022 vda1
brw-rw----  1 root disk    253,   2 Nov 30  2022 vda2
brw-rw----  1 root disk    253,  16 Nov 30  2022 vdb

在Linux系统中,块设备文件是一种特殊的文件类型,用于访问磁盘、光盘等块设备。块设备文件通常以/dev/sdX/dev/hdX的形式存在,其中X表示驱动器的字母编号,从a开始递增。例如,/dev/sda表示系统中的第一个硬盘,/dev/sdb表示系统中的第二个硬盘,以此类推。

块设备文件是一种原始的设备文件,可以直接读写设备的扇区数据。在Linux系统中,块设备驱动程序会把块设备映射到文件系统中,从而使用户可以通过文件系统来管理磁盘。

块设备文件通常被用于分区、格式化、挂载、卸载硬盘等操作。例如,通过fdisk命令可以对块设备文件进行分区操作,使用mkfs命令可以对分区进行格式化,使用mount和umount命令可以将文件系统挂载到块设备上,并在不需要访问文件系统时将其卸载。

1.2.4、字符设备文件

c代表字符设备文件,如下:

crw-rw-rw-  1 root tty       5,   0 Aug  4 14:25 tty
crw--w----  1 root tty       4,   0 Nov 30  2022 tty0
crw--w----  1 root tty       4,   1 Nov 30  2022 tty1
crw--w----  1 root tty       4,  10 Nov 30  2022 tty10

在Linux系统中,字符设备文件是一种特殊的文件类型,用于访问字符设备,例如键盘、鼠标、串口等。字符设备文件通常以/dev/ttyX/dev/ttySX的形式存在,其中X表示设备的编号。

与块设备文件不同,字符设备文件以字符为单位进行读写,而不是以块为单位。因此,字符设备文件通常用于处理流数据,例如文本文件、串口数据等。字符设备文件具有缓存机制,可以提高文件读写速度,并且支持随机访问。

在Linux系统中,字符设备文件的操作方式与普通文件类似,可以使用open、read、write、ioctl等系统调用来访问设备。例如,使用cat命令可以读取键盘输入的字符,使用echo命令可以向串口发送数据。

1.2.5、符号链接文件

l代表符号链接文件,如下:

lrwxrwxrwx. 1 root root  7 Nov 11 2020 python -> python2
lrwxrwxrwx. 1 root root  9 Nov 11 2020 python2 -> python2.7
lrwxrwxrwx  1 root root  16 Nov 11 2020 python2-config -> python2.7-config
lrwxrwxrwx. 1 root root  9 Apr 12 2022 python3 -> python3.6

1.2.6、管道文件

p代表管道文件,如下:

prw-------  1 root  root    0 Nov 30  2022 dmeventd-client
prw-------  1 root  root    0 Nov 30  2022 dmeventd-server

管道文件是一种特殊的文件类型,用于进程之间的通信。管道文件又被称为命名管道文件(Named pipe),与普通文件不同的是,管道文件不能用于存储数据,而是用于流式传输数据。

管道文件可以通过mkfifo命令创建,并且可以使用rm命令删除。管道文件的创建和删除不会影响到已经存在的进程,但是如果所有进程都关闭了管道文件,那么管道文件也会被删除。

在Linux系统中,管道文件通常用于进程之间的数据传输,例如通过管道将一个进程的输出直接传递给另一个进程的输入,从而实现数据处理。例如,可以使用以下命令将一个进程的输出传递给另一个进程:

$ command1 | command2

这样,command1的输出将被传递给command2的输入,从而实现数据处理。

1.2.7、套接字文件

s代表套接字文件,如下:

srwxr-xr-x  1 root  root     0 Apr 12 16:43 dockershim.sock
srw-rw----  1 root  docker   0 Jul 27 16:47 docker.sock

在Linux系统中,套接字文件是一种特殊的文件类型,用于进程之间的网络通信。套接字文件通常以文件路径的形式存在,例如/var/run/docker.sock

套接字文件可以被多个进程共享,因此可以用于实现进程之间的通信和协调。在Linux系统中,套接字文件通常用于实现网络服务,例如Web服务器、数据库服务器等。

套接字文件的创建和使用需要借助Socket API,这是一组用于网络编程的系统调用。在Socket API中,可以使用socket、bind、listen、accept等函数来创建和操作套接字文件。

套接字文件还可以分为两种类型:流套接字(Stream socket)和数据报套接字(Datagram socket)。流套接字是一种面向连接的套接字,用于可靠的传输数据。数据报套接字是一种无连接的套接字,用于快速传输小型数据包。

总之,套接字文件是Linux系统中非常重要的文件类型,用于进程之间的网络通信和协调。了解套接字文件的工作原理和使用方法,对于系统管理员和开发人员来说都是非常重要的。

1.3、权限

数字符号权限
0没有权限
1–x执行
2-w-写入
3-wx写入和执行
4r–读取
5r-x读取和执行
6rw-读取和写入
7rwx读取、写入和执行

1.4、链接数

链接数表示指向该文件的硬链接数量。当一个新的硬链接被创建时,文件的链接数会自动增加,当硬链接被删除时,链接数会相应减少。

例如,如果有一个名为 file.txt 的文件,并创建了两个硬链接 link1 和 link2,那么该文件的链接数就是 3(原始文件名 file.txt 和两个硬链接 link1 和 link2)。

链接数是 Linux 文件系统中一个重要的概念,它有以下几个作用:

1)确定文件是否可以被删除

链接数为 0 表示没有任何硬链接指向该文件,该文件可以被删除。

2)确定文件是否可以被修改

只有文件的所有硬链接都被删除之后,才能对文件进行修改。在硬链接存在的情况下,修改任何一个链接都会影响到其他链接。

3)确定文件是否可以被重命名

如果一个文件有多个硬链接,重命名其中一个硬链接会影响到其他硬链接。因此,只有当文件的所有硬链接都被删除后,才能将该文件重命名。

4)确定文件占用的磁盘空间

链接数的值等于文件的硬链接数加 1,其中加 1 表示文件本身所占用的空间。因此,当一个文件有多个硬链接时,它实际上只占用了一次磁盘空间。

如何查看文件链接数

ls -l

$ ls -l
total 4
-rw-r--r-- 1 root root 5 Aug 14 14:11 test.txt
# 其中链接数为 1

stat 命令

stat test.txt File: ‘test.txt’Size: 5         	Blocks: 8          IO Block: 4096   regular file
Device: 2000d8h/2097368d	Inode: 1315730     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2023-08-14 14:11:57.865926283 +0800
Modify: 2023-08-14 14:11:57.865926283 +0800
Change: 2023-08-14 14:11:57.865926283 +0800Birth: -

二、修改文件权限

2.1、chmod 命令

2.1.1、数字方式

使用数字方式时,每个权限都由三个数字表示,分别代表所有者、所属组和其他用户的权限。结合1.3,使用命令chmod 700 file.txt,给文件file.txt 加权限为rwx------

2.1.2、符号方式

可以使用 +- 来添加或删除权限,通过 ugo 分别表示所有者、所属组和其他用户。

$ chmod u+rw file.txt# 此命令以为着给所有者增加读写权限,所属组合其他用户权限不变。

2.2、chown 命令

chown 命令用于修改文件的所有者。它可以通过用户名或用户 ID 指定新的所有者。

$ chown admin test.py $ ll | grep test.py
-rw-r--r-- 1 admin root    1997 Jun 27 16:59 test.py

2.3、chgrp命令

chgrp 命令用于修改文件的所属组。它可以通过组名或组 ID 指定新的所属组。

$ chgrp admin test.py $ ll | grep test.py
-rw-r--r-- 1 admin admin    1997 Jun 27 16:59 test.py

2.4、umask命令

Linux 操作系统中,umask 命令用于设置新建文件或目录的默认权限。umask 命令是用户级别的命令,通过该命令可以设置当前用户的 umask 值,即默认权限掩码。

umask 值是三个八进制数的形式,如 022,每个数字分别表示文件权限掩码的三个位的值。其中,第一个数字表示新建文件的权限掩码的所有者部分,第二个数字表示所属组部分,第三个数字表示其他用户部分

默认情况下,umask 值通常为 022,即新建文件的默认权限为 -rw-r--r--,新建目录的默认权限为 drwxr-xr-x

例如,当 umask 值为 002 时,新建文件的默认权限为 -rw-rw-r--,新建目录的默认权限为 drwxrwxr-x

umask 值可以使用 umask 命令进行修改,该命令的语法如下:

$ umask [mode]

其中,mode 参数可以是一个八进制数或者一个符号模式。如果没有指定 mode 参数,则 umask 命令将会显示当前的 umask 值

$ umask
0022

和chmod类似,也可以使用符号模式设置默认权限,如果要将默认权限掩码设置为 -rwxr-xr-x,那么可以使用以下命令:

$ umask u=rwx,g=rx,o=rx

上述命令中,u 表示所有者,g 表示所属组,o 表示其他用户,= 表示设置权限。因此,u=rwx 表示设置所有者的权限为可读可写可执行,g=rx 表示设置所属组的权限为可读可执行,o=rx 表示设置其他用户的权限为可读可执行。

需要注意的是,umask 值是在当前会话中设置的,它不会影响已经存在的文件或目录的权限,只会影响新建文件或目录的默认权限

如果要永久修改 umask 值,可以将其添加到 shell 配置文件中,如 ~/.bashrc、~/.bash_profile 或 /etc/profile 等。

总之,umask 命令用于设置新建文件或目录的默认权限掩码。umask 值是三个八进制数的形式,可以使用八进制数或符号模式进行修改。默认情况下,umask 值通常为 022。

相关文章:

linux 文件权限识别及其修改

一、文件权限认识 在 Linux 系统中,一切皆文件,目录也是一种文件形式叫目录文件,它们的属性主要包含:索引节点(inode),类型、权限属性、链接数、所归属的用户和用户组、最近修改时间等内容。 如下为根目录下目录&…...

Java:简单算法:冒泡排序、选择排序、二分查找

冒泡排序 // 1、准备一个数组 int[] arr {5&#xff0c;2&#xff0c;3&#xff0c;1};//2、定义一个循环控制排几轮 for (int i 0; i < arr.length - 1; i) { // i 0 1 2 【5&#xff0c;2&#xff0c;3&#xff0c;1】 次数 // i 0 第一轮 0 1 2 …...

C、C++项目中 configure、makefile.am、makefile.in、makefile 之间的关系

一、configure、makefile.am、makefile.in、makefile 之间的关系 这四个文件都是与 GNU Make&#xff08;一个用于管理程序的编译和安装过程的工具&#xff09;有关的文件&#xff0c;它们的关系如下&#xff1a; configure&#xff1a;是一个脚本文件&#xff0c;用于根据系统…...

【网络】传输层——UDP | TCP(协议格式确认应答超时重传连接管理)

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 现在是传输层&#xff0c;在应用层中的报文(报头 有效载荷)就不能被叫做报文了&#xff0c;而是叫做数…...

198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

198.打家劫舍 class Solution { public:int rob(vector<int>& nums) {if(nums.size()0)return 0;if(nums.size()1)return nums[0];vector<int>dp(nums.size());dp[0]nums[0];dp[1]max(nums[0],nums[1]);for(int i2;i<nums.size();i)dp[i]max(dp[i-1],dp[i-…...

ArcGIS Maps SDK for JavaScript系列之一:在Vue3中加载ArcGIS地图

目录 ArcGIS Maps SDK for JavaScript简介ArcGIS Maps SDK for JavaScript 4.x 的主要特点和功能AMD modules 和 ES modules两种方式比较Vue3中使用ArcGIS Maps SDK for JavaScript的步骤创建 Vue 3 项目安装 ArcGIS Maps SDK for JavaScript创建地图组件 ArcGIS Maps SDK for …...

服务器扩展未生效

服务器扩容未生效 在阿里云付费扩容后&#xff0c;在服务器里面看未生效。 阿里云->实例与镜像->实例->选择实例->云盘->扩容进入linux服务器查看&#xff1a; df -h vda1扩容未生效。原40g->扩容后100g 解决方法&#xff1a; 1、安装growpart yum inst…...

Jenkins构建自由风格项目发布jar到服务器

前面的文章有介绍 docker安装jenkins 和 dockerjenkins发布spring项目&#xff1b;这里就不做过多的介绍&#xff0c;直接说明构建步骤。 1、选择构建一个自由风格的项目 2、 选择丢弃旧的构建 3、配置Git信息 4、构建触发器 和 构建环境可以直接跳过 5、直接来到Build Step…...

Rabbitmq延迟消息

目录 一、延迟消息1.基于死信实现延迟消息1.1 消息的TTL&#xff08;Time To Live&#xff09;1.2 死信交换机 Dead Letter Exchanges1.3 代码实现 2.基于延迟插件实现延迟消息2.1 插件安装2.2 代码实现 3.基于延迟插件封装消息 一、延迟消息 延迟消息有两种实现方案&#xff…...

miniExcel 生成excel

一、nuget dotnet add package MiniExcel --version 1.31.2 二、新建表及数据 ExampleProducts 三、这里我用了Dapper.Query方法 读取excel public virtual async Task<IActionResult> Anonymous(){try{//using (var connection _dbContext.GetDbConnection())//{//…...

Handler详解

跟Handler有关系的&#xff0c;包括Thread&#xff0c;Looper&#xff0c;Handler&#xff0c;MessageQueue Looper: 由于Looper是android包加入的类&#xff0c;而Thread是java包的类&#xff0c;所以&#xff0c;想要为Thread创建一个Looper&#xff0c;需要在线程内部调用…...

Feign忽略Https的SSL最佳方案(且保证负载均衡将失效)

同时解决Https的SSL证书验证问题和feign不支持Patch请求方法的问题 代码 1. 工具类 OkHttpUtils.java import javax.net.ssl.*; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import j…...

Neo4j之SET基础

在 Neo4j 中&#xff0c;SET 语句用于更新节点或关系的属性。它允许你修改节点或关系的属性值&#xff0c;可以单独使用&#xff0c;也可以与其他查询语句&#xff08;如 MATCH、CREATE、MERGE 等&#xff09;一起使用。以下是一些使用 SET 语句的常见例子&#xff0c;以及它们…...

Redis 缓存过期及删除

一、Redis缓存过期策略 物理内存达到上限后&#xff0c;像磁盘空间申请虚拟内存(硬盘与内存的swap),甚至崩溃。 内存与硬盘交换 (swap) 虚拟内存&#xff0c;频繁I0 性能急剧下降&#xff0c;会造成redis内存急剧下降&#xff1b; 一般设置物理内存的3/4&#xff0c;在redis…...

万字长文·通俗易懂·一篇包掌握——输入/输出·文件操作(c语言超详细系列)(二)

前言&#xff1a;Hello&#xff0c;大家好&#x1f618;&#xff0c;我是心跳sy&#xff0c;上一节我们主要学习了格式化输入输出的基本内容&#xff0c;这一节我们对格式化进行更加深入的了解&#xff0c;对文件概念进行介绍&#xff0c;并且对输入、输出与文件读写的基本概念…...

【左神算法刷题班】第17节:在有序二维数组中查找目标值、等于目标字符串的子序列个数

第17节 题目1&#xff1a;在有序二维数组中查找目标值 给定一个每一行有序、每一列也有序&#xff0c;整体可能无序的二维数组 再给定一个数num&#xff0c; 返回二维数组中有没有num这个数 例子 数组如下&#xff0c;找 6 是否存在。 1 3 5 7 2 4 6 13 3 9 14 …...

【Terraform学习】本地变量(Terraform配置语言学习)

背景&#xff1a; 关于如何在机器上拉terraform代码&#xff0c;初始化就不重复了&#xff0c;需要的可以查看前面的文章&#xff1a; 【Terraform学习】Terraform-AWS部署快速入门&#xff08;快速入门&#xff09;_向往风的男子的博客-CSDN博客 使用本地变量命名资源 将每…...

zabbix自动注册服务器以及部署代理服务器

文章目录 Zabbix自动注册服务器及部署代理服务器一.zabbix自动注册1.什么是自动注册2.环境准备3.zabbix客户端配置4.在 Web 页面配置自动注册5.验证自动注册 二.部署 zabbix 代理服务器1.分布式监控的作用&#xff1a;2.环境部署3.代理服务器配置4.客户端配置5.web页面配置5.1 …...

掌握Python的X篇_32_使用python编辑pdf文件_pdfrw

本篇介绍利用python操作pdf文件&#xff0c;我们平时也会有合并和拆分pdf的需求&#xff0c;此时我们就可以使用本节内容。 文章目录 1. pdfrw的安装2. 切分pdf文件3. pdfrw官网及实现一版四面的实例 1. pdfrw的安装 pip install pdfrw官网地址&#xff1a;https://github.co…...

【软件工程】软件测试

软件测试的对象 软件程序文档 测试对象&#xff1a;各个阶段产生的源程序和文档。 软件测试的目的 基于不同的立场&#xff0c;对软件测试的目的存在着两种完全对立的观点。 &#xff08;1&#xff09;一种观点是通过测试暴露出软件中所包含的故障和缺陷(从用户的角度)&#xf…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...