编码

Base64:
 
Base64:将⼆进制数据转换成由 64 个字符组成的字符串的编码算法

什么是⼆进制数据?
· ⼴义:所有计算机数据都是⼆进制数据
· 狭义:⾮⽂本数据即⼆进制数据

算法:
将原数据每 6 位对应成 Base 64 索引表中的⼀个字符编排成⼀个字符串(每个字符8 位)。

Base64 的⽤途:
1. 将⼆进制数据扩充了储存和传输途径(例如可以把数据保存到⽂本⽂件、可以通过聊天对话框或短信形式发送⼆进制数据、可以在 URL 中加⼊简单的⼆进制数据)
2. 普通的字符串在经过 Base64 编码后的结果会变得⾁眼不可读,因此可以适⽤于⼀定条件下的防偷窥(较少⽤)
3. 有时需要使⽤⽂本形式来传输文件。除此之外,完全没必要使⽤ Base64 对文件进⾏额外处理。

Base64 的缺点:
因为⾃身的原理(6 位变 8 位),因此每次 Base64 编码之后,数据都会增⼤约1/3,所以会影响存储和传输性能。

「Base64 加密图⽚传输更安全和⾼效」???
不。⾸先,Base64 并不是加密;另外,Base64 会导致数据增⼤ 1/3,降低⽹络性能,增⼤⽤户流量开销,是画蛇添⾜的⼿段。(最好不要拿来 diss 你们公司的后端哟,友善)

变种:Base58
⽐特币使⽤的编码⽅式,去掉了 Base64 中的数字 "0",字⺟⼤写 "O",字⺟⼤写"I",和字⺟⼩写 "l",以及 "+" 和 "/" 符号,⽤于⽐特币地址的表示。Base58 对于 Base64 的改动,主要⽬的在于⽤户的便捷性。由于去掉了难以区分的字符,使得 Base58 对于「⼈⼯抄写」更加⽅便。另外,去掉了 "+" "/" 号后也让⼤多数的软件可以⽅便双击选取
URL编码:
 
URL编码:
在 URL 的字符串中,对⼀些不⽤于特殊⽤途的保留字符,使⽤百分号 "%" 为前缀进⾏单独编码,以避免出现解析错误。例如,要在 http://hencoder.com/users 后⾯添加查询字符串,查询 name 为「隐秘&伟⼤」的⽤户,如果直接写成 http://hencoder.com/user/?name=隐秘&伟⼤,"&" 符号就会被解析为分隔符号,因此需要对它进⾏转码,转码后的 URL 为 http://hencoder.com/user/?name=隐秘%26伟⼤ 。这种编码仅⽤于URL,⽬的是避免解析错误的出现。
压缩与解压缩:
 
含义:
· 压缩:将数据使⽤更具有存储优势的编码算法进⾏编码。
· 解压缩:将压缩数据解码还原成原来的形式,以⽅便使⽤。

⽬的:减⼩数据占⽤的存储空间。

压缩是编码吗?
是。所谓编码,即把数据从⼀种形式转换为另⼀种形式。压缩过程属于编码过程,解压缩过程属于解码过程。

常⻅压缩算法:
DEFLATE(ZIP)、JPEG、MP3 等。
图⽚与⾳频、视频编解码:
 
含义:
将图像、⾳频、视频数据通过编码来转换成存档形式(编码),以及从存档形式转换回来(解码)。

⽬的:
存储和压缩媒体数据(⼤多数媒体编码算法会压缩数据,但不是全部)。
字符集:
 
含义:⼀个由整数向现实世界中的⽂字符号的 Map
分⽀:
· ASCII:128 个字符,1 字节
· ISO-8859-1:对 ASCII 进⾏扩充,1 字节
· Unicode:13 万个字符,多字节
· UTF-8:Unicode 的编码分⽀
· UTF-16 :Unicode 的编码分⽀
· GBK / GB2312 / GB18030:中国⾃研标准,多字节,字符集 + 编码
 
序列化:
 
序列化:
把数据对象(⼀般是内存中的,例如 JVM 中的对象)转换成字节序列的过程。对象在程序内存⾥的存放形式是散乱的(存放在不同的内存区域、并且由引⽤进⾏连接),通过序列化可以把内存中的对象转换成⼀个字节序列,从⽽使⽤ byte[] 等形式进⾏本地存储或⽹络传输,在需要的时候重新组装(反序列化)来使⽤。

⽬的:
让内存中的对象可以被储存和传输。

序列化是编码吗?
不是

和编码的区别:
编码是把数据由⼀种数据格式转换成另⼀种数据格式;⽽序列化是把数据由内存中的对象(⽽不是某种具体的格式)转换成字节序列。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值