文科小白学习Linux系统之安全管理

目录

前言

一、SELinux安全上下文

1、SELinux 简介

2、基础操作命令

1. 查看SELinux状态

2. 切换工作模式

3、安全上下文(Security Context)

1. 查看上下文

2. 修改上下文

chcon命令

semanage 命令

4、SELinux布尔值(Booleans)

5、日志分析与故障排除

1. 查看SELinux日志

2.生成解决方案建议

6、常见问题与解决方案

场景1:Web服务器无法访问文件

场景2:服务无法绑定非标准端口

7、注意事项

二、Linux防火墙-Firewalld

1、 概述

2、 Linux防火墙

防火墙结构

firewalld防火墙

区域分类

区域功能

firewall-cmd命令用法

结语


前言

学习Linux系统,安全管理为重中之重,保护好系统的安全,就是保护数据的安全,今天主要是SELinux系统讲解以及Linux系统防火墙firewall的命令运用。

一、SELinux安全上下文

1、SELinux 简介

  1. 是什么? SELinux(Security-Enhanced Linux)是Linux内核的强制访问控制(MAC)安全子系统,提供更细粒度的权限控制,防止进程或用户越权操作。

  2. 核心思想

    • 最小权限原则:进程/用户只能访问其明确需要的资源。

    • 基于标签的访问控制:所有资源(文件、端口、进程)被赋予安全上下文(Security Context)。

  3. 工作模式

模式描述
Enforcing强制执行策略,拒绝非法操作并记录日志。
setenforce 0# 切换到Permissive模式
setenforce 1# 切换到Enforcing模式

Permissive仅记录违规操作,不阻止(用于调试)。
Disabled完全关闭SELinux(需重启生效)。

2、基础操作命令

1. 查看SELinux状态
getenforce# 查看当前模式
sestatus# 详细状态(模式/策略类型)
2. 切换工作模式
setenforce 0# 切换到Permissive模式
setenforce 1# 切换到Enforcing模式

注意:setenforce仅临时生效,永久修改需编辑 /etc/selinux/config 文件。

3、安全上下文(Security Context)

1. 查看上下文
ls -Z /var/www/html # 查看文件/目录的上下文
ps -Z -C httpd# 查看进程的上下文
2. 修改上下文
chcon命令
选项说明示例消息
-t, --type TYPE设置安全上下文的类型部分已将 file.txt 的类型更改为 httpd_sys_content_t
-u, --user USER设置安全上下文的用户部分已将 file.txt 的用户更改为 system_u
-r, --role ROLE设置安全上下文的角色部分已将 file.txt 的角色更改为 object_r
--reference=FILE使用指定文件的安全上下文已从 ref_file 复制上下文到 target_file
-R, --recursive递归处理文件和目录已递归更改 dir/ 及其内容的上下文
-h, --help显示帮助信息显示帮助菜单
-v, --verbose显示操作详情正在更改 file.txt 的安全上下文
--version显示版本信息chcon (GNU coreutils) 8.32

选项使用案例

设置文件类型 将 /var/www/html/index.html 的上下文类型设为 httpd_sys_content_t:

sudo chcon -t httpd_sys_content_t /var/www/html/index.html

设置用户部分 将 /etc/nginx/nginx.conf 的用户部分设为 system_u:

sudo chcon -u system_u /etc/nginx/nginx.conf

设置角色部分 将 /home/user/file.txt 的角色部分设为 object_r:

sudo chcon -r object_r /home/user/file.txt

递归操作目录 递归修改 /var/www/html/ 目录下所有文件的上下文类型:

sudo chcon -R -t httpd_sys_content_t /var/www/html/

显示帮助信息

chcon --help

显示版本信息

chcon --version

详细模式操作 启用详细输出,修改 ~/.ssh/config 的上下文类型:

sudo chcon -v -t ssh_home_t ~/.ssh/config

说明

  • 实际执行时,若未添加 -v 参数,chcon 默认不输出成功信息,仅在出错时显示错误。

  • 使用 -v 参数可查看操作详情(如上述表格中的“示例消息”)。

chcon -t httpd_sys_content_t /var/www/html/index.html # 临时修改文件类型
restorecon -v /var/www/html/index.html # 恢复默认上下文
semanage 命令
子命令/选项用途说明常用选项示例消息/操作
semanage login管理SELinux用户与Linux账户的映射关系-a (添加)、-d (删除)、-m (修改)
semanage user管理SELinux用户及其角色和权限-a、-d、-R (角色)、-L (限制)创建新SELinux用户 web_user 并分配角色 httpd_role
semanage port管理网络端口与SELinux类型的绑定关系-a、-d、-t (类型)、-p (协议)将TCP端口 8080 绑定到 http_port_t 类型
semanage interface管理网络接口与SELinux类型的绑定关系-a、-d、-t将接口 eth1 绑定到 netif_t 类型
semanage module管理SELinux策略模块(启用/禁用)-a、-d、-e (启用)、-D (禁用)启用策略模块 my_custom_module
semanage fcontext管理文件/目录的默认SELinux上下文规则-a、-d、-t、-s (范围)添加规则:/webapps(/.*)? 的上下文类型为 httpd_sys_content_t
semanage boolean管理SELinux布尔值(开关策略功能)-1 (查看)、--on、--off启用布尔值 httpd_can_network_connect
semanage dontaudit管理dontaudit规则(是否记录特定访问拒绝事件)--on、--off关闭对 sshd 的 dontaudit 规则
-h / --help显示帮助信息-显示子命令的帮助菜单
-v / --verbose显示详细操作信息-显示添加端口 8080 的详细过程
-n / --noheading输出时隐藏列标题-仅显示端口列表数据,无标题行

选项使用案例

管理端口绑定

将TCP端口 8080 标记为HTTP服务端口:

sudo semanage port -a -t http_port_t -p tcp 8080

说明:允许Apache等HTTP服务使用8080端口。

管理文件上下文规则

为自定义Web目录 /opt/webapps 设置默认上下文:

sudo semanage fcontext -a -t httpd_sys_content_t "/opt/webapps(/.*)?"
sudo restorecon -Rv /opt/webapps

说明:添加规则后需运行 restorecon 立即生效。

管理SELinux用户映射

将Linux用户 dev_user 映射到SELinux用户 user_u:

sudo semanage login -a -s user_u dev_user

说明:限制用户 dev_user 的SELinux权限。

启用布尔值

允许HTTP服务访问网络:

sudo semanage boolean --on httpd_can_network_connect

说明:无需重启服务,立即生效。

管理策略模块

禁用自定义策略模块 mymodule:

sudo semanage module -D mymodule

说明:禁用后相关规则不再生效。

查看当前端口绑定

列出所有HTTP相关端口:

semanage port -l | grep http_port_t

输出示例

http_port_t    tcp    80, 443, 8080

 删除文件上下文规则

移除对 /tmp/custom_dir 的上下文规则:

sudo semanage fcontext -d "/tmp/custom_dir(/.*)?"

注意事项

  • 权限要求:大多数操作需 sudo 或 root 权限。

  • 持久化存储:semanage 修改的规则会保存到策略库(默认路径 /etc/selinux/targeted),重启后仍有效。

  • 结合工具使用:修改文件上下文后,需运行 restorecon 或重启服务使更改生效。

4、SELinux布尔值(Booleans)

SELinux策略通过布尔值动态调整权限控制(例如允许Apache访问用户家目录)。

getsebool -a | grep httpd# 查看所有与Apache相关的布尔值
setsebool -P httpd_enable_homedirs=on # 启用布尔值(-P永久生效)

5、日志分析与故障排除

1. 查看SELinux日志
tail -f /var/log/audit/audit.log # 直接查看原始日志
ausearch -m AVC -ts recent# 使用工具过滤日志
2.生成解决方案建议
grep "avc: denied" /var/log/audit/audit.log | audit2allow -M mypolicy
semodule -i mypolicy.pp# 编译并加载自定义策略

6、常见问题与解决方案

场景1:Web服务器无法访问文件
  • 现象:Apache返回403错误,但文件权限正常。

  • 解决

    1. 检查文件上下文:ls -Z /var/www/html

    2. 修复上下文:restorecon -Rv /var/www/html

场景2:服务无法绑定非标准端口
  • 现象:Nginx无法监听8080端口。

  • 解决

semanage port -a -t http_port_t -p tcp 8080# 添加端口到SELinux策略

7、注意事项

  1. 不要随意禁用SELinux:优先使用Permissive模式调试。

  2. 谨慎使用chcon:错误修改上下文可能导致系统不稳定。

  3. 备份策略:修改策略前备份 /etc/selinux 目录。

二、Linux防火墙-Firewalld

1、 概述

按表现形式划分:

软件防火墙: 集成在系统内部,Linux系统: iptables、firewalld、ufw; windows系统下: windows defender

硬件防火墙: 华为防火墙、思科防火墙、奇安信防火墙、深信服防火墙等

按技术划分:

包过滤防火墙: 检查数据包的源IP、目的IP、源端口、目的端口、TCP的syn控制位

七层防火墙:除了上述检查外,还会检查数据内容

防火墙的作用:

阻止来自网络外部的攻击、进行流量控制

2、 Linux防火墙

防火墙结构

用户态:

iptables: 使用iptables命令对防火墙规则进行管理,必须深度理解网络技术和四表五链,对于初学者或者网络技术不达标的人员不友好

firewalld:使用firewall-cmd命令对防火墙进行管理,采用的是区域划分的形式。不需要连接底层的四表五链,对于初学者比较友好

ufw: 使用ufw命令对防火墙进行管理,命令简单易懂。

内核态:

四表: 从内核->用户的顺序: raw -> mangle -> nat -> filter

五链: input、output、forward、prerouting、postrouting

firewalld防火墙
区域分类

九大区域: block、dmz、drop、external、home、internal、public、trusted、work

区域功能

public:公共区域,默认区域

public (active)
target: default #区域类型规则
icmp-block-inversion: no
interfaces: ens33 #属于该区域的接口
sources:#来源
services: dhcpv6-client ssh #放行服务的名称
ports:#放行端口号
protocols:#放行协议
masquerade: no#NAT地址转换
forward-ports:#转发端口
source-ports:#源端口
icmp-blocks:#ICMP的阻塞类型,ping的阻塞
rich rules:#富规则

 home: 家庭区域

home
target: default
icmp-block-inversion: no
interfaces: 
sources: 
services: dhcpv6-client mdns samba-client ssh
ports: 
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules:

 work: 工作区域

work
target: default
icmp-block-inversion: no
interfaces: 
sources: 
services: dhcpv6-client ssh
ports: 
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules: 

 trusted: 完全信任区域

trusted
target: ACCEPT#不采用默认规则,放行一切
icmp-block-inversion: no
interfaces: 
sources: 
services: 
ports: 
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules: 

 internal: 内部区域 (连接内部网络)

internal
target: default
icmp-block-inversion: no
interfaces: 
sources: 
services: dhcpv6-client mdns samba-client ssh
ports: 
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules: 

 external: 外部区域 (连接外部网络,例如: internet网络)

ternal
target: default
icmp-block-inversion: no
interfaces: 
sources: 
services: ssh
ports: 
protocols: 
masquerade: yes#默认进行NAT地址转换
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules: 

 dmz: 非军事化管理区域(内部的服务器放于该区域)

dmz
target: default
icmp-block-inversion: no
interfaces: 
sources: 
services: ssh
ports: 
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules:

 drop: 丢弃区域(丢弃一切流量,不给出任何回应)

drop
target: DROP
icmp-block-inversion: no
interfaces: 
sources: 
services: 
ports: 
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules:

 block: 阻塞区域 (拒绝任何流量,但给出回应)

block
target: %%REJECT%%
icmp-block-inversion: no
interfaces: 
sources: 
services: 
ports: 
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules:
firewall-cmd命令用法

关键字:

--list-*
--get-*
--set-*
--add-*
--remove-*
--change-*
--zone=

命令分类:

查看:

#查看所有区域的详细信息
[root@arthur ~]# firewall-cmd --list-all-zones 
#查看指定区域的详细信息
[root@arthur ~]# firewall-cmd --list-all --zone=public 
#查看指定区域的放行服务
[root@arthur ~]# firewall-cmd --list-services --zone=public 
#查看指定区域的放行端口
[root@arthur ~]# firewall-cmd --list-ports --zone=public 
#查看指定区域包含的网络接口
[root@arthur ~]# firewall-cmd --list-interfaces --zone=public 
#查看指定区域的放心协议
[root@arthur ~]# firewall-cmd --list-protocols --zone=public
#查看指定区域的ICMP阻塞类型
[root@arthur ~]# firewall-cmd --list-icmp-blocks --zone=public
#查看指定区域的放行源地址
[root@arthur ~]# firewall-cmd --list-sources --zone=public
#查看指定区域的源端口
[root@arthur ~]# firewall-cmd --list-source-ports --zone=public
#查看指定区域的富规则
[root@arthur ~]# firewall-cmd --list-rich-rules --zone=public 
#查看指定区域的转发端口
[root@arthur ~]# firewall-cmd --list-forward-ports --zone=public 
#查看firewalld支持的服务类型
[root@arthur ~]# firewall-cmd --get-services
#查看firewalld的默认区域
[root@arthur ~]# firewall-cmd--get-default-zone
#查看firewalld支持的ICMP的阻塞类型
[root@arthur ~]# firewall-cmd--get-icmptypes 
#查看firewalld所有的活动区域
[root@arthur ~]# firewall-cmd --get-active-zones
#查看指定网络接口所属区域
[root@arthur ~]# firewall-cmd --get-zone-of-interface=ens33
#查看所有区域名称
[root@arthur ~]# firewall-cmd --get-zones

 添加:

#添加指定服务到指定区域
[root@arthur ~]# firewall-cmd --add-service=http --zone=public 
success
#添加端口到指定区域
[root@arthur ~]# firewall-cmd --add-port=80/tcp --zone=public 
success
#添加指定协议到指定区域
[root@arthur ~]# firewall-cmd --add-protocol=ah --zone=public 
success
#添加ICMP阻塞类型到指定区域
[root@arthur ~]# firewall-cmd --add-icmp-block=echo-request --zone=public 
success
#windows端验证
C:\Users\zzh>ping 192.168.115.129正在 Ping 192.168.115.129 具有 32 字节的数据:
来自 192.168.115.129 的回复: 无法访问目标主机。
来自 192.168.115.129 的回复: 无法访问目标主机。
来自 192.168.115.129 的回复: 无法访问目标主机。
#添加指定网络接口到指定区域
[root@arthur ~]# firewall-cmd --add-interface=ens33 --zone=work 
success
#添加指定区域的放行源地址
[root@arthur ~]# firewall-cmd --add-source=192.168.1.0/24 --zone=work 
success
#添加指定区域的放行源端口
[root@arthur ~]# firewall-cmd --add-source-port=999/tcp --zone=work 
success
#添加转发端口到指定区域
[root@arthur ~]# firewall-cmd --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.115.115 --zone=work 
success
#添加地址转换功能到指定区域
[root@arthur ~]# firewall-cmd --add-masquerade --zone=work 
success
#验证添加
[root@arthur ~]# firewall-cmd --list-all --zone=public 

 修改:

#修改默认区域
[root@arthur ~]# firewall-cmd --set-default-zone=work
success
#修改网络接口所属区域
[root@arthur ~]# firewall-cmd --change-interface=ens33 --zone=internal 
success
[root@arthur ~]# firewall-cmd --change-zone=ens33 --zone=external 
success
#追加指定区域的放行源地址
[root@arthur ~]# firewall-cmd --change-source=192.168.2.0/24 --zone=work 
success

 删除:

#删除指定服务到指定区域
[root@arthur ~]# firewall-cmd --remove-service=http --zone=public 
success
#删除端口到指定区域
[root@arthur ~]# firewall-cmd --remove-port=80/tcp --zone=public 
success
#删除指定协议到指定区域
[root@arthur ~]# firewall-cmd --remove-protocol=ah --zone=public 
success
#删除ICMP阻塞类型到指定区域
[root@arthur ~]# firewall-cmd --remove-icmp-block=echo-request --zone=public 
success
#删除指定网络接口到指定区域
[root@arthur ~]# firewall-cmd --remove-interface=ens33 --zone=work 
success
#删除指定区域的放行源地址
[root@arthur ~]# firewall-cmd --remove-source=192.168.1.0/24 --zone=work 
success
#删除指定区域的放行源端口
[root@arthur ~]# firewall-cmd --remove-source-port=999/tcp --zone=work 
success
#删除转发端口到指定区域
[root@arthur ~]# firewall-cmd --remove-forward-port=port=8080:proto=tcp:toport=80:toremover=192.168.115.115 --zone=work 
success
#删除地址转换功能到指定区域
[root@arthur ~]# firewall-cmd --remove-masquerade --zone=work 
success
#验证删除
[root@arthur ~]# firewall-cmd --list-all --zone=public 

 保存规则:

#逐行规则保存
[root@arthur ~]# firewall-cmd --remove-masquerade --zone=work --permanent
#一次性保存所有规则
[root@arthur zones]# firewall-cmd --runtime-to-permanent
success
#保存的规则存储路径
/etc/firewalld/zones

结语

今天的主要试验是关于防火墙的练习,需要在练习中对防火墙的相关命令进行熟练掌握。 

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

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    企业内训系统源码开发详解:直播+录播+考试的混合式学习平台搭建

    在企业数字化转型的大潮中,员工培训早已不再是传统教室中的一场场“走过场”,而是通过技术驱动的“系统化能力提升”。尤其在知识更新换代加速、竞争压力日益激烈的背景下,企业越来越倾向于建设自主可控、功能灵活、支持多种学习形态的内训平…

    智能化报销与精细化管理:购物小票识别系统全面提升企业运营效率

    在现代企业管理中,购物小票的处理一直是财务和运营管理中的一项挑战。尤其在企业费用报销、会员管理、库存监控等环节,手动整理与核对小票不仅耗时费力,还容易产生错误。随着人工智能技术的发展,企业亟需一种高效、智能的解决方案…

    毫秒级数据采集的极致优化:如何用C#实现高性能、无冗余的实时文件写入?

    在工业控制、通信系统或高频交易领域,毫秒级数据采集的精度直接决定系统性能。但一个棘手问题常被忽视:如何处理同一毫秒内的重复数据? 若简单写入所有数据,会导致文件臃肿、分析效率骤降;若处理不当,又可能…

    NLua性能对比:C#注册函数 vs 纯Lua实现

    引言 在NLua开发中,我们常面临一个重要选择:将C#函数注册到Lua环境调用,还是直接在Lua中实现逻辑? 直觉告诉我们,C#作为编译型语言性能更高,但跨语言调用的开销是否会影响整体性能?本文通过基准…

    go并发与锁之sync.Mutex入门

    sync.Mutex 原理:一个共享的变量,哪个线程握到了,哪个线程可以执行代码 功能:一个性能不错的悲观锁,使用方式和Java的ReentrantLock很像,就是手动Lock,手动UnLock。 使用例子: v…

    【HarmonyOS5】DevEco Studio 使用指南:代码阅读与编辑功能详解

    ⭐本期内容:【HarmonyOS5】DevEco Studio 使用指南:代码阅读与编辑功能详解 🏆系列专栏:鸿蒙HarmonyOS:探索未来智能生态新纪元 文章目录 前言代码阅读代码导航功能代码折叠语法高亮跨语言跳转代码查找 快速查阅API接口…

    【Python 深度学习】1D~3D iou计算

    一维iou 二维 import numpy as npdef iou_1d(set_a, set_b):# 获得集合A和B的边界 x1, x2 set_ay1, y2 set_b# 计算交集的上下界low max(x1,y1)high - min(x2, y2)# 计算交集if high - low < 0:inter 0else:inter high - low# 计算并集union (x2 -x1) (y2 - y1) - in…

    SpringBoot Controller接收参数方式, @RequestMapping

    一. 通过原始的HttpServletRequest对象获取请求参数 二. 通过Spring提供的RequestParam注解&#xff0c;将请求参数绑定给方法参数 三. 如果请求参数名与形参变量名相同&#xff0c;直接定义方法形参即可接收。(省略RequestParam) 四. JSON格式的请求参数(POST、PUT) 主要在PO…

    智能防护实战:从攻击成本看企业安全降本增效

    1. 网络攻击的低成本与高回报陷阱 暗网中&#xff0c;一次完整的网络钓鱼攻击仅需30美元/月起步&#xff0c;而勒索软件攻击成本平均1000美元&#xff0c;却能导致企业损失高达445万美元&#xff08;IBM 2023年数据&#xff09;。例如&#xff0c;信用卡信息每条仅售10美元&am…

    大语言模型 20 - MCP 在客户端中使用 Cursor Cline 中配置 MCP 服务

    MCP 基本介绍 官方地址&#xff1a; https://modelcontextprotocol.io/introduction “MCP 是一种开放协议&#xff0c;旨在标准化应用程序向大型语言模型&#xff08;LLM&#xff09;提供上下文的方式。可以把 MCP 想象成 AI 应用程序的 USB-C 接口。就像 USB-C 提供了一种…

    MySQL 在 CentOS 7 环境下的安装教程

    &#x1f31f; 各位看官好&#xff0c;我是maomi_9526&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习Mysql的相关知识。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享给更…

    WPF的基础设施:XAML基础语法

    XAML基础语法 1 控件声明与属性设置1.1 特性语法&#xff08;Attribute Syntax&#xff09;1.2 属性元素语法&#xff08;Property Element Syntax&#xff09;1.3 特殊值标记扩展 2 x:Name与Name的区别3 注释与代码折叠4 实用技巧集合5 常见错误排查 XAML( Extensible Applic…

    机器学习笔记【Week3】

    一、逻辑回归&#xff08;Logistic Regression&#xff09; 与线性回归的区别&#xff1a; 问题类型输出类型举例回归问题连续实数房价预测、气温预测分类问题离散类别&#xff08;0 或 1&#xff09;是否患病、是否点击广告、是否合格 我们希望构建一个模型&#xff0c;根据…

    6.4.2_3最短路径问题_Floyd算法

    Floyd弗洛伊德 膜拜大佬&#xff0c;给大佬鞠躬鞠躬鞠躬。。。。。。。。。 Floyd算法 ----解决顶点间的最短路径&#xff1a; 过程&#xff1a; 如下&#xff1a; 初始化(没有中转点)&#xff1a;2个邻接矩阵A和path&#xff0c;第一个是没有中转点的2个顶点之间的最短路径…

    uniapp|实现多端图片上传、拍照上传自定义插入水印内容及拖拽自定义水印位置,实现水印相机、图片下载保存等功能

    本文以基础视角,详细讲解如何在uni-app中实现图片上传→水印动态编辑→图片下载的全流程功能。 目录 引言应用场景分析(社交媒体、内容保护、企业素材管理等)uniapp跨平台开发优势核心功能实现​图片上传模块多来源支持:相册选择(`uni.chooseImage`)与拍照(`sourceType:…

    2021年认证杯SPSSPRO杯数学建模B题(第二阶段)依巴谷星表中的毕星团求解全过程文档及程序

    2021年认证杯SPSSPRO杯数学建模 B题 依巴谷星表中的毕星团 原题再现&#xff1a; 依巴谷卫星&#xff08;High Precision Parallax Collecting Satellite&#xff0c;缩写为 Hip-parcos&#xff09;&#xff0c;全称为“依巴谷高精度视差测量卫星”&#xff0c;是欧洲空间局发…

    行为型:解释器模式

    目录 1、核心思想 2、实现方式 2.1 模式结构 2.2 实现案例 3、优缺点分析 4、适用场景 5、注意事项 1、核心思想 目的&#xff1a;针对某种语言并基于其语法特征创建一系列的表达式类&#xff08;包括终极表达式与非终极表达式&#xff09;​&#xff0c;利用树结构模式…

    Redis分布式缓存核心架构全解析:持久化、高可用与分片实战

    一、持久化机制&#xff1a;数据安全双引擎 1.1 RDB与AOF的架构设计 Redis通过RDB&#xff08;快照持久化&#xff09;和AOF&#xff08;日志持久化&#xff09;两大机制实现数据持久化。 • RDB架构&#xff1a;采用COW&#xff08;写时复制&#xff09;技术&#xff0c;主进程…

    换脸视频FaceFusion3.1.0-附整合包

    2025版最强换脸软件FaceFusion来了&#xff08;附整合包&#xff09;超变态的换脸教程 2025版最强换脸软件FaceFusion来了&#xff08;附整合包&#xff09;超变态的换脸教程 整合包地址&#xff1a; 「Facefusion_V3.1.0」 链接&#xff1a;https://pan.quark.cn/s/f71601a920…

    论文阅读笔记——Step1X-Edit: A Practical Framework for General Image Editing

    Step1X-Edit 论文 当前图像编辑数据集规模小&#xff0c;质量差&#xff0c;由此构建了如下数据构造管线。 高质量三元组数据&#xff08;源图像、编辑指令、目标图像&#xff09;。 主体添加与移除&#xff1a;使用 Florence-2 对专有数据集标注&#xff0c;然后使用 SAM2 进…