Linux中FTP安装
文章目录
- 一、FTP介绍
- 1.1、FTP是什么
- 1.2、FTP的工作原理
- 1.3、FTP的传输模式
- 1.4、FTP用户类别
- 1.5、FTP的优点与缺点
- 1.6、FTP数据传输格式
- 二、FTP客户端与服务端
- 2.1、服务端
- 2.2、客户端
- 三、FTP服务器软件介绍
- 3.1、WU-FTPD
- 3.2、ProFtpD
- 3.3、vsftpd
- 3.4、Pure-FTP
- 3.5、FileZilla Server
- 3.6、Tftpd
- 3.7、Ftpdash
- 四、FTP服务器软件(vsftpd)安装与使用
- 4.1、vsftpd安装
一、FTP介绍
1.1、FTP是什么
FTP是Internet上用于提供文件传输服务的一种使用非常广泛的通信协议;FTP使用两个并行的TCP连接:一个用于控制信息(如口令、用户标识、文件操作命令等),默认使用端口21;另一个用于数据传输,默认使用端口20。
1.2、FTP的工作原理
FTP的工作方式原理是基于客户端/服务器模式,使用TCP协议进行文件传输。
- 建立控制连接:当一个FTP客户端发起与FTP服务器的通信时,它首先会通过TCP的21端口建立一个控制连接。这个连接用于交换命令和响应信息,比如登录认证、文件操作命令等。控制连接在整个FTP会话期间保持开放状态。
- 数据传输方式:FTP支持两种数据传输模式——主动模式和被动模式。在主动模式下,FTP服务器在接收到客户端的数据请求后,会主动通过TCP的20端口建立到客户端的数据连接。而在被动模式下,服务器则等待客户端发起数据连接。这两种模式的选择通常取决于客户端所在网络的防火墙策略。
- 处理数据传输:一旦控制连接建立并验证了用户身份,客户端就可以通过发送FTP命令来请求文件上传、下载、删除等操作。对于每个具体的文件传输请求,服务器都会建立一个新的数据传输通道,完成文件或目录列表的传输。这种分离命令和数据传输的设计,使得FTP能够高效地处理大量数据,同时保持命令控制的灵活性。
- 执行命令操作:FTP提供了丰富的命令集,允许用户执行各种文件操作,如列出目录内容、改变目录、上传和下载文件等。这些命令通过控制连接发送到服务器,服务器执行相应的操作并通过相同的连接返回操作结果。
- 断开连接方式:当用户完成所有文件操作后,可以通过发送适当的FTP命令来断开FTP会话,此时控制连接和任何现存的数据连接都将被关闭。
1.3、FTP的传输模式
FTP(文件传输协议)主要有两种传输模式,主动模式和被动模式。
主动模式通常适用于客户端位于网络防火墙后面的情况,而被动模式则更适用于服务器处于防火墙后的环境。由于大多数家庭和企业网络都部署有阻止外部访问的防火墙,因此,被动模式在现代FTP应用中更为常见。
-
在主动模式中,FTP客户端打开一个随机的端口,并从这个端口发送请求到FTP服务器的命令端口21,然后客户端通过这个端口向服务器发送一个包含数据端口信息的PORT命令;服务器接收到这个命令后,会从自己的数据端口20连接到客户端指定的数据端口上,从而开始数据传输;这种模式下,数据传输是由服务器发起到客户端的。
-
被动模式下,FTP客户端同样先与服务器的命令端口21建立连接,但不同的是,它发送的是PASV命令,服务器响应这个命令,随机打开一个临时端口,并将该端口信息发送给客户端;之后,客户端从自己的随机端口发起连接,直接连接到服务器的这个临时端口以进行数据传输;在这种模式下,数据传输的连接都是由客户端发起的。
1.4、FTP用户类别
FTP支持三种类型的用户:本地用户、匿名用户和虚拟用户。这三种用户类型在FTP服务器上具有不同的权限和用途,为不同的使用场景提供了灵活的身份验证机制。
- 本地用户:本地用户是指那些在FTP服务器上拥有账户的用户。这些用户通常拥有操作系统级别的账号,并且可以通过这些账号登录到FTP服务器进行文件传输操作。本地用户可以访问自己的家目录,并且根据权限设置,可能能够访问其他目录或其他用户的文件。本地用户模式提供了相对较高的安全性,因为每个用户都需要通过自己的系统用户名和密码进行验证。
- 匿名用户:匿名用户是FTP中一个特殊的用户类别,它允许任何用户不需要登录凭证即可访问FTP服务器上的公开资源。通常情况下,匿名用户的用户名设置为“anonymous”或“ftp”,而密码可以是任意的,有时用电子邮件地址作为密码是一种惯例,以便服务器记录访问者的信息。尽管匿名访问为用户提供了方便,但它通常只限于下载公共文件,并且为了安全考虑,往往不允许匿名用户上传文件或执行其他写操作。匿名用户模式常用于提供软件下载、文档共享等公共服务。
- 虚拟用户:虚拟用户是通过独立的用户数据库文件进行管理的FTP账户,并不直接对应于操作系统的账号。这种方式提供了更高的安全性,因为即便FTP账户信息被破解,攻击者也无法直接访问操作系统。虚拟用户模式通过vsftpd服务实现,它允许管理员创建专门用于FTP服务的独立用户数据库,并可以精确控制每个虚拟用户的权限和可访问的目录范围。这种模式下的用户需要通过FTP服务器上配置的认证机制进行身份验证。
1.5、FTP的优点与缺点
FTP的优点
- 促进文件共享:FTP极大地便利了计算机程序或数据的共享,使得在不同计算机系统之间传输文件变得简单且高效。
- 支持远程工作:FTP允许用户在远程计算机上访问和传输文件,从而鼓励使用远程计算机,特别适合需要远程协作的场景。
- 屏蔽细节差异:FTP向用户屏蔽了不同主机中各种文件存储系统的细节,提供了统一的界面和操作方式,简化了用户的操作过程。
- 保证传输可靠:FTP基于TCP协议进行数据传输,保证了数据传输的可靠性和高效性,这对于大文件传输尤为重要。
FTP的缺点
- 明文传输信息:FTP在传输密码和文件内容时使用明文,这可以被窃听者轻易窃取,存在较大的安全风险。
- 防火墙限制连接:FTP需要开放随机端口进行连接,这在主动模式下尤其困难,因为许多现代防火墙默认阻止此类入站连接请求。
- 服务器配置复杂:在某些情况下,FTP服务器可能会被告知连接到第三方计算机的保留端口,这增加了配置的复杂性和安全风险。
- 小文件传输低效:虽然FTP在大文件传输方面效率较高,但在传输小文件时,由于每次传输都需要建立连接,其效率相对较低。
1.6、FTP数据传输格式
FTP支持两种数据传输格式:ASCII和二进制。
- ASCII格式:ASCII格式用于传输文本文件,如.txt文件、HTML文件等。当以ASCII方式传送文件时,FTP会转换行结束符,这意味着根据操作系统的不同,文件的行结束符会被自动转换。例如,从UNIX系统向Windows系统传输文本文件时,行末的换行符将被转换成回车+换行符的组合。这种格式在传输包含简单ASCII字符集的文本文件时非常有用,因为它能确保在不同操作系统间正确解释文本内容。
- 二进制格式:二进制格式适用于非文本文件,如可执行文件、压缩文件、图片和音频视频文件等。在这种模式下,文件的位序列被保留,确保原始文件和复制的文件在位级别上一一对应。这对于非文本文件来说是必须的,因为这类文件的结构不遵循ASCII字符编码,如果使用ASCII格式传输,可能会导致文件损坏。
二、FTP客户端与服务端
2.1、服务端
FTP服务器(File Transfer Protocol Server)是互联网上专门用于文件存储和访问服务的计算机,依照FTP协议提供服务。
- 概念:FTP服务器是一个运行File Transfer Protocol(文件传输协议)的服务器软件,用于在计算机网络间进行文件的上传和下载操作。这些服务广泛应用于网站维护、文件共享、软件发布等场景,尽管存在安全性方面的考虑,但FTP仍然是一种常见的文件传输解决方案。
- 工作原理:FTP服务器通过控制端口(默认为21)接收来自客户端的命令,并通过数据端口(默认为20)进行文件数据的传输。这种分离命令通道和数据通道的方式提高了FTP的效率和灵活性。FTP服务器支持两种工作模式,即主动模式和被动模式,以适应不同的网络环境和应用需求。
- 用户类型:FTP服务器支持多种用户类型,包括本地用户、匿名用户和虚拟用户。本地用户是拥有操作系统级别账号的用户,可以访问特定的系统资源;匿名用户不需要登录凭证即可访问公开资源,通常只限于下载公共文件;虚拟用户则是通过独立的用户数据库文件进行管理,提供了更高的安全性。
- 配置管理:FTP服务器的配置涉及到多个方面,如监听地址和端口、启用写入权限、限制并发连接数、设置数据传输超时时间等。通过配置文件(如vsftpd.conf),管理员可以根据需要调整这些参数,以优化服务器的性能和安全性。例如,通过设置chroot_local_user=YES可以限制本地用户只能访问自己的家目录,增强系统的安全性。
- 安全性:由于FTP的文件传输是明文方式,存在一定的危险性,因此出现了更加安全的传输方式,如vsftpd。vsftpd是一个基于GPL发布的FTP服务器软件,以普通用户运行,降低进程权限,提高安全性,并整合了所有FTP命令,是许多Linux发行版默认的FTP服务端软件。它支持匿名与本地用户访问,还支持虚拟用户,且不再依赖xinetd服务。
- 应用场景:FTP服务器在多个领域发挥着重要作用,如网站维护人员使用FTP上传网页内容,企业通过FTP共享内部文档,软件开发商利用FTP进行软件发布等。这些应用体现了FTP服务器在文件传输方面的便利性和高效性。
2.2、客户端
FTP客户端通过实现FTP协议的相关命令,允许用户与FTP服务器进行通信,从而实现文件的上传、下载、删除等操作。
- 功能介绍:FTP客户端的基本功能包括连接管理、文件管理、数据传输等。它能够建立到FTP服务器的控制连接,通过该连接发送命令并接收服务器的响应。同时,根据需要建立数据连接以进行文件传输。
- 连接建立:用户需要输入FTP服务器的地址或域名,以及必要的登录信息(如用户名和密码)。FTP客户端会尝试与服务器建立控制连接,此过程可能包括TCP/IP协议的三次握手,以确保建立一个可靠的连接。
- 文件管理:一旦连接建立,用户可以执行多种文件操作命令,如列出服务器目录内容(ls)、改变远程工作目录(cd)、上传文件(put)、下载文件(get)等。这些命令通过控制连接发送到服务器,并由服务器端的FTP服务程序执行相应的操作。
- 传输模式:FTP客户端支持两种文件传输模式:ASCII和二进制。ASCII模式适用于文本文件的传输,而二进制模式则用于非文本文件,如图片、音频、视频等。正确选择传输模式对于确保文件的正确性和完整性至关重要。
- 断开连接:完成文件操作后,用户可以通过FTP客户端发出断开连接的命令,此时控制连接和任何现存的数据连接都将被关闭,从而结束FTP会话。
- 高级功能:除了基本的文件操作外,许多FTP客户端还提供更高级的功能,如断点续传、整站下载、任务调度、带宽限制等,以满足不同用户的复杂需求。
- 安全性考虑:由于FTP协议本身不支持加密,传输过程中的用户名、密码及数据均可能被窃取。因此,许多FTP客户端支持安全加固的FTP,如FTPS或SFTP,这些方式通过加密手段提高了数据传输的安全性。
- 使用场景:FTP客户端广泛应用于个人和组织中,无论是简单的文件共享、网站更新还是复杂的数据迁移和备份操作,FTP客户端都能提供有效的解决方案。
三、FTP服务器软件介绍
3.1、WU-FTPD
Wu-FTPD是一个功能强大的FTP服务器守护程序,广泛应用于建立多种类型的FTP服务器。
- 注册方式:Wu-FTPD支持三种注册方式:匿名FTP、实际用户FTP以及guest FTP。匿名FTP允许使用用户名“anonymous”和一个email类型的口令进行注册,适用于不需要身份验证的公共资源共享场景。
- 安全性能:尽管Wu-FTPD发布较早,但在其最新版本中,已经针对系统安全性问题进行了完善的修正,包括对不同网域实行不同存取权限和可存取时段的控制,在用户下载文件时自动执行压缩或解压工作,从而增强了服务器的安全性和用户体验。
- 安装启动:Wu-FTPD的安装有两种方式:RPM包安装和源代码安装。RPM包安装简单快捷,只需几个步骤即可完成;而源代码安装则提供了更多的自定义选项,适合有一定经验的用户。安装完成后,可以通过xinetd或命令行方式启动Wu-FTPD服务器,以开始使用FTP服务。
- 使用场景:Wu-FTPD因其强大的功能和灵活配置,被广泛应用于需要文件共享和传输的各种场合,如网站维护、数据备份、软件发布等。它的高性能和灵活性使其成为许多组织和个人的首选FTP服务器软件。
- 高级功能:Wu-FTPD还具备一些高级功能,如记录FTP Server使用情况、限定最多联机人数以符合整体运作效能、显示相关讯息让使用者了解接收状态、可将FTP Server暂停便于系统维护等。这些功能为管理员提供了更精细的服务器管理和控制能力。
3.2、ProFtpD
ProFTPD因其高度模块化和配置灵活而受到广泛欢迎,支持像Apache一样的配置文件格式,使其相对易于管理和配置。该服务器既可以作为独立的服务器运行,也可以从inetd或xinetd启动,提供了多种运行模式以适应不同的网络环境和需求。
- 安全性:ProFTPD在设计时特别注重安全特性,它支持Shadow密码系统,可以降低密码被攻击的风险。同时,它可以非特权用户身份运行,进一步降低潜在的安全漏洞风险。
- 模块化:ProFTPD采用了模块化的设计,允许通过加载或卸载模块来扩展其功能。这种灵活性使得管理员可以根据需要定制服务器的功能,例如通过添加MySQL和Quota模块来实现更高级的用户管理和磁盘空间限制。
- 配置性:ProFTPD的配置方式与Apache类似,使用人类可读的文本文件进行配置,大大降低了新用户的学习曲线。管理员可以直接编辑纯文本文件来更改服务器设置,而不需要通过复杂的图形界面工具。
IPv6支持:ProFTPD支持IPv6,为那些正在向下一代互联网协议过渡的网络环境提供了便利。 - 虚拟服务器:ProFTPD支持配置多个虚拟FTP服务器,这意味着一个物理服务器可以托管多个看似独立的FTP站点,每个站点可以有不同的配置、权限和用户。
- 日志功能:ProFTPD提供强大的日志功能,支持多种日志记录标准,如utmp/wtmp及wu-ftpd格式,便于管理员监控和审计服务器活动。
3.3、vsftpd
vsftpd以其高度的安全性和稳定性而广受欢迎,它可以运行在包括Linux、BSD、Solaris、HP-UNIX等多种系统上。作为一个完全免费且开放源代码的FTP服务器软件,vsftpd支持许多其他FTP服务器不支持的特性,如高安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户和支持IPv6等。
- 安全性:vsftpd设计时考虑了安全性作为首要目标,提供多种安全特性,例如利用chroot环境来限制用户的访问到其主目录,以及通过PAM(Pluggable Authentication Modules)和xinetd来进行身份验证,从而降低服务运行所需权限,减少潜在的安全风险。
- 性能优化:vsftpd能够处理大量并发连接而不牺牲性能,使其适用于从小型到大型企业级部署的环境。
- 配置灵活性:vsftpd的配置文件提供了丰富的选项,允许管理员根据需要定制服务器的行为,包括匿名访问控制、本地和虚拟用户配置以及权限设置等。
- 易管理性:vsftpd提供了与Apache类似的配置文件格式,简化了管理工作,使得新用户容易上手。
- 支持虚拟用户:vsftpd支持虚拟用户数据库,这意味着用户可以独立于系统用户进行管理,增加了额外的安全性和管理灵活性。
3.4、Pure-FTP
Pure-FTPd以程序的健壮性和安全性为主要设计目标,提供了包括虚拟主机、IPv6和PAM等功能的支持。这款软件能在多种Unix系统上编译和运行,例如Linux、OpenBSD、NetBSD、FreeBSD等,甚至还有针对Android系统的移植版本。
- 安全性:Pure-FTPd注重安全性,支持chroot环境限制用户访问至其主目录,以及通过PAM进行身份验证,这有助于降低潜在的安全风险。
- 配置简易性:Pure-FTPd的配置相对简单,它不读取任何配置文件,而是通过命令行参数来实现配置。对于习惯使用配置文件的用户,官方提供了一个封装工具,可以将配置文件解析并转换成命令行参数,从而启动服务。
- 多语言支持:Pure-FTPd提供多达20多种语言的支持,这使得它在世界各地都有广泛的应用基础。
- 安装方式:Pure-FTPd支持源码编译安装以及YUM安装两种方式。通过源码安装,用户可以自定义编译选项,更灵活地适应不同的服务器环境。而YUM安装则简化了安装过程,适合快速部署。
- 管理维护:Pure-FTPd还提供了一些用于管理和维护FTP服务器的工具,如pure-pw用于管理用户数据库,以及相关的服务命令来启动、停止和检查FTP服务的状态。
3.5、FileZilla Server
FileZilla Server是一款开源、免费的FTP(文件传输协议)服务器软件,具有高安全性和高性能的特点。该服务器软件的主要优势在于其开源的特性,这意味着它的安全性可以通过社区的力量得到持续的检验与增强。同时,由于其核心代码是基于C/C++开发的,这使得它在性能上也优于许多使用VB/Dephi等平台开发的应用程序。
- 安全性与稳定性:FileZilla Server的高安全性能得益于它的开放源代码,任何人都可以查看代码,从而帮助发现并修复潜在的安全漏洞。此外,它还支持SSL/TLS加密,确保数据传输过程的安全。
- 跨平台性:FileZilla Server能在多种操作系统上运行,包括Windows、Linux以及Mac OS X,这使其在不同的环境中都能得到有效的应用。
- 用户友好的管理界面:FileZilla Server提供了一个直观的图形用户界面,使得管理FTP服务器变得简单方便。管理员可以轻松地添加用户账户、设置权限和监控服务器状态。
- 资源占用低:由于其高效的代码基础,FileZilla Server在运行时占用的系统资源很少,这对于资源有限的服务器环境尤为重要。
多语言支持:FileZilla Server支持多种语言,这使得它在全球范围内都有广泛的用户群体。 - 配置灵活性:FileZilla Server支持通过配置文件进行详细定制,管理员可以根据需要调整服务器的各种参数,以适应特定的网络环境和业务需求。
- 易于安装和维护:FileZilla Server的安装过程简单,提供了易于理解的向导,即使是初学者也能轻松完成安装和基本配置。同时,它也便于维护和升级,保持服务器软件的最新版本。
- 社区支持:作为一个开源项目,FileZilla Server拥有活跃的社区支持。用户可以在社区中寻求帮助,分享经验,甚至参与软件的开发和改进。
3.6、Tftpd
TFTP(Trivial File Transfer Protocol)是TCP/IP协议族中的一个,用于在客户机与服务器之间进行简单文件传输的协议。它基于UDP协议实现,通常使用端口号69,适用于不需要复杂配置或安全特性的基本文件传输任务。
- 功能和应用:Tftpd主要提供TFTP服务,支持从文件服务器上获取或写入文件的基本操作。由于其设计上的简洁性,Tftpd不提供如FTP服务器般的目录列表、认证等高级功能。这使得Tftpd特别适合于那些需要快速而简单的文件传输场景,如固件升级、系统引导等。
- 特点和优势:TFTP的设计简单,易于设置和使用。它主要用于小文件的传输,因此开销不大,反应迅速。尽管TFTP不具备FTP的全部功能,例如不能列出远程目录,无法进行用户身份验证等,但其简便的配置和管理仍然使它在很多场合下非常有用。特别是在嵌入式系统和网络设备管理中,TFTP因其轻量级的特点被广泛采用。
- 安全性考虑:尽管TFTP的使用带来了便利,但它在安全性方面存在缺陷。比如,TFTP没有加密数据传输的功能,所有传输的数据均以明文形式发送,这可能不适合传输敏感信息。同时,由于TFTP缺乏复杂的错误恢复机制,一旦传输过程中出现故障,整个传输任务可能需要重新开始。
3.7、Ftpdash
Ftpdash是一款多线程FTP客户端和命令行实用程序,专门用于在Windows操作系统上进行文件传输操作。
- 多线程性能:Ftpdash利用多线程技术来加快文件传输速度,允许用户同时发起多个文件传输任务,从而有效提升处理效率。
- 文件管理功能:与其他FTP工具相比,Ftpdash提供了丰富的文件处理功能,如下载后自动从服务器删除文件、将文件移动到服务器上的特定目录,以及加密下载的文件等。
- 易用性:Ftpdash虽然是基于命令行的,但它的设计注重用户体验,使得命令执行简单而直接。熟悉命令行操作的用户会发现Ftpdash是一个强大且高效的工具。
- 自动化支持:Ftpdash支持脚本编写,用户可以通过编写脚本来自动化常见的文件传输任务,减少重复性的手动操作,提高生产效率。
- 安全性考虑:在文件传输过程中,Ftpdash提供文件加密选项,帮助保护数据传输过程的安全性,防止敏感信息泄露。
- 适用平台:Ftpdash主要适用于较旧的Windows系统,如Win9x, NT, 2000, XP和2003,这可能限制了其在现代Windows系统中的应用。
四、FTP服务器软件(vsftpd)安装与使用
注:因为上面的一些FTP软件在centos stream中无法安装,所以这里只进行了vsftpd安装。
4.1、vsftpd安装
- 添加EPEL(Extra Packages for Enterprise Linux)软件源
[root@root ~]# dnf install epel-release
- 更新软件包列表
[root@root ~]# dnf update
- 安装FileZilla Server
[root@root /]# dnf install vsftpd
- 启动 vsftpd 服务:
[root@root /]# systemctl start vsftpd
- 查看vsftpd服务状态
[root@root /]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemonLoaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; preset: disabled)Active: active (running) since Wed 2024-06-12 17:27:48 CST; 32s agoProcess: 100182 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)Main PID: 100183 (vsftpd)Tasks: 1 (limit: 10483)Memory: 732.0KCPU: 2msCGroup: /system.slice/vsftpd.service└─100183 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.confJun 12 17:27:48 root systemd[1]: Starting Vsftpd ftp daemon...
Jun 12 17:27:48 root systemd[1]: Started Vsftpd ftp daemon.
- 设置 vsftpd 服务为开机启动
[root@root /]# systemctl enable vsftpd
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.
- 配置 vsftpd 服务
[root@root /]# vi /etc/vsftpd/vsftpd.conf
## 将配置中的配置改为下述配置
anonymous_enable=YES
local_enable=YES
write_enable=YES
# anonymous_enable=YES:这个参数表示允许匿名用户登录FTP服务器
# local_enable=YES:这个参数表示允许本地用户登录FTP服务器
# write_enable=YES:这个参数表示允许用户在FTP服务器上写入文件
- 重新启动 vsftpd 服务
[root@root /]# systemctl restart vsftpd
- 安装ftp客户端
[root@root /]# dnf install ftp
- 验证是否安装成功
[root@root /]# ftp localhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.5)
Name (localhost:root): root
530 Permission denied.
Login failed.
ftp>
相关文章:
Linux中FTP安装
文章目录 一、FTP介绍1.1、FTP是什么1.2、FTP的工作原理1.3、FTP的传输模式1.4、FTP用户类别1.5、FTP的优点与缺点1.6、FTP数据传输格式 二、FTP客户端与服务端2.1、服务端2.2、客户端 三、FTP服务器软件介绍3.1、WU-FTPD3.2、ProFtpD3.3、vsftpd3.4、Pure-FTP3.5、FileZilla S…...
【Spring EL<二>✈️✈️ 】SL 表达式结合 AOP 注解实现鉴权
目录 🍻前言 🍸一、鉴权(Authorization) 🍺二、功能实现 2.1 环境准备 2.2 代码实现 2.3 测试接口 🍹三、测试功能 3.1 传递 admin 请求 3.2 传递普通 user 请求 🍻四、章末 &a…...
冯喜运:6.13美盘外汇黄金原油趋势分析及操作策略
【黄金消息面分析】:美国5月生产者价格指数(PPI)的意外下降,为市场带来了通胀可能见顶的积极信号。与此同时,初请失业金人数的上升,为劳动力市场的现状增添了一层不确定性。美国劳工统计局公布的数据显示&a…...
Lecture2——最优化问题建模
一,建模 1,重要性 实际上,我们并没有得到一个数学公式——通常问题是由某个领域的专家口头描述的。能够将问题转换成数学公式非常重要。建模并不是一件容易的事:有时,我们不仅想找到一个公式,还想找到一个…...
unidbg讲解V1
前言 unidbg是什么? unidbg是一个Java项目,可以帮助我们去模拟一个安卓或IOS设备,用于去执行so文件中的算法,从而不需要再去逆向他内部的算法。最终会产出一个jar包,可以被python进行调用。 如何使用unidbg? 下载github上开源的项目:https://github.com/zhkl0228/un…...
软设之敏捷方法
敏捷方法的总体目标是通过尽可能早地,持续地对有价值的软黏的交付,使客户满意 适用于:小步快跑的思想,适合小项目小团队 极限编程XP 4大价值观: 沟通 简单 反馈 勇气 5大原则 快速反馈 简单性假设 逐步修改…...
【设计模式深度剖析】【7】【行为型】【观察者模式】
👈️上一篇:中介者模式 设计模式-专栏👈️ 文章目录 观察者模式英文原文直译如何理解? 观察者模式的角色类图代码示例 观察者模式的应用观察者模式的优点观察者模式的缺点观察者模式的使用场景 观察者模式 观察者模式(Observer…...
列表的C++实
自动扩容 List item 扩容基数为2 可以设置扩容因子(这里我没有设置) 代码实现如下: // // Created by shaoxinHe on 2024/6/4. //#ifndef CPRIMER_MYLIST_H #define CPRIMER_MYLIST_H#include <stdexcept> #include <vector>namespace st…...
Chisel入门——在windows系统下部署Chisel环境并点亮FPGA小灯等实验
Chisel入门——在windows系统下部署Chisel环境并点亮FPGA小灯等实验 一、chisel简介二、vscode搭建scala开发环境2.1 安装Scala官方插件2.2 java版本(本人用的是jdk18)2.3 下载Scala Windows版本的二进制文件2.4 配置环境变量2.5 scala测试2.6 vscode运行…...
Python和C++赋值共享内存、Python函数传址传值、一些其他的遇到的bug
1、Numpy共享内存的情况: array1 np.array([1, 2, 3]) array2 array1 array2[0] 0 # array1也会跟着改变,就地操作 array2 array2 * 2 # array2不会跟着改变,属于非就地操作,会创建一个新的地址给array2array2 array1…...
深度解析ONLYOFFICE协作空间2.5版本新功能
深度解析ONLYOFFICE协作空间2.5版本新功能 上个月,4月份,ONLYOFFICE协作空间推出了V2.5版本,丰富了一些很实用的新功能,之前已经有文章介绍过了: ONLYOFFICE 协作空间 2.5 现已发布https://blog.csdn.net/m0_6827469…...
Java I/O模型
引言 根据冯.诺依曼结构,计算机结构分为5个部分:运算器、控制器、存储器、输入设备、输出设备。 输入设备和输出设备都属于外部设备。网卡、硬盘这种既可以属于输入设备,也可以属于输出设备。 从计算机结构的视角来看,I/O描述了…...
【简单介绍下Sass,什么是Sass?】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
bat脚本—快速修改网络配置
一、bat编写前注意事项 windows桌面用文本文件打开把批命令输入在文本框中,保存采用ANSI编码,后缀用.bat 可参考博客——bat脚本简介学习原理以及具体创建方式 (文件扩展名位置) 语法准确性:严格遵循 BAT 脚本的语…...
node.js漏洞——
一.什么是node.js 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。 Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常…...
Qt多线程之moveToThread()函数
文章目录 一、moveToThread()执行后,当前代码线程没有改变。二、对象执行moveToThread()后,哪些成员加入了子线程1、创建对象时不指定父对象2、对属性对象使用moveToThread加入子线程作用域3、将属性对象的创建放到子线程中执行 三、C内存模型 在使用“继…...
【WEB前端2024】智体OS:poplang编程控制成本小千元的长续航robot机器人底盘(开源)
【WEB前端2024】智体OS:poplang编程控制成本小千元的长续航robot机器人底盘(开源) 前言:dtns.network是一款主要由JavaScript编写的智体世界引擎(内嵌了three.js编辑器的定制版-支持以第一视角游览3D场馆)…...
动态规划法学习
当然,让我们用更生活化的语言和一个实际的例子来解释动态规划,以及如何在实践中应用它。 动态规划通俗理解 想象一下,你是个水果摊老板,每天要决定订购多少苹果,目标是最大化利润。但苹果的价格每天波动,…...
前端技术回顾系列 10|TS 泛型在类和接口中的应用
在微信中阅读,关注公众号:CodeFit。 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注 我的公众号:CodeFit,为我的持续创作提供动力。 上文回顾:约束泛型(Generic Constraints) 上一篇文章我们回顾了 泛型 在 TypeScript 中的高级用法 —— 泛型…...
【Ardiuno】实验ESP32单片机自动配置Wifi功能(图文)
这里小飞鱼按照ESP32的示例代码,实验一下wifi的自动配置功能。所谓的自动配置,就是不用提前将wifi的名称和密码写到程序里,这样可以保证程序在烧录上传后,可以通过手机端的软件来进行配置,可以避免反复修改代码&#x…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
