RFC959 文件传输协议(FTP)翻译

发布时间:2023-07-12 21:14:54

文章目录

    • 前言
    • 本备忘录的状态
    • 1. Introduction
    • 2. Overview
      • 2.1 历史
      • 2.2 术语
      • 2.3 The FTP Model
    • 3. Data Transfer Functions
      • 3.1 Data Representation And Storage
        • 3.1.1 DATA TYPES
          • 3.1.1.1 ASCII TYPE
          • 3.1.1.2 EBCDIC TYPE
          • 3.1.1.3 IMAGE TYPE
          • 3.1.1.4 LOCAL TYPE
          • 3.1.1.5. 格式控制
            • 3.1.1.5.1. 非打印(NON PRINT)
            • 3.1.1.5.2. TELNET 格式控制
          • 3.1.1.5.3. CARRIAGE CONTROL(ASA)
        • 3.1.2 DATA STRUCTURES

前言

想做一下FTP的项目,带师说要参考RFC做才能标准化,先翻译一下。

官方文档:https://www.rfc-editor.org/rfc/inline-errata/rfc959.html

再别人翻译好的:https://github.com/sixsixQAQ/doc

本备忘录的状态

本备忘录是文件传输协议(FTP)的官方规范。本备忘录的分发不受限制。

在本版本规范中,有下列新的可选命令:

  1. CDUP
    • Change to Parent Directory
  2. SMNT
    • Structure Mount
  3. STOU
    • Store Unique
  4. RMD
    • Remove Directory
  5. MKD
    • Make Directory
  6. SYST
    • System

注意,本规范兼容以往的版本。

1. Introduction

FTP的目标在于:

  1. 促进文件共享(计算机程序/数据)
  2. 鼓励间接地(通过程序)使用远程计算机
  3. 使用户免受不同主机文件存储系统的差异。
  4. 高效、可靠地传输数据。

虽然用户可以通过终端使用FTP,但是它主要是设计给程序使用的。

本规范的尝试是为了以一般、简单的协议设计满足多样化用户的需求,比如巨型机、迷你主机、个人工作站、TACs。

2. Overview

本部分介绍 历史、术语、FTP模型。

本节定义的术语仅仅指哪些在FTP中有特殊含义的。一些术语特定于FTP模型的,在回顾术语时,部分读者可能会从本节的FTP模型寻求帮助。

文件传输协议

2.1 历史

FTP已经发展了很多年了。附录三中是按时间顺序排列的FTP 的RFC文档。这些包含了1971年在麻省理工学院第一次提议在主机上实现的文件传输机制(RFC114),以及在RFC141中的评论和讨论。

RFC172 提供了一个面向用户级的文件传输协议(在不同主机之间,包括终端IMP)。一个修订版RFC265重述了 FTP 以供额外审查,而 RFC 281 建议进一步修改。

RFC 354 废弃了 RFC 264 和 265。文件传输协议扩展现在被定义为用于 ARPANET 上主机之间文件传输的协议,FTP 的主要功能定义为在主机之间高效、可靠地传输文件,并允许方便地使用远程 文件存储功能。

RFC 385 进一步评论了协议的错误、重点和补充内容,而 RFC 414 提供了有关工作服务器和用户 FTP 的状况报告。 1973 年发布的 RFC 430(以及其他太多的 RFC)对 FTP 提出了进一步的评论。 最后,“官方”FTP 文档作为 RFC 454 发布。

到 1973 年 7 月,FTP 的最新版本已发生相当大的变化,但总体结构保持不变。 RFC 542 作为新的“官方”规范发布,以反映这些变化。 然而,许多基于旧规范的实现并未更新。

1974 年,RFC 607 和 614 继续对 FTP 进行注释。 RFC 624 提出了进一步的设计更改和较小的修改。 1975 年,题为“Leaving Well Enough Alone”的 RFC 686 讨论了 FTP 所有早期版本和后期版本之间的差异。 RFC 691 对 RFC 686 进行了关于打印文件主题的小修订。

在从 NCP 过渡到 以TCP 作为底层协议的推动下,以及以往的努力下,RFC 765 诞生并作为FTP在TCP上的规范。

当前版本的 FTP 规范旨在 纠正一些小的文档错误,以改进 解释一些协议特性,并添加一些新的 可选命令。

文件传输协议
特别是,以下新的可选命令包含在 本版规范:

CDUP - Change to Parent Directory

SMNT - Structure Mount

STOU - Store Unique

RMD - Remove Directory

MKD - Make Directory

PWD - Print Directory

SYST - System

本规范与之前版本兼容。 按照之前的规范执行的程序会自动符合本规范。

2.2 术语

  • ASCII
    ASCII字符集和在ARPA-Internet Protocol Handbook中定义的一样。在FTP中,ASCII被定义为8bit码集合的低半部分(也即最高有效位为0)
    (译者注:2的8次方是2的7次方的两倍,所以是“半”部分)

  • accese controls
    access controls定义用户对使用系统的访问权限,以及系统上的文件。access controls是防止未经授权或意外使用文件所必须的。进行访问控制是服务器FTP进程的特权。

  • byte size
    FTP 中值得关注的字节大小:逻辑上的字节大小,也即文件的字节大小;数据传输时的传输字节大小。传输字节大小总是8bit。传输字节大小不一定要和系统存储时的字节大小一样,也不是逻辑上用于解读数据结构的字节大小。
    (译者注:早期有的系统一个字节不是8bit)

文件传输协议

  • control connection
    USER-PI 和 SERVER-PI 之间的通信路径 交换命令和答复。此连接如下 Telnet 协议。

  • data connection
    用于传输数据的全双工连接,以指定模式和类型。传输的数据可能是 一个文件、整个文件或多个文件。路径可能是一个服务器 DTP 和一个用户 DTP 之间,或一个两者之间服务器 DTP。

  • data port
    passive数据传输进程会“监听”data port,从active传输进程获取一个连接,以便打开data connection。

  • DTP
    数据传输进程建立并管理data connection,DTP可以是passive或者active。

  • End-of-Line
    end-of-line序列,定义了打印行的分隔。这个序列是回车、换行。

  • EOF
    end-of-file条件,定义了被传输文件的结尾。

  • EOR
    end-of-record条件,定义了被传输记录(record)的结尾。

  • error recovery
    一个允许用户从某些错误中恢复的过程,例如主机系统或传输过程出现故障。在FTP中,error recovery可以涉及在给出的检查点重启一个文件传输。

文件传输协议

  • FTP commands
    包含控制信息的命令集合,它们从user-FTP流向server-FTP。

  • file
    一组有序的计算机数据(包括程序), 任意长度,由路径名唯一标识。

  • mode
    数据通过data connection被传输时,会以不同mode进行。mode定义了数据传输的格式,包括EOR和EOF。FTP中定义的modes在Transmission Modes节有描述。

  • NVT
    Network Virtual Terminal,定义在Telnet协议中。

  • NVFS
    Network Virtual File System。它定义了一个网络文件系统,具有标准命令和路径名约定。

  • page
    文件可以被构造成一组相互独立的page的集合。FTP支持传输不连续的文件,以相互独立的索引页。

  • pathname
    路径名被定义为字符串,它必须由用户输入到文件系统以标识一个文件。路径名通常包含设备和(或)目录名称,以及文件名规范。FTP 尚未指定标准的路径名约定。每个用户必须遵循传输时使用的文件系统的文件命名约定。

  • PI
    The protocol interpreter。协议的用户端和服务器端有着不同的角色,在用户协议解释器(user-PI)和服务器协议解释器(server-PI)中进行实现。

文件传输协议

  • record
    顺序文件可以被构造成多个连续的叫做record的部分。FTP 支持记录结构,但文件不需要有记录结构。

  • reply
    reply是服务器发送给用户的确认(肯定或否定),通过control connection来回复 FTP commands。replay的一般形式是完成代码(一般是错误码)后根文本字符串。代码通常供程序使用,而文本通常用于人类用户。

  • server-DTP
    The data transfer process,在正常的active状态下,会用监听端口data port建立data connection。它设置传输和存储的参数,并以命令的形式传输来自其 PI 的数据。DTP可以以passive状态来监听,而不是在data port上发起一个连接。

  • server-FTP process
    一个或一组进程,和一个user-FTP(也可能是另一个服务器)协作执行文件传输功能。这些功能由一个协议解释器(PI)和数据传输进程(DTP)组成。

  • server-PI
    服务器协议解释器监听端口L,以获取一个来自user-PI的连接,并建立一个control communication connection。它从user-PI接收标准的FTP commands、发送回复,以及管理server-DTP。

  • type
    数据的表示类型,用于数据传输和存储。type意味着数据存储时间和数据传输之间的转换。FTP中定义的表示类型在Rstablishing Data Connections章节有介绍。

文件传输协议

  • user
    一个人或者一个代表想要获取文件传输服务的人的进程。人类用户可以直接和server-FTP进程交互以使用服务器,但是user-FTP进程的使用是首选,因为协议设计偏向于自动机。

  • user-DTP
    一个数据传输进程,监听数据端口以获取来自server-FTP进程的连接。 如果两台服务器相互之间传输数据,则它们的user-DTP处于非活动状态。

  • user-FTP process
    一些功能的集合,包括一个协议解释解释器、一个数据传输进程、一个用户接口。它和一个或多个server-FTP process协作以执行文件传输功能。用户接口允许用户在命令回复对话中使用本地语言。

  • user-PI
    用户协议解释器,发起从端口U到srver-FTP process的control connection,发起FTP commands,控制user-DTP——如果它属于文件传输的一部分。

文件传输协议

2.3 The FTP Model

考虑了上面的定义,能够画出下面的FTP服务的模型:


图1:FTP使用模型

注意:

  1. data connection可以被用于任一方向。
  2. data connection不需要全时间段都存在。

在图1描述的模型中,user-PI启动control connection。control connection遵循Telnet protocol协议。在user初始化时,标准的FTP commands被user-PI编译并通过control connection发送给服务器进程。(user可以绕过user-PI进程,建立到server-FTP的直接的control connection,例如一个TAC终端,并独立地生成标准的FTP commands。) 标准的回复从server-PI发送到user-PI以响应命令,通过control connection。


FTP命令指定了data connection的参数(data port, transfer mode, representation type, structure)和文件系统操作的性质(store, retrieve, append, delete等)。user-DTP或其指定者应该监听特定的data port,服务器根据指定的参数发起data connection和数据传输。对于通过control connection发起FTP commands的主机,data port不需要在它本地。但user或者usr-FTP process必须确保监听指定的data port。还应注意的是,数据连接可用于同时发送和接收。


另一种场景下,用户可能希望在两个非本地主机之间传输文件。
user设置到两个服务器的contorl connections,然后安排两服务器之间的data connection。这种方式下,控制信息被传送给user-PI,但是数据在服务器数据传输进程之间进行。 下面是服务器-服务器交互模型:
在这里插入图片描述

协议要求control connection在数据传输过程中被一直打开。使用完FTP服务后关闭control connections是用户的职责,当然,这是由服务器来执行的。如果conntrol connection在没有任何命令的情况下关闭,服务器可能会在数据传输时中途退出。

  • FTP和Telnet的关系

    FTP 在数据连接中使用 Telnet 协议。这可能以两种方法实现:第一,用户 PI 或服务器
    PI 在它们的实现过程中应用 Telnet 协议。第二,用户 PI 或服务器 PI 可能用系统中已经存在
    的 Telnet 模块。

    第二种方法使用更简单,达到了代码共享,模块化编程的目的。比第一种方法更独立和
    高效。实际上 FTP 对 Telnet 协议的依赖非常小,因此第一种方法也不一定会引入大量的代码。

3. Data Transfer Functions

文件只通过data connection传输。control contection用于传输命令,它们描述了执行的功能、命令的回复(见FTP Replies章节)。一些命令和主机之间的数据传输有关。这些数据传输命令包括MODE命令,它指定了如何转换数据的bits,以及STRUcture和TYPE命令,它们用于定义数据表示的方式。传输和表示基本上是独立的,但是Stream传输模式依赖于文件结构属性,而当使用“Compressed”传输模式时,填充字节的性质依赖于表示类型。

3.1 Data Representation And Storage

数据从发送主机的存储设备传送到接收主机的传送设备。通常需要对数据执行某种转换,因为数据存储的表示在两个系统上会有不同。For example, NVT-ASCII has different data storage representations in different systems. DEC TOPS-20s’s generally store NVT-ASCII as five 7-bit ASCII characters, left-justified in a 36-bit word. IBM Mainframe’s store NVT-ASCII as 8-bit EBCDIC codes. Multics stores NVT-ASCII as four 9-bit characters in a 36-bit word. 在不相似的系统之间传输文本时,最好将字符转换成标准的NVT-ASCII表示。发送端和接收端应该在标准表示和它们内部的表示之间执行必要转换。

由于表示不同,当在字长不同的主机之间传输二进制数据时(不是字符码)又会有问题。那就是并不总是能够知道发送端如何发送数据、接收端如何存储它。例如,从32-bit字长的系统传输32-bit的字节到36-bit字长的系统,在后一个系统中,可能需要(出于效率和实用性)将32-bit的字节右对齐存到36-bit字里。无论如何,用户应该能够选择数据表示和传输功能。需要注意的是,FTP提供了非常优先的数据类型表示。超出它能力范围的转换应该由用户直接完成。

3.1.1 DATA TYPES

用户指定的数据表示由FTP管理。 这个类型可以是隐式地(ASCII或者EBCDIC)或者显式地(本地字节)为解释器定义字节大小,作为“逻辑字节大小”。注意,这个和data connection上传输所用的字节大小(被称为传输字节大小)没有关系,不能混淆它们。例如,NVT_ASCII的逻辑字节大小是8bit。如果类型是本地字节,那么TYPE命令有个必选的第二个参数,用于指定逻辑字节大小。传输字节大小总是8bit。

START 此处起用了别人翻译好的

3.1.1.1 ASCII TYPE

这是缺省类型,必须被所有 FTP 实现支持。主要用来传输文本文件,除非主机双方认
为 EBCDIC 类型更方便。发送方将内部字符表示转换为标准的 8 位 NVT-ASCII 表示(参见 Telnet 协议)。接收方将标准格式数据转换为它自己的内部格式。NVT 规定,<CRLF>序列用来表示文本一行的结尾。(参见本章末文件结构中有关数据表示和存储的讨论)用标准 NVT-ASCII 表示意味着数据必须解释为 8 位字节。

对于ASCII 和 EBCDIC 格式参数将在下面讨论。

3.1.1.2 EBCDIC TYPE

这种类型用来在使用 EBCDIC 编码的主机间高效地传输。
传输时,数制被表示为 8 位的 EBCDIC 字符。EBCDIC 与 ASCII 类型的区别仅仅是字符
编码的不同。
行尾(End-of-Line)很少用在 EBCDIC 类型中表示结构,必要时应该用<NL>

3.1.1.3 IMAGE TYPE

数据以 8 位连续字节流传输。接收端必须将数据存储为连续位。存储系统结构可能要将
文件(或对于记录结构文件来说,每个记录)填充到合适的边界(字节、字或块)。填充的
字节必须为 0,并追加到文件末尾(或每个记录末尾)。必须有方法来指出填充字节,当取
得文件时,以将填充字节剔除。填充转换方法应当公开,使用户可以方便的处理文件。
图像类型目的是为了高效地存储和检索文件,以及传输二进制文件。建议所有的 FTP
实现都应该支持这个类型。

3.1.1.4 LOCAL TYPE

数据以参数 Byte size 指定的逻辑字节长度传输。字节长度值必须是十进制整数,并且没
有缺省值。逻辑字节长度不一定要和传输字节长度一样。如果字节长度不同,那么逻辑字节
将忽略传输字节边界连续打包,并在最后做必要的填充。
当数据到达接收端主机时,将以独立的方式被转换为特定主机的逻辑字节长度。这个转
换过程必须是可逆的(就是说,用同样的参数会产生同样的文件)并且应该被 FTP 实现者
公开。
例如,用户发送 36 位浮点数到一个 32 位字长的主机时可以以本地字节长度 36 来发送。
接收端主机将存储逻辑字节,以方便操作。在这个例子中,将 36 位的逻辑字节放入 64 位双
字中将满足需要。
另一个例子中,一对用 36 位字长的主机间用“TYPE L 36”传送数据。数据将用 8 位传
输字节包装,因此 9 个传输字节代表两个主机字。

3.1.1.5. 格式控制

ASCII 和 EBCDIC 类型也支持第二个可选的参数。这代表了一种纵向的文件格式控制。
以下数据表示类型在 FTP 中定义:
一个被传输到主机的字符文件可能具有以下三个目的之一:为了打印;为了存储用来以
后重现;为了处理。如果文件传送是为了打印,接收主机必须知道垂直控制是如何被表示的。
第二种目的中,可能需要在主机中存储为一个文件,日后将其重现为一样的格式。最后一种
目的中,必须保证将文件从一主机传输到另一主机并在第二台主机上处理文件并不带来麻
烦。单独的 ASCII 或 EBCDIC 格式不能满足所有这些条件。因此,这些类型具有第二个参
数指定以下三种格式之一:

3.1.1.5.1. 非打印(NON PRINT)

如果第二个格式参数被省略,这将是缺省格式。非打印格式必须被所有 FTP 实现支持。
文件不要包含垂直格式信息。如果文件被送到打印过程,那么打印过程将假定使用标准
的间距和页边距值。
一般来说,这个格式被用作处理或存储。

3.1.1.5.2. TELNET 格式控制

文件包含 ASCII/EBCDIC 垂直格式控制(也就是,<CR>,<LF>,<NL>,<VT>,<FF>),
打印过程将适当的解释这些控制符。<CRLF>表示行末。

3.1.1.5.3. CARRIAGE CONTROL(ASA)

文件包含 ASA(FORTRAN)垂直格式控制字符。(参见 RFC 740 附录 C;《Communications of the ACM》7 卷,10 章,606 页,1964 十月)ASA 标准规定,每行或记录的头一个字符不
用来打印。这个字符用来决定本行或记录打印机的垂直走纸量。
ASA 标准指定如下控制字符:
字符 垂直间距
空 走纸一行
0 走纸两行
1 走纸到下页顶
+ 不移动,也就是覆盖打印
打印机过程必须有方法区分结构体的结束。如果文件具有记录结构(后面将介绍)就没
有问题;记录会在传输与存储中显式的标记。如果文件没有记录结构,将以<CRLF>行尾标
记作为打印时行的分隔,但这些格式符会被 ASA 控制符覆盖。

END

3.1.2 DATA STRUCTURES

未完待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/47471.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

SPEC CPU 2006 在 CentOS 5.0 x86_64 古老系统测试【4】-O3 不支持 编译失败

gcc -O3 编译失败 结论&#xff1a;默认情况下SPEC CPU 2006 1.2 不支持 gcc -O3编译参数。

【5G PHY】5G 调制与编码策略(MCS)介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

自定义程序包不存在的解决方法

方案一&#xff1a; 在pom文件中加入以下代码 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.4.2</version><configuration><skipTests>true</sk…

回归预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于B…

Django 分布式路由

简介&#xff1a; Django中&#xff0c;主路由配置文件(urls.py)可以不处理用户具体路由&#xff0c;主路由的配置文件可以配置成做请求的分发&#xff08;分布式请求处理&#xff0c;分发到子路由而不是具体的视图函数&#xff09;。具体的请求可以由各自的应用来处理。 步骤…

重启Oracle数据库

root 用户登录服务器。 1、 以oracle身份登录数据库&#xff0c;命令&#xff1a;su - oracle 2、 进入Sqlplus控制台&#xff0c;命令&#xff1a;sqlplus /nolog 3、 以系统管理员登录&#xff0c;命令&#xff1a;connect / as sysdba可以合并为&#xff1a;sqlplus sys/密码…

vite性能优化提升开发体验之hmr和预编译

一、vite中的预编译 1. 预编译概念介绍 Vite&#xff0c;一个由Vue.js开发者尤雨溪开发的新型前端构建工具&#xff0c;主要利用了现代浏览器支持的ESM&#xff08;ES模块&#xff09;来进行快速开发。Vite在法语中意为“快”&#xff0c;其中最大的亮点就是其开发服务器启动…

使用qemu创建ubuntu-base文件系统,并安装PM相关内核模块

目录 一、配置镜像二、使用qemu模拟nvdimm&#xff08;安装PM相关内核模块&#xff09;运行记录 遇到的一些问题1、ext4文件系统损坏问题&#xff1a;系统启动时&#xff0c;遇到ext4的报错信息解决办法&#xff1a;2、内核模块未成功加载3、qemu报错4、主机终端无法正常打开 流…

flask实现get和post请求

1、实现get请求 在项目根目录创建app.py 代码如下&#xff1a; from flask import Flask,render_template,requestapp Flask(__name__)app.route("/regist/user/", methods[GET]) def regist():return render_template("regist.html") #默认去templat…

【基本绘图注释函数】——MatLab画图

目录索引 title&#xff1a;ylable&#xff1a;legend&#xff1a; title&#xff1a; 在绘图中添加标签。此类函数的输入是一个字符串。MATLAB 中的字符串是用双引号 (") 引起来的。 上面一部分画图代码这里省略 title("Sample Mass")ylable&#xff1a; 为y轴…

03插值与拟合

9.已知飞机下轮廓线上数据如下&#xff0c;分别用分段线性插值和三次样条插值求x每改变0.1时的y值。 x035791112131415y01.21.72.02.12.01.81.21.01.6 %9.已知飞机下轮廓线上数据如下&#xff0c;分别用分段线性插值和三次样条插值求每改变0.1时的y值。x [0 3 5 7 9 11 12 1…

Dreamweaver批量替换所有超链接替换成#

需求&#xff1a;想要将页面所有链接地址替换为#。 方法一 CTRLF打开“查找和替换”&#xff0c;勾选“使用正则表达式” 查找 href"([\s\S]*?)" 替换为 href"#" 副作用&#xff1a;样式表链接地址也会被替换为#&#xff0c;需提前备份。 方法二 也可以查…

【Hello mysql】 mysql的索引

Mysql专栏&#xff1a;Mysql 本篇博客简介&#xff1a;介绍mysql的索引 mysql索引 索引索引是什么索引的分类索引作用查看 磁盘mysql的工作过程认识磁盘定位扇区磁盘随机访问(Random Access)与连续访问(Sequential Access)mysql和磁盘交互的基本单位 索引的理解建立测试表为何I…

dede tag不以关键词作为url以数字作为url方法修改

dede tag不以关键词作为url以数字作为url方法修改 打开/include/taglib/tag.lib.php 查找以下代码&#xff1a; $row[link] $cfg_cmsurl."/tags.php?/".urlencode($row[keyword])."/"; 替换为&#xff1a; $row[link] $cfg_cmsurl."/tags.php?/&q…

考核:QTableWidget开发[折叠/展开单元格QTableWidgetItem]

目录 效果要求一、功能概述二、功能三、关系FATable 表NTable 表CTable 表 实现infos.hmain.cppcomplextablewidget.hcomplextablewidget.cppschemedialog.hschemedialog.cpp 源码模糊知识点 效果 要求 一、功能概述 二、功能 三、关系 FATable 表 CREATE TABLE fatable (idF…

插入排序和希尔排序:用C语言打造高效的排序算法

插入排序 插入排序的思路就像是你在整理一堆扑克牌。你先拿起第一张牌&#xff0c;然后拿起第二张牌&#xff0c;把它插入到合适的位置&#xff0c;使得你手上的两张牌是有序的。接着&#xff0c;你再拿起第三张牌&#xff0c;也把它插入到合适的位置&#xff0c;使得你手上的…

error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope

1-错误 2-错误原因 opencv4.x以上&#xff0c;有些宏&#xff0c;API名字改了&#xff0c;需要改为新的 3-解决方案 CV_LOAD_IMAGE_UNCHANGED 改为 cv::IMREAD_UNCHANGEDCV_LOAD_IMAGE_GRAYSCALE 改为 cv::IMREAD_GRAYSCALECV_LOAD_IMAGE_COLOR 改为 cv::IMREAD_COLORCV_LO…

Java反射机制概述

Java反射的概述 Reflection&#xff08;反射&#xff09;是被视为动态语言的关键&#xff0c;反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息&#xff0c;并能直接操作任意对象的内部属性及方法。 加载完类之后&#xff0c;在堆内存的方法区中就产生了一…

含多类型充电桩的电动汽车充电站优化配置方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

rapid_latex_ocr: 更快更好用的公式图像转latex工具

Rapid Latex OCR rapid_latex_ocr是一个将公式图像转为latex格式的工具。仓库中的推理代码来自修改自LaTeX-OCR&#xff0c;模型已经全部转为ONNX格式&#xff0c;并对推理代码做了精简&#xff0c;推理速度更快&#xff0c;更容易部署。仓库只有基于ONNXRuntime或者OpenVINO推…