目录

1. 工作原理​

2. 核心架构(四表五链)

2.1 四张表(优先级从高到低)

2.2 五条内置链(数据包流向)

3. Iptables规则

3.1 规则的匹配条件与目标动作

常见匹配条件(用于筛选数据包)

常见目标动作(满足条件后对数据包的处理)

3.2 规则的匹配顺序与默认策略

4. 操作命令

5. 工作流程

6. 常见案例

6.1 基础防火墙配置(只允许必要服务)

6.2 端口转发(将外部 80 端口转发到内部服务器 192.168.8.8:8080)

6.3 共享上网(局域网通过网关访问公网,网关公网 IP 为 88.88.88.88)

6.4 删除指定表指定链的规则

6.5 日志记录

6.6 防暴力破解(限制 SSH 连接频率)

6.7 禁止特定 IP / 网段访问

6.8 只允许特定 IP 访问敏感端口

6.9 单向通信控制(如禁止外部 ping 本机,但本机可 ping 外部)

6.10 保存与恢复规则

6.11 清空与重置规则

7. 高级应用案例

7.1 精细化流量控制与状态管理

场景:企业内网多区域隔离与访问控制

7.2 带宽限制与流量整形(结合 tc)

场景:限制非核心业务(如下载)的带宽,保障核心服务(如数据库)

7.3 高级 NAT 应用(端口复用、双向 NAT)

1. 端口复用(一个公网端口映射到内网多个服务)

2. 双向 NAT(内外网 IP 双向转换)

7.4 透明代理与流量劫持

场景:强制内网所有 HTTP 流量经过代理服务器(10.0.0.10:3128)

7.5 入侵检测与自动防御(结合脚本)

场景:自动封禁 10 分钟内 SSH 失败超过 5 次的 IP

7.6 特定协议的深度过滤(如 FTP、DNS)

场景:允许 FTP 服务(支持主动 / 被动模式)

7.7 容器与虚拟化环境的网络隔离

场景:限制 Docker 容器只能访问特定外网 IP

7.8 高可用集群中的规则同步


1. 工作原理​

        iptables 是 Linux 系统中一款经典的防火墙管理工具,它通过操作内核中的 Netfilter 框架(Linux 内核的数据包处理引擎),实现对网络数据包的过滤、转发、地址转换等功能。简单来说,Netfilter 是内核中负责 “干活” 的组件,而 iptables 是用户空间中用于 “指挥” Netfilter 的工具。

2. 核心架构(四表五链

2.1 四张表(优先级从高到低)

表名功能描述典型应用场景
raw连接跟踪(conntrack)前的预处理禁用连接追踪(NOTRACK
mangle修改数据包(TTL、TOS、MARK等)流量标记(QoS)、拆包重组
nat网络地址转换(SNAT/DNAT)端口转发、IP 伪装(MASQUERADE)
filter包过滤(允许/拒绝/丢弃)防火墙规则

2.2 五条内置链(数据包流向)

链名触发时机
PREROUTING数据包进入网卡后、路由决策前(raw → mangle → nat
INPUT路由决策后,目标是本机的数据包(mangle → filter
FORWARD路由决策后,目标非本机的数据包(mangle → filter
OUTPUT本机进程发出的数据包(raw → mangle → nat → filter
POSTROUTING数据包离开网卡前(mangle → nat

3. Iptables规则

对数据包的具体处理逻辑,规则是链中的 “指令”,每条规则由匹配条件目标动作两部分组成:

  • 匹配条件:定义数据包的特征(如源 IP、目的端口、协议等)。
  • 目标动作:满足条件时对数据包的处理方式(如允许、拒绝、修改地址等)。

3.1 规则的匹配条件与目标动作

常见匹配条件(用于筛选数据包)
  • 基本匹配条件(无需额外模块,直接使用):

    • -s 源IP:指定数据包的源 IP(如 -s 192.168.1.100)。
    • -d 目标IP:指定数据包的目标 IP(如 -d 8.8.8.8)。
    • -p 协议:指定协议(如 -p tcp-p udp-p icmp)。
    • --sport 源端口:指定源端口(仅用于 TCP/UDP,如 --sport 80)。
    • --dport 目标端口:指定目标端口(如 --dport 22,表示 SSH 端口)。
    • -i 入站网卡:数据包进入的网卡(如 -i eth0)。
    • -o 出站网卡:数据包离开的网卡(如 -o eth1)。
  • 扩展匹配条件(需加载扩展模块,用 -m 模块名 指定):

    • 多端口匹配(-m multiport):如 --dports 80,443(匹配 80 或 443 端口)。
    • IP 范围匹配(-m iprange):如 --src-range 192.168.1.1-192.168.1.10(源 IP 在该范围)。
    • 状态匹配(-m state):如 --state NEW,ESTABLISHED(匹配新连接或已建立的连接)。
常见目标动作(满足条件后对数据包的处理)
  • ACCEPT:允许数据包通过,继续后续流程。
  • DROP:直接丢弃数据包,不返回任何响应(对方会等待超时)。
  • REJECT:拒绝数据包,并返回 “拒绝” 响应(如 ICMP 不可达),对方能立即知道被拒绝。
  • SNAT:修改数据包的源 IP(源地址转换),常用于局域网共享上网(如 --to-source 公网IP)。
  • DNAT:修改数据包的目的 IP 或端口(目的地址转换),常用于端口转发(如 --to-destination 192.168.1.2:8080)。
  • MASQUERADE:动态 SNAT(适用于公网 IP 不固定的场景,如 ADSL 拨号,无需指定具体 IP)。
  • LOG:将数据包信息记录到系统日志(/var/log/messages),不影响数据包处理(需配合其他动作使用)。

3.2 规则的匹配顺序与默认策略

  • 匹配顺序:链中的规则按 “从上到下” 依次匹配,一旦匹配成功,立即执行对应动作,不再检查后续规则。因此,规则的顺序至关重要(如 “允许 SSH” 需放在 “拒绝所有” 之前)。
  • 默认策略:当数据包不匹配链中任何规则时,执行的默认动作(用 -P 设置)。例如:iptables -t filter -P INPUT DROP(filter 表 INPUT 链默认拒绝所有未匹配的数据包)。

4. 操作命令

操作目的命令示例
查看规则(默认 filter 表)iptables -L(详细信息加 -v,显示编号加 --line-numbers
查看指定表的规则iptables -t nat -L(查看 nat 表规则)
添加规则(末尾)iptables -A INPUT -p tcp --dport 22 -j ACCEPT(允许 SSH 入站)
插入规则(指定位置)iptables -I INPUT 1 -p icmp -j ACCEPT(在 INPUT 链第 1 位允许 ping)
删除规则(按编号)iptables -D INPUT 2(删除 INPUT 链第 2 条规则)
清空所有规则iptables -F(清空当前表,指定表加 -t 表名
设置默认策略iptables -P OUTPUT ACCEPT(OUTPUT 链默认允许)
保存规则(CentOS)service iptables save(保存到 /etc/sysconfig/iptables
恢复规则(Ubuntu)iptables-restore < /etc/iptables.rules(从文件恢复)

5. 工作流程

  1. 规则匹配顺序

    • 按表优先级:raw → mangle → nat → filter

    • 按链内顺序:从上到下逐条匹配,命中即执行动作(ACCEPT/DROP/REJECT等)

  2. 默认策略:链末尾的 POLICY(如 INPUT DROP

6. 常见案例

6.1 基础防火墙配置(只允许必要服务)

# 设置默认策略(INPUT/Forward 拒绝,OUTPUT 允许)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT# 允许已建立的连接(避免影响现有通信)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# 允许本地回环(避免影响本机服务通信)
iptables -A INPUT -i lo -j ACCEPT# 允许 SSH 连接(端口 22,限制来源 IP 更安全)
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT  # 仅允许内网 SSH
# 若需公网访问,替换为:iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 允许 HTTP/HTTPS 服务(Web 服务器)
iptables -A INPUT -p tcp --dports 80,443 -j ACCEPT# 允许 ICMP 协议(允许 ping 本机)
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

6.2 端口转发(将外部 80 端口转发到内部服务器 192.168.8.8:8080)

# 开启内核转发(临时生效,重启失效)
echo 1 > /proc/sys/net/ipv4/ip_forward# 在 nat 表 PREROUTING 链设置 DNAT(修改目的地址)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.8.8:8080# 允许转发流量(filter 表 FORWARD 链)
iptables -A FORWARD -p tcp -d 192.168.8.8 --dport 8080 -j ACCEPT

6.3 共享上网(局域网通过网关访问公网,网关公网 IP 为 88.88.88.88)

# 开启内核转发
echo 1 > /proc/sys/net/ipv4/ip_forward# 在 nat 表 POSTROUTING 链设置 SNAT(修改源地址为网关公网 IP)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 88.88.88.88
# 若公网 IP 不固定(如拨号),用 MASQUERADE 替代 SNAT:
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

6.4 删除指定表指定链的规则

[root@lmzf ~]# iptables -t  raw  -L  Bitdefender-80-out   --line-numbers
# Warning: iptables-legacy tables present, use iptables-legacy to see them
Chain Bitdefender-80-out (0 references)
num  target     prot opt source               destination
1    NFQUEUE    tcp  --  anywhere             anywhere             tcp dpt:http flags:FIN,SYN,RST,ACK/SYN ! owner GID match bitdefender NFQUEUE num 0
[root@lmzf ~]# iptables -t raw  -D   Bitdefender-80-out   1
[root@lmzf ~]# iptables -t  raw  -L  Bitdefender-80-out   --line-numbers
# Warning: iptables-legacy tables present, use iptables-legacy to see them

6.5 日志记录

为了监控和调试目的,你可能希望记录某些类型的流量。可以使用 LOG 目标来记录匹配的数据包。例如,记录所有尝试ping本机的行为:

iptables -A INPUT -p icmp --icmp-type echo-request -j LOG --log-prefix "ICMP packet: "

监控特定流量

# 记录所有访问 22 端口的流量(日志存于 /var/log/messages)
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH_ACCESS: " --log-level info# 记录被拒绝的数据包(便于排查攻击)
iptables -A INPUT -j LOG --log-prefix "DROPPED_PACKET: " --log-level warning

6.6 防暴力破解(限制 SSH 连接频率)

# 限制每分钟最多 10 次 SSH 连接,突发不超过 3 次
iptables -A INPUT -p tcp --dport 22 -m limit --limit 10/min --limit-burst 3 -j ACCEPT
# 超过限制的连接直接丢弃
iptables -A INPUT -p tcp --dport 22 -j DROP

6.7 禁止特定 IP / 网段访问

# 禁止单个 IP(10.0.0.5)访问本机
iptables -A INPUT -s 10.0.0.5 -j DROP# 禁止整个网段(192.168.2.0/24)访问本机 80 端口
iptables -A INPUT -s 192.168.2.0/24 -p tcp --dport 80 -j DROP

6.8 只允许特定 IP 访问敏感端口

# 仅允许管理员 IP(10.0.0.100)访问 MySQL 端口(3306)
iptables -A INPUT -s 10.0.0.100 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP  # 拒绝其他所有 IP

6.9 单向通信控制(如禁止外部 ping 本机,但本机可 ping 外部)

# 禁止外部 ping 本机(拒绝 ICMP 请求)
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP# 允许本机 ping 外部(不限制 ICMP 响应)
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT  # 允许响应包进入

6.10 保存与恢复规则

# 保存规则(CentOS)
service iptables save  # 保存到 /etc/sysconfig/iptables# 保存规则(通用方式)
iptables-save > /etc/iptables.rules# 恢复规则
iptables-restore < /etc/iptables.rules

6.11 清空与重置规则

# 清空所有规则(默认表)
iptables -F# 清空指定表的规则(如 nat 表)
iptables -t nat -F# 重置链的默认策略(如 INPUT 链恢复为 ACCEPT)
iptables -P INPUT ACCEPT

7. 高级应用案例

7.1 精细化流量控制与状态管理

基于连接状态(state 模块)和更细粒度的匹配条件,实现复杂业务逻辑的流量管控,适用于多服务、多网段的复杂网络环境。

场景:企业内网多区域隔离与访问控制

例如,将内网划分为 “办公区”“服务器区”“DMZ 区”,通过 iptables 实现:

  • 仅允许办公区访问服务器区的特定服务(如 MySQL 3306 端口),且需验证源 IP 和连接状态;
  • 禁止服务器区主动访问办公区,但允许办公区发起的 “已建立连接”(如服务器响应办公区的查询);
  • DMZ 区(如 Web 服务器)仅允许公网访问 80/443 端口,且仅能主动访问服务器区的特定接口(如数据库查询)。

核心配置思路

# 1. 创建自定义链(简化规则管理)
iptables -N OFFICE_TO_SERVER  # 办公区到服务器区的规则链
iptables -N DMZ_TO_SERVER    # DMZ到服务器区的规则链# 2. 办公区(192.168.1.0/24)到服务器区(10.0.0.0/24)的规则
iptables -A OFFICE_TO_SERVER -s 192.168.1.0/24 -d 10.0.0.0/24 -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OFFICE_TO_SERVER -j DROP  # 默认拒绝其他流量# 3. DMZ区(172.16.0.0/24)到服务器区的规则(仅允许特定接口)
iptables -A DMZ_TO_SERVER -s 172.16.0.0/24 -d 10.0.0.0/24 -p tcp --dport 3306 -m state --state ESTABLISHED -j ACCEPT  # 仅允许响应
iptables -A DMZ_TO_SERVER -j DROP# 4. 将自定义链挂到 FORWARD 链
iptables -A FORWARD -i eth1 -o eth2 -j OFFICE_TO_SERVER  # eth1=办公区网卡,eth2=服务器区网卡
iptables -A FORWARD -i eth0 -o eth2 -j DMZ_TO_SERVER     # eth0=DMZ区网卡

7.2 带宽限制与流量整形(结合 tc

iptables 本身不直接支持带宽限制,但可与 Linux 流量控制工具 tc(traffic control)协同,通过标记数据包(mark 模块),让 tc 对标记的流量进行限速或整形。

场景:限制非核心业务(如下载)的带宽,保障核心服务(如数据库)

实现思路

  1. 用 iptables 标记非核心业务的数据包(如端口 8080 的下载流量);
  2. 用 tc 对标记的数据包设置带宽上限(如 1Mbps)。

配置示例

# 1. iptables 标记下载流量(mark 值为 100)
iptables -t mangle -A PREROUTING -p tcp --dport 8080 -j MARK --set-mark 100# 2. tc 对标记 100 的流量限速(假设出口网卡为 eth0)
tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:10 htb rate 1000Mbps  # 总带宽
tc class add dev eth0 parent 1:10 classid 1:100 htb rate 1Mbps  # 下载流量上限
tc filter add dev eth0 parent 1: protocol ip prio 1 handle 100 fw flowid 1:100  # 匹配 mark=100

7.3 高级 NAT 应用(端口复用、双向 NAT)

超出基础端口转发的复杂 NAT 场景,适用于公网 IP 有限或需隐藏内网拓扑的场景。

1. 端口复用(一个公网端口映射到内网多个服务)

例如,公网 IP 的 443 端口同时映射到内网的 Web 服务器(443)和邮件服务器(993),通过 “源 IP 匹配” 区分流量:

# 公网 IP:203.0.113.1
# 规则:来自 1.2.3.4 的 443 请求转发到内网 Web 服务器(192.168.1.10:443)
iptables -t nat -A PREROUTING -d 203.0.113.1 -s 1.2.3.4 -p tcp --dport 443 -j DNAT --to 192.168.1.10:443
# 其他 IP 的 443 请求转发到邮件服务器(192.168.1.20:993)
iptables -t nat -A PREROUTING -d 203.0.113.1 -p tcp --dport 443 -j DNAT --to 192.168.1.20:993
2. 双向 NAT(内外网 IP 双向转换)

适用于内网与外部网络存在 IP 冲突的场景(如内网和合作方内网均使用 192.168.1.0/24),通过双向转换避免冲突:

# 外部访问内网:将外部请求的目的 IP(203.0.113.100)转换为内网 IP(192.168.1.5)
iptables -t nat -A PREROUTING -d 203.0.113.100 -j DNAT --to 192.168.1.5
# 内网响应外部:将内网源 IP(192.168.1.5)转换为外部可见 IP(203.0.113.100)
iptables -t nat -A POSTROUTING -s 192.168.1.5 -j SNAT --to 203.0.113.100

7.4 透明代理与流量劫持

将特定流量(如 HTTP/HTTPS)透明转发到代理服务器(如 Squid、Nginx),用户无需手动配置代理,适用于企业上网审计、广告过滤等场景。

场景:强制内网所有 HTTP 流量经过代理服务器(10.0.0.10:3128)
# 1. 开启内核转发
echo 1 > /proc/sys/net/ipv4/ip_forward# 2. 拦截内网 HTTP 流量(80 端口),转发到代理服务器
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j DNAT --to 10.0.0.10:3128# 3. 允许代理服务器响应内网(避免被默认策略拒绝)
iptables -A FORWARD -s 10.0.0.10 -d 192.168.1.0/24 -p tcp --sport 3128 -j ACCEPT

7.5 入侵检测与自动防御(结合脚本)

通过 iptables 日志记录异常流量,结合脚本实时分析并自动添加封禁规则,抵御扫描、暴力破解等攻击。

场景:自动封禁 10 分钟内 SSH 失败超过 5 次的 IP

实现思路

  1. iptables 记录 SSH 失败日志(如密码错误);
  2. 定时脚本(如 cron)分析日志,统计失败次数;
  3. 对超阈值的 IP 自动添加 iptables DROP 规则。

核心配置

# 1. 记录 SSH 失败日志(假设 SSH 服务日志含 "Failed password")
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH_FAILED: "# 2. 检测脚本(示例,需保存为 /usr/local/bin/ban_ssh.sh 并添加执行权限)
#!/bin/bash
# 提取 10 分钟内失败次数 >5 的 IP
awk '/SSH_FAILED/ && /Failed password/ {print $11}' /var/log/messages | grep -oE '([0-9]+\.){3}[0-9]+' | sort | uniq -c | awk '$1>5 {print $2}' | while read ip; do# 若未封禁则添加规则if ! iptables -C INPUT -s $ip -j DROP >/dev/null 2>&1; theniptables -A INPUT -s $ip -j DROPecho "Banned $ip at $(date)" >> /var/log/ssh_ban.logfi
done# 3. 添加 cron 任务(每 5 分钟执行一次)
echo "*/5 * * * * root /usr/local/bin/ban_ssh.sh" >> /etc/crontab

7.6 特定协议的深度过滤(如 FTP、DNS)

针对多端口或动态端口协议(如 FTP、SIP),结合 iptables 扩展模块(如 ip_conntrack_ftp)实现精准控制。

场景:允许 FTP 服务(支持主动 / 被动模式)

FTP 主动模式使用 21 端口控制连接,数据连接由服务器主动发起(端口 20);被动模式数据端口随机,需内核跟踪动态端口:

# 1. 加载 FTP 连接跟踪模块
modprobe ip_conntrack_ftp# 2. 允许 FTP 控制连接(21 端口)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT# 3. 允许 FTP 数据连接(依赖跟踪模块自动识别动态端口)
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT

7.7 容器与虚拟化环境的网络隔离

在 Docker、KVM 等虚拟化环境中,通过 iptables 控制宿主机与容器、容器之间的网络访问,弥补虚拟化平台自带防火墙的不足。

场景:限制 Docker 容器只能访问特定外网 IP

Docker 会自动创建 DOCKER 链,可在其上附加规则:

# 1. 清空 Docker 转发链(避免默认放通)
iptables -F FORWARD# 2. 允许容器(172.17.0.0/16)访问特定 IP(8.8.8.8)
iptables -A FORWARD -s 172.17.0.0/16 -d 8.8.8.8 -j ACCEPT# 3. 允许已建立的连接响应
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT# 4. 默认拒绝其他转发流量
iptables -P FORWARD DROP

7.8 高可用集群中的规则同步

在主备架构(如 Keepalived 双机热备)中,通过脚本或工具(如 csync2)同步 iptables 规则,确保主备切换时防火墙策略一致。

示例流程

  1. 主节点修改规则后,通过 iptables-save > /etc/iptables.rules 保存;
  2. 用 csync2 将规则文件同步到备节点;
  3. 备节点通过 iptables-restore < /etc/iptables.rules 加载规则;
  4. 结合 inotify 监控文件变化,实现实时同步。

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

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

相关文章

Vue 服务端渲染(SSR)详解

Vue SSR是一种在服务端将 Vue 应用渲染成 HTML 字符串&#xff0c;然后直接发送到客户端的技术。相比传统的客户端渲染&#xff0c;Vue SSR 能带来更好的 SEO 性能和更快的首屏加载时间。下面我们从零到一&#xff0c;结合项目源码&#xff0c;详细讲解如何实现一个 Vue SSR 项…

机器翻译:需要了解的数学基础详解

文章目录一、概率论与统计学1.1 基本概念1.2 在机器翻译中的应用二、线性代数2.1 基本概念2.2 在机器翻译中的应用三、微积分3.1 基本概念3.2 在机器翻译中的应用四、信息论4.1 基本概念4.2 在机器翻译中的应用五、数值优化5.1 优化问题形式化5.2 优化算法5.3 正则化技术六、图…

蓝桥杯手算题和杂题简易做法

一、巧用Excel Excel在解决某些数学问题时非常高效&#xff0c;特别是涉及表格计算、简单统计和可视化分析时。 门牌制作 这道题是一道基础题&#xff0c;只需要判断每个数字有几个2&#xff0c;然后在加起来即可&#xff0c;但是还有更简单的方法&#xff0c;先通过编译器&…

5. 缓存-Redis

文章目录前言一、 介绍1. 简介2. 核心特点二、 应用场景1. 应用场景2. 数据类型作用场景三、 性能特性1. 内存2. 高性能数据结构3. 单线程、多路复用四、 异步持久化机制1. RDB&#xff08;Redis Database&#xff09;2. AOF&#xff08;Append-Only File&#xff09;3. 持久化…

如何理解Tomcat、Servlet、Catanalina的关系

目录 背景&#xff1a; 结论&#xff1a; 好文-【拓展阅读】&#xff1a; 象漂亮更新动力&#xff01; 背景&#xff1a; 学习Java的Servlet时&#xff0c;常常说Tomcat是一个容器&#xff0c;我们写ServletA,ServletB,Tomcat容器在启动的时候会读取web.xml或者我们程序中的…

Hive的并行度的优化

对于分布式任务来说&#xff0c;任务执行的并行度十分重要。Hive的底层是MapReduce&#xff0c;所以Hive的并行度优化分为Map端优化和Reduce端优化。(1)、Map端优化Map端的并行度与Map切片数量相关&#xff0c;并行度等于切片数量。一般情况下不用去设置Map端的并行度。以下特殊…

Vue.js 响应接口:深度解析与实践指南

Vue.js 响应接口&#xff1a;深度解析与实践指南 引言 随着前端技术的不断发展&#xff0c;Vue.js 作为一种流行的前端框架&#xff0c;已经成为了众多开发者的首选。Vue.js 的响应式系统是其核心特性之一&#xff0c;它允许开发者轻松实现数据的双向绑定。而响应接口则是Vue.j…

高精度蓝牙定位:技术、应用与未来发展

一、高精度蓝牙定位概述在当今科技飞速发展的时代&#xff0c;定位技术的精度和可靠性变得越来越重要。高精度蓝牙定位作为一种新兴的定位技术&#xff0c;正逐渐崭露头角。蓝牙技术是一种支持设备短距离通信&#xff08;一般10m内&#xff09;的无线电技术&#xff0c;能在包括…

C# 基于halcon的视觉工作流-章29-边缘提取-亚像素

C# 基于halcon的视觉工作流-章29-边缘提取-亚像素 本章目标&#xff1a; 一、1edges_sub_pix&#xff1b; 二、threshold_sub_pix&#xff1b;本实例实现过程与章28基本相同&#xff0c;不同处在于提取的边缘是亚像素&#xff0c;精度较高&#xff0c;本文仅介绍不同之处&#…

如何实现PostgreSQL的高可用性,包括主流的复制方案、负载均衡方法以及故障转移流程?

前言 实现 PostgreSQL 的高可用性&#xff08;High Availability, HA&#xff09;是一个系统工程&#xff0c;需要结合复制技术、连接路由&#xff08;负载均衡&#xff09;、自动故障转移&#xff08;Failover&#xff09;以及监控告警。以下是主流方案和关键流程的详细说明&a…

Apache Ignite 生产级的线程池关闭工具方法揭秘

Apache Ignite 中用于 安全、可靠地关闭线程池&#xff08;ExecutorService&#xff09; 的关键逻辑。我们来一步步深入理解它的设计思想和实现细节。&#x1f9f1; 一、核心方法&#xff1a;U.shutdownNow(...) public static void shutdownNow(Class<?> owner, Nullab…

Unity:GUI笔记(一)——文本、按钮、多选框和单选框、输入框和拖动条、图片绘制和框绘制

写在前面&#xff1a;写本系列(自用)的目的是回顾已经学过的知识、记录新学习的知识或是记录心得理解&#xff0c;方便自己以后快速复习&#xff0c;减少遗忘。主要是唐老师的课程。一、重要参数、文本、按钮GUI相关代码需要写在private void OnGUI()中。该函数每帧执行&#x…

wordpress从wp_nav_menu中获取菜单项

从wp_nav_menu中获取菜单项&#xff0c;然后检查这些菜单项是否对应分类(Category)&#xff0c;并输出这些分类的ID。 以下是完整的代码实现&#xff1a; <?php // 获取指定菜单位置的菜单项 $menu_items wp_get_nav_menu_items(wodepress); // wodepress 是菜单位置的名…

第4章 程序段的反复执行2 while语句P128练习题(题及答案)

&#xff08;&#xff08;1&#xff09;阅读程序#include <bits/stdc.h> using namespace std; //汤永红 int main(){int n,s0;cin >> n;while(n){s s * 10 n % 10;n / 10;}cout << s << endl;return 0; }分别输入&#xff1a;0 1024 1234567890输出…

图解软件系统组成

这是基于 ​​PlantUML​​ 绘制的软件系统组成部分思维导图&#xff0c;聚焦技术路线与文件类型的对应关系&#xff0c;采用分层架构展示核心模块&#xff1a;startmindmap * **软件系统组成部分*** **一、核心技术栈*** 后端技术* 技术路线: Python Web 框架* 文件类型: .py …

【传奇开心果系列】Flet框架实现的多人访问web数据表高并发前后端自定义框架模板

Flet框架实现的多人访问web数据表高并发前后端自定义框架模板一、效果展示截图二、应用场景介绍1. **多用户实时协作**2. **产品管理**3. **数据可视化**三、特色说明1. **实时通信**2. **高性能**3. **用户友好的界面**4. **日志记录**5. **安全性**四、总结五、源码下载地址六…

农业智慧大屏系统 - Flask + Vue实现

下面我将实现一个完整的农业智慧大屏系统&#xff0c;使用Flask作为后端框架&#xff0c;前端使用Vue.js结合ECharts进行数据可视化展示。 设计思路 前端部分&#xff1a; 使用Vue.js构建响应式界面 使用ECharts实现各类农业数据可视化 使用CSS Grid布局实现大屏适配 后端…

Linux中Https配置与私有CA部署指南

Linux中Https配置与私有CA部署指南 一、HTTPS 核心概念特性HTTPHTTPS协议明文传输HTTP SSL/TLS端口80443加密未加密数据加密二、SSL/TLS 握手流程 Client → Server ClientHello&#xff1a;支持哪些版本、支持哪些加密算法&#xff0c;随机生成一组32字节数据 random_c Serve…

【软考架构】主流数据持久化技术框架

JDO与JPA JDO&#xff08;Java Data Objects&#xff09;和JPA&#xff08;Java Persistence API&#xff09;都是Java中用于对象持久化的规范&#xff0c;但它们在设计目标、技术背景和应用场景上存在显著区别。以下是两者的核心对比&#xff1a;1. 规范背景与维护方 JDO&…

服务日志、监控

服务怎么做监控和告警使用 Prometheus 和 Grafana 来实现整个微服务集群的监控和告警&#xff1a;Prometheus&#xff1a;Prometheus 是一个开源的监控系统&#xff0c;具有灵活的数据模型和强大的查询语言&#xff0c;能够收集和存储时间序列数据。它可以通过 HTTP 协议定期拉…