- 浏览: 91389 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (148)
- 全文检索 (1)
- java (29)
- xml (2)
- json (2)
- redis springmvc (1)
- Redis (5)
- 开发常识 (1)
- tomcat (2)
- 单元测试Junit (2)
- 设计模式 (2)
- spring (10)
- jvm (2)
- eclipse (4)
- echart (1)
- mybatis (1)
- mysql (3)
- web (1)
- js (2)
- PL/SQL (2)
- 其他 (1)
- 人生 (1)
- 安全 (2)
- jsp (2)
- 硬件电脑 (1)
- linux (3)
- git (10)
- oracle (8)
- ant (1)
- maven (2)
- 正则表达式 (2)
- chrome (1)
- 面试 (6)
- 多线程 (19)
- bug (11)
- java工具类 (3)
- 算法 (1)
- bug,git (1)
- shell (2)
- springmvc (2)
- Java8 (1)
- 消息队列-rocketmq (1)
- es (1)
- dubbo (0)
- spring cloud (0)
- hashmap (0)
- springboot (1)
- velocity (0)
问题:
当在window下编辑文本文件,使用ftp上传linux服务器,文件的真实大小读取的就是跟预设的不一样,导致文件传输失败,表现的现象是总多了1个字节
排查:
通过比对曾经传输成功的文件和这个传输失败的文件发现了原因
原来文本文件中分隔换行符在unix和dos下格式是有区别。
在UE里,使用十六进制可以查看到unix下回车是用0xOA表示的,而dos下的回车则是0x0D0A
在window下比在unix下多了一个字节,这也是为啥校验总是失败。
最后通过UE将文件转成unix格式,并且通过二进制传输的方式通过ftp上传到linux服务器,文件大小就对了。
总结:
任何一个小的知识点都可能成为拦路虎,以后要多加学习多加总结,多加留意。
学习:
此处是有个知识点的,关于换行和回车
一:回车”(Carriage Return)和“换行”(Line Feed)起源
首先,弄清两个概念:
回车CR-将光标移动到当前行的开头。
换行LF-将光标“垂直”移动到下一行。(而并不移动到下一行的开头,即不改变光标水平位置)
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。
但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。
要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。
一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被搬到了计算机上。
那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。
于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即"\n";
Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;
Mac系统里,每行结尾是“<回车>”,即"\n";
一个直接后果是,Unix/Mac系统下的文件在 Windows里打开的话,所有文字会变成一行;
而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
二:区别
CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D
LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A
Dos和windows采用回车+换行CR/LF表示下一行,
而UNIX/Linux采用换行符LF表示下一行,
苹果机(MAC OS系统)则采用回车符CR表示下一行.
所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.
注1:关于“回车键”的来历,还得从机械英文打字机说起。在机械英文打字机上,有一个部件叫“字车”,每打一个单词,“字车”就前进一格。当打满一行字符后,
打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫“回车”。
注2:这种差别在编程、不同OS之间传输纯文本时最需要注意。
参考了这两位博主,感谢
https://blog.csdn.net/weixin_34640289/article/details/116556550
https://mp.weixin.qq.com/s/kkpSLEiFNQR8IM1zmMcCig
当在window下编辑文本文件,使用ftp上传linux服务器,文件的真实大小读取的就是跟预设的不一样,导致文件传输失败,表现的现象是总多了1个字节
排查:
通过比对曾经传输成功的文件和这个传输失败的文件发现了原因
原来文本文件中分隔换行符在unix和dos下格式是有区别。
在UE里,使用十六进制可以查看到unix下回车是用0xOA表示的,而dos下的回车则是0x0D0A
在window下比在unix下多了一个字节,这也是为啥校验总是失败。
最后通过UE将文件转成unix格式,并且通过二进制传输的方式通过ftp上传到linux服务器,文件大小就对了。
总结:
任何一个小的知识点都可能成为拦路虎,以后要多加学习多加总结,多加留意。
学习:
此处是有个知识点的,关于换行和回车
一:回车”(Carriage Return)和“换行”(Line Feed)起源
首先,弄清两个概念:
回车CR-将光标移动到当前行的开头。
换行LF-将光标“垂直”移动到下一行。(而并不移动到下一行的开头,即不改变光标水平位置)
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。
但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。
要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。
一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被搬到了计算机上。
那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。
于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即"\n";
Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;
Mac系统里,每行结尾是“<回车>”,即"\n";
一个直接后果是,Unix/Mac系统下的文件在 Windows里打开的话,所有文字会变成一行;
而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
二:区别
CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D
LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A
Dos和windows采用回车+换行CR/LF表示下一行,
而UNIX/Linux采用换行符LF表示下一行,
苹果机(MAC OS系统)则采用回车符CR表示下一行.
所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.
注1:关于“回车键”的来历,还得从机械英文打字机说起。在机械英文打字机上,有一个部件叫“字车”,每打一个单词,“字车”就前进一格。当打满一行字符后,
打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫“回车”。
注2:这种差别在编程、不同OS之间传输纯文本时最需要注意。
参考了这两位博主,感谢
https://blog.csdn.net/weixin_34640289/article/details/116556550
https://mp.weixin.qq.com/s/kkpSLEiFNQR8IM1zmMcCig
发表评论
-
java 枚举values()方法
2019-07-30 20:41 414工作中,同事 ... -
newHashMapWithExpectedSize
2019-07-30 19:45 1280newHashMapWithExpectedSize VS ... -
java 8 stream应用
2019-07-15 11:43 01.生成map List<BusinessFacili ... -
技术知识点汇总
2019-02-12 15:47 01. LTS(light-task-scheduler) ... -
架构演进
2018-12-21 00:54 367一传统垂直mvc项目 垂直架构图:表示层->业务逻辑层- ... -
集群中session共享
2018-12-20 23:25 0当项目演进时,一个节点出错,如何保证域名能访问到别的节点。 一 ... -
父类子类静态代码块执行
2018-08-22 15:23 0先看一个基础面试题: package com.jbx.te ... -
数组元素的初始化
2018-07-10 17:16 490直接上代码 ,char的初始化值是'\u0000' p ... -
统计一个字符串中每个字符串出现的次数
2018-07-03 17:43 600经常遇到这个问题:总结一下 思路和代码 import ja ... -
DateUtil
2018-03-15 20:53 493记录一下常用的工具类,方便使用的时候可以获取。 pack ... -
indexOf判断一个字符串是否包含另一个字符串
2018-02-26 08:58 510jdk中的表述如下 indexOf public int in ... -
eclipse 添加反编译
2018-01-25 08:57 320为eclipse中*.clsas/*.class withou ... -
Java读取配置文件
2018-01-24 16:00 309Java读取配置文件test.properties 文件tes ... -
HTTP请求头
2017-12-29 16:49 0Request Headers 当访问一个action时,在谷 ... -
阿里巴巴Java开发手册(终极版)
2017-11-13 16:37 483前言 《阿里巴巴 Java 开发手册》是阿里巴巴集团技术团队 ... -
JavaEE 基础实用教程(二)------Jsp应用基础
2017-11-03 17:22 656习题 1.画出HTML文件的基 ... -
JavaEE 基础实用教程(一)---简述
2017-11-03 14:55 592第一部分 实用教程 第 ... -
实现普通用户登录
2017-11-03 11:09 0页面元素: 用户名,密码,验证码,登录 1.创建登录页 ... -
Java容器-- 99集
2017-10-26 14:21 0API接口 Collection Set List H ... -
自己编写一个Map
2017-10-25 15:34 555在爱酷学习网上学习Java视频,其中有一个自己实现map的功能 ...
相关推荐
Linux命令手册是Linux用户不可或缺的参考资料,尤其对于初学者和经验丰富的系统管理员来说,它能够提供快速查询命令用法的能力。手册涵盖的内容广泛,包括文件目录管理、文档编辑和文件传输等多个方面。在此,我将...
- **功能**:创建、管理和提取tar格式的档案文件。 - **常用选项**: - `tar [选项] [档案文件] [成员文件]`:操作tar文件。 **2.13 UNARJ** - **功能**:解压.arj格式的文件。 - **用法**:`unarj x [文件]`。 *...
dos2unix命令用于将DOS格式的文本文件转换为UNIX格式。 56. **du**:在第八章第2.1节中提及。du命令用于估算每个文件或目录所占用的磁盘空间。 57. **dump**:在第九章第4.0节中解释。dump命令用于备份文件系统...
- 文件系统权限:文件和目录的权限设置,如UNIX/Linux系统的读(r)、写(w)、执行(x)权限。 8. 操作系统的文件系统和目录结构: - 目录结构:UNIX/Linux系统中的典型目录结构,比如bin、etc、lib、tmp、usr等...
不同的操作系统(如DOS、Windows、Linux、UNIX)有不同的命令集和格式。 ### 进程概念 进程是操作系统进行资源分配和调度的基本单位,其存在的唯一标志是进程控制块(PCB)。进程通过临界区概念实现资源的互斥访问...
- 操作系统:提及Linux、UNIX、Windows和DOS操作系统 - 编程语言和工具:Delphi、C/C++、Basic、C#、Excel、FoxPro、Access、SQL Server等 - 数据库:Access和SQL Server数据库管理系统 4. 媒体文件格式 - 音频...
在Cygwin中,用户和组的信息通常存储在`/etc/passwd`和`/etc/group`文件中,这些文件的格式与传统的UNIX系统相同。 **显示当前挂载点** 通过运行`mount`命令,可以查看当前系统中所有已挂载的设备或文件系统。 ...
2. dos2unix.sh:这是一个shell脚本,通常用于转换文件的行结束符,从DOS/Windows格式(CR+LF)转换为UNIX/Linux格式(LF),这在跨平台操作时很有用。 3. nrcdoc.txt:可能是一个关于某种技术或规范的文档,NRC可能...
这涵盖了从早期的DOS命令行界面到现代Windows桌面操作系统的演变,以及类Unix系统(Unix和Linux)的使用。了解不同操作系统之间的差异对于管理IT资源和应用开发非常重要。 3. 计算机硬件:内容中出现了CPU、GB...
5. 文件格式和扩展名:涉及.txt(纯文本文件)、.wps(WPS Office文档格式)、.doc(微软Word文档格式)、.xls(微软Excel工作簿格式)等。这些扩展名表明文件类型,决定了如何打开和处理这些文件。 6. 计算机网络...
3. 操作系统:文档中列举了多个操作系统名称,如“Windows”系列、“UNIX”、“OS/2”、“Novell NetWare”、“Linux”、“MacOS”、“Windows 2000”、“XP Professional”等。了解不同操作系统的特点和基本操作是...
- **dos2unix/unix2dos**:转换文件行尾符格式,在第十章第4.2节说明。 ### E - **e2label**:显示或更改ext2/ext3/ext4文件系统的卷标,在第八章第3.5节介绍。 - **echo**:打印文字信息到标准输出,在第十一章第2...
- UNIX系统:文档针对UNIX系统(包括Linux和Mac OS X)进行介绍,同时提供了一些解决特定问题的方法(Workarounds)。 - PC系统:包括DOS、Windows和Windows NT平台的配置说明。 4. 配置文件:对src/config.h文件...
常见的操作系统包括微软的DOS和Windows系列,如Windows XP,还有Unix、Linux、OS/2、Mac OS和Novell Netware等。其中,Unix是一种强大的分时操作系统,而Linux则是源自Unix的开源操作系统,广泛应用于服务器和桌面...
其次,网络操作系统如Windows 2000、Linux和Unix,能够支持多台计算机之间的通信和资源共享,而MS-DOS则不具备网络功能。因此,选项A是不正确的网络操作系统。 Windows操作系统允许同时运行多个程序,即支持多任务...
- **Samba 简介**: Samba 是一个用于 Unix/Linux 系统实现 SMB/CIFS 协议的开源软件包,可以让 Unix/Linux 和 Windows 用户通过网络进行资源共享。它允许用户设置文件夹共享、打印机共享等功能。 - **安装 Samba**: ...
7. 操作系统实例:研究不同操作系统,如UNIX/Linux、Windows、MS-DOS等,它们的设计理念、体系结构和特定功能。 8. 操作系统安全:覆盖用户认证、访问控制、加密、安全策略和恶意软件防护等内容。 9. 网络操作系统...
操作系统方面,教案覆盖了早期的操作系统如DOS,以及较为现代的操作系统如Windows、UNIX和LINUX。Windows 98作为文档中的一个重点,提到了其启动过程中的关键文件,例如Config.sys和Autoexec.bat。此外,还提到了MS-...