A.在讲具体类之前,先讲一下base64的编码/解码原理
Base64是一种通过将数据进行编码/解码,是一种可逆编码。我们经常发的邮件,它的内容就是通过这种编码進行加減碼,然後在網上進行傳輸。
原理其實很簡單,就是將3個字節的二進制數(共3*8=24bits)進行分組,分成4組,每組只有6位(2的6次方=64,就是字母表中的64個字母,所以叫base64),將每6位的數據對應字母表當中的字母進行編碼。
将待编码序列每3个字节分一组,如果分到最后一组,只有一个字节的话,那么,前6bits可以进行编码,但是还剩下2bits,这时候,我们补全6bits。这样就可以将一个字节编成了两个字节了。在这里有一个问题,我们解码的时候,我们不知道之前编码的时候补全了0。这时候,我们引入了base64的padding补丁。我们将最后两个字节的编码结果用“=”表示,即"=="表示最后一个分组只有一个字节。同理,当最后一个分组只有两个字节。前12bits可以进行编码,编成两个字节,剩下4bits,补全两位0后进行编码,最后一个字节用“=”,表示编码时最后一个分组只有两个字节。
B.org.jboss.handler.codec.base64包下包含四个文件,一个枚举类,三个JAVA类
枚举类:Base64Dialect,主要定义的Base64的三种不同编码(STANDARD,URL_SAFE,ORDERED),对应的用于编码的字母表和解码表也有所不同,此外还定义了在编码时是否换行属性breakLinesByDefault
STANDARD:标准编码,除了A-Z,a-z,0-9外加上+-(索引值62,63)
URL_SAFE:URL安全编码,除了A-Z,a-z,0-9外加上-_(索引值62,63)
ORDERED:按顺序编码,同URL_SAFE使用相同的字母表,但是-_这两个在字母中的位置(索引值0,37)不一样。
Java类:
1.Base64,一个工具类,用于对channelbuffer对象进行编码/解码的一个工具,的运用多态的思想,里边封装了多个encode,decode方法,这些方法最终都是调用encode4to3和decode3to4这两个核心的方法,同时利用HeapChannelBufferFactory的实例,创建用于一个新的ChannelBuffer用于存放最后的处理结果。
ChannelBuffercb=HeapChannelBufferFactory.getInstance().getBuffer(ChannelBuffer.order(),(int)lenght);
2.Base64Encode,Base64Decode
这两个类分别继承了OneToOneEncode,OneToOneDecode,封了Base64Dialect这个枚举,此外,在Base64Encode里边,还封装了布尔类型,表示编码时是否换行。
这两个类只有一个核心方法,重写了encode和decode方法,里边核心,也是调用1当中讲的Base64这个工具类进行编码/解码处理。
分享到:
相关推荐
这个“netty-3.7.0官方API所有jar包”提供了Netty 3.7.0版本的完整API文档、所有相关的jar包以及示例代码,帮助开发者更深入地理解和使用Netty。 1. **Netty API 文档**: Netty的API文档是开发者了解其内部机制的...
Netty 与 JBoss 有着紧密的关系,因为 Netty 由 JBoss 社区的原始成员之一,Marc Fleury 创建。在 Netty 5.0 版本中,它可能被设计为 JBoss 平台上理想的网络通信库。 描述提到的“netty5.0源码包”是学习和研究 ...
JBoss Netty是一个高性能、异步事件驱动的网络应用程序框架,它为快速开发可维护的高性能协议服务器和客户端提供了丰富的API。本篇文章将深入探讨如何利用JBoss Netty创建高效的Web Service客户端和服务端。 首先,...
《跟闪电侠学Netty:Netty即时聊天实战与底层原理》是一本深入浅出的Netty技术指南,旨在...通过学习这本书,你不仅可以学会Netty的基本使用,还能深入了解其设计思想和优化手段,为你的Java网络编程之路打下坚实基础。
Netty由JBOSS组织开发,现在是Apache 2.0许可下的开源项目。它提供了对TCP、UDP、HTTP、HTTPS、WebSocket等常见网络协议的支持,简化了网络编程的复杂性。Netty以其高效的性能、丰富的功能和易用的API,在高并发、低...
1. Netty简介:Netty是由JBOSS组织开发的一个开源框架,它基于Java NIO(非阻塞I/O)构建,提供了更加高级和易于使用的API,使得开发者可以更高效地编写网络应用。Netty的特性包括零拷贝、高效的缓冲区管理以及强大...
1. Netty概述:Netty最初由JBoss团队开发,现已成为Apache软件基金会的项目。它提供了一种简化网络编程的API,支持TCP、UDP、HTTP、HTTPS等多种协议,并且具有良好的可扩展性和灵活性。 2. Java NIO基础:NIO(New ...
Netty 是由JBOSS组织开发的一个开源项目,最初设计用于解决Java NIO框架的复杂性问题。Netty提供了高度抽象的API,使得开发者可以轻松地处理网络通信的各种细节,如连接管理、数据编码解码、线程模型等。 2. **...
《Netty in Action》是一本深入探讨Netty框架的中文指南,它为读者提供了全面了解和熟练使用Netty所需的知识。Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。...
《Netty源码深入剖析》一书旨在帮助读者深入了解Netty框架的工作原理和技术细节,从基础知识入手,逐步过渡到高级优化技巧,使开发者能够更好地掌握并应用Netty于实际项目中。 ### 一、Netty简介与核心特性 Netty...
- Netty 是由 JBoss 提供的一个开源项目,它提供了一种事件驱动的非阻塞 I/O 模型,能够有效提高网络服务的性能。 - Netty 支持多种传输协议,如 TCP、UDP、HTTP、FTP 等,同时也支持自定义协议,非常灵活。 - ...
综上所述,“jboss netty chat”项目是一个利用Netty框架实现的实时群聊应用示例。它涉及到了Netty的基本架构、事件处理、消息编码解码、并发控制以及可能的网络安全措施。通过学习这个示例,开发者可以深入理解...
- Netty的起源:Netty是由JBOSS组织开发的开源项目,最初为解决Java平台上的NIO(非阻塞I/O)编程复杂性而设计。 - Netty的核心理念:提供一个高度可定制的、组件化的网络通信框架,简化网络应用的开发和维护。 -...
Netty 是由JBOSS提供的一个Java开源框架,最初由Infinispan项目发起,现已成为独立的社区项目。它提供了一组高度优化的、基于NIO的网络API,支持TCP、UDP、HTTP、HTTPS等多种协议,并且具有高度的可扩展性和灵活性,...
1. **Netty概述**:Netty是由JBOSS提供的一个开源框架,基于Java NIO(非阻塞I/O)构建,它提供了一组高度优化的网络操作API,简化了网络编程的复杂性,如TCP、UDP和HTTP等传输协议。 2. **异步事件驱动**:Netty的...
在这个"NettyDemo.rar"压缩包中,包含了一个简单的 Netty 客户端示例,该示例展示了如何使用 Netty 实现连接、发送信息以及心跳包的处理。下面我们将深入探讨 Netty 的核心概念以及这个 Demo 中涉及的关键技术点。 ...
《Netty 4.x 用户指南》是一份专为初学者准备的网络通信技术教程,它详细介绍了Netty框架的使用方法和核心概念。Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端...
Netty 是由 JBoss 提供的一个开源项目,它基于 NIO(非阻塞 I/O)模型,提供了一种灵活且高效的网络通信解决方案。Netty 可以处理多种传输协议,包括 TCP、UDP 和 HTTP 等,同时支持自定义协议。 二、Netty 的核心...
Netty广泛应用于云计算、大数据、游戏服务器、金融系统等领域,如Apache Thrift、Elasticsearch、OpenStack等项目都使用了Netty作为底层通信框架。 通过阅读《Netty权威指南》第二版,开发者可以深入理解Netty的...
1. **Netty概述**:Netty由JBOSS组织开发,最初为JBoss AS项目的一部分,后来成为一个独立的开源项目。Netty提供了一套统一的API,可以处理各种传输协议,如TCP、UDP、HTTP、FTP等,简化了网络编程的复杂性。 2. **...