Linux之iptables防火墙

news2025/4/13 1:34:59

目录

一.网络安全技术

二.防火墙

2.1.防火墙分类

2.2.iptables工具简述

2.3.iptables基本语法

2.4.控制类型

2.5.查看规则

2.6.添加规则

2.7.黑白名单

2.8.根据规则编号删除 清空 替换规则

2.9.默认策略

2.10.隐藏扩展模块

2.11.显示扩展模块

三.iptables保存规则

四.自定义链使用


一.网络安全技术

①入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类 似于监控系统一般采用旁路部署(默默的看着你)方式。

②入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以 阻断,主动而有效的保护网络的安全,一般采用在线部署方式。

③防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默 认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中。

二.防火墙

2.1.防火墙分类

①按保护范围划分

主机防火墙:服务范围为当前一台主机。

网络防火墙:服务范围为防火墙一侧的局域网。

②按实现方式划分

硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,华为、深信服等。

软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront。

③按网络协议划分

包过滤防火墙:只对osi模型下四层生效,速度快拆包少。

网络层防火墙:OSI模型下四层,又称为包过滤防火墙。

应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层。

Netfilter:

Netfilter是一个Linux内核功能,用于在网络数据包从网络堆栈进入或离开时进行包过滤和操作。Netfilter内称为防火墙的“内核态”。


firewalld和iptables

Firewalld和Iptables都不是防火墙,是防火墙管理工具,被称为防火墙的“用户态”。
Centos 7中默认管理防火墙规则的工具是firewalld。

2.2.iptables工具简述

由软件包iptables提供的命令行工具。
工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。

#查看有没有安装
iptables --version 

①五表(一般都是四表,secure不用)

secure表:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现。

raw表:关闭启用的连接跟踪机制,加快封包穿越防火墙速度。

mangel表:修改数据标记位规则表。

nat表:地址转换规则表。

filter表:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表为filter表。

规则表间的顺序: raw --> mangle–> nat–>filter

规则表的作用:容纳各种规则链。

②五链

INPUT链:处理入站数据包。

OUTPUT链:处理出站数据包。

FORWARD链:转发数据包。

PREROUTING链:处理路由选择前数据包。

POSTROUTING链:处理路由选择后数据包。

规则链的作用:容纳各种防火墙规则,对数据包进行过滤或处理。

链的分类依据:处理数据包的不同时机。

总结:表里有链,链里有规则

2.3.iptables基本语法

iptables  [-t 规则表]  管理选项  [规则链]  [匹配条件]  [-j 处理动作]

iptables -t filter -A INPUT -s 192.168.47.3 - DROP

管理选项                用法示例
-A                           向规则链中添加一条规则,末尾追加
-I                            在规则链的指定位置插入一条规则,未指定序号默认作为第一条
-F                           清除链中所有规则
-P                           设置规则链的默认策略
-D                           从规则链中删除一条规则
-R                           替换规则链中的一条规则
-L                            列出规则链中的所有规则
-n                            所有字段以数字形式显示
-v                            显示详细信息
- -line-number        查看规则编号
-N                          创建一个新的自定义规则链
-X                          删除一个自定义规则链
-Z                          清空规则链中所有规则的数据包和字节数统计
-S                          看链的所有规则或者某个链的规则/某个具体规则后面跟编号

指定匹配条件的选项                功能
-p                                             指定要匹配的 协议类型,例如TCP、UDP、ICMP等
-s                                             指定 源IP地址或地址范围
-d                                             指定 目标IP地址或地址范围
-i  <网络接口>                         指定 输入网络接口
-o <网络接口>                         指定 输出网络接口
-m                                            指定 扩展模块,用于进一步定义匹配条件
- -icmp-type                             指定ICMP类型
- -sport                                    指定源端口号或端口范围
- - dport                                   指定目标端口号或端口范围

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

2.4.控制类型

控制类型需要使用 -j 跳转到某类型处理数据包。

①ACCEPT:允许通过

②REJECT :拒绝通过

③DROP:丢弃,会接受但是将数据包丢弃不处理6、隐藏扩展模块

④SNAT:源地址转换

⑤DNAT:目的地址转换

2.5.查看规则

iptables -vnL #查看所有规则表的规则

-v 详细信息
-n 数字形式显示
-L 查看规则列表

iptables -vnL -t [规则表]  #查看规则表的规则链,默认filter表

2.6.添加规则

#一般只对INPUT和PREROUTING规则链进行处理
#不处理OUTPUT POSTROUTING FORWARD

#新增规则,filter表为例

#拒绝来自 192.168.47.100的通信
iptables [-t filter]  -A INPUT -s 192.168.47.100 -j DROP/REJECT

#插入规则

#将IP地址为192.168.47.50的源地址的流量丢弃
iptables -I INPUT 编号 -s 192.168.47.50 -j DROP

2.7.黑白名单

黑名单:默认全部允许通过,添加谁才不允许谁通过。

白名单:默认全部不允许通过,添加谁允许谁通过。

2.8.根据规则编号删除 清空 替换规则

查看规则编号:

iptables -vnL --line-numbers #查看规则编号

替换:

iptables -R <规则链> <规则编号> <新规则>

iptables -R INPUT 3 -p tcp --dport 22 -j ACCEPT 
#替换INPUT链中第3条规则,将其内容改为允许TCP协议的SSH流量(端口22)通过

删除:

iptables -D <规则链> <要删除的规则>

或者

iptables  -D <规则链> n #n为规则编号

清空:

iptables -F  #清空除默认策略外的所有规则

2.9.默认策略

默认策略是指当没有明确的匹配规则时,iptables 对进出系统的网络流量采取的默认处理方式。

有3种基本的默认策略:ACCEPT、DROP 和 REJECT。

    ACCEPT:允许所有的数据包通过防火墙。

    DROP:阻止所有的数据包通过防火墙。

    REJECT:默认策略为 REJECT 与 DROP 类似,阻止所有的数据包通过防火墙。但不同的是,当数据包被拦截时,会向源主机发送一个拒绝响应消息。

查看:

iptables -L #查看当前 iptables 的默认策略

 配置默认策略:

iptables -P INPUT <策略>
iptables -P OUTPUT <策略>
iptables -P FORWARD <策略>


INPUT 是针对进入系统的数据包,
OUTPUT 是针对离开系统的数据包,
FORWARD 是针对通过系统的数据包
策略可以是 ACCEPT、DROP 或 REJECT


# 允许SSH进入
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许HTTP和HTTPS流量
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

清空和删除:

无法直接清空或者删除默认策略,iptables -F也不行。


只能将ACCEPT改成DROP/REJECT,或者反过来,某种意义上,也等同于删除

2.10.隐藏扩展模块

iptables在使用-p 指定协议时,若指明特定协议后就无须再使用-m指明扩展模块的扩展机制,例如若已经指明是 -p  tcp 协议则使用--dport及--sport等tcp模块内容时即可省略-m tcp。

man iptables-extensions   #查看扩展帮助

端口匹配:

--sport--dport 必须配合-p <协议类型>使用

只能用于匹配连续的端口

--sport 源端口
--dport 目的端口

可以匹配单个端口,也可以匹配端口范围,以源端口匹配为例:

格式含义
–sport 1000匹配源端口是1000的数据包
–sport 1000:3000匹配源端口是1000-3000的数据包
–sport 1000:匹配源端口是1000及以上的数据包
–sport :3000匹配源端口是3000及以下的数据包

TCP模块

 --tcp-flags TCP标志
TCP标志功能
SYN(同步)用于建立连接。
ACK(确认)用于确认收到的数据。
FIN(结束)用于关闭连接。
RST(复位)用于重置连接。
URG(紧急)用于指示数据中有紧急数据部分。
PSH(推送)用于强制接收方立即处理数据。
iptables允许通过来自ens33接口的,具有FIN、RST、ACK和SYN标志的TCP包
只有SYN标志的TCP包,拒绝建立连接

iptables -I INPUT -i ens33 -p tcp \--tcp-flags FIN,RST,ACK SYN -j ACCEPT

--sport  指明源端口,使用格式: --sport  端口或 端口1:端口2(端口1到端口2的连续端口范围指定)。

 --dport  指明目的端口,使用格式: --dport  端口或 端口1:端口2(端口1到端口2的连续端口范围指定)。

ICMP模块

--icmp -type 0/3/8
代码含义
8“Echo- Request” 表示请求
0“Echo- Reply” 表示回复
3"Dest ination-Unreachable"表示目标不可达

 #丢弃icmp的包,别人ping不通本机,本机也ping不通别人
 iptables -A INPUT -p icmp -j DROP
 ​
#禁止其他主机ping本机
 iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
 ​
 #当本机ping不通其它主机时提示目标不可达,此时其它主机需要配置关于icmp协议的控制类型为REJECT
 iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT

--icmp-type  指定icmp的type值制定规则。type值:Echo- Request" (代码为8)、表示请求 "Echo- Reply" (代码为0)表示回复 、"Dest ination-Unreachable" (代码为3)表示目标不可达。

例如设置自己可以ping其他机器但是不允许其他机器ping自己。

2.11.显示扩展模块

扩展模块使用格式:  -m  {模块名}   [选项]

multiport模块

multiport扩展 多端口

可用于匹配非连续的端口,以离散的方式匹配,最多支持15个端口。

iptables -A INPUT  -s 192.168.2.101 -p tcp -m \
multiport --dports 22,80,3306 -j REJECT
#拒绝来自源IP地址为192.168.2.101的TCP流量,并且目标端口号为22、80和3306

--sports 端口1,端口2 ,等 使用,隔开最多指定15个不连续端口

--dports 端口1,端口2 ,等 使用,隔开最多指定15个不连续端口。

iprange模块

iprange扩展功能模块用于在防火墙规则中匹配特定的IP地址范围。

基本格式
-m iprange --src-range IP范围

iptables -A INPUT  -m ip range --src-range 192.168.91.101-192.168.91.103 -j REJECT
# 拒绝来自源IP地址范围为192.168.91.101到192.168.91.103的所有流量,并且应用于INPUT链(也就是进入服务器的流量)

iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-192.168.80.200 -j DROP
#禁止转发源地址位于192.168.80.100-192.168.80.200的udp数据包

iprange模块可以指定连续的(一般不是整个网络)ip地址范围。

--src-range 源地址范围或 目的地址范围,例如:10.0.0.0-10.0.0.15。

--dst-range 源地址范围或 目的地址范围,例如:10.0.0.0-10.0.0.15。

mac地址模块

mac模块用于匹配和处理MAC地址相关的防火墙规则,可以限制特定MAC地址的访问或过滤特定MAC地址的流量。

基本格式
-m mac --mac-source XX:XX:XX:XX:XX:XX  #根据源MAC地址匹配
-m mac --mac-destination XX:XX:XX:XX:XX:XX#根据目标MAC地址匹配

指明源MAC地址,适用INPUT链,PREOUTING,POSTROUTING链。

--mac-source    源mac地址,只能指定源mac地址。

string字符串模块

string模块用于在数据包的内容中搜索指定的字符串,并根据匹配结果执行相应的操作。

基本格式
-m string --string 字符串 --algo bm/kmp
#bm kmp为字符串检测算法

iptables -A INPUT -p tcp --dport 80 -m string --string "example" --algo bm -j DROP
#对于目标端口为80的TCP流量,在数据包的内容中搜索字符串"example"
#如果匹配成功,则使用DROP动作丢弃该数据包

可以使用string模块指定字符串范围。

--from offset 字符串开始查询的地方。

--to offset     字符串结束查询的地方  。

例如:iptables -A OUTPUT -p tcp --sport 80 -m string --algo bm --from 62 --string "bilibili" -j REJECT 

connlimit模块

connlimit扩展模块用于限制连接数量,根据活动连接数量的条件来控制数据包的流动。

基本格式
-m connlimit --connlimit-匹配选项 匹配条件

匹配选项功能
above n指定连接数量超过n个时触发匹配
upto n指定连接数量小于n个时触发匹配
equal n指定连接数量等于n个时触发匹配
maks指定连接数量的掩码来匹配连接数量

iptables -A INPUT -p tcp --syn --dport 80  -m connlimit --connlimit-above 10 -j REJECT
#对于TCP协议、目标端口为80的数据包,如果活动连接的数量超过10个,则拒绝该连接

iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 5 --connlimit-mask 16 -j REJECT
#对于TCP协议、目标端口为22(SSH)的数据包
#如果同一子网的连接数量超过5个,拒绝连接

据每客户端IP做并发连接数数量匹配,可防止Dos(Denial of Service,拒绝服务)攻击。

--connlimit-upto N     #连接的数量小于等于N时匹配

--connlimit-above N   #连接的数量大于N时匹配

例如:iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 2 -j REJECT

time模块

time模块用于根据时间条件匹配数据包,可以限制特定时间段内进出防火墙的数据包。

基本格式


-m time --匹配选项 匹配条件

匹配选项含义
- -timestart指定开始时间
- -timestop指定结束时间
- -datestart指定开始日期
- -datestop指定结束日期
- -daysMon-Fri

iptables -A INPUT -m time --timestart 08:00 --timestop 17:00 \
--datestart 2023-08-01 --datestop 2023-08-31 --days Mon-Fri -j ACCEPT

#在2023年8月1日至2023年8月31日期间的每个工作日的08:00至17:00之间,接受(ACCEPT)输入的数据
#如果不在指定的日期和时间范围内或不是工作日,则不匹配该规则

stat模块

state模块用于匹配连接的状态,根据连接的状态来过滤数据包。

基本格式
 --state state 连接状态

常见连接状态           含义
NEW                        与任何连接无关的,还没开始连接
ESTABLISHED        响应请求或者已建立连接的,连接态
RELATED                与已有连接有相关性的(如FTP主被动模式的数据连接),衍生态,一般与ESTABLISHED        配合使用
INVALID                   不能被识别属于哪个连接或没有任何状态
UNTRACKED          未进行追踪的连接,如:raw表中关闭追踪

iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
#对于输入的数据包,如果连接状态是NEW(新建连接)或ESTABLISHED(已建立连接),允许该数据包通过

stat模块可以根据连接状态控制数据包。

NEW:新发出的请求;第一次发出的请求。

ESTABLISHED:new之后的正常连接状态。

例如:ipatables -A INPUT -m state --state NEW -j REJECT

           ipatables -A INPUT -m state --state ESTABLISHED -j ACCEPT

控制流量模块

limit控制流量模块,可以控制通过的包数以及每分钟或每小时通过的包数。

--limit     10/minute(1分钟之内只允许10个包通过)

--limit-burs    数字    例如: --limit-burst 5(允许通过前5个包,5个包不受影响)

三.iptables保存规则

将写好的规则导入一个文件中  iptables-save >文件名。

永久保存保存规则的文件重新写入   iptables-restore <保存规则的文件名。

四.自定义链使用

①自定义链添加:iptables -N web(链名) 创建链

②自定义链改名:iptabels -E web(原来名称) (新名称) 自定义链改名

③创建自定义链规则:iptables -t filter -I web -p icmp -j REJECT 创建自定义规则,iptables的链中添加一条对应到自定义链中才能生效

④iptabales创建对应链规则然后跳转自定义链web:iptables -t filter -I INPUT -p icmp -j web

⑤删除自定义规则链:先删除iptables INPUT链中的对应关系,然后删除自定义链中的规则。

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

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

相关文章

LabVIEW开发干扰对无线网络基础设施进行隐蔽影响测试

LabVIEW开发干扰对无线网络基础设施进行隐蔽影响测试 针对各种级别和类型的信息资源的DDoS攻击因其相对容易创建和应用的高效率而最为流行。同时&#xff0c;现有的机制不足以检测它们。因此&#xff0c;防范此类攻击的问题变得越来越紧迫&#xff0c;包括在实施IEEE 802.11标…

linux Firewalld学习笔记

1、Firewalld默认策略 默认情况会阻止流量流入&#xff0c;但允许流量流出。 2、Firewalld区域概念 拒绝区域drop、默认区域public、允许区域trusted 3、区域规则 区域与网卡接口 默认区域规则 常用的有trusted &#xff08;相当于白名单&#xff09;、work/public 区、…

如何在 Linux 中设置 SSH 无密码登录

SSH&#xff08;Secure SHELL&#xff09;是一种开源且可信的网络协议&#xff0c;用于登录远程服务器以执行命令和程序。 它还用于使用安全复制 (SCP) 命令和 rsync 命令通过网络将文件从一台计算机传输到另一台计算机。 在本文[1]中&#xff0c;我们将向您展示如何在基于 RHE…

map、sync.map、concurrent-map适用场景与源码解析

最近一直加班&#xff0c;无论工作日还是周末&#xff0c;虽然每天很忙但总感觉空空的&#xff0c;很少有时间停下来思考与总结。项目中各种甩锅&#xff0c;最后最苦逼的还是落到了研发的头上&#xff0c;文档编写、环境部署、问题排查虐得一遍又一遍。事情杂乱&#xff0c;研…

C语言之函数题

目录 1.乘法口诀表 2.交换两个整数 3.函数判断闰年 4.函数判断素数 5.计算斐波那契数 6.递归实现n的k次方 7.计算一个数的每位之和&#xff08;递归&#xff09; 8.字符串逆序&#xff08;递归实现&#xff09; 9.strlen的模拟&#xff08;递归实现&#xff09; 10.求…

信息化发展2

信息系统生命周期 1 、软件的生命周期通常包括&#xff1a;可行性分析与项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等阶段。 2 、信息系统的生命周期可以简化为&#xff1a;系统规划&#xff08;可行性分析与项目开发计划&#xff09;&#xff0c;系统分析…

【算法训练-链表】合并两个有序链表、合并K个有序链表

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;首先&#xff0c;链表对应的数据结构在这篇Blog中&#xff1a;【基本数据结构 一】线性数据结构&#xff1a;链表&#xff0c;基于对基础知识的理解来进行题目解答。…

(笔记二)利用opencv调用鼠标事件在图像上绘制图形

目录 &#xff08;1&#xff09;查看cv2所支持的鼠标事件&#xff08;2&#xff09;通过鼠标事件在图像上做标记&#xff08;3&#xff09;高级操作&#xff1a;通过移动鼠标在图像绘制图形、曲线 该功能主要创建一个鼠标事件发生时执行的回调函数。鼠标事件可以是任何与鼠标有…

配置Flink

配置flink_1.17.0 1.Flink集群搭建1.1解压安装包1.2修改集群配置1.3分发安装目录1.4启动集群、访问Web UI 2.Standalone运行模式3.YARN运行模式4.K8S运行模式 1.Flink集群搭建 1.1解压安装包 链接: 下载Flink安装包 解压文件 [gpbhadoop102 software]$ tar -zxvf flink-1.1…

前端需要理解的性能优化知识

优化的目的是展示更快、交互响应快、页面无卡顿情况。 1 性能指标 2 分析方法 使用 ChromeDevTool 作为性能分析工具来观察页面性能情况。其中Network观察网络资源加载耗时及顺序&#xff0c;Performace观察页面渲染表现及JS执行情况&#xff0c;Lighthouse对网站进行整体评分…

Linux驱动-I2C子系统基本分析

​第一&#xff1a;Linux中I2C驱动框架分析 I2C核心&#xff08;i2c_core&#xff09; I2C核心维护了i2c_bus结构体&#xff0c;提供了I2C总线驱动和设备驱动的注册、注销方法&#xff0c;维护了I2C总线的驱动、设备链表&#xff0c;实现了设备、驱动的匹配探测。此部分代码由…

CNN 01(CNN简介)

一、卷积神经网络的发展 convolutional neural network 在计算机视觉领域&#xff0c;通常要做的就是指用机器程序替代人眼对目标图像进行识别等。那么神经网络也好还是卷积神经网络其实都是上个世纪就有的算法&#xff0c;只是近些年来电脑的计算能力已非当年的那种计算水平…

sql语句中的ddl和dml

操作数据库&#xff1a;CRUD C&#xff08;create&#xff09; 创建 *数据库创建出来默认字符集为utf8 如果要更改字符集就 Create database 名称 character set gbk&#xff08;字符集&#xff09; *创建数据库&#xff1a;create database 名称 *先检查是否有该数据库在…

Python第三方库纵览

Python第三方库纵览 知识点 更广泛的Python计算生态&#xff0c;只要求了解第三方库的名称&#xff0c;不限于以下领域: 网络爬虫、数据分析、文本处理、数据可视化、用户图形界面、机器学习、Web开发、游戏开发等 知识导图 1、网络爬虫方向 网络爬虫是自动进行HTTP访问并捕…

【JAVA】实现API 接口参数签名

使用sa-tokenSpringBoot拦截器实现API 接口参数签名 在涉及跨系统接口调用时&#xff0c;我们容易碰到以下安全问题&#xff1a; 1.请求身份被伪造。 2.请求参数被篡改。 3.请求被抓包&#xff0c;然后重放攻击。 1.引入 sa-token sa-token官方文档:https://sa-token.cc/doc.ht…

HCIP-HCS华为私有云

1、概述 HCS&#xff08;HuaweiCoudStack&#xff09;华为私有云&#xff1a;6.3 之前叫FusionSphere OpenStack&#xff0c;6.3.1 版本开始叫FusionCloud&#xff0c;6.5.1 版本开始叫HuaweiCloud Stack (HCS)华为私有云软件。 开源openstack&#xff0c;发放云主机的流程&am…

第五章 树与二叉树 一、树的定义与考点

一、定义 1.树是由n (n > 0) 个节点组成的有限集合。 2.当n0时&#xff0c;称为空树。 3.在非空树中&#xff0c;有且仅有一个节点没有前驱&#xff0c;其他节点都有且仅有一个前驱&#xff0c;称为根节点。 4.每个节点有零个或多个子节点&#xff0c;而每个子节点又有零…

多态/虚函数/虚函数表

OVERVIEW 多态/虚函数/虚函数表1.虚函数引入后类发生的变化&#xff1f;2.虚函数表的生成时机和生成原因&#xff1f;3.虚函数表指针赋值的时机&#xff1f;4.类对象在内存中的布局&#xff1f;5.虚函数的工作原理和多态性的体现&#xff1f;6.其他问题 多态/虚函数/虚函数表 n…

Android JNI系列详解之生成指定CPU的库文件

一、前提 这次主要了解Android的cpu架构类型&#xff0c;以及在使用CMake工具的时候&#xff0c;如何指定生成哪种类型的库文件。 如上图所示&#xff0c;是我们之前使用CMake工具默认生成的四种cpu架构的动态库文件&#xff1a;arm64-v8a、armeabi-v7a、x86、x86_64&#xff0…

昇腾Ascend+C编程入门教程(纯干货)

2023年5月6日&#xff0c;在昇腾AI开发者峰会上&#xff0c;华为正式发布了面向算子开发场景的昇腾Ascend C编程语言。Ascend C原生支持C/C编程规范&#xff0c;通过多层接口抽象、并行编程范式、孪生调试等技术&#xff0c;极大提高了算子的开发效率&#xff0c;帮助AI开发者低…