群辉做网站服务器/今日国际新闻大事
原文链接:统信UOS 1060上通过Fail2Ban来Ban IP
hello,大家好啊,今天给大家带来一篇在统信UOS 1060上安装Fail2Ban并且当ip被ban后通过邮件发送通知的文章。Fail2Ban 是一个用于防止暴力攻击的开源软件。它可以扫描日志文件(例如,SSH或Web服务器日志文件)以查找IP地址,这些IP地址在定义的时间段内显示了太多的失败登录尝试,并在防火墙规则中封锁它们(通常使用iptables)。Fail2Ban通常用于防止各种类型的暴力攻击,例如SSH暴力攻击、邮件服务器攻击等。
1、查看系统版本信息
pdsyw@pdsyw-PC:~/Desktop$ uname -a
Linux pdsyw-PC 4.19.0-arm64-desktop #6030 SMP Tue Jun 27 15:28:10 CST 2023 aarch64 GNU/Linux
pdsyw@pdsyw-PC:~/Desktop$
pdsyw@pdsyw-PC:~/Desktop$
pdsyw@pdsyw-PC:~/Desktop$ cat /etc/os-version
[Version]
SystemName=UOS Desktop
SystemName[zh_CN]=统信桌面操作系统
ProductType=Desktop
ProductType[zh_CN]=桌面
EditionName=Professional
EditionName[zh_CN]=专业版
MajorVersion=20
MinorVersion=1060
OsBuild=11014.100.100
pdsyw@pdsyw-PC:~/Desktop$
2、配置fail2ban----安装fail2ban软件
pdsyw@pdsyw-PC:~/Desktop$ sudo apt update
请输入密码:
验证成功
命中:1 https://cdn-professional-security.chinauos.com eagle/1060 InRelease
命中:2 https://pro-driver-packages.uniontech.com eagle InRelease
命中:3 https://professional-packages.chinauos.com/desktop-professional eagle InRelease
命中:4 https://professional-packages.chinauos.com/printer eagle InRelease
命中:5 https://app-store-files.uniontech.com/231013140032791/appstore eagle-pro InRelease
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
有 156 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
pdsyw@pdsyw-PC:~/Desktop$ sudo apt install fail2ban -y
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:libutempter0 squashfs-tools x11-apps x11-session-utils xbitmaps xinit
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:python3-pyinotify python3-systemd whois
建议安装:mailx monit python-pyinotify-doc
下列【新】软件包将被安装:fail2ban python3-pyinotify python3-systemd whois
升级了 0 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 156 个软件包未被升级。
需要下载 522 kB 的归档。
解压缩后会消耗 2,550 kB 的额外空间。
获取:1 https://professional-packages.chinauos.com/desktop-professional eagle/main arm64 fail2ban all 0.10.2-2.1 [385 kB]
获取:2 https://professional-packages.chinauos.com/desktop-professional eagle/main arm64 python3-pyinotify all 0.9.6-1 [26.9 kB]
获取:3 https://professional-packages.chinauos.com/desktop-professional eagle/main arm64 python3-systemd arm64 234-2+b1 [34.9 kB]
获取:4 https://professional-packages.chinauos.com/desktop-professional eagle/main arm64 whois arm64 5.4.3 [75.6 kB]
已下载 522 kB,耗时 1秒 (351 kB/s)
正在选中未选择的软件包 fail2ban。
(正在读取数据库 ... 系统当前共安装有 198268 个文件和目录。)
准备解压 .../fail2ban_0.10.2-2.1_all.deb ...
正在解压 fail2ban (0.10.2-2.1) ...
/var/cache/apt/archives/fail2ban_0.10.2-2.1_all.deb
正在选中未选择的软件包 python3-pyinotify。
准备解压 .../python3-pyinotify_0.9.6-1_all.deb ...
正在解压 python3-pyinotify (0.9.6-1) ...
/var/cache/apt/archives/python3-pyinotify_0.9.6-1_all.deb
正在选中未选择的软件包 python3-systemd。
准备解压 .../python3-systemd_234-2+b1_arm64.deb ...
正在解压 python3-systemd (234-2+b1) ...
/var/cache/apt/archives/python3-systemd_234-2+b1_arm64.deb
正在选中未选择的软件包 whois。
准备解压 .../archives/whois_5.4.3_arm64.deb ...
正在解压 whois (5.4.3) ...
/var/cache/apt/archives/whois_5.4.3_arm64.deb
正在设置 whois (5.4.3) ...
正在设置 fail2ban (0.10.2-2.1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service → /lib/systemd/system/fail2ban.service.
[fail2ban-tmpfiles.conf:1] Line references path below legacy directory /var/run/, updating /var/run/fail2ban → /run/fail2ban; please update the tmpfiles.d/ drop-in file accordingly.
正在设置 python3-pyinotify (0.9.6-1) ...
正在设置 python3-systemd (234-2+b1) ...
正在处理用于 man-db (2.8.5-2) 的触发器 ...
正在处理用于 systemd (241.52-deepin1) 的触发器 ...
pdsyw@pdsyw-PC:~/Desktop$
3、配置fail2ban----启动fail2ban软件
pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl start fail2ban
pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl enable fail2ban
Synchronizing state of fail2ban.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable fail2ban
pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban ServiceLoaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)Active: active (running) since Fri 2023-10-13 20:27:45 CST; 5s agoDocs: man:fail2ban(1)Main PID: 6528 (fail2ban-server)Tasks: 3 (limit: 4915)Memory: 11.1MCGroup: /system.slice/fail2ban.service└─6528 /usr/bin/python3 /usr/bin/fail2ban-server -xf start10月 13 20:27:45 pdsyw-PC systemd[1]: Starting Fail2Ban Service...
10月 13 20:27:45 pdsyw-PC systemd[1]: Started Fail2Ban Service.
10月 13 20:27:45 pdsyw-PC fail2ban-server[6528]: Server ready
10月 13 20:27:45 pdsyw-PC systemd[1]: /lib/systemd/system/fail2ban.service:12: PIDFile= references path below
10月 13 20:27:45 pdsyw-PC systemd[1]: /lib/systemd/system/fail2ban.service:12: PIDFile= references path below
10月 13 20:27:45 pdsyw-PC systemd[1]: /lib/systemd/system/fail2ban.service:12: PIDFile= references path below
pdsyw@pdsyw-PC:~/Desktop$
4、配置fail2ban----编辑/etc/fail2ban/jail.local文件
[sshd]: 这是一个节(section),它定义了一个名为sshd的监狱(jail)。监狱是Fail2Ban中的一个概念,用于定义一组规则,以确定何时应该封禁IP地址。
enabled = true: 这表示sshd监狱已启用。
port = ssh: 这指定了Fail2Ban应该监视的端口,这里是SSH的默认端口。
action = msmtp-whois-lines[name=SSHD, dest=1111@163.com, sender=1111@qq.com]: 这定义了当IP被封禁时要执行的动作。这里,msmtp-whois-lines动作被配置为发送包含封禁IP的whois信息的电子邮件。邮件的主题名为SSHD,收件人地址为1111@163.com,发件人地址为1111@qq.com。
logpath = %(sshd_log)s: 这指定了Fail2Ban应该监视的日志文件的路径。%(sshd_log)s是一个预定义的变量,通常指向SSH守护进程的日志文件。
maxretry = 5: 这定义了在Fail2Ban触发封禁之前允许的失败尝试次数。
bantime = 600: 这定义了封禁的持续时间(以秒为单位)。这里,600秒等于10分钟。
pdsyw@pdsyw-PC:~/Desktop$ sudo vi /etc/fail2ban/jail.local
pdsyw@pdsyw-PC:~/Desktop$ cat /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
action = msmtp-whois-lines[name=SSHD, dest=1111@163.com, sender=1111@qq.com]
logpath = %(sshd_log)s
maxretry = 5
bantime = 600
pdsyw@pdsyw-PC:~/Desktop$
5、配置邮件通知----安装msmtp msmtp-mta软件
pdsyw@pdsyw-PC:~/Desktop$ sudo apt-get install msmtp msmtp-mta
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:libutempter0 squashfs-tools x11-apps x11-session-utils xbitmaps xinit
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:libgsasl7 libntlm0
下列【新】软件包将被安装:libgsasl7 libntlm0 msmtp msmtp-mta
升级了 0 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 156 个软件包未被升级。
需要下载 373 kB 的归档。
解压缩后会消耗 1,179 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 https://professional-packages.chinauos.com/desktop-professional eagle/main arm64 libntlm0 arm64 1.5-1+deb10u1+rebuild [23.6 kB]
获取:2 https://professional-packages.chinauos.com/desktop-professional eagle/main arm64 libgsasl7 arm64 1.8.0-8+b2 [198 kB]
获取:3 https://professional-packages.chinauos.com/desktop-professional eagle/main arm64 msmtp arm64 1.8.3-1 [133 kB]
获取:4 https://professional-packages.chinauos.com/desktop-professional eagle/main arm64 msmtp-mta arm64 1.8.3-1 [18.8 kB]
已下载 373 kB,耗时 1秒 (403 kB/s)
正在预设定软件包 ...
正在选中未选择的软件包 libntlm0:arm64。
(正在读取数据库 ... 系统当前共安装有 198747 个文件和目录。)
准备解压 .../libntlm0_1.5-1+deb10u1+rebuild_arm64.deb ...
正在解压 libntlm0:arm64 (1.5-1+deb10u1+rebuild) ...
/var/cache/apt/archives/libntlm0_1.5-1+deb10u1+rebuild_arm64.deb
正在选中未选择的软件包 libgsasl7。
准备解压 .../libgsasl7_1.8.0-8+b2_arm64.deb ...
正在解压 libgsasl7 (1.8.0-8+b2) ...
/var/cache/apt/archives/libgsasl7_1.8.0-8+b2_arm64.deb
正在选中未选择的软件包 msmtp。
准备解压 .../msmtp_1.8.3-1_arm64.deb ...
正在解压 msmtp (1.8.3-1) ...
/var/cache/apt/archives/msmtp_1.8.3-1_arm64.deb
正在选中未选择的软件包 msmtp-mta。
准备解压 .../msmtp-mta_1.8.3-1_arm64.deb ...
正在解压 msmtp-mta (1.8.3-1) ...
/var/cache/apt/archives/msmtp-mta_1.8.3-1_arm64.deb
正在设置 libntlm0:arm64 (1.5-1+deb10u1+rebuild) ...
正在设置 libgsasl7 (1.8.0-8+b2) ...
正在设置 msmtp (1.8.3-1) ...
正在设置 msmtp-mta (1.8.3-1) ...
msmtpd.service is a disabled or a static unit, not starting it.
正在处理用于 man-db (2.8.5-2) 的触发器 ...
正在处理用于 libc-bin (2.28.23-deepin1) 的触发器 ...
pdsyw@pdsyw-PC:~/Desktop$
6、配置邮件通知----编辑/etc/msmtprc文件
defaults: 这一行开始定义默认设置区块。auth on: 启用SMTP认证。tls on: 启用TLS/SSL加密。tls_trust_file /etc/ssl/certs/ca-certificates.crt: 指定CA证书的位置,用于验证远程服务器的证书。logfile /var/log/msmtp.log: 指定msmtp的日志文件位置。account qqmail: 定义一个名为qqmail的账户设置区块。host smtp.qq.com: 设置SMTP服务器的地址。port 587: 设置SMTP服务器的端口。from 1111@qq.com: 设置发件人地址。auth login: 设置SMTP认证类型。user 1111@qq.com: 设置SMTP用户名。password [YourAppPassword]: 设置SMTP密码。这里的[YourAppPassword]应该被替换为实际的应用密码。account default : qqmail: 设置qqmail账户为默认账户。
pdsyw@pdsyw-PC:~/Desktop$ sudo vi /etc/msmtprc
pdsyw@pdsyw-PC:~/Desktop$ sudo cat /etc/msmtprc
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.logaccount qqmail
host smtp.qq.com
port 587
from 1111@qq.com
auth login
user 1111@qq.com
password [YourAppPassword]account default : qqmailpdsyw@pdsyw-PC:~/Desktop$
7、配置邮件通知----确保日志可由msmtp写入
pdsyw@pdsyw-PC:~/Desktop$ sudo touch /var/log/msmtp.log
pdsyw@pdsyw-PC:~/Desktop$ sudo chown pdsyw:mail /var/log/msmtp.log
pdsyw@pdsyw-PC:~/Desktop$ sudo chmod 660 /var/log/msmtp.log
pdsyw@pdsyw-PC:~/Desktop$
8、配置fail2ban----使用 msmtp
pdsyw@pdsyw-PC:~/Desktop$ sudo vi /etc/fail2ban/action.d/msmtp-whois-lines.conf
pdsyw@pdsyw-PC:~/Desktop$ cat /etc/fail2ban/action.d/msmtp-whois-lines.conf
[INCLUDES]before = sendmail-common.confhelpers-common.conf[Definition]actionban = ( printf %%b "Subject: [Fail2Ban] <name>: banned <ip> from <fq-hostname>Date: `LC_ALL=C date +"%%a, %%d %%h %%Y %%T %%z"`From: <sendername> <<sender>>To: <dest>\nHi,\nThe IP <ip> has just been banned by Fail2Ban after<failures> attempts against <name>.\n\nHere is more information about <ip> :\n`/usr/bin/whois <ip> || echo missing whois program`\n\nLines containing failures of <ip>\n";%(_grep_logs)s;printf %%b "\nRegards,\nFail2Ban" ) | msmtp -t[Init]name = default
logpath = /dev/nullpdsyw@pdsyw-PC:~/Desktop$
9、启动和测试 Fail2Ban
pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl start fail2ban
pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl enable fail2ban
Synchronizing state of fail2ban.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable fail2ban
pdsyw@pdsyw-PC:~/Desktop$ fail2ban-client -t
OK: configuration test is successful
pdsyw@pdsyw-PC:~/Desktop$
10、监控 Fail2Ban 日志以确保 IP 地址被正确地封禁和解封
pdsyw@pdsyw-PC:~/Desktop$ sudo tail -f /var/log/fail2ban.log
2023-10-13 20:27:45,337 fail2ban.jail [6528]: INFO Jail 'sshd' uses pyinotify {}
2023-10-13 20:27:45,339 fail2ban.jail [6528]: INFO Initiated 'pyinotify' backend
2023-10-13 20:27:45,340 fail2ban.filter [6528]: INFO maxLines: 1
2023-10-13 20:27:45,348 fail2ban.server [6528]: INFO Jail sshd is not a JournalFilter instance
2023-10-13 20:27:45,349 fail2ban.filter [6528]: INFO Added logfile: '/var/log/auth.log' (pos = 25779, hash = d7fb092461318336103edd3a46d20259fe580f33)
2023-10-13 20:27:45,350 fail2ban.filter [6528]: INFO encoding: UTF-8
2023-10-13 20:27:45,350 fail2ban.filter [6528]: INFO maxRetry: 5
2023-10-13 20:27:45,350 fail2ban.filter [6528]: INFO findtime: 600
2023-10-13 20:27:45,350 fail2ban.actions [6528]: INFO banTime: 600
2023-10-13 20:27:45,351 fail2ban.jail [6528]: INFO Jail 'sshd' started
11、启动ssh服务
pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl enable ssh --now
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh
pdsyw@pdsyw-PC:~/Desktop$
12、通过另一个终端ssh连接测试,5次输错密码后无法连接
uos@uos-PC:~/Desktop$ ssh pdsyw@10.211.55.48
pdsyw@10.211.55.48's password:
Permission denied, please try again.
pdsyw@10.211.55.48's password:
Permission denied, please try again.
pdsyw@10.211.55.48's password:
pdsyw@10.211.55.48: Permission denied (publickey,password).
uos@uos-PC:~/Desktop$ ssh pdsyw@10.211.55.48
pdsyw@10.211.55.48's password:
Permission denied, please try again.
pdsyw@10.211.55.48's password:
Permission denied, please try again.
pdsyw@10.211.55.48's password:
pdsyw@10.211.55.48: Permission denied (publickey).
uos@uos-PC:~/Desktop$ ssh pdsyw@10.211.55.48
pdsyw@10.211.55.48's password:
pdsyw@10.211.55.48: Permission denied (publickey).
uos@uos-PC:~/Desktop$
13、通过监控 Fail2Ban 日志发现10.211.55.13被ban
pdsyw@pdsyw-PC:~/Desktop$ sudo tail -f /var/log/fail2ban.log
2023-10-13 21:00:14,456 fail2ban.filter [14138]: INFO [sshd] Found 10.211.55.13 - 2023-10-13 21:00:14
2023-10-13 21:00:19,071 fail2ban.filter [14138]: INFO [sshd] Found 10.211.55.13 - 2023-10-13 21:00:18
2023-10-13 21:00:20,673 fail2ban.filter [14138]: INFO [sshd] Found 10.211.55.13 - 2023-10-13 21:00:20
2023-10-13 21:00:20,687 fail2ban.actions [14138]: NOTICE [sshd] Ban 10.211.55.13
2023-10-13 21:00:24,346 fail2ban.filter [14138]: INFO [sshd] Found 10.211.55.13 - 2023-10-13 21:00:24
2023-10-13 21:00:28,819 fail2ban.filter [14138]: INFO [sshd] Found 10.211.55.13 - 2023-10-13 21:00:28
2023-10-13 21:00:31,528 fail2ban.filter [14138]: INFO [sshd] Found 10.211.55.13 - 2023-10-13 21:00:31
2023-10-13 21:00:33,272 fail2ban.filter [14138]: INFO [sshd] Found 10.211.55.13 - 2023-10-13 21:00:33
2023-10-13 21:00:34,062 fail2ban.filter [14138]: INFO [sshd] Found 10.211.55.13 - 2023-10-13 21:00:34
2023-10-13 21:00:34,359 fail2ban.actions [14138]: NOTICE [sshd] 10.211.55.13 already banned
14、进一步检查 sshd 监狱的状态和被封锁的 IP 地址
pdsyw@pdsyw-PC:~/Desktop$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 10
| `- File list: /var/log/auth.log
`- Actions|- Currently banned: 1|- Total banned: 1`- Banned IP list: 10.211.55.13
pdsyw@pdsyw-PC:~/Desktop$
15、邮箱查收到ip被ban的邮件
16、使用命令永久解封IP 地址
pdsyw@pdsyw-PC:~/Desktop$ sudo fail2ban-client set sshd unbanip 10.211.55.13
10.211.55.13
pdsyw@pdsyw-PC:~/Desktop$
pdsyw@pdsyw-PC:~/Desktop$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 15
| `- File list: /var/log/auth.log
`- Actions|- Currently banned: 0|- Total banned: 1`- Banned IP list:
pdsyw@pdsyw-PC:~/Desktop$
17、通过被解封的终端测试ssh,连接成功
uos@uos-PC:~/Desktop$ ssh pdsyw@10.211.55.48
pdsyw@10.211.55.48's password:
验证成功
Welcome to UnionTech OS Desktop 20 Professionalhomepage:https://www.chinauos.com/bugreport:https://bbs.chinauos.com/
pdsyw@pdsyw-PC:~$
相关文章:

统信UOS 1060上通过Fail2Ban来Ban IP
原文链接:统信UOS 1060上通过Fail2Ban来Ban IP hello,大家好啊,今天给大家带来一篇在统信UOS 1060上安装Fail2Ban并且当ip被ban后通过邮件发送通知的文章。Fail2Ban 是一个用于防止暴力攻击的开源软件。它可以扫描日志文件(例如&a…...

Linux系统编程:文件描述符以及IO多路复用
书接上回,我们之前学习的文件系统编程都是在内存空间中的文件流(用户态文件缓冲区)内进行操作的,比如使用的fopen、fclose、fread和fwrite等等都是库函数,并没有用到内核态的功能(实际上库函数中调用的是内…...

python基于django的留学生服务管理平台
留学服务管理平台的用户是系统最根本使用者,按需要分析系统包括三类用户:学生、教师、管理员。这三类用户对系统的需求简要如下。技术栈 后端:pythondjango 前端:vueCSSJavaScriptjQueryelementui 开发语言:Python 框架…...

C++ 之 Map
Map map 是C STL中的关联容器, key-Value键值对存储,一对一的映射关系。 内部结构采用的是红黑树, 它会实现对数据的自动排序 ,所以map内部所有的数据都是有序的。 #include <map>定义的结构: map<数据类型1, 数据类型…...

MongoDB——centOS7环境Mongodb权限管理(图解版)
目录 一、MongDB权限概述1.1、MongDB权限概述1.2、MongDB权限列表 二、Mongodb权限管理示例2.1、创建账号2.1.1、创建管理员用户2.1.2、开启认证2.1.3、创建普通账号 一、MongDB权限概述 1.1、MongDB权限概述 mongodb是没有默认管理员账号,所以要先添加管理员账号…...

AndroidX项目接入穿山甲广告填坑
本文旨在记录初步接入过程遇到的一点点小问题,更详细的文档还是要参考官方文档。 一、项目版本 GradlePlugin:8.0.2 Gradle:8.0 Kotlin:1.7.20 compileSdk:34 compose-bom:2022.10.00 AS:2022.2.1 …...

汽车电子 - matlab - 用法
汽车电子 - matlab - 用法 面向对象 面向对象 % Man.m classdef Man < handle%UNTITLED2 此处显示有关此类的摘要% 此处显示详细说明properties(Accessprivate) %私有变量scoreendpropertiesageheightendmethodsfunction obj Man(inputArg1,inputArg2)%UNTITLED2 构造此…...

freefilesync文件同步软件
下载 下载链接 https://freefilesync.org/download.php 往下拉,看到下载的链接 下载windows版本 下载地址: https://freefilesync.org/download/FreeFileSync_13.0_Windows_Setup.exe 直接复制到浏览器中访问就能下载 安装 双击安装包,一路默…...

【2023】M1/M2 Mac 导入Flac音频到Pr的终极解决方案
介绍 原作者链接:https://github.com/fnordware/AdobeOgg 很早之前就发现了这个插件,超级好用,在windows上完全没有问题,可惜移植到mac就不行了(然后我给作者发了一个Issue,后来就有大佬把m1的编译出来了&…...

C# 图解教程 第5版 —— 第6章 方法
文章目录 6.1 方法的结构6.2 方法体内部的代码执行6.3 局部变量6.3.1 类型推断和 var 关键字6.3.2 嵌套块中的局部变量 6.4 局部常量6.5 控制流6.6 方法调用(*)6.7 返回值(*)6.8 返回语句和 void 方法6.9 局部函数6.10 参数&#…...

283 移动零
解题思路: \qquad 适用双指针,l:最左边‘0’元素坐标;r:l右边第一个非零元素坐标。 \qquad 最初的思路:将l和r初始化为0,遍历数组nums若任意一个指针到达数组末尾时停止。若当前nums[l] 0则移…...

maven 编译.../maven-metadata.xml 报错
文章目录 问题解决 问题 突然编译报错: 解决 打开maven的里离线工作模式,感觉就是下载包到本地. 一个是在maven设置里面 或者直接在maven编译的窗口:...

【Rust笔记】Rust与Java交互-JNI模块编写-实践总结
近期工作中有Rust和Java互相调用需求,这篇文章主要介绍如何用Rust通过JNI和Java进行交互,还有记录一下开发过程中遇到的一些坑。 JNI简单来说是一套Java与其他语言互相调用的标准,主要是C语言,官方也提供了基于C的C接口。 既然是C…...

uniapp:幸运大转盘demo
<template><view class"index"><image src"../../static/img/158.png" mode"" class"banner"></image><view class"title">绿色积分加倍卡拿到手软</view><almost-lottery :lottery…...

android 13.0 通过系统自定义服务控制屏幕亮屏和灭屏操作
1.前言 在13.0的产品开发中, 需要提供亮屏和灭屏的接口在8.0以后系统对于屏幕亮灭屏做了限制,直接调用亮屏和灭屏的方法就调不到了,所有就需要通过增加自定义服务的功能,来实现 通过系统服务的方法来调用系统关于控制屏幕亮屏灭屏的相关操作 2.通过系统自定义服务控制屏幕…...

【SQL】新建库表时,报错attempt to write a readonly database
目录 1.问题背景 2.问题原因 3.解决方式 4.结果 windows64位 Navicat sql vscode c 1.问题背景 需求是这样: 希望在调用初始化数据库方法时,查看是否有名为【POCT_PROCESS_CONFIG】的数据库表,如果没有就新建 我的数据库格式是这样 …...

C++ --STL
STL STL(Standard Template Library,标准模板库)STL从广义上分为: 容器(container)算法 (algorithm)迭代器 (iterator) 容器 和 算法之间通过迭代器进行无缝连接。STL几乎所有的代码都采用模板类或者模板函数 1、ST…...

一卷到底,大明哥带你横扫 Netty
上一个死磕 Java 专栏【死磕 NIO】(当然写的不是很好,争取今年将它重写一遍)是**【死磕 Netty】**的铺垫,对于我们 Java 程序员而言,我们在实际开发过程一般都不会直接使用 Java NIO 作为我们的网络编程框架,因为写出一套高质量的…...

Python Opencv实践 - 车辆统计(1)读取视频,移除背景,做预处理
示例中的图像的腐蚀、膨胀和闭运算等需要根据具体视频进行实验得到最佳效果。代码仅供参考。 import cv2 as cv import numpy as np#读取视频文件 video cv.VideoCapture("../../SampleVideos/Traffic.mp4") FPS 10 DELAY int(1000 / FPS) kernel cv.getStructu…...

ROS-6.参数的使用
参数的使用 参数服务结构命令行的使用方式运行小海龟命令介绍查看参数获取参数值设置参数保存参数到文件从文件导入参数 通过程序操作创建节点修改cmake编译运行 参数服务结构 ros中存在参数服务管理服务,管理这所有参数,所有节点剋订阅和发布这些节点 …...

机器视觉在自动驾驶汽车中的应用与挑战
机器视觉在自动驾驶汽车中扮演着至关重要的角色,它使车辆能够感知和理解周围环境,以便自主驾驶。以下是机器视觉在自动驾驶汽车中的应用以及相关挑战: 应用: 障碍物检测与避让: 机器视觉系统可以检测和识别路上的障碍…...

欠拟合、过拟合及优化:岭回归
问题:训练数据训练的很好啊,误差也不大,为什么在测试集上面有问题呢? 当算法在某个数据集当中出现这种情况,可能就出现了过拟合现象。 1、 什么是过拟合与欠拟合 欠拟合 过拟合 分析 第一种情况:因为机器学习到的天鹅特征太少了,导致区分标准太粗糙,不能准确识别出天鹅…...

Mybatis学习笔记注解/xml映射/动态SQL%%%Mybatis教程
介绍 Mybatis 是一款优秀的持久层框架,用于简化 JDBC 的开发 MyBatis中文网 Mybatis 入门 快速入门 步骤 创建 SpringBoot 工程、数据库表 user、实体类 User引入 Mybatis 相关依赖,配置 Mybatis(数据库连接信息)编写 SQL 语…...

Git纯操作版 项目添加和提交、SSH keys添加、远程仓库控制、冲突解决、IDEA连接使用
Git 文章目录 Git项目简单克隆通用操作添加和提交回滚分支变基分支优选 远程项目推送认证抓取、拉取和冲突解决 IEDA类软件连接 最近学原理学的快头秃了,特此想出点不讲原理的纯操作版,不过还是放个图吧 项目简单克隆 git在本人日常中最重要的功能还是…...

使用OpenSSL生成自签证书
什么是OpenSSL OpenSSL是一个开源的软件库和工具套件,用于安全地处理网络数据传输中的加密、解密、安全套接层(SSL)以及传输层安全(TLS)协议等功能。它广泛应用于网站和互联网服务中,以确保数据传输的安全…...

Spring源码解析——Spring事务是怎么通过AOP实现的?
正文 此篇文章需要有SpringAOP基础,知道AOP底层原理可以更好的理解Spring的事务处理。最全面的Java面试网站 自定义标签 对于Spring中事务功能的代码分析,我们首先从配置文件开始人手,在配置文件中有这样一个配置:<tx:annot…...

机器人革命:脑洞大开的前沿机器人技术!
原创 | 文 BFT机器人 01 由生物启发的多模式移动形态机器人 在一个不断运动的世界中,一种新开发的名为M4(多模式移动形态机器人)的机器人展示了在包括滚动、飞行和行走在内的八种不同运动模式之间切换的能力。这款机器人由加州理工学院自主…...

微信小程序动态海报
参考文献: 微信小程序生成分享海报(附带二维码生成) - 简书 需求背景: 微信小程序固定图片,无法自动链接,分享页面内容 解决方案: 拆分海报内容,由以下几个组成 1、用户图像 …...

手写单例模式
一、单例模式的定义 定义: 确保一个类只有一个实例,并提供该实例的全局访问点。 这样做的好处是:有些实例,全局只需要一个就够了,使用单例模式就可以避免一个全局使用的类,频繁的创建与销毁,耗…...

介绍6种解决电脑找不到vcomp140.dll,无法继续执行代码的方法。
在编程和软件开发领域,我们经常会遇到各种错误和问题。其中,找不到vcomp140.dll文件导致无法继续执行代码是一个非常常见的问题。这个问题可能会影响到软件的正常运行,甚至导致整个项目延期。因此,我们需要找到解决方案来解决这个…...