Linux运维--iptables防火墙命令以及端口号等详解(全)

news2024/9/20 11:13:27

Linux之iptable防火墙命令以及端口号等详解(全)

在Linux系统中,你可以使用firewalld和iptables来管理和设置防火墙规则。Firewalld是一个动态管理防火墙的工具,而iptables是一个更底层的工具,可以直接配置Linux内核的防火墙规则。

在RHEL 6.9及更早版本中,使用的是iptables作为防火墙管理工具,而在RHEL 7及更新版本中则使用Firewalld。

Centos7这个版本的防火墙使用的是firewall,在这之前的版本Centos 6以下都是使用iptables

现在多数版本都是使用的是firewall,如果你的iptables执行不了,可测试一下firewall命令参数

iptables

在Linux系统中,有多个命令行工具可以用来查看和配置防火墙。以下是一些常用的工具和命令:
1.iptables:iptables是Linux系统中一个非常重要的防火墙工具。它可以用来配置IPv4和IPv6的防火墙规则。以下是一些常用的iptables命令行操作:
iptables -L:查看当前的防火墙规则。
iptables -A:添加一个规则到防火墙。
iptables -D:从防火墙中删除一个规则。
iptables -P:修改默认的防火墙策略。
iptables -F:清除所有的防火墙规则。

在 Linux 系统中,我们可以使用命令行来查看和配置防火墙。Linux 中有很多不同的防火墙工具,如 iptables,firewalld 等。

本文将主要介绍如何使用 iptables 进行防火墙配置和查看。
1.查看防火墙状态
要查看当前防火墙的状态,可以使用以下命令:
sudo iptables -L

该命令将列出所有的防火墙规则,以及它们的状态。
2. 查看某一链的规则
如果你只想查看某一链的规则,可以使用下面的命令:
sudo iptables -L

其中 是要查看的链名,如 INPUT,OUTPUT,FORWARD 等。
3. 查看更详细的信息
如果你希望查看更详细的信息,包括规则的编号、目标、匹配条件、动作等,可以使用 –line-numbers 参数:
sudo iptables -L –line-numbers

4.查看 NAT 表的规则
默认情况下,iptables 列出的是 filter 表的规则。要查看 NAT 表的规则,可以使用 -t 参数指定表的类型:
sudo iptables -t nat -L

5.查看 mangle 表的规则
类似地,要查看 mangle 表的规则,可以使用 -t 参数指定表的类型:
sudo iptables -t mangle -L

6.查看 RAW 表的规则
要查看 RAW 表的规则,可以使用 -t 参数指定表的类型:
sudo iptables -t raw -L

7.查看防火墙的状态和规则
要同时查看防火墙的状态和规则,可以使用以下命令:
sudo iptables -nvL

该命令将显示防火墙的状态,以及每个规则的计数器信息。
8. 配置防火墙规则
要配置防火墙规则,可以使用以下命令:
sudo iptables -A -p –dport -j

其中 是要添加规则的链名,如 INPUT,OUTPUT,FORWARD 等; 是要匹配的协议,如 TCP,UDP 等; 是要匹配的端口号; 是规则的动作,如 ACCEPT,DROP,REJECT 等。
要删除一条规则,可以使用 -D 参数:
sudo iptables -D

其中 是规则所在的链名, 是规则的编号。
9. 保存和恢复防火墙规则
要保存当前的防火墙规则,可以使用以下命令:
sudo iptables-save > firewall.rules

该命令将把当前的规则保存到一个文件中。
要恢复保存的规则,可以使用以下命令:
sudo iptables-restore < firewall.rules该命令将从文件中恢复规则。

总结

在 Linux系统中,可以使用命令行工具 iptables 来查看和配置防火墙。通过使用不同的参数和选项,可以查看当前防火墙的状态,查看和配置不同表的规则,以及保存和恢复防火墙规则。掌握这些命令可以帮助我们更好地理解和管理防火墙的配置。

iptables实操

简介

Netfilter/Iptables (以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。特别是它可以在一台非常低的硬件配置下跑的非常好(本人曾经在赛扬500HZ cpu 64M内存的情况部署网关防火墙)提供近400人的上网服务丝毫不逊色企业级专业路由器防火墙)
Iptables是linux 2.4及2.6内核中集成的服务。其功能与安全性比其老一辈Ipfwadn,ipchains强大的多,Iptables主要工作在OSI七层的二、三四层,如果重新编译内核,Iptables也可以支持7层控制(squid 代理+iptables)。

名称概念

  • 容器:包含或者说属于的关系
  • Netfilter/Iptables是表(四表)的容器
  • 四表
    filter:过滤数据包
    nat:用于网络地址转换(IP、端口)
    mangle:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
    raw表:决定数据包是否被状态跟踪机制处理
    前三个常用
  • IP tables的表又是链(五链)的容器
    INPUT链:过滤进入主机的数据包
    OUTPUT链:处理从主机发出去的数据包
    FORWARD链:负责转发流经主机的数据包,起转发的作用,和Nat表关系很大
    PREROUTING链:主机外报文进入位置,所有的数据包进来的时侯都先由这个链处理
    POSTROUTING链:报文经过路由被转发出去,所有的数据包出来的时侯都先由这个链处理
    注意链名大写
  • 链(chains)是规则的容器
  • 规则(policy):一条条过滤的语句

注意:对于filter表的控制是我们实现本机防火墙功能的重要手段,特别是对INPUT链的控制

四表中常用的表

Nat表

负责网络地址转换,即来源与目的ip地址和port的转换。应用:和主机本身无关。一般用于局域网共享上网或者特殊的端口转换服务相关
NAT功能一般企业工作场景:
1))用于做企业路由(zebra)或网关(iptables),共享上网(POSTROUTING)2)做内部外部P地址一对一映射(dmz),硬件防火墙映射I到内部服务器,ftp服务。(PREROUTING).
3 ) web,单个端口的映射,直接映射80端口(PREROUTING)。
这个表定义了三个链(Chains),nat 功能就相当于网络的 acl控制。和网络交换机 acl类似

表相关的链

  • OUTPUT:和主机发出去的数据包相关
  • INPUT:和进入主机的数据包相关
  • PREROUTING:数据包到达防火墙时进行路由判断之前执行的规则,作用是改变数据包的目的地址,端口等,(通俗比喻,就是收信时,根据规则重写收件人的地址,这看上去很不地道啊!哈哈。)例如:把公网IP:124.42.60.113映射到局域网的10.0.0.19服务器上。如果是web服务,可以把80转为局域网的服务器上9000端口。
    POSTROUTING:在数据包离开防火墙时进行路由判断之后执行的规则,作用是改变数据包的源地址、源端口等,(通俗比喻,就是寄信时,写好发件人的地址,要让人家回信时能够有地址可回。) ,例如:我们现在的笔记本和虚拟机都是10.0.0.0/24,就是出网的时候被我们企业路由器把源地址改成了公网地址了。生产应用:局域网共享上网。

Filter表

强调:主要和主机自身有关,真正负责主机防火墙功能的(过滤流入流出主机的数据包)。filter表是iptables 默认使用的表。这个表定义了三个链(Chains):.企业工作场景:主机防火墙。

表相关的链

  • INPUT:负责过滤所有目标地址是本机地址的数据包。通俗的讲,就是过滤进入主机的数据
  • FORWARD:负载流经主机的数据包,作用是转发的功能,和nat表关系很大
  • OUTPUT:负责处理从主机发出去的数据包

Iptables过程(写这助理解)

流入本机:PREROUTING --> INPUT --> PROCESS(进程)
经过本机:PREROUTING --> FORWARD --> POSTROUTING
从本机流出:PROCESS(进程) --> OUTPUT --> POSTROUTING

iptables表和链的工作流程图

在这里插入图片描述

iptables过滤图

iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。

在这里插入图片描述

  • 防火墙是层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的
  • 如果匹配上规则,即明确表明是阻止还是通过,数据包就不再向下匹配新规则了
  • 如果所有规则中没有明确表明是阻止还是通过,也就是没有匹配规则,向下进行匹配直到匹配默认规则得到明确的阻止还是通过
  • 防火墙默认规则是对应链的所有的规则执行完才会执行的
  • Iptalbes防火墙规则的执行顺序默认从前到后(从上到下)依次执行,遇到匹配的规则就不在继续向下检查,只有遇到不匹配的规则才会继续向下进行匹配。

注意 :拒绝规则DROP如果写在最上层,下面的规则都将不匹配执行,所以插入新的规则可以用-I参数插到最上层

Iptables安装

  • 查看是否安装了iptables:systemctl status iptables
  • 安装iptables:yum install iptables* -y
  • 启动iptables:systemctl start iptables
  • 关闭防火墙: systemctl disable --now firewalld
  • 关闭selinux:vim /etc/selinux/config

在这里插入图片描述

Iptables 命令说明

格式:iptables [-t 表名] [参数 链名] [参数 协议] [参数 端口] [参数 动作]

参数表如下:
在这里插入图片描述

iptables使用协议表如下:

在这里插入图片描述

👉UDP协议和TCP协议

👉ICMP协议

端口搭配参数

参数 说明
–sport 源端口,发送请求的端口
–dport 目标端口,访问的端口

” 动作 “ 表如下:

在这里插入图片描述

-i,-o,-m,-j,-s,-d参数,可以指定网卡,模块,动作,协议,地址
在这里插入图片描述

Iptables常用命令

iptables -h 查询帮助

iptables -L -v 列出(filter表)所有规则

iptables -L -n 列出(filter表,默认的)所有规则(区别-v,-n是不反解版)

iptables -L -n -t nat 列出(nat表)所有规则

iptables -F 清除(filter表)所有规则

iptables -F -t nat 清除(nat表)中所有规则

service iptables save 保存配置(保存配置后必须重启iptables)

systemctl restart iptables 重启

Iptables常用语法

-A:追加到规则的最后一条

-D:删除记录

-I:添加到规则的第一条

-p:(proto)规定通信协议,常见的协议有:tcp、udp、icmp、all

-j:(jump)指定要跳转的目标,常见的目标有:ACCEPT(接收数据 包)、DROP(丢弃数据包)、REJECT(重定向)三种,但是一 般不适用重定向,会带来安全隐患

常见案例

案例1:只允许22端口(目标端口)可以访问,其他端口全部无法访问
[root@m01 ~]# iptables -t filter -A INPUT -p TCP --dport 22 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -j DROP
[root@m01 ~]# iptables -L -v
#查看(结果太长不写了)
[root@m01 ~]# iptables -L -v

案例2:只允许22,80,443端口可以访问(目标端口),其他端口全部无法访问。
[root@m01 ~]# iptables -t filter -A INPUT -p TCP --dport 22 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP --dport 80 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP --dport 443 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -j DROP
#这时获取百度就响应超时了,不知道curl的端口
[root@m01 ~]# curl www.baidu.com
curl: (7) Failed connect to www.baidu.com:80; Connection timed out

案例3:只允许22,80,443端口可以访问,其他端口全部无法访问,但是本机可以访问百度。
[root@m01 ~]# iptables -t filter -A INPUT -p TCP --dport 22 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP --dport 80 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP --dport 443 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -j DROP

案例4:要求能够通过22端口(目标端口)去链接地址192.168.15.81(目标地址),但是其他的不行
#通俗理解:通过22端口可以连接到192.168.15.81地址,192.168.15.81:22
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -d 192.168.15.81 --dport 22 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -j DROP
#可以通过新开窗口测试,或者新开虚拟机测试

案例5:要求地址192.168.15.71(源地址)允许通过22端口(目标端口)连接地址192.168.15.81(目标地址),其他不行
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -s 192.168.15.71 -d 192.168.15.81 --dport 22 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -j DROP
#可以从71去连接81,81已经断开

案例6:要求192.168.15.71对外部不可见
[root@prometheus ~]# iptables -t filter -A INPUT -p TCP -d 192.168.15.71 -j DROP
#相当于虚拟机里的这个地址对外不可见,会连接不上虚拟机

案例7:要求使用eth0网卡的所有请求全部拒绝(进来的网卡,连接虚拟机)
[root@prometheus ~]# iptables -t filter -A INPUT -p TCP -i etho -j DROP

案例8:使用eth1网卡登录进来的窗口,不允许访问百度。(出去的网卡,连接虚拟机)
[root@prometheus ~]# iptables -t filter -I OUTPUT -p TCP -o eth1 -j DROP

案例9:要求访问服务器的8080端口转发至80端口
[root@m01 ~]# iptables -t nat -A PREROUTING -p TCP --dport 8080 -j REDIRECT --to-port 80

案例10:要求只允许windows通过ssh连接192.168.15.81,其他的拒绝
#先查看windows下的地址:ipconfig > WMnet8 >IPV4地址
[root@m01 ~]# iptables -t filter -I INPUT -p TCP -s 192.168.15.1 -d 192.168.15.81 --dport 22 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP --dport 22 -j DROP

#IP过滤
#禁止192.168.1.3 IP地址的所有类型数据访问
iptables -A INPUT ! -s 192.168.1.3 -j DROP

#开放80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #开放80端口

#开放端口范围
iptables -I INPUT -p tcp --dport 22:80 -j ACCEPT #开发22-80范围的端口

#不允许80端口流出
iptables -I OUTPUT -p tcp --dport 80 -j DROP

#filter是默认的表,可以不指定,也可以指定

模块

-m:指定模块

multiport模块

连续匹配多个端口

参数:–dports 的意思是指定多个端口(不同端口之间以逗号分割,连续的端口使用冒号分割)

#案例:要求将22,80,443以及30000-50000之间所有的端口向外暴露,其他端口拒绝
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -m multiport --dports 22,80,443,30000:50000 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -j DROP

iprange模块

指定一段连续的ip地址范围

  • 参数:
    –src-range from[-to]:源地址范围
    –dst-range from[-to]:目标地址范围

#案例:要求192.168.15.1 - 192.168.15.10之间的所有IP能够连接192.168.15.81,其他拒绝
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -m iprange --src-range 192.168.15.1-192.168.15.10 -j ACCEPT
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -j DROP

string模块

匹配指定字符串

  • 参数
    –string pattern :指定要匹配的字符串
    –algo {bm|kmp} :匹配的查询算法

#案例:要求访问数据包中包含HelloWorld的数据不允许通过
[root@m01 ~]# cd /usr/share/nginx/html/
[root@m01 html]# rm -rf ./*
[root@m01 html]# echo “Helloworld” > index.html
[root@m01 html]# echo “Hello” > demo.html

#规则
[root@m01 html]# iptables -t filter -A INPUT -p TCP -m string --string “Helloworld” --algo kmp -j DROP
[root@m01 html]# curl http://192.168.15.81/demo.html
Hello
[root@m01 html]# curl http://192.168.15.81/index.html
#Helloworld被过滤掉了

time模块

根据时间段匹配数据包

  • 参数:
  • –timestart hh:mm[:ss] :开始时间
  • –timestop hh:mm[:ss] : 结束时间
  • –monthdays day[,day…] : 指定一个月的某一天
  • –weekdays day[,day…] : 指定周 还是 周天

#案例: 要求每天的22到23之间,不允许访问
[root@m01 ~]# iptables -t filter -A INPUT -p TCP -m time --timestart 14:00 --timestop 15:00 -j DROP
#注意这里使用的时间是UTC,记得-8

icmp模块

禁ping, 默认本机无法ping别人 、别人无法ping自己

  • 参数:–icmp-type
  • echo-request (8) 请求
  • echo-reply (0) 回应

#要求别人不能ping本机,但是本机可以ping别人(优化上普通案例3)
[root@m01 ~]# iptables -t filter -A INPUT -p ICMP -m icmp --icmp-type “echo-request” -j DROP
#本机ping百度
[root@m01 ~]# ping www.baidu.com
PING www.a.shifen.com (112.80.248.76) 56(84) bytes of data.
64 bytes from 112.80.248.76 (112.80.248.76): icmp_seq=1 ttl=128 time=15.1 ms
#别人不能ping本机
[root@m01 ~]# ping 192.168.15.81
PING 192.168.15.81 (192.168.15.81) 56(84) bytes of data.

connlimit模块

限制链接数,并发连接数

  • 参数
    • –connlimit-upto n : 如果现有连接数小于或等于 n 则 匹配
    • –connlimit-above n : 如果现有连接数大于n 则匹配

#要求主机连接最多有2个(最多开两个窗口)
[root@m01 ~]# iptables -t filter -A INPUT -p TCP --dport 22 -m connlimit --connlimit-above 2 -j DROP

image

limit模块

针对 报文速率 进行限制; 秒、分钟、小时、天。

  • 参数
    • –limit rate[/second|/minute|/hour|/day] :报文数量
    • –limit-burst number :报文数量(默认:5)

#案例 :要求限制速率在500k/s左右,大约每秒为333个数据包
#生成一个测试文件
[root@m01 ~]# dd if=/dev/zero of=a.txt bs=100M count=10
10+0 records in
10+0 records out
1048576000 bytes (1.0 GB) copied, 7.64477 s, 137 MB/s
#限速(控制是不准确的!)
[root@m01 ~]# iptables -t filter -A OUTPUT -p TCP -m limit --limit 333/s -j ACCEPT
[root@m01 ~]# iptables -t filter -A OUTPUT -p TCP -j DROP
#传输
[root@m01 ~]# scp a.txt root@192.168.15.71:/root

image

传输是不准确的,慢慢在降低,直到稳定!

补充知识

查看centos版本

cat /etc/redhat-release

查看本机端口占用的命令:

命令:netstat -nutlp

[root@m01 ~]# netstat -nutlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1591/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1304/sshd
tcp6 0 0 :::80 ::😗 LISTEN 1591/nginx: master
tcp6 0 0 :::22 ::😗 LISTEN 1304/sshd

iptables脚本设置
!/bin/sh**

iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
service iptables save
systemctl restart iptables.service

##补充案例
企业案例
如果日志文件/var/logmessages出现:kernel:nf_conntrack:table full,droppint packet,解决办法如下:

bash
#上述的结果会让业务访问的很慢
net.nf_conntack_max = 250000000
net.netfilter.nf_conntrack_max = 250000000
#响应时间调短
net.netfilter.nf_conntrack_timeout_established = 170
net.netfilter.nf_conntrack_timeout_wait = 120
net.netfilter.nf_conntrack_timeout_close_wait= 60
net.netfilter.nf_conntrack_timeout_fin_wait = 100

易错点

  1. 设置完iptables规则后保存(service iptables save)有时候启动会失败
  2. 在第一步的时候安装iptables时,请用 yum install -y iptables,加上,不然有些包装不上,系统默认安装的包不齐全
  3. 在过滤端口的时候,容易把自己干掉,从虚拟机上清除掉所有规则就好

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

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

相关文章

经典卷积神经网络 (CNN) 架构模型详解:LeNet、AlexNNet、GoogleNet、ResNet、DenseNet

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

文字转视频软件哪个好用?揭秘创意新工具

最近&#xff0c;我在筹备一个小型的个人项目&#xff0c;需要制作一系列的教学视频&#xff0c;但我对视频编辑一窍不通。就在我快要放弃的时候&#xff0c;我发现了一些神奇的工具&#xff0c;它们能自动把文字变成视频&#xff01; 想知道自动生成视频的软件有哪些吗&#…

Docker 安装FileBeat、Elasticsearch及Kibana详细步骤

一、ELK简介 二、docker安装Elasticsearch 2.1 创建Docker网络 2.2 拉取镜像 2.3 创建挂载目录 2.4 添加配置文件 2.5 创建es容器 2.6 测试Elasticsearch是否安装成功 三、docker安装Logstash 3.1 拉取镜像 3.2 创建挂载目录 3.3 添加配置文件 3.4 创建Logstash容…

如何更新我的SSL证书到期日期?

续订SSL证书需要获取新证书来替换即将过期的证书。该过程可能略有不同&#xff0c;具体取决于Gworg获取证书的方法。以下是有关如何续订SSL证书的一般指南&#xff1a; 检查有效期&#xff1a; 在开始续订流程之前&#xff0c;请检查SSL证书的当前到期日期。您通常可以在SSL证…

【PyTorch】深入解析 `with torch.no_grad():` 的高效用法

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言一、with torch.no_grad(): 的作用二、with torch.no_grad(): 的原理三、with torch.no_grad(): 的高效用法3.1 模…

24 初识C++

目录 一、C概念 &#xff08;一&#xff09;C是什么 &#xff08;二&#xff09;C的历史 &#xff08;三&#xff09;C参考文档 二、第一个C程序 三、C的域 四、命名空间 namespace &#xff08;一&#xff09;namespace 的作用 &#xff08;二&#xff09;namespace 的…

如何从 SIM 卡恢复短信?这篇专业教程文章会帮到你

您是 Android 手机的忠实用户吗&#xff1f;您是否定期通过打电话、发送短信或在 WeChat 上聊天来与朋友和家人保持联系&#xff1f;如果你这样做&#xff0c;我相信你的手机上一定有很多短信&#xff0c;这些短信对于保存你与他人聊天的内容非常重要。您是否有这样的经验&…

碧桂园服务上海项目获评“2024年度上海市物业管理优秀示范项目”

近日&#xff0c;上海市物业管理行业协会发布《关于2024年度上海市物业管理优秀示范项目评定结果的公示》官方红头文件。文件对上海市393个物业管理优秀示范项目进行公示。 上海联源物业发展有限公司露香园项目、静鼎安邦府邸项目、佘山东郡项目和上海金晨物业经营管理有限公司…

mac 安装brew并配置国内源

​ 前置条件 - Xcode 命令行工具 一行代码安装Homebrew 添加到路径(PATH) - zsh shell为例 背景介绍 最近重装了我的MAC mini &#xff08;m1 芯片&#xff09;, 很多软件都需要重新安装&#xff0c;因为后续还需要安装一些软件&#xff0c;所以想着安装个包管理软件 什么…

苹果手机通话记录怎么恢复?已总结了4个方法,快速恢复

苹果手机的通话记录是我们联系好友与家人的重要方式之一。如果我们忘记储存重要好友或家人的联系方式&#xff0c;但是曾经有过通话&#xff0c;那我们就可以在苹果手机的通话记录中找到重要的联系人。但是&#xff0c;如果这些通话记录不小心被删除了&#xff0c;那苹果手机通…

ArkUI-状态管理最佳实践

ArkUI-状态管理最佳实践 概述合理选择装饰器使用监听和订阅精准控制组件刷新Watch装饰器监听数据源使用自定义事件发布订阅 概述 在声明式UI编程范式中&#xff0c;UI是应用程序状态的函数&#xff0c;应用程序状态的修改会更新响应的UI界面。ArkUI采用了MVVM模式。 ArkUI提…

2024年第十届数维杯国际大学生数学建模挑战赛

竞赛介绍 为了培养学生的创新意识及运用数学方法和计算机技术解决实际问题的能力&#xff0c;内蒙古创新教育学会、内蒙古基础教育研究院决定主办2024年第十届数维杯国际大学生数学建模挑战赛&#xff08;国际赛&#xff09;。 数维杯大学生数学建模挑战赛每年分为两场&#…

uniapp开发鸿蒙,是前端新出路

uniapp开发鸿蒙&#xff0c;是前端新出路吗&#xff1f; 相信不少前端从业者一听uniapp支持开发鸿蒙Next后非常振奋。小编作为7年前端也是非常激动&#xff0c;第一时间体验了下。在这里也给大家分享一下我的看法 uniapp开发鸿蒙优势 1.对于前端开发者而言&#xff0c;几乎无需…

基于51单片机的跑马串口调试波形发生器proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1WTjU_hRJ-fLMTT5g1q-NlA 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectro…

嵌入式全栈开发学习笔记---C++(多态)

目录 多态polymorphic 多态成立的三个条件 1、要有继承 2、要有虚函数重写 3、用父类指针(父类引用)指向子类对象 重载与重写区别 动态联编和静态联编 多态原理 构造函数中调用虚函数能否实现多态&#xff1f; 用父类指针指向子类数组 虚析构函数 动态类型识别 第…

【免越狱】iOS任意版本号APP下载

下载地址 https://pan.quark.cn/s/570e928ee2c4 软件介绍 下载iOS旧版应用&#xff0c;简化繁琐的抓包流程。一键生成去更新IPA&#xff08;手机安装后&#xff0c;去除App Store的更新检测&#xff09;。 软件界面 使用方法 一、直接搜索方式 搜索APP&#xff0c;双击选…

Vue3 + Ts + Vite项目 websoket封装使用

文章目录 一、安装二、封装三、请求地址配置3.1 将接口地址放到 public3.2 引入 ipconfig.js 文件3.3 全局类型声明 四、页面使用4.1 引用4.2 注册 五、说明 一、安装 npm npm install websocket --save-devpnpm pnpm install websocket --save-dev二、封装 在 /src/utils …

Haskell爬虫:连接管理与HTTP请求性能

爬虫技术作为数据抓取的重要手段&#xff0c;其效率和性能直接影响到数据获取的质量与速度。Haskell&#xff0c;作为一种纯函数式编程语言&#xff0c;以其强大的类型系统和并发处理能力&#xff0c;在构建高效爬虫方面展现出独特的优势。本文将探讨在Haskell中如何通过连接管…

OVMR:华为北大联手,基于多模态融合的SOTA开放词汇识别 | CVPR 2024

即插即用的方法OVMR将新类别的多模态线索嵌入到VLM中&#xff0c;以增强其在开放词汇识别中的能力。它最初利用多模态分类器生成模块将示例图像嵌入到视觉标记中&#xff0c;然后通过推断它们与语言编码器的上下文关系来自适应地融合多模态线索。为了减轻低质量模态的负面影响&…

[DICOM活久见] 序列内部的RescaleIntercept不同导致的问题

本文由Markdown语法编辑器编辑完成. 1. 背景: 本文记录在工作中遇到的一些比较罕见的dicom图像. 这对于在未来工作中, 处理图像时, 需要考虑方案的完整性, 会有很大的帮助. 本文介绍的, 是目前我工作10年来, 头一次见到的一个CT序列, 它的序列内的RescaleIntercept值, 不是完…