Linux防火墙之iptables

一. iptables防火墙的相关知识 

 1.1 防火墙的概念

防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。 

  • 硬件防⽕墙:通过硬件和软件的组合,基于硬件的防⽕墙保护整个内部网络安全。
  • 软件防⽕墙:通过纯软件,单独使⽤软件系统来完成防⽕墙功能,保护安装它的系统。

另外:因为iptables是开源的,就安全系数来讲软件防火墙只能用于辅助硬件防火墙,无法做到真正的安全效果。此外软件防火墙也是需要占用硬件资源运行 

  • 防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。

 Linux系统自带的软件防火墙:

  • iptables:Centos 5/6 系统默认防火墙
  • firewalld:Centos 7/8 系统默认防火墙

1.2 iptables的简介 

  • IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
  • 防火墙在做数据包过滤时决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。

1.3 netfilter/iptables 的关系 

netfilter

  • 属于的“内核态”(Kernel Space, 又称为内核空间)的防火墙功能体系。
  • 是内核的一部分,由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。

iptables

  • 属于“用户态”(User Space,又称为用户空间)的防火墙管理体系。
  • 是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。

  两者之间的关系:

  • IPtable和netfilter共同组成了一个防火墙系统,iptables只是Linux防火墙的管理工具——命令行工具,或者也可以说是一个客户端的代理,netfilter是安全框架,并且真正实现防火墙功能的是 netfilter,它是Linux内核中的一部分。这两部分共同组成了包过滤防火墙,并且是免费使用,可以实现完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

二. iptables中的四表五链

  • netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。
  • 表中所有规则配置后,立即生效,不需要重启服务。

2.1  四表五链的关系

  •  规则表的作用:容纳各种规则链
  • 规则链的作用:容纳各种防火墙的规则
  • 简单记忆就是:表中有链,链中有规则

2.2 iptables中的四表 

表名作用
raw确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING
mangle修改数据包内容,用来做流量整形,给数据包设置标记。包含五个规则链,INPUT、 OUTPUT、 FORWARD、 PREROUTING、 POSTROUTING
nat负责网络地址转换,用来修改数据包中的源、目标IP地址或端口(通信五元素)。包含三个规则链,OUTPUT、 PREROUTING、 POSTROUTING
filter负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、 FORWARD、 OUTPUT

 在iptables中 raw和mangle 表的运用相对较少

2.3  iptables中的五链

链名作用
INPUT处理入站数据包,匹配目标IP为本机的数据包。
OUTPUT处理出站数据包,一般不在此链上做配置。
FORWARD处理转发数据包,匹配流经本机的数据包。
PREROUTING在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。
POSTROUTING在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。

2.4 数据包到达防火墙的匹配流程

规则表中的优先顺序:raw >mangle>nat>filter

2.4.1 规则链之间的匹配顺序

类型1:主机型防火墙

  • 入站数据(来自外界的数据包,且目标地址是防火墙本机): PREROUTING --> INPUT -->本机的应用程序
  • 出站数据(从防火墙本机向外部地址发送的数据包):本机的应用程序---->OUTPUT ----->POSTROUTING
  • 类型2:网络型防火墙 
  • 转发数据(需要经过防火墙转发的数据包):PREROUTING -->FORWARD -->POSTROUTING
2.4.2 规则链内的匹配顺序
  • 自上向下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志)
  • 若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许)
2.4.3 内核中数据包的传输过程
  • 当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
  • 如果数据包是进入本机的,数据包就会到达INPUT链。数据包到达INPUT链后, 任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后返回给发送方。
  • 如果数据包是要转发出去的,且内核允许转发,数据包就会经过FORWARD链,然后到达POSTROUTING链输出。

三. iptables的配置

3.1iptables命令行的使用(centos7和真实环境)

3.1.1iptables的安装

第一步:关闭 firewalld,且设置开机不自启 

  •  Centos 7默认使用firewalld防火墙,没有安装iptables, 若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables 。
[root@localhost ~]#systemctl disable --now firewalld

 第二步:安装 iptables ,启动服务

[root@localhost ~]#yum install -y iptables-services  iptables

[root@localhost ~]#systemctl start iptables

3.2.2  使用iptables命令行配置规则 

 命令格式:

  •  iptables  [-t 表名]    管理选项    [链名]     [匹配条件]     [-j 控制类型]

注意事项:

  • 不指定表名时,默认指filter表
  • 不指定链名时,默认指表内的所有链
  • 除非设置链的默认策略,否则必须指定匹配条件
  • 控制类型使用大写字母,其余均为小写

 常用的控制类型:

控制类型作用
ACCEPT允许数据包通过(默认)
DROP直接丢弃数据包,不给出任何回应信息
REJECT拒绝数据包通过,会给数据发送端一个响应信息
SNAT修改数据包的源地址
DNAT修改数据包的目的地址
MASQUERADE伪装成一个非固定公网IP地址
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。LOG只是一种辅助动作,并没有真正处理数据包

DROP 和REJECT的区别前者是直接丢弃传输过来的数据包,并且不给予回应,使访问主机卡在访问页面没有任何提示。后者是拒绝该数据包的通过,并且给予访问主机提示,该访问被拒绝。 

常用的管理选项:

常用的管理选项作用
-A在指定链的末尾追加(--append)一条新的规则
-I(大写i)在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则
-R修改、替换(--replace) 指定链中的某一条规则,可指定规则序号或具体内容
-P设置指定链的默认策略(--policy)
-D删除(--delete) 指定链中的某一条规则,可指定规则序号或具体内容
-F清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L列出(--list) 指定链中所有的规则,若未指定链名,则列出表中的所有链
-n使用数字形式(--numeric) 显示输出结果,如显示IP地址而不是主机名
-v显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers查看规则时,显示规则的序号

匹配的条件:

匹配的条件作用
-p指定要匹配的数据包的协议类型
-s指定要匹配的数据包的源IP地址
-d指定要匹配的数据包的目的IP地址
-i指定数据包进入本机的网络接口
-o指定数据包离开本机做使用的网络接口
–sport指定源端口号
–dport指定目的端口号

四. iptables命令的规则配置运用

4.1 查看iptables的规则 

 4.1.1 粗略查看默认规则
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
#################
列出当前系统中所有iptables防火墙规则的命令。这个命令会显示所有的链(包括INPUT、OUTPUT和FORWARD)以及它们所包含的规则

[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

  注意:当-nL同时使用时,n一定要在L 的前面,否则会报错,使用-vnL时也是如此,L要在最后面

 4.1.2 指定表查看(指定表中链的查看) 

[root@localhost ~]# iptables -t nat  -vnL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
#####
iptables -t nat -vnL 是一个用于列出当前系统中所有iptables NAT(网络地址转换)规则的命令。这个命令会显示所有的链(包括PREROUTING、POSTROUTING和OUTPUT)以及它们所包含的规则。

[root@localhost ~]# iptables -t nat  -vnL  INPUT
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination      
###
iptables -t nat -vnL INPUT 是一个用于列出当前系统中所有iptables NAT(网络地址转换)规则中INPUT链的命令。这个命令会显示INPUT链所包含的规则。

4.2 添加规则 

 添加规则的两个常用选项:

  • -A,在末尾追加规则。
  • -I,在指定位置前插入规则。如果不指定,则在首行插入。

4.2.1 末尾追加规则 (在指定的表和链中)

  • 注意:iptables  -F的清空虽然方便但是一定要在 规则表的默认策略为允许的时候使用,如果
  • 默认为drop会导致远程连接中止,只有重启原服务器才能解决
  • 如果仅仅只需要清空一条链的规则,还要保存其他链的规则,就要指定链来清除(-t) 
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@localhost ~]# iptables -t filter -A INPUT -p icmp -j REJECT
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
############
iptables -F: 这个命令用于清空所有iptables规则,
即删除所有的输入、输出和转发链中的规则。

iptables -nL: 这个命令用于列出当前的iptables规则,其中
-n选项表示以数字形式显示IP地址和端口号,
-L选项表示列出规则。

iptables -t filter -A INPUT -p icmp -j REJECT: 
这个命令用于添加一条新的规则到INPUT链中。
-t filter指定要操作的表为filter表,
-A INPUT表示在INPUT链的末尾添加规则,
-p icmp表示匹配ICMP协议的数据包,
-j REJECT表示拒绝该数据包。

iptables -nL (再次执行): 这个命令再次列出当前的iptables规则,
可以看到已经添加了一条REJECT规则到INPUT链中,用于拒绝所有ICMP协议的数据包。

 拒绝访问

删除规则 

格式:

  • iptables -t 表名 -D 链名 序号/内容
  • iptables -t 表名 -F [链名]    
[root@localhost ~]# iptables -D INPUT -p icmp -j REJECT
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
####
iptables: 这是 Linux 系统上用于配置防火墙规则的工具。
-D: 这个选项表示要删除一个规则。
INPUT: 这是 iptables 中的一个链,用于处理输入流量。
-p icmp: 这个选项指定要匹配的协议为 ICMP(Internet Control Message Protocol),即 Internet 控制报文协议。
-j REJECT: 这个选项指定如果匹配到符合条件的数据包,则执行拒绝操作。

 

修改规则

格式:

  •  iptables -t 表名 -R 链名 序号 新规则内容
  •  iptables -t 表名 -P 链名 ACCEPT/DROP/REJECT
[root@localhost ~]# iptables -t filter -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
4    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:67
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:67
6    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ES
[root@localhost ~]# iptables -t filter -R INPUT 2 -p tcp --dport 22 -j DROP
[root@localhost ~]# iptables -t filter -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
2    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
4    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:67
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:67
6    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
7    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
8    INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
9    INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
10   INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
11   DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
12   REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
13   REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
####

 

查看规则

  • 格式:iptables [-t 表名] -n -L [链名] [--line-numbers]
  • iptables -[vn]L  
  • iptables -n -L --line-numbers
[root@localhost ~]# iptables -t filter -n -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
4    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:67
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:67
6    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
7    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
8    INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
9    INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
10   INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
11   DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
12   REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
13   REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
######
iptables: 这是Linux系统中的一个命令行工具,用于配置内核防火墙。
-t filter: 这个选项指定要操作的链为filter链,即过滤规则链。
-n: 这个选项表示以数字形式显示IP地址和端口号,而不是尝试将它们转换为主机名或服务名称。
-L INPUT: 这个选项表示要列出INPUT链中的规则。
--line-numbers: 这个选项表示在每条规则前面显示规则编号。

 

生产环境中通常使用白名单方式设置规则  

格式:

  • iptables -t 表名 -A 链名 匹配条件 -j ACCEPT 
  •  iptables -t 表名 -A 链名 -j DROP  或  iptables -t 表名 -P 链名 DROP

 

 

 

 匹配条件

通用匹配:条件选项可直接使用

-p      协议  
-s  源IP/网段/域名
-d    目的IP/网段/域名
-i入站网卡接口
-o出站网卡接口

隐含匹配:需要使用 -p 指定协议作为前提                    

-p tcp/udp --dport 目的端口/端口范围
-p tcp/udp --sport 源端口/端口范围
-p icmp --icmp-type 8(请求)/0(回显)/3(目标不可达)

显式匹配:需要使用 -m 指定模块

-m multiport --sport/--dport 端口列表
-m iprange --src-range/--dst-range  IP范围
-m mac --mac-source 源MAC地址
-m state --state RELATED,ESTABLISHED[,NEW,INVALID]          #RELATED,ESTABLISHED 用于放行返回的应答包进站                                                    

iptables规则修改后会立即生效!

保存,还原规则

保存规则  iptables-save > 文件路径
还原规则  iptables-restore < 文件路径
保存为默认规则  iptables-save > /etc/sysconfig/iptables

tcpdump    Linux系统抓包工具

tcp 协议    port 端口 [src/dst]     net 网段     -i 网卡  -s 0  -w XXX.cap
tcp                                             host 主机IP
udp
icmp

SNAT    内网 --> 外网   转换源地址
iptables  -t nat  -A POSTROUTING  -s 内网的源地址/网段  -o 出站网卡  -j SNAT  --to 要转换的公网源地址

DNAT   外网 -->  内网   转换目的地址:端口
iptables  -t nat  -A PREROUTING   -i 入站网卡  -d 原公网目的地址  -p 协议 --dport 原目的端口  -j DNAT  --to 要转换的内网目的地址:端口

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

复习java5.26

面向对象和面向过程 面向过程&#xff1a;把一个任务分成一个个的步骤&#xff0c;当要执行这个任务的时候&#xff0c;只需要依次调用就行了 面向对象&#xff1a;把构成任务的事件构成一个个的对象&#xff0c;分别设计这些对象&#xff08;属性和方法&#xff09;、然后把…

【数据结构课程学习】二叉树_堆:Lesson2

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 1.二插树的概念和结构 &#x1f697;二叉树的概念&#xff1a; &#x1f697;特殊的二叉树&am…

JVM学习-Class文件结构①

字节码文件的跨平台性 Java语言&#xff1a;跨平台的语言(Write Once,Run Anywhere) 当Java源代码编译成字节码后&#xff0c;如果想在不同平台上运行&#xff0c;则无须再次编译这上优势不再那么吸引人&#xff0c;Python,PHP,Ruby,Lisp等有强大的解释器跨平台似乎已经成为一…

【iOS开发】—— KVC

【iOS开发】—— KVC 一. KVC的定义key和keyPath的区别用法&#xff1a; 批量复制操作字典模型相互转化KVC的其他方法 KVC原理赋值原理取值原理 一. KVC的定义 KVC&#xff08;Key-value coding&#xff09;键值编码&#xff0c;就是指iOS的开发中&#xff0c;可以允许开发者通…

C#--SVG矢量图画法示例

1.代码示例 <Viewbox Grid.Column"1" Grid.ColumnSpan"1" Grid.RowSpan"1" ><Path Name"ValveShape" Stroke"Black" Data"M 50,0 L 150,200 L 50,200 L 150,0 Z" Width"200" Height"…

文件系统--inode

文章目录 概述认识磁盘了解磁盘的存储结构对磁盘的存储结构进行逻辑抽象 操作系统对磁盘的使用宏观认识细节认识再谈目录再谈文件的增删 概述 文件有很多&#xff0c;但是被打开的文件很少&#xff0c;这些没有被打开的文件在磁盘中&#xff0c;这就叫做磁盘文件。每次先打开一…

【JavaEE初阶】网络初识|局域网和广域网|交换机和路由器|IP地址|端口号

&#x1f4a1;推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击跳转到网站】 关键概念 1.局域网LAN和广域网WAN &#xff08;1&#xff09;局域⽹&#xff0c;即Local Area Network&#xff0…

一文扫尽Nas常用Docker软件

NAS&#xff08;Network Attached Storage&#xff0c;网络附加存储&#xff09;设备上的Docker软件选择取决于您的具体需求和用途。以下是一些NAS上常用的Docker软件推荐&#xff1a; Docker管理工具&#xff1a; Watchtower&#xff1a;它可以自动更新Docker容器中的镜像&…

浮点型比较大小

浮点数的存储形式 浮点数按照在内存中所占字节数和数值范围&#xff0c;可以分为浮点型&#xff0c;双精度浮点型和长双浮点型数。 代码&#xff1a; printf("lgn:%e \n", pow(exp(1), 100));printf("lgn:%f ", pow(exp(1), 100));输出结果&#xff1a; …

Vue | 自定义组件双向绑定基础用法

Vue | 自定义组件双向绑定基础用法 vue 中&#xff0c;由于单向数据流&#xff0c;常规的父子组件属性更新&#xff0c;需要 在父组件绑定相应属性&#xff0c;再绑定相应事件&#xff0c;事件里去做更新的操作&#xff0c;利用语法糖 可以减少绑定事件的操作。 这里就简单的梳…

ROS | 激光雷达包格式

ros激光雷达包格式&#xff1a; C实现获取雷达数据 &#xff1a; C语言获取雷达数据&#xff1a; Python语言获取雷达数据&#xff1a; python不需要编译&#xff0c;但是需要给它一些权限 chmod x lidar_node.py(当前的文件名字&#xff09; C实现雷达避障&#xff1a; python…

网络模型-NQA与网络协议联动

一、NQA定义 网络质量分析NQA(Network QualityAnalysis)是一种实时的网络性能探测和统计技术&#xff0c;可以对响应时间、网络抖动、丢包率等网络信息进行统计。NOA能够实时监视网络0oS&#xff0c;在网络发生故障时进行有效的故障诊断和定位。 部署IPv4静态路由与BFD…

SpringBoo+vue3整合讯飞星火3.5通过webscoket实现聊天功能(全网首发)附带展示效果

API版本&#xff1a;Spring Boot 整合讯飞星火3.5通过接口Api接口实现聊天功能&#xff08;首发&#xff09;复制粘贴即可使用&#xff0c;后续更新WebSocket实现聊天功能_讯飞星火web聊天-CSDN博客https://blog.csdn.net/qq_53722480/article/details/138865508?csdn_share_t…

QTextEdit将多个字符作为一个整体,不可单独修改

考虑一个问题&#xff0c;QTextEdit如何实现类似微信和QQ聊天输入框中的“xxx”效果&#xff0c;其内容作为一个整体&#xff0c;以突出颜色显示&#xff0c;并且不可以单独编辑修改&#xff0c;只能整体删除修改。 突出颜色显示有很多方式可以实现&#xff0c;例如 通过setT…

【回忆版】数据科学思维与大数据智能分析 2024考试

填空&#xff08;18分&#xff09;18个 1.对数变换对大数值的范围进行压缩&#xff0c;对小数值的范围进行扩展 2.提取出大量高频率项与低频率项相关联的虚假模式&#xff0c;即交叉支持&#xff08;cross-support&#xff09;模式 3.信息论中&#xff08;&#xff09; 4.几种…

vivado 设计连接性

设计连接性 IP集成商提供设计师协助&#xff0c;帮助您完成连接过程 设计。图3显示了MHS的一个示例&#xff0c;图4显示了设计帮助 可在IP集成商中获得 地址映射 在XPS中&#xff0c;无论主机访问从机IP&#xff0c;每个从机都有相同的地址。IP integrator为基于master的寻址提…

Fitting Parameterized Three-Dimensional Models to Images

摘要 基于模型的识别和运动跟踪依赖于解决投影和模型参数&#xff0c;使其最佳适应匹配的2D图像特征的3D模型的能力。本文将当前的参数求解方法扩展到处理具有任意曲面和任意数量的内部参数&#xff08;表示关节、可变尺寸或表面变形&#xff09;的对象。开发了数值稳定化方法…

games 101 作业4

games 101 作业4 题目题解作业答案 题目 Bzier 曲线是一种用于计算机图形学的参数曲线。在本次作业中&#xff0c;你需要实 现 de Casteljau 算法来绘制由 4 个控制点表示的 Bzier 曲线 (当你正确实现该 算法时&#xff0c;你可以支持绘制由更多点来控制的 Bzier 曲线)。 你需…

鸿蒙ArkUI-X平台差异化:【运行态差异化(@ohos.deviceInfo)】

平台差异化 简介 跨平台使用场景是一套ArkTS代码运行在多个终端设备上&#xff0c;如Android、iOS、OpenHarmony&#xff08;含基于OpenHarmony发行的商业版&#xff0c;如HarmonyOS Next&#xff09;。当不同平台业务逻辑不同&#xff0c;或使用了不支持跨平台的API&#xf…

python纯脚本搬砖DNF之深度学习,工作室适用

声明&#xff1a; 本文章仅作学习交流使用,对产生的任何影响&#xff0c;本人概不负责. 转载请注明出处:https://editor.csdn.net/md?articleId103674748 主要功能 脚本已初步完成&#xff0c;可以上机实战了 1.搬砖研究所、海伯伦&#xff08;持续更新中&#xff09; 2.自…