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

Linux操作系统从入门到实战(五)详细讲解Linux权限概念

Linux操作系统从入门到实战(五)详细讲解Linux权限概念

  • 前言
  • 一、Linux中两种用户
    • 1.1 超级用户(root)
    • 1.2 普通用户
    • 1.3 切换用户命令
  • 二、Linux权限管理
    • 2.1 文件访问者的分类:谁能访问文件?
    • 2.2 文件类型
    • 2.3 基本权限:能对文件做什么?
    • 2.4 权限的“长相”:
    • 2.5 为什么需要权限?
  • 三、文件访问权限的相关设置方法与命令
    • 1. chmod:
    • 2. chown:
    • 3. chgrp:
    • 4. umask:
    • 5. file指令:
    • 6. 使用 sudo 分配权限
  • 四、粘滞位


前言

  • 在之前的内容里,我们深度解析了操作系统的本质,一步步搭建起 Linux 环境,还系统掌握了 Linux 基础指令的运用。
  • 但要想真正玩转 Linux 系统,其权限管理机制是绕不开的核心关键。
  • 从今天起,就让我们切入 Linux 权限这一重要模块,层层拆解其概念与逻辑,为全面掌握 Linux 系统的管理与运用筑牢根基,开启更深入的 Linux 探索之旅

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482


一、Linux中两种用户

  • 我们平时用的Linux操作系统里有两种⽤⼾:超级⽤⼾(root)、普通⽤⼾

1.1 超级用户(root)

  • 就像家里“大权在握”的大当家,在 Linux 系统里想干啥就干啥,没有限制
  • 比如随意修改系统设置、安装或删除软件、查看所有文件等,甚至可以删除自己。
  • 它的命令提示符是 #,只要看到 #,就知道现在是超级用户
    在这里插入图片描述

1.2 普通用户

  • 类似家里的其他成员,能做的事有限。
  • 比如只能用自己的东西(访问自己权限内的文件),不能随便动系统关键设置或别人的文件。它的命令提示符是 $,看到 $ 就知道是普通用户在操作。
    在这里插入图片描述

1.3 切换用户命令

  • 从超级用户切到普通用户:比如从 root 切到普通用户 user,输 su user不用输密码,直接切换。就像大当家想找普通成员做事,一叫就来。
  • 从普通用户切到超级用户:输 su(或 suroot),这时系统会让你输 root 的密码,验证通过才能切换。好比普通成员想变成大当家,得先证明自己有这个资格(输对密码)。
    在这里插入图片描述

二、Linux权限管理

2.1 文件访问者的分类:谁能访问文件?

Linux 把文件的“访问者”分成三类,就像家里的文件被不同人使用:

  1. 所有者(User,缩写 u

    • 就像文件的“主人”,比如你创建了一个文件,你就是它的所有者。
    • 权限最大,能决定谁能看、谁能改这个文件。
  2. 所属组用户(Group,缩写 g

    • 比如你和同学组成一个小组,小组里的成员就是“所属组用户”。
    • 组内成员共享一些权限,方便团队协作(比如一起修改小组作业文件)。
  3. 其他用户(Others,缩写 o

    • 既不是所有者,也不在所属组里的人,比如陌生人。
    • 权限最小,通常只能看文件内容,不能随便改

2.2 文件类型

Linux 里的文件“长相”用第一个字符表示,常见类型:

  • d(目录,文件夹):像一个抽屉,里面可以装很多文件和子目录(比如 ~/Documents)。
    在这里插入图片描述

  • -(普通文件):就是普通的文件,比如文档(.txt)、图片(.jpg)、脚本(.sh)等。
    在这里插入图片描述

  • l(软链接):类似 Windows 的快捷方式,指向另一个文件或目录(比如 ln -s 目标文件 快捷方式名)。

  • b(块设备文件)c(字符设备文件):和硬件相关,比如硬盘(/dev/sda)、键盘、鼠标(不用太纠结,记住是硬件就行)。

  • 其他类型(ps):暂时用得少,先记住前三个最常用的!

2.3 基本权限:能对文件做什么?

每种用户(所有者/组/其他用户)都有三种“操作权限”,用 rwx 表示,对应数字 421

  1. 读权限(r,数字 4

    • 对文件:可以查看文件内容(比如用 cat 文件名 查看)。
    • 对目录:可以查看目录里有哪些文件(比如用 ls 目录名 列出内容)。
      例子:你可以看一本书的内容,就是有“读”权限。
      在这里插入图片描述
  2. 写权限(w,数字 2

    • 对文件:可以修改文件内容(比如用 nano 文件名 编辑)。
    • 对目录:可以在目录里新建、删除、重命名文件(注意!是改目录里的内容,不是目录本身的名字)。
      例子:你可以在笔记本上写字,就是有“写”权限。
  3. 执行权限(x,数字 1

    • 对文件:可以运行这个文件(比如脚本 .sh 文件,需要 x 权限才能用 ./脚本名 运行)。
    • 对目录:可以进入这个目录(比如用 cd 目录名 进入)。
      例子:你能打开一个抽屉(进入目录),或者启动一个程序(运行文件),就是有“执行”权限。

如果没有某个权限,就用 - 表示,比如 r-- 表示只有读权限,没有写和执行权限。

2.4 权限的“长相”:

当你用 ls -l 查看文件时,会看到类似这样的结果:

在这里插入图片描述

-rwxr-xr-- 1 user group 1024 Jan 1 00:00 文件名
  • 第一个字符是文件类型(这里是 -,表示普通文件)。
  • 接下来 9 个字符分成三组,每组 3 个:
    • 第一组(前 3 位):所有者(u)的权限(这里 rwx,表示可读、可写、可执行)。
    • 第二组(中间 3 位):所属组(g)的权限(这里 r-x,表示可读、可执行,不可写)。
    • 第三组(最后 3 位):其他用户(o)的权限(这里 r--,表示只读)。

也可以用数字表示权限,比如 rwx4+2+1=7r-x4+0+1=5,上面的例子权限就是 754

2.5 为什么需要权限?

假设你有一个笔记本:

  • 所有者(你自己):可以随便看、写、甚至烧掉它(rwx)。
  • 所属组(家人):可以看里面的内容,也可以打开笔记本(进入目录),但不能随便修改(r-x)。
  • 其他用户(陌生人):只能远远看一眼封面(只读,r--),不能打开或修改。

三、文件访问权限的相关设置方法与命令

1. chmod:

基本功能与格式

chmod 命令用于设置文件的访问权限,其基本格式是 chmod [参数] 权限 文件名。要注意,只有文件的拥有者和超级用户 root 才有权力改变文件的权限。

常用选项

-R 这个选项很实用,当你要修改一个目录下所有文件和子目录的权限时,使用 -R 就可以递归地进行修改。

权限值格式
  • 用户标识符 + / - / = 权限字符

    • + :为权限范围添加权限代号所代表的权限。
    • - :从权限范围中移除权限代号所代表的权限。
    • = :给权限范围赋予权限代号所代表的权限。
    • 用户符号:
      • u :文件拥有者。
      • g :拥有者所在组的用户。
      • o :其他用户。
      • a :所有用户。
    • 实例:
      • chmod u++ a.txt :给文件 a.txt 的拥有者添加写权限。
      • chmod o+x a.txt :移除文件 a.txt 其他用户添加写权限。
      • chmod a=x a.txt :给文件 a.txt 的所有用户都只赋予执行权限。
        在这里插入图片描述
  • 三位 8 进制数字
    每个 8 进制数字对应一种用户的权限,从左到右依次是拥有者、所属组、其他用户。比如读权限是 4,写权限是 2,执行权限是 1。

    • 实例:
      • chmod 664 a.txt :拥有者和所属组用户有读写权限,其他用户只有读权限。
        在这里插入图片描述

      • chmod 640 a.txt :拥有者有读写权限,所属组用户只有读权限,其他用户没有任何权限。

2. chown:

chown 命令用来修改文件的拥有者,格式为 chown [参数] 用户名 文件名

  • 实例:
    • chown user1 f1 :把文件 f1 的拥有者修改为 user1
    • chown -R user1 filegroup1 :使用 -R 递归地将目录 filegroup1 及其下面所有文件和子目录的拥有者都修改为 user1

3. chgrp:

chgrp 命令用于修改文件或目录的所属组,格式是 chgrp [参数] 用户组名 文件名。常用选项 -R 可递归修改文件或目录的所属组。

  • 实例:
    • chgrp users /abc/f2 :把文件 /abc/f2 的所属组修改为 users

4. umask:

功能
`umask` 可以用来查看或修改文件掩码。新建文件默认权限是 0666(即所有用户都有读写权限),新建目录默认权限是 0777(所有用户都有读写执行权限)。不过实际创建的文件和目录权限往往不是这些默认值,这是因为创建时会受到 `umask` 的影响。实际创建出来的文件权限是默认权限 `mask` 与 `~umask` 按位与的结果。
格式与说明
格式为 `umask 权限值`,超级用户默认掩码值是 0022,普通用户默认是 0002。将现有的存取权限减去权限掩码后,就得到创建文件时的预设权限。 - 实例: - `umask 755` :设置文件掩码为 755。 - `umask` :查看当前的文件掩码。 - `umask 044` :将文件掩码设置为 044。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b72141e5ec1342c6a07122388b0138a1.png)

5. file指令:

file 指令用于识别文件类型,语法是 file [选项] 文件或目录...

常用选项
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/22c7bf029a554dc7adc57d89a4a9d9ca.png)
  • -c :详细显示指令执行过程,方便排查错误或分析程序执行情况。
    在这里插入图片描述

  • -z :尝试解读压缩文件的内容。

6. 使用 sudo 分配权限

修改 /etc/sudoers 文件
  • 可以通过修改 /etc/sudoers 文件来分配权限。
  • /etc/sudoers 文件定义了哪些用户可以使用 sudo 命令以超级用户权限执行特定命令。
  • 不过修改这个文件要格外小心,因为一旦配置错误,可能导致系统出现问题
  • 通常使用 visudo 命令来编辑该文件,它会在保存时检查语法错误。比如,你可以在文件中添加一行,让某个用户可以使用 sudo 执行特定命令,像这样 username ALL=(ALL) ALL ,这就表示用户 username 可以在任何主机上以任何用户身份执行任何命令。

在这里插入图片描述

使用 sudo 调用授权的命令

格式:sudo –u 用户名 命令

  • sudo:获取临时超级用户权限的命令。
  • -u 用户名:指定以哪个用户身份执行命令。
  • 命令:具体要执行的操作。
    实例 sudo -u root /usr/sbin/useradd u2 :表示当前用户借助 sudo,以 root 身份执行 /usr/sbin/useradd u2 命令(即创建用户 u2)。这要求当前用户在 /etc/sudoers 中被授予了相关权限,否则会提示权限不足。

简单总结:先通过修改 /etc/sudoers 文件设定用户能以什么身份执行哪些命令,再用 sudo -u 来实际调用这些授权的命令,实现权限的灵活分配,既保证安全又方便普通用户执行特定管理任务。

四、粘滞位

在我们刚刚的讲解中

  • 可执行权限(x)
    想象目录是一个房间,可执行权限(x)就像“开门的钥匙”。

    如果没这把钥匙(目录无 x 权限),你连房间都进不去(无法 cd 进入目录),更别说做其他操作了。

  • 可读权限(r)
    进了房间(有 x 权限)后,可读权限(r)就像“房间里的灯”。

    如果没灯(目录无 r 权限),虽然你人在房间里(能 cd 进入),但啥也看不见(无法用 ls 等命令查看目录里有什么文件)。

  • 可写权限(w)
    可写权限(w)相当于“在房间里放置或拿走东西的权力”。

    只要有这个权力(目录有 w 权限),不管房间里的东西(文件)是谁的,你都能在房间里创建新东西(新建文件),或者把别人的东西拿走(删除文件)

这就像:张三在房间里放了个盒子(文件),李四只要有房间的 w 权限,就能把张三的盒子拿走(删除文件),这看起来是不是不太合理?

为了让目录里的文件不被随意删除,Linux 引入了粘滞位。给目录加上粘滞位(用 chmod +t)后,这个目录就像被上了一把“特殊的锁”,规定:只有以下三种人能删除目录里的文件

  1. 超级管理员(root):超级管理员有最高权限,能处理任何文件。
  2. 目录的所有者:目录就像一个“私人领地”,领地的主人(目录所有者)有权力管理里面的东西。
  3. 文件的所有者:自己的东西(文件),自己当然能决定是否删除。

举个例子:

  • /home 目录加粘滞位(chmod +t /home)后,用户 litao 就不能随便删除 root 或其他人创建的文件了。原本 litao 能删 rootroot.c 文件(因为 /home 目录有 w 权限),但加了粘滞位后,系统会检查删除者是否是超级管理员、目录所有者或文件所有者,不满足就不让删,这样就保证了文件的安全性。

以上就是这篇博客的全部内容,下一篇我们将继续探索Linux的更多精彩内容。

我的个人主页
欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

相关文章:

Linux操作系统从入门到实战(五)详细讲解Linux权限概念

Linux操作系统从入门到实战(五)详细讲解Linux权限概念 前言一、Linux中两种用户1.1 超级用户(root)1.2 普通用户1.3 切换用户命令 二、Linux权限管理2.1 文件访问者的分类:谁能访问文件?2.2 文件类型2.3 基…...

[方法论]软件工程中的设计模式:从理论到实践的深度解析

文章目录 软件工程中的设计模式:从理论到实践的深度解析引言:为什么需要设计模式?第一部分:设计模式的核心原则1. SOLID 原则(面向对象设计的五大基石)2. 其他关键思想 第二部分:创建型模式&…...

测试基础笔记第十八天

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、web自动化1.xpath定位1.属性定位2.属性与逻辑结合3.属性和层级结合 2.常见元素定位方法(面试题)3.常见元素定位失败原因4.cookie1.验证码…...

深度学习系统学习系列【2】之人工神经网络(ANN)

文章目录 说明人工神经网络概述基本单位(神经元模型)神经元基本模型线性模型与激活函数多层神经网络人工神经网络的注意内容 人工神经网络的阶段划分训练阶段输入、输出数据量化的设计权值向量W和偏置b的设计 预测阶段 人工神经网络核心算法梯度下降算法…...

《解锁Windows下GCC升级密码,开启高效编程新旅程》

《解锁Windows下GCC升级密码,开启高效编程新旅程》 为什么要升级 Windows 下的 GCC 版本? 在软件开发的动态领域中,GCC 作为一款卓越的编译器,在 Windows 环境下的升级有着重要意义,其影响深远且广泛。 从性能优化的角度来看,新版 GCC 往往在编译速度上有显著提升。随着…...

**Java面试大冒险:谢飞机的幽默与技术碰撞记**

互联网大厂Java求职者面试:一场严肃与搞笑交织的技术盛宴 场景: 互联网大厂面试间 人物: 面试官: 一位严肃的资深架构师,对技术要求严格。谢飞机: 一位搞笑的程序员,技术实力参差不齐。 第一…...

软件检测价格受多种因素影响,你了解多少?

软件检测价格受到多种因素的影响,这对企业来说至关重要,对开发者来说也至关重要,了解软件检测价格能够让企业和开发者更好地进行预算,能够让企业和开发者更好地进行决策。以下为你深入分析相关内容。 检测范围影响软件检测范围的…...

学习黑客风险Risk

一眼纵览 今天 Day 5 我们用 60 分钟打通「风险管理快闪副本」——先用漫画式视角速读两个国际标准(NIST & ISO/IEC 27005),再把抽象概念变身为炫彩 Risk Heat Map,最后亲手填一张迷你 风险登记簿。学完你将能: 讲…...

scikit-learn在监督学习算法的应用

shiyonguyu大家好,我是我不是小upper!最近行业大环境不是很好,有人苦恼别人都开始着手项目实战了,自己却还卡在 scikit-learn 的代码语法上,连简单的示例运行起来都磕磕绊绊。确实,对很多机器学习初学者来说…...

BG开发者日志505:项目总体情况

1、从2024年12月中旬启动,到4月底gameplay部分开发完毕,已经四个半月过去了。 其中大部分内容是3、4两个月中完成的,量产阶段。 预计6月初参加新品节,6月中旬发售(比原计划7月中旬提前一个月)。 --------…...

MySQL 空值处理函数对比:IFNULL、COALESCE 和 NULLIF

IFNULL、COALESCE 和 NULLIF这三个函数都是 MySQL 中处理 NULL 值的函数,但它们的功能和使用场景有所不同: 1. IFNULL(expr, fallback) 功能:两值处理,专为替换 NULL 设计 如果 expr 不是 NULL,返回 expr如果 expr …...

【2025年】MySQL面试题总结

文章目录 1. MySQL 支持哪些存储引擎?默认使⽤哪个?2. MyISAM 和 InnoDB 有什么区别?3. 事务的四大特性?4. 并发事务带来了哪些问题?5. 不可重复读和幻读有什么区别?6. MySQL 事务隔离级别?默认是什么级别&#xff1…...

Python 数据智能实战 (10):智能商品推荐 - LLM “猜你喜欢”

写在前面 —— 从协同过滤到语义理解:融合 LLM,打造更懂用户心意的个性化推荐 在之前的篇章里,我们已经见证了 LLM 在用户分群、购物篮分析、流失预测、内容生成等多个电商环节的赋能潜力。今天,我们将聚焦于电商平台的“心脏”之一,也是用户体验和商业转化的核心驱动力…...

2025年 蓝桥杯省赛 Python A 组题目

文章目录 A.偏蓝B.IPv6C.2025图形D.最大数字E.倒水F.拼好数G.登山H.原料采购 近期复盘一下 省赛的题目,正所谓知不足方能进步可以在洛谷找到比赛的题目,不过得注意由于python版本的问题,有些代码想要在洛谷上ac的话,需要对应调整代…...

shell(7)

运算符 1.基本介绍 这是shell进行运算的符号,依靠这些标识才能实现我们在脚本中的运算. 2.基本语法 1、$((运算符))或$[运算符]或expr m n 注意: expr运算符间有空格→如果不加空格会被当做一个整体不会进行运算 例子: 3.expr m - n,如果要将expr运算…...

LangChain与MCP:大模型时代的工具生态之争与协同未来

LangChain与MCP:大模型时代的工具生态之争与协同未来 ——从架构差异到应用场景的深度解析 引言 在大模型驱动的AI应用生态中,LangChain与Model Context Protocol (MCP) 代表了两种截然不同的技术路径:前者以灵活的工具链和开发者友好性著称…...

【LLaMA-Factory实战】Web UI快速上手:可视化大模型微调全流程

一、引言 在大模型微调场景中,高效的工具链能显著降低开发门槛。LLaMA-Factory的Web UI(LlamaBoard)提供了低代码可视化平台,支持从模型加载、数据管理到训练配置的全流程操作。本文将结合结构图、代码示例和实战命令&#xff0c…...

源码编译Qt StateMachine

编译某个项目时报错提示fatal error: QSignalTransition: No such file or directory,是因为qtbase中没有包含StateMachine模块,需要qt/qtscxml.git - SCXML (state machine notation) compiler and related tools 编译安装qtscxml 执行如下步骤&#…...

C++ STL vector高级特性与实战技巧

引言 各位小伙伴们好!上一篇博客我们介绍了vector的基础知识和常见操作,今天我们将更深入地探讨vector的高级特性、内存管理细节以及实战应用技巧。 想象一下vector就像一辆能自动变长的公交车,我们上一篇讲了如何上下车(添加删…...

[Windows] Kazumi番剧采集v1.6.9:支持自定义规则+在线观看+弹幕,跨平台下载

[Windows] Kazumi番剧采集 链接:https://pan.xunlei.com/s/VOPLMhEQD7qixvAnoy73NUK9A1?pwdtu6i# Kazumi是一款基于框架; 开发的轻量级番剧采集工具,专为ACG爱好者设计。通过;自定义XPath规则; 实现精准内容抓取,支持多平台(An…...

二种MVCC对比分析

文章目录 前言MVCCInnodb的MVCC版本链回滚与提交可见性判断 Oracle的MVCC版本链 PostgreSQL的MVCCMVCC实现可见性判断特点 前言 ​ MVCC(多版本并发控制,Multi-Version Concurrency Control)是一种数据库管理系统(DBMS&#x…...

Python蓝桥杯真题代码

以下是一些不同届蓝桥杯Python真题代码示例: 第十四届青少年蓝桥杯python组省赛真题 删除字符串后缀 input_str input("请输入一个字符串:") suffixes (er, ly, ing) for suffix in suffixes: if input_str.endswith(suffix): input_str …...

高中数学联赛模拟试题精选学数学系列第5套几何题

四边形 A B C D ABCD ABCD 的对角线 A C AC AC 与 B D BD BD 互相垂直, 点 M M M, N N N 在直线 B D BD BD 上, 且关于直线 A C AC AC 对称. 设点 M M M 关于直线 A B AB AB, B C BC BC 的对称点分别为 X X X, Y Y Y, 点 N N N 关于直线 C D CD CD, D A DA DA 的…...

【KWDB 创作者计划】Docker单机环境下KWDB集群快速搭建指南

【KWDB 创作者计划】Docker 单机环境下 KaiwuDB集群快速搭建指南 前言一、KWDB介绍1.1 KWDB简介1.2 主要特点1.3 典型应用场景 二、环境介绍2.1 部署环境要求2.2 本地环境规划2.3 本次部署介绍 三、下载容器镜像四、创建相关证书文件4.1 创建部署目录4.2 创建证书文件4.3 查看证…...

基于51单片机和LCD1602、矩阵按键的小游戏《猜数字》

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、LCD16022、矩阵按键3、定时器0 四、主函数总结 系列文章目录 前言 用的是普中A2开发板,用到板上的矩阵按键,还需要外接一个LCD1602液晶显示屏。 【单片机】STC89C52RC 【频率】12T11.05…...

从广义线性回归推导出Softmax:理解多分类问题的核心

文章目录 引言:从回归到分类广义线性模型回顾从二分类到多分类Softmax函数的推导建模多类概率基于最大熵原理具体推导步骤Softmax函数的数学形式 Softmax回归模型参数的可辨识性 最大似然估计与交叉熵损失似然函数交叉熵损失梯度计算 Softmax回归的实现要点数值稳定…...

传奇各版本迭代时间及内容变化,屠龙/嗜魂法杖/逍遥扇第一次出现的时间和版本

​【早期经典版本】 1.10 三英雄传说:2001 年 9 月 28 日热血传奇正式开启公测,这是传奇的第一个版本。游戏中白天与黑夜和现实同步,升级慢,怪物爆率低,玩家需要靠捡垃圾卖金币维持游戏开销,遇到高级别法师…...

云计算-私有云-私有云运维开发

三、私有云运维开发(15) ​ 使用自动化运维工具 Ansible 完成系统的自动化部署与管理。 ​ 基于 OpenStack APIs 与SDK,开发私有云运维程序 1.OpenStack Python运维开发:实现镜像管理(7分) ​ 编写Python代…...

hadoop存储数据文件原理

Hadoop是一个开源的分布式计算框架,可以用于存储和处理大规模数据集。Hadoop的存储系统基于Hadoop Distributed File System(HDFS),它的主要原理如下: 数据切块:当用户向HDFS中存储一个文件时,该…...

spring2.x详解介绍

一、核心架构升级 Spring 2.x 是 Spring 框架的重要迭代版本(2006-2009年间发布),其核心改进体现在 模块化设计 和 轻量化配置 上。相较于 1.x 版本,2.x 通过以下方式重构了架构: XML Schema 支持:弃用 D…...

探索Grok-3的高级用法:功能与应用详解

引言 随着人工智能技术的迅猛发展,xAI推出的Grok-3模型以其卓越的性能和创新功能,成为AI领域的新标杆。Grok-3不仅在计算能力上实现了十倍提升,还引入了多种高级模式和实时数据处理能力,适用于学术研究、技术分析、市场洞察等多场…...

PyTorch_张量转换为numpy数组

使用 tensor.numpy 函数可以将张量转换为 ndarray 数组,但是共享内存,可以使用 copy 函数避免共享。共享内存会导致张量或者numpy中的其中一个更改后,另外一个会受到影响。 代码 import torch # 张量转换为 numpy 数组 def test01():data_te…...

什么是“原子变量”?

原子变量(std::atomic)在C++中是一个非常关键的机制,特别是在多线程编程中保持数据安全和避免竞争条件。它的设计目标就是让一段操作在多线程环境下变得“原子性”,即不可被中断,保证操作的完整与一致。 一、什么是“原子变量”? 简单来说: 普通变量:在多线程环境中,…...

[Linux开发工具]gcc/g++

C语言文件编译运行 gcc code.c -o mycode gcc -o mycode code.c 预处理 汇编 编译 链接 预处理(进行宏替换/去注释/条件编译/头文件展开) gcc -E code.c -o code.i -E ->从现在开始进行程序的编译,当我们 的程序预处理完毕后,翻译工作,就停下来 code.i预处理之后的结果 …...

【Mytais系列】Type模块:类型转换

MyBatis 的 类型系统(Type System) 是框架处理 Java 类型与数据库类型之间映射的核心模块,它通过 类型处理器(TypeHandler)、类型别名(TypeAlias) 和 类型转换器 等机制,实现了数据库…...

C++类_虚基类

在 C 里,虚基类是用来解决菱形继承问题的。菱形继承问题是指当一个派生类从两个或更多基类派生,而这些基类又从同一个基类派生时,派生类会包含多份间接基类的数据副本,这可能会引发数据冗余和二义性问题。虚基类可以保证在派生类中…...

【自然语言处理与大模型】使用Xtuner进行模型合并与导出

在上一篇文章中我为大家介绍了Xtuner框架如何进行QLoRA微调,这个框架在微调过后会得到适配器权重文件,它的后缀是.pth。但原模型都是huggingface模型,其后缀是safetensors。所以呢我们在使用这个框架导出模型之前要合并,合并之前要…...

数据结构4.0

大家好,今天是栈的知识点~ 目录 一、栈的概念 1.0 栈的概念 2.0 概念区分 二、栈的方法 1.0 MyStack方法: 2.0 将元素压入栈顶 3.0 移除并返回栈顶元素 4.0 返回栈顶元素但不移除 三、栈的题目 1.0括号匹配 2.0逆波兰表达式求值 3.0 出栈…...

SMT贴片检验标准核心要点与实施规范

内容概要 SMT贴片检验标准是确保电子产品组装质量的核心框架,其核心要点覆盖从原材料到成品的全流程工艺控制。该标准体系以焊点质量、元件定位精度及锡膏印刷检测为技术基线,结合IPC-A-610电子组装验收规范,对PCBA加工中的缺陷类型、判定阈…...

探索 C++23 std::to_underlying:枚举底层值获取的利器

文章目录 引言基本概念作用使用示例与之前方法的对比在 C23 中的意义总结 引言 在 C 的发展历程中,每一个新版本都带来了许多令人期待的新特性和改进,以提升代码的安全性、可读性和可维护性。C23 作为其中的一个重要版本,也不例外。其中&…...

PyTorch学习之张量(Tensor)(一)

1. 张量的基本概念 1.1. 定义与特性 张量是PyTorch中最基础的数据结构,可视为多维数组的泛化形式,支持标量(0维)、向量(1维)、矩阵(2维)及更高维度的数据存储。其核心特性包括&…...

理解数学概念——支集(支持)(support)

1. 支集(support)的定义 在数学中,一个实函数 f 的支集(support)是函数的不被映射到 0 的元素域(即定义域)的子集。若 f 的(定义)域(domain)是一个拓扑空间(即符合拓扑的集合),则 f 的支集则定义为包含( f 的元素域中)不被映射到0的所有点之最小闭集…...

Python 部分内置函数及其用法详解

在 Python 编程的世界里,内置函数是我们强大的 “工具箱”,它们提供了丰富而便捷的功能,帮助我们高效地完成各种任务。本文将带你深入了解这些常用内置函数及其用法,通过简单易懂的实例,让你轻松掌握它们。 一、数据类…...

[蓝桥杯真题题目及解析]2025年C++b组

移动距离(填空)** 小明初始在二维平面的原点,他想前往坐标 (233,666)。在移动过程中,他只能采用以下两种移动方式,并且这两种移动方式可以交替、不限次数地使用: 水平向右移动,即沿着 x 轴正方…...

yolov5 train笔记4 roboflow

How to Train a YOLOv5 Model On a Custom Dataset Sign in to Roboflow https://www.youtube.com/watch?vr3Ke7ZEh2Qo 他的ai懂中文的 还是得训练,明天再搞 https://www.youtube.com/watch?vEmYCpbFQ5wo&t2s 很香但是我没有马内...

工作记录 2015-06-01

工作记录 2015-06-01 序号 工作 相关人员 1 修改了FnetFax 修改了iConverter 修改了iCDA 郝 FNSR识别引擎 统计了最近几个星期0223医院的打字和录音的时间比。上周的比值是3.42,是近8个星期中最低的值。和05/03/2015 - 05/09/2015的3.74相比,下降…...

创意Python爱心代码分享

在代码的世界里,程序员以独特方式书写浪漫。他们精心打造的一个个 demo,宛如熠熠星辰。这些 demo 不仅是技术结晶,更饱含对编程的热爱与执着。从简洁的算法示例到复杂的系统雏形,每一行代码都凝聚着思考与智慧。它们被无私分享&am…...

【RAG】向量?知识库的底层原理:向量数据库の技术鉴赏 | HNSW(导航小世界)、LSH、K-means

一、向量化表示的核心概念 1.1 特征空间与向量表示 多维特征表示:通过多个特征维度(如体型、毛发长度、鼻子长短等)描述对象,每个对象对应高维空间中的一个坐标点,来表示狗这个对象,这样可以区分出不同种…...

降维大合集

1. 主成分分析(PCA,Principal Component Analysis) 基本原理 PCA 是一种线性降维方法,其核心思想是: 找到数据中方差最大的方向(称为主成分),并将数据投影到这些方向上。 利用正交变…...

AWS上构建基于自然语言和LINDO API的线性规划与非线性规划的优化计算系统

我想要实现一个通过使用C#、Semantic Kernel库、OpenAI GPT 4的API和附件文档里提到的LINDO API 15.0实现通过中文自然语言提示词中包含LATEX代码输入到系统,通过LINDO API 15.0线性规划与非线性规划的优化计算程序输出计算结果和必要步骤的应用,结果用中…...