iptables 防火墙(一)
iptables 防火墙(一)
- 一、Linux 防火墙基础
 - 防火墙分类
 
- 二、iptables 的表、链结构
 - 规则表
 - 规则链
 - 数据包过滤的匹配流程
 
- 三、编写防火墙规则
 - iptables 的安装
 - iptables的基本语法
 - 规则的匹配条件
 - 通用匹配
 - 隐含匹配
 - 显式匹配
 
- 四、总结
 
在网络安全的世界里,防火墙无疑是我们抵御外部威胁的第一道防线。而iptables,作为Linux系统上最强大的防火墙工具之一,为我们提供了细致控制网络流量的能力。本系列博客将带您逐步了解并掌握iptables的基础知识与配置方法。
一、Linux 防火墙基础
防火墙的定义
- 防火墙是一种由硬件和软件组合而成,在内部网和外部网之间、专有网和公共网之间构造的保护屏障,用已保护用户资料和信息安全的一种技术
 
防火墙的作用
- 主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,从而实现对计算机不安全网络因素的阻断。确保网络正常运行,保障信息安全,为用户提供良好的网络体验
 
防火墙分类
- 逻辑上分:主机防火墙和网络防火墙 
- 主机型防火墙:针对单个主机进行防护
 - 网络型防火墙:针对网络进行保护,保护内部的局域网
 
 - 物理上分:硬件防火墙和软件防火墙 
- 硬件防火墙:在硬件上实现防火墙功能,性能高,成本高。
 - 软件防火墙:依靠软件来实现防火墙功能,性能低,成本低
 
 
Linux包过滤防火墙概述
- Linux防火墙是一种功能强大的信息包过滤系统
 
netfilter
- 是Linux内核中的一种包过滤功能体系
 - 称为Linux防火墙的 “内核态”
 
iptables
- 位于 /sbin/iptables,是防火墙规则的管理工具
 - 称为Linux防火墙的 ”用户态“
——上述2种称呼都可以表示Linux防火墙 
包过滤的工作层次
- 主要是网络层,针对IP数据包
 - 体现在对数据包内的IP地址、端口等信息的处理上
 
二、iptables 的表、链结构

规则表
- 表的作用:容纳各种规则链
 - 表的划分依据:防火墙规则的作用相似
 
默认包括4个规则表
- raw表:是否对数据包进行状态跟踪
 - mangle表:是否为数据包设置标记
 - nat表:是否修改数据包中的源、目标IP地址或端口
 - filter表:是否放行该数据包(过滤)
 
规则链
- 规则的作用:对数据包进行过滤或处理
 - 链的作用:容纳各种防火墙规则
 - 链的分类依据:处理数据包的不同时机
 
默认包括5种规则链
- INPUT:处理入站数据包
 - OUTPUT:处理出站时间包
 - FORWARD:处理转发数据包
 - POSTROUTING:在进行路由选择后处理数据包
 - PREROUTING:在进行路由选择前处理数据包
 
数据包过滤的匹配流程
- 规则表之间的顺序 
- raw→mangle→nat→filter
 
 - 规则链之间的顺序 
- 入站:PREROUTING→INPUT
 - 出站:OUTPUT→POSTROUTING
 - 转发:PREROUTING→FORWARD→POSTROUTING
 
 - 规则链内的匹配顺序 
- 按顺序依次检查,匹配即停止(LOG策略例外)
 - 若找不到相匹配的规则,则按该链的默认策略处理

 
 
三、编写防火墙规则
iptables 的安装
- CentOS 7.3 默认使用 firewalld 防火墙,如果想使用 iptables 防火墙,必须先关闭firewalld 防火墙
 
# 关闭 firewalld 防火墙
[root@localhost ~]# systemctl stop firewalld
# 关闭自启动
[root@localhost ~]# systemctl disable firewalld
 
- Firewalld 防火墙关闭之后,可以通过 yum 方式再安装 iptables,因为默认 CentOS7.3系统中并没有安装 iptables
 
# 安装 iptables
[root@localhost ~]# yum -y install iptables iptables-services
# 启动 iptables
[root@localhost ~]# systemctl start iptables
# 设置开机自启动
[root@localhost ~]# systemctl enable iptables
 
iptables的基本语法
数据包的常见控制类型
- ACCEPT:允许通过
 - DROP:直接丢弃,不给出任何回应
 - REJECT:拒绝通过,必要时会给出提示
 - LOG:记录日志信息,然后传给下一条规则继续匹配
 
添加、查看、删除规则等基本操作
| 选项名 | 功能及特点 | 
|---|---|
| -A | 在指定链的末尾添加(--append)一条新的规则 | 
| -D | 删除(--delete)指定链中的某一条规则,可指定规则序号或具体内容 | 
| -I | 在指定链中插入(--insert)一条新的规则,未指定序号时默认作为第一条规则 | 
| -R | 修改、替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容 | 
| -L | 列出(--list)指定链中所有的规则,若未指定链名,则列出表中的所有链 | 
| -F | 清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链 | 
| -P | 设置指定链的默认策略(--policy) | 
| -n | 使用数字形式(--numeric)显示输出结果,如显示 IP 地址而不是主机名 | 
| -v | 查看规则列表时显示详细(--verbose)的信息 | 
| -h | 查看命令帮助信息(--help) | 
| --line-numbers | 查看规则列表时,同时显示规则在链中的顺序号 | 
| -t | 指定要操作的表 | 
| -i | 入站网卡 | 
| -o | 出战网卡 | 
| -d | 目的地址 | 
| -p | 协议名 | 
| -s | 源地址 | 
| -X | 删除指定表中用户自定义的规则链 | 
| -N | 新建一条用户自己定义的规则链 | 
| -Z | 将所有表的所有链的字节和数据包计数器清零 | 
| -j | 指定目标动作或跳转 | 
| ! | 条件取反 | 
添加新的规则
- 添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来插入规则。
 - 例如,若要在 filter 表 INPUT 链的末尾添加一条防火墙规则,可以执行以下操作(其中“-p 协议名”作为匹配条件)
 
[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
 
- 当使用管理选项“-I”时,允许同时指定新添加规则的顺序号,未指定序号时默认作为第一条。
 - 例如,以下操作添加的两条规则将分别位于 filter 表的第一条、第二条(其中省略了“-t filter”选项,默认使用 filter 表)。
 
[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT
[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT
 
查看规则列表
- 查看已有的防火墙规则时,使用管理选项“-L”,结合“–line-numbers”选项还可显示各条规则在链内的顺序号。
 - 例如,若要查看 filter 表 INPUT 链中的所有规则,并显示规则序号, 可以执行以下操作。
 
[root@bogon ~]# iptables -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       udp  --  bogon                anywhere            
2    ACCEPT     tcp  --  anywhere             anywhere            
3    ACCEPT     all  --  bogon                anywhere            
4    ACCEPT     all  --  bogon/24             anywhere            
 
- 当防火墙规则的数量较多时,若能够以数字形式显示地址和端口信息,可以减少地址解析的环节,在一定程度上加快命令执行的速度。
 - 例如,若要以数字地址形式查看 filter 表INPUT 链中的所有规则,可以执行以下操作。
 
[root@bogon ~]# iptables -n -L INPUT        # "-n -L"可合写为"-nL" 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       udp  --  192.168.72.1         0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  192.168.72.1         0.0.0.0/0           
ACCEPT     all  --  192.168.72.0/24      0.0.0.0/0  
 
删除、清空规则
- 删除一条防火墙规则时,使用管理选项“-D”。
 - 例如,若要删除 filter 表 INPUT 链中的第三条规则,可以执行以下操作。
 
[root@bogon ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       udp  --  192.168.72.1         0.0.0.0/0           
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  192.168.72.1         0.0.0.0/0           
4    ACCEPT     all  --  192.168.72.0/24      0.0.0.0/0           [root@bogon ~]# iptables -D INPUT 3
[root@bogon ~]# iptables -nL --line-numbers        # 确认删除效果
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       udp  --  192.168.72.1         0.0.0.0/0           
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  192.168.72.0/24      0.0.0.0/0           
 
- 清空指定链或表中的所有防火墙规则,使用管理选项“-F”。
 - 例如,若要清空 filter 表INPUT链中的所有规则,可以执行以下操作。
 
[root@bogon ~]# iptables -F INPUT
[root@bogon ~]# iptables -nL --line-numbers         # 确认删除效果
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
 
- 使用管理选项“-F”时,允许省略链名而清空指定表所有链的规则。
 - 例如,执行以下操作分别用来清空 filter 表、nat 表、mangle 表。
 
[root@bogon ~]# iptables -F 
[root@bogon ~]# iptables -t nat -F 
[root@bogon ~]# iptables -t mangle -F
 
设置默认策略
- iptables 的各条链中,默认策略是规则匹配的最后一个环节——当找不到任何一条能够匹配数据包的规则时,则执行默认策略。默认策略的控制类型为 ACCEPT(允许)、DROP(丢弃)两种。
 - 例如,执行以下操作可以将 filter 表中 FORWARD 链的默认策略设为丢弃,OUTPUT 链的默认策略设为允许。
 
[root@bogon ~]# iptables -t filter -P FORWARD DROP
[root@bogon ~]# iptables -P OUTPUT ACCEPT
 
- 需要注意的是,当使用管理选项“-F”清空链时,默认策略不受影响。
 - 因此若要修改默认策略,必须通过管理选项“-P”重新进行设置。
 - 另外,默认策略并不参与链内规则的顺序编排, 因此在其他规则之前或之后设置并无区别。
 
规则的匹配条件
常用的隐含匹配条件
- 端口匹配:–sport源端口、–dport目的端口
 - ICMP类型匹配:–icmp-type ICMP类型
 
常用的显式匹配条件
- 多端口匹配:-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表 - IP范围匹配:-m iprange --src-range IP范围
 - MAC地址匹配:-m mac --mac-source MAC地址
 - 状态匹配:-m state --state 连接状态
 
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p tcp -m iprange -src-range 192.168.4.21-192.168.4.28-ACCEPT
[root@localhost ~]#iptables -A INPUT -m mac -mac-source 00:0c:29:c0:55:3f -j DROP
 
通用匹配
(1) 协议匹配
- 编写 iptables 规则时使用“-p 协议名”的形式指定,用来检查数据包所使用的网络协议(–protocol)
 
# 丢弃通过 icmp 协议访问防火墙本机的数据包,允许转发经过防火墙的除 icmp 协议之外的数据包
[root@localhost ~]# iptables -I INPUT -p icmp -j DROP
[root@localhost ~]# iptables -A FORWARD ! -p icmp -j ACCEPT            #感叹号”!”表示取反
 
(2) 地址匹配
- 编写 iptables 规则时使用“-s 源地址”或“-d 目标地址”的形式指定,用来检查数据包的源地址(–source)或目标地址(–destination)
 
# 拒绝转发源地址为192.168.1.11 的数据,允许转发源地址位于 192.168.7.0/24 网段的数据
[root@localhost ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT
[root@localhost ~]# iptables -A FORWARD -s 192.168.7.0/24 -j ACCEPT
# 检测到来自某个网段(如 10.20.30.0/24)的频繁扫描、登录穷举等不良企图,可立即添加防火墙规则进行封锁
[root@localhost ~]# iptables -I INPUT -s 10.20.30.0/24 -j DROP
[root@localhost ~]# iptables -I FORWARD -s 10.20.30.0/24 -j DROP
 
(3) 网络接口匹配
- 编写 iptables 规则时使用“-i 接口名”和“-o 接口名”的形式,用于检查数据包从防火墙的哪一个接口进入或发出,分别对应入站网卡(–in-interface)、出站网卡(–out-interface)
 
# 丢弃从外网接口(ens33)访问防火墙本机且源地址为私有地址的数据包
[root@localhost ~]# iptables -A INPUT -i ens33 -s 10.0.0.0/8 -j DROP 
[root@localhost ~]# iptables -A INPUT -i ens33 -s 172.16.0.0/16 -j DROP 
[root@localhost ~]# iptables -A INPUT -i ens33 -s 192.168.0.0/16 -j DROP
 
隐含匹配
(1) 端口匹配
- 编写 iptables 规则时使用“–sport 源端口”或“–dport 目标端口”的形式,针对的协议为TCP 或 UDP,用来检查数据包的源端口(–source-port)或目标端口(–destination-port)。
 - 单个端口号或者以冒号“:”分隔的端口范围都是可以接受的,但不连续的多个端口不能采用这种方式
 
# 允许为网段 192.168.4.0/24 转发 DNS 查询数据包
[root@localhost ~]# iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -d 192.168.4.0/24 -p udp --sport 53 -j ACCEPT
# 开放 20、21 端口,以及用于被动模式的端口范围为 24500~24600
[root@localhost ~]# iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 24500:24600 -j ACCEPT
 
(2) ICMP 类型匹配
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP 
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT 
[root@localhost ~]# iptables -A INPUT -p icmp -j DROP# 可用的 ICMP 协议类型
iptables -p icmp -h
 
显式匹配
(1) 多端口匹配
# 允许本机开放 25、80、110、143 端口,以便提供电子邮件服务
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT
 
(2) IP 范围匹配
# 禁止转发源 IP 地址位于 192.168.4.21 与 192.168.4.28 之间的 TCP
数据包
[root@localhost    ~]#    iptables    -A    FORWARD    -p    tcp    -m    iprange    --src-range 192.168.4.21-192.168.4.28 -j DROP
 
(3) MAC 地址匹配
# 根据 MAC 地址封锁主机,禁止其访问本机的任何应用
[root@localhost ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP
 
(4) 状态匹配
# 禁止转发与正常 TCP 连接无关的非--syn 请求数据包(如伪造的网络攻击数据包)
[root@localhost ~]# iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP# 只开放本机的 Web 服务(80 端口),但对发给本机的 TCP 应答数据包予以放行,其他入站数据包均丢弃
[root@localhost ~]# iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT 
[root@localhost ~]# iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT 
[root@localhost ~]# iptables -P INPUT DROP
 
四、总结
iptables是一个功能强大的防火墙工具,通过合理的配置可以为我们提供强大的网络安全保障。但请注意,iptables的配置相对复杂,需要具备一定的网络基础和Linux系统管理经验。在配置iptables时,请务必谨慎操作,避免误操作导致网络故障。
相关文章:
iptables 防火墙(一)
iptables 防火墙(一) 一、Linux 防火墙基础防火墙分类 二、iptables 的表、链结构规则表规则链数据包过滤的匹配流程 三、编写防火墙规则iptables 的安装iptables的基本语法规则的匹配条件通用匹配隐含匹配显式匹配 四、总结 在网络安全的世界里…...
数据库物理结构设计-定义数据库模式结构(概念模式、用户外模式、内模式)、定义数据库、物理结构设计策略
一、引言 如何基于具体的DBMS产品,为数据库逻辑结构设计的结果,即关系数据库模式,制定适合应用要求的物理结构 1、在设计数据库物理结构前,数据库设计人员首先 要充分了解所用的DBMS产品的功能、性能和特点,包括提供…...
QT加载安装外围依赖库的翻译文件后翻译失败的现象分析:依赖库以饿汉式的形式暴露单例接口导致该现象的产生
1、前提说明 VS2019 QtClassLibaryDll是动态库,QtWidgetsApplication4是应用程序。 首先明确:动态库以饿汉式的形式进行单例接口暴露; 然后,应用程序加载动态库的翻译文件并进行全局安装; // ...QTranslator* trans = new QTranslator();//qDebug() << trans->…...
13_旷视轻量化网络--ShuffleNet V2
回顾一下ShuffleNetV1:08_旷视轻量化网络--ShuffleNet V1-CSDN博客 1.1 简介 ShuffleNet V2是在2018年由旷视科技的研究团队提出的一种深度学习模型,主要用于图像分类和目标检测等计算机视觉任务。它是ShuffleNet V1的后续版本,重点在于提供更高效的模…...
Linux系统编程--进程间通信
目录 1. 介绍 1.1 进程间通信的目的 1.2 进程间通信的分类 2. 管道 2.1 什么是管道 2.2 匿名管道 2.2.1 接口 2.2.2 步骤--以父子进程通信为例 2.2.3 站在文件描述符角度-深度理解 2.2.4 管道代码 2.2.5 读写特征 2.2.6 管道特征 2.3 命名管道 2.3.1 接口 2.3.2…...
docker-本地部署-后端
前置条件 后端文件 这边是一个简单项目的后端文件目录 docker服务 镜像文件打包 #命令行 docker build -t author/chatgpt-ai-app:1.0 -f ./Dockerfile .红框是docker所在文件夹 author:docker用户名chatgpt-ai-app:打包的镜像文件名字:1.0 &#…...
TLS + OpenSSL + Engine + PKCS#11 + softhsm2 安全通信
引擎库路径只有在 /lib 下才能被 "LOAD" 识别到,OpenSSL的ReadMe给的示例在/lib,大概是在构建OpenSSL时默认的configure指定了lib路径 // #define PKCS11_ENGINE_PATH "/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so" #define …...
Unity实现简单的MVC架构
文章目录 前言MVC基本概念示例流程图效果预览后话 前言 在Unity中,MVC(Model-View-Controller)框架是一种架构模式,用于分离游戏的逻辑、数据和用户界面。MVC模式可以帮助开发者更好地管理代码结构,提高代码的可维护性…...
【简单讲解下OneFlow深度学习框架】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
FastGPT 调用Qwen 测试Hello world
Ubuntu 安装Qwen/FastGPT_fastgpt message: core.chat.chat api is error or u-CSDN博客 参考上面文档 安装FastGPT后 登录, 点击右上角的 新建 点击 这里,配置AI使用本地 ollama跑的qwen模型 问题:树上有3只鸟,开了一枪&#…...
Golang-GMP
GMP调度 golang-GMP语雀笔记整理 GMP调度设计目的,为何设计GMP?GMP的底层实现几个核心数据结构GMP调度流程 设计目的,为何设计GMP? 无论是多进程、多线程目的都是为了并发提高cpu的利用率,但多进程、多线程都存在局限性。比如多进程通过时…...
【PythonWeb开发】Flask自定义模板路径和静态资源路径
在大型的 Flask 项目中,确实可能会有多个子应用(Blueprints),每个子应用可能都有自己的静态文件和模板。为了更好地管理和组织这些资源,可以使用static_folder 和template_folder 属性来统一管理。必须同时设置好主应用…...
Java对象创建过程
在日常开发中,我们常常需要创建对象,那么通过new关键字创建对象的执行中涉及到哪些流程呢?本文主要围绕这个问题来展开。 类的加载 创建对象时我们常常使用new关键字。如下 ObjectA o new ObjectA();对虚拟机来讲首先需要判断ObjectA类的…...
Does a vector database maintain pre-vector chunked data for RAG systems?
题意:一个向量数据库是否为RAG系统维护预向量化分块数据? 问题背景: I believe that when using an LLM with a Retrieval-Augmented Generation (RAG) approach, the results retrieved from a vector search must ultimately be presented…...
Rust-11-错误处理
Rust 将错误分为两大类:可恢复的(recoverable)和 不可恢复的(unrecoverable)错误。对于一个可恢复的错误,比如文件未找到的错误,我们很可能只想向用户报告问题并重试操作。不可恢复的错误总是 b…...
自动化测试:使用Postman进行接口测试与脚本编写
Postman 是一种流行的 API 测试工具,广泛应用于开发和测试过程中。它不仅可以用于手动测试,还支持自动化测试和脚本编写,以确保 API 的可靠性和性能。本文将详细介绍如何使用 Postman 进行接口测试与脚本编写,帮助你更高效地进行自…...
ONLYOFFICE 8.1 桌面编辑器测评:引领数字化办公新潮流
目录 前言 下载安装 新功能概述 1.PDF 编辑器的改进 2. 演示文稿中的幻灯片版式 3.语言支持的改进 4. 隐藏“连接到云”板块 5. 页面颜色设置和配色方案 界面设计:简洁大方,操作便捷 性能评测:稳定流畅,高效运行 办公环…...
基于大语言模型LangChain框架:知识库问答系统实践
ChatGPT 所取得的巨大成功,使得越来越多的开发者希望利用 OpenAI 提供的 API 或私有化模型开发基于大语言模型的应用程序。然而,即使大语言模型的调用相对简单,仍需要完成大量的定制开发工作,包括 API 集成、交互逻辑、数据存储等…...
解锁Transformer的鲁棒性:深入分析与实践指南
🛡️ 解锁Transformer的鲁棒性:深入分析与实践指南 Transformer模型自从由Vaswani等人在2017年提出以来,已经成为自然语言处理(NLP)领域的明星模型。然而,模型的鲁棒性——即模型在面对异常、恶意或不寻常…...
mybatis#号和$区别
在MyBatis中,#{}和${}都是用于实现动态SQL的占位符,但它们在使用场景和安全性上有明显的区别: 用途区别: #{}主要用于传递接口传输过来的具体数据,如参数值,它可以防止SQL注入,因为MyBatis会…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...
C/Python/Go示例 | Socket Programing与RPC
Socket Programming介绍 Computer networking这个领域围绕着两台电脑或者同一台电脑内的不同进程之间的数据传输和信息交流,会涉及到许多有意思的话题,诸如怎么确保对方能收到信息,怎么应对数据丢失、被污染或者顺序混乱,怎么提高…...
SFTrack:面向警务无人机的自适应多目标跟踪算法——突破小尺度高速运动目标的追踪瓶颈
【导读】 本文针对无人机(UAV)视频中目标尺寸小、运动快导致的多目标跟踪难题,提出一种更简单高效的方法。核心创新在于从低置信度检测启动跟踪(贴合无人机场景特性),并改进传统外观匹配算法以关联此类检测…...
