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

firewalld常用的基础配置

firewalld防火墙是centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙。

  • 支持IPv4、IPv6防火墙设置以及以太网桥
  • 支持服务或应用程序直接添加防火墙规则接口
  • 拥有两种配置模式:临时模式、永久模式

firewalld和iptables都是用来管理防火墙的工具(属于用户态)来定义防火墙的各种规则功能,内部结构都指向netfilter网络过滤子系统(属于内核态)来实现包过滤防火墙功能。

firewalld提供了支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具。

2 Firewalld和iptables的关系

2.1 Firewalld和iptables的关系

netfilter

  • 位于Linux内核中的包过滤功能体系
  • 称为Linux防火墙的“内核态”

Firewalld/iptables

  • CentOS7默认的管理防火墙规则的工具(Firewalld)
  • 称为Linux防火墙的“用户态”

1.png

2.2 Firewalld和iptables的区别

1、对规则的设置不同:

  • ptables主要是基于接口(网卡),来设置规则,从而判断网络的安全性。
  • firewalld是基于区域,根据不同的区域来设置不同的规则,从而保证网络的安全。与硬件防火墙的设置相类似。

2、配置文件不同:

  • iptables在/etc/sysconfig/iptables中储存配置;

  • firewalld 将配置储存在/etc/firewalld/(优先加载)和/usr/lib/firewalld/(默认的配置文件)中的各种XML文件里。

    • /etc/firewalld/中没有相关区域的配置文件时,才会加载/usr/lib/firewalld/中的配置文件。

3、对规则的修改:

  • 使用iptables每一个单独更改,意味着清除所有旧的规则和从/etc/sysconfig/iptables里读取所有新的规则。
  • 使用firewalld却不会再创建任何新的规则,仅仅运行规则中的不同之处。因此firewalld可以在运行时间内,改变设置而不丢失现行连接。

4、防火墙类型不同:

  • iptables防火墙类型为静态防火墙
  • firewalld防火墙类型为动态防火墙

3 Firewalld区域

3.1 firewalld区域的概念

firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)。然后根据数据包的源IP地址或传入的网络接口等条件将流量传入相应区域。每个区域都定义了自己打开或者关闭的端口和服务列表。

这些区域配置文件存在于/usr/lib/firewalld/zones目录中,还有一个目录/etc/firewalld/zones。firewalld使用规则时,会首先到/etc/firewalld/目录中查找,如果可以找到就直接使用,找不到会继续到/usr/lib/firewalld/目录中查找。

3.2 firewalld防火墙定义了9个区域

区域作用
trusted(信任区域)允许所有的传入流量。
public(公共区域)允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝。是新添加网络接口的默认区域。
external(外部区域)允许与ssh预定义服务匹配的传入流量其余均拒绝。
home(家庭区域)允许与ssh、mdns、samba-client或dhcpv6-client预定义服务匹配的传入流量,其他均拒绝。
internal(内部区域)默认值与home区域相同。
work(工作区域)允许与ssh、dhcpv6-client预定义服务匹配的传入流量,其他均拒绝
dmz(隔离区域也称非军事区域)允许与ssh预定义服务匹配的传入流量,其他均拒绝。
block(限制区域)拒绝所有传入流量。
drop(丢弃区域)丢弃所有传入流量,并且不产生包含icmp的错误响应。

3.3 firewalld区域介绍和区域优先级

firewalld区域介绍

  • 最终一个区域的安全程度是取决于管理员在此区域中设置的规则。
  • 区域如同进入主机的安全门,每个区域都具有不同限制程度的规则,只会允许符合规则的流量传入。
  • 可以根据网络规模,使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口。
  • 默认情况下,public区域是默认区域,包含所有接口(网卡)。

firewalld数据处理流程

检查数据来源的源地址:

  • 若源地址关联到特定的区域,则执行该区域所指定的规则
  • 若源地址未关联到特定的区域,则使用传入网络接口的区域 并执行该区域所指定的规则
  • 若网络接口未关联到特定的区域,则使用默认区域并执行该 区域所指定的规则

区域优先级:源地址绑定的区域 > 网卡绑定的区域 > 默认区域(只要没有绑定过指定区域的网卡,都适用于于默认区域的规则。默认区域可自定义,不修改则为public)

2.png

4 Firewalld防火墙的配置方法

1、firewall-config 图形化工具(生产环境一般只有字符界面,不使用这种方法)

2、firewall-cmd 命令行工具(生产环境中没有图形化界面,所以只能在命令行进行配置)

3、编写 /etc/firewalld 中的配置文件。

  • Firewalld 会优先使用/etc/firewalld/中的配置,如果不存在配置文件,则使用/usr/lib/firewalld/中的配置。

    • /etc/firewalld/:用户自定义配置文件,需要时可通过从/usr/lib/firewalld/ 中拷贝
    • /usr/lib/firewalld/ :默认配置文件,不建议修改,若恢复至默认配置,可直接删除/etc/firewalld/ 中的配置

4.1 firewall-config 图形化工具

在命令行输入”firewall-config“,回车后会弹出图形化管理工具。生产环境一般只有字符界面,不使用这种方法。

3.png

4.png

4.2 firewall-cmd 命令行工具

常用的 firewall-cmd 命令选项:

不指定区域时,则对默认区域进行操作(默认区域可自定义,不修改则为public)

 

ini

复制代码

 #默认区域  --get-default-zone :显示当前默认区域  --set-default-zone=<zone> :设置默认区域  ​  --get-active-zones :显示当前正在使用的区域及其网卡接口  --get-zones:显示所有可用的区域  ​  #网络接口  --get-zone-of-interface=ens33 :查看指定接口ens33绑定的区域  --zone=<zone> --add-interface=<interface> :为指定接口绑定区域  --zone=<zone> --change-interface=<interface> :为指定区域更改绑定的网络接口  --zone=<zone> --remove-interface=<interface> :为指定区域删除绑定的网络接口  ​  #源地址  --zone=<zone> --add-source=<source>[/<mask>] :为指定源地址绑定区域  --zone=<zone> --change-source=<source>[/<mask>] :为指定的区域更改绑定的源地址  --zone=<zone> --remove-source=<source>[/<mask>] :为指定的区域删除绑定的源地址  ​  #显示指定区域的所有规则  --list-all-zones :显示所有区域及其规则  --zone=<zone> --list-all :显示所有指定区域的所有规则,若不指定区域表示仅对默认的区域操作  ​  #服务管理  --zone=<zone> --list-service :显示指定区域内允许访问的所有服务  --zone=<zone> --add-service=<service> :为指定的区域设置允许访问的某项服务  --zone=<zone> --remove-service=<service> :删除指定区域已设置的允许访问的某项服务  ​  #端口管理  --zone=<zone> --list-ports:x显示指定区域内允许访问的所有端口号  --zone=<zone> --add-port=<poreid>[-portid]/<portocol>:为指定的区域设置允许访问的某个端口号/某段端口号(包括协议)  --zone=<zone> --remove-port=<poreid>[-portid]/<portocol>:删除指定区域已设置允许访问的端口号(包括协议)  ​  #icmp协议  --zone=<zone> --list-icmp-blocks :显示指定区域内拒接访问的所有icmp类型  --zone=<zone> --add-icmp-block=<icmptype>:为指定区域设置允许访问的某项icmp类型  --zone=<zone> --remove-icmp-block=<icmptype>删除指定区域已设置允许访问的某项icmp类型  firealld-cmd --get-icmptypes :显示所有icmp类型

5 Firewalld两种配置模式

运行时配置:

  • 实时生效,并持续至Firewalld重新启动或重新加载配置文件
  • 不中断现有连接
  • 不能修改服务器配置

永久配置:

  • 不立即生效,除非Firewaddl重新启动或重新加载配置
  • 中断现有连接
  • 可以修改服务配置

5.1 运行时配置(临时配置)

运行时配置,实时生效,不会中断现有连接。重启后丢失。

示例1:查看和设置默认区域

--get-default-zone :显示当前默认区域

--set-default-zone=< zone> :设置默认区域

--get-active-zones :显示当前正在使用的区域及其网卡接口

 

swift

复制代码

 [root@yuji ~]# firewall-cmd --get-default-zone   //显示当前默认区域  public  [root@yuji ~]# firewall-cmd --get-active-zone   //当前正在使用的区域及其网卡接口  public   interfaces: ens33  [root@yuji ~]# firewall-cmd --set-default-zone=home //将默认区域设置为home  success  [root@yuji ~]# firewall-cmd --get-default-zone //显示当前默认区域  home  [root@yuji ~]# firewall-cmd --set-default-zone=public //将默认区域设置为public  success

5.png

示例2:对指定网卡进行操作

add 增加绑定,change修改,remove 删除

 

kotlin

复制代码

 #增加绑定  [root@yuji ~]# firewall-cmd --get-active-zone  public   interfaces: ens34 ens33  [root@yuji ~]# firewall-cmd --zone=work --add-interface=ens33  The interface is under control of NetworkManager, setting zone to 'work'.  success  [root@yuji ~]# firewall-cmd --get-active-zone  work   interfaces: ens33  public   interfaces: ens34      #修改网卡绑定的区域    [root@yuji ~]# firewall-cmd --zone=home --change-interface=ens33  The interface is under control of NetworkManager, setting zone to 'home'.  success  [root@yuji ~]# firewall-cmd --get-active-zone  home   interfaces: ens33  public   interfaces: ens34  ​  #删除网卡和区域的绑定关系  [root@yuji ~]# firewall-cmd --zone=home --remove-interface=ens33  The interface is under control of NetworkManager, setting zone to default.  success  [root@yuji ~]# firewall-cmd --get-active-zone  public   interfaces: ens33

6.png

7.png

8.png

示例3:对源地址进行操作

 

csharp

复制代码

 [root@yuji ~]# firewall-cmd --add-source=2.2.2.2 --zone=work //将源地址绑定到work区域  success  [root@yuji ~]# firewall-cmd --get-active-zone  work   sources: 2.2.2.2  public   interfaces: ens33 ens34  [root@yuji ~]# firewall-cmd --remove-source=2.2.2.2 --zone=work //删除源地址和work区域的绑定关系  success  [root@yuji ~]# firewall-cmd --get-active-zone  public   interfaces: ens33 ens34

9.png

示例4:查看指定区域的所有规则

不指定区域时,则对默认区域进行操作(默认区域可自定义,不修改则为public)

firewall-cmd --list-all-zones:显示所有区域及其规则

firewall-cmd --list-all : 不指定区域时,查看的是默认区域

firewall-cmd --list-all --zone=work:显示work区域的所有规则

 

yaml

复制代码

 [root@yuji ~]# firewall-cmd --list-all-zones   //显示所有区域及其规则  ​  [root@yuji ~]# firewall-cmd --list-all   //不指定区域时查看的是默认区域  public (active)   target: default   icmp-block-inversion: no   interfaces: ens33               //绑定的   sources:   services: ssh dhcpv6-client   ports:   protocols:   masquerade: no   forward-ports:   source-ports:   icmp-blocks:   rich rules:  ​  [root@yuji ~]# firewall-cmd --list-all --zone=work   //查看work区域的规则  work   target: default   icmp-block-inversion: no   interfaces:   sources:   services: ssh dhcpv6-client   ports:   protocols:   masquerade: no   forward-ports:   source-ports:   icmp-blocks:   rich rules:

10.png

11.png

示例5:服务管理

显示、添加、删除指定区域的某个服务:

 

css

复制代码

 [root@yuji ~]# firewall-cmd --zone=work --list-services  ssh dhcpv6-client  [root@yuji ~]# firewall-cmd --zone=work --add-service=http  success  [root@yuji ~]# firewall-cmd --zone=work --list-services  ssh dhcpv6-client http  [root@yuji ~]# firewall-cmd --zone=work --remove-service=http  success  [root@yuji ~]# firewall-cmd --zone=work --list-services  ssh dhcpv6-client

12.png

向默认区域中添加允许通过的服务:

 

css

复制代码

 [root@yuji ~]# firewall-cmd --add-service=http  success  [root@yuji ~]# firewall-cmd --list-services --zone=public  ssh dhcpv6-client http

13.png

一次性添加多个服务:

 

css

复制代码

 [root@yuji ~]# firewall-cmd --zone=work --add-service={http,https,ftp}  success  [root@yuji ~]# firewall-cmd --list-services --zone=work  ssh dhcpv6-client http https ftp

14.png

示例6:端口管理

添加、删除某个协议的端口。

 

yaml

复制代码

 [root@yuji ~]# firewall-cmd --zone=work --add-port=80/tcp  success  [root@yuji ~]# firewall-cmd --zone=work --list-ports  80/tcp  [root@yuji ~]# firewall-cmd --zone=work --list-all  work   target: default   icmp-block-inversion: no   interfaces:   sources:   services: ssh dhcpv6-client http https ftp   ports: 80/tcp   protocols:   masquerade: no   forward-ports:   source-ports:   icmp-blocks:   rich rules:

15.png

添加连续的端口:

 

yaml

复制代码

 [root@yuji ~]# firewall-cmd --add-port=3000-5000/udp  success  [root@yuji ~]# firewall-cmd --list-all  public (active)   target: default   icmp-block-inversion: no   interfaces: ens33 ens34   sources:   services: ssh dhcpv6-client http   ports: 3000-5000/udp   protocols:   masquerade: no   forward-ports:   source-ports:   icmp-blocks:   rich rules:            [root@yuji ~]# firewall-cmd --remove-port=3000-5000/udp  success

16.png

5.2 永久配置

永久配置不立即生效,需要重启服务或重新加载后才生效。重启服务或重新加载时会中断现有连接。下次重启后不会丢失,永久存在。

示例:

1、--permanent 设置成永久生效,需要重启服务或重新加载 后才生效。

 

css

复制代码

 #同时添加 httpd、https 服务到默认区域,并设置成永久生效。  ​  firewall-cmd --add-service={http,https} --permanent  firewall-cmd --reload  ​  #添加使用 --permanent选项表示设置成永久生效,需要重新启动 firewalld 服务或执行firewall-cmd --reload 命令重新加载后才生效;

2、把运行时配置转换成永久配置

 

bash

复制代码

 firewall-cmd --runtime-to-permanent  ​  #将当前的运行时配置,写入规则配置文件中,使之成为永久性配置。

示例1:直接进行永久配置

同时添加 httpd、https 服务到默认区域,并设置成永久生效。

 

yaml

复制代码

 [root@yuji ~]# firewall-cmd --add-service={http,https} --permanent  success  [root@yuji ~]# firewall-cmd --reload  success  [root@yuji ~]# firewall-cmd --list-all  public (active)   target: default   icmp-block-inversion: no   interfaces: ens33   sources:   services: ssh dhcpv6-client http https   ports:   protocols:   masquerade: no   forward-ports:   source-ports:   icmp-blocks:   rich rules:  ​

17.png

示例2:把运行时配置 转换成 永久配置

将当前的运行时配置,写入规则配置文件中,使之成为永久性配置。

 

csharp

复制代码

 [root@yuji ~]# firewall-cmd --runtime-to-permanent  success

18.png

6 设置SNAT规则和DNAT规则

设置SNAT策略:

 

css

复制代码

 [root@yuji ~]# firewall-cmd --zone=public --direct --passthrough ipv4 -t nat -A POSTROUTING -s 192.168.72.0/24 -j SNAT --to-source 12.0.0.254  success  [root@yuji ~]# iptables -t nat -nL POSTROUTING  Chain POSTROUTING (policy ACCEPT)  target     prot opt source               destination          SNAT       all  --  192.168.72.0/24      0.0.0.0/0           to:12.0.0.254

19SNAT.png

设置DNAT策略:

 

css

复制代码

 [root@yuji ~]# firewall-cmd --zone=public --direct --passthrough ipv4 -t nat -A PREROUTING -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.72.10  success  [root@yuji ~]# iptables -t nat -nL PREROUTINGChain PREROUTING (policy ACCEPT)  target     prot opt source               destination          DNAT       tcp  --  0.0.0.0/0            12.0.0.254           tcp dpt:80 to:192.168.72.10

20DNAT.png

小贴士:

拒绝某个地址访问所有服务,可以通过block和drop区域,即将这个源地址和block区域绑定(或者和drop区域绑定)。但是拒绝这个源地址访问单个服务,要通过富规则实现。

例如现在有个地址192.168.89.10,只想拒绝它使用ssh服务,其他都放行。需要通过富规则实现。

 

ini

复制代码

 firewall-cmd --add-rich-rule=...

作者:聂鲁达的邮差
链接:https://juejin.cn/post/7094625904453763103
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

firewalld常用的基础配置

firewalld防火墙是centos7系统默认的防火墙管理工具&#xff0c;取代了之前的iptables防火墙&#xff0c;也是工作在网络层&#xff0c;属于包过滤防火墙。 支持IPv4、IPv6防火墙设置以及以太网桥支持服务或应用程序直接添加防火墙规则接口拥有两种配置模式&#xff1a;临时模…...

功率放大器如何驱动超声波换能器

驱动超声波换能器的功率放大器在超声波应用中起着至关重要的作用。它能够提供足够的功率和精确的信号控制&#xff0c;使换能器能够有效地将电能转换为超声波能量。下面安泰电子将介绍功率放大器如何驱动超声波换能器的原理和关键要点。 首先&#xff0c;让我们了解一下超声波换…...

LiveGBS流媒体平台GB/T28181常见问题-安全控制HTTP接口鉴权勾选流地址鉴权后401Unauthorized如何播放调用接口

LiveGBS流媒体平台GB/T28181常见问题-安全控制HTTP接口鉴权勾选流地址鉴权后401 Unauthorized如何播放调用接口&#xff1f; 1、安全控制1.1、HTTP接口鉴权1.2、流地址鉴权 2、401 Unauthorized2.1、携带token调用接口2.1.1、获取鉴权token2.1.2、调用其它接口2.1.2.1、携带 Co…...

红帽认证笔记2

文章目录 1.配置系统以使用默认存储库1.调试selinux2.创建用户账户3.配置cron4. 创建写作目录5. 配置NTP6.配置autofs配置文件权限容器解法1.修改journal配置文件2.重启服务3.拷贝文件到指定目录4.修改拥有人所属组5.修改umask6.切换elovodo用户7.登录容器仓库8.拉取镜像9.运行…...

程序开发中表示密码时使用 password 还是 passcode?

password 和 passcode 是两个经常在计算机和网络安全中使用的术语&#xff0c;两者都是用于身份验证的机制&#xff0c;但它们之间还是存在一些区别的。 password password 通常是指用户自己设置的一串字符&#xff0c;用于保护自己的账户安全。密码通常是静态的&#xff0c;…...

html5 文字自动省略,html中把多余文字转化为省略号的实现方法方法

单行文本&#xff1a; .box{width: 200px;background-color: aqua;text-overflow: ellipsis;overflow: hidden;white-space: nowrap; }多行文本 1.利用-webkit-line-clamp属性 .box{width: 200px;overflow : hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-l…...

6.SNMP报错-Error opening specified endpoint “udp6:[::1]:161“处理

启动SNMP服务 /etc/init.d/snmpd start 出现以下报错信息 [....] Starting snmpd (via systemctl): snmpd.serviceJob for snmpd.service failed because the control process exited with error code. See "systemctl status snmpd.service" and "journalctl…...

集合的进阶

不可变集合 创建不可变的集合 在创建了之后集合的长度内容都不可以变化 静态集合的创建在list &#xff0c;set &#xff0c;map接口当中都可以获取不可变集合 方法名称说明static list of(E …elements)创建一个具有指定元素集合list集合对象staticlist of(E…elements)创…...

【LeetCode刷题(数据结构与算法)】:数据结构中的常用排序实现数组的升序排列

现在我先将各大排序的动图和思路以及代码呈现给大家 插入排序 直接插入排序是一种简单的插入排序法&#xff0c;其基本思想是&#xff1a; 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为 止&#xff0c;得到一个…...

【HTML+CSS】零碎知识点

公告滚动条 <!DOCTYPE html> <html><head><title>动态粘性导航栏</title><style>.container {background: #00aeec;overflow: hidden;padding: 20px 0;}.title {float: left;font-size: 20px;font-weight: normal;margin: 0;margin-left:…...

嵌入式开发学习之STM32F407串口(USART)收发数据(三)

嵌入式开发学习之STM32F407串口&#xff08;USART&#xff09;收发数据&#xff08;三&#xff09; 开发涉及工具一、选定所使用的串口二、配置串口1.配置串口的I/O2.配置串口参数属性3.配置串口中断4.串口中断在哪里处理5.串口如何发送字符串 三、封装串口配置库文件1.创建头文…...

python:talib.BBANDS 画股价-布林线图

python 安装使用 TA_lib 安装主要在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 这个网站找到 TA_Lib-0.4.24-cp310-cp310-win_amd64.whl pip install /pypi/TA_Lib-0.4.24-cp310-cp310-win_amd64.whl 编写 talib_boll.py 如下 # -*- coding: utf-8 -*- import os impor…...

ESP32网络开发实例-自定义主机名称

自定义主机名称 文章目录 自定义主机名称1、软件准备2、硬件准备3、代码实现ESP32 的默认主机名是 expressif。 但是,如果正在使用多个 ESP32 设备,并且在某些时候希望在软接入点模式下使用它们时通过名称来区分设备。 例如,在基于物联网的项目中有多个节点,例如温度、湿度…...

【ELK 使用指南 3】Zookeeper、Kafka集群与Filebeat+Kafka+ELK架构(附部署实例)

EFLKK 一、Zookeeper1.1 简介1.2 zookeeper的作用1.3 Zookeeper的特点1.5 Zookeeper的数据结构1.6 Zookeeper的应用场景1.7 Zookeeper的选举机制&#xff08;重要&#xff09;1.7.1 第一次启动时1.7.2 非第一次启动时 二、Zookeeper集群部署2.1 安装前准备2.2 安装 ZookeeperSt…...

手写redux的connect方法, 使用了subscribe获取最新数据

一. 公共方法文件 1. connect文件 import React, { useState } from "react"; import MyContext from "./MyContext"; import _ from "lodash";// 模拟react-redux的 connect高阶函数 const connect (mapStateToProps, mapDispatchToProps) &…...

数据结构--B树

目录 回顾二叉查找树 如何保证查找效率 B树的定义 提炼 B树的插入和删除 概括B树的插入方法如下 B树的删除 导致删除时&#xff0c;结点不满足关键字的个数范围时&#xff08;需要借&#xff09; 如果兄弟不够借&#xff0c;需要合体 回顾B树的删除 B树 B树的查找 …...

【音视频|ALSA】基于alsa-lib开发ALSA应用层程序--附带源码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

嵌入式养成计划-43----QT QMainWindow中常用类的使用--ui界面文件--资源文件的添加--信号与槽

一百零九、QMainWindow中常用类的使用 109.1 菜单栏 QMenuBar 菜单栏 QMenuBar 最多只能有一个 109.2 工具栏 QToolBar 工具栏 QToolBar 可以有多个 109.3 状态栏QStatusBar 状态栏 QStatusBar 最多只能有一个 109.4 浮动窗口QDockWidget 浮动窗口 可以有多个 109.5 代…...

【Yarn】清除Yarn的缓存,更新Yarn本身、更新项目的依赖项

要清除Yarn的缓存&#xff0c;可以运行以下命令&#xff1a; yarn cache clean这将清除Yarn的缓存目录。 要更新Yarn本身&#xff0c;可以运行以下命令&#xff1a; yarn self-update这将下载并安装最新版本的Yarn。 如果要更新项目的依赖项&#xff0c;可以运行以下命令&a…...

点云从入门到精通技术详解100篇-雨雾环境下多传感器融合SLAM方法(续)

目录 4 基于球面投影的激光视觉融合里程计 4.1 引言 4.2 视觉惯性里程计 4.2.1特征点提取与匹配...

解决GET请求入参@NotNull验证不生效问题

一、问题 get请求NotNull验证不生效 二、解决方案 两个步骤&#xff1a; 在该方法的controller类上加Validated&#xff1b;在参数面前加NotNull&#xff1b; 三、其他注解 //被注释的元素必须为null Null //被注释的元素不能为null NotNull //被注释的元素必须为true Ass…...

《golang设计模式》第三部分·行为型模式-01-责任链模式(Chain of Responsibility)

文章目录 1 概念1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1 概念 责任链&#xff08;Chain of Responsibility&#xff09;是指将客户端请求处理的不同职责对象组成请求处理链。 客户端只需要将请求交付到该链上&#xff0c;而不需要关心链上含有哪些对象。请求…...

环境变量【使用命令行参数引出环境变量】

前提&#xff1a;命令行参数 大家在写C/C程序的时候肯定见过下面这种情况&#xff1a; main函数里面携带的参数&#xff0c;平常写代码过程中很少用到这两个参数&#xff0c;接下来我们就研究一下 我们也不知道 指针数组argv里面到底保存的是什么&#xff0c;也不知道这个a…...

【Java 进阶篇】JavaScript BOM History 详解

当用户浏览网页时&#xff0c;可以使用JavaScript的BOM (Browser Object Model)中的History对象来访问浏览器的历史记录。这个对象允许您在不更改页面的情况下导航到不同的历史记录项&#xff0c;或者查看有关用户访问过的页面的信息。 在本篇博客中&#xff0c;我们将围绕Jav…...

【计算机网络】https协议

文章目录 1 :peach:基本概念:peach:1.1 :apple:什么是HTTPS&#xff1f;:apple:1.2 :apple:什么是加密&#xff1f;:apple:1.3 :apple:常见的加密方式:apple:1.3.1 :lemon:对称加密:lemon:1.3.2 :lemon:⾮对称加密:lemon: 1.4 :lemon:数据指纹:lemon: 2 :peach:HTTPS的⼯作过程…...

React之受控组件和非受控组件以及高阶组件

一、受控组件 受控组件&#xff0c;简单来讲&#xff0c;就是受我们控制的组件&#xff0c;组件的状态全程响应外部数据 举个简单的例子&#xff1a; class TestComponent extends React.Component {constructor (props) {super(props);this.state { username: lindaidai }…...

中国移动集采120万部,助推国产5G赶超iPhone15

近期媒体纷纷传出消息指中国移动将大规模集采&#xff0c;预计将采购国产5G手机120万台&#xff0c;加上另外两家运营商的集采数量&#xff0c;估计集采数量可能达到300万部&#xff0c;如此将有助于它在国内高端手机市场赶超苹果。 国产5G手机在8月底突然上市&#xff0c;获益…...

华为云HECS服务器下docker可视化(portainer)

一、docker安装 华为云HECS安装docker-CSDN博客 二、portainer安装 portainer地址&#xff1a;Portainer: Docker and Kubernetes Management Platform 当前portainer分CE&#xff08;开源版&#xff09; 和 BE&#xff08;商业版&#xff09;&#xff0c;用CE即可 1 创建…...

postman发送soap报文示例

一、soap简介 soap是一种基于XML的协议 二、postman发送soap请求 1、发送post请求&#xff0c;url&#xff1a;​​​ https://www.dataaccess.com/webservicesserver/NumberConversion.wso 2、headers设置&#xff0c;添加Content-Type&#xff0c;值为text/xml 添加SOAP…...

力扣-python-两数之和

题解&#xff1a; class Solution(object):def twoSum(self, nums, target):# 遍历列表for i in range(len(nums)):# 计算需要找到的下一个目标数字res target-nums[i]# 遍历剩下的元素&#xff0c;查找是否存在该数字if res in nums[i1:]:# 若存在&#xff0c;返回答案。这里…...

网站换空间 seo/2345浏览器下载安装

最近在尝试做一个QQ截图那样的工具&#xff0c;其中一个功能就是要做一个选择框&#xff0c;自然用到了CRectTracker 但是有一个很关键的东西就是&#xff0c;拖拽CRectTracker的时候&#xff0c;不能让CRectTracker“移出”屏幕&#xff0c;否则截图出来就有黑色的块 怎么办&a…...

怎么做网站后台操作日志/网站外链优化方法

这里写目录标题1、树莓派刷机[^1]2、树莓派登录[^2]3、通过网络登录4、用网络ssh方式登录树莓派5、升级VIM[^7]6、远程图形界面登录7、数据互传1、树莓派刷机1 程序&#xff1a;Win32DiskImager 工具&#xff1a;SD储存卡转换USB插口 先打开程序&#xff0c;在把插上SD存储卡的…...

重庆市建设工程交易中心网站/怎么推广一个网站

我们讲到servlet可以理解服务器端处理数据的java小程序&#xff0c;那么谁来负责管理servlet呢&#xff1f;这时候我们就要用到web容器。它帮助我们管理着servlet等&#xff0c;使我们只需要将重心专注于业务逻辑。 什么是web容器&#xff1f; servlet没有main方法&#xff0…...

网页设计 做网站的代码/seo技术快速网站排名

用python实现的抓取腾讯视频所有电影的爬虫 1. # -*- coding: utf-8 -*-2. import re3. import urllib24. from bs4 import BeautifulSoup5. import string, time6. import pymongo8. NUM 0 #全局变量,电影数量9. m_type u #全局变量,电影类型10. m_site uqq #全局…...

dede网站后台导入文档/如何刷seo关键词排名

传送门:bzoj2989 题解 二进制分组-CA 欧几里得距离转成曼哈顿距离(x,y),(xy,x−y)(x,y),(xy,x-y)(x,y),(xy,x−y)之后问题就变成了每次给一个点1&#xff0c;询问某个矩形范围内的总值。 通常方法是cdqcdqcdq&#xff0c;二进制分组可以解决强制在线的限制。 具体来说&…...

就是做网站的...../关键词seo优化排名公司

本代码主要实现的是利用网络传输图片&#xff0c;用在我的树莓派项目之上。该项目在PC上运行服务端&#xff0c;树莓派上运行客户端&#xff0c;两者连接到同一局域网中&#xff0c;修改代码中的IP地址&#xff0c;就可以实现将树莓派采集到的图像数据实时传输到PC端。先运行服…...