【Linux】Linux权限管理:文件与目录的全面指南
在Linux系统中,权限管理是确保数据安全的关键。本文将为大家介绍Linux文件与目录的权限管理,帮助你理解如何设置和管理访问权限。无论你是新手还是有经验的用户,这里都将提供实用的技巧和知识,助你更好地掌握Linux环境。让我们一起开始吧!
Linux | 相关知识点 | 可以通过点击 | 以下链接进行学习 | 一起加油! |
---|---|---|---|---|
初识指令 | 指令进阶 |
文章目录
- 一、shell命令以及运行原理
- 二、Linux用户划分
- 三、Linux切换身份与指令提权
- 3.1 身份切换
- 3.2 指令提权
- 四、Linux文件访问者与文件类型
- 4.1 文件访问者
- 4.2 文件类型
- 4.2.1 Linux工具考虑类型
- 五、Linux文件权限管理
- 5.1 文件类型和访问权限
- 5.2 文件权限值表示
- 5.3 修改文件访问权限
- 5.4 root无视权限限制
- 5.5 修改文件拥有者
- 5.6 修改文件的所属组
- 5.7 文件权限约束与识别身份
- 5.8 可执行权限与可执行文件
- 六、Linux目录权限
- 6.1 失去不同权限的后果
- 6.2 恶意删除文件
- 七、查看或修改文件权限掩码
- 7.1 最终权限猜测
- 7.2 最终权限计算
- 八、粘滞位
一、shell命令以及运行原理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通,内核不提供和用户交互功能。
Shell的最简单定义:
命令行解释器(command Interpreter),通过将使用者的命令翻译给核心(kernel)处理,并且将核心的处理结果翻译给使用者。
Shell外壳程序:
是提供的一套命令解释程序,介于用户和操作系统之间的软件。通常将Shell分为两类:命令行与图形界面。其中命令行壳层提供一个命令行界面(CLI);而图形壳层提供一个图形用户界面(GUI)。
外壳程序存意义:
- 将用户的命令翻译给核心(kernel)处理;将核心(kernel)处理结果翻译给用户。
- Shlle外壳的存在,可以对请求进行合法性的检查,变相的保护OS
- 外壳程序是操作员与操作系统交互的界面,操作系统再负责完成与机器硬件的交互
辅助理解:
【用户】是张三,【外壳程序】是王婆,【操作系统】是小花。因为张三不擅长跟小花打交道,所以就需要王婆帮忙传话和得到小花回复
【如果出现不合法性请求】
- 【问题】:当用户请求出现不合法性,外壳程序受到失败的影响,怎么办呢?
- 【回答】外壳程序基本都会给我们创建一个子进程,让子进程进行执行(安排一个实习生,做外壳程序的工作–不受任何失败的影响)
【windows GUI】:我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
【shell 对于Linux】:有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
二、Linux用户划分
Linux下有两种用户:超级用户(root)、普通用户。
【超级用户】:可以再linux系统下做任何事情,不受限制
【普通用户】:在linux下做有限的事情。
【命令提示符】:其中超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
三、Linux切换身份与指令提权
3.1 身份切换
su指令
用途:身份切换
语法:su 用户名
事项:
- 从root用户切换到普通用户user,则su user
- 从普通用户切换到其他普通账号,则su user2,需要输入user2用户的密码
- 用于root账号是超级管理员,登入你账号需要啥子密码,权限永远是限制普通人的
- 从普通用户切换到root账号,则su root(可省略),需要输入root用户的密码(缺点必须得到root的密码)
- 建议普通账户和root账户的密码不要设置一样的!如果出现问题,不好解决
- 使用快捷键Ctrl+d退出账号
- 选项:切换到root用户的环境,包括该用户的所有环境变量
3.2 指令提权
sudo指令
用途:普通用户在需要执行特权操作时,如何临时提高自己的权利而无需切换到root账号
用法:sudo 指令
- 使用方面问题:sudo指令可以暂时命令提权,但是为什么是输入普通用户的密码。而不是root超级管理员的密码。
- 回答:减少切换到root用户登入时间,提高了安全性,当然sudo不是普通用户随意就可以是使用的,需要得到超级管理员的授权(列入白名单)
sudo使用前提:
sudo
命令默认情况下只能root
用户才能使用。如果需要让普通用户也能使用sudo
命令,必须在/etc/sudoers
文件中进行配置。
四、Linux文件访问者与文件类型
4.1 文件访问者
- 拥有者:文件和文件目录所有者[u–User]
- 所属组:文件和文件目录所有者所在组的用户,同一组共享资源[g–Group]
- other:其他用户[o–Others]
root和普通账号可以是上面任意一个角色。Linux具有组的概念。主要在多人协作的时候,更好的进行权限管理!
4.2 文件类型
场景引入:如何查看Windows下文件类型?看文件的后缀吗?
回答:
更改文件后缀不会损坏文件的,但是一般来说,识别的软件将会无法对其进行识别了,仅通过更改文件的后缀名并不能改变文件的实际内容或类型。
在Windows下查看文件:类型最常见办法确定是通过文件后缀,但是更改文件的后缀名并不能改变文件的实际内容或类型,也会导致识别软件将会无法对其进行识别。
总之,虽然文件后缀名给出了文件类型的线索,但它并不是文件类型的绝对定义,实际文件类型由文件内容决定。
Linux不是通过后缀去区分文件类型,这不意味着Linux不需要考虑后缀。如果需要知道Linux文件类型,可以通过ls -l指令单词命名行属性列表第一个字符
【普通文件及其目录类型】
- [-]:普通文件、文本文件、可执行文件、库等都叫做普通文件
- [d]:目录文件(蓝色的)
- [b]:块设备文件–磁盘(黄色的)
- [c] :字符设备文件–printf(“%d”,123)–显示器、键盘(Linux下一切皆文件)这些设备/显示器终端 访问文件一样访问设备 控制
- [s] :套接口文件
- [p] :管道文件(橙色的)
- [l] :链接文件(类似windows的快捷方式)–跟windows下图标直接指向可执行程序达到同样的效果
4.2.1 Linux工具考虑类型
虽然Linux不区分文件类型,但是Linux上面工具可能需要区分,比如gcc
Linux后缀虽然对于系统不存在影响,但是为了方便用户正确使用文件,推荐添加后缀,跟写注释一样。
五、Linux文件权限管理
权限是指通过一定条件拦住一部分人,给另一部分人权力来访问某种资源。权限是用来值针对没有权限那部分人
注意:由于root账号不是受到权限的约束的,这里建议使用普通账号进行学习,保护普通用户文件的一般安全性。
5.1 文件类型和访问权限
权限本质 == 人(角色)+事物属性(文件)
我们可以通过命名行旁边十个字符组成的字符串进行谈论文件类型和访问权限
字符含有划分:
- 第1位:文件类型
- 第2~10位:权限
其中第2~10位字符以三三为一组去对应三个文件访问者的三种权限:读®、写(w)、可执行(x)
5.2 文件权限值表示
- a)字符表表示方法
- b)8进制数值表示方法
字符表示法中的每一个字符所在位置所表示的结果只有两种可能,要么为真,要么为假,而真可用1表示,假可用0表示,因此我们可以将这三个字符换为三个二进制位,进而换为一个八进制位进行表示。如下:
5.3 修改文件访问权限
chmod指令
- 功能:修改文件访问权限
- 格式:chmod [参数] 权限 文件名
- 常用选项:R ->递归修改目录文件的权限
- 注意:只允许root账号和文件拥有者进行文件权限修改,所属组也不能直接修改
参数:
- +:向权限范围增加权限代号所表示的权限
- -:向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限
- 用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:全部用户
【示例演示】
【法一】:使用权限字符进行文件权限修改
- 增加全部用户的读写可执行权限: chmod a+rwx file.txt
- 取消所属组和其他用户的可执行权限:chmod g-x,o-x file.txt
【法二】:使用八进制数字代表每个角色权限
- 增加全部用户的读写可执行权限: chmod 777 file.txt
- 取消全部用户的读写可执行权限: chmod 000 file.txt
- 将可执行权限赋值给全部用户:chmod a=x file.txt
5.4 root无视权限限制
场景:现在将file.txt文件拥有者及其所属组设为普通用户,将其他用户的读写可执行权限全部取消。
将file.txt文件拥有者及其所属组设为普通用户,那么意味着root用户属于其他用户,按照上述权限设置,root作为其他用户不具备任何读写权限,但是实际上root用户不受到任何约束
可见,其他用户指的是除了root以外的其他普通用户
5.5 修改文件拥有者
chown指令
- 功能:修改文件拥有者
- 格式:chown [参数] 用户名 文件名
- 普通用户不能将文件随便给别人,一般通过sudo提权强制给别人文件
【示例演示】
- root账号下,将file.txt随便给其他用户
- 如果普通账号下,直接将file.txt给其他用户
普通用户执行该命令时,会遇到
“Operation not permitted”
的错误提示
**在Linux系统中,普通用户不能直接将文件的所有权转移给另一个普通用户。**只有超级用户(root)可以更改文件的所有权。这是因为文件的拥有权是一个系统级别的属性,只有具有特权的用户(如root)才能操作它。这是为了保护系统的安全性,避免未经授权的用户之间随意交换文件所有权,防止潜在的安全问题。
- sudo指令提权强制把文件给别人
sudo指令等于以root身份执行该程序,强制修改文件拥有者。对此普通用户想要将文件给其他用户,需要sudo指令强制给别人,而root可以直接给别人。
- 连续修改拥有者和所属组
5.6 修改文件的所属组
chgrp
- 功能:修改文件或目录的所属组
- 格式:chgrp [参数] 用户组名 文件名
- 常用选项: -R 递归修改文件或目录的所属组
- root身份直接修改文件所属组
- 以普通用户更换所属组,需要sudo提高权限
5.7 文件权限约束与识别身份
对于普通用户来说,自身要收到对应权限的约束,即便这个文件属于自己的
从中我们可以看见,虽然lyz作为文件拥有者,但是由于文件权限的限制,无法去对该文件执行任何读写操作。问题在于lyz作为所属组,有读写权限,那么为什么文件不让所属组的我进行文件操作呢?
是由于系统只对对应自己的用户身份,只识别一次。
5.8 可执行权限与可执行文件
可执行的文件 = 具有可执行权限 + 本身一个可执行文件;满足这两点就可以执行这个文件。(前面是必要条件 后面是充分条件 你硬要我也没有办法)
六、Linux目录权限
以上是围绕着文件权限进行展开,现在将进行Linux目录权限的讨论。
目录权限字的含义:
- 可读权限(r ):用户查看指定目录内的文件信息
- 可写权限(w):用户能否在指定的目录内新建、修改、删除文件
- 可执行权限(x):是否可以进入到目录当中,相当于通行证
6.1 失去不同权限的后果
- 如果缺少可执行权限,会导致无法进入目录当中。
- 如果缺少可读权限,虽然可以进入目录当中,但是无法查看信息
- 如果缺少可写权限,虽然可以进入目录当中,但是无法新建、修改、删除文件
6.2 恶意删除文件
在root家目录下,拥有可写权限就可以删除任意用户(包括root)的文件,不论这个用户是否有这个文件的写权限,都可以进行删除文件的行为。
root的文件都能删除,这样子合理吗?合理呀!你root干嘛在我目录下创建文件,既然在我目录下创建文件就会收到管理,如果root把home的权限拔掉了,那么普通用户也是进不去家目录的。对于新建目录除了目录拥有者,其他用户都没有x权限。
如果我们想在Linux下,由多个用户建立一个共享文件,来被大家共同访问。首先这个文件,不能再我们各自的家目录下创建,只能再系统的非用户目录下创建。
七、查看或修改文件权限掩码
umask指令
- 功能:查看或修改文件权限掩码
- 格式:umask
- 其中超级用户默认掩码值为0022,普通用户默认为0002。
对于Linux创建文件时,是具有默认权限。新建普通文件默认权限=0666(去掉x权限),新建目录默认权限=0777。
在实际所创建的文件和目录并不是上面的默认权限,受到权限掩码影响。对于
最终权限 == 默认权限 & (~ umask文件掩码)
从图中可以看出来,我最终创建的目录权限值为755,最终创建的普通文件权限值为664机器不同,umask默认值会不同)
7.1 最终权限猜测
最终权限是通过减法完成的,最终权限 = 默认权限 - umask存在权限,意味着凡是权限掩码中出现的权限都不会在最终权限中出现。
那么通过修改默认掩码进行进一步探索
如果按照最终权限是通过减法完成的,那么我们新创建的文件的最终权限值理应如下:
实际结果:
权限掩码umask的值更改为003,导致预计结果跟实际结果冲突,可见最终权限不是通过减法完成的
7.2 最终权限计算
首先,对默认权限掩码按位取反,接着拿按位取反后的结果与文件的默认权限进行按位与的操作 ,得到的就是最终权限。
综上,最终权限 = 默认权限 & (~umask)
八、粘滞位
在Linux中,可以存在一些目录,拥有者和所属组是root,其它人允许以other的身份在该目录下进行文件的创建,读取,删除,修改等(公共信息传递区)。如下的一个名为tmp的目录
该目录的拥有者和所属组均属于root,且other其它人的权限都是没有限制的,也就是说任何人都可以在里头读写文件。
总结:当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员root删除
二、该目录的所有者删除
三、该文件的所有者删除
以上就是本篇文章的所有内容,在此感谢大家的观看!这里是Linux笔记,希望对你在学习Linux旅途中有所帮助!
相关文章:
【Linux】Linux权限管理:文件与目录的全面指南
在Linux系统中,权限管理是确保数据安全的关键。本文将为大家介绍Linux文件与目录的权限管理,帮助你理解如何设置和管理访问权限。无论你是新手还是有经验的用户,这里都将提供实用的技巧和知识,助你更好地掌握Linux环境。让我们一起…...
并发在前端中的应用?
并发在前端中的应用主要体现在处理多个请求和优化页面加载速度方面。前端并发处理通常涉及在极短时间内发送多个数据请求,例如在页面渲染时同时请求多个数据。通过并发处理,可以显著减少页面加载时间,提升用户体验。 前端并发处理的具体…...
Spring Boot助力,一键解锁招聘全流程信息精细化管理
2系统相关技术 2.1 Java语言介绍 Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势和广阔的前景&#…...
沉浸式多用户跟踪解决方案
沉浸式多用户VR跟踪解决方案,支持使用HTC VIVE或Valve Index等消费级虚拟现实头盔在房间内执行大范围多用户跟踪。该解决方案不仅能够跟踪处于坐姿或其他静止用户的头部和控制器,还支持房间内多用户动态跟踪。 通常房间内的跟踪受限于特定的系统能力&…...
“切片赋值”创建列表批量操作“新”方法(Python)
[start:end]切片赋值,扩展了list批量增减元素的操作能力。 (笔记模板由python脚本于2024年12月06日 15:07:56创建,本篇笔记适合研python基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:…...
Linux中-vvv详细输出命令
在 Shell 脚本中,有时会看到某些命令后面加上 -vvv 或类似的选项。这个选项的作用通常与命令的 **调试模式** 或 **详细输出** 相关。不同的命令和工具对于选项的解释和处理方式不同,因此 -vvv 的具体含义取决于它所跟随的命令。 ### 一般来说ÿ…...
获取淘宝商品评论数据的API应用:市场调研|产品更新|用户数据
下面是一段我用item_review(获取商品评论数据)抓来的商品评论数据: "items": {"total_results": 375,"totalpage": 38,"page_size": 10,"page": "1","item": [{&quo…...
VRRP的知识点总结及实验
1、VRRP VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)既能够实现网关的备份,又能解决多个网关之间互相冲突的问题,从而提高网络可靠性。 2、VRRP技术概述: 通过把几台路由设备联合组成一台虚拟的“路由设备”…...
群控系统服务端开发模式-应用开发-邮件发送工具类
一、邮件发送工具类开发 1、添加框架对应的SDK composer require phpmailer/phpmailer 2、添加工具集 在根目录下extend文件夹下创建Email文件夹,在Email文件夹下添加工具集控制并命名为EmailSender.php <?php /*** 邮件发送工具* User: 龙哥三年风水* Date: …...
pytest 的简单介绍
官方文档:pytest 文档 1. pytest 概述 pytest 是一个功能强大的 Python 测试框架,旨在简化单元测试和功能测试的编写与执行。它不仅支持简单的单元测试,还能进行更复杂的测试,如数据驱动的测试、并发测试等。pytest 支持自动化发…...
【C语言】库函数常见的陷阱与缺陷(2):字符串转化函数
目录 一、atoi 函数 1.1. 功能与用法 1.2. 陷阱与缺陷 1.2.1. 输入验证不足 1.2.2. 溢出问题 1.3 安全替代 1.4. 代码示例 二、atof 函数 2.1. 功能与用法 2.2. 陷阱与缺陷 2.3. 安全使用建议 2.4. 代码示例 三、strtol 函数 3.1. 功能与用法 3.2. 陷阱与缺陷 …...
【LeetCode每日一题】LeetCode 976.三角形的最大周长
LeetCode 976.三角形的最大周长 题目描述 给定一个包含非负整数的数组 nums,其中每个元素表示一个线段的长度。你需要从中选出三个线段,组成一个三角形,使得三角形的周长最大,并返回这个最大周长。如果无法组成三角形࿰…...
在 Ubuntu 24 上安装 Redis 7.0.15 并配置允许所有 IP 访问
前提条件 一台运行 Ubuntu 24 的服务器拥有 sudo 权限的用户 步骤一:更新系统包 首先,确保系统包是最新的,以避免潜在的依赖问题。 sudo apt update sudo apt upgrade -y步骤二:安装编译 Redis 所需的依赖 Redis 需要一些编译…...
C# 中的异常处理:构建健壮和可靠的程序
C#中的异常处理(Exception Handling)。异常处理是编程中非常重要的一部分,它允许开发者优雅地处理程序运行时可能出现的错误或意外情况。通过有效的异常处理,可以使应用程序更加健壮、可靠,并提供更好的用户体验。以下…...
Prime2_解法二:openssl解密凭据
Prime2_解法二:openssl解密凭据 本博客提供的所有信息仅供学习和研究目的,旨在提高读者的网络安全意识和技术能力。请在合法合规的前提下使用本文中提供的任何技术、方法或工具。如果您选择使用本博客中的任何信息进行非法活动,您将独自承担全…...
数据结构 ——数状存储的基本概念
数据结构 ——数状存储的基本概念 一、树状存储基本概念 1、 深度(层数):计算一个节点的深度,从根节点算起(从1开始计数),到该节点所经过的节点数(包括此节点)为树的深度…...
【网盘系统】递归删除批量文件、从回收站恢复文件、彻底删除文件
为何需要用到递归? 在网盘系统中,文件的类型分为文件和文件夹两种类型。当我们想要批量删除文件时,不乏其中会包含文件夹,而想要删除这个文件夹,自然其中所包含的文件都要删除,而其中所包含的文件也有可能…...
C++ 列表初始化(initializer_list)
列表初始化(initializer_list) 列表初始化是C中的一种语法特性,引入于C11,用于更简单直观地初始化变量、对象或容器。它使用花括号 {},提供了更安全的初始化方式,避免了类型窄化转换等潜在错误。 定义 列表初始化是用花括号 {}…...
【Keil】Keil MDK 已经不再提供 ARM Compiler v5
该问题出现在 Keil MDK v5.12 之后 用必应搜索相关问题,发现早已在 ARM community 提了 How can I install Compiler Version 5 for Keil vision 5 回答给出了这个文档 Documentation - Arm Developer 文档提到了 ARM Compiler 5 的下载地址,但是得登录 …...
Knowledge Graph Studio:让知识图谱构建更简单、更智能
一、前言 上周和研究院的同事讨论 2025 年大模型产品规划时,让我产生了一些疑惑和不解,因为从大家交流的规划方向来看,更多的还是集中在Prompt提示词工程(包括提示词的管理、测试、评估、调优)这一块规划的确实挺细&a…...
【jvm】垃圾判别阶段算法
目录 1. 说明2. 引用计数算法2. 可达性分析算法3. 垃圾判别阶段的过程 1. 说明 1.JVM主要使用两种垃圾判别算法:引用计数算法和可达性分析算法。 2. 引用计数算法 1.原理:为每个对象维护一个引用计数器,每当有地方引用该对象时,…...
深入理解Linux进程管理机制
个人主页:chian-ocean 文章专栏-Linux 前言 进程是现代操作系统中一个不可或缺的概念,其主要目的在于管理资源、实现并发、提高系统效率,并确保系统的稳定性和安全性。 进程的定义 进程(Process) 是计算机操作系统中…...
OV2640摄像头模块介绍
目录 一、引言 二、模块概述 三、技术特点 四、工作原理 五、接口类型 六、应用领域 七、使用方法 八、参数设置 九、图像数据处理 十、调试和故障排除 十一、结语 一、引言 在当今的科技时代,图像采集和处理技术在众多领域发挥着至关重要的作用。其中&…...
机器人的动力学前馈控制
机器人前馈技术可加快伺服驱动器内部的误差收敛速度,进而改善机器人的动态响应特性,解决机器人在运动过程中的抖动问题,提升机器人系统的精度和效率。 对于关节型机器人而言,在理想的刚性连接下,若给定每个关节所需要的…...
Python+OpenCV系列:图像的几何变换
Python OpenCV 系列:图像的几何变换 引言 在图像处理领域,几何变换是一个非常重要的操作,它可以改变图像的位置、大小、方向或形状。在计算机视觉中,这些操作对于图像预处理、特征提取和图像增强至关重要。本文将介绍如何利用 …...
IC验证基础知识系列随笔
一、断言 and 和 和 intersect 区别 And 指的是两个序列具有相同的起始点,终点可以不同。 Intersect 指的是两个序列具有相同的起始点和终点。 Or 指的是两个序列只要满足一个就可以 Throughout 指的是满足前面要求才能执行后面的序列 二、Break;co…...
网络测速工具
1. SPEEDTEST https://www.speedtest.net/ 2. 测速网 测速网 - 专业测网速, 网速测试, 宽带提速, 游戏测速, 直播测速, 5G测速, 物联网监测,Wi-Fi 7,Wi-Fi 6,FTTR,全屋Wi-Fi - SpeedTest.cn 3. 字节比特换算 bps(bits per second) 字节和比特的换算…...
windows将文件推给Android真机/实机
记录一下 因为以前只试过从真机实机中将文件推给windows 但是从windows只简单复制粘贴的话会一直报错。 1.电脑安装adb 2.手机开启开发者模式 usb调试 3.usb连接选择文件传输 4.推送命令adb push 文件路径 /sdcard/download 步骤1和2和3不作赘述,可以搜相关配置教程…...
Scratch教学作品 | 3D飞行模拟器——体验飞行的无限乐趣! ✈️
今天为大家推荐一款令人惊叹的Scratch作品——《3D飞行模拟器》!由BamBozzle制作,这款游戏完全用Scratch构建,带你体验开放世界飞行的自由与乐趣。从起飞到降落,每一步都需要你的精准操作!更棒的是,这款游戏…...
nonolog转化为ctf的困难
nonolog转化为ctf的困难 nanolog分析的中间的总结二者之间的差别 nanolog分析的中间的总结 如果目标是转nanolog为CTF格式,最重要的应该是meta的定义的转换的问题了。 目前我是稍有气馁。 感觉这不是一个好的方向。 如果领导能给连续的时间,完全开发自定…...
Sqoop导入数据(mysql---->>hive)
目录 数据传输流程脚本报错和异常说明1. Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf2. 数据导入hive后显示NULL 数据传输流程 mysql---->>hdfs---->>hive 数据从mysql表中取出,放到hdfs上(由targ…...
vivado bd文件复制
不同工程是无法进行BD文件复制的,可以通过将被复制的BD文件添加到需要复制的BD文件的工程中,然后再工程内进行复制...
2024年深圳杯数学建模C题编译器版本的识别问题解题全过程文档及程序
2024年深圳杯数学建模 C题 编译器版本的识别问题 原题再现: 作为一种重要的工具,电子计算机自诞生以来,经历了极为快速的发展。区区百年的时间内,无论从体积、能耗、计算速度,还是应用能力等方面,电子计算…...
介绍一下希尔排序法(c基础)
hi , I am 36 适合对象c语言初学者 希尔排序(Shell Sort)是一种改进的插入排序算法,它通过将原始数据分成多个子序列来改善插入排序在处理大规模无序数组时性能较差的情况。 基本原理 希尔排序的基本思想是先将整个待排序的记录序列分割成为…...
SQL,根据数据的时间跨度进行不同粒度的统计
MSSQL 的某个视图会生成时间跨度不同的数据,当时间跨度小于 30 天时: idbranchIdtotalPricecreatedAt8512718.662022-07-03 08:49:27.7272613832.692022-07-06 09:08:06.8808919569.852022-07-07 04:13:09.2308011523.622022-07-07 04:38:29.3131512500…...
OPenCV 图片局部放大
m_image cv::imread("C:/Code/JPG/1.jpg");if (m_image.empty()) return;cv::imshow("原始图像", m_image); // TODO: 在此添加控件通知处理程序代码int width m_image.cols;int height m_image.rows;// 确定要放大的区域(这里是图像中心部分…...
【C#设计模式(19)——备忘录模式(MementoPattern)】
前言 备忘录模式:将想要备份的信息交给备忘录对象来管理。通过设置初始、备份、修改、恢复等状态展示备忘录模式的使用。 代码 //备忘录类 public class Memento {private string state;public string State { get>state;}public Memento(string state){this.st…...
使用 Nginx 在同一端口部署两个前端项目并配置子路径
在现代 Web 开发中,我们经常需要在同一台服务器上部署多个前端项目。这不仅可以节省资源,还可以简化管理。本文将指导你如何使用Nginx在同一端口上部署两个前端项目,并通过配置子路径来区分它们。 环境准备 首先,我们需要准备两…...
CISC和RISC的区别
CISC是什么 CISC是一种指令集设计方式,全程叫复杂指令集,这种指令设计模式包含大量的复杂指令和复杂的寻址方式, 以下是CISC架构的一些主要特点: 丰富的指令集:CISC处理器通常包含大量的指令,这些指令覆盖…...
学生信息管理系统(简化版)后端接口
目录 allAPI __init__.py是空文件,目的让python知道这个文件夹是个包 ClassInfo.py from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from API.database import get_db, Base from sqlalchemy import Column, String,…...
一、开启 GD32 单片机的学习之门
文章目录 一、开启GD32单片机的学习之门二、筑牢根基:GD32单片机基础知识全解析(一)单片机概述 三、开发环境搭建(一)软件下载与安装(二)安装GD32F450设备支持包(三)编译…...
计算生成报价单小程序系统开发方案
计算生成报价单小程序报价系统,是根据商品品牌、类型、型号、规格、芯数、特性、颜色、分类进行选择不同的参数进行生成报价单,要求报价单支持生成图片、pdf、excel表格。 计算生成报价单小程序系统的主要功能模块有: 1、在线生成报价单&…...
高效整合聚水潭库存数据至MySQL的实现
聚水潭数据集成到MySQL:商品库存查询案例分享 在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,将聚水潭的商品库存数据高效、可靠地集成到MySQL数据库中。具体方案为“聚水潭-商品库存查询-->BI彩度-商品库存表”࿰…...
深入理解 JVM 的栈帧结构
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
爬虫基础之HTTP基本原理
URL和URI 我们先了解一下 URI和 URL。URI的全称为 Uniform Resource ldentifer,即统一资源标志符;URL的全称为 Universal Resource Locator,即统一资源定位符。它们是什么意思呢?举例来说,https:/github.com/favicon.ico 既是一个 URI,也是…...
PyQt5:一个逗号引发的闪退血案
【日常小计】 在开发PyQt5程序时,调用了一个写入excel表格的后端方法,但是每次打开页面点击对应的动作,窗口就会闪退,而且Python后台也没有提示出任何的异常堆栈,后来经过在后端一点一点的单点测试,终于发…...
python学opencv|读取图像(五)读取灰度图像像素
【1】引言 前序学习了图像的基本读取,掌握了imread()、imshow()和imwrite()函数的基本功能和使用技巧,参考文章链接为: python学opencv|读取图像-CSDN博客 然后陆续掌握了彩色图像保存、图像放大和缩小以及对imshow()函数的大胆尝试技巧&a…...
LiDAR点云 反射强度 常见物体反射强度
1.激光点云发射的点无法全部被反射回来的原因 激光点云发射的点无法全部被反射回来的原因主要包括以下几点: 目标物表面特性:某些物体表面具有高反射率,导致激光雷达接收到的反射能量过强,从而产生噪点,影响点云数据的…...
零基础微信小程序开发——WXML 模板语法之事件绑定(保姆级教程+超详细)
🎥 作者简介: CSDN\阿里云\腾讯云\华为云开发社区优质创作者,专注分享大数据、Python、数据库、人工智能等领域的优质内容 🌸个人主页: 长风清留杨的博客 🍃形式准则: 无论成就大小,…...
qt QNetworkAccessManager详解
1、概述 QNetworkAccessManager是QtNetwork模块中的一个核心类,它允许应用程序发送网络请求并接收响应。该类是网络通信的基石,提供了一种方便的方式来处理常见的网络协议,如HTTP、HTTPS等。QNetworkAccessManager对象持有其发送的请求的通用…...