UFW 配置 Ubuntu 防火墙并设置防火墙规则
一、什么是 UFW?
UFW,全称为 Uncomplicated Firewall,顾名思义,它是一种简单易用的防火墙管理工具。与传统的防火墙配置工具相比,UFW 以其简洁明了的命令行界面而闻名。虽然它主要为普通用户设计,但它也具备了足够的灵活性来处理更复杂的防火墙规则配置。
1.1 UFW 的特点
- 简单易用:UFW 通过简化的命令行接口,让用户可以轻松配置防火墙规则。
- 高效:UFW 基于 iptables,这使得它能够以较低的系统资源消耗提供强大的防火墙功能。
- 灵活性:虽然 UFW 的命令行简化了操作,但它仍然支持高级用户定义复杂的防火墙规则。
1.2 为什么选择 UFW?
选择 UFW 的原因在于它的易用性和功能性。对于没有深厚技术背景的用户来说,UFW 是配置防火墙的理想工具。而对于高级用户,UFW 也提供了足够的灵活性来满足复杂的防火墙需求。
二、UFW 的安装与基本配置
2.1 UFW 的安装
在大多数现代的 Ubuntu 发行版中,UFW 通常默认已经安装。如果你的系统中尚未安装 UFW,可以通过以下命令进行安装:
sudo apt update
sudo apt install ufw
安装完成后,你可以使用以下命令来检查 UFW 是否已经正确安装:
sudo ufw status
如果返回结果显示 Status: inactive
,说明 UFW 已经安装,但尚未启用。
2.2 启用与禁用 UFW
启用 UFW 是启动防火墙保护的第一步。你可以通过以下命令来启用 UFW:
sudo ufw enable
此时系统会提示你确认启用操作,一旦确认,UFW 将立即开始运行并应用你设置的规则。
如果你需要临时禁用 UFW,可以使用以下命令:
sudo ufw disable
禁用 UFW 后,所有 UFW 规则将不再生效,直到你再次启用它。
2.3 重置 UFW 配置
在某些情况下,你可能需要重置 UFW 的配置。这将清除所有已设置的规则,并将 UFW 恢复到初始状态。你可以使用以下命令来执行此操作:
sudo ufw reset
注意:执行此操作后,所有现有的防火墙规则将被删除。
三、配置 UFW 的基本防火墙规则
在启用 UFW 之前,建议首先配置一些基本的防火墙规则,以确保在启用 UFW 后不会意外阻止必要的流量。
3.1 默认策略设置
默认情况下,UFW 的策略是拒绝所有传入的连接,并允许所有传出的连接。这种默认策略可以有效阻止外部对系统的访问,同时允许系统自由地进行外部通信。你可以使用以下命令查看当前的默认策略:
sudo ufw default deny incoming
sudo ufw default allow outgoing
如果你希望改变默认策略,例如允许所有传入连接,你可以使用以下命令:
sudo ufw default allow incoming
然而,默认拒绝传入连接是一个更为安全的选择,建议大多数用户保持此设置。
3.2 允许 SSH 连接
在启用 UFW 之前,确保你已允许 SSH 连接。这对于远程管理服务器尤其重要。如果启用防火墙后没有允许 SSH 访问,你可能会被锁定在系统之外。你可以使用以下命令允许 SSH 连接:
sudo ufw allow ssh
或者,你也可以通过指定端口号来允许 SSH 连接(默认端口为22):
sudo ufw allow 22
3.3 允许其他服务
根据系统的具体需求,你可能还需要允许其他服务的连接。例如,如果你运行的是一个 Web 服务器,你需要允许 HTTP(端口80)和 HTTPS(端口443)的流量:
sudo ufw allow http
sudo ufw allow https
同样,你可以通过指定端口号来允许特定的服务,例如允许 MySQL 数据库的连接(默认端口为3306):
sudo ufw allow 3306
3.4 禁止指定端口的连接
在某些情况下,你可能希望显式禁止某些端口的连接。例如,如果你想阻止所有通过端口 23 的 Telnet 连接,可以使用以下命令:
sudo ufw deny 23
3.5 查看已配置的规则
配置好防火墙规则后,你可以使用以下命令查看所有已配置的规则:
sudo ufw status verbose
此命令将显示当前 UFW 的状态以及所有已配置的规则,包括每个规则是允许(ALLOW)还是拒绝(DENY)。
四、高级防火墙规则配置
在基础规则配置的基础上,UFW 还支持更加复杂和高级的规则配置。这些功能可以帮助你根据网络环境的需求来精确控制网络流量。
4.1 允许特定 IP 地址的访问
在某些情况下,你可能希望仅允许特定的 IP 地址访问某个服务。例如,允许 IP 地址 192.168.1.100
访问 SSH,可以使用以下命令:
sudo ufw allow from 192.168.1.100 to any port 22
这个规则仅允许来自 192.168.1.100
的 SSH 连接,其他 IP 的 SSH 连接将被拒绝。
4.2 限制特定 IP 地址的连接
如果你发现某个 IP 地址频繁尝试连接你的系统并可能构成威胁,你可以使用以下命令限制该 IP 地址的连接:
sudo ufw limit from 192.168.1.101
这个规则将限制来自 192.168.1.101
的连接速率,以防止暴力破解等攻击行为。
4.3 配置特定的端口范围
在某些情况下,你可能需要配置一组连续端口的规则。例如,如果你希望允许 1000-2000
端口范围内的所有连接,可以使用以下命令:
sudo ufw allow 1000:2000/tcp
这个规则允许 1000
到 2000
端口范围内的所有 TCP 连接。同样地,如果你希望允许 UDP 连接,可以将 tcp
替换为 udp
。
4.4 配置特定的网络接口
如果你的系统有多个网络接口(例如 eth0
、eth1
),你可以将规则应用到特定的网络接口上。以下命令允许从 eth0
接口的所有传入连接:
sudo ufw allow in on eth0
这个规则将只允许通过 eth0
接口的传入流量,其他接口的流量不会受到影响。
4.5 通过 UFW 进行日志记录
UFW 提供了日志功能,用于记录防火墙的活动。启用日志记录后,系统将记录所有符合已设置规则的连接尝试。你可以使用以下命令启用日志记录:
sudo ufw logging on
日志记录的详细程度可以通过设置日志级别来调整,例如 low
、medium
、high
或 full
:
sudo ufw logging high
日志文件通常位于 /var/log/ufw.log
,你可以通过该文件查看防火墙的活动记录。
五、使用 UFW 配置 IPv6
在现代网络中,IPv6 已经越来越普及。UFW 支持同时配置 IPv4 和 IPv6 规则。在启用 UFW 时,如果你的系统支持 IPv6,UFW 将自动检测并同时启用 IPv6。
5.1 确认 IPv6 是否启用
你可以通过编辑 UFW 的配置文件来确保 IPv6 已被启用。打开 UFW 的主配置文件:
sudo nano /etc/default/ufw
在文件中找到以下行:
IPV6=yes
确保 IPV6
设置为 yes
。如果没有这一行或被注释掉了,请添加或取消注释并设置为 yes
。保存并退出编辑器。
5.2 为 IPv6 配置规则
UFW 默认情况下会同时应用 IPv4 和 IPv6 的规则。然而,如果你需要为 IPv6 单独配置规则,可以使用以下方法。
5.2.1 允许特定 IPv6 地址访问服务
例如,允许特定 IPv6 地址 2001:0db8::1
访问 SSH 服务:
sudo ufw allow from 2001:0db8::1 to any port 22
5.2.2 禁止特定 IPv6 地址访问服务
例如,禁止 IPv6 地址 2001:0db8::2
访问 HTTP 服务:
sudo ufw deny from 2001:0db8::2 to any port 80
5.2.3 配置 IPv6 端口范围
允许 IPv6 的 1000-2000
端口范围内的所有 TCP 连接:
sudo ufw allow proto tcp from any to any port 1000:2000
5.3 验证 IPv6 规则
在配置完 IPv6 规则后,你可以通过以下命令验证规则是否正确应用:
sudo ufw status verbose
输出中应包含 IPv6 的规则信息,确保它们按预期工作。
六、UFW 的应用与删除规则
在日常使用中,你可能需要频繁添加、修改或删除防火墙规则。UFW 提供了简便的命令来管理这些操作。
6.1 添加规则
添加规则是最常见的操作之一。以下是几种常见的添加规则的方法:
-
允许特定端口的连接
允许 HTTP(端口80)连接:
sudo ufw allow http
-
允许特定协议的连接
允许 UDP 协议的 DNS(端口53)连接:
sudo ufw allow proto udp to any port 53
-
允许特定 IP 地址的连接
允许来自 IP 地址
192.168.1.50
的所有连接:sudo ufw allow from 192.168.1.50
6.2 删除规则
如果某条规则不再需要,可以将其删除。有两种方法可以删除规则:按规则编号删除或按规则描述删除。
6.2.1 按规则编号删除
首先,列出当前的规则并显示编号:
sudo ufw status numbered
输出示例:
Status: activeTo Action From-- ------ ----
[1] OpenSSH ALLOW Anywhere
[2] 80 ALLOW Anywhere
[3] OpenSSH (v6) ALLOW Anywhere (v6)
[4] 80 (v6) ALLOW Anywhere (v6)
假设你想删除规则编号 [2]
,执行:
sudo ufw delete 2
系统会提示你确认删除,输入 y
即可。
6.2.2 按规则描述删除
如果你知道要删除的规则的具体描述,也可以直接使用描述删除。例如,删除允许 HTTP 的规则:
sudo ufw delete allow http
系统同样会要求确认,输入 y
进行确认。
6.3 修改规则
UFW 本身不直接支持修改现有规则,但你可以通过删除旧规则并添加新规则来实现修改。例如,要将允许的 SSH 端口从22更改为2222:
-
删除旧的 SSH 规则:
sudo ufw delete allow ssh
-
添加新的 SSH 规则:
sudo ufw allow 2222/tcp
七、UFW 高级功能
除了基本的规则配置外,UFW 还提供了一些高级功能,以满足更复杂的网络安全需求。
7.1 限速连接(Rate Limiting)
防止暴力破解攻击的一种有效方法是限制连接速率。UFW 提供了 limit
选项,可以限制特定服务的连接速率。
例如,限制 SSH 连接的速率:
sudo ufw limit ssh
这个规则允许每个 IP 地址在特定时间内最多进行六次连接尝试,超过则暂时阻止该 IP 的连接请求。
7.2 使用应用配置文件
UFW 支持通过应用配置文件来管理一组相关的规则。这对于配置复杂的服务(如 Web 服务器、数据库服务器等)非常有用。
7.2.1 查看可用的应用配置文件
UFW 的应用配置文件通常位于 /etc/ufw/applications.d/
目录下。你可以使用以下命令查看可用的应用:
sudo ufw app list
输出示例:
Available applications:OpenSSHApacheApache FullApache SecureNginxNginx FullNginx HTTPNginx HTTPS
7.2.2 使用应用配置文件添加规则
例如,允许完整的 Apache 服务(包括 HTTP 和 HTTPS):
sudo ufw allow 'Apache Full'
7.2.3 添加自定义应用配置文件
如果需要为特定应用创建自定义配置文件,可以在 /etc/ufw/applications.d/
目录下创建一个新的 .rules
文件。
例如,为自定义应用 myapp
创建配置文件:
-
创建配置文件:
sudo nano /etc/ufw/applications.d/myapp.rules
-
添加以下内容:
[MyApp] title=My Custom Application description=Custom application for specific purposes ports=8080/tcp
-
保存并退出编辑器。
-
重新加载 UFW 应用列表:
sudo ufw app update myapp
-
允许
MyApp
:sudo ufw allow 'MyApp'
7.3 使用 UFW 脚本
对于需要复杂配置的情况,可以编写 UFW 脚本来自动化防火墙规则的配置。这对于需要在多台服务器上部署相同规则的场景非常有用。
7.3.1 创建 UFW 脚本
创建一个名为 setup_firewall.sh
的脚本文件:
nano setup_firewall.sh
添加以下内容:
#!/bin/bash# 重置 UFW
sudo ufw reset# 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing# 允许 SSH
sudo ufw allow ssh# 允许 HTTP 和 HTTPS
sudo ufw allow http
sudo ufw allow https# 启用 UFW
sudo ufw enable
7.3.2 赋予脚本执行权限
chmod +x setup_firewall.sh
7.3.3 运行脚本
./setup_firewall.sh
这个脚本将自动配置防火墙的基本规则,适用于快速部署场景。
7.4 集成 Fail2Ban
虽然 UFW 本身提供了一定的安全功能,但结合 Fail2Ban 使用可以进一步增强系统的安全性。Fail2Ban 可以监控日志文件,自动封禁多次尝试失败的 IP 地址,从而防止暴力破解攻击。
7.4.1 安装 Fail2Ban
sudo apt install fail2ban
7.4.2 配置 Fail2Ban
编辑 Fail2Ban 的主配置文件:
sudo nano /etc/fail2ban/jail.local
添加以下内容以配置 SSH 监控:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600
这个配置将监控 SSH 登录尝试,如果某个 IP 地址在10分钟内失败了5次登录尝试,将被暂时封禁。
7.4.3 启动并启用 Fail2Ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
7.5 使用 UFW 与 Docker
Docker 默认会修改 iptables 规则,这可能与 UFW 产生冲突。为了确保 Docker 容器的网络流量能够正确通过 UFW 进行管理,可以采取以下措施。
7.5.1 修改 UFW 配置以允许 Docker
编辑 UFW 配置文件:
sudo nano /etc/default/ufw
找到以下行:
DEFAULT_FORWARD_POLICY="DROP"
将其修改为:
DEFAULT_FORWARD_POLICY="ACCEPT"
保存并退出。
7.5.2 编辑 UFW before.rules 文件
sudo nano /etc/ufw/before.rules
在文件顶部添加以下内容,以确保 Docker 的 NAT 规则被正确应用:
# BEGIN UFW AND DOCKER
*nat
:POSTROUTING ACCEPT [0:0]
# Allow Docker containers to access the outside network
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
COMMIT
# END UFW AND DOCKER
保存并退出编辑器。
7.5.3 重启 UFW 和 Docker 服务
sudo ufw disable
sudo ufw enable
sudo systemctl restart docker
通过以上配置,Docker 容器的网络流量将能够正确通过 UFW 进行管理,不会导致意外的网络访问问题。
八、UFW 的日志管理
UFW 提供了详细的日志功能,可以帮助你监控和分析网络流量,识别潜在的安全威胁。合理管理日志对于维护系统安全至关重要。
8.1 启用日志记录
默认情况下,UFW 的日志记录是关闭的。要启用日志记录,可以使用以下命令:
sudo ufw logging on
8.2 设置日志级别
UFW 提供了多种日志级别,允许用户根据需求调整日志的详细程度。日志级别包括:
- off:关闭日志记录
- low:记录所有阻止的连接尝试
- medium:记录
low
级别的所有内容,并记录一些额外的信息 - high:记录所有的连接尝试,包括被允许的连接
- full:记录详细的连接信息
例如,要将日志级别设置为 high
:
sudo ufw logging high
8.3 查看日志
UFW 的日志通常保存在 /var/log/ufw.log
文件中。你可以使用以下命令查看日志内容:
sudo less /var/log/ufw.log
为了实时监控日志,可以使用 tail
命令:
sudo tail -f /var/log/ufw.log
8.4 管理日志文件
随着时间的推移,日志文件可能会变得非常庞大。为了管理日志文件,可以设置日志轮换(log rotation)。Ubuntu 默认使用 logrotate
工具来管理日志文件。
编辑或创建一个 UFW 的 logrotate 配置文件:
sudo nano /etc/logrotate.d/ufw
添加以下内容:
/var/log/ufw.log {rotate 7dailymissingoknotifemptycompressdelaycompresspostrotate/usr/sbin/invoke-rc.d rsyslog rotate > /dev/nullendscript
}
这个配置将每天轮换一次 UFW 日志,保留最近7天的日志,并对旧日志进行压缩。
相关文章:
UFW 配置 Ubuntu 防火墙并设置防火墙规则
一、什么是 UFW? UFW,全称为 Uncomplicated Firewall,顾名思义,它是一种简单易用的防火墙管理工具。与传统的防火墙配置工具相比,UFW 以其简洁明了的命令行界面而闻名。虽然它主要为普通用户设计,但它也具…...
在Keil 5中如何建立一个STM32项目
大家在使用Keil时大多都是利用样板项目来建立自己的项目,为了了解基本建立项目的知识写下了本篇文章。 项目建立流程 1.建立项目文件夹并明确其作用 —— 2.下载HAL库 —— 3.拷贝相关文件到对应文件夹 —— 4.打开Keil 5新建项目 —— 5.将项目文件夹添加到项目 …...
Linux 系统负载过高的排查思路
技术探讨:Linux系统负载过高的排查思路 在Linux服务器运行过程中,如果系统负载过高,可能会导致性能下降和服务不稳定。以下是针对Linux系统负载过高问题的排查思路和解决方法: 1. 查看系统负载: 使用uptime或top命令查…...
kotlin高级用法总结
Kotlin 是一门功能强大且灵活的编程语言,除了基础语法外,它还提供了许多高级特性,可以帮助你编写更简洁、高效和可维护的代码。以下是 Kotlin 的一些高级用法,涵盖了协程、扩展函数、属性委托、内联类、反射等内容。 协程&#x…...
Windows Wise Care 365 PRO-中文便携版
Windows Wise Care 365 PRO 链接:https://pan.xunlei.com/s/VOL9UE-i-GLXYr-6KhdyghHOA1?pwdajqe# - 禁止后续强制升级提示弹窗,杜绝后台下载升级文件 - 禁止自动创建开机启动项、任务计划,删除相关选项 - 去右侧无用区域:用户…...
SpringBoot 自动配置原理
自动配置是Spring Boot的关键特性之一,它简化了传统Spring应用繁琐的配置,通过智能推断和条件化配置简化了Spring应用的开发。 1. 自动配置的核心思想 目标:根据项目的依赖(如类路径中的 JAR 包)和已有的配置…...
HTMLCSS绘制三角形
1.代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>01triangle</title><s…...
WorkTool 技术解析:企业微信自动化办公的合规实现方案
引言:企业微信生态中的自动化需求 随着企业微信用户规模突破4亿(据腾讯2023年财报),其开放生态催生了自动化办公的技术需求。传统RPA(机器人流程自动化)工具在PC端已广泛应用,但移动端自动化仍…...
Linux机器之间排查网络连通问题
网络连通性排查步骤(基于五层模型) 以下按照网络五层架构,从底层到高层逐层排查,并分别列出Ubuntu和CentOS对应的命令。 1. 物理层 排查点:网线、网卡状态、物理连接。 命令(通用):…...
大数据学习(62)- Hadoop-yarn
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
Stable Diffusion/DALL-E 3图像生成优化策略
Stable Diffusion的最新版本或社区开发的插件,可以补充这些信息以保持内容的时效性。 云端源想 1. 硬件与部署优化(进阶) 显存压缩技术 使用--medvram或--lowvram启动参数(Stable Diffusion WebUI),通过分…...
21 | 全面测试项目功能
提示: 所有体系课见专栏:Go 项目开发极速入门实战课;欢迎加入 云原生 AI 实战 星球,12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力(聚焦于 Go、云原生、AI Infra);本节课最终…...
Debian系统grub新增启动项
参考链接 给grub添加自定义启动项_linux grub定制 启动项名称自定义-CSDN博客 www.cnblogs.com 1. boot里面的grub.cfg 使用vim打开boot里面的grub.cfg sudo vim /boot/grub/grub.cfg 这时候会看到文件最上方的提示 2. 真正配置grub的文件 从刚才看到的文件提示中&#x…...
C语言中的assert断言,你了解多少呢?
引言 ‘ 介绍了assert 是什么,以及assert的优缺点 一、什么assert是断言 assert.h 头文件定义了宏 assert() ,用于在运行时确保程序符合指定条件,如果不符合,就报错终止运行。这个宏常常被称为“断言”。 int a 10;asse…...
设计模式之工厂模式
工厂模式属于创建型设计模式的一种,其实在我看来它更是在面向对象编程语言的抽象层的更加灵活的应用。工厂模式其实在创建型模式中难度较高,整体的理解上需要一定时间进行消化,在一些Java常见框架中,这种模式也是频繁出现的设计&a…...
详细学习 pandas 和 xlrd:从零开始
详细学习 pandas 和 xlrd:从零开始 前言 在数据处理和分析中,Excel 文件是最常见的数据格式之一。Python 提供了强大的库 pandas,可以轻松地处理 Excel 文件中的数据。同时,我们还可以使用 xlrd 来读取 Excel 文件,尤…...
BFS比DFS更好理解「翻转二叉树」
一周没发博客,算法好难!一直在复习前面的,哈希表、链表、二叉树已经够我喝一壶了,不过我一定要啃下来,哪怕慢一点,也不能盲目的追求速度,勤于复习才能将知识变成自己的,复习比学习重…...
c++介绍运算符重载九
这段代码中我们可以看到同样是运算符,它的作用是不同的aa<<3;是c内置的移位运算符。 cout<<"hello world"中<<它的作用是插入运算符。将字符串传递给cout对象,从而将字符输出到终端上。这种功能是如何实现的?其…...
重生之我在学Vue--第9天 Vue 3 项目整合
重生之我在学Vue–第9天 Vue 3 项目整合 文章目录 重生之我在学Vue--第9天 Vue 3 项目整合前言一、架构升级:从散件到整机1.1 项目结构重构1.2 核心模块通信图 二、功能整合:CRUD全链路实现2.1 任务管理状态中枢2.2 路由守卫实现数据预取2.3 UI与业务逻辑…...
小程序酒店:如何实现智能预订与在线支付?
在移动互联网快速发展的今天,酒店行业面临着前所未有的机遇与挑战。用户需求日益多样化,市场竞争愈发激烈,传统酒店预订方式已经难以满足现代消费者的需求。而小程序作为一种轻量化、便捷化的移动应用形式,正在成为酒店行业数字化转型的重要工具。通过小程序开发,酒店可以…...
网络信息安全专业(710207)网络安全攻防实训室建设方案
一、引言 随着信息技术的飞速发展,网络空间安全已成为国家安全的重要组成部分,对网络信息安全专业人才的需求日益增长。为满足网络信息安全专业(专业代码710207)的教学需求,提升学生在网络安全攻防领域的实践能力&…...
npm、pnpm、cnpm、yarn、npx之间的区别
区别 特性npmyarnpnpmcnpmnpx核心定位Node.js 默认包管理增强稳定性与性能高效存储与严格隔离国内镜像加速工具临时执行包命令依赖存储方式扁平化 node_modules扁平化 lock 文件全局硬链接 符号链接同 npm不适用安装速度较慢较快(并行下载)最快&#…...
数学:从宇宙密码到人工智能的核心语言
——解析数学本质、历史演进与未来革命的3000年全景图 一、数学本质论:宇宙的元语言 1.1 数学实在论的拓扑诠释 根据丘成桐的卡拉比-丘流形理论,物理定律可表述为: M C Y ↪ C P n 满足 c 1 ( M ) 0 \mathcal{M}_{CY} \hookrightarrow \…...
Java中的加盐加密:提升密码存储安全性的关键实践
引言 在现代应用中,用户密码的安全性至关重要。单纯的哈希算法(如MD5、SHA-1)虽然可以隐藏原始密码,但面对彩虹表攻击和暴力破解时仍存在风险。加盐加密通过在哈希过程中引入随机数据(称为“盐”)…...
开启AI开发新时代——全解析Dify开源LLM应用开发平台
开启AI开发新时代——全解析Dify开源LLM应用开发平台 在人工智能迅速发展的今天,如何快速将创意转化为高效可用的应用成为开发者亟待解决的问题。Dify 作为一款开源的 LLM 应用开发平台,以其直观的界面和强大的功能组合(包括 agentic AI 工作…...
数学建模:MATLAB强化学习
一、强化学习简述 强化学习是一种通过与环境交互,学习状态到行为的映射关系,以获得最大积累期望回报的方法。包含环境,动作和奖励三部分,本质是智能体通过与环境的交互,使得其作出的动作所得到的决策得到的总的奖励达…...
ELK traceId实现跨服务日志追踪
ELK怎么实现跨服务日志追踪,Trace-Id 具体实现方案及代码_kibana关联其他服务器的日志-CSDN博客 ELKMDC追踪日志 ---- SpringCloud实现传递_elk的mdc-CSDN博客 SpringBoot之HandlerInterceptor拦截器的使用 ——(一)-CSDN博客 在使用ELK&a…...
【开源项目-爬虫】Firecrawl
看到其他项目引用了这个项目 Firecrawl 用免费额度试了一下,这个项目和之前的 https://r.jina.ai/ 很像(类似的还有 https://www.scrapingbee.com/?),将爬取到的网页转换为 markdown 格式,这样大语言模型用…...
波特率、比特率、传信率、传码率......
去年搞过一段时间的无线通信,当时我脑子里真的是一团乱麻,本身咱也不是学通信的,咱是学机械出身的,后面又搞电,反正对于通信这一块就不是很懂,后面也慢慢搞出来了一点小东西,但是对于一些细节还…...
用户模块——redis工具类
1. Redis工具类与基础配置 1.1 什么是Redis,为什么使用它? Redis(Remote Dictionary Server)是一个开源的高性能键值对存储数据库,通常用于缓存数据、存储会话信息等场景。它的主要优点是速度快,支持多种数…...
Synology 部署的 WordPress 無法升級至最新版本時,可以透過以下改良版指南進行排查和解決。
當 Synology 部署的 WordPress 無法升級至最新版本時,可以透過以下改良版指南進行排查和解決。我對內容進行了補充和重新組織,希望能幫助你更高效地處理這類問題: 權限相關問題處理 檢查文件和目錄權限: 確保 WordPress 安裝目錄…...
012-Benchmark
Benchmark 以下是一篇关于Google Benchmark库的全面介绍及使用指南,包含完整C代码示例和核心功能覆盖: Google Benchmark:C 性能基准测试指南 一、库简介 Google Benchmark 是一个专为 C 设计的微基准测试库,用于精确测量代码片…...
百某田网任务脚本
自动化操作百田游戏的任务脚本,特别是用于完成每日任务和积分兑换的功能。 主要功能 任务管理: 脚本通过定时任务查询并执行每天的任务,自动完成任务并兑换积分。 每个任务通过调用do_list()和do_task()函数来查询和完成。 多账号支持: 支持多个账号的登录和管理,账号信息…...
使用纯CSS 实现 侧边栏 拖拽效果
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、效果实现原理二、代码演示三.简单解释下样式四 完整的DEMO总结 前言 有不少需求是要拖动改变侧边栏宽高的,以下就是在不适用js ,只使用css 的情…...
c语言笔记 函数入门
c语言的函数就是用来实现某种功能的,如果说我们的程序代码都写在main函数中,这样会显得很难读懂,而且代码太长过于冗余,显得没有质量。所以我们可以把一些功能用分函数的方法实现功能独立分开,实现c程序的工整还有方便…...
运维新手入门——线缆的使用(Beginner‘s Guide to Operations and Maintenance - Cable Usage)
运维新手入门——线缆的使用 近期不断的有朋友问到线缆的传输距离,我们每天都在与线缆打交道,清楚了解线缆的使用才能在项目中得心应手,我们之前有提到过。 本期我们一起再来总结下常用的线缆传输距离。 01) 网线:超…...
JS—闭包:3分钟从入门到放弃
个人博客:haichenyi.com。感谢关注 一. 目录 一–目录二–基础定义三–闭包的运行机制四–闭包实战应用场景五–内存泄漏预防指南六–最佳实践总结 二. 基础定义 闭包:能够访问外部函数作用域的函数,以及其词法环境的组合。举个老生常谈栗…...
python pandas模块
python pandas模块 终于也到介绍pandas的时候了,python中用于处理data的一个lib 从wiki中找到的关于pandas的介绍,如下, Original author(s) Wes McKinney Developer(s) Community Initial release 11 January 2008; 17 years ago [citatio…...
系统部署【信创名录】及其查询地址
一、信创类型 (一)服务器: 1.华为云 2.腾讯云 3.阿里云 (二)中央处理器(CPU): 1.海思,鲲鹏920服务器 (三)中间件 1.人大金仓 ࿰…...
docker-compose部署MongoDB分片集群
前言 MongoDB 使用 keyFile 进行 节点间身份验证,我们需要先创建一个 keyFile 并确保所有副本集的节点使用相同的 keyFile。 openssl rand -base64 756 > mongo-keyfile chmod 400 mongo-keyfiledocker-compose部署分片集群 无密码方式 # docker-compose-mongodb.yml s…...
博奥龙Nanoantibody系列IP专用抗体
货号名称BDAA0260 HRP-Nanoantibody anti Mouse for IP BDAA0261 AbBox Fluor 680-Nanoantibody anti Mouse for IP BDAA0262 AbBox Fluor 800-Nanoantibody anti Mouse for IP ——无轻/重链干扰,更高亲和力和特异性 01Nanoantibody系列抗体 是利用噬菌体展示纳…...
CTFshow 【WEB入门】信息搜集 【VIP限免】 web1-web17
CTFshow 【 WEB入门】、【VIP限免】 web1 ----源码泄露 首先第一步,看源代码 web2----前台JS绕过 简单点击查看不了源代码,可以强制查看 比如 Ctrl Shift ICtrl U或者在url前加一个view-source: view-source:http://79999ca1-7403-46da-b25b-7ba9…...
css 知识点整理
1.css 层叠样式表 中的 inherit、initial、unset 关键字适用属性类型行为逻辑典型场景inherit所有属性强制继承父级值统一子元素样式initial所有属性重置为规范初始值清除自定义或继承样式unset所有属性自动判断继承或重置简化全局样式重置或覆盖 2. sass 常用语法 2.1、变量…...
02.Kubernetes 集群部署
Kubernetes 集群部署 Kubernetes 相关端口 1. Kubernetes 集群组件运行模式 独立组件模式 除 Add-ons 以外,各关键组件以二进制方式部署于节点上,并运行于守护进程;各 Add-ons 以 Pod 形式运行 静态 Pod 模式 控制平面各组件以静态 Pod …...
支持向量机(SVM)原理与应用
背景 支持向量机(Support Vector Machine, SVM)是一种经典的监督学习算法,广泛应用于分类和回归问题。SVM以其强大的数学基础和优异的性能在机器学习领域占据了重要地位。本文将详细介绍SVM的原理、核函数的作用以及如何在Python中使用SVM解决…...
【文献阅读】SPRec:用自我博弈打破大语言模型推荐的“同质化”困境
📜研究背景 在如今的信息洪流中,推荐系统已经成为了我们生活中的“贴心小助手”,无论是看电影、听音乐还是购物,推荐系统都在努力为我们提供个性化的内容。但这些看似贴心的推荐背后,其实隐藏着一个严重的问题——同质…...
【WRF模拟】如何查看 WPS 的输入静态地理数据(二进制格式)?
查看 WPS 的输入静态地理数据方法总结 方法 1:使用 gdal_translate 将二进制数据转换为 GeoTIFFgdal_translate 工具概述使用 gdal_translate 将二进制数据转换为 GeoTIFF方法 2:使用 ncdump 查看 geo_em.dXX.nc方法 3:使用 Python xarray + matplotlib 可视化 geo_em.dXX.n…...
介绍如何使用RDDM(残差噪声双扩散模型)进行知识蒸馏
下面为你详细介绍如何使用RDDM(残差噪声双扩散模型)进行知识蒸馏,从而实现学生RDDM模型的一步去噪。这里假定你已经有了RDDM模型,并且使用PyTorch深度学习框架。 整体思路 数据准备:加载训练数据并进行必要的预处理。…...
【lf中的git实战】
1)开发分支 develop 2)各种功能分支 author/feature_func 3)release分支 4)合并author/feature_func到develop author/feature_func 到 develop时: cd develop git merge --squash author/feature_func 5)develop合并到author/feature_func时: cd author/feature_func g…...
Java实现Consul/Nacos根据GPU型号、显存余量执行负载均衡
Java实现Consul/Nacos根据GPU型号、显存余量执行负载均衡 步骤一:服务端获取GPU元数据 1. 添加依赖 在pom.xml中引入Apache Commons Exec用于执行命令: <dependency><groupId>org.apache.commons</groupId><artifactId>comm…...