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

iptables 防火墙(二)

iptables 防火墙(二)

  • 一、SNAT 策略及应用
    • SNAT 策略概述
    • SNAT 策略的应用
  • 二、DNAT 策略及应用
    • DNAT 策略概述
  • 三、规则的导出、导入
    • 规则的备份及还原
      • iptables-save 命令
      • iptables-restore 命令
    • 使用 iptables 服务
  • 四、使用防火墙脚本
    • 防火墙脚本的构成
    • 防火墙脚本示例
  • 五、总结

在上一篇文章中,我们初步了解了iptables防火墙的基本概念和基本使用方法。iptables是Linux系统下一款强大的网络数据包处理工具,它可以用来设置允许哪些数据包通过以及拒绝哪些数据包,并根据具体的规则来进行数据包过滤。本文将带大家进一步深入iptables的使用,包括更复杂的规则设置、链的管理以及高级应用技巧。

一、SNAT 策略及应用

SNAT 策略概述

SNAT策略的典型应用环境

  • 局域网主机共享单个公网IP地址接入Internet

SNAT策略的原理

  • 源地址转换,Source Network Address Translation
  • 修改数据包的源地址
    在这里插入图片描述

开启路由转发,未设置地址转换的情况

  • 正常情况下,作为网关的 Linux 服务器必须打开路由转发,才能沟通多个网络。
  • 未使用地址转换策略时,从局域网 PC(如 192.168.1.234)访问 Internet 的数据包经过网关转发后其源 IP 地址保持不变,
  • 当 Internet 中的主机收到这样的请求数据包后,响应数据包将无法正确返回(私有地址不能在 Internet 中正常路由),从而导致访问失败
    在这里插入图片描述

开启路由转发,并设置 SNAT 转换的情况

  • 如果在网关服务器中正确应用 SNAT 策略,数据包转发情况就不一样了
    在这里插入图片描述

SNAT 策略的应用

在这里插入图片描述

  • SNAT 策略只能用在 nat 表的 POSTROUTING 链,
  • 使用 iptables 命令编写 SNAT 策略时,需要结合“–to-source IP 地址”选项来指定修改后的源 IP 地址
  • 如-j SNAT --to-source 218.29.30.31

共享固定 IP 地址上网

  • Linux 网关服务器通过两块网卡 ens33、ens37 分别连接 Internet 和局域网,其中 ens33 的 IP 地址为 218.29.30.31,ens37 的 IP 地址为 192.168.1.1。
  • 所有局域网 PC 的默认网关设为 192.168.1.1,且已经设置了正确的 DNS 服务器。
  • 要求 192.168.1.0/24 网段的 PC 能够通过共享方式正常访问 Internet。

(1) 打开网关的路由转发。

  • 对于 Linux 服务器,IP 转发是实现路由功能的关键所在,对应为/proc 文件系统中的ip_forward 设置,
  • 当值为 1 时表示开启,为 0 时表示关闭。
  • 若要使用 Linux 主机作为网关设备,必然需要开启路由转发。
# 永久打开路由转发功能
[root@localhost ~]# vi /etc/sysctl.conf
……            # 省略部分内容
net.ipv4.ip_forward = 1                    # 将此行写入配置文件
[root@localhost  ~]# sysctl -p            # 读取修改后的配置
# 在测试过程中,若只希望临时开启路由转发,也可以执行以下操作。
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
# 或者
[root@localhost ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

(2) 正确设置 SNAT 策略。

  • 通过分析得知,需要针对局域网 PC 访问 Internet 的数据包采取 SNAT 策略,将源地址更改为网关的公网 IP 地址,
  • 参考以下操作在网关中设置防火墙规则。
  • 若要保持 SNAT 策略长期有效,应将相关命令写入到 rc.local 配置文件,以便开机后自动设置。
[root@localhost ~]# iptables -t nat -A  POSTROUTING  -s  192.168.1.0/24  -o  ens33  -j  SN AT --to-source 218.29.30.31

(3) 测试 SNAT 共享接入结果。

  • 上述操作完成以后,使用局域网中的 PC 就可以正常访问 Internet 中的网站了。
  • 对于被访问的网站服务器来说,将会认为是网关主机218.29.30.31 在访问(可观察Web 日志获知),
  • 而并不知道实际上是企业内网的 PC 192.168.1.234 在访问。

共享动态 IP 地址上网
在这里插入图片描述

二、DNAT 策略及应用

DNAT 策略概述

DNAT策略的典型应用环境

  • 在Internet中发布位于企业局域网内的服务器

DNAT策略的原理

  • 目标地址转换,Destination Network Address Translation
  • 修改数据包的目标地址
    在这里插入图片描述
    进行DNAT转换后的情况

发布企业内部的 Web 服务器
(1) 打开网关的路由转发。

[root@gw ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@gw ~]# sysctl -p
net.ipv4.ip_forward = 1

(2) 正确设置 DNAT 策略。

[root@gw ~]# iptables -t nat -A PREROUTING -d 192.168.72.154 -p tcp --dport 2333 -j DNAT --to-destination 192.168.72.145:22
[root@gw ~]# iptables -t nat -A POSTROUTING -d 192.168.72.145 -p tcp --dport 22 -j SNAT --to 192.168.72.154

(3) 测试 DNAT 发布结果。
在这里插入图片描述
发布企业内部的 OpenSSH 服务器
(1) 配置 OpenSSH 服务。

(2) 打开网关的路由转发。

[root@gw ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@gw ~]# sysctl -p
net.ipv4.ip_forward = 1

(3) 正确设置 DNAT 策略。

[root@gw ~]# iptables -t nat -A PREROUTING -i ens33 -d 192.168.72.154 -p tcp --dport 3333 -j DNAT --to-destination 192.168.72.145:22

(4) 测试 DNAT 发布结果。
在这里插入图片描述

三、规则的导出、导入

规则的备份及还原

iptables-save 命令

  • iptables-save 命令用来批量导出 Linux 防火墙规则。
  • 直接执行 iptables-save 命令时, 将显示出当前启用的所有规则。
[root@gw ~]# iptables-save > iptables_kgc.txt        # 备份所有表的规则

iptables-restore 命令

  • iptables-retore 命令用来批量导入 Linux 防火墙规则
  • 如果已经使用 iptables-save 命令导出的备份文件,则恢复规则的过程在一瞬间就能完成。
  • 与 iptables-save 命令相对的iptables-restore 命令应结合重定向输入来指定备份文件的位置。
[root@gw ~]# iptables-restore < iptables_kgc.txt        # 从备份文件恢复规则

使用 iptables 服务

自动启用防火墙规则

  • 在服务器中调试好各种 iptables 规则以后,使用 iptables-save 备份为默认的规则配置文件/etc/sysconfig/iptables,然后就可以通过 iptables 服务来调用。
[root@gw ~]# yum -y install iptables-service        # 下载 iptables-service
[root@gw ~]# cat iptables_kgc.txt > /etc/sysconfig/iptables        # 备份导入到配置文件
[root@gw ~]# systemctl start iptables        # 启动服务
[root@gw ~]# systemctl enable iptables        # 设置开机自启动服务

清空所有防火墙规则

  • 在调试各种防火墙规则的过程中,为了排除其他规则的干扰,有时候需要清空某些表的规则。
  • 当需要一次清空所有表的规则时,停用 iptables 服务是最快捷的方法,也是最彻底的方法。
[root@gw ~]# systemctl stop iptables          # 停止防火墙服务
[root@gw ~]# systemctl status iptables        # 确认防火墙服务的状态
● iptables.service - IPv4 firewall with iptablesLoaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)Active: inactive (dead) since 一 2024-07-01 12:01:48 CST; 1s agoProcess: 9663 ExecStop=/usr/libexec/iptables/iptables.init stop (code=exited, status=0/SUCCESS)Process: 1692 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)Main PID: 1692 (code=exited, status=0/SUCCESS)701 10:48:48 gw systemd[1]: Starting IPv4 firewall with iptables...
701 10:48:48 gw iptables.init[1692]: iptables: Applying firewall rules: [  确定  ]
701 10:48:48 gw systemd[1]: Started IPv4 firewall with iptables.
701 12:01:48 gw systemd[1]: Stopping IPv4 firewall with iptables...
701 12:01:48 gw iptables.init[9663]: iptables: Setting chains to policy ACCEPT: filter nat [  确定  ]
701 12:01:48 gw iptables.init[9663]: iptables: Flushing firewall rules: [  确定  ]
701 12:01:48 gw systemd[1]: Stopped IPv4 firewall with iptables.

四、使用防火墙脚本

防火墙脚本的构成

定义基本变量

  • 将防火墙的网卡、IP 地址、局域网段、iptables 命令的路径等定义为变量,便于对脚本程序的维护和移植使用,特别是当规则较多的时候。
  • 一旦网络环境发生变化(如公网 IP 地址变更),只需对变量值稍做修改就可以投入使用了。
[root@localhost  ~]# vim /opt/myipfw.sh    //创建脚本文件
#!/bin/bash
INET_IF= "ens33"    //外网接口
INET_IP="218.29.30.31"        //外网接口地址
LAN_IF="ens37"    //内网接口
LAN_IP= "192.168.1.1"        //内网接口地址
LAN_NET="192.168.1.0/24"    //内网网段
LAN_WWW_IP="192.168.1.6"                //网站服务器的内部地址
IPT="/sbin/iptables"    //iptables 命令的路径
MOD="/sbin/modprobe"            //modprobe 命令的路径
CTL="/sbin/sysctl"        //sysctl 命令的路径
  • 设置好相关的变量以后,在后续的脚本内容中就可以直接引用了。
  • 为了提高脚本代码的 可读性,除了添加必要的注释之外,变量名称最好使用有一定含义的字符串。

加载内核模块

  • 在 CentOS 7.3 系统中,iptables 命令的大部分模块都可以根据需要动态载入内核,只有个别模块需要手动进行加载(如与 FTP 发布相关的 ip_nat_ftp、ip_conntrack_ftp)。
  • 但如果需要启用的规则数量较多,为了提高规则设置的效率,保持防火墙的稳定性,建议将用到的各种模块提前加载到内核中。
$MOD ip_tables    //iptables 基本模块
$MOD ip_conntrack    //连接跟踪模块
$MOD ipt_REJECT    //拒绝操作模块
$MOD ipt_LOG    //日志记录模块
$MOD ipt_iprange    //支持IP 范围匹配
$MOD xt_tcpudp    //支持TCP、UDP 协议
$MOD xt_state    //支持状态匹配
$MOD xt_multiport    //支持多端口匹配
$MOD xt_mac    //支持MAC 地址匹配
$MOD ip_nat_ftp    //支持FTP 地址转换
$MOD ip_conntrack_ftp    //支持FTP 连接跟踪

调整/proc 参数

  • /proc 是 Linux 或 UNIX 系统中的一种伪文件系统机制,提供了访问内核运行结构、改变内核设置的实时数据。
  • 与 EXT3、FAT32 等本地文件系统不同,/proc 中的数据存放在内存中而不是硬盘上。
  • 在文件夹/proc/sys 下存放着与系统相关的一些可控参数,可以直接用来改变内核的行为,通常作为 Linux 内核调优的实时入口。
  • 其中包括是否打开 IP 转发、是否响应 ICMP 广播、设置好 TCP 响应超时等,使用 echo、sysctl 命令都可以修改相关参数,当然也可以写到/etc/sysctl.conf 文件(执行 sysctl -p 后生效)。
// 下面仅列出常用的几个/proc 参数调整,更多细节、调优操作此处不做过多介绍,有兴趣的同学请参阅其他资料。
$CTL -w net.ipv4.ip_forward=1    //打开路由转发功能
$CTL -w net.ipv4.ip_default_ttl=128    //修改ICMP 响应超时
$CTL -w net.ipv4.icmp_echo_ignore_all=1    //拒绝响应ICMP 请求
$CTL -w net.ipv4.icmp_echo_ignore_broadcasts //拒绝响应ICMP 广播
$CTL -w net.ipv4.tcp_syncookies=1    //启用SYN Cookie 机制
$CTL -w net.ipv4.tcp_syn_retries=3    //最大SYN 请求重试次数
$CTL -w net.ipv4.tcp_synack_retries=3    //最大ACK 确认重试次数
$CTL -w net.ipv4.tcp_fin_timeout=60    //TCP 连接等待超时
$CTL -w net.ipv4.tcp_max_syn_backlog=3200    //SYN 请求的队列长度
  • 上述脚本内容中,ICMP 相关的参数调整可使本机忽略其他主机的 ping 测试,TCP 相关的内核参数调整可适当提高本机抵抗 DoS 攻击的能力。

设置具体的 iptables 规则
(1) 清理已有的规则。

  • 为了避免已有的防火墙规则造成干扰,通常会预先安排一个“清理”操作,删除所有表中用户自定义的链,清空所有链内的规则。
$IPT  -t filter –X    //删除各表中自定义的链
$IPT -t nat -X
$IPT -t mangle -X
$IPT -t raw -X
$IPT  -t filter –F    //清空各表中已有的规则
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t raw -F

(2) 设置规则链的默认策略。

  • 在实际生产环境中,防火墙过滤规则建议采取“默认拒绝”的策略,可以获得更好的安全性。
  • 这就要求我们充分熟悉相关应用服务、网络协议,才能够识别合法数据包,制定出既防 护严格又行之有效的防火墙方案。
$IPT -P INPUT DROP
$IPT  -P  FORWARD DROP
$IPT  -P  OUTPUT ACCEPT    

(3) 设置 nat 表中的各种规则。

  • iptables 的 nat 表主要用在 Linux 网关服务器中,一般的主机型防火墙方案很少会用到nat 表。
  • 根据实际情况编写相应的 SNAT、DNAT 规则(如局域网共享上网、发布内部 Web 服务器),如果没有则跳过此部分。
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP
$IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j  DNAT --to-dest  
ination $LAN_WWW_IP

(4) 设置 filter 表的各种规则。

  • iptables 的 filter 表主要用来过滤数据包,无论是 Linux 网关还是一般的 Linux 服务器都可能用到。
  • 主机型的防火墙主要使用 INPUT、OUTPUT 链,而对于网络型的防火墙主要使用 FORWARD 链。
$IPT -A FORWARD  -s  $LAN_NET -o  $INET_IF  -p  udp  --dport  53  -j ACCEPT
$IPT -A FORWARD -s $LAN_NET -o $INET_IF -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -s $LAN_NET -o $INET_IF -p tcp --dport 20:21 -j ACCEPT
$IPT -A FORWARD -d $LAN_NET -i $INET_IF -m state --state ESTABLISHED, RELATED
-j ACCEPT
…… //省略部分内容
  • 需要说明的是,在实际应用过程中,不要过于生硬地照搬他人脚本内容,应根据实际情 况进行有针对性的设计,并做好整体测试,避免因规则不当而导致网络通信故障。
  • 脚本文件编写完成以后,为其添加“x”可执行权限,就可以用来批量设置防火墙规则了。 若要使脚本文件在每次开机后自动运行,可以将脚本路径写入/etc/rc.local 文件中。
[root@localhost  ~]#  chmod +x /opt/myipfw.sh    //添加执行权限
[root@localhost ~]# /opt/myipfw.sh    //执行脚本文件
[root@localhost  ~]#  iptables -nL FORWARD    //查看部分防火墙规则
Chain FORWARD (policy ACCEPT)
target    prot opt source    destination
ACCEPT    udp   --   192.168.1.0/24    0.0.0.0/0    udp dpt:53
ACCEPT    tcp   --   192.168.1.0/24    0.0.0.0/0    tcp dpt:80 
ACCEPT    tcp   --   192.168.1.0/24    0.0.0.0/0    tcp dpts:20:21 
ACCEPT    all    --   0.0.0.0/0   192.168.1.0/24    state RELATED,ESTABLISHED
[root@localhost  ~]# vi /etc/rc.local    //设置为开机自动执行
…… //省略部分内容
/opt/myipfw.sh

防火墙脚本示例

  • 熟悉了防火墙脚本的基本构成之后,下面将展示一个简单的防火墙脚本文件——“主机型”防火墙脚本,主要针对具体的规则设置部分,内容仅供参考。
  • 对于大多数的应用服务器,防火墙只需针对本机进行防护,因此 filter 表中的 INPUT、OUTPUT 链用得最多,特别是前者。例如,可将 OUTPUT 链的默认策略设为允许,不添加其他规则;将 INPUT 链的默认策略设为拒绝,只放行对个别服务(如 Web)的访问,以及响应本机访问请求的数据包。
[root@localhost ~]# vi /opt/myipfw.hostonly
#!/bin/bash
# 1. 定义基本变量IPT="/sbin/iptables" CTL="/sbin/sysctl" # 2. 调整/proc 参数
$CTL  -w net.ipv4.tcp_syncookies=1
$CTL  -w net.ipv4.tcp_syn_retries=3
$CTL -w net.ipv4.tcp_synack_retries=3
$CTL -w net.ipv4.tcp_fin_timeout=60
$CTL -w net.ipv4.tcp_max_syn_backlog=3200 # 3. 设置具体的防火墙规则
# 3.1 删除自定义链、清空已有规则
$IPT -t filter -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT  -t  raw -X
$IPT  -t  filter -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t raw -F
# 3.2 定义默认策略
$IPT -P INPUT DROP
$IPT  -P  FORWARD DROP
$IPT  -P  OUTPUT ACCEPT
# 3.3 设置 filter 表中的各种规则
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@localhost ~]# chmod +x /opt/myipfw.hostonly

五、总结

iptables防火墙是Linux系统下一款强大的网络数据包处理工具,它可以根据数据包的源地址、目标地址、端口号、协议类型等信息来决定是否允许数据包通过。通过合理设置iptables的规则和链,我们可以实现复杂的网络访问控制需求。同时,iptables还支持日志记录、端口转发等高级功能,可以满足更复杂的网络应用需求。希望本文能够帮助大家更好地理解和使用iptables防火墙。

相关文章:

iptables 防火墙(二)

iptables 防火墙&#xff08;二&#xff09; 一、SNAT 策略及应用SNAT 策略概述SNAT 策略的应用 二、DNAT 策略及应用DNAT 策略概述 三、规则的导出、导入规则的备份及还原iptables-save 命令iptables-restore 命令 使用 iptables 服务 四、使用防火墙脚本防火墙脚本的构成防火…...

【机器学习】在【PyCharm中的学习】:从【基础到进阶的全面指南】

目录 第一步&#xff1a;基础准备 1.1 Python基础 1.1.1 学习Python的基本语法 1.1.2 控制流 1.1.3 函数和模块 1.2 安装PyCharm 1.2.1 下载并安装 第二步&#xff1a;数据科学基础 2.1 安装必备库 2.1.1 使用pip安装 2.2 数据操作 2.2.1 Pandas基础操作 2.2.2 Nu…...

idea Error running ‘Application‘

1、Error running ‘Application’ Error running ApplicationError running Application. Command line is too long.Shorten the command line via JAR manifest or via a classpath file and rerun.找到 .idea/libraies/workspace.xml 中的 PropertiesComponent 属性&#…...

数据结构和顺序表

什么是数据结构 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 数据元素的三要素 数据结构包括三方面的内容&#xff1a;逻辑结构、存储结构、数据的运算。 逻辑结构 逻辑结构是指数据元素之间的逻辑关系&#xff0c;即从逻辑关系上描述数据。数据的逻辑结…...

【一步一步了解Java系列】:对这个系列的总结以及对缺漏内部类知识的补充

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 br />个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xf…...

TCP和UDP

目录 TCPUDPTCP 传输控制协议(Transmission Control Protocol, TCP)是一种面向连接的,可靠的,基于字节流的传输层通信协议。在该层,另一个重要传输协议是用户数据包协议(UDP)。 数据在TCP层称为流Stream,数组分组称为分段Segment。相对的在IP层,数据称为Datagram, 数…...

【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行

isarsoft / yolov4-triton-tensorrt运行发现插件未注册? 【ai】tx2 nx: jetson Triton Inference Server 部署YOLOv4 【ai】tx2 nx: jetson Triton Inference Server 运行YOLOv4 对main 进行了重新构建 【ai】tx2 nx :ubuntu查找NvInfer.h 路径及哪个包、查找符号【ai】tx2…...

类与对象的创建

1.类是一种抽象的数据类型&#xff0c;他是对某一类事务整体描述/定义&#xff0c;但是并不能代表某一个具体的事物 eg&#xff1a;动物&#xff0c;植物&#xff0c;手机&#xff0c;电脑... Person类&#xff0c;Pet类&#xff0c;Car类&#xff0c;这些类都是用来描述、定义…...

基于单片机的 LED 照明灯智能调光系统设计

摘  要&#xff1a; 社会经济的不断发展&#xff0c;推动了智能化生活的进程&#xff0c;智能调光技术开始广泛应用在生活中&#xff0c;人们也逐渐提高了灯光亮灯率等的要求。基于此&#xff0c;笔者主要设计了基于单片机的 LED 照明灯智能调光系统&#xff0c;希望能够为相关…...

客户满意度调查方法有哪些

用户满意度调查作为改进用户体验工作中重要的一项活动&#xff0c;可以帮助企业深入了解客户对产品服务各方面评价。有许多企业想开展客户满意度调查&#xff0c;但是在调查方式上不清楚该用那种方式&#xff1f;另外还要考虑预算&#xff0c;民安智库&#xff08;公众满意度调…...

为什么企业应用开发,c++干不过java?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; C/C这种东西&#xff0c;根本…...

基于盲信号处理的声音分离——最小化增益的ICA算法

基于最小化增益的ICA算法的算法是依据混合信号经过盲信号分离会产生一定的噪声&#xff0c;为了使得分离后的信号与原信号的比值最小时&#xff0c;叫做增益最小。当增益越小时&#xff0c;分离后噪声越小&#xff0c;分离信号越接近原信号&#xff0c;分离算法的效果越好。这是…...

自动化代码规范检查--Sonarqube部署

参考文档 官方文档安装数据库 官方给出几种数据库: # 我们选用postgres, 拉取镜像 docker pull postgres:16.0# 创建存储卷 docker volume create postgresql-data# 运行容器 docker run -d --name sonarqube-postgres \-p 5432:5432 \-e POSTGRES_DB=sonar_DB \-e POSTGRE…...

基于uni-app与图鸟UI的移动应用模板构建研究

摘要 随着移动互联网技术的迅猛发展&#xff0c;移动端应用已成为企业展示形象、提供服务的重要窗口。本文基于uni-app框架和图鸟UI设计&#xff0c;深入探讨了如何高效构建覆盖多个领域的移动端应用模板。通过对商城、办公、投票、生活服务等多种类型模板的详细介绍&#xff…...

AI智能在Type-C领域的应用

随着科技的飞速发展&#xff0c;Type-C接口凭借其卓越的性能和广泛的应用场景&#xff0c;已成为现代电子设备中不可或缺的一部分。而AI智能技术的兴起&#xff0c;为Type-C领域带来了革命性的变革&#xff0c;推动了其功能的进一步完善和应用领域的拓展。本文将探讨AI智能在Ty…...

INS-GPS组合导航——卡尔曼滤波

系列文章目录 《SAR笔记-卫星轨道建模》 《SAR笔记-卫星轨迹&#xff08;三维建模&#xff09;》 《常用坐标系》 文章目录 前言 一、经典卡尔曼滤波 二、扩展卡尔曼滤波 三、无迹卡尔曼滤波 总结 前言 SAR成像仪器搭载于运动平台&#xff0c;平台的自定位误差将影响SAR…...

day 58 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II

739. 每日温度 提示 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例…...

Dns被莫名篡改的问题定位(笔记)

引言&#xff1a;最近发现用户的多台机器上出现了Dns被莫名修改的问题&#xff0c;从系统事件上看并未能正常确定到是那个具体软件所为&#xff0c;现在的需求就是确定和定位哪个软件具体所为。 解决思路&#xff1a; 首先到IPv4设置页面对Dns进行设置&#xff1a;通过ProcExp…...

JVM原理(八):JVM虚拟机工具之基础故障工具

这里主要介绍监视虚拟机运行状态和进行故障处理的工具 1. jsp:虚拟机进程状况工具 jsp命令格式&#xff1a; jsp [options] [hostid] jps远程查询虚拟机进程状态 2. jstat:虚拟机统计信息监视工具 jstat命令格式&#xff1a; jstat [option vmid [interval [s|ms] [count]…...

Eureka的桥梁:服务消费者交互全解析

Eureka的桥梁&#xff1a;服务消费者交互全解析 在微服务架构中&#xff0c;服务发现是确保服务间有效通信的关键机制。Eureka&#xff0c;作为Netflix开源的服务发现框架&#xff0c;扮演着服务注册中心的角色&#xff0c;为服务消费者和服务提供者提供了一个动态的服务注册与…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...