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

Linux 文件权限

优质博文:IT-BLOG-CN

一、使用者与群组的概念

【1】在Linux里面,任何一个文件都具有[User,Group及Other]三种身份的个别权限:不过需要注意的是root用户,具有所有权限。
在这里插入图片描述
User(文件拥有者):只有文件拥有者,就是你自己,才能看与修改这个文件的内容;
Group(群组的概念):群组是最有用的功能之一,就是当你在团队开发资源的时候,会进行团队内共享;
Other:剩余的都是其他人;
【2】Linux用户身份与群组记录文件:在Linux系统中,所有的账号与一般身份使用者,还有root的相关信息,都是记录在/etc/passwd这个文件内。至于个人密码则是记录在/etc/shadow文件。Linux所有的组名都记录在/etc/group内。

二、Linux 文件权限概念

注意: 当出现【Permission deny】的时候肯定是权限设定错误。

【1】通过『ls』指令查看文件,当使用的非root用户,建议切换至root用户『su -』因为后续chgrpchown等指令可能都需要使用root身份才能处理,离开则使用『exit』回到非root身份。通过『ls -al』(包含隐藏文件,文件名第一个字符为『.』的文件)得到如下信息:

[root@learnVM ~]# ls -al
总用量 248
drwxr-xr-x.   2     root   root    4096    719 21:00 .abrt
-rw-------.   1     root   root    1377    719 20:44 anaconda-ks.cfg
drwxr-xr-x.   2     root   root    4096    724 01:36 .oracle_jre_usage  <=范例说明
[   权限  ] [连结] [拥有者] [群组] [文件容量] [  修改日期  ] [   档名   ]

【2】第一栏代表这个文件的类型与权限permission
在这里插入图片描述

● 第一个字符代表这个文件是『目录、文件或链接文件等等』:
○ 当为[ d ]则是目录
○ 当为[ - ]则是文件
○ 若为[ I ]则表示为连接档Iink file
○ 当为[ b ]则表示为装置文件里面的可供存储的接口设备(可随机存取装置)
○ 当为[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
● 接下来的字符三个为一组,如上图所示。这三个权限的位置不会改变,如果没有权限就会出现减号[ - ]

【3】第五栏为这个文件的容量大小,默认单位为bytes

【4】例题:drwxr-xr-- 1 test testgroup 5238 Jun 19 10:25 groups/分析如下:
◐ 文件拥有这test[rwx]可以在本目录中进行任何工作;
◐ 而testgroup这个群组[r-x]的账号,例如test1亦可进入本目录工作,但是不能在本目录下进行写入的动作。
◐ 至于other的权限[r--],虽然有r,但是由于没有x权限,因此others的使用者,并不能进入此目录。

三、Linux文件权限的重要性

Linux系统当中,每一个文件都加了很多属性进来,尤其是群组的概念,其最大的用途就是在『数据安全性』上面。

系统保护的功能: 例如在系统中,关于系统服务的文件通常只有root才能读写或者是执行,例如/etc/shadow这一个账号管理的文件,由于该文件记录了系统中所有账号数据,当然不能让任何人读取,否则密码会被盗取。只有root才能够读取。So,该文件的权限为[----------]所有人都不能使用,root用户基本上是不受系统的权限所限制的。

团队开发软件或数据共享的功能: 例如在团队中,希望每个人都可以使用某些目录下的文件,而非团队的其他人则不予以开发,可以将权限设置为[-rwxrws---]来提供给团队使用。

未将权限设定妥当的危害: 如果目录权限未设置好,会造成其他人都可以对文件进行操作。导致一些莫名奇妙的问题。

四、如何改变文件属性与权限

我们现在知道文件权限对于一个系统的安全性,也知道文件的权限对于使用者于群组的相关性,其实一个文件的属性和权限有很多,我们先介绍几个常用于群组、拥有者、各种身份的权限之修改的指令,如下所示:
chgrp:改变文件所属群组;
chown改变文件拥有者;
chmod:改变文件的权限,SUID,SGID,SBIT等等特性;

【1】改变所属群组chgrpchange group的缩写):需要注意的是,要被改变的组名必须要走/etc/group文件中存在才行,否则就会显示错误。如下使用 root身份将a文件移至zzx(存在于/etc/group群组)群组和zzx1(不存在于/etc/group群组)群组,此时会出现如下现象:

[root@learnVM install]# chgrp [-R] dirname/filename ...
/*选项与参数:-R:进行递归(recursive)的持续变更,亦既连同次目录下的所有文件、目录都更新称为这个群组之意。
常用在变更某一目录内所有文件的时候使用。*/
//范例:
[root@learnVM install]# chgrp zzx a
[root@learnVM install]# ll
-rw-r--r--.  1 root zzx         3 1225 00:13 a
[root@learnVM install]# chgrp zzx1 a
chgrp: 无效的组:"zzx1"   //<= 发生错误讯息

【2】改变拥有者chownchange owner的缩写):需要注意的是,用户必须是存在于系统中的账号,也就是/etc/passwd这个文件中有记录的用户名称才能改变。chown也可以直接修改群组的名称。此外,如果要连目录下的所有次目录或文件同时更改拥有者的话,直接加上-R的选项即可。

[root@learnVM install]# chown [-R] 账号名称 文件或目录
[root@learnVM install]# chown [-R] 账号名称:组名 文件或目录
选项与参数
-R:进行递归(recursive)的持续变更,亦既连同次目录下的文件都变更范例:将a 的拥有者改为zzx
[root@learnVM install]# ll
-rw-r--r--.  1 root zzx         3 1225 00:13 a
[root@learnVM install]# chown zzx a
[root@learnVM install]# ll
-rw-r--r--.  1 zzx  zzx         3 1225 00:13 a范例:将a 的拥有者和群组改回root,也可以将:更换成.如果之修改群组也可以,如下:.root
[root@learnVM install]# chown root:root a
[root@learnVM install]# ll
-rw-r--r--.  1 root root        3 1225 00:13 a

【3】改变权限(chmod): 文件权限的设定方式有两种,分别是数字或者符号来进行权限的变更。
- 数字类型改变文件权限:
1)Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。其中,我们可以通过数字来代表各个权限,各个权限分数对照如下:

  r:4w:2x:1

2)每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---]分数则是:

  owner = rwx = 4+2+1 = 7group = rwx = 4+2+1 = 7other = --- = 0+0+0 = 0

3)所以等下我们设定权限的变更时,该文件的权限数据就是770了。变更权限的指令如下:

[root@learnVM install]# chomd [-R] xyz 文件或目录
/*选项与参数:xyz:就是刚刚提高的数字类型的权限属性,为rwx属性值的相加
-R:进行递归(recursive)的持续变更,亦既连同次目录下的所有文件都会变更*/
范例:将a的权限设置为[-rwxrwx---]
[root@learnVM install]# ll
-rw-r--r--.  1 root root        3 1225 00:13 a
[root@learnVM install]# chmod 770 a
[root@learnVM install]# ll
-rwxrwx---.  1 root root        3 1225 00:13 a

- 符号类型改变文件权限【了解,基本不用】
1)从上面介绍中可以发现,基本上就是九个权限分别是usergroupothers三种身份,我们可以由u,g,o来代表三种身份的权限。此外,a则代表all全部的身份,那么读取权限就可以写成r,w,x

chmodu / g / o /a+(加入) / -(除去) / =(设定)r / w / x文件或目录

2)实际操作,设置文件的权限为『-rwxr-xr-x』解读后就是:user(u):具有所有权限,groupothers(g/o):具有读/可执行权限。

[root@learnVM install]# chmod u=rwx,og=rx a
// 注意:那个u=rwx,og=rx 是连在一起的,中间没有任何空格
[root@learnVM install]# ll
-rwxr-xr-x.  1 root root        3 1225 00:13 a
// 当给所有的角色添加w权限(+的使用)
[root@learnVM install]# chmod a+w a
[root@learnVM install]# ll
-rwxrwxrwx.  1 root root        3 1225 00:13 a
// 当给所有的角色出去x权限(-的使用)
root@learnVM install]# chmod a-x a
[root@learnVM install]# ll
-rw-rw-rw-.  1 root root        3 1225 00:13 a

五、目录与文件权限意义

【1】文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件(binary program)等等。其中『x』的意义我们可以解释一下:在Windows底下一个文件是否具有执行的能力是基于『扩展名』来判断的,如:.exe,.bat,.com等等,但是Linux底下,我们的文件是否可执行,则是基于是否具有『x』这个权限来决定的! 跟文档名没有绝对的关系。
一个文件具有『w』权限时,你可以具有写入/编辑/新增/修改文件内容的权限,但不具备删除该文件本身的权限,对于文件的rwx来说,主要都是针对『文件的内容』而言,与文件的存在与否没有关系。因为文件记录的是实际的数据。

【2】文件是存放实际数据的所在,那么目录的内容主要在于记录文件名列表,文件名与目录有强烈的关联,所以如果是针对目录时,那么r,w,x对目录的意义如下:
r(read contents in directory):表示具有读取目录结构列表的权限,所以当具有读取『r』一个目录的权限时,表示可以查询该目录下的文件名数据。所以就可以利用ls指令将该目录的内容列表显示出来。
w(modify contents of directory):表示具有如下该目录列表的权限。
○ 建立新的文件与目录
○ 删除已经存在的文件与目录(不论该文件的权限为何)
○ 将已经存在的文件或目录改名
○ 搬移该目录内的文件或目录位置
x(access directory):代表用户能够进入该目录成为工作目录的用途,所谓的工作目录(work directory)就是你目前所在的目录。举例来说,当你登入Linux时,你所在的家目录就是你当下的工作目录。而变换目录的指令是『cd:change directory』

【3】根据上述分析,可以看出,对一般文件来说,rwx主要针对『文件的内容』来设计权限,对目录而言,rwx则是针对『目录内的文件名列表』来设计权限。其中最不好理解的就是目录的『x』权限,可以理解为,如果你在该目录下没有不具有『x』权限,那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的r或w的权限。所以,通常要开放的目录,至少会具备rx这两个权限。

六、Linux文件种类与扩展名

【1】文件种类: 我们在看权限的时候,第一栏那十个字符中,第一个字符为文件类型。除了常见的一般文件(-)与目录文件(d)之外,还有如下类型。
正规文件(regular file) 就是一般我们在进行存取的类型的文件,在由ls -al所显示出来的属性方面,第一个字符为[-],例如[-rwxrwxrwx]。另外,依照文件的内容,又大略可以分为:
- 纯文本档(ASCⅡ) 这是Linux系统中最多的一种文件类型,称为纯文本档是因为内容为我们人类可以直接读到的数据,例如数字、字母等等。几乎只要我们可以用来做为设定的文件都属于这一种文件类型。
- 二进制文件(binary) 我们系统其实只认识且可以执行二进制文件。Linux当中的可执行文件(scripts,文字型批处理不算),我们常用的Linux命令就是一个binary file
- 数据格式文件(data) 有些程序在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件(data file)。例如,Linux在使用者登入时,都会将登陆的数据记录在/var/log/wtmp那个文件内,该文件是一个data file,它能够通过『last』指令读出来,但是使用『cat』时,会读出乱码,因为它是一种特殊的文件格式。
目录(directory) 第一个字母为d,表示目录。
连结档(link) 就类似于Windows系统底下的快捷键,第一个字母为『l』(英文字母L的小写)
● 设备与装置文件(device):与系统周边及储存等相关的一些文件,通常都集中在/dev这个目录下,通常又分为两种:
- 区块(block)设备档: 就是一些存储数据,以提供系统随机存取的接口设备,例如,硬盘与软盘等就是区块设备档。可以随机的在硬盘的不同区块读写,可以查一下/dev/sda看看,会发现一个属性为『b』的类型。
- 字符(character)设备文件: 亦既是一些串行端口的接口设备,例如键盘、鼠标等等,这些设备的特色就是『一次性读取』的,不能够截断输出。例如,你不可能让鼠标『跳到』另一个画面,而是『连续性滑动』到另一个地方。
资料接口文件(socket) 既然被称为数据接口文件,这种类型的文件通常被用到在网络上的数据承接了。我们可以启动一个程序来监听客户端的要求,而客户端就可以透过这个socket来进行数据沟通了,第一个属性为『s』,最常在/run/tmp目录下可以看到此类文件目录。
数据传输文件(FIFO,pipe) FIFO也是一种特殊的文件类型,它主要的目的在于解决多个程序同时存取一个文件所造成的错误问题。FIFOfirst-in-first-out的缩写,第一个属性为『p』
除了设备文件是我们系统中很重要的文件,最好不要随意修改之外。另外比较有趣的文件就是连结档,可以将其视为一个文件或目录的快捷方式。至于socketFIFO文件比较难理解,因为其与程序(process)比较有关系,这个等未来了解process之后,再进行查阅,可以通过man fifoman socket来查阅系统上的说明。

【2】Linux文件扩展名: 基本上,Linux的文件是没有所谓的『扩展名』,我们也说过Linux文件能不能执行与其第一栏的十个属性有关,与文件名一点关系都没有。在Linux底下,只要你的权限当中具有x的话,例如[-rwxr-xr-x]既代表这个文件具有可以被执行的能力。

具有『可执行的权限』与『具有可执行的程序代码』是两回事,在Linux底下,可以让一个文本文件,例如之前写的text.txt具有『可执行的权限x』,但是这个文件明显不能执行,因为它不具有『可执行的程序代码』,而如果将上面『cat』命令的『x』拿掉,那么『cat』将无法被执行。同时,可被执行和可以执行成功也是不一样的,例如上面说的text.txt具有可执行的能力,但是能不能执行成功,还是要看该文件的内容。
虽然如此,我们仍然希望可以基于扩展名来了解该文件是什么东西,所以,通常我们还是会以适当的扩展名来表示该文件是什么种类。底下罗列一些常用的扩展名:
*.sh:脚本或批处理文件(scripts),因为批处理文件使用shell编写,因此为*.shell;
*Z,*.tar,*.tar.gz,*.zip,*.tgz:经过打包的压缩文件。这是因为压缩软件分别为 gunzip,tar等等的,由于不同的压缩软件,而取其相关的扩展名;
*.html,*.php:网页相关文件,分别代表HTML语法与PHP语法的网页文件,.html的文件可以使用网页浏览器直接开启,至于.php的文件,则可以通过client端的浏览器来server端浏览,运行后的网页结果;

基本上,Linux系统上的文件名真的只是让你了解文件的用途而已,真正的执行与否仍然需要权限的规范才行。

【3】Linux文件长度限制(了解):Linux底下,使用传统 Ext2/Ext3/Ext4文件系统以及CentOS 7当作预设文件系统的xfs而言,针对文件的档名长度限制为:单一文件或目录的最大容许文件名为255bytes,以一个ASC英文占一个bytes来说,则大约255个字符长度。若是以每个中文占2bytes来说,最大档名大约在128个中文字。

【4】Linux文件名的限制:由于Linux在文字接口下的一些指令操作关系,一般在设定 Linux底下的文件名时,最好可以避免一些特殊字符比较好,例如:『 * ? < > ; & [ ] | \ ' " ‘ () { } 』因为这些符号在文字接口下,是由特殊意义的。另外,文件名的开头为小数点『.』时,代表这个文件为『隐藏档』。同时,由于指令当中,常常会使用到-option之类的选项,所以最好也避免在文档的开头使用『-』『+』来命名。

相关文章:

Linux 文件权限

优质博文&#xff1a;IT-BLOG-CN 一、使用者与群组的概念 【1】在Linux里面&#xff0c;任何一个文件都具有[User,Group及Other]三种身份的个别权限&#xff1a;不过需要注意的是root用户&#xff0c;具有所有权限。 ✔ User(文件拥有者)&#xff1a;只有文件拥有者&#xf…...

IOS Swift 从入门到精通:算术运算,运算符重载,符合赋值运算,比较运算,条件,结合条件,三元运算,Swift语句,范围运算

目录 算术运算符 运算符重载 复合赋值运算符 比较运算符 条件 结合条件 三元运算符 Switch 语句 范围运算符 总结 算术运算符 现在您已经了解了 Swift 中的所有基本类型&#xff0c;我们可以开始使用运算符将它们组合在一起。运算符是那些像和 这样的小数学符号-&…...

Flutter开发环境搭建和调试

[你的Flutter文件夹路径]\flutter\bin 这样我们的Flutter SDK的环境变量就配置完毕了。接下来在命令提示符窗口中输入命令&#xff1a; flutter doctor 它可以帮助我们检查Flutter环境变量是否设置成功&#xff0c;Android SDK是否下载以及配置好环境变量等等。如果有相关的…...

【IC验证】UVM实验lab03

1. TLM端口的创建、例化与使用 创建&#xff1a; uvm_get_blocking_port #(fmt_trans) mon_bp_port; 例化&#xff1a; function new(string name "mcdf_refmod", uvm_component parent);super.new(name, parent);fmt_trans new("fmt_trans", this);…...

document.write()方法总结

document.write()方法总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;document.write()方法是JavaScript中用于向HTML文档写入内容的方法之一。它允许我们在…...

C#循环语句总结

前言 正所谓磨刀不误砍柴工&#xff0c;C#上位机软件开发能力的提升离不开对C#语法的精通&#xff0c;本文接着讲解C#语法知识中的循环语句&#xff0c;在C#程序开发中我们经常会用到各种循环语句&#xff0c;常见的有for循环、while循环&#xff0c;本文就是对C#中用到的各种…...

Spring-bean

Spring 网站&#xff1a;spring.io 两个方面&#xff1a; 简化开发&#xff1a; IoCAOP 框架整合&#xff1a; MyBatis SpringFrameWork系统架构&#xff08;上层依赖下层&#xff09; 解决问题&#xff08;代码耦合度高——模块与模块之间的依赖程度&#xff09; 目标&am…...

Linux常用命令(14)—查看文件内容(有相关截图)

写在前面&#xff1a; 最近在学习Linux命令&#xff0c;记录一下学习Linux常用命令的过程&#xff0c;方便以后复习。仅供参考&#xff0c;若有不当的地方&#xff0c;恳请指正。如果对你有帮助&#xff0c;欢迎点赞&#xff0c;关注&#xff0c;收藏&#xff0c;评论&#xf…...

【html】用html+css实现银行的账户信息表格

我们先来看一看某银行的账户信息表格 我们自己也可以实现类似的效果 效果图: 大家可以看到&#xff0c;其实效果差不多 接下来看看我们实现的代码 源码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"&…...

两种单例模式(保证线程安全)

开始前&#xff0c;球球各位读者给个三连吧&#xff0c;有错误感谢指出&#xff0c;谢谢 单例模式也叫单个实例&#xff0c;也就是这个类只有且只能有一个实例对象&#xff0c;这样一个类就叫做“单例”&#xff1b;单例模式有很多种&#xff0c;这里只介绍“饿汉模式”和“懒…...

开发 Golang 项目的 Docker 化案例

开发 Golang 项目的 Docker 化案例 在这个案例中&#xff0c;我们将展示如何使用 Docker 容器化一个简单的 Golang Web 应用。我们将创建一个基于 Go 的 Hello World 应用&#xff0c;并使用 Docker 和 Docker Compose 管理容器化环境。 1. 创建 Golang Web 应用 首先&#…...

PHP面试宝典之Laravel篇

Laravel简介 Laravel是一种优雅的PHP Web应用程序框架&#xff0c;它具有简洁、优雅的语法&#xff0c;并提供了强大的工具用于构建大型、健壮的应用程序。Laravel采用了现代PHP开发的最佳实践&#xff0c;因此深受开发者欢迎。 Laravel面试常见问题 1. 什么是Laravel中间件…...

自动驾驶仿真:Carsim转向传动比设置

文章目录 一、转向传动比概念二、设置转向传动比1、C factor概念2、Steer Kinematics概念3、传动比计算公式 三、转向传动比验证 一、转向传动比概念 转向传动比&#xff08;Steering Ratio&#xff09;表示方向盘转动角度与车轮转动角度之间的关系。公式如下&#xff1a; 转向…...

PyTorch nn.CrossEntropyLoss() 交叉熵损失函数详解和要点提醒

文章目录 前置知识nn.CrossEntropyLoss() 交叉熵损失参数数学公式带权重的公式&#xff08;weight&#xff09;标签平滑&#xff08;label_smoothing&#xff09; 要点 附录参考链接 前置知识 深度学习&#xff1a;关于损失函数的一些前置知识&#xff08;PyTorch Loss&#x…...

DW学习笔记|数学建模task2

本章主要涉及到的知识点有&#xff1a; 微分方程的解法如何用 Python 解微分方程偏微分方程及其求解方法微分方程的基本案例差分方程的求解数值计算方法元胞自动机 2.1 微分方程的理论基础 微分方程是什么&#xff1f;如果你参加过高考&#xff0c;可能在高三备考中遇到过这…...

【大数据 复习】第9章 数据仓库分析工具Hive

一、概念 1.概述 &#xff08;1&#xff09;Hive是一个构建于Hadoop顶层的数据仓库工具。 &#xff08;2&#xff09;某种程度上可以看作是用户编程接口&#xff0c;本身不存储和处理数据。 &#xff08;3&#xff09;依赖分布式文件系统HDFS存储数据。 &#xff08;4&#xf…...

ionic7 从安装 到 项目启动最后打包成 apk

报错处理 在打包的时候遇到过几个问题&#xff0c;这里记录下来两个 Visual Studio Code运行ionic build出错显示ionic : 无法加载文件 ionic 项目通过 android studio 打开报错 capacitor.settings.gradle 文件不存在 说明 由于之前使用的是 ionic 3&#xff0c;当时打包的…...

setInterval 定时任务执行时间不准验证

一般在处理定时任务的时候都使用setInterval间隔定时调用任务。 setInterval(() > {console.log("interval"); }, 2 * 1000);我们定义的是两秒执行一次&#xff0c;但是浏览器实际执行的间隔时间只多不少。这是由于浏览器执行 JS 是单线程模式&#xff0c;使用se…...

Stable Diffusion Model网站

Civitai Models | Discover Free Stable Diffusion Modelshttps://www.tjsky.net/tutorial/488https://zhuanlan.zhihu.com/p/610298913超详细的 Stable Diffusion ComfyUI 基础教程&#xff08;一&#xff09;&#xff1a;安装与常用插件 - 优设网 - 学设计上优设 (uisdc.com)…...

K8S - 实现statefulset 有状态service的灰度发布

什么是灰度发布 Canary Release 参考 理解 什么是 滚动更新&#xff0c;蓝绿部署&#xff0c;灰度发布 以及它们的区别 配置partition in updateStrategy/rollingUpdate 这次我为修改了 statefulset 的1个yaml file statefulsets/stateful-nginx-without-pvc.yaml: --- apiVe…...

Qt 技术博客:深入理解 Qt 中的 delete 和 deleteLater 与信号槽机制

在 Qt 开发中&#xff0c;内存管理和对象生命周期的处理是至关重要的一环。特别是在涉及信号和槽机制时&#xff0c;如何正确删除对象会直接影响应用程序的稳定性。本文将详细讨论在使用 Qt 的信号和槽机制时&#xff0c;delete 和 deleteLater 的工作原理&#xff0c;并给出最…...

自学鸿蒙HarmonyOS的ArkTS语言<一>基本语法

一、一个ArkTs的目录结构 二、一个页面的结构 A、装饰器 Entry 装饰器 : 标记组件为入口组件&#xff0c;一个页面由多个自定义组件组成&#xff0c;但是只能有一个组件被标记 Component : 自定义组件, 仅能装饰struct关键字声明的数据结构 State&#xff1a;组件中的状态变量…...

【OpenGauss源码学习 —— (ALTER TABLE(列存修改列类型))】

ALTER TABLE&#xff08;列存修改列类型&#xff09; ATExecAlterColumnType 函数1. 检查和处理列存储表的字符集&#xff1a;2. 处理自动递增列的数据类型检查&#xff1a;3. 处理生成列的类型转换检查&#xff1a;4. 处理生成列的数据类型转换&#xff1a; build_column_defa…...

【大数据 复习】第7章 MapReduce(重中之重)

一、概念 1.MapReduce 设计就是“计算向数据靠拢”&#xff0c;而不是“数据向计算靠拢”&#xff0c;因为移动&#xff0c;数据需要大量的网络传输开销。 2.Hadoop MapReduce是分布式并行编程模型MapReduce的开源实现。 3.特点 &#xff08;1&#xff09;非共享式&#xff0c;…...

Zookeeper:节点

文章目录 一、节点类型二、监听器及节点删除三、创建节点四、监听节点变化五、判断节点是否存在 一、节点类型 持久&#xff08;Persistent&#xff09;&#xff1a;客户端和服务器端断开连接后&#xff0c;创建的节点不删除。 持久化目录节点&#xff1a;客户端与Zookeeper断…...

生产级别的 vue

生产级别的 vue 拆分组件的标识更好的组织你的目录如何解决 props-base 设计的问题transparent component &#xff08;透明组件&#xff09;可减缓上述问题provide 和 inject vue-meta 在路由中的使用如何确保用户导航到某个路由自己都重新渲染&#xff1f;测试最佳实践如何制…...

kafka(五)spring-kafka(1)集成方法

一、集成 1、pom依赖 <!--kafka--><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId></dependency><dependency><groupId>org.springframework.kafka</groupId><artif…...

Java中的设计模式深度解析

Java中的设计模式深度解析 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在软件开发领域&#xff0c;设计模式是一种被广泛应用的经验总结和解决方案&#x…...

鸿蒙 HarmonyOS NEXT星河版APP应用开发—上篇

一、鸿蒙开发环境搭建 DevEco Studio安装 下载 访问官网&#xff1a;https://developer.huawei.com/consumer/cn/deveco-studio/选择操作系统版本后并注册登录华为账号既可下载安装包 安装 建议&#xff1a;软件和依赖安装目录不要使用中文字符软件安装包下载完成后&#xff0…...

[FreeRTOS 基础知识] 互斥访问与回环队列 概念

文章目录 为什么需要互斥访问&#xff1f;使用队列实现互斥访问休眠和唤醒机制环形缓冲区 为什么需要互斥访问&#xff1f; 在裸机中&#xff0c;假设有两个函数&#xff08;func_A, func_B&#xff09;都要修改a的值&#xff08;a&#xff09;&#xff0c;那么将a定义为全局变…...

音视频的Buffer处理

最近在做安卓下UVC的一个案子。正好之前搞过ST方案的开机广告&#xff0c;这个也是我少数最后没搞成功的项目。当时也有点客观原因&#xff0c;当时ST要退出机顶盒市场&#xff0c;所以一切的支持都停了&#xff0c;当时啃他家播放器几十万行的代码&#xff0c;而且几乎没有文档…...

【总结】攻击 AI 模型的方法

数据投毒 污染训练数据 后门攻击 通过设计隐蔽的触发器&#xff0c;使得模型在正常测试时无异常&#xff0c;而面对触发器样本时被操纵输出。后门攻击可以看作是特殊的数据投毒&#xff0c;但是也可以通过修改模型参数来实现 对抗样本 只对输入做微小的改动&#xff0c;使模型…...

Linux配置中文环境

文章目录 前言中文语言包中文输入法中文字体 前言 在Linux系统中修改为中文环境&#xff0c;通常涉及以下几个步骤&#xff1a; 中文语言包 更新源列表&#xff1a; 更新系统的软件源列表和语言环境设置&#xff0c;确保可以安装所需的语言包。 sudo apt update sudo apt ins…...

深入解析 iOS 应用启动过程:main() 函数前的四大步骤

深入解析 iOS 应用启动过程&#xff1a;main() 函数前的四大步骤 背景描述&#xff1a;使用 Objective-C 开发的 iOS 或者 MacOS 应用 在开发 iOS 应用时&#xff0c;我们通常会关注 main() 函数及其之后的执行逻辑&#xff0c;但在 main() 函数之前&#xff0c;系统已经为我们…...

textarea标签改写为富文本框编辑器KindEditor

下载 - KindEditor - 在线HTML编辑器 KindEditor的简单使用-CSDN博客 一、 Maven需要的依赖&#xff1a; 如果依赖无法下载&#xff0c;可以多添加几个私服地址&#xff1a; 在Maven框架中加入镜像私服 <mirrors><!-- mirror| Specifies a repository mirror site to…...

高通安卓12-Input子系统

1.Input输入子系统架构 Input Driver(Input设备驱动层)->Input core(输入子系统核心层)->Event handler(事件处理层)->User space(用户空间) 2.getevent获取Input事件的用法 getevent 指令用于获取android系统中 input 输入事件&#xff0c;比如获取按键上报信息、获…...

HTML 事件

HTML 事件 HTML 事件是发生在 HTML 元素上的交互瞬间,它们可以由用户的行为(如点击、按键、鼠标移动等)或浏览器自身的行为(如页面加载完成、图片加载失败等)触发。在 HTML 和 JavaScript 的交互中,事件扮演着核心角色,允许开发者创建动态和响应式的网页。 常见的 HTM…...

Mysql 官方提供的公共测试数据集 Example Databases

数据集&#xff1a;GitHub - datacharmer/test_db: A sample MySQL database with an integrated test suite, used to test your applications and database servers 下载 test_db: https://github.com/datacharmer/test_db/releases/download/v1.0.7/test_db-1.0.7.tar.gz …...

Docker 下载与安装以及配置

安装yum工具 yum install -y yum-ulits配置yum源 阿里云源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装Docker 17.03后为两个版本&#xff1a; 社区版&#xff08;Community Edition&#xff0c;缩写为 CE&#x…...

Java中的集合框架详解:List、Set、Map的使用场景

Java中的集合框架详解&#xff1a;List、Set、Map的使用场景 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java编程中&#xff0c;集合框架是一个非常重要…...

[Django学习]前端+后端两种方式处理图片流数据

方式1&#xff1a;数据库存放图片地址,图片存放在Django项目文件中 1.首先&#xff0c;我们现在models.py文件中定义模型来存放该图片数据,前端传来的数据都会存放在Django项目文件里的images文件夹下 from django.db import modelsclass Image(models.Model):title models.C…...

如何配置IOMMU或者SWIOTLB

1. 前言 这篇文章说明了如何在Linux内核中启用和配置IOMMU和SWOTLB。 当今的计算或者嵌入设备使用一种内存分区的方法进行外设的管理&#xff0c;如显卡、PCI设备或USB设备&#xff0c;都将设备映射为一段内存&#xff0c;用于设备的读写。 传统意义上的IOMMU用于内存映射&a…...

【大数据 复习】第3章 分布式文件系统HDFS(重中之重)

一、概念 1.分布式文件系统把文件分布存储到多个计算机节点上&#xff0c;通过网络实现、文件在多台主机上进行分布式存储的文件系统。&#xff08;就是你的电脑存a&#xff0c;我的电脑存pple&#xff09; 2.降低了硬件开销: 与之前使用多个处理器和专用高级硬件的并行化处理装…...

element-ui里message抖动问题

由于element默认屏蔽滚动条&#xff0c;导致取消时弹message时 侧边滚动栏突然回来后引起抖动问题 是由于打开弹窗时出现遮罩层dialog对话框 时引起了元素内容超出自身尺寸 对应的overflow样式内容为hidden&#xff0c;且新建了一个class类内容为增加17 内右边距&#xff0c;当…...

Attention系列总结-粘贴自知乎

1. 梦想做个翟老师&#xff1a;阿里&#xff1a;Behavior Sequence Transformer 解读48 赞同 7 评论文章 优点:捕捉用户行为历史序列中的顺序信息。w2v也是捕捉用户序列信息的,本质差异在于啥&#xff1f; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff0…...

swagger下载文件名中文乱码、swagger导出文件名乱码、swagger文件导出名称乱码、解决swagger中文下载乱码bug

文章目录 一、场景描述&#xff1a;swagger导出文件名称乱码二、乱码原因三、解决方法3.1、方法一、在浏览器中输入地址下载3.2、方法二、swagger升级为2.10.0及以上 四、可能遇到的问题4.1、DocumentationPluginsManager.java:152 一、场景描述&#xff1a;swagger导出文件名称…...

191.回溯算法:组合总和|||(力扣)

代码解决 class Solution { public:vector<vector<int>> result; // 存储所有符合条件的组合vector<int> res; // 当前组合// 回溯函数void backtracing(int k, int n, int index, int sum) {// 如果当前组合的长度等于k&#xff0c;且总和等于nif (res.si…...

JupyterLab使用指南(二):JupyterLab基础

第2章 JupyterLab基础 2.1 JupyterLab界面介绍 JupyterLab的用户界面非常直观和灵活。它包括文件浏览器、工作区、多标签页、命令面板和侧边栏等功能。以下是各个部分的详细介绍&#xff1a; 2.1.1 文件浏览器 文件浏览器位于界面左侧&#xff0c;用于导航和管理文件。你可…...

ubuntu18.04 + openssl + engine + pkcs11+ softhsm2 双向认证测试

安装环境 openssl 1.1.1 pkcs11-tool &#xff08;由sudo apt-get install opensc 安装&#xff09; libpksc11 &#xff08;需源码安装apt install 只有libp11, 源码安装才有 libpksc11.so -> pkcs11.so&#xff09; softhsm2 &#xff08;由sudo apt-get install softhsm…...

【C++】类和对象2.0

俺来写笔记了&#xff0c;哈哈哈&#xff0c;浅浅介绍类和对象的知识点&#xff01; 1.类的6个默认成员函数 俺们定义一个空类&#xff1a; class N {}; 似乎这个类N里面什么都没有&#xff0c;其实不是这样子的。这个空类有6个默认的成员函数 。 默认成员函数&#xff1a…...