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

vsftpd虚拟用户及其权限配置

目录

    • 一、应用场景
    • 二、配置过程
      • 1、安装软件
      • 2、新建本地用户
      • 3、修改vsftpd的配置文件
      • 4、新建虚拟用户目录
      • 5、配置虚拟用户
        • (1)创建虚拟用户列表文件
        • (2)生成虚拟用户数据库
        • (3)配置pam认证
        • (4)创建每个虚拟用户的文件目录
        • (5)创建虚拟用户配置文件
      • 6、重启服务
    • 三、测试

一、应用场景

使用虚拟用户实现vsftpd的权限控制
软件版本

~ # vsftpd -version
vsftpd: version 3.0.2
~ # 

二、配置过程

1、安装软件

yum install -y vsftpd db4

2、新建本地用户

新建一个本地用户,虚拟用户将映射到这个本地用户上.

useradd ftpuser

给这个本地用户配置密码

passwd ftpuser

3、修改vsftpd的配置文件

cat /etc/vsftpd/vsftpd.conf

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
# 禁用匿名用户
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/xferlog
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
#chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES
#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
# Make sure, that one of the listen options is commented !!
listen_ipv6=NOpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES# 启用虚拟用户功能
guest_enable=YES# 指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了,此处使用上面新建的ftpuser
guest_username=ftpuser# 配置虚拟用户路径,虚拟用户的配置文件放在该路径下
user_config_dir=/etc/vsftpd/vuser# 配置vsftpd日志
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
allow_writeable_chroot=YESpasv_enable=yes
pasv_min_port=2000
pasv_max_port=2020

4、新建虚拟用户目录

在vsftp.conf中,配置的虚拟用户目录为:user_config_dir=/etc/vsftpd/vuser,现在新建虚拟用户目录,每个虚拟用户的配置文件都放这个目录下

mkdir /etc/vsftpd/vuser

5、配置虚拟用户

(1)创建虚拟用户列表文件

cat /etc/vsftpd/virtual_users.txt

ftp1     #用户名
ftp1     #用户ftp1的密码,以此类推,创建了三个用户
ftp2
ftp2
ftp3
ftp3
(2)生成虚拟用户数据库
# 生成虚拟用户数据库文件
db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db# 设置数据库文件权限
chmod 600 /etc/vsftpd/virtual_users.db
(3)配置pam认证

/etc/vsftpd/virtual_users是指文件/etc/vsftpd/virtual_users.db.db要省略

cat /etc/pam.d/vsftpd

auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
(4)创建每个虚拟用户的文件目录

创建三个目录,作为三个ftp用户的文件根目录,因为这三个虚拟用户映射到了本地用户ftpuser,所以这三个虚拟用户的文件根目录的属主属组要改为ftpuser,否则会有权限问题

mkdir -p /data/ftp/{fpt1,fpt2,fpt3}
chown -R ftpuser:ftpuser /data/ftp/{ftp1,ftp2,ftp3}
chmod 755 /data/ftp/{ftp1,ftp2,ftp3}
(5)创建虚拟用户配置文件

ftp1的权限为:上传、下载
cat /etc/vsftpd/vuser/ftp1

local_root=/data/ftp/ftp1    #用户ftp1的文件根目录
# 上述挂载的磁盘,目录属主和属组必须为ftpuser,即映射的本地用户
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

ftp2的权限为:仅上传
cat /etc/vsftpd/vuser/ftp2

local_root=/data/ftp/ftp2
write_enable=YES
anon_world_readable_only=NO
download_enable=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

ftp3的权限为:仅下载
cat /etc/vsftpd/vuser/ftp3

local_root=/data/ftp/ftp3
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

6、重启服务

systemctl restart vsftpd

三、测试

在三个虚拟用户的文件根目录下新建测试文件

touch /data/ftp/fpt1/ftp1file
touch /data/ftp/fpt2/ftp2file
touch /data/ftp/fpt3/ftp3file

在客户端新建测试目录和文件

# pwd
/root/ftptset
# touch test.pdf
# ls
test.pdf

在客户端分别使用三个虚拟用户账号登录vsftpd服务器
ftp1(上传下载):

[root@client:~/ftptset]
# lftp -u ftp1,ftp1 ftp://192.168.8.8
lftp ftp1@192.168.8.8:~> ls
-rw-------    1 1002     1002            0 Dec 29 11:52 1.txt
-rw-r--r--    1 0        0               0 Dec 29 13:23 ftp1file
-rw-r--r--    1 1002     1002            0 Dec 29 11:22 test
lftp ftp1@192.168.8.8:/> get ftp1file   # 下载文件
lftp ftp1@192.168.8.8:/> put test.pdf   # 上传文件
lftp ftp1@192.168.8.8:/> ls
-rw-------    1 1002     1002            0 Dec 29 11:52 1.txt
-rw-r--r--    1 0        0               0 Dec 29 13:23 ftp1file
-rw-r--r--    1 1002     1002            0 Dec 29 11:22 test
-rw-------    1 1002     1002            0 Dec 29 13:31 test.pdf
lftp ftp1@192.168.8.8:/>

ftp2(仅上传):

# lftp -u ftp2,ftp2 ftp://192.168.8.8
lftp ftp2@192.168.8.8:~> ls
-rw-r--r--    1 0        0               0 Dec 29 13:23 ftp2file
lftp ftp2@192.168.8.8:/> put test.pdf
lftp ftp2@192.168.8.8:/> ls
-rw-r--r--    1 0        0               0 Dec 29 13:23 ftp2file
-rw-------    1 1002     1002            0 Dec 29 13:57 test.pdf
lftp ftp2@192.168.8.8:/> get ftp2file
get: Access failed: 550 Permission denied. (ftp2file)
lftp ftp2@192.168.8.8:/>

ftp3(仅下载):

# lftp -u ftp3,ftp3 ftp://192.168.8.8
lftp ftp3@192.168.8.8:~> ls
-rw-r--r--    1 0        0               0 Dec 29 13:23 ftp3file
lftp ftp3@192.168.8.8:/> get ftp3file
lftp ftp3@192.168.8.8:/> put test.pdf
put: Access failed: 550 Permission denied. (test.pdf)
lftp ftp3@192.168.8.8:/>

相关文章:

vsftpd虚拟用户及其权限配置

目录 一、应用场景二、配置过程1、安装软件2、新建本地用户3、修改vsftpd的配置文件4、新建虚拟用户目录5、配置虚拟用户(1)创建虚拟用户列表文件(2)生成虚拟用户数据库(3)配置pam认证(4&#…...

Android使用辅助服务AccessibilityService实现自动化任务

Android 辅助服务(AccessibilityService)旨在帮助具有视觉、身体或年龄相关限制的用户更轻松地使用 Android 设备和应用。通过辅助服务,可以将一些人工操作自动化,从而解放用户的双手。 因此我们可以使用它来实现一些自动化任务&a…...

brupsuite的基础用法常用模块(1)

proxy模块: Options: 设置代理端口,默认为8080端口,若8080端口被占用可在该界面更改代理端口. HTTP history: 拦截的历史请求,右键可做更多操作,很多操作与其他模块有关。(清除历史的话右键选择clear p…...

基础的基础之 pillow与opencv相比的特点与优缺点比较

Pillow 和 OpenCV 都是人工智能图像处理的必不可少的常用库,但它们有各自的特点和适用场景。 以下是它们的主要特点、优缺点以及适用场景的对比: 1. Pillow(Python Imaging Library) Pillow 是一个轻量级的图像处理库&#xff0…...

代码随想录算法训练营第51期第32天 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

理论基础 动态规划:dp,每一个状态都是由上个状态推导出来的,因为我是先写完三道题再看理论的,所以有点感概; 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举…...

街景主观感知1:街景图片两两对比程序

目录 1、为什么不用place pluse 2.0数据集?2、街景主观感知两两对比程序2.1 总框架2.2 两两对比程序流程2.2.1 准备数据集(即街景图片)2.2.2 数据集采用组合的思想构建排列前的两两对比csv2.2.3 两两对比程序使用 3、其他数据处理/程序/指导&…...

vue在action中调用action的函数

以下是在 Vue2 中一个 Vuex 的 action 中调用另一个 action 中的函数的解决思路: 首先,确保你已经在 Vue 项目中正确配置了 Vuex 状态管理。在 Vuex 的 actions 对象中定义不同的 action 函数。当需要在一个 action 中调用另一个 action 时,…...

探索 Java 静态变量(static)的奥秘

目录 一、静态变量初印象 (一)什么是静态变量 (二)静态变量的特点 二、静态变量的使用场景 (一)共享数据 (二)全局常量 (三)工具类中的变量 三、静态…...

Excel for Finance 07 `FV PV` 函数

Excel 的 FV 函数用于计算一笔投资在未来的价值,基于固定的利率和定期付款。这是一个金融函数,常用来分析储蓄计划、贷款、或投资的增长。 语法: FV(rate, nper, pmt, [pv], [type])参数说明: rate(必需)&…...

【GUI-PyQt5】简介

1. 简介 GUI:带图形的用户接口程序,也就是桌面应用。 2. 分类 2.1 基本窗口控件 QMainWindowQwidgetQlabelQLineEdit菜单工具栏 2.2 高级组件 QTableViewQListView容器多线程 2.3 布局管理 QBoxLayoutQGridLayoutQFormLayout嵌套布局 2.4 信号与…...

CMSeasy;大米CMS漏洞复现

一、越权漏洞 pikachu-Over permission 水平越权 ⽔平越权:指攻击者尝试访问与他拥有相同权限的⽤户资源。 登录lucy 查看lucy个人信息 在lucy页面修改usernamelili 可以跳转lili的个人信息页面 pikachu-Over permission 垂直越权 垂直越权:通过低权…...

【CSS in Depth 2 精译_093】16.2:CSS 变换在动效中的应用(上)—— 图标的放大和过渡效果的设置

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 ✔️ 16.2.1 放大图…...

代码随想录算法【Day5】

DAY5 1.熟悉哈希表的数据结构:数组、map和set,使用方法、使用场景 2.哈希表应用场景:解决给你一个元素,判断它在集合里是否出现过。 242.有效的字母异位词 本题用数组解决的。 class Solution { public:bool isAnagram(strin…...

工程师如何平衡工作和生活?

在快节奏的社会环境中,工程师面临着高强度的工作压力和长时间的工作需求,要做到工作和生活的平衡,确实不容易。然而,通过一些策略和改变工作方式,可以有效缓解压力,找到平衡点。以下是一些建议:…...

若依数据权限控制

效果 新建用户 表结构 sys_role_dept 这张表的存在。是为了实现数据权限自定义的功能 service层 mapper层 流程...

C++ 设计模式:抽象工厂(Abstract Factory)

链接:C 设计模式 链接:C 设计模式 - 工厂方法 链接:C 设计模式 - 原型模式 链接:C 设计模式 - 建造者模式 抽象工厂(Abstract Factory)是一种创建型设计模式,它提供一个接口,用于创…...

嵌入式系统 第十讲 字符设备和驱动程序设计

• 字符设备是Linux三大设备之一(另外两种是块设备,网 络设备)。 • 字符设备就是采用字节流形式通讯的I/O设备,绝大部分 设备都是字符设备。 • 常见的字符设备包括鼠标、键盘、显示器、串口等等。 • 10.1 字符设备驱动框架 …...

Cod---Class of Device for Bluetooth device

0 Preface/Foreword 蓝牙sink在广播时候,需要告知自己的设备类型,这样蓝牙source可以方便准备相应协议。 从可视化来看,cod(设备类型),比如Android手机,在蓝牙可配对列表中,左边那…...

踏踏实实练SQLday2-3连续12345

3连续12345 连续12345 -- hive的连续开窗函数知识点:排序开窗函数--4种 (如果第2 和 3 名一样大)3种 序号排序 - rank() 12245 - 紧缩dense_rank() 12234 - row_number() 123451种百分比排序 - percent_rank() - 算百分比,超过了多少人top20排行榜 连续1…...

脱离电路图编程

SM0.0常开始终吸合 SM0.1(特殊中继) 常开:闭合一次再断开 常闭:断开一次再闭合 上述是依据电路图编程...

spring的@Transactional事务原理理解

目录 Transactional 普通例子代码和测试输出编程式事务事务代理实现和TransactionAspectSupport重要类复习Spring的事务传播机制有哪些实际工作中用到的事务处理 Transactional事务原理理解 Transactional 普通例子代码和测试输出 Transactional(rollbackFor Exception.class…...

机器学习之线性回归算法预测数据

机器学习之线性回归算法预测数据 目录 机器学习之线性回归算法预测数据线性回归算法概念理解算法导入线性回归模型参数理解误差项分析 LinearRegression理解参数理解返回值方法基本格式 预测一元线性回归数据问题及理解可视化数据理解数据预测 预测二元线性回归数据问题及理解数…...

Markdown如何填充前景色、背景色

Markdown如何填充前景色、背景色 前言语法详解前景色背景色 > 快来试试吧😊 Markdown填充前景色、背景色讲解👈点击这里也可查看 前言 颜色可以使普通文字表达出更深刻的含义,比如红色用于醒目与警示,绿色用于表达良好与正常等…...

SpringCloudAlibaba实战入门之路由网关Gateway断言(十二)

上一节课中我们初步讲解了网关的基本概念、基本功能,并且带大家实战体验了一下网关的初步效果,这节课我们继续学习关于网关的一些更高级有用功能,比如本篇文章的断言。 一、网关主要组成部分 上图中是核心的流程图,最主要的就是Route、Predicates 和 Filters 作用于特定路…...

Spring Boot Actuator、Spring Boot Actuator使用、Spring Boot Actuator 监控、Spring程序监控

SpringBoot四大核心之actuator——程序监控器 1. 添加 Spring Boot Actuator 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 2. 配置 …...

【机器学习】机器学习的基本分类-半监督学习(Semi-supervised Learning)

半监督学习是一种介于监督学习和无监督学习之间的机器学习方法。它利用少量的标注数据&#xff08;有监督数据&#xff09;和大量的未标注数据&#xff08;无监督数据&#xff09;来进行模型训练&#xff0c;从而在标注数据不足的情况下&#xff0c;提升模型的性能。 半监督学习…...

RAG挑战及其解决方案:实践中的应对策略

RAG挑战及其解决方案&#xff1a;实践中的应对策略 在将检索增强生成&#xff08;RAG&#xff09;技术应用于生产环境的过程中&#xff0c;我发现了许多在原型设计阶段不易察觉的挑战。RAG结合了生成模型和检索机制&#xff0c;以调用外部知识&#xff0c;从而提高语言模型的质…...

机器学习DAY7: 特征工程和特征选择(数据预处理)(完)

本文通过特征提取、特征转换、特征选择三个过程介绍数据预处理方法&#xff0c;特征提取将原始数据转换为适合建模的特征&#xff0c;特征转换将数据进行变换以提高算法的准确性&#xff0c;特征选择用来删除无用的特征。 知识点 特征提取特征转换特征选择 本次实验的一些示…...

uniapp使用ucharts组件

1.ucharts准备 有两种使用方式&#xff1a;一种是在uni的插件市场下载&#xff08;组件化开发&#xff09;。一种是手动引入ucharts包。官方都封装好组件了&#xff0c;我们不用岂不是浪费。 直接去dcloud插件市场&#xff08;DCloud 插件市场&#xff09;找&#xff0c;第一…...

【RabbitMQ高级篇】消息可靠性问题(1)

目录 1.消息可靠性 1.1.生产者消息确认 1.1.1.修改配置 1.1.2.定义Return回调 1.1.3.定义ConfirmCallback 1.2.消息持久化 1.2.1.交换机持久化 1.2.2.队列持久化 1.2.3.消息持久化 1.3.消费者消息确认 1.3.1.演示none模式 1.3.2.演示auto模式 1.4.消费失败重试机制…...

PR视频剪辑的属性

调整运动效果 选中视频或图品素材在效果控件面板可以看到运动效果的各个参数。 在运动效果中可以调整视频素材的位置、缩放、旋转等属性。 位置属性 PR中素材的位置根据图像锚点的位置决定&#xff0c;由x、y轴的参数控制图像位置。一个1920px1080px的视频素材默认位置是960…...

[数据集][图像分类]常见鱼类分类数据集2w张8类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;7554&#xff08;剩余1w多为测试集&#xff09; 分类类别数&#xff1a;…...

Boost之log日志使用

不讲理论&#xff0c;直接上在程序中可用代码&#xff1a; 一、引入Boost模块 开发环境&#xff1a;Visual Studio 2017 Boost库版本&#xff1a;1.68.0 安装方式&#xff1a;Nuget 安装命令&#xff1a; #只安装下面几个即可 Install-package boost -version 1.68.0 Install…...

Spring Cloud LoadBalancer (负载均衡)

目录 什么是负载均衡 服务端负载均衡 客户端负载均衡 Spring Cloud LoadBalancer快速上手 启动多个product-service实例 测试负载均衡 负载均衡策略 自定义负载均衡策略 什么是负载均衡 负载均衡(Load Balance&#xff0c;简称 LB) , 是高并发, 高可用系统必不可少的关…...

ASP.NET Web应用程序出现Maximum request length exceeded报错

一、问题描述 在ASP.NET的web应用中&#xff0c;导出数据时出现500 - Internal server error.Maximum request length exceeded。 二、原因分析 这个错误通常出现在Web应用程序中&#xff0c;表示客户端发送的HTTP请求的长度超过了服务器配置的最大请求长度限制。这可能是因为…...

Modbus

【欢迎关注编码小哥&#xff0c;学习更多实用的编程方法和技巧】 Modbus 是一种广泛使用的通信协议&#xff0c;主要用于工业自动化和控制系统中。它最初由 Modicon&#xff08;现为施耐德电气的一部分&#xff09;在1979年开发&#xff0c;旨在实现不同设备之间的通信。Modbu…...

【AI资讯汇总】2024年12月第四周

目录 OpenAI发布o3&#xff1a;AI 推理能力的重大突破&#xff0c;得分高达 87.5% 阿里通义千问Qwen开源视觉推理模型QVQ-72B-Preview OpenAI推出ChatGPT新记忆功能:能跨对话回忆用户交流 OpenAI发布ChatGPT宕机故障详细报告&#xff1a;只因一个小更改导致 OpenAI发布o3&a…...

Pytorch使用手册-DCGAN 指南(专题十四)

1. Introduction 本教程将通过一个示例介绍 DCGANs(深度卷积生成对抗网络)。我们将训练一个生成对抗网络(GAN),在给它展示大量真实名人照片后,它能够生成新的“名人”图片。这里的大部分代码来源于 PyTorch 官方示例中的 DCGAN 实现,而本文档将对该实现进行详细解释,并…...

c++---------------------------string

从今天开始我们就开始学c的容器了就不需要我们造轮子了 1.为什么学习string类 1.1c语言中的字符串 C 语言中&#xff0c;字符串是以 \0 结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c; C 标准库中提供了一些 str 系列 的库函数&#xff0c;但是这些库函数与字符…...

PTPVT 插值说明

文章目录 PTPVT 插值说明 PTPVT 插值说明PVT Hermite插值PVT 三次多项式插值PT 插值Sin轨迹测试结果PVT Hermite插值结果PVT 三次多项式插值结果PT 插值结果 用户轨迹测试结果PVT Hermite插值结果PT 插值结果 PTPVT 插值说明 PT模式&#xff1a; 位置-时间路径插值算法。 PVT模…...

Java - 日志体系_Simple Logging Facade for Java (SLF4J)日志门面_SLF4J集成Log4j1.x 及 原理分析

文章目录 Pre官网集成Log4j1.x步骤POM依赖使用第一步&#xff1a;编写 Log4j 配置文件第二步&#xff1a;代码 原理分析1. 获取对应的 ILoggerFactory2. 根据 ILoggerFactory 获取 Logger 实例3. 日志记录过程 小结 Pre Java - 日志体系_Apache Commons Logging&#xff08;JC…...

集成RabbitMQ+MQ常用操作

文章目录 1.环境搭建1.Docker安装RabbitMQ1.拉取镜像2.安装命令3.开启5672和15672端口4.登录控制台 2.整合Spring AMQP1.sun-common模块下创建新模块2.引入amqp依赖和fastjson 3.新建一个mq-demo的模块1.在sun-frame下创建mq-demo2.然后在mq-demo下创建生产者和消费者子模块3.查…...

Gitlab17.7+Jenkins2.4.91实现Fastapi/Django项目持续发布版本详细操作(亲测可用)

一、gitlab设置&#xff1a; 1、进入gitlab选择主页在左侧菜单的下面点击管理员按钮。 2、选择左侧菜单的设置&#xff0c;选择网络&#xff0c;在右侧选择出站请求后选择允许来自webhooks和集成对本地网络的请求 3、webhook设置 进入你自己的项目选择左侧菜单的设置&#xff…...

Kubernetes 的资源管理方式(二)

Kubernetes 的资源管理方式 命令式对象配置 命令式对象配置就是通过命令配置和配置文件去操作 Kubernetes 的资源。 命令式对象配置的方式操作资源&#xff0c;可以简单的认为&#xff1a;命令 yaml 配置文件&#xff08;里面是命令需要的各种参数&#xff09;。 ① 创建一…...

一种基于动态部分重构的FPGA自修复控制器

1.FPGA动态部分重构技术 动态部分重构技术指在FPGA运行时&#xff0c;通过加载部分位流文件来修改FPGA可重构区域中的逻辑设计&#xff0c;修改过程中其余逻辑功能不受影响整个系统也能够持续运行。 下图为FPGA动态部分重构的基本原理图。通过下载A1.bit、A2.bit、A3.bit 或A4.…...

MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式)

MarkItDown的使用&#xff08;将Word、Excel、PDF等转换为Markdown格式&#xff09; 本文目录&#xff1a; 零、时光宝盒&#x1f33b; 一、简介 二、安装 三、使用方法 3.1、使用命令行形式 3.2、用 Python 调用 四、总结 五、参考资料 零、时光宝盒&#x1f33b; &a…...

【Vim Masterclass 笔记01】Section 1:Course Overview + Section 2:Vim Quickstart

文章目录 Section 1&#xff1a;Course Introduction 课程概述S01L01 Course Overview 课程简介课程概要 S01L02 Course Download 课程资源下载S01L03 What Vim Is and Why You Should Learn It 何为 Vim&#xff1f;学来干啥&#xff1f;1 何为 Vim2 为何学 Vim Section 2&…...

BLE core 内容整理解释

本文内容比较杂散&#xff0c;只是做记录使用&#xff0c;后续会整理的有条理些 link layer 基本介绍 **Link Layer Control&#xff08;链路层控制&#xff09;**是蓝牙低功耗&#xff08;BLE&#xff09;协议栈的核心部分&#xff0c;负责实现设备间可靠、安全、低功耗的数…...

import org.springframework.data.jpa.repository.JpaRepository<T, ID>;

org.springframework.data.jpa.repository.JpaRepository<T, ID> 接口中的 ID 类型参数。 理解 JpaRepository<T, ID> 中的 T 和 ID&#xff1a; T (Type): T 代表的是你想要操作的 实体类 的类型。例如&#xff0c;如果你有一个名为 User 的实体类&#xff0c;那…...

抽象工厂设计模式的理解和实践

在软件开发中&#xff0c;设计模式是前人通过大量实践总结出的、可复用的、解决特定问题的设计方案。它们为我们提供了一种标准化的解决方案&#xff0c;使得代码更加简洁、灵活和易于维护。在众多设计模式中&#xff0c;抽象工厂模式&#xff08;Abstract Factory Pattern&…...