Linux防火墙(iptables)
一、linux的防火墙组成
linux的防火墙由netfilter和iptables组成。用户空间的iptables制定防火墙规则,内核空间的netfilter实现防火墙功能。
netfilter(内核空间)位于Linux内核中的包过滤防火墙功能体系,称为Linux防火墙的“内核态”。
iptables(用户空间)位于/sbin/iptables,是用来管理防火墙的命令的工具,为防火墙体系提供过滤规则/策略,决定如何过滤或处理到达防火墙主机的数据包,称为Linux防火墙的“用户态”。
Linux系统的防火墙功能是由内核实现的,包过滤防火墙工作在TCP/IP的网络层。用户空间的iptables制定相应的规则策略控制内核空间的netfilter处理相应的数据访问控制。
二、iptables 概述
iptables是Linux斜体自带的防火墙工具,支持数据包过滤、数据包转发、地址转换、基于MAC地址的过滤、基于状态的过滤、包速率限制等安全功能。iptables可以用于构建Linux主机防火墙,也可以用于搭建网络防火墙。
三、iptables 结构
iptables的四表tables与五链chains
四表:filter、nat、mangle、raw
五链:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING。
表与链关系图
四、iptables 的四表五链功能
四表功能
filter:一般的过滤功能
nat:用于nat功能(端口映射,地址映射等)
mangle:用于对特定数据包的修改
raw:有先级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能。
表的处理优先级:raw>mangle>nat>filter。
当数据包抵达防火墙时,将依次应用raw、mangle、nat和filter表中对应链内的规则(如果有)如下图所示。
五链功能
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARD:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外转发
POSTROUTIONG:发送到网卡接口之前。
注:INPUT、OUTPUT链更多的应用在“主机防火墙”
中,即主要针对服务器本机进出数据的安全控制;而FORWARD、PREROUTING、POSTROUTING链更多的应用在“网络防火墙”
中,特别是防火墙服务器作为网关使用时的情况。
1、filter表和input链、forward链、output链关系
Filter表 和主机自身相关、负责防火墙(过滤本机流入、流出数据包)。 是iptables默认使用的表。这个表定具有三个链(chains):
INPUT:负责过滤所有目标地址是主机(防火墙)地址的数据包、通俗的讲、就是过滤进入主机的数据包。
FORWARD:负责转发流经主机但不进入本机的数据包、起转发作用、和NAT表关系很大、后面会详细介绍
OUTPUT:处理所有原地址是本机地址的数据包、通俗的讲就是处理从主机发出去的数据包。
2、nat表和output链、prerouting链、postrouting链关系
NAT表 是网络地址转换的意思。即负责来源与目的IP地址和port的转换、和主机本身无关。一般用于局域网多人共享上网或者内网IP映射外网IP及不同端口转换服务等功能。Nat表的功能很重要、这个表具有三个链(chains) :
OUTPUT:主机发出去的数据包有关、在数据包路由之前改变主机产生的数据包的目的地址等。
PREROUTING:在数据包刚到达防火墙时、进行路由判断之前执行的规则、改变包的目的地址(DNAT功能)、端口等(通俗比喻,就是收信时、根据规则重写收件人的地址、这看上去不地道啊)把公司IP映射到局域网的机器上、此链多用于把外部IP地址端口的服务、映射为内部IP地址及端口
POSTROUTING:在数据包离开防火墙时进行路由判断之后执行的规则、改变包的源地址(SNAT)、端口等(通俗比喻、就是寄信时写好发件人的地址、要让人家回信是能够有地址可回)刺链多用于局域网共享上网,把所有局域网的地址、转换为公网地址
3、mangle表和input链、forward链、output链、prerouting链、postrouting链的关系
Mangle 主要负责修改数据包中特殊的路由标记,如TTL、TOS、MARK等、这个表定义了5个链(chains)
INPUT:同filter表的INPUT
FORWARD:同filter表的FORWARD
OUTPUT:同fileter表的OUTPUT
PREROUTING:同nat表的PREROUTING
POSTOUTING:同nat表的POSTOUTING
4. Raw表和output链、prerouting链关系
RAW表只使用在PREROUTING链和OUTPUT链上、因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表、在某个链上、RAW表处理完后、将跳过NAT表和
ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了。RAW表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度。
五、iptables 的工作原理
匹配顺序
自上向下按顺序依次进行检查,找到相匹配的规则即停止 (LOG策略例外,表示记录相关日志)
若在该链内找不到相匹配的规则,则按该链的默认策略处理 (未修改的状况下,默认策略为允许)
六、iptables 处理动作
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。
MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
DNAT:目标地址转换。
REDIRECT:在本机做端口映射。
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配。
七、iptables 命令中常用的参数
-t 指定要操纵的表,如果不指定-t参数,默认就会自动匹配filter
-P 设置默认策略:iptables -P INPUT (DROP|ACCEPT)
-F 清空规则链,并不影响 -P 设置的默认规则,默认规则需要手动进行修改
-L 查看规则链
-A 在规则链的末尾加入新规则,该规则增加在原规则的后面,例如原来有3条规则使用-A选择就可以添加第4条规则;
-I num 向规则链中插入一条规则,如果没有指定此规则的顺序,默认是插入变成第一条规则;如果要添加为第3条规则,就在-I后面的规则链后面添加3这数字,例如在INPUT链中添加第3条规则:iptables -I INPUT 3 后面添加相应的参数
-D num 删除某一条规则
-R 替换规则链中的一条规则
-Z 清空规则链中的数据包计算器和字节计数器,它是计算同一数据包出现次数
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
--dport num 限制目标的端口号码,端口号码也可以是连续的,例如:2000:3000代表端口2000到3000
--sport num 限制来源的端口号码,端口号码也可以是连续的,例如:2000:3000代表端口2000到3000
-X 删除用户自定义的链
-N 创建新的用户自定义规则链;
-n 地址和端口以数字的形式输出:
-v 显示规则链中更多的信息,比如网络接口等
-j 后面接操作策略,主要的策略有 接受(ACCEPT)、丢弃(DROP)、拒绝(REJECT)、日志记录(LOG)
-m 显式扩展
iptables命令选项输入顺序:
1、iptables [A/I/D/R 规则链名] [-i/o 网络接口] [-p 协议名] [-s 源IP/源子网] [-d 目标IP/目标子网] [--sport 源端口] [--dport 目标端口] [-j 策略]。
2、上面的命令如果不指定[-i/o 网络接口]则对主机的所有接口生效,不指定[-s 源IP/源子网] [-d 目标IP/目标子网]则对代任何网络(0.0.0.0)生效。
3、使用[--sport 源端口] [--dport 目标端口]需要加上-p tcp或-p udp才会生效。
八、查看Linux防火墙的设置
root@debian:~# iptables -L -vn
Chain INPUT (policy ACCEPT 15 packets, 2135 bytes)pkts bytes target prot opt in out source destination 439 45100 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:220 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:23Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 89 packets, 16596 bytes)pkts bytes target prot opt in out source destination
root@debian:~#
上面的输出中每一个Chain就是一个链,上面有三个链INPUT,FORWARD,OUTPUT每个链括号中的policy就是默认的策略,每一个iptables 规则都伴随着一组记量器, 当封包符合 iptables 內的某一个规则时, 便会将包大小与数量累加到该规则所属的計量器。
下面的pkts、bytes、target、prot、opt、in、out、source、destination代表的分别是
pkts: packets, 被本规则所匹配到的报文的个数;
bytes: 被本规则所匹配到的所有报文的大小之和,会执行单位换算;
target:代表进行的操作,ACCEPT是放行,DROP是丢弃,REJECT是拒绝
prot:代表使用的数据包协议,主要有tcp、udp、icmp三种数据包协议
opt:额外的选项说明
in: 数据包的流入接口
out: 数据包的流出接口
source:规则中针对那个来源IP进行限制
destination:规则中针对那个目的IP进行限制
九、iptables 常用实例
1、清除所有iptables规则
iptables -F
iptables -X
iptables -Z
2、自定义默认策略
iptables -P INPUT DROP
进入主机的数据包默认全部丢弃,需要放行的数据包通过策略再进行放行,这样主机比较安全
iptables -P OUTPUT ACCEPT
从主机出去的数据包默认当热要放行了,但是如果主机当作代理服务之类的要考虑是否所以数据包允许通过
iptables -P FORWARD DROP
禁止主机进行NAT,如果主机当作NAT要进行相应的策略配置
3、开放指定的端口,当默认INPUT链为DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
允许ssh服务的22端口通过
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
如果把OUTPUT默认规则设置成DROP的就要写上这一条
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
插入第3条规则允许ssh服务的22端口通过
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
允许FTP服务的20端口通过
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
允许FTP服务的21端口通过
iptables -A INPUT -j DROP
禁止其他未允许的规则访问
iptables -A FORWARD -j DROP
禁止其他未允许的规则访问
iptables -A OUTPUT -j ACCEPT
允许所有本机向外的访问
iptables -A INPUT -p tcp --sport 2222 -j ACCEPT
这个比较特殊,是允许访问的主机应用通过2222端口发起的就允许通过,一般INPUT配合--sport很少用,
主要是INPUT配合--dport使用,OUTPUT配合--sport使用。
4、开放指定IP或网段,当默认INPUT链为DROP
iptables -I INPUT -s 127.0.0.1 -j ACCEPT
允许本地回环接口(即运行本机访问本机)
iptables -I INPUT -s 192.168.2.100 -j ACCEPT
允许单个IP通过的命令
iptables -I INPUT -s 10.0.0.0/8 -j ACCEPT
允许整个网段即从10.0.0.1到10.255.255.254通过的命令
iptables -I INPUT -s 192.168.2.0/24 -j ACCEPT
允许整个网段即从192.168.2.1到192.168.2.254通过的命令
iptables -I OUTPUT -d 192.168.2.0/24 -j ACCEPT
如果把OUTPUT默认规则设置成DROP就要加上这一条才能允许整个网段通过
iptables -I INPUT -d 192.168.2.100 -j ACCEPT
如果被访问的服务器地址是192.168.2.100则这条命令会允许所有访问,一般INPUT 配合-d很少有,主要是INPUT配合-s使用,OUTPUT配合-d使用。
5、开放指定网络接口,当默认INPUT链为DROP,多用于有多个网卡的时候
iptables -A INPUT -i lo -j ACCEPT
允许本地回环接口(即运行本机访问本机),只是这个是通过接口来实现
iptables -A OUTPUT -o lo -j ACCEPT
如果把OUTPUT默认规则设置成DROP的就要写上这一条
iptables -A INPUT -i enp0s3 -j ACCEPT
允许从网卡enp0s3口进入的数据包通过
iptables -A OUTPUT -o enp0s3 -j ACCEPT
允许从网卡enp0s3口出去的数据包通过
6、允许icmp包通过,也就是允许ping
iptables -A INPUT -p icmp -j ACCEPT
(INPUT设置成DROP的话)
iptables -A OUTPUT -p icmp -j ACCEPT
(OUTPUT设置成DROP的话)
7、允许从网卡enp0s3口进入的192.168.0.106地址的主机访问ssh
iptables -I INPUT -i enp0s3 -s 192.168.0.106 -p tcp --dport 22 -j ACCEPT
8、从规则链中删除一条规则
iptables -D INPUT -p tcp --dport 22 -j ACCEPT
删除ssh服务的22端口通过
iptables -D INPUT n
按规则序号删除,n代表INPUT链中从上让下数的第n条规则,也可用到OUTPUT和FORWARD链中
9、阻止指定IP地址
iptables -A INPUT -s "1.0.98.1" -j DROP
丢弃来自1.0.98.1的包
iptables -A INPUT -i eth0 -p tcp -s "1.0.98.1" -j DROP
阻止来自eth0网卡的tcp的包
10、允许所有SSH的链接请求
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
允许所有来自外部的SSH连接请求,即只允许进入eth0接口,并且目标端口为22的数据包
iptables -t filter -A INPUT -j DROP —dport 90
在filter表中的中插入拒绝由90端口的机器向本机发送tcp报文
11、删除规则
iptables -D INPUT -s "1.0.98.1" -j DROP
iptables -D INPUT -i eth0 -p tcp -s "1.0.98.1" -j DROP
iptables -D INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -D OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -D INPUT -j DROP —dport 90
删除上面的规则
12、显式匹配
要求以"-m 扩展模块"的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件。
多端口匹配∶
-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -i ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
IP范围匹配∶
-m iprange --src-range IP范围
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数据包
MAC地址匹配∶
-m mac --mac-source MAC地址
iptables -A FORWARD -m mac --mac -source xx:xx:xx:xx:xX:xx -j DROP
禁止来自某MAC 地址的数据包通过本机转发
状态匹配∶
-m state_–state 连接状态
常见的连接状态∶
NEW ∶与任何连接无关的,还没开始连接
ESTABLISHED ∶响应请求或者已建立连接的,连接态
RELATED ∶ 与已有连接有相关性的(如FTP 主被动模式的数据连接),衍生态,一般与ESTABLISHED 配合使用
INVALID ∶ 不能被识别属于哪个连接或没有任何状态
iptables -A FORWARD -m state --state NEW -p tcp !--syn -j DROP
禁止转发与正常 TCP 连接无关的非–syn 请求数据包(如伪造的网络攻击数据包)
iptables -I INPUT -p tcp -m multiport --dport 80, 22,21,20,53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED, RELATED -j ACCEPT
13、端口转发(端口转发不修改IP地址)
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 18080 -j REDIRECT --to-port 80
14、目的地址转换(DNAT,修改IP地址)
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 10.1.201.2 --dport 18080 -j DNAT --to-destination 192.168.201.2:80
15、源目的地址转换(SNAT)
iptables -t nat -A POSTROUTING -s 192.168.201.2 -j SNAT --to-source 10.1.201.2#网络地址伪装iptables -t nat -A POSTROUTING -s 192.168.201.0/24 -j MASQUERADE
十、iptables扩展模块state
当我们为了安全把防火墙的INPUT链的默认规则设置成DROP,这样任何数据包都不能进入我们的主机,这样就会有问题,当我们访问网页时会无法显示页面的,因为访问网页是双向的,你发出去的请求数据会返回相应的应答数据包,但是防火墙拒绝了任何数据包,所以网页无法显示。你可以开放相应的端口,但是这只是其中的一个应用,如果要访问的应用很多你就会疯掉,需要开发多少个端口,应用对应的端口又是什么,头都大了,怎么办呢?
可以用扩展模块state来实现,从字面上理解,state可以翻译为状态,但是我们可以用另外一个词来形容 <连接追踪>,那么连接的是什么,你可能下意识的想到tcp链接,对于state模块而言的连接并不能与tcp的连接等同,在TCP/IP协议中,UDP和ICMP是没有所谓的连接的,但是对于state模块来说,tcp、udp、icmp报文,都是有连接状态的,我们可以这样认为,对于state模块而言,
只要两台机器在你来我往的通信,就算建立起了连接,而数据包在这个所谓的链接中是什么状态呢
在state中封包的4种链接状态分别为:
NEW
ESTABLISHED
RELATED
INVALID
NEW:当你在使用UDP、TCP、ICMP等协议时,发出的第一个包的状态就是“NEW”
ESTABLISHED:我们可以把NEW状态包后面的包的状态理解为ESTABLISHED,表示连接以建立。如下图:
RELATED:这里我大致讲一下,当你执行Linux下执行traceroute(Windows下对应的命令为tracert)命令时,这个traceroute会发出一个封包,该封包的TTL(生存时间,Time To Live)位1,当这个包遇到路由器的时候它的TTL会减少1,这时TTL = 0,然后这个包会被丢弃,丢弃这个包的路由器会返回一个ICMP Type 11的封包给你,并告诉你那个发出的数据包已尽死。而这个ICMP Type 11的链接状态就是“RELATED”。
INVALID:状态为INVALID的包就是状态不明的包,也就是不属于前面3中状态的包,这类包一般会被视为恶意包而被丢弃。
通过下面的命令允许ESTABLISHED和RELATED状态的数据包通过:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
通过上面的命令就可以正常的访问浏览器了。
十一、iptables-save命令
选项
-c:指定要保存的iptables表时,保存当权的数据包计算器和字节计数器的值。
-t:指定要保存的表的名称。
实例:保持当前主机iptables的规则到文件/etc/local/iptables/rules.v4.1.save(这个文件的路径和名字可以自定义)
iptables-save > /etc/local/iptables/rules.v4.1.save
十二、iptables-restore命令
iptables-restore命令用来还原iptables-save命令所备份的iptables配置。
选项
-c:指定在还原iptables表时候,还原当前的数据包计数器和字节计数器的值。
-t:指定要还原表的名称。
实例
iptables-restore < /etc/local/iptables/rules.v4.1.save
/etc/local/iptables/rules.v4.1.save是iptables-save命令所备份的文件。
相关文章:

Linux防火墙(iptables)
一、linux的防火墙组成 linux的防火墙由netfilter和iptables组成。用户空间的iptables制定防火墙规则,内核空间的netfilter实现防火墙功能。 netfilter(内核空间)位于Linux内核中的包过滤防火墙功能体系,称为Linux防火墙的“内核…...

zookeeper教程
zookeeper教程 zookeeper简介zookeeper的特点及数据模型zookeeper下载安装zookeeper客户端命令zookeeper配置文件zookeeper服务器常用命令zookeeper可视化管理工具zkuizookeeper集群环境搭建zookeeper选举机制使用Java原生api操作zookeeper使用java zkclient库操作zookeeper使用…...

杭州快递物流展-2024长三角快递物流供应链与技术装备展览会(杭州)
2024快递物流创新高质量发展论坛暨 2024长三角快递物流供应链与技术装备展览会(杭州) 时间:2024年4月12-14 日 地点:杭州国际博览中心 ESYE长三角快递物流展是亚洲范围内超大规模的快递物流业展示平台,由于展会的需求 及扩大市场的影响力…...

CSP 202203-1 未初始化警告
答题 要注意是xi和yi的范围,yi可以是0为常数。 #include<iostream> using namespace std;int main() {int n,k;cin>>n>>k;bool*initializenew bool[n]{false};int result0,x,y;while(k--){cin>>x>>y;if(y&&!initialize[y-1…...

开发指导—利用组件插值器动画实现 HarmonyOS 动效
一. 组件动画 在组件上创建和运行动画的快捷方式。具体用法请参考通用方法。 获取动画对象 通过调用 animate 方法获得 animation 对象,animation 对象支持动画属性、动画方法和动画事件。 <!-- xxx.hml --><div class"container"> <di…...

树莓派入门
目录 前言系统烧录使用官方烧录工具选择操作系统选择存储卡配置 Win32DiskImager 有屏幕树莓派开机树莓派关机无屏幕树莓派开机获取树莓派IP地址通过路由器获取共享网络方式获取给树莓派配置静态IP地址查找默认网关分盘给树莓派的IP地址修改树莓派DHCP配置文件 ssh登录 让树莓派…...

算法模型嵌入式 Mendix应用的开发示例
一、前言 根据埃森哲最新一项调查,2023年67%的企业持续加大在技术方面的投入,其中数据和AI应用是重中之重。AI在企业内部应用这个话题已经保持了十多年的热度,随着ChatGPT为代表的生成式AI技术的出现,这一话题迎来又一波的高潮。…...

如何使用Cygwin编译最新版的Redis源码,生成适用于Windows的Redis
文章目录 一、准备Cygwin环境二、下载Redis源码三、编译redis-7.2.01. 执行make命令2. 重新执行make命令3. 再次执行make命令4. 将编译后的可执行文件及依赖放到同一个文件夹5. 测试编译生成的可执行程序 四、换其他redis版本重新编译1. 编译redis-7.0.122. 编译redis-6.2.133.…...

Linux 修改SSH端口
如果防火墙,或防火墙已经开启,需要先开放2222端口 firewall-cmd --add-port2222/tcp --permanent --zonepublic firewall-cmd --reload编辑文件 vim /etc/ssh/sshd_config: #Port 22 Port 2222 # 打开注释,并修改为以下值 Clien…...

Redis经典问题:缓存穿透
(笔记总结自《黑马点评》项目) 一、产生原因 用户请求的数据在缓存中和数据库中都不存在,不断发起这样的请求,给数据库带来巨大压力。 常见的解决方式有缓存空对象和布隆过滤器。 二、缓存空对象 思路:当我们客户…...

DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION (论文解析)
DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION 摘要1 介绍2 相关工作3 重新审视 Transformers 和 DETR4 方法4.1 用于端到端目标检测的可变形transformer4.2 Deformable Detr的其他改进和变型5 实验5.1 和DETR 比较5.2 消融实验5.3 与最先进方法的…...

网络连接评分机制之NetworkFactory
在开机时,各个提供网络连接的对象需要向ConnectivityService注册自己,并把自己所提供的网络的分值告诉ConnectivityService。 为了ConnectivityService便于统一管理,每一个具备提供网络服务的对象都需要创建一个NetworkFactory的子类对象,并利用该对象注册自己,以及提供自…...

极致精细的jmeter+ant+jenkins 搭建接口自动化测试
一、jmeter 相信大家对jmeter并不陌生哈,如果没有安装和配置环境的小伙伴,可以直接找到我哈,我发给你。 二、ant 安装ant 第一步:下载ant http://ant.apache.org/ 第二步:配置ant window中设置ant环境变量&…...

Unity物体查找方式
参考资料 cUnity中使用GameObject.Find、Transform.Find查找GameObject_思月行云的博客-CSDN博客 GameObject.Find 通过名字或路径查找游戏对象。 GameObject.Find("GameObject"); GameObject.Find("GameObject/ChildGameObject); 使用规范: 1.无法查找隐藏…...

【Spring容器的启动流程】
Spring容器的启动流程主要分为以下几个步骤: 加载配置文件:Spring容器会从指定的配置文件中读取配置信息,包括bean的定义、依赖关系、AOP切面等。 创建容器:Spring容器启动后会创建一个容器实例,容器负责管理bean的生…...

Python---字符串
字符串特点 1. 只可以存储字符串 2. 长度任意 (取决于内存大小) 3. 支持下标索引 4. 允许重复字符串存在 5. 不可以修改 (增加或删除元素等) 6. 支持for和while循环 字符串的下标索引 # 字符串的下标索引 从前向后,下标从0开始 从后向前,下标从-1开始…...

MySQL数据 - 索引
MySQL数据库 - 索引 1:什么是数据库索引?2:都有哪些类型的索引呢?3:MySQL数据库每种索引的底层实现原理,每种索引为什么这么实现?4:上面索引实现基本上是B+树,为什么不用别的数据结构呢?4-1:那为什么不是二叉树呢?4-2:为什么不是红黑树呢?4-3:为什么不是哈希索引…...

长安链BaaS服务平台调研
目录 一、菜单功能二、其他说明2.1、服务平台的部署方式2.2、链本身2.3、建链流程2.4、支持连接已部署的链2.5、链治理投票2.6、支持动态节点操作2.7、支持应用 长安链ChainMaker管理平台文档地址:https://docs.chainmaker.org.cn 一、菜单功能 菜单子菜单/功能点…...

怎么关闭php错误提示?两者方法分享
PHP程序员在开发过程中经常会遇到各种错误。为了方便查错,PHP默认会输出错误提示。但在生产环境中,这些错误提示信息不仅可能暴露你的代码结构,还会影响网站的性能和安全性。因此,关闭 PHP 的错误提示信息是一个很有必要并且很简单…...

Android Aidl跨进程通讯(三)--进阶使用
学更好的别人, 做更好的自己。 ——《微卡智享》 本文长度为2478字,预计阅读6分钟 前言 Android的AIDL使用和异常报错都已经介绍过了,今天这篇还是在原来的Demo基础上加入几个AIDL的进阶使用方法。 】 AIDL进阶使用 微卡智享 in,out,inout的使…...

vue.js+nodejs家庭个人理财收支管理系统5x6nf
本收支管理系统以vue.js作为框架,nodejs语言,B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块:用户管理、收入分类、支出分类、每日收入、每日支出等模块。 本文的组织结构如下: 1、绪论。综述了本文的研究背景…...

怎样去掉win11快捷方式的小箭头
前有创造注册表新值的方法,现在有了注册表加文件的方法 开始 先下载这个文件,里面有要用到的信息 下载 保存文件到电脑,并解压 有两个文件, 一个是 Remove_shortcut_arrow_icon.reg 一个是blank.ico 把第二个文件移动到 C:\Windows 文件夹, 然后点击打开文件, 如果提示是…...

Django项目如何配置日志文件信息
1、以dict的方式配置在settings.py中 # 日志文件简单配置LOGGING {"version": 1,"disable_existing_loggers": False,"handlers": {"file": {"level": "DEBUG","class": "logging.FileHandler&…...

遇到一个异步任务后是否会直接加入到异步队列当中
在javascript中,异步任务不会立即加入到异步队列(任务队列)中,而是根据不同的异步操作类型和执行环境,将对应的回调函数函数或事件加入到不同的队列中 javascript中常见的异步操作包括: 定时器࿱…...

SUSE Linux文件系统在线扩容
前几天巡检发现,SUSE 12文件系统/vg01下面的某个文件空间不足,挂载点是/oracle,容量不够,需要进行扩容。 新的空间是从一台HP的存储上新映射的。由于映射的LUN是从windows主机上回收,然后直接映射的,所以在linux识别新…...

智能电话机器人的出现,能够解决哪些问题?
经济的繁荣与高速的发展,使得电销这个方式快速地融合在房地产与金融投资等大部分行业上。在电销人员与客户的沟通上,难免会出现很多问题,毕竟所面对的客户都是各行各业,他们有着不同的经历和身份。 对于时常需要处理客户投诉、安…...

16-数据结构-图的存储结构
简介:主要为图的顺序存储和链式存储。其中顺序存储即邻接矩阵的画法以及代码,邻接矩阵又分为有权图和无权图,区别就是有数据的地方填权值,无数据的地方可以填0或者∞,而有权图和无权图,又细分为有向图和无向…...

递推算法及常见示例(C++、Python实现)
递推算法及常见示例(C、Python实现) 递推算法是一种用若干步可重复运算来描述复杂问题的方法,它是一种序列计算中的常用算法。通常是通过计算前面的一些项来得出序列中的指定项的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次…...

vscode调试程序设置
主要设置和json内容如下: cpp_properties.json内容: {"configurations": [ //C intellisense插件需要这个文件,主要是用于函数变量等符号的只能解析{"name": "Win32","includePath": ["${work…...

电商邮件营销攻略:教你如何有效运营邮件营销策略!
作为一种领先的营销渠道,电子邮件营销已被电子商务公司作为推动客户参与度、促进销售和提高ROI的不可或缺的方式。在这篇文章中,我们将深入探讨电子商务公司为什么要做EDM邮件营销?以及电商公司怎么做邮件营销? 一、电子商务公司…...