以普通用户身份启动pure-ftpd服务端
Pureftp的优点包括 :
- 高性能,适用于大容量数据传输。
- 安全性强,通过SSL/TLS加密和身份验证机制保证文件传输安全。
- 易用性高,具有直观的用户界面。
- 灵活性强,支持多种文件存储方式。
- 没有漏洞,便于维护
基于Centos 9的pureftp的RPM包在EPEL仓库上。RPM版本不支持以普通用户启动后台进程。
因此从源码编译时,使用--with-nonroot
参数,以便以普通用户启动
下面以pureftp 1.0.52
为例
前置任务 :
- 安装EPEL仓库源
1.编译源码
从https://github.com/jedisct1/pure-ftpd/
下载源码
tar -zvxf pure-ftpd-1.0.52.tar.gz
cd pure-ftpd-1.0.52./autogen.sh./configure \
--prefix=/usr/bin/pure-ftpd-1.0.52 --sysconfdir=/etc/pure-ftpd \
--with-everything --with-tls --with-nonroot --with-pammake install# 清理编译结果
make uninstall
2.查看版本
pure-ftpd --help
我已经打包为RPM : pure-ftpd-1.0.52-1.el9.x86_64.rpm
下载地址是 : https://github.com/mosaicwang/myrpm/releases/download/pure-ftpd-1.0.52/pure-ftpd-1.0.52-1.el9.x86_64.rpm
3.安装
使用打包好的RPM文件:
dnf install ./pure-ftpd-1.0.52-1.el9.x86_64.rpm -y
输出如下 :
=====================================================================================================================================Package Architecture Version Repository Size
=====================================================================================================================================
Installing:pure-ftpd x86_64 1.0.52-1.el9 @commandline 261 k
Installing dependencies:libsodium x86_64 1.0.18-8.el9 epel 161 kmariadb-connector-c-config noarch 3.2.6-1.el9 appstream 11 kmysql-common x86_64 8.0.41-2.el9 appstream 73 kmysql-libs x86_64 8.0.41-2.el9 CRB 1.2 Mperl-AutoLoader noarch 5.74-481.el9 baseos 21 kperl-B x86_64 1.80-481.el9 baseos 180 kperl-Carp noarch 1.50-460.el9 baseos 30 kperl-Class-Struct noarch 0.66-481.el9 baseos 22 kperl-Data-Dumper x86_64 2.174-462.el9 baseos 56 kperl-Digest noarch 1.19-4.el9 baseos 26 kperl-Digest-MD5 x86_64 2.58-4.el9 baseos 37 kperl-Encode x86_64 4:3.08-462.el9 baseos 1.7 Mperl-Errno x86_64 1.30-481.el9 baseos 14 kperl-Exporter noarch 5.74-461.el9 baseos 32 kperl-Fcntl x86_64 1.13-481.el9 baseos 20 kperl-File-Basename noarch 2.85-481.el9 baseos 17 kperl-File-Path noarch 2.18-4.el9 baseos 36 kperl-File-Temp noarch 1:0.231.100-4.el9 baseos 60 kperl-File-stat noarch 1.09-481.el9 baseos 17 kperl-FileHandle noarch 2.03-481.el9 baseos 15 kperl-Getopt-Long noarch 1:2.52-4.el9 baseos 61 kperl-Getopt-Std noarch 1.12-481.el9 baseos 15 kperl-HTTP-Tiny noarch 0.076-462.el9 baseos 54 kperl-IO x86_64 1.43-481.el9 baseos 88 kperl-IO-Socket-IP noarch 0.41-5.el9 baseos 43 kperl-IO-Socket-SSL noarch 2.073-2.el9 baseos 217 kperl-IPC-Open3 noarch 1.21-481.el9 baseos 22 kperl-MIME-Base64 x86_64 3.16-4.el9 baseos 31 kperl-Mozilla-CA noarch 20200520-6.el9 baseos 13 kperl-Net-SSLeay x86_64 1.94-1.el9 baseos 414 kperl-POSIX x86_64 1.94-481.el9 baseos 96 kperl-PathTools x86_64 3.78-461.el9 baseos 88 kperl-Pod-Escapes noarch 1:1.07-460.el9 baseos 21 kperl-Pod-Perldoc noarch 3.28.01-461.el9 baseos 87 kperl-Pod-Simple noarch 1:3.42-4.el9 baseos 225 kperl-Pod-Usage noarch 4:2.01-4.el9 baseos 41 kperl-Scalar-List-Utils x86_64 4:1.56-462.el9 baseos 71 kperl-SelectSaver noarch 1.02-481.el9 baseos 11 kperl-Socket x86_64 4:2.031-4.el9 baseos 56 kperl-Storable x86_64 1:3.21-460.el9 baseos 96 kperl-Symbol noarch 1.08-481.el9 baseos 14 kperl-Term-ANSIColor noarch 5.01-461.el9 baseos 49 kperl-Term-Cap noarch 1.17-460.el9 baseos 23 kperl-Text-ParseWords noarch 3.30-460.el9 baseos 17 kperl-Text-Tabs+Wrap noarch 2013.0523-460.el9 baseos 24 kperl-Time-Local noarch 2:1.300-7.el9 baseos 34 kperl-URI noarch 5.09-3.el9 baseos 121 kperl-base noarch 2.27-481.el9 baseos 16 kperl-constant noarch 1.33-461.el9 baseos 24 kperl-if noarch 0.60.800-481.el9 baseos 14 kperl-interpreter x86_64 4:5.32.1-481.el9 baseos 71 kperl-libnet noarch 3.13-4.el9 baseos 130 kperl-libs x86_64 4:5.32.1-481.el9 baseos 2.2 Mperl-mro x86_64 1.23-481.el9 baseos 28 kperl-overload noarch 1.31-481.el9 baseos 45 kperl-overloading noarch 0.02-481.el9 baseos 12 kperl-parent noarch 1:0.238-460.el9 baseos 15 kperl-podlators noarch 1:4.14-460.el9 baseos 114 kperl-subs noarch 1.03-481.el9 baseos 11 kperl-vars noarch 1.05-481.el9 baseos 13 k
Installing weak dependencies:perl-NDBM_File x86_64 1.15-481.el9 appstream 22 k
安装完成后 : :
pure-ftpd
安装到/usr/bin/pure-ftpd-1.0.52
目录下,可执行文件在bin
和sbin
目录中- 创建了新的操作系统用户
pure-ftpd
,此用户设置为禁止登录 - 有2个系统服务文件 :
pure-ftpd.service
和pure-ftpd-non-root.service
- 有一个PAM文件 :
/etc/pam.d/pure-ftpd
- 配置文件在 :
/etc/pure-ftpd/pure-ftpd.conf
4.安装过程修改了~/.bashrc
,新增了环境变量,因此执行如下命令,使环境变量生效
source ~/.bashrc
5.开放防火墙
# 因为普通用户无法启用<1024的端口号,因此使用2121作为FTP的端口号
firewall-cmd --permanent --add-port=2121/tcp# 如下端口号段为passive模式下的端口段
firewall-cmd --permanent --add-port=40000-40100/tcp
firewall-cmd --reload
6.修改配置文件 : /etc/pure-ftpd/pure-ftpd.conf
- 设置监听端口为2121 :
Bind 0.0.0.0,2121
- 取消PIDFile的注释,且将PID文件放到
/home/pure-ftpd
目录 :PIDFile /home/pure-ftpd/pure-ftpd.pid
- 取消
PassivePortRange
的注释,且设置端口范围是40000-40100
:PassivePortRange 40000 40100
- 设置
noanonymous
为yes,则禁止匿名登陆 :NoAnonymous yes
- (可选)设置
MaxDiskUsage
为85,即磁盘空闲低于85%,则不允许上载 - 设置
AltLog
为stats:/home/pure-ftpd/log/pureftpd.log
.注意:日志文件的路径必须是绝对路径 - 设置puredb为 :
PureDB /etc/pure-ftpd/pureftpd.pdb
- 取消CreateHomeDir的注释 :
CreateHomeDir yes
- 显示详细日志 :
VerboseLog yes
- 设置
MinUID
为1000 :MinUID 1000
6.1 创建日志文件的目录
mkdir -p /home/pure-ftpd/log
chown pure-ftpd -R /home/pure-ftpd/log
7.启动pure-ftpd服务 :
systemctl start pure-ftpd-non-root
说明 :
- 使用
ps -ef|grep pure
可以看到此进程是以pure-ftpd
用户启动的
8.创建虚拟用户
mkdir -p $HOME/temp# 虚拟用户user1的密码存放在文本文件中,这样方便用命令创建用户
cat >$HOME/temp/user1-pwd.txt <<EOF
hello
hello
EOF# 创建虚拟用户 : user1 ,密码为hello(密码存放在$HOME/temp/user1-pwd.txt中)
pure-pw useradd user1 -c "User1 " \
-u pure-ftpd \
-d /storage/pure-ftpd-root/user1 <$HOME/temp/user1-pwd.txt
命令参数说明 :
useradd user1
: 新增虚拟用户user1
-c "User1"
: 为虚拟用户user1设置全名(full name)。此选项为可选-u pure-ftpd
: 指定虚拟用户映射的操作系统账号-d /storage/pure-ftpd-root/user1
: 指定虚拟用户user1
的HOME
目录
命令执行成功后,在/etc/pure-ftpd
目录下得到pureftpd.passwd
文件。此文件为文本格式
9.查看创建的虚拟用户user1
pure-pw show user1
输出如下 :
Login : user1
Password : $argon2id$v=19$m=8192,t=255,p=1$ZUIxc5SjhAAUEDDRob2TIQ$WaLzK11Ec+TYHe6XM14qp6MZq7vTrN95CSHDzawZWFs
UID : 1000 (pure-ftpd)
GID : 1000 (pure-ftpd)
Directory : /storage/pure-ftpd-root/user1/./
Full name : User1
Download bandwidth : 0 Kb (unlimited)
Upload bandwidth : 0 Kb (unlimited)
Max files : 0 (unlimited)
Max size : 0 Mb (unlimited)
Ratio : 0:0 (unlimited:unlimited)
Allowed local IPs :
Denied local IPs :
Allowed client IPs :
Denied client IPs :
Time restrictions : 0000-0000 (unlimited)
Max sim sessions : 0 (unlimited)
10.将文本格式的密码文件转换为二进制格式
pure-pw mkdb
命令执行成功后,在/etc/pure-ftpd
目录下得到pureftpd.pdb
文件
11.设置密码文件的权限为644
chmod 644 /etc/pure-ftpd/pureftpd.p*
12.为虚拟用户创建HOME目录
mkdir -p /storage/pure-ftpd-root/user1
chown -R pure-ftpd /storage/pure-ftpd-root
chmod o+rX -R /storage
13.用客户端验证
# 安装FTP客户端软件
dnf install -y ftp# 连接到本机的2121端口
ftp -p localhost 2121
命令参数说明:
-p
: 以passive模式连接服务端
输出如下 :
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220---------- Welcome to Pure-FTPd ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 15:23. Server port: 2121.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:root): user1 # 输入虚拟用户的用户名user1
331 User user1 OK. Password required
Password: # 输入user1的密码hello
230 OK. Current directory is / # 成功登陆
Remote system type is UNIX.
Using binary mode to transfer files.
13.1测试上载
ftp>put anaconda-ks.cfg
输出如下 :
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (127,0,0,1,156,92)
150 Accepted data connection
226-File successfully transferred # 上载成功
226 0.032 seconds (measured here), 36.40 Kbytes per second
1177 bytes sent in 0.0311 secs (37.79 Kbytes/sec)
13.2查看HOME目录
ftp> ls
输出如下 :
227 Entering Passive Mode (127,0,0,1,156,111)
150 Accepted data connection
drwxr-x--- 2 1000 0 29 Apr 9 14:57 .
drwxr-x--- 2 1000 0 29 Apr 9 14:57 ..
-rw-r--r-- 1 1000 pure-ftpd 1177 Apr 9 14:57 anaconda-ks.cfg
226-Options: -a -l
226 3 matches total
14.设置服务为开机启动
systemctl enable pure-ftpd-non-root
15.常见问题 :
问题一:登录FTP服务端报错为421 Login authentication failed
Q:则说明编译时没有--with-puredb
选项,即不支持虚拟用户
问题二:登录FTP服务端报错为530 Login authentication failed
Q : 将配置文件/etc/pure-ftpd/pure-ftpd.conf
中的MinUID
设置为0,然后重启pure-ftpd-non-root.service
服务
问题三:以root启动pure-ftpd.service
,然后登录FTP服务端报错为I cann't trust Your
Q : 将配置文件/etc/pure-ftpd/pure-ftpd.conf
中的MinUID
设置为0,然后重启pure-ftpd.service
服务
相关文章:
以普通用户身份启动pure-ftpd服务端
Pureftp的优点包括 : 高性能,适用于大容量数据传输。安全性强,通过SSL/TLS加密和身份验证机制保证文件传输安全。易用性高,具有直观的用户界面。灵活性强,支持多种文件存储方式。没有漏洞,便于维护 基于Centos 9的pu…...
国内下载不了镜像,可以用国外机器下载完成,打成tar文件,在国内机器上重新加载
可以在 已经拉取过镜像的机器上打包(导出)镜像文件,然后 拷贝到另一台机器上导入使用。这是离线部署 Docker 镜像的常用方法,非常适合网络受限的环境。 🛠️ 步骤如下: ✅ 1. 在已有镜像的机器上打包镜像 …...
【Java】Java 中不同类型的类详解
目录 Java 中不同类型的类详解一、基础类类型1. 普通类(Concrete Class)2. 抽象类(Abstract Class)3. 接口(Interface)4. 枚举类(Enum Class) 二、嵌套类与特殊类5. 内部类ÿ…...
Cadence学习笔记之---热风焊盘制作
目录 01 | 前 言 02 | 环境描述 03 | 热风焊盘 04 | 规则热风焊盘制作 05 | 不规则热风焊盘制作 06 | 总 结 01 | 前 言 在上一篇Cadence小记中讲述了如何制作贴片(SMD)焊盘、通孔焊盘、以及过孔;本篇关于Cadence的小记主要讲如何制作热风焊盘。 上篇小记&a…...
518. Coin Change II
这是完全背包问题。 由于求的是组合数,所以外层循环只能是对硬币遍历,内层循环只能是对总金额的遍历。 另外,虽然题目数据保证结果符合 32 位带符号整数。但是第28个测试用例,dp[j]dp[j-conis[i]]中间结果会整数溢出,…...
GPIO子系统与Pinctrl子系统的交互
我们前面呢,已经讲过GPIO子系统的数据结构以及他的设备树信息是怎么转换成我们的C代码存储在结构体里面了,我们知道,如果想去使用一个GPIO,避免不了得把这个引脚复用成GPIO功能,那么就避不开Pinctrl子系统,…...
DeepSeek实用操作及行业应用系列2
DeepSeek的本地化部署与AI通识教育之未来 DeepSeek之火,可以燎原 面向审计行业DeepSeek大模型操作指南v1.0 DeepSeek提示词设计、幻觉避免与应用(大数据百家讲坛) DeepSeek 搞钱教程(0基础入门) DeepSeek基础知识…...
面向数据库场景的大模型交互微调数据集
关键要点 研究表明,面向数据库场景的大模型交互微调数据集通常包括数据库模式、自然语言查询和对应的SQL查询。证据倾向于认为,数据集应以JSON格式组织,覆盖多种查询类型,并确保高质量和多样性。对于自定义数据库,建议…...
解锁ChatGPT-4o文生图潜力:精选提示词收集整理更新中
示例一:按元素和描述要求生成图片 示例二:“吉卜力”风格 示例三:3D Q版风格 示例四:生成指定布局和主题图片 具体的提示词参考,陆续更新中:https://blog.luler.top/d/25...
WHAT - React 进一步学习推荐
书籍 adevnadia 的《Advanced React》TejasKumar_ 的《Fluent React》addyosmani 和 djirdehh 的《Building Large Scale Web Apps》 面试准备 reactjs-interview-questions 文章:最佳实践 如果你想了解最佳实践并学习技巧,请务必关注以下专家&…...
有关串口的知识点
轻微了解 一般都是 前这俩01 Ren1才能接受 开局T1 R1要给0 所以就是0x50的起手 终端服务是接受的 ———————————————————————————— 进入实际引用 使用的时候1 初始化 2要给个500ms的延时函数即可...
无线插卡话机如何接入呼叫中心系统?
一、接入原理与技术架构 无线插卡话机通过内置SIM卡模块(支持GSM/CDMA/4G/5G等网络制式),将移动网络信号转化为语音通信信号,再通过SIP协议或专用网关与呼叫中心系统对接。其核心流程包括: 1、网络信号…...
prometheus有几种数据类型
Prometheus 数据类型主要有以下四种: Counter(计数器): 单调递增的数值,表示某个事件发生的次数。计数器的值只会增加,除非被重置为0(例如在系统重启时)。示例:HTTP 请求…...
C++设计模式+异常处理
#include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector> #include <memory> #include <stdexcept> // 包含异常类using namespace std;// 该作业要求各位写一…...
字符串替换 (模拟)神奇数 (数学)DNA序列 (固定长度的滑动窗口)
⭐️个人主页:小羊 ⭐️所属专栏:每日两三题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 字符串替换 (模拟)神奇数 (数学)DNA序列 (固定长度的滑动窗口&am…...
echarts地图详解
获取地图坐标json数据 <template><div id"china-map" style"width:500px;height:500px"></div> </template> <script>import * as echarts from echarts;// 坐标jsonimport chinaJson from "/assets/china.json" …...
Redis 哨兵模式:告别手动故障转移!
目录 前言一、 Redis哨兵模式是啥?🤔二、 为什么需要哨兵模式?🤷♀️三、 哨兵模式的原理是什么?🤝1. 监控(Monitoring)2. 信息共享与客观下线判断3. 哨兵领导者选举4. 故障转移5.…...
地理数据输出
为了便于数据共享和交换,可以将地理数据库中的要素数据输出为Shapefiles或者Coverage,将相应的属性表输出为Info或者dBase格式的数据文件。 1.输出为 Shapefile (1)在AreCatalog目录树或者内容栏中,右键点击需要输出的地理要素类,…...
springboot + security + redis + jwt 实现验证登录上
前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…...
SomeIP通讯机制
在SOME/IP协议中,通讯方式主要围绕服务的交互模式进行的设计,核心机制包括Event(时间)、Method(方法)以及其变种Fire-and-Forget(FF)。以下是SOME/IP中所有通信方式的总结࿱…...
线代第三课:n阶行列式
引言 行标取自然排列 不同行不同列的3个元素相乘 列标取排列的所有可能 列标排列的逆序数的奇偶性决定符号,- n阶行列式 第一种:按行展开 (1) 行标取自然排列 (2) 列标取排列的所有可能 (PS:可以理解为随意取) (3) 从…...
人工智能在高中教育中的应用现状剖析与挑战应对
第一章:绪论 1.1 研究背景与意义 随着全球化的加速和科技的飞速发展,高中教育在培养未来社会所需人才方面的重要性日益凸显。高中阶段是学生知识体系构建和思维能力发展的关键时期,然而,当前高中教育面临着诸多挑战,…...
如何在powerbi使用自定义SQL
我们在刚使用到powerbi的时候发现当直接连接到数据库的时候我们只能使用数据库中已存在的表,我们没有办法使用自定义SQL来准备数据,这给我们的开发造成很大的困扰;我目前使用的是vertica数据库,首先我们需要在本地有vertica的驱动…...
边缘计算盒子是什么?
边缘计算盒子是一种小型的硬件设备,通常集成了处理器、存储器和网络接口等关键组件,具备一定的计算能力和存储资源,并能够连接到网络。它与传统的云计算不同,数据处理和分析直接在设备本地完成,而不是上传到云端&#…...
【C++面向对象】封装(上):探寻构造函数的幽微之境
每文一诗 💪🏼 我本将心向明月,奈何明月照沟渠 —— 元/高明《琵琶记》 译文:我本是以真诚的心来对待你,就像明月一样纯洁无瑕;然而,你却像沟渠里的污水一样,对这份心意无动于衷&a…...
物联网|无人自助台球厅源码|哪些框架支持多设备连接?
在无人自助台球厅的智能化管理中,物联网(IoT)技术是核心支撑。如何实现不同设备(如智能门锁、环境传感器、支付终端、灯光控制系统等)的高效连接与协同工作,是系统开发的关键挑战。本文将带大家探讨支持多设…...
单旋翼无人机(直升机)和四旋翼无人机优势对比
以下是无人机直升机(单旋翼无人机)与四旋翼无人机的优势对比分析,分场景阐述两者的核心差异: 一、无人机直升机(单旋翼无人机)的优势 1. 高能量效率,长续航 动力设计:单…...
微服务之间调用外键“翻译”的方法概述
写在前面的话:减少strean流操作,减少多层嵌套for循环。使用普通for循环和map的方式进行转换, 第一步查询数据 List<Student> findList studentDao.findList(findMap); 第二步准备遍历和赋值 if(CollectionUtil.isNotEmpty(findLis…...
Java学习——day25(多线程基础与线程创建方式)
文章目录 1. 多线程基础1.1 线程的概念1.2 线程的生命周期 2. 创建线程的方式2.1 继承 Thread 类2.2 实现 Runnable 接口 3. 实践:编写简单多线程程序4. 总结与思考 1. 多线程基础 1.1 线程的概念 线程 (Thread): 程序执行的最小单元,一个进…...
2025前端面试题
Vue 3 比 Vue 2 更快的原因 Vue 3 使用 JavaScript 的 Proxy 替代了 Vue 2 中的 Object.defineProperty 来实现响应式系统。Proxy 可以拦截对象的所有操作,无需像 Object.defineProperty 那样单独定义每个属性的 getter 和 setterVue 3 还引入了静态树提升…...
2025-04-09 吴恩达机器学习6——神经网络(1):介绍
文章目录 1 神经网络介绍1.1 起源与发展1.2 生物神经元 vs. 人工神经元1.3 学习建议 2 案例:T 恤预测2.1 基础概念2.2 需求预测示例2.3 多隐藏层神经网络2.4 神经网络的优势 3 案例:图像感知3.1 计算机视觉任务3.2 神经网络架构 1 神经网络介绍 1.1 起源…...
Win11新功能更新:中文语音控制、游戏体验提升、锁屏更多广告
近日,微软在Windows 11发布预览版(Insider Release Preview Channel)中公布了即将正式推送的一系列新功能。这些更新体现了微软“持续创新”策略——不再依赖传统大型版本更新,而是以更高频率为用户带来功能改进。这一波新功能覆盖…...
Cursor编程-从入门到精通__0409
早期的Github Copilot 最近更新了,支持Agent编程,字节跳动Trae使用(免费),但成熟程度不如Cursor,Cursor前50次免费 Copilot VS Cursor*** 1,Cursor VSCode 二次开发,IDE级别 2&…...
【Leetcode-Hot100】移动零
题目 解答 首先,使用的解题思路是:使用两个指针,分别指向数组的第一个0元素位置,以该元素位置1为起始点寻找接下来第一个非0元素位置。二者确定后,对其进行交换。随后继续寻找下一个0元素位置。重复上述操作。 但第一…...
【力扣hot100题】(079)划分字母区间
感觉智商又回来了(松气)。 方法大概是先建立哈希表遍历数组记录每一个字母位置的跨度,然后再遍历数组,每次遇到跨度大于目前长度的字母,就将目前长度延申跨度的长度,然后继续遍历,知道位置已经…...
更改CMD背景图片
1.下载microsoft powershell 总之,电脑里面要有microsoft powershell这个应用 如下所示 进入界面后, 依次点击命令提示符和外观。 进入后,修改背景图片 2. 查看最终效果 最终我们打开CMD界面, 然后查看。 最终结果大功告成...
如何利用AI工具进行抠图
软件介绍 AIArty Image Matting是一款AI抠图软件,为了方便大家使用,我已经将软件所需的模型下载好。 首先要进行软件安装并运行,之后将“model”压缩包解压,把解压后的文件复制粘贴到“C:\ProgramData\Aiarty\ImageMatting”文件…...
一个很好用的vue2在线签名组件
在前端开发的日常工作中,我们常常会遇到需要用户进行在线签名的需求,比如电子合同签署、表单确认等场景。最近,我在项目里使用了一款极为好用的 Vue2 在线签名组件,今天就来和大家分享一下使用心得。 效果图 上代码 在 views 下…...
软考高级-系统架构设计师 案例题-软件架构设计
文章目录 软件架构设计质量属性效用树,质量属性判断必背概念架构风格对比MVC架构J2EE四层结构面向服务架构SOA企业服务总线ESB历年真题【问题1】 (12分)【问题2】(13分) 参考答案历年真题【问题1】(12分)【…...
计算机网络笔记-分组交换网中的时延
一、分组交换网络中的四种时延类型 1. 排队时延 在队列中,当分组在链路上等着被传输时的时延为排队时延,一个分组的排队时延长度取决于该分组前方等待传输的分组数量,如果排队队列为空,且没有正在传输的分组那么该分组的排队时延…...
数据结构与算法-图论-复习2(差分约束,强连通分量,二分图,LCA,拓扑排序,欧拉路径和欧拉回路)
7. 差分约束 原理 差分约束系统是一种特殊的不等式组,形如 xi−xj≤c。可以将其转化为图论中的最短路或最长路问题。 最短路求最大值:当我们要找出满足所有不等式的最大解时,使用最短路算法。对于不等式 xi−xj≤c,可以…...
git强制更新本地分支
你的需求是希望 自动拉取所有远程分支,并且在分支间存在冲突时 自动覆盖本地内容(不保留差异)。以下是优化后的解决方案: 最终解决方案(全自动强制覆盖) git fetch --all && for branch in $(git …...
PH热榜 | 2025-04-09
1. EZsite AI 标语:构建能够秒级产生收入的人工智能应用。 介绍:EZsite AI 让任何人都能轻松创建专业的网站和应用,不需要编写代码。它自动保存您的数据库信息,内置的 AI 聊天机器人能帮助您捕获潜在客户,并且通过 A…...
进度管理__制订进度计划_资源平衡和资源平滑
本文讲解的资源平衡与资源平滑,是制订进度计划的工具与技术的第3项: 资源优化。 1. 资源平衡 资源平衡是为了在资源需求与资源供给之间取得平等, 根据资源制约因素对开始日期和完成日期进行调整的一种技术。 如果共享资源或关键资源只在特定…...
【力扣hot100题】(080)爬楼梯
让我们掌声恭迎动态规划的始祖—— 最基础的动态规划,原始方法是维护一个数组,每次记录到该阶梯的方案数量,每次的数量是到上一个阶梯的方案数量加上到上上一阶梯的方案数量,因为只有两种走法。 进阶可以优化空间复杂度…...
redis_exporter服务安装并启动
redis_exporter服务安装并启动 1、介绍2、下载redis_exporter3、解压缩文件4、启动redis_exporter服务 1、介绍 Redis Exporter 是 Prometheus 官方推荐的 Redis 监控数据导出工具,用于将 Redis 实例的性能指标暴露为 Prometheus 可抓取的格式。 2、下载redis_exp…...
Spring Security 的核心配置项详解,涵盖认证、授权、过滤器链、HTTP安全设置等关键配置,结合 Spring Boot 3.x 版本最佳实践
以下是 Spring Security 的核心配置项详解,涵盖认证、授权、过滤器链、HTTP安全设置等关键配置,结合 Spring Boot 3.x 版本最佳实践: 1. 核心注解与配置类 (1) 启动安全配置 // 启动Web安全配置(推荐方式) Configura…...
Spring Boot 3.x 下 Spring Security 的执行流程、核心类和原理详解,结合用户描述的关键点展开说明,并以表格总结
以下是 Spring Boot 3.x 下 Spring Security 的执行流程、核心类和原理详解,结合用户描述的关键点展开说明,并以表格总结: 1. Spring Security 核心原理 Spring Security 通过 Filter 链 实现安全控制,其核心流程如下:…...
[leetcode]判断质数
一.判断质数 1.1 什么是质数 质数(素数)就是只可以被自己和1整除的数叫做素数/质数 1.2判断方法 #include<bits/stdc.h> using namespace std; bool isPrime(int num) { if(num < 1) { return false;//a number less of …...
【结肠息肉AI论文集】Cross-level Feature Aggregation Network for Polyp Segmentation
标注:同样是一期结肠息肉论文写作评鉴 摘要 从结肠镜图像中准确分割息肉在结直肠癌的诊断和治疗中起着关键作用。尽管在息肉分割领域已经取得了一定的成效,但仍存在诸多挑战。息肉通常具有多种大小和形状,并且息肉与其周围区域之间没有明显…...