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

Linux运维——用户管理

Linux用户管理

  • 一、Linux用户管理要点
  • 二、常用命令
    • 2.1、groupadd
    • 2.2、groupdel
    • 2.3、groupmod
    • 2.4、groups
    • 2.5、useradd
    • 2.6、userdel
    • 2.7、passwd
    • 2.9、su
    • 2.10、sudo
      • 2.10.1、给普通用户授权 sudo
      • 2.10.2、 免密码授权 sudo

一、Linux用户管理要点

  • 创建用户组 - 使用 groupadd
  • 删除用户组 - 使用 groupdel
  • 修改用户组信息 - 使用 groupmod
  • 创建用户 - 使用 useradd
  • 删除用户 - 使用 userdel
  • 修改用户信息 - 使用 usermod
  • 设置用户认证信息 - 使用 passwd
  • 切换用户 - 使用 su
  • 当前用户想执行没有权限执行的命令时,使用其他用户身份去执行 - 使用 sudo

二、常用命令

2.1、groupadd

groupadd 命令用于创建一个新的用户组,新用户组的信息将被添加到系统文件中。

groupadd [选项] 组名

​- -g, --gid GID​: 指定新用户组的组 ID(GID)。
​- -K, --key KEY=VALUE​: 设置密钥值对,用于指定组的属性。
​- -o, --non-unique​: 允许创建非唯一的组 ID。
​- -p, --password PASSWORD​: 设置用户组的密码,通常不建议使用密码。
​- -r, --system​: 创建一个系统用户组。
​- -R, --root CHROOT_DIR​: 在指定的 chroot 目录中执行操作。

使用案例:
创建一个名为 ​testgroup​​的新用户组:

groupadd testgroup

创建一个名为 ​sysgroup​​的系统用户组:

groupadd -r sysgroup

创建一个名为 ​staff​​的用户组并指定组 ID 为 500:

groupadd -g 500 staff

注意事项:

  • 使用 groupadd ​命令需要具有适当的权限,通常需要 root 权限或 sudo 权限。
  • 可以通过指定选项来设置新用户组的组 ID、属性等。
  • 创建系统用户组时,通常会使用 -r ​选项。
  • 确保新创建的用户组名称不与现有用户组重复,避免混淆。
  • 建议在创建用户组时,为其指定一个明确的目的或描述性的名称,以便于管理和理解。

2.2、groupdel

‌groupdel命令用于在Linux系统中删除一个用户组‌。该命令不会操作与用户组关联的文件和目录,但删除用户组后,与该组相关的文件和目录中的组信息可能需要手动更改,以避免权限问题‌。

本命令要修改的系统文件包括 /ect/group 和 /ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

groupdel [选项] 组名
  • -h--help:显示groupdel命令的帮助信息。
  • -f--force:强制删除用户组,即使它是某个用户的主组‌。

使用示例:

删除名为testgroup的用户组‌:

groupdel testgroup

删除cc用户组‌:

groupdel cc

‌强制删除apps用户组‌:

groupdel -f apps

强制删除名为staff的用户组‌:

groupdel -f staff

显示groupdel命令的帮助信息‌:

groupdel -h

注意事项和常见错误处理:

  • ‌确保该组不再被任何用户所使用‌:如果该组仍被某些用户使用,删除操作将失败。除非使用-f选项强制删除,否则必须先删除这些用户‌
  • ‌修改用户的主组‌:如果某个用户的主组是目标组,命令会报错。此时需要先将用户的主组改为另一个组,然后再进行删除操作‌
  • ‌组不存在‌:如果要删除的组不存在,groupdel会提示错误‌

2.3、groupmod

‌groupmod命令‌是Linux系统中用于修改现有用户组的工具。其主要用途包括修改组的GID(组标识符)和组名。

常用选项:

  • -g--gid GID:用于更改组的GID。
  • -n--new-name NEW_GROUP:用于更改组的名称。
  • -o--non-unique:允许使用重复的GID,即允许多个组使用同一个GID。
  • -h--help:显示帮助信息。
  • -p--password PASSWORD:设置组的密码。
  • -R--root CHROOT_DIR:指定在CHROOT_DIR下更改生效。
  • -V--version:显示版本信息。

使用示例:
‌修改组名‌:

groupmod -n newgroup oldgroup
# 这条命令将用户组oldgroup的名称修改为newgroup。

‌修改组的GID‌:

groupmod -g 101 groupname
# 这条命令将用户组groupname的GID修改为101。

‌允许使用其他用户组的GID‌:

groupmod -o groupname
# 这条命令将用户组groupname的属性设置为允许使用其他用户组的GID。

‌设置组密码‌:

groupmod -p password groupname
# 这条命令将用户组groupname的密码设置为password。

注意事项:

  • 在执行groupmod命令时,确保您具有足够的权限,通常需要以root用户身份执行。
  • 修改组名称或GID可能会影响系统上相关用户的权限和文件,因此在进行修改前请做好备

2.4、groups

‌groups命令用于显示用户所属的用户组信息。

  • 默认情况下‌,groups命令会显示当前用户所属的所有用户组。例如,输入groups即可查看当前用户所属的所有附加组。
  • ‌指定用户‌,可以在命令后跟上用户名来显示指定用户所属的用户组。例如,输入groups username可以查看指定用户username所属的所有用户组。

常用选项:

  • -a:在输出中包括用户的主组(primary group)。默认情况下,主组不会被单独列出,而是作为用户名的一部分显示在输出中。
  • -g:只显示用户的主组ID(GID),而不显示组名。
  • -n:以数字形式显示组ID(GID)和用户名(UID),而不是名称。
  • -r:只显示实际存在的组,即那些在系统上实际存在的组。默认情况下,groups命令还会显示一些特殊的、不存在的组(如“wheel”组在某些系统中可能不存在)。

注意事项:

  • ‌权限问题‌:在执行groups命令时,需要确保当前用户具有足够的权限来查看其他用户的组信息。如果当前用户没有足够的权限,可能会收到权限拒绝的错误信息。
  • 输出定制‌:根据需要,可以使用不同的参数来定制groups命令的输出。例如,如果需要以数字形式显示组ID,可以使用-n参数;如果需要只显示主组ID,可以使用-g参数。

2.5、useradd

useradd 命令用于 Linux 中创建的新的系统用户。useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码.而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。

‌使用useradd命令时,系统会自动更新相关文件,包括/etc/passwd和/etc/shadow。‌ /etc/passwd文件包含用户的基本信息,如用户名、用户ID(UID)、组ID(GID)等;而/etc/shadow文件则包含加密的用户密码和账户有效期等信息。通过useradd命令创建的用户,管理员可以通过passwd命令为其设置密码。需要注意的是,useradd命令本身不会为用户创建密码信息,而是使用星号(*)初始化密码字段,随后需要通过passwd或pwdadm命令设置密码。‌

useradd [选项] 用户名

常用选项:

  • -m:创建用户主目录(通常位于 /home/用户名)。
  • -d:指定用户主目录路径。
  • -s:指定用户的默认 shell。
  • -g:指定用户的主组(组名或 GID)。
  • -G:指定用户的附加组(组名或 GID)。
  • -u:指定用户的 UID。
  • -c:添加用户备注信息(如全名)。
  • -e:设置账户过期日期(格式:YYYY-MM-DD)。
  • -p:设置用户密码(通常不推荐直接使用,建议用 passwd 命令)。

使用示例:
创建用户并生成主目录

sudo useradd -m username
···
指定主目录路径
```sh
sudo useradd -m -d /custom/home/username username

指定默认 shell

sudo useradd -m -s /bin/bash username

指定主组和附加组

sudo useradd -m -g primarygroup -G supplementarygroup username

指定 UID

sudo useradd -m -u 1001 username

添加备注信息

sudo useradd -m -c "User Full Name" username

设置账户过期日期

sudo useradd -m -e 2023-12-31 username

创建用户后,使用 passwd 命令设置密码:

sudo passwd username

注意事项:

  • 需要 root 权限,通常使用 sudo。
  • 如果不使用 -m 选项,不会创建主目录。
  • 建议使用 passwd 命令设置密码,而不是 -p 选项。

2.6、userdel

以下是基本用法和常见选项:

userdel [选项] 用户名

常用选项:

  • -r:删除用户的同时,删除用户的主目录和邮件文件(通常位于 /home/用户名 和 /var/mail/用户名)。
  • -f:强制删除用户,即使用户当前已登录。
  • -Z:删除用户的 SELinux 用户映射(适用于启用了 SELinux 的系统)。

使用示例:
删除用户(保留主目录)

sudo userdel username
# 这种方式只会删除用户账户,但不会删除用户的主目录和邮件文件。

删除用户并删除主目录

sudo userdel -r username
# 这种方式会删除用户账户及其主目录和邮件文件。

强制删除用户

sudo userdel -f username
# 即使用户当前已登录,也会强制删除用户。

删除用户并清理 SELinux 映射

sudo userdel -rZ username
# 适用于启用了 SELinux 的系统。

注意事项:

  • 权限要求:需要 root 权限,通常使用 sudo。
  • 用户进程:如果用户有正在运行的进程,删除用户时可能会失败。可以使用 -f 选项强制删除,或者先终止相关进程。
  • 主目录:如果不使用 -r 选项,用户的主目录和邮件文件将保留在系统中。
  • 依赖文件:删除用户后,系统中可能仍存在属于该用户的文件(如 /home/username 中的文件),需要手动清理。

其他相关命令:

检查用户是否存在:

id username
# 如果用户存在,会显示用户信息;如果不存在,会提示“无此用户”。

终止用户进程:如果用户有正在运行的进程,可以使用以下命令终止:

sudo pkill -u username
sudo killall -u username
# 通过 userdel 命令,可以安全地删除用户账户及其相关文件。

2.7、passwd

passwd 命令用于在 Linux 系统中管理用户密码。

passwd [选项] [用户名]
# 如果不指定用户名,默认修改当前用户的密码。
# 如果指定用户名(需要管理员权限),可以修改其他用户的密码。

常用选项:

  • -l:锁定用户账户,禁止登录。
  • -u:解锁用户账户。
  • -d:删除用户密码,允许用户无需密码登录(不安全,不推荐)。
  • -e:强制用户下次登录时修改密码。
  • -S:显示用户密码状态(是否锁定、密码加密算法等)。
  • -n:设置密码的最短使用期限(天数)。
  • -x:设置密码的最长使用期限(天数)。
  • -w:设置密码过期前的警告天数。
  • -i:设置密码过期后的宽限天数。

使用示例:
修改当前用户的密码

passwd
# 系统会提示输入当前密码,然后输入新密码并确认。

修改其他用户的密码(需要管理员权限)

sudo passwd username
# 管理员可以直接为其他用户设置新密码。

锁定用户账户

sudo passwd -l username
# 锁定后,用户将无法登录。

解锁用户账户

sudo passwd -u username

删除用户密码

sudo passwd -d username
# 删除密码后,用户无需密码即可登录(不安全,不推荐)。

强制用户下次登录时修改密码

sudo passwd -e username

显示用户密码状态

sudo passwd -S username# 输出示例:
username P 05/10/2023 0 99999 7 -1各字段含义:
- 用户名
- 密码状态(P 表示有密码,L 表示锁定,NP 表示无密码)
- 最后修改密码的日期
- 最小密码年龄(天数)
- 最大密码年龄(天数)
- 警告天数
- 密码过期后的宽限天数

设置密码策略:

# 设置密码最短使用期限为 7 天:
sudo passwd -n 7 username# 设置密码最长使用期限为 90 天:
sudo passwd -x 90 username# 设置密码过期前 7 天提醒用户:
sudo passwd -w 7 username# 设置密码过期后 5 天内仍可登录:
sudo passwd -i 5 username

注意事项:

  • 密码强度:系统通常会检查密码强度,过于简单的密码可能被拒绝。
  • 管理员权限:修改其他用户的密码需要 root 权限,通常使用 sudo。
  • 锁定账户:锁定账户后,用户将无法登录,但用户的主目录和文件仍然存在。
  • 密码策略:合理设置密码策略可以提高系统安全性。

2.9、su

su 命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。

su [选项] [用户名]
# 如果不指定用户名,默认切换到 root 用户。
# 切换用户后,会进入目标用户的 shell 环境。

常用选项:

  • --l--login:以登录 shell 的方式切换用户,同时加载目标用户的环境变量和配置文件(如 ~/.bashrc 或 ~/.profile)。
  • -c:执行一条命令后立即退出,不进入交互式 shell。
  • -s:指定要使用的 shell(如 /bin/bash 或 /bin/sh)。
  • -m-p:保留当前环境变量,不加载目标用户的环境配置。

常用示例:
切换到 root 用户

su
# 系统会提示输入 root 用户的密码。

以登录 shell 的方式切换到 root 用户

su -
#这种方式会加载 root 用户的环境变量和配置文件。

切换到其他用户

su username
# 系统会提示输入目标用户的密码。

以登录 shell 的方式切换到其他用户

su - username

切换到用户并执行一条命令

su -c "command" username# 例如,以 root 用户身份创建一个文件:su -c "touch /root/testfile" root

指定使用的 shell

su -s /bin/bash username

保留当前环境变量

su -m username

注意事项:

  • 密码要求:
    • 切换到 root 用户或其他用户时,需要输入目标用户的密码。
    • 如果当前用户是 root,切换到其他用户时不需要密码。
  • 环境变量:
    • 使用 su - 或 su -l 会加载目标用户的环境变量。
    • 使用 su 或 su -m 会保留当前用户的环境变量。
  • 退出切换的用户:
    • 输入 exit 或按 Ctrl+D 可以退出当前用户,返回到之前的用户。
  • 权限限制:
    • 普通用户只能切换到其他用户(需要密码),而 root 用户可以切换到任何用户(无需密码)。

与 sudo 的区别:

  • su:直接切换到目标用户的身份,需要目标用户的密码。
  • sudo:以当前用户的权限执行命令,需要当前用户的密码(或配置为无需密码)。

2.10、sudo

sudo 命令允许授权用户以超级用户(root)或其他用户的身份执行命令。

sudo [选项] 命令
# 默认情况下,sudo 以 root 用户身份执行命令。
# 执行命令时,系统会提示输入当前用户的密码(而非 root 密码)。

常用选项:

  • -u:以指定用户身份执行命令。
  • -l:列出当前用户允许执行的 sudo 命令。
  • -s:启动目标用户的 shell(默认为 root)。
  • -i:以登录 shell 的方式启动目标用户的 shell(加载环境变量)。
  • -v:刷新 sudo 的认证时间戳(延长有效期)。
  • -k:清除 sudo 的认证时间戳(立即失效)。
  • -b:在后台运行命令。
  • -E:保留当前用户的环境变量。

使用示例:
以 root 身份执行命令

sudo command# 例如,安装软件包:
sudo apt update

以其他用户身份执行命令

sudo -u username command# 例如,以用户 testuser 的身份创建文件:
sudo -u testuser touch /home/testuser/testfile

启动 root 用户的 shell

sudo -s

以登录 shell 的方式启动 root 用户的 shell

sudo -i

在后台运行命令

sudo -b command

保留当前用户的环境变量

sudo -E command

刷新 sudo 认证时间戳

sudo -v

清除 sudo 认证时间戳

sudo -k

配置文件:
sudo 的权限配置存储在 /etc/sudoers 文件中。可以使用 visudo 命令安全地编辑该文件。

示例配置:

允许用户执行所有命令

username ALL=(ALL:ALL) ALL

允许用户执行特定命令

username ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl

允许用户无需密码执行命令

username ALL=(ALL) NOPASSWD: /usr/bin/apt

注意事项:

  • 密码提示:
    • 执行 sudo 时,系统会提示输入当前用户的密码。
    • 默认情况下,密码在 5 分钟内有效(无需重复输入)。
  • 权限限制:
    • 只有被授权的用户才能使用 sudo。
    • 权限配置在 /etc/sudoers 文件中定义。
  • 安全性:
    • 避免直接使用 sudo 执行未知或不可信的脚本。
    • 谨慎配置 NOPASSWD 选项,以免降低安全性。
  • 日志记录:
    • sudo 的所有操作都会被记录到 /var/log/auth.log 或 /var/log/secure 中,便于审计。

与 su 的区别:

  • sudo:以当前用户的权限执行命令,需要当前用户的密码。
  • su:直接切换到目标用户的身份,需要目标用户的密码。

2.10.1、给普通用户授权 sudo

假设要给普通用户 mary 配置 sudo 权限:

  1. /etc/sudoers 文件存放了 sudo 的相关用户,但是默认是没有写权限的,所以需要设为可写:chmod u+w /etc/sudoers
  2. 在该文件中添加 mary ALL=(ALL) ALL ,保存并退出,让 mary 具有 sudo 的所有权限
  3. 再将 /etc/sudoers 的权限恢复到默认状态:chmod u-w /etc/sudoers

2.10.2、 免密码授权 sudo

与给普通用户授权 sudo 类似,区别仅在于第 2 步:mary ALL=(ALL) NOPASSWD: ALL

相关文章:

Linux运维——用户管理

Linux用户管理 一、Linux用户管理要点二、常用命令2.1、groupadd2.2、groupdel2.3、groupmod2.4、groups2.5、useradd2.6、userdel2.7、passwd2.9、su2.10、sudo2.10.1、给普通用户授权 sudo2.10.2、 免密码授权 sudo 一、Linux用户管理要点 创建用户组 - 使用 groupadd删除用…...

Redis持久化的两种方式:RDB和AOF

redis中的数据存储在缓存中,如果没有持久化的策略,Redis一旦宕机,那么将会导致数据丢失;因此redis提供了以下两种持久化方式:RDB和AOF 一般来说,大部分公司对这两种方式都是同时开启的 一、RDB RDB策略全…...

百度高德地图坐标转换

百度地图和高德地图的侧重点不太一样。同样一个地名,在百度地图网站上搜索到的地点可能是商业网点,在高德地图网站上搜索到的地点可能是自然行政地点。 高德地图api 在高德地图中,搜索地名,如“乱石头川”,该地名会出…...

LIMO:上海交大的工作 “少即是多” LLM 推理

25年2月来自上海交大、SII 和 GAIR 的论文“LIMO: Less is More for Reasoning”。 一个挑战是在大语言模型(LLM)中的复杂推理。虽然传统观点认为复杂的推理任务需要大量的训练数据(通常超过 100,000 个示例),但本文展…...

Windows逆向工程入门之汇编环境搭建

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 Visual Studio逆向工程配置 基础环境搭建 Visual Studio 官方下载地址安装配置选项(后期可随时通过VS调整) 使用C的桌面开发 拓展可选选项 MASM汇编框架 配置MASM汇编项目 创建新项目 选择空…...

Git安全回退历史版本

Git安全回退历史版本 方法特点git revert保留所有中间提交历史,生成显式的反向提交,适合精确撤销特定提交。直接提交快速生成一个回退提交,无需处理多个撤销操作,适合简单回退到某个旧版本。 git revert 仅回退一个版本 git r…...

消费电子产品中的噪声对TPS54202的影响

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、概述 在白色家电领域,降压转换器的应用非常广泛,为了实现不同的功能就需要不同的电源轨。TPS542…...

ASP.NET Core 外部向SignalR的Hub发消息

实现 Hub类中的方法只应该用于消息的发布,而不应该用来写业务逻辑,SignalR中客户端给服务器端传递消息的超时时间为30s,如果对Hub类中的方法的调用执行时间超过30s,程序就会报错。可以在MVC控制器、托管服务等外部向客户端推送消…...

Ubuntu 多版本 gcc 配置常用命令备忘

用的频率不高,总忘记具体参数 1,安装多版本 gcc 以 gcc-11 和12 为例: sudo apt-get install gcc-11 gcc-12 sudo apt-get install gcc-11 gcc-12 2,配置多版本 gcc gcc 与 g 一起配置进数据库中: sudo update-a…...

树形表查询方法

树形数据表在开发中会经常遇到,parentid字段为父结点ID,它是树型结构的标志字段。 查询方法: 1.自连接查询 如果树的层级固定可以使用表的自链接去查询,比如:我们只查询两级课程分类,可以用下边的SQL selectone.id …...

OpenStack-Train版-Allinone自动化部署脚本

一、环境准备 操作系统:CentOS 7 或以上版本 建议配置: CPU:8 核或以上 内存:16 GB 或以上 磁盘:500 GB 或以上 网络配置: 确保虚拟机已配置静态 IP 地址 确保虚拟机可以正常访问外部网络 二、自动…...

[笔记] 汇编杂记(持续更新)

文章目录 前言举例解释函数的序言函数的调用栈数据的传递 总结 前言 举例解释 // Type your code here, or load an example. int square(int num) {return num * num; }int sub(int num1, int num2) {return num1 - num2; }int add(int num1, int num2) {return num1 num2;…...

Hono.js入门指南_从零开始构建Web应用

1. 引言 项目背景与动机 随着现代Web开发的快速发展,构建高效、轻量且易于维护的Web应用变得越来越重要。Hono.js作为一个轻量级的Node.js框架,以其简洁的API和高效的性能吸引了众多开发者。本文将带你从零开始,逐步构建一个功能齐全的Web应用,帮助你快速上手Hono.js。 …...

后盾人JS -- 模块化开发

开发模块管理引擎 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </he…...

python-leetcode 23.回文链表

题目&#xff1a; 给定单链表的头节点head,判断该链表是否为回文链表&#xff0c;如果是&#xff0c;返回True,否则&#xff0c;返回False 输入&#xff1a;head[1,2,2,1] 输出&#xff1a;true 方法一&#xff1a;将值复制到数组中后用双指针法 有两种常用的列表实现&#…...

echarts 3d中国地图飞行线

一、3D中国地图 1. 一定要使用 echarts 5.0及以上的版本; 2. echarts 5.0没有内置中国地图了。点击下载 china.json&#xff1b; 3. 一共使用了四层地图。 &#xff08;1&#xff09;第一层是中国地图各省细边框和展示南海诸岛&#xff1b; &#xff08;2&#xff09;第二层是…...

Vivado IP之浮点数Floating-point

在Vivado的IP Catalog中搜索Floating-point即可找到该IP Operation Selection界面 1.绝对值&#xff0c;即result|A| 2.累加 3.两个浮点数的加法或者减法 4.两个浮点数进行比较 5.两个浮点数的除法 6.求指数&#xff0c;即e^A 7.定点数到浮点数的转化 8.浮点数转化为定…...

只需三步!5分钟本地部署deep seek——MAC环境

MAC本地部署deep seek 第一步:下载Ollama第二步:下载deepseek-r1模型第三步&#xff1a;安装谷歌浏览器插件 第一步:下载Ollama 打开此网址&#xff1a;https://ollama.com/&#xff0c;点击下载即可&#xff0c;如果网络比较慢可使用文末百度网盘链接 注&#xff1a;Ollama是…...

DeepSeek和ChatGPT的优劣或者区别(答案来DeepSeek和ChatGPT)

DeepSeek的答案 DeepSeek与ChatGPT作为当前两大主流AI模型&#xff0c;在架构设计、性能表现、应用场景等方面存在显著差异&#xff0c;以下从多个维度进行对比分析&#xff1a; 一、架构与训练效率 架构设计 DeepSeek&#xff1a;采用混合专家&#xff08;MoE&#xff09;框架…...

1 推荐系统概述

推荐系统概述 1 推荐系统的意义平台方信息生产者&#xff08;物品&#xff09;信息消费者&#xff08;用户&#xff09;推荐和搜索的区别 2 推荐系统架构系统架构算法架构 3 推荐系统技术栈算法画像层召回/粗排精排重排序 工程 1 推荐系统的意义 信息生产者&#xff08;平台方…...

JavaEE架构

一.架构选型 1.VM架构 VM架构通常指的是虚拟机&#xff08;Virtual Machine&#xff09;的架构。虚拟机是一种软件实现的计算机系统&#xff0c;它模拟了物理计算机的功能&#xff0c;允许在单一物理硬件上运行多个操作系统实例。虚拟机架构主要包括以下几个关键组件&#xff…...

C++ labmbd表达式

文章目录 C++ Lambda 表达式详解1. Lambda 表达式的组成部分:2. Lambda 语法示例(1) 最简单的 Lambda(2) 带参数的 Lambda(3) 指定返回类型的 Lambda3. 捕获外部变量(1) 值捕获(复制)(2) 引用捕获(3) 捕获所有变量4. Lambda 在 STL 中的应用5. Lambda 作为 `std::function`6…...

当Axure遇见DeepSeek:设计工具的革命性进化

从传统的平面设计软件到如今的交互原型工具&#xff0c;设计工具经历了多次革命性的进化。然而&#xff0c;随着人工智能技术的不断发展&#xff0c;设计工具正面临又一次重大的变革。Axure&#xff0c;作为设计界知名的原型设计工具&#xff0c;以其强大的功能和灵活的操作性&…...

[LeetCode] day19 454. 四数相加 II

题目链接 题目描述 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&…...

FPGA开发技能(10)热电偶测温ADS1118方案

文章目录 1.热电偶原理2.ADS1118方案2.1ADS介绍2.2原理设计2.3实物连接图2.4测温原理 3.误差校准3.1查表法3.2冷端补偿法 4.SPI操作时序5.传送门 1.热电偶原理 两个不同材料的金属线一端在同一结点连接&#xff0c;另一端放在被测温点&#xff0c;则二者会产生一定的压差&…...

CNN-day5-经典神经网络LeNets5

经典神经网络-LeNets5 1998年Yann LeCun等提出的第一个用于手写数字识别问题并产生实际商业&#xff08;邮政行业&#xff09;价值的卷积神经网络 参考&#xff1a;论文笔记&#xff1a;Gradient-Based Learning Applied to Document Recognition-CSDN博客 1 网络模型结构 …...

【DeepSeek学Cuda】NVidia GPU指令集架构-Load和Cache

https://zhuanlan.zhihu.com/p/692445145 当warp内的线程访问同一个constant位置时&#xff0c;其是确定的latency的&#xff08;和访问寄存器一样&#xff09; latency 什么意思 当 warp 内的线程访问同一个 constant 位置时&#xff0c;其是确定的 latency 的&#xff08;和…...

[免费]Springboot+Vue(带推荐算法)网上购物商城系统【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringbootVue(带推荐算法)网上购物商城系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringbootVue(带推荐算法)网上购物商城系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 根据需求分析文档确定的…...

车载测试工具 --- CANoe VH6501 进行Not Acknowledge (NAck) 测试

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...

JVM调优参数分类

JVM调优参数分类 一、内存管理参数&#xff08;堆/非堆&#xff09; 1. 堆内存设置 参数格式功能说明典型场景值记忆口诀-Xms初始堆大小-Xms4gXms起始大小-Xmx最大堆大小-Xmx8gXmx最大上限-Xmn年轻代大小-Xmn2gXmn年轻代-XX:NewRatio老年代与年轻代比例-XX:NewRatio2比例老/新…...

高阶C语言|枚举与联合

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对C语言感兴…...

通过魔搭社区本地下载大语言模型及API接口调用模型实现

一、背景 在之前的博文:CSDN中&#xff0c;我们已经详细介绍了如何安装Python环境和一些必要的库和访问Transformers库的大模型。然而&#xff0c;在实际操作过程中&#xff0c;我们发现模型的下载或者调用需要访问Hugging Face上的Transformers库&#xff0c;这是一个国外的网…...

2022java面试总结,1000道(集合+JVM+并发编程+Spring+Mybatis)的Java高频面试题

1、面试题模块汇总 面试题包括以下十九个模块&#xff1a; Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示…...

【CubeMX+STM32】SD卡 文件系统读写 FatFs+SDIO+DMA

本篇&#xff0c;将使用CubeMXKeil&#xff0c;创建一个SD卡的 FatFSSDIODMA 文件系统读写工程。 目录 一、简述 二、CubeMX 配置 FatFSSDIO DMA 三、Keil 编辑代码 四、实验效果 实现效果&#xff0c;如下图&#xff1a; 一、简述 上两篇&#xff0c;已循序渐进讲解了SD、…...

GenAI + 电商:从单张图片生成可动态模拟的3D服装

在当今数字化时代,电子商务和虚拟现实技术的结合正在改变人们的购物体验。特别是在服装行业,消费者越来越期待能够通过虚拟试衣来预览衣服的效果,而无需实际穿戴。Dress-1-to-3 技术框架正是为此而生,它利用生成式AI模型(GenAI)和物理模拟技术,将一张普通的穿衣照片转化…...

1.1 Spring Security 概述

Spring Security 概述 1. 什么是 Spring Security&#xff1f; Spring Security 是 Spring 生态中专注于应用安全的核心框架&#xff0c;为 Java 企业应用提供认证&#xff08;Authentication&#xff09;、授权&#xff08;Authorization&#xff09;以及安全攻击防护&#x…...

新站如何快速被搜索引擎收录?

本文转自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/106.html 新站快速被搜索引擎收录是一个综合性的任务&#xff0c;涉及多个方面的优化工作。以下是一些关键步骤和策略&#xff0c;有助于新站快速被搜索引擎收录&#xff1a; 一、提交网站…...

<论文>DeepSeek-R1:通过强化学习激励大语言模型的推理能力(深度思考)

一、摘要 本文跟大家来一起阅读DeepSeek团队发表于2025年1月的一篇论文《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning | Papers With Code》&#xff0c;新鲜的DeepSeek-R1推理模型&#xff0c;作者规模属实庞大。如果你正在使用Deep…...

DatePicker 实现:日期范围截止时间为23:59:59

文章目录 需求描述实现逻辑 需求描述 在使用 Element Plus 的 el-date-picker 组件进行日期范围选择时&#xff0c;如果你希望选择的日期范围截止时间为所选时间的23:59:59&#xff0c;你可以通过设置 type 属性为 daterange&#xff0c;并结合使用 value-format 属性来控制时间…...

登录功能login.html

文章目录 前言一、login.html二、getVerify()controllerlogin() 登录功能encodePwd(pwd,key)login.do验证是否异地登录找回账号verifySubmit() 前言 登录login.html&#xff0c;验证码获取verifycode&#xff0c;登陆函数login() 一、login.html <!DOCTYPE html> <h…...

将 AMD Zynq™ RFSoC 扩展到毫米波领域

目录 将 AMD Zynq™ RFSoC 扩展到毫米波领域Avnet XRF RFSoC 系统级模块适用于 MATLAB 的 Avnet RFSoC Explorer 工具箱5G mmWave PAAM 开发平台突破性的宽带毫米波波束成形特征&#xff1a;OTBF103 Mathworks Simulink 模型优化毫米波应用中的射频信号路径 用于宽带毫米波上/下…...

2.10..

#include "widget.h" #include "ui_widget.h" #include <QFontDialog> #include <QFont> #include <QMessageBox> #include <QColorDialog> #include <QColor> // #include <QFileDialog> //文件对话框…...

Struts2 命令执行漏洞 S2-045 复现:深入剖析与实战演练

前言 在当今网络安全形势日益严峻的大环境下&#xff0c;Web 应用框架的安全问题始终是信息安全领域关注的焦点。Struts2 作为一款广泛应用于 Java Web 开发的开源框架&#xff0c;其安全性直接关系到众多 Web 应用的稳定运行。今天&#xff0c;我们将深入探讨并实战复现 Stru…...

Spark 源码 | 脚本分析总结

前言 最初是想学习一下Spark提交流程的源码&#xff0c;比如 Spark On Yarn 、Standalone。之前只是通过网上总结的文章大概了解整体的提交流程&#xff0c;但是每个文章描述的又不太一样&#xff0c;弄不清楚到底哪个说的准确&#xff0c;比如Client 和 CLuster 模式的区别&a…...

2025.2.9 每日学习记录2:技术报告写了一半+一点点读后感

0.近期主任务线 1.完成小论文准备 目标是3月份完成实验点1的全部实验和论文。 2.准备教资笔试 打算留个十多天左右&#xff0c;一次性备考笔试的三个科目 1.实习申请技术准备&#xff1a;微调、Agent、RAG 1.今日完成任务 1.电子斗蛐蛐&#xff08;文本书写领域&am…...

6、使用one-api管理统一管理大模型,并开始使用本地大模型

文章目录 本节内容介绍集中接入&#xff1a;将大模型统一管理起来当使用了大模型代理大模型代理示例 开源模型&#xff1a;如何使用Hugging Face上的模型modelscope使用 pipeline 调用模型用底层实现调用模型流式输出 如何在项目中使用开源模型使用 LangChain使用集中接入开始使…...

DFS+回溯+剪枝(深度优先搜索)——搜索算法

DFS也就是深度优先搜索&#xff0c;比如二叉树的前&#xff0c;中&#xff0c;后序遍历都属于DFS。其本质是递归&#xff0c;要学好DFS首先需要掌握递归。接下来咱们就一起来学习DFS涉及的算法。 一、递归 1.什么是递归&#xff1f; 递归可以这样理解把它拆分出来&#xff0…...

【数据结构】_堆的实现

目录 1. 堆的实现 1.1 Heap.h 1.2 Heap.c 1.3 Test_Heap.c 专栏前文中&#xff0c;已经介绍了入堆及向上调整算法&#xff0c;出堆及向下调整算法&#xff0c;详情见下文&#xff1a; 【数据结构】_堆的结构及向上、向下调整算法-CSDN博客文章浏览阅读352次&#xff0c;点…...

读书笔记《左耳听风》

读书笔记《左耳听风》 从今年开始&#xff0c;打算给自己定一下在看完书后整理成博客的计划。以往很多看完的书仅仅停留在看完&#xff0c;再回顾的时候总感觉已经不甚清晰了&#xff0c;希望能坚持下去。 《左耳听风》是今年我看完的第一本书&#xff0c;内容针对的是程序员…...

Axure原型图怎么通过链接共享

一、进入Axure 二、点击共享 三、弹出下面弹框&#xff0c;点击发布就可以了 发布成功后&#xff0c;会展示链接&#xff0c;复制即可共享给他人 四、发布失败可能的原因 Axure未更新&#xff0c;首页菜单栏点击帮助选择Axure更新&#xff0c;完成更新重复以上步骤即可...