鸟哥的Linux私房菜快速阅读笔记(二) 多用户系统的目录结构

第五章、使用者与群组

5.1 使用者与群组

Linux 是一个多用户操作系统,为了保障系统安全与数据隐私,引入了严格的文件权限管理机制。在 Linux 中,每个文件都与三个特定的身份相关联:拥有者 (User/Owner)群组 (Group)其他人 (Others)

文件拥有者

  • 定义:创建文件的用户即为该文件的拥有者。

  • 权限:拥有者对该文件拥有最高的控制权(读、写、执行)。

  • 隐私性

    • 默认情况下,其他用户无法修改拥有者的文件。
    • 即使其他用户拥有"读取"权限,通常也无法"写入"或"修改"文件内容(除非拥有特殊权限)。
    • 这是 Linux 安全机制的第一道防线,确保个人数据(如电子邮件、配置文件)不被他人篡改。

群组

为了解决多用户环境下的资源共享问题,Linux 引入了群组机制。

  • 目的:让特定的一群用户能够共享某些文件或目录,而无需将权限开放给所有人。

  • 机制

    • 主要群组 (Primary Group) :用户登录时默认所属的群组。用户创建的新文件默认归属于此群组。

    • 支持群组 (Supplementary Groups) :一个用户可以同时属于多个群组。

      • 案例 :账号 teacher 可以同时属于 projectaprojectb 两个群组,从而能够访问这两个项目组共享的资源。
  • 权限逻辑

    • 若文件所属群组为 class1,则 class1 内的成员(非拥有者)可以依据"群组权限"访问该文件。
    • 不属于该群组的用户,只能依据"其他人 (Others)"的权限访问。

其他人

  • 定义:既不是文件拥有者,也不在文件所属群组内的用户。
  • 权限:通常被视为"外部人员",权限限制最严格。

超级管理员:Root

在 Linux 权限体系中,有一个特殊的账号拥有至高无上的权力。

  • 账号名称root

  • 身份代号:UID 为 0。

  • 能力

    • 无限权限 :可以读取、修改、删除系统中的任何文件,无视文件本身的权限设置(rwx)。
    • 系统管理:可以管理所有用户账号、安装软件、修改系统配置。
  • 由于权限过大,使用 root 操作时需极度谨慎,误操作可能导致系统崩溃。

身份与群组的记录文件

Linux 系统通过以下三个关键文件来管理用户和群组信息。切勿随意删除或修改这些文件,否则可能导致系统无法登录。

文件路径 作用 关键内容
/etc/passwd 用户账号信息 记录用户名、UID、GID、家目录、默认 Shell 等。所有用户可见。
/etc/shadow 用户密码信息 记录加密后的密码、密码过期策略等。仅 root 可读,保障安全。
/etc/group 群组信息 记录群组名称、GID、以及该群组包含的成员列表。

5.2 Linux 文件权限概念

5.2.1 Linux 文件属性

查看指令:ls -al
ruby 复制代码
[dmtsai@study ~]$ ls -al
  • -a (all) :列出所有文件,包含以 . 开头的隐藏文件
  • -l (long) :以长格式列出文件的详细属性。

执行 ls -al 后,输出的一行数据包含了 7 个主要字段。以 -rw-r--r-- 1 root root 1864 May 4 18:01 initial-setup-ks.cfg 为例:

内容示例 含义 详细说明
-rw-r--r-- 权限与类型 最重要的字段,共 10 个字符。
1 链接数 指向该文件 i-node 的硬链接数量。
root 拥有者 该文件的归属用户账号。
root 所属群组 (Group) 该文件的归属群组账号。
1864 文件大小 默认为 Bytes
May 4 18:01 修改时间 文件内容最后一次被修改的时间。若时间过久(如超过半年),年份会替代时间显示。
initial-setup... 文件名 若文件名以 . 开头(如 .config),则为隐藏文件

第一栏的 10 个字符(如 -rw-r--r--)是 Linux 权限管理的核心,分为四部分解读:

A. 文件类型 (第 1 个字符)

  • -:普通文件 (File)。
  • d:目录 (Directory)。
  • l:链接文件 (Link file)。
  • b:块设备文件 (Block device),如硬盘。
  • c:字符设备文件 (Character device),如键盘、鼠标。

B. 权限组合 (第 2-10 个字符)

剩余 9 个字符每 3 个为一组,分别代表 拥有者 (User)所属群组 (Group)其他人 (Others) 的权限。

权限组 字符位置 含义 权限说明
拥有者权限 2-4 (rwx) 文件创建者的权限 r (Read, 4): 读取内容 w (Write, 2): 修改/写入 x (Execute, 1): 执行 (若是目录则表示可进入 cd)
群组权限 5-7 (r-x) 同群组成员的权限 同上。若无权限则显示 -
其他人权限 8-10 (r--) 既非拥有者也非同群组的用户 同上。

C. 数字表示法 (Octal Mode)

权限可以用数字相加来表示(r=4, w=2, x=1):

  • rwx = 4+2+1 = 7
  • rw- = 4+2+0 = 6
  • r-x = 4+0+1 = 5
  • r-- = 4+0+0 = 4
  • --- = 0
  • 对于文件x 代表可执行(如脚本、二进制程序)。
  • 对于目录x 代表可进入(作为路径访问);w 代表可修改目录结构(增删文件)

5.2.2 如何改变文件属性与权限

改变所属群组:chgrp
  • 功能:修改文件的所属群组。

  • 语法

    bash 复制代码
    chgrp [-R] dirname/filename ...
  • 参数

    • -R:递归 (recursive),连同子目录下的所有文件/目录一并修改。
  • 前置条件

    • 目标群组名称必须存在/etc/group 文件中,否则会报错 invalid group

案例演示

csharp 复制代码
# 尝试将文件群组改为存在的 'users' 群组
[root@study ~]# chgrp users initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 root users 1864 May 4 18:01 initial-setup-ks.cfg
​
# 尝试将文件群组改为不存在的 'testing' 群组 -> 报错
[root@study ~]# chgrp testing initial-setup-ks.cfg
chgrp: invalid group: 'testing'
改变文件拥有者:chown
  • 功能:修改文件的拥有者(也可以顺便修改所属群组)。

  • 语法

    bash 复制代码
    chown [-R] 账号名称 文件或目录
    chown [-R] 账号名称:群组名称 文件或目录
  • 前置条件

    • 目标账号名称必须存在/etc/passwd 中。

常见场景:复制文件后的权限修正 使用 cp 复制文件时,新文件会保留原文件的属性(拥有者/群组)。如果你将 root 的文件复制给普通用户使用,必须用 chown 修改拥有者,否则普通用户无法修改该文件。

csharp 复制代码
# 1. 复制文件 (以 root 身份执行)
[root@study ~]# cp .bashrc .bashrc_test
[root@study ~]# ls -al .bashrc*
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 176 Jun 3 08:04 .bashrc_test
# 注意:.bashrc_test 的拥有者仍然是 root
​
# 2. 修改拥有者为 bin
[root@study ~]# chown bin initial-setup-ks.cfg
​
# 3. 同时修改拥有者和群组 (使用冒号 : 或小数点 . 分隔)
[root@study ~]# chown root:root initial-setup-ks.cfg
# 或者
[root@study ~]# chown root.root initial-setup-ks.cfg

Tips : chown 支持 user.group (小数点) 或 user:group (冒号) 的格式来同时修改拥有者和群组。

改变文件权限:chmod

修改权限有两种方法:数字类型符号类型

方法一:数字类型改变权限

Linux 权限由 9 个字符组成,分为三组(Owner / Group / Others),每组包含 r, w, x。 我们可以将 r, w, x 转换为数字进行累加:

权限 数字 含义
r (read) 4 读取
w (write) 2 写入
x (execute) 1 执行
- (无权限) 0

计算逻辑

  • rwx = 4 + 2 + 1 = 7
  • rw- = 4 + 2 + 0 = 6
  • r-x = 4 + 0 + 1 = 5
  • r-- = 4 + 0 + 0 = 4

语法

bash 复制代码
chmod [-R] xyz 文件或目录

(xyz 为三个数字,分别代表 拥有者/群组/其他人)

案例演示

csharp 复制代码
# 案例 1: 将所有权限都打开 (rwxrwxrwx)
# 7 (4+2+1) | 7 (4+2+1) | 7 (4+2+1)
[root@study ~]# chmod 777 .bashrc
​
# 案例 2: 设置权限为 rwxr-xr-x (常见于脚本)
# 7 (4+2+1) | 5 (4+0+1) | 5 (4+0+1)
[root@study ~]# chmod 755 test.sh
​
# 案例 3: 恢复 .bashrc 的默认权限 (rw-r--r--)
# 6 (4+2+0) | 4 (4+0+0) | 4 (4+0+0)
[root@study ~]# chmod 644 .bashrc

方法二:符号类型改变权限

语法结构

css 复制代码
chmod [ugoa] [+-=] [rwx] 文件或目录

参数说明

类别 参数 说明
身份 u 拥有者 (user)
g 所属群组 (group)
o 其他人 (others)
a 所有人 (all,默认值)
动作 + 加入权限
- 除去权限
= 设置权限 (直接指定,覆盖原有)
权限 rwx 读、写、执行

案例演示

  1. 设置特定权限 (=) : 将 .bashrc 设置为 rwxr-xr-x (拥有者 rwx,群组 rx,其他人 rx)。

    csharp 复制代码
    [root@study ~]# chmod u=rwx,go=rx .bashrc
    # 或者写全
    [root@study ~]# chmod u=rwx,g=rx,o=rx .bashrc
  2. 增加权限 (+) : 让所有人 (a) 增加 (w) 权限。

    csharp 复制代码
    [root@study ~]# chmod a+w .bashrc
  3. 移除权限 (-) : 移除所有人 (a) 的 执行 (x) 权限。

    csharp 复制代码
    [root@study ~]# chmod a-x .bashrc

技巧

  • 使用 +- 时,未指定的权限保持不变。
  • 使用 = 时,未指定的权限会被移除(变为 -)。
  • 如果你不知道文件原本的权限,只想给脚本增加执行权限,最安全的方法是使用 chmod a+x filename

5.2.3 目录与文件之权限意义

对于普通文件(文本、数据、二进制程序),权限直接作用于文件内容

权限 符号 含义 详细说明
r 读取内容 可以查看文件的实际数据(如 cat, less)。
w 修改内容 可以编辑、新增或修改文件内容。注意:这不包含删除文件本身的能力。
执行 x 执行文件 文件可以被运行(如脚本、二进制程序)。

注意 :对于文件而言,w 权限允许修改内容,但删除文件 的操作实际上是由目录的权限控制的。

目录在 Linux 中本质上是存储文件名i-node 对应关系的列表。因此,目录的权限作用于目录结构(文件名列表)

权限 符号 含义 详细说明
r 读取列表 可以读取目录结构清单(即文件名列表)。 例如:可以使用 ls 查看该目录下有哪些文件。
w 修改列表 可以修改目录结构清单。 具体包括: 1. 创建 新文件/目录。 2. 删除 已存在的文件/目录(不论该文件本身的权限为何! )。 3. 重命名(移动)文件。 4. 搬迁目录内文件的位置。
执行 x 进入目录 可以进入该目录(cd)。 这是将目录作为工作目录 (work directory) 的前提。
权限 文件 (File) 目录 (Directory)
r 读取文件内容 读取文件名 列表 (ls)
w 修改文件内容 修改文件名列表 (增/删/改/移)
x 执行文件 进入 目录 (cd)

案例分析

案例一:只有 r 没有 x 的目录

  • 场景 :目录 .ssh 权限为 drwxr--r-- (744),拥有者为 root

  • 用户 :普通用户 vbird (属于 others)。

  • 现象

    • vbird 拥有 r 权限:可以使用 ls 看到目录下有文件。
    • vbird 缺乏 x 权限:无法 cd 进入该目录,也无法读取目录内文件的内容(因为无法访问路径)。
  • 结论 :对于目录,x 是访问内部资源的"钥匙"。

案例二:删除文件的权限判定 (重点)

  • 场景

    • 目录 /home/dmtsai 权限为 rwx (拥有者 dmtsai)。
    • 文件 /home/dmtsai/_the_root.data 权限为 -rwx------ (拥有者 root)。
  • 问题 :用户 dmtsai 能删除 _the_root.data 吗?

  • 答案

  • 原理 :删除文件实际上是修改目录的列表 (将文件名从目录中移除)。因为 dmtsai目录 拥有 w (写) 权限,所以他可以删除该目录下的任何文件,无论该文件本身的权限设置如何

若要完成特定操作,用户需要对路径上的目录目标文件具备相应的组合权限:

操作动作 /dir1 (父目录) /dir1/file1 (文件) /dir2 (目标目录) 重点解析
读取 file1 内容 x r - 需进入父目录 (x) 并读取文件内容 (r)。
修改 file1 内容 x rw - 需进入父目录 (x) 并写入文件 (w)。
执行 file1 x rx - 需进入父目录 (x) 并执行文件 (x)。
删除 file1 wx - - 关键 :只需父目录的写权限 (w) 和进入权限 (x)。与文件本身权限无关。
复制 file1 到 /dir2 x r wx 需读取源文件 (r),进入源目录 (x),并在目标目录写入新文件 (wx)。
  • 通常开放的目录至少需要具备 rx 权限,否则用户无法进入也无法查看内容。
  • 若目录仅有 r 而无 x,用户只能看到文件名列表(ls),但无法访问任何文件(cd 失败,cat 失败)。
  • 若目录仅有 x 而无 r,用户可以进入目录并访问已知文件名的文件,但无法列出目录内容(ls 失败)。这在某些安全场景下很有用。

5.2.4 Linux 文件种类与扩展名

文件类型

根据 ls -l 输出的第一个字符,Linux 文件主要分为以下几类:

类型标识 名称 说明
- 正规文件 (Regular File) 最常见的文件类型,用于数据存储。根据内容可细分为: 1. 纯文本文件 (ASCII) :人类可直接阅读的数据(如数字、字母)。例如配置文件、源代码。使用 cat 可查看内容。 2. 二进制文件 (Binary) :系统可执行的程序。例如 cat, ls 等指令本身。直接 cat 会显示乱码。 3. 数据格式文件 (Data) :程序运行时读取的特定格式数据。例如 /var/log/wtmp(登录记录)。
d 目录 (Directory) 即文件夹,用于管理文件列表。
l 链接文件 (Link) 类似 Windows 的快捷方式。指向另一个文件。
b 块设备文件 (Block) 存储数据的周边设备,支持随机存取 (Random Access)。例如硬盘 (/dev/sda)。
c 字符设备文件 (Character) 串行端口设备,支持一次性读取(Sequential)。例如键盘、鼠标、串口。
s 套接字文件 (Sockets) 用于网络数据接口。常位于 /run/tmp,用于进程间通信或网络服务监听。
p 管道文件 (FIFO/Pipe) First-In-First-Out。用于解决多进程同时存取文件的问题,常用于进程间数据传输。
执行机制

与 Windows 不同,Linux 系统不依赖扩展名来判断文件是否可执行。

  • 执行机制 :文件能否执行取决于权限位 中是否包含 x (execute)。

    • 即使文件名为 script.sh,若无 x 权限,也无法直接执行。
    • 即使文件名为 text.txt,若赋予 x 权限且内容符合脚本格式,也可以被执行。
  • 扩展名的作用 :主要用于人类识别文件用途或关联的软件。

常见扩展名约定:

扩展名 含义
.sh Shell 脚本文件 (Shell script)。
.Z, .tar, .tar.gz, .zip, .tgz 压缩或打包文件(对应 compress, tar, gzip 等工具)。
.html, .php 网页文件(HTML 源码或 PHP 脚本)。
.conf 配置文件 (configuration)。
命名规范

在 Linux 命令行下,文件名命名需遵循以下限制:

  1. 长度限制

    • 最大长度为 255 Bytes
    • 若使用 ASCII 编码,约为 255 个字符。
    • 若使用 UTF-8 中文(通常占 3 Bytes),约为 80 个中文字;若占 2 Bytes(旧编码),约为 128 个中文字。
  2. 特殊字符限制

    • 应避免使用 Shell 中的特殊符号,以免干扰指令解析: ? > < ; & ! [ ] | \ " ' ( ) { }
    • 空格 :虽然可以使用,但处理麻烦(需转义或加引号),建议用下划线 _ 或连字符 - 代替。
  3. 隐藏文件

    • 文件名以 . (点) 开头(如 .bashrc)的文件为隐藏文件
    • 使用 ls 默认不显示,需加 -a 参数。
  4. 避免开头符号

    • 避免以 - (减号) 或 + (加号) 开头,因为这在命令行中常被解析为指令选项(options)。

5.3 Linux 目录配置

5.3.1 Linux 目录配置的依据--FHS

基本目录结构

由于 Linux 发行版众多,为了规范配置文件、可执行文件及数据目录的放置位置,避免管理混乱,Linux 社区制定了 FHS (Filesystem Hierarchy Standard,文件系统层次结构标准) 。FHS 的核心目的是定义根目录 (/) 及其子目录下应放置的数据类型,使系统架构在保持"目录架构不变"的前提下,允许开发者发挥独特风格。

FHS 根据数据是否可分享 以及数据是否变动,将目录分为四种交互作用的形态:

可分享的 (shareable) 不可分享的 (unshareable)
不变的 (static) /usr (软件放置处) /opt (第三方协力软件) /boot (开机与核心档) /etc (配置文件)
可变动的 (variable) /var/mail (使用者邮件信箱) /var/spool/news (新闻群组) /var/run (程序相关) /var/lock (程序相关)
  • 可分享的 (shareable) :可以分享给其他系统挂载使用的目录(如通过网络挂载 NFS),包含可执行文件与使用者的邮件等数据。
  • 不可分享的 (unshareable) :与自身机器有关的设备文件或程序相关的 socket 文件,不适合分享给其他主机。
  • 不变的 (static) :数据不会经常变动,随 Linux distribution 而定(如函数库、文件说明文档、系统管理员所管理的主机服务配置文件)。
  • 可变动的 (variable) :经常改变的数据(如登录文件、一般用户可自行收发的新闻群组等)。

FHS 针对根目录架构定义了三个主要层级:

  1. / (root, 根目录) :与开机系统有关。
  2. /usr (unix software resource) :与软件安装/执行有关。
  3. /var (variable) :与系统运行过程有关。

根目录是整个系统最重要的目录,所有目录皆由其衍生。它包含了开机、还原系统修复等动作所需的关键文件。

FHS 建议 :根目录 (/) 所在分区应越小越好。应用程序安装的软件最好不要与根目录放在同一个分区内。

根目录下必须存在的目录

目录 应放置文件内容 / 说明
/bin 单人维护模式下 还能够被操作的指令。主要为一般账号使用的常用指令(如 cat, chmod, bash 等)。
/boot 放置开机 会使用到的文件,包括 Linux 核心文件 (vmlinuz) 以及开机菜单与开机所需配置文件(如 grub)。
/dev 设备文件 。Linux 下任何设备与周边设备都以文件型态存在(如 /dev/sda, /dev/null)。
/etc 系统配置文件 。如账号密码档 (/etc/passwd)、开机设定档 (/etc/fstab)、网络配置等。
/lib 函数库 。系统在开机时会用到的函数库,以及 /bin/sbin 下面的指令会调用的函数库。 (注:CentOS 7 中已链接至 /usr/lib)
/media 可移除设备的挂载点。如软盘、光盘、DVD 等设备暂时挂载于此。
/mnt 临时挂载其他额外设备的目录。通常给系统管理员临时挂载使用。
/opt 第三方协力软件放置的目录。
/run 系统开机后所产生的各项临时信息 存放目录。使用 /run 可内存仿真,性能较好。 (注:早期规范在 /var/run)
/sbin 系统设置指令 。主要由 root 使用的指令(如 fdisk, ifconfig)。 (注:CentOS 7 中已链接至 /usr/sbin)
/srv Service (服务) 相关数据。网络服务启动后需要取用的数据目录(如 WWW, FTP)。
/tmp 临时文件。任何人都能够存取,需定期清理。重要数据不可放在此目录。

根目录下建议存在或其他重要目录

目录 应放置文件内容 / 说明
/home 用户主目录 (home directory) 。默认使用者主文件类都会规划到这里。
/root 系统管理员 (root) 的主文件类。
/proc 虚拟文件系统 。数据都在内存中(如系统核心、行程信息 process)。不占硬盘空间。
/sys 虚拟文件系统。记录系统核心与系统硬件信息较相关的信息。同样不占硬盘容量。
/lost+found 使用 ext2/ext3/ext4 文件系统才会产生的目录。当文件系统发生错误时,将遗失的片段放置到这里。

/usr 目录详解
  • 定义usrUnix Software Resource 的缩写,而非 User。它是"Unix 操作系统软件资源"所放置的目录,不是使用者的数据。
  • 属性 :属于 可分享的 (shareable)不变的 (static)
  • 类比 :类似 Windows 系统的 C:\WindowsC:\Program Files 的综合体。
  • 容量:系统刚安装完毕时,这个目录会占用最多的硬盘容量。

/usr 下必须存在的目录

目录 应放置文件内容
/usr/bin/ 所有一般用户 能够使用的指令都放在这里。 (注:CentOS 7 已将全部使用者指令放置于此,/bin 链接至此)
/usr/lib/ 系统上,与 /lib 功能相同。/lib 就是链接到此目录中。
/usr/local/ 系统管理员在本机自行安装 自己下载的软件(非 distribution 默认提供者)。 建议安装到此目录,方便管理且不影响原版软件。该目录下也有 bin, etc, include, lib 等次目录。
/usr/sbin/ 非系统正常运行时所需要的系统指令。最常见的是某些网络服务器软件的指令 (daemon)。 (注:CentOS 7 中 /sbin 链接至此)
/usr/share/ 主要放置只读架构的数据文件 ,当然也包括共享文件。常见的次目录: • /usr/share/man:线上说明文档 • /usr/share/doc:软件杂项的文件说明 • /usr/share/zoneinfo:与时区有关的时区文件

/usr 下建议存在的目录

目录 应放置文件内容
/usr/games/ 与游戏比较相关的数据放置处。
/usr/include/ C/C++ 等程序语言的文件开始 (header ) 与包含档 (include) 放置处。
/usr/libexec/ 某些不被一般使用者惯用的可执行文件或脚本 (script) 等。例如大部分的 X 窗口下面的操作指令。
/usr/lib<qual>/ /lib<qual>/ 功能相同,因此目前 /lib<qual> 就是链接到此目录中(如 /usr/lib64)。
/usr/src/ 一般源代码建议放置到这里,src 有 source 的意思。核心源代码建议放置到 /usr/src/linux/ 目录下。

/var 目录详解
  • 定义 :如果 /usr 是安装时会占用较大硬盘容量的目录,那么 /var 就是在系统运行后才会渐渐占用硬盘容量的目录。
  • 属性 :主要针对常变动性的文件。
  • 内容 :包括高速缓存 (cache)、登录文件 (log file)、程序文件 (lock file, run file)、数据库文件等。

/var 下必须存在的目录

目录 应放置文件内容
/var/cache/ 应用程序本身运行过程中会产生的一些暂存盘
/var/lib/ 程序本身执行的过程中,需要使用到的数据文件 放置的目录。 例如:MySQL 的数据库放置到 /var/lib/mysql/,rpm 的数据库放置到 /var/lib/rpm/
/var/lock/ 锁文件 。当某些设备或文件资源一次只能被一个应用程序使用时,如果同时有两个程序使用该设备,就可能产生错误。系统会将设备上锁 (lock),以确保该设备只会给单一软件所使用。
/var/log/ 登录文件 。这是登录文件放置的目录!里面比较重要的文件如 /var/log/messages (核心登录信息), /var/log/wtmp (记录登录者的信息) 等。
/var/mail/ 放置个人电子邮件信箱的目录。通常这个目录也被链接到 /var/spool/mail/ 目录中。
/var/run/ 某些程序或者是服务启动后,会将他们的 PID 放置在这个目录下。 (注:与 /run 相同,这个目录链接到 /run 去了)
/var/spool/ 队列数据 。所谓的"队列"就是排队等待其他程序使用的数据。例如系统收到的新信会放置到 /var/spool/mail/ 中;工作调度数据 (crontab) 会被放置到 /var/spool/cron/ 目录中。
相关推荐
安姌1 小时前
京东社招——Java后端开发面试复盘
面试·职场和发展
Ivanqhz1 小时前
活跃范围重写(Live Range Rewriting)
开发语言·c++·后端·算法·rust
Memory_荒年1 小时前
分布式锁:当你的“锁”从部门会议室升级到公司全球预订系统
java·后端
RDCJM2 小时前
SpringBoot + vue 管理系统
vue.js·spring boot·后端
Java水解2 小时前
理解 Stage 模型 —— HarmonyOS 应用架构新标准
后端
皙然2 小时前
Mybatis面试题目
面试·tomcat·mybatis
Cosolar2 小时前
阿里CoPaw进阶使用手册:从新手到高手的完整指南
人工智能·后端·算法
steel80883 小时前
SSM与Springboot是什么关系? -----区别与联系
java·spring boot·后端
ZHOUPUYU3 小时前
PHP 8.6的底层革命。那些看不见的优化,才是真正的惊喜
开发语言·后端·php