ACL权限、特殊位与隐藏属性的奥秘

1.2 操作步骤

# 1. 添加测试目录,用户,组,并将用户添加到组  -------------------
[root@localhost ~]# mkdir /project[root@localhost ~]# useradd zs[root@localhost ~]# useradd ls[root@localhost ~]# groupadd tgroup[root@localhost ~]# gpasswd -a zs tgroup正在将用户“zs”加入到“tgroup”组中[root@localhost ~]# gpasswd -a ls tgroup正在将用户“ls”加入到“tgroup”组中# 可以查看组是否正常建立
[root@localhost ~]# cat /etc/grouproot:x:0:bin:x:1:daemon:x:2:...
tgroup:x:1003:zs,ls✨
# 2. 修改目录的所有者和所属组    -----------------------------
[root@localhost ~]# chown root:tgroup /project[root@localhost ~]# ll -d /project
drwxr-xr-x.   2 root    tgroup    6 8月  23 13:07 project
# 3. 设定权限   ----------------------------
[root@localhost ~]# chmod 770 /project[root@localhost ~]# ll -d /projectdrwxrwx---. 2 root tgroup 6 8月  23 13:07 /project# 4. 此时需要为临时用户进行分配权限, r-x  -----------------
# 4.1 添加临时用户
[root@localhost ~]# useradd tempuser[root@localhost ~]# passwd tempuser# 4.2 为临时用户分配特定权限
[root@localhost ~]# setfacl -m u:tempuser:rx /project[root@localhost ~]# getfacl /projectgetfacl: Removing leading '/' from absolute path names# file: project# owner: root# group: tgroupuser::rwxuser:tempuser:r-x✨
group::rwxmask::rwxother::---# 4.3  查看目录权限,注意+,表示文件或目录有acl权限
[root@localhost ~]# ll -d /projectdrwxrwx---+ 2 root tgroup 6 8月  23 13:07 /project# 5.  验证acl权限 --------------------------------------
# 5.1  切换到tempuser用户
[root@localhost ~]# su tempuser[tempuser@localhost root]$ # 5.2 验证可以进入project目录
[tempuser@localhost project]$ cd /project[tempuser@localhost project]$ # 5.3 验证不能在project中创建文件
[tempuser@localhost project]$ touch test.txttouch: 无法创建"test.txt": 权限不够# 6. 控制组的ACL权限    ---------------------------------
# 6.1 创建一个temp组
[root@localhost project]# groupadd temp# 6.2 设置组的ACL
[root@localhost project]# setfacl -m g:temp:rx /project# 6.3 查看设置后ACL
[root@localhost project]# getfacl /projectgetfacl: Removing leading '/' from absolute path names# file: project# owner: root# group: tgroupuser::rwxuser:tempuser:r-xgroup::rwxgroup:temp:r-x✨
mask::rwxother::---# 6.4 创建一个用户,并将该用户设置为temp组
[root@localhost project]# useradd tempu02[root@localhost project]# passwd tempu02更改用户 tempu02 的密码 。新的 密码:# 6.5 将用户添加到temp组中
[root@localhost project]# gpasswd -a tempu02 temp正在将用户“tempu02”加入到“temp”组中# 6.6 验证  ----------------------------
[root@localhost project]# su tempu02# 可以进入目录
[tempu02@localhost project]$ cd /project[tempu02@localhost project]$ ls# 不能创建文件
[tempu02@localhost project]$ touch aa.txttouch: 无法创建"aa.txt": 权限不够

1.3 ACL中mask修改最大权限

 getfacl /project

最大权限是指: 如果给用户赋予了ACL权限,则用户所获取的权限并不是ACL时所附的权限,而是赋予的ACL权限 与 mask权限 进行 与 操作 之后的权限。例如:user:tempuser:r-x 第一位是r, mask的第一位也是r, 则与操作后,用户则有 r 的权限, user:tempuser:r-x 第二位是 - ,mask的第二位是 w,则与操作后用户则没有 w 的权限。

最大权限的作用:mask的默认值为rwx,即最大权限,任何其他的权限值和mask相“与”都会得到其自身; 可以通过调整mask的方式来控制分配给用户的最大权限,例如: mask值调整为 r-x ,则不管是否给用户分配”w”权限,用户都没有“w”的权限。mask可以用来避免权限分配不当而给系统带来的风险。

注意:mask不会影响文件所有者的权限

实例
 

setfacl -m m:rx /project

  # 所属组虽然设置的权限为rwx,但其实际的权限 r-x  ✨
group:temp:r-xmask::r-x# 修改之后的mask

1.4 ACL权限的删除

# 删除指定ACL权限

setfacl -x u:tempuser /project

setfacl -b /project 

# 注意: 权限没有 + 
[root@localhost ~]# ll -d /projectdrwxrwx---. 2 root tgroup 6 8月  23 13:07 /project

 1.5 ACL权限的递归及默认值

所谓递归是指:指定目录下的所有文件及其子目录,都具体指定的ACL权限属性

注意:ACL权限只对已有的文件或目录起作用,对新加的不起作用

ACL的默认值:如果希望新加的文件或目录都具有父目录所拥有的ACL权限属性,则需要设置默认值
 

# 设置ACL权限
[root@localhost project]# setfacl -m u:tempuser:rx /project[root@localhost project]# ll -d drwxrwx---+ 2 root tgroup 6 8月  23 13:07 .# project目录已经设置好了ACL权限,在该目录中添加一个文件,文件并不具有ACL权限,因为在设置ACL权限时并没有指定递归属性
[root@localhost project]# touch abc.txt[root@localhost project]# ll总用量 0-rw-r--r--. 1 root root 0 8月  23 17:29 abc.txt# 设置ACL权限可以递归,注意:R参数的位置在此处是固定的,这算是Linux中命令的一个特例,Linux中命令参数的位置一般是不敏感的
[root@localhost ~]# setfacl -m u:tempuser:rx -R /project
[root@localhost project]# ll /project总用量 0-rw-r-xr--+ 1 root root 0 8月  23 17:29 abc.txt# 在设置了project目录递归ACL权限属性后,再在该目录中创建一个新的文件,此时发现新的文件并没有ACL权限,这说明ACL权限只对已有的文件或目录起作用,对新加的不起作用
[root@localhost project]# touch def.txt[root@localhost project]# ll总用量 0-rw-r-xr--+ 1 root root 0 8月  23 17:29 abc.txt-rw-r--r--. 1 root root 0 8月  23 17:43 def.txt# 设置ACL默认值,默认值的参数是d,可以和-R结合使用
[root@localhost project]# setfacl -m d:u:tempuser:rx -R /project[root@localhost project]# getfacl /projectgetfacl: Removing leading '/' from absolute path names# file: project# owner: root# group: tgroupuser::rwxuser:tempuser:r-xgroup::rwxmask::rwxother::---default:user::rwxdefault:user:tempuser:r-xdefault:group::rwxdefault:mask::rwxdefault:other::---[root@localhost project]# touch www.txt[root@localhost project]# ll总用量 0-rw-r-xr--+ 1 root root 0 8月  23 17:29 abc.txt-rw-r--r--. 1 root root 0 8月  23 17:43 def.txt# 该文件在设置规则之后,默认值之前创建,两头都不管,所以没有ACL权限属性
-rw-rw----+ 1 root root 0 8月  23 17:51 www.txt[root@localhost project]# 

2. 特殊位

2.1 SUID

1.什么是suid
SUID是对二进制可执行的文件才有效, 普通文件设置之后是没有意义的
执行者对该程序有x权限
当程序具有suid时,程序执行者在执行程序期间,会暂时获得该程序所有者的身份
程序执行者所获取的属主身份,只在程序运行过程中有效
为什么需要suid

[root@localhost ~]# whereis passwdpasswd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz[root@localhost ~]# ll /usr/bin/passwd-rwsr-xr-x. 1 root root 27856 4月   1 2020 /usr/bin/passwd[root@localhost ~]#

注意:passwd的权限中在文件所有者的权限中有一个“s”,这说明:

passwd执行程序具有suid权限
在passwd执行期间会获取root权限
同时所属组和其他用户是用户r和x权限
为什么需要这么设置权限?

passwd修改的实际上是/etc/shadow的内容,但该文件只有root超级管理员才能修改,一般用户不可以
但一般用户应该可以修改自己的账户密码,这是正当的需求
在passwd执行期间,让普遍用户暂时获取root用户的权限,以便于修改shadow文件,执行完成临时赋予的权限消失,这即满足了用户可以修改自己密码的需求,也照顾到了系统安全性。
怎么设置suid?
字母方式
chmod u+s <文件名>
u代表设置的是suid
数字方式
chmod 4755 <文件名>
最前方的4表示设置的是suid,后面的755分别代码 所有者,所属组,其他人的权限
怎样移除suid
设置设置权限
chmod 755 <文件名>
字符方式
chmod u-s <文件名>

2.2 SGID

什么是SGID
相对于SUID只能设置可执行的文件,SGID可以设置可执行文件,也可以设置目录,SGID有如下特征:

如果设置的对象是文件,则只能是可执行的二进制文件,且命令的执行者需要对文件有 x 权限
命令执行过程中,组身份升级为该文件的所属组
只有在程序执行的过程中才有效
使用案例

 

# centos7默认没有安装locate,先执行安装
[root@localhost ~]# yum install mlocate
[root@localhost ~]# updatedb
[root@localhost ~]# locate inittab/etc/inittab/usr/share/vim/vim74/syntax/inittab.vim# 查看locate命令,注意权限 所属组部分的s,这个s即表示开启了SGID,在执行该
# 命令时,会在执行期间临时将组身份升级为该文件的所属组
[root@localhost ~]# ll /usr/bin/locate-rwx--s--x. 1 root slocate 40520 4月  11 2018 /usr/bin/locate# locate命令需要使用mlocate.db文件,但该文件默认情况下普通用户是没有权限读的,当用户
# 运行locate命令时,临时获取了SGID属性,组身份升级为了该文件的所属组,所以具有了对
# mlocate文件的读权限。
[root@localhost test]# ll /var/lib/mlocate/mlocate.db-rw-r-----. 1 root slocate 1123834 10月  2 15:06 /var/lib/mlocate/mlocate.db
#  ---- 为目录设置SGID的示例 -----
# 查看当前目录
[root@localhost ~]# pwd/root# 在tmp目录下创建一个目录
[root@localhost ~]# mkdir /tmp/test# 给test赋予SGID的权限,(第一2表示SGID),如果需要清除SGID则可以使用 777
# 也可以使用 chmod g+s 文件或目录名
[root@localhost ~]# chmod 2777 /tmp/test# 权限所属组部分的s,表示拥有SGID权限
[root@localhost ~]# ll -d /tmp/testdrwxrwsrwx. 2 root root 6 10月  2 14:58 /tmp/test# 切换用户
[root@localhost ~]# su lisen[lisen@localhost root]$ pwd/root# 普通用户无权在root目录下创建文件
[lisen@localhost root]$ touch abc.txttouch: 无法创建"abc.txt": 权限不够# 在home目录下创建一个文件,文件的默认的所属组为,当前用户的所属组
[lisen@localhost root]$ cd /home/lisen[lisen@localhost ~]$ touch abc.txt[lisen@localhost ~]$ ll总用量 0-rw-rw-r--. 1 lisen lisen 0 10月  2 15:01 abc.txt# 在设置了SGID的目录中,创建文件,默认的所属组变成了目录的所属组,这是SGID的作用
[lisen@localhost ~]$ cd /tmp/test[lisen@localhost test]$ touch bcd.txt[lisen@localhost test]$ ll总用量 0-rw-rw-r--. 1 lisen root 0 10月  2 15:01 bcd.txt[lisen@localhost test]$ 

2.3 SBIT粘着位权限

SBIT权限的特点:

SBIT权限只能针对目录有效
普通用户对目录拥有w和x权限,即普通用户对目录有写入权限
若没有SBIT,则普通用户可以删除目录下的所有文件,包括其他用户创建的文件;若目录有SBIT权限,则只用root用户可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,对于其他用户创建的文件则无权删除。
SBIT权限的设置只能是root用户,其他用户不可以
 

# Linux中的tmp目录是使用SBIT权限的典型目录,注意权限部分最后的t字母
[root@localhost ~]# ll -d /tmpdrwxrwxrwt. 10 root root 218 10月  2 16:05 /tmp# 创建一个新用户,并设置密码
[root@localhost ~]# useradd test[root@localhost ~]# passwd test
# 切换到lisen用户,在/tmp目录下创建文件
[lisen@localhost root]$ touch /tmp/abcd.txt# 切换到test用户,删除/tmp/目录下的abcd.txt文件,因为tmp目录具有SBIT权限,且abcd.txt
# 文件不是当前用户创建,所以无权删除。
[test@localhost root]$ cd /tmp[test@localhost tmp]$ lsabcd.txtabc.txtsystemd-private-a092fa5008e44207b2cdbcae85170c80-chronyd.service-WocDs1testvmware-root_665-3988687359[test@localhost tmp]$ rm abcd.txtrm:是否删除有写保护的普通空文件 "abcd.txt"?yrm: 无法删除"abcd.txt": 不允许的操作# ---- 设置SBIT权限 ----
[root@localhost /]# mkdir /test# 创建的目录默认的权限是755
[root@localhost /]# ll -d /testdrwxr-xr-x. 2 root root 6 10月  2 17:33 /test# 设置SBIT权限
[root@localhost /]# chmod 1755 /test[root@localhost /]# ll -d /testdrwxr-xr-t. 2 root root 6 10月  2 17:33 /test# 上面的设置test的其他用户没有写入的权限,所以SBIT权限的没有什么含义
[root@localhost ~]# chmod 1777 /test[root@localhost ~]# ll -d /testdrwxrwxrwt. 2 root root 6 10月  2 17:33 /test

3. 文件系统属性chattr权限
命令格式: chattr [+-=] [权限选项] 文件或目录, + 增加权限, -删除权限, =赋予权限

权限选项:

i 如果文件被设置i属性,则不允许文件进行删除,改名,文件内容也不允许改动; 如果目录被设置了i选项,则只能修改目录下的文件数据,但不允许建立和删除文件。需要注意的是该属性对root用户也同样有效
a 如果对文件设置了a属性,则只能在文件中增加数据,但不能修改也不能删除数据; 如果对目录设置了a属性,那么只能在目录中建立或修改文件,但不能删除
使用示例

 

# ------ 文件的chattr属性示例 ---------
# ======= 文件的i属性 =============
# 创建一个文件,先不为其设置 i 属性, 此时可以正常写入内容
[root@localhost ~]# touch abc[root@localhost ~]# ll总用量 116-rw-r--r--. 1 root root      0 10月  3 18:51 abc-rw-------. 1 root root   1396 2月   8 2021 anaconda-ks.cfg-rw-r--r--. 1 root root   2381 8月  17 14:58 index.html-rw-r--r--. 1 root root 102052 8月  17 15:02 index.html.1-rw-r--r--. 1 root root   1612 3月  19 2021 index.html.2-rw-r--r--. 1 root root   2381 8月  17 15:21 index.html.3[root@localhost ~]# echo 1234345 > abc[root@localhost ~]# cat abc1234345[root@localhost ~]# 
# 为abc文件设置i属性
[root@localhost ~]# chattr +i abc# 一般的ls命令不能显示文件的i属性,需要使用lsattr命令
[root@localhost ~]# lsattr -a abc----i----------- abc[root@localhost ~]# # 设置了abc文件的i属性后,测试修改其内容,无权修改,删除也不行
[root@localhost ~]# echo efefe >> abc-bash: abc: 权限不够[root@localhost ~]# [root@localhost ~]# rm abcrm:是否删除普通文件 "abc"?yrm: 无法删除"abc": 不允许的操作[root@localhost ~]# # ========= 目录的i属性示例 =========
[root@localhost ~]# mkdir /test[root@localhost ~]# cd /test[root@localhost test]# ll总用量 0# 没有设置chattr属性之前,可以添加文件
[root@localhost test]# touch a.txt[root@localhost test]# lsa.txt# 设置chattr属性之后,可以对原来的目录中有的文件进行修改,但不能在目录中
# 添加或删除文件(报权限不够)
[root@localhost test]# chattr +i /test[root@localhost test]# lsattr -a /test/----i----------- /test/.---------------- /test/..---------------- /test/a.txt[root@localhost test]# echo avaavv >> /test/a.txt[root@localhost test]# touch /test/b.txttouch: 无法创建"/test/b.txt": 权限不够[root@localhost test]# # ============ 文件的a属性 ===========
[root@localhost test]# touch a.txt
[root@localhost test]# chattr +a a.txt# > 将内容写入文件
[root@localhost test]# echo 123 > a.txt-bash: a.txt: 不允许的操作# >> 将内容追加到文件
[root@localhost test]# echo 12345 >> a.txt
[root@localhost test]# cat a.txt12345# ========== 目录的a属性 =========
[root@localhost /]# mkdir test02[root@localhost /]# chattr +a test02[root@localhost /]# cd /test02[root@localhost test02]# touch a.txt[root@localhost test02]# rm a.txtrm:是否删除普通空文件 "a.txt"?yrm: 无法删除"a.txt": 不允许的操作[root@localhost test02]# mv a.txt b.txtmv: 无法将"a.txt" 移动至"b.txt": 不允许的操作[root@localhost test02]# 

4. sudo
 

作用:

root把本来只能由超级用户使用的命令赋予普通用户使用
sudo的操作对象是系统命令
使用场景:

在需要将超级管理员的某些功能权限临时下方与普通用户时可以使用使用,(尚方宝剑)
修改sudo的配置(/etc/sudoers):

修改格式:
root ALL=(ALL) ALL
用户名 被管理主机IP=(可使用的身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL
组名 被管理主机IP=(可使用的身份) 授权命令 (绝对路径)
 

# 查看或修改sudo的配置,也可以直接编辑/etc/sudoers文件
[root@localhost ~]# visudo## The COMMANDS section may have other options added to it.#### Allow root to run any commands anywhereroot    ALL=(ALL)       ALL
## 增加lisen用户,可以执行服务器重启命令
lisen      ALL=/sbin/shutdown -r now## 切换到到lisen用户后可以使用上面的命令,但是需要注意两个地方:1. 和sudo一起用,2. 使用命令
## 的绝对路径

注意事项:

  • 主要不要将vim等编辑工具配置到sudo中去,如果在sudo的配置文件中配置了vim,则普通用户在运行vim中就拥有了超级用户的身份,这是很危险的,使用普通用户有权修改任何文件。
  • erp流程图

销售部门首先与客户沟通,明确商业项目细节并签订合同。随后,在ERP系统中录入销售订单,此订单将同步至计划部和技术部。

技术部基于客户提供的资料、订单数据和内部评估标准(包括工艺水平和生产力),进行工程评审,并产出生产图纸和材料清单。材料清单随后传递给计划部。

计划部综合销售订单、物料清单、现有库存清单、安全库存以及MRP计算结果,制定主生产计划(MPS)和物料需求计划(MRP)。一旦MRP物料订单生成,它将发送至采购部门。

采购部门根据采购订单进行采购,入库后,生产部门根据物控部提供的物料单领取材料并开始生产。如物料充足,生产部将依据MPS工单从物控部领取物料单,完成生产后执行出库操作。所有操作都会生成相应的出入库单据。

生产完成后,生产数据提交给销售部门,销售部门据此为客户发货,并将收入清单录入财务部门。财务部门结算采购订单应付金额,进行付款并记录相关账务。

整个流程实现了从客户需求到产品交付的闭环管理,确保了信息的顺畅流转和资源的优化配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2805153.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

亿道丨三防平板丨加固平板丨为零售业提供四大优势

随着全球经济的快速发展&#xff0c;作为传统行业的零售业也迎来了绝佳的发展机遇&#xff0c;在互联网智能化的大环境下&#xff0c;越来越多的零售企业选择三防平板电脑作为工作中的电子设备。作为一种耐用的移动选项&#xff0c;三防平板带来的不仅仅是坚固的外壳。坚固耐用…

4 buuctf解题

[CISCN 2019 初赛]Love Math1 打开题目 题目源码 <?php error_reporting(0); //听说你很喜欢数学&#xff0c;不知道你是否爱它胜过爱flag if(!isset($_GET[c])){show_source(__FILE__); }else{//例子 c20-1$content $_GET[c];if (strlen($content) > 80) {die("…

在项目中应用设计模式的实践指南

目录 ✨✨ 祝屏幕前的您天天开心&#xff0c;每天都有好运相伴。我们一起加油&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 引言 一. 单例模式&#xff08;Singleton Pattern&#xff09; 1、实现单例模式的方式 1…

回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测

回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测 目录 回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测预测效果基本描述程序设计参考资料 预测效果…

使用 yarn 的时候,遇到 Error [ERR_REQUIRE_ESM]: require() of ES Module 怎么解决?

晚上回到家&#xff0c;我打开自己的项目&#xff0c;执行&#xff1a; cd HexoPress git pull --rebase yarn install yarn dev拉取在公司 push 的代码&#xff0c;然后更新依赖&#xff0c;最后开始今晚的开发时候&#xff0c;意外发生了&#xff0c;竟然报错了&#xff0c;…

easyui 手风琴Accordion 面板的高度设置

今天接到一个新的小需求&#xff0c;如下图&#xff0c;当预算表单只有一个时&#xff0c;要求不显示预算表单这块的内容。 考虑到页面创建时用到了表单的回调和点击方法&#xff0c;所以不能单纯的移除&#xff0c;移除右侧表格的创建会报错&#xff0c;所以只能隐藏。 隐藏…

Flutter 数据持久化存储之Hive

Flutter 数据持久化存储之Hive 前言正文一、配置项目二、UI① 增加UI② 显示和删除UI 三、使用Hive① 初始化Hive② TypeAdapter自定义对象③ 注册TypeAdapter③ CURD 四、源码 前言 在Flutter中&#xff0c;有多种方式可以进行数据持久化存储。以下是一些常见的方式&#xff1…

Java核心-核心类与API(2)

话接上回&#xff0c;继续核心类与API的学习&#xff0c;这次介绍StringBuffer/StringBuilder/StringJoiner类。StringBuffer和StringBuilder是我们学习的重点&#xff0c;建议对比学习&#xff0c;做好区分。 一、StringBuffer类 1、概述 1&#xff09;问题 由于 String 类…

CLion 2023:专注于C和C++编程的智能IDE mac/win版

JetBrains CLion 2023是一款专为C和C开发者设计的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它集成了许多先进的功能&#xff0c;旨在提高开发效率和生产力。 CLion 2023软件获取 CLion 2023的智能代码编辑器提供了丰富的代码补全和提示功能&#xff0c;使您能够更…

❤ hexo主题+Gitee搭建个人博客

Hexo的基本使用 1. ​认识 官网 官网地址&#xff1a;https://hexo.io/zh-cn/ 介绍 Hexo是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown&#xff08;或其他渲染引擎&#xff09;解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。即把用…

在 Jupyter Notebook 中查看所使用的 Python 版本和 Python 解释器路径

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 我们在做 Python 开发时&#xff0c;有时在我们的服务器上可能安装了多个 Python 版本。 使用 conda info --envs 可以列出所有的 conda 环境。当在 Linux 服务器上使用 which python 命令时&#xff0…

问题慢慢解决-通过android emulator调试android kernel-内核条件断点遇到的问题和临时解决方案

起因 在摸索到这个方案之后&#xff0c;mac m1调试aarch64 android kernel最终方案&#xff0c;就准备调试内核了&#xff0c;预备下断点的地方是 b binder_poll b ep_ptable_queue_proc b remove_wait_queue但是由于是android系统&#xff0c;上面三个函数会被频繁的触发&am…

基于Redis限流(固定窗口、滑动窗口、漏桶、令牌桶)(肝货!!!)

近期redis复习的比较多&#xff0c;在限流这方面发现好像之前理解的限流算法有问题&#xff0c;索性花了一天“带薪摸鱼”时间肝了一天&#xff0c;有问题可以评论区探讨。 废话不多说&#xff0c;正片开始 目录 Maven固定窗口滑动窗口算法漏桶算法令牌桶算法 Maven 有些不用的…

85、字符串操作的优化

上一节介绍了在模型的推理优化过程中,动态内存申请会带来额外的性能损失。 Python 语言在性能上之所以没有c++高效,有一部分原因就在于Python语言将内存的动态管理过程给封装起来了,我们作为 Python 语言的使用者是看不到这个过程的。 这一点有点类似于 c++ 标准库中的一些…

海格里斯HEGERLS四向穿梭车系统如何避免同区域多车作业产生的冲突障碍?

随着高新科技的不断迅速发展&#xff0c;仓储行业也在经历着前所未有的变革。其中&#xff0c;全自动四向穿梭车立体库无疑成为了近年来引人注目的创新&#xff0c;这种新型的仓储系统&#xff0c;以其高效率、自动化智能、灵活多样的特点&#xff0c;正在颠覆我们对传统仓储的…

网页数据的存储--存储为文本文件(TXT、JSON、CSV)

用解析器解析出数据后&#xff0c;接下来就是存储数据了。数据的存储有多种多样&#xff0c;其中最简单的一种是将数据直接保存为文本文件&#xff0c;如TXT、JSON、CSV等。这里就介绍将数据直接保存为文本文件。 目录 一、Python存储数据的方法 1、 文件读取 2、 文件写入…

2023年全球软件开发大会:前沿技术揭秘与未来趋势展望

2023年全球软件开发大会&#xff08;QCon上海站2023&#xff09;在科技圈掀起了新一轮的浪潮。 作为软件开发领域的顶级盛会&#xff0c;本次大会聚焦了当下最热门的技术话题&#xff0c;吸引了全球各地的开发者、架构师、技术领袖齐聚一堂&#xff0c;共同探讨软件开发的未来…

前端学习——vue学习

文章目录 1. < el-form> 属性 model、prop、rules2. v-bind 与 v-model3. v-if 与 v-show4. v-for 循环语句5. 计算属性 computed6. 监视属性 watch7. 下拉框 el-select、el-option8. 自定义事件9. async与await实现异步调用 1. < el-form> 属性 model、prop、rule…

【开源】SpringBoot框架开发婚恋交友网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 会员管理模块2.3 新闻管理模块2.4 相亲大会管理模块2.5 留言管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 会员信息表3.2.2 新闻表3.2.3 相亲大会表3.2.4 留言表 四、系统展示五、核心代码5.…

记录 | vscode go无法跳转问题解决

go 代码不能跳转 如果是windows下开发linux的一般要用 插件 Remote-ssh,就可以尽情的访问文件和路径了. 1.go代码跳转一方面是你要把所有的 vscode go 插件要安装上, 方法是ctrlshift p,输入Go:Install/Update ,回车之后,把这些都选中安装. 2020年之后的,都会采用go mod的…