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

iptables教程

 1 iptables安装

1.1 iptables和iptables-service的关系

iptables 是基于内核的,和 iptables-services 没有关系,不用安装任何工具包就可以使用 iptable 命令添加的防火墙规则,

但是iptables添加的规则是临时的,基于内存的,在系统重启后会消失,所以需要 iptables.service 服务来对添加的规则进行保存,

这样在系统重启后重载对应的防火墙规则。

1.2 安装iptables和iptables-service

第一步:1、关闭防火墙
[root@localhost ~]# systemctl status firewalld
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld第二步:查看 iptables 是否安装,安装iptables-services
[root@localhost ~]# rpm -qa iptables
iptables-1.4.21-34.el7.x86_64                              # 系统默认装有 iptables
[root@localhost ~]# yum install iptables                   # 有新版本会安装最新版本
[root@localhost ~]# rpm -qa iptables
iptables-1.4.21-35.el7.x86_64
[root@localhost ~]# yum install iptables-services          # 安装 iptables-services 
[root@localhost ~]# rpm -qa iptables-services
iptables-services-1.4.21-35.el7.x86_64第三步:启动iptables
[root@localhost ~]# systemctl enable iptables.service        # 设置 iptables 开机启动
[root@localhost ~]# systemctl start iptables                 # 开启 iptables
[root@localhost ~]# systemctl status iptables                # 查看 iptables 状态
● iptables.service - IPv4 firewall with iptablesLoaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)Active: active (exited) since Fri 2023-10-06 13:05:53 CST; 2s ago第四步:#防火墙相关模块 加载到内核中,写入到开机自启动.
cat >> /etc/rc.local <<EOF
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state 
EOF
sysctl -p

2 什么是iptables

iptables是Linux的防火墙管理工具而已,真正实现防火墙功能的是Netfilter,我们配置了iptables规则后Netfilter通过这些规则来进行防火墙过滤等操作

Netfilter模块:

它是主要的工作模块,位于内核中,在网络层的五个位置(也就是防火墙四表五链中的五链)注册了一些钩子函数,用来抓取数据包;把数据包的信息拿出来匹配各个各个链位置在对应表中的规则:匹配之后,进行相应的处理ACCEPT、DROP等等。

2.1 iptables的工作流程

  1. 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
  2. 如果匹配成功规则,即明确表示是拒绝(DROP)还是接收(ACCEPT),数据包就不再向下匹配新的规则。
  3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
  4. 防火墙的默认规则是所有规则都匹配完才会匹配的。

3 具体的四表五链

3.1 四表五链定义

四表:filter、nat、managle、raw,默认是filter表。表的处理优先级:raw>managle>nat>filter

四表

filter

过滤数据包

nat

网络地址转换(端口映射、地址映射等。)

mangle

用于对特定数据报的修改。

raw

优先级最高,设置raw时一般是为了不再让iptables做数据报的链接跟踪处理,提高性能。

五链

PREROUTING

数据包进入路由表之前,对数据包做路由选择前应用此链路中的规则,所有的数据包进来的时候都先由这个链处理

INPUT

通过路由表后目的为本机,进来的数据报应用此规则链上的策略

FORWARD

通过路由表后,目标地址不为本机,做转发数据报时应用此规则链上的策略

OUTPUT

由本机产生的外出的数据包向外转发时,应用此规则链中的策略

POSTROUTING

数据报做路由选择后发送后到网卡接口之前应用此链中的规则,所有的数据包出来的时候都先由这个链处理

3.2 表与链之间的包含关系:

filter

INPUT、FORWARD、OUTPUT

nat

PREROUTING(DNAT)、OUTPUT、POSTROUTING(SNAT)

mangle

PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

raw

PREROUTING、OUTPUT

3.3 数据包在4张表和5条链的流向:

4. iptables规则介绍

iptables [-t TABLE] COMMAND CHAIN [num] 匹配标准 -j 处理办法

-t:说明,不指定的时候,默认就是filter表
添加删除替换规则:
-A:附加一条规则,添加在链的尾部
-I CHAIN [num]:插入一条规则,插入为对应CHAIN上的第num条,不指定默认为第一条
-D CHAIN [num]:删除指定链中的第num条规则
-R CHAIN [num]:替换指定的规则例: iptables -A INPUT -p tcp --dport 22 -j ACCEPT  #放行访问本机22端口(ssh)
------------------------------------------------------------------------------------------------------------------------
管理规则链:
-F [CHAIN]:flush,情况指定规则链,如果省略CHAIN,则可以实现删除对应表中的所有链
-P CHAIN:设定指定链的默认策略    
-N:自定义一个新的空链
-X:删除一个自定义的空链
-Z:置零指定链中所有规则的计数器
-E:重命名自定义的链例: iptables -t nat -F       #清空NAT表中所有链上的规则例: iptables -t nat -F PREROUTING   #清空NAT表中PREROUTING链上的规则例: iptables -P INPUT ACCEPT   #指定filter表INPUT链默认策略是放行例: iptables -t nat -X   #删除NAT表中所有链上的规则-N案例(一个抵御洪水攻击的方案):1.在filter表中建一个名为tcp_packets的链:iptables -N syn-flood2.然后可以在自定义链中添加规则:iptables -A syn-flood -m limit --limit 100/s --limit-burst 150 -j RETURNiptables -A syn-flood -j DROP3.然后再把它作为jump的目标,这样我们就会从INPUT链跳入syn-flood链:#iptables -I INPUT -j syn-flood 
------------------------------------------------------------------------------------------------------------------------
查看规则:
-L:显示指定表中的规则
-n:以数字格式显示主机地址和端口号
-v:显示链及规则的详细信息
-x:显示计数器的精确值
--line-numbers:显示规则号码例: iptables -t nat -nL  --line-numbers     #查看NAT表中所有链上的规则,并显示规则序号
------------------------------------------------------------------------------------------------------------------------
通用匹配:
-s,--src :指定源地址
-d,--dst :指定目标地址
-p{tcp|udp|icmp} :指定协议
-i interface :指定数据报文流入的接口(eth0)
可用于定义标准的链:PREROUTING,INPUT,FORWARD
-o interface :指定数据报文流出的接口
可用于标准定义的链:OUTPUT,POSTROUTING,FORWARD例: iptables -t filter -A INPUT -s 192.168.1.1 -d 192.168.1.2 -p icmp -j DROP     #禁止源地址为192.168.1.1 ping 目的地址192.168.1.2
------------------------------------------------------------------------------------------------------------------------
隐含扩展匹配:不用特别指明由哪个模块进行的扩展,因为此时使用{tcp|udp|icmp}
-p tcp--sport PORT[-PORT]: 源端口--dport PORT[-PORT]: 目标端口--tcp-flags mask comp: 只检查mask指定的标志位,是逗号分隔的标志位列表;comp:此列表中出现的标记位必须为1,comp中没出现,而mask中出现的,必须为0;--tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN     第一部分表示:我们需要匹配报文tcp头中的哪些标志位,这6个标志位分别为为”SYN、ACK、FIN、RST、URG、PSH”。第二部分表示:第二部分为SYN,则表示,第一部分需要匹配的标志位列表中,SYN标志位的值必须为1,其他标志位必须为0 --syn例: iptables -t filter -A INPUT -s 192.168.1.1 -d 192.168.1.2 -p tcp --dport 22 -j DROP     #禁止源地址为192.168.1.1 ping 目的地址192.168.1.2例: iptables -A INPUT -p tcp --dport 18:80 -j DROP #拒绝访问本机端口18到80之间的所有端口
-p icmp  (ping)--icmp-type 0: echo-reply   ping应答8: echo-request ping请求        例: iptables -A INPUT -p icmp --icmp-type 8 -s 192.168.239.0/24 -j DROP 例: iptables -A INPUT -p icmp --icmp-type any -s 192.168.239.0/24 -j DROP
-p udp--sport--dport例: iptables -A INPUT -p udp --dport 45 -j DROP  #不允许访问本机udp45端口------------------------------------------------------------------------------------------------------------------------   显示扩展匹配:使用额外的匹配机制,必须指明由哪个模块进行的扩展,在iptables 中使用-m选型可完成此功能-m state:状态扩展结合ip_conntrack追踪会话状态NEW:新连接请求ESTABLISHED:已建立的链接INVALID:非法链接RELATED:相关联的 (ftp,需要加载模块) 例: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT   #允许连接状态为ESTABLISHED,RELATED的连接进入例: iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  ##允许连接状态为ESTABLISHED,RELATED的连接出去
-m multiport:离散的多端口匹配扩展--source-ports--destination-ports--ports-m multiport --destination-ports 21,22,80 -j ACCEPT            例: iptables -A INPUT -p tcp -m multiport --destination-ports 21,22,80 -j ACCEPT    #允许访问本机21,22,80端口
-m iprange   指定范围--src-range--dst-range例: iptables -A INPUT -p tcp -m iprange --src-range 172.16.100.3-172.16.100.100 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-m connlimit  作用:用于限制每一个客户端ip的并发连接数--connlimit-above n    //超过n个并发连接数! --connlimit-above n  //未超过n个并发连接数     iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT      #同一IP超过100以上并发时,就拒绝连接iptables -I INPUT -p tcp --syn --dport 80 -m connlimit ! --connlimit-above 100 -j ACCEPT    #同一IP未超过100以上并发时,就接受连接(和上面一个意思)-m limit  限制并发及速率--limit rate[/second|/minute|/hour|/day] 指定要隔多长时间才能签发一个新的通行证。--limit-burst number    the default is 5 指定刚开始时有多少通行证可用,不指定默认为5--limit 5/minute --limit-burst 3 意思是开始时有3个通行证,用完之后,1分钟只生成5个令牌,即每12秒生成一个,这期间没有剩余令牌的时候,到来的封包,无法匹配此条规则,就会继续往下匹配其他规则,如果有令牌了,则新到的封包就会匹配此条规则          例: iptables -A INPUT -d 192.168.2.102 -p tcp --dport 80 -m limit --limit 5/minute --limit-burst 3 -j ACCEPT -m string                --string pattern:指定要匹配的字符串。! --string pattern:反向匹配。--algo:指定匹配的查询算法,有bm和kmp两种算法。                  String模块的作用是来匹配请求报文中指定的字符串,经常应用于拦截用户访问某些网站的场景,将防火墙当做路由器使用,例如上班时间不允许用户访问淘宝网站等等场景例: iptables -t filter -I OUTPUT -p tcp -m string --string "taobao.com" --algo bm -j DROP #拒绝数据包中包含taobao.com内容的数据包。
------------------------------------------------------------------------------------------------------------------------
动作(target):
-j 
ACCEPT:放行
DROP:丢弃
REJECT:拒绝
DNAT:目标地址转换
SNAT:源地址转换
REDIRECT:端口重定向
MASQUERADE:地址伪装
LOG:日志     --log-prefix  prefix
MARK:打标记-j SNAT --to-source ipaddr[-ipaddr][:port[-port]]例: iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 172.16.100.1  #(共享上网方案)把数据包中源地址是192.168.2.0/24转变为172.16.100.1-j DNAT--to-destination [ipaddr][-ipaddr][:port[-port]]例: iptables -t nat -A PREROUTING -d 172.16.100.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.7:8080  #(端口映射)把数据包中目的地址是172.16.100.7:80转变为192.168.100.7:8080    -j MASQUERADE (外网地址动态获取时使用)例: iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE  #(共享上网方案)把数据包中源地址是192.168.2.0/24转变为MASQUERADE,效果和SNAT一样
------------------------------------------------------------------------------------------------------------------------
-P 设置默认策略
iptables [-t table] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
-P 选项用来定义默认策略(Policy)。注意,这是大写字母 P。ACCEPT 表示接受数据包,DROP 表示丢弃数据包。
一般情况下,我们会把 filter 表的 INPUT 链的默认策略制订的严格一些,比如设为 DROP。而 FORWARD 和 OUTPUT 可以宽松些,设为 ACCEPT。比如我们可以通过下面的命令把 filter 表的 INPUT 链的默认策略设置为 DROP:例: iptables -P INPUT DROP

5.规则保存与恢复:

注意,我们通过 iptables 命令设置的规则都保存在内存中,也就是说系统重启的话所有的配置都会丢失。
我们可以通过 iptables-save 命令把 iptables 的配置保存到文件中:
$ sudo iptables-save > /etc/sysconfig/iptables
在需要时再通过 iptables-restore 命令把文件中的配置信息导入:
$sudo iptables-restore < /etc/sysconfig/iptables

6.生产环境中iptables的设置

#把三个表清空,把自建的规则清空。默认规则(iptables -F命令会把所有规则情况,但是不会修改默认规则,如果默认规则当前是DROP,执行iptables -F会导致立马无法连接机器,因为所有数据包都被拒绝了)
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t nat -F
iptables -t nat -X
#1.允许本机回环lo接口数据流量流出与流入
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#2.允许ssh连接
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
#3.允许访问本机80,443端口
iptables -A INPUT -m multiport -p tcp --dport 80,443 -j ACCEPT
#4.修改INPUT链默认的规则为拒绝(如果要把默认策略设置为DROP的时候,一定要先放行远程登录等一系列权限后再设置为DROP,否则就会立马断开远程连接,也无法再次远程连接)
iptables -P INPUT DROP
#5.内存里规则保存到默认的规则文件里
iptables-save > /etc/sysconfig/iptables

7.iptables NAT实现共享上网和端口映射

7.1 NAT实现为内部服务器提供上网功能(共享上网)

iptables -t nat -A POSTROUTING  -s 172.16.1.7   -j SNAT  --to-source 10.0.0.61

1. 指定nat表,配置POSTROUTING链

2. 源ip是172.16.1.7这台主机进行共享上网,如果是多台(-s 172.16.1.0/24)

3. 指定使用SNAT功能,源地址转换.

4. 通过SNAT功能把数据包中的源ip地址改为防火墙公网的ip地址.(10.0.0.61)

5.如果公网ip不固定, -j SNAT --to-source 10.0.0.61 可以写为 -j MASQUERADE 伪装成公网ip.

环境介绍:

172.16.1.7 想要上网的机器,有2个网卡,eth0为外围,eth1为内网

172.16.1.61 实现NAT功能的防火墙机器,eth0为外围,eth1为内网

172.16.1.7 操作步骤

1.把机器上能上网的网卡关闭

sed -i 's/ONBOOT=yes/ONBOOT=no/' /etc/sysconfig/network-scripts/ifcfg-eth0

2.把不能上网的这张网卡配一个网关地址,地址为实现NAT的防火墙机器IP

vim eth1

GATEWAY=172.16.1.61

3.重启network

systemctl restart network

172.16.1.61操作步骤

1.由于是要把数据从eth1网卡转发到eth1,所以要开启ip_forward功能(内核转发功能)

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

sysctl -p

2.防火墙转发规则配置

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE

测试:

172.16.1.7 上ping 8.8.8.8看能不能通

7.2 NAT实现外部访问本机端口请求转发到内部其他机器特定的端口(端口映射)

iptables -t nat -A PREROUTING -p tcp --dport 6666 -j DNAT --to-destination 172.16.1.7:80

只要访问本机的6666端口,就会把请求转发到 172.16.1.7:80端口

相关文章:

iptables教程

1 iptables安装 1.1 iptables和iptables-service的关系 iptables 是基于内核的&#xff0c;和 iptables-services 没有关系&#xff0c;不用安装任何工具包就可以使用 iptable 命令添加的防火墙规则&#xff0c; 但是iptables添加的规则是临时的&#xff0c;基于内存的&…...

破局外贸企业海外通邮难题,U-Mail邮件中继有绝招

在当今全球化的商业环境中&#xff0c;国内企业正扮演着越来越重要的角色&#xff0c;它们不仅在国内市场活跃&#xff0c;而且在全球范围内拓展业务&#xff0c;成为国际贸易中不可或缺的一部分。然而&#xff0c;尽管这些企业在业务扩展上取得了显著成就&#xff0c;但在与海…...

支持向量机(SVM): 从理论到实践的指南(2)

葡萄酒数据集经常被用于机器学习、模式识别和统计分类算法的测试中。由于其特征维度较高&#xff0c;非常适合于验证特征选择和降维方法&#xff0c;例如主成分分析&#xff08;PCA&#xff09;或线性判别分析&#xff08;LDA&#xff09;的效果。同时&#xff0c;由于数据集包…...

PDF格式分析(八十六)——修订注释(Redaction)

修订注释(PDF 1.7及其以上版本),该注释的做用是标识要从文档中删除的内容。 修订注释启用的步骤如下: 1、内容标识。PDF编辑器可指定应删除的文档内容片段或区域,在执行下一个步骤前,用户可以看到、移动和重新定义这些注释。 2、内容移除。PDF阅读器应删除修订注释指…...

【python】flask中Session忽然取不到存储内容怎么办?

尚未确定,后续更新,先别以此为准。 【背景】 用flask写的Web应用,运行不正常,查看原因,发现视图函数a中设定的session内容在视图函数b忽然拿不到了。 【分析】 这个应用在两个服务器间互相Hook,因此可能涉及跨域的问题。 视图函数a设置的session,再次从前端调用视图…...

05-腾讯云Copilot及 向量数据库AI套件介绍

1 Andon Copilot核心功能介绍 2 Andon Copilot覆盖腾讯云售后、售前场景 3 腾讯云向量数据库– AI套件效果 AI 套件是腾讯云向量数据库&#xff08;Tencent Cloud VectorDB&#xff09;提供的一站式文档检索解决方案&#xff0c;包含自动化文档解析、信息补充、向量化、内容检…...

软件版本库管理工具

0 Preface/Foreword 常用代码版本管理工具包括如下几种&#xff1a; Git&#xff0c;最基本管理工具&#xff0c;由Linux kernel开发者开发Repo&#xff0c;主要用于管理Android SDK&#xff0c;由Google开发Gerrit&#xff0c;代码审查软件 1 Git 最基本的代码版本库管理工…...

LVS负载均衡集群企业级应用实战-LVS/NAT模式(三)

目录 LVS/NAT模式 一. 环境准备 二. 对虚拟服务器操作 三. 对真实服务器操作 四. 打开网站验证 LVS/NAT模式 一. 环境准备 统一关闭防火墙和selinux&#xff0c;时间同步&#xff0c;配置好YUM源系统发行版选择会用就可以&#xff0c;这里也是两种一起使用学习。用的不同系…...

在Spring中如何手动开启事务(使用编程式事务)

这里写自定义目录标题 一、使用 transactionManager1、向容器中注入事务管理器2、使用 transactionManager 提交事务3、测试 二、使用TransactionTemplate1、向容器中注入 TransactionTemplate2、开启事务 一、使用 transactionManager 1、向容器中注入事务管理器 Configurat…...

cv的优势

计算机视觉&#xff08;CV&#xff09;技术是一种通过计算机对图像、视频等视觉数据进行分析和理解的技术。它在多个领域有着广泛的应用&#xff0c;包括图像识别、目标检测、人脸识别、无人驾驶等。下面是一些计算机视觉技术的优势和挑战的例子&#xff1a; 优势&#xff1a;…...

基于某评论的TF-IDF下的LDA主题模型分析

完整代码&#xff1a; import numpy as np import re import pandas as pd import jieba from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.decomposition import LatentDirichletAllocationdf1 pd.read_csv(小红书评论.csv) # 读取同目录下csv文件…...

四、Nginx配置文件-负载均衡

目录 一、负载均衡的作用 二、负载均衡状态 三、负载均衡的指令 1、upstream 指令 2、server指令 四、负载均衡几种方式 1、轮询&#xff08;Round Robin 常用&#xff09; 2、IP Hash &#xff08;较少&#xff09; 3、最少连接数&#xff08;Least Connections 较少&…...

ofd文件预览

文件列表 <template><div><div classfile v-if$myUtils.coll.isNotEmpty(filesList)><div classfile-view><div classfile-view-item :style{justifyContent: align } v-for(item, index) in filesList :keyindex><img classfile-view-item-…...

浅浅了解下Spring中生命周期函数(Spring6全攻略)

你好&#xff0c;这里是codetrend专栏“Spring6全攻略”。 Spring框架设计生命周期回调函数的主要目的是为了提供一种机制&#xff0c;使开发人员能够在对象创建、初始化和销毁等生命周期阶段执行特定的操作。这种机制可以帮助开发人员编写更加灵活和可维护的代码。 举个例子…...

建议收藏!亚马逊卖家必须知道的37个常用术语解释

运营亚马逊&#xff0c;经常会看到很多个专业术语&#xff0c;想必大部分新手卖家都比较陌生&#xff0c;熟悉这些常用术语的含义有助于你更好地运营亚马逊。下面为各位整理了37个在亚马逊跨境电商中常见的术语及其解释&#xff0c;建议收藏&#xff01; 1、SKU Stock Keeping…...

黑苹果睡眠总是自动唤醒(RTC)

黑苹果睡眠总是自动唤醒【RTC】 1. 问题2. 解决方案2.1. 查看重启日志2.2. 配置Disable RTC wake scheduling补丁 3. 后续4. 参考 1. 问题 黑苹果EFI 更换后&#xff0c;总是在手动 睡眠后&#xff0c;间歇性重启&#xff0c;然后再次睡眠&#xff0c;然后再重启。原因归结为&…...

【代码随想录训练营】【Day 49+】【动态规划-8】| Leetcode 121, 122, 123

【代码随想录训练营】【Day 49】【动态规划-8】| Leetcode 121, 122, 123 需强化知识点 买卖股票系列 题目 121. 买卖股票的最佳时机 动态规划贪心&#xff1a;记录左侧的最小值 class Solution:def maxProfit(self, prices: List[int]) -> int:# n len(prices)# # 0…...

k8s metrics-server服务监控pod 的 cpu、内存

项目场景&#xff1a; 需要开启指标服务&#xff0c;依据pod 的 cpu、内存使用率进行自动的扩容或缩容 pod 的数量 解决方案&#xff1a; 下载 metrics-server 组件配置文件&#xff1a; wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/…...

电脑自带录屏在哪?电脑录屏,4个详细方法

在现代社会中&#xff0c;越来越多的人需要在电脑上录制视频&#xff0c;比如录制游戏操作、制作教学视频、演示文稿等等。因此&#xff0c;电脑录屏成为了一项非常重要的功能。那么电脑自带录屏在哪&#xff1f;本文将带领大家看看可以使用哪些方法进行录屏。 录屏方法一&…...

[Cloud Networking] Layer3 (Continue)

文章目录 1. DHCP Protocol1.1 DHCP 三种分配方式1.2 DHCP Relay (中继) 2. 路由协议 (Routing Protocol)2.1 RIP (Routing Information Protocol)2.2 OSPF Protocol2.2.1 OSPF Area2.2.2 Route ID / DR / BDR2.2.3 LSA / OSPF 邻居表 / LSDB / OSPF路由表 2.3 BGP Protocol2.4…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...