java8新特性(7)— Base64

java8新特性(7)— Base64

新增Base64工具类

package com.common.jdk8;import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.UUID;//在Java 8中,Base64编码已经成为Java类库的标准。
//Java 8 内置了 Base64 编码的编码器和解码器。
//Base64工具类提供了一套静态方法获取下面三种BASE64编解码器:
//基本:输出被映射到一组字符A-Za-z0-9+/,编码不添加任何行标,输出的解码仅支持A-Za-z0-9+/。
//URL:输出映射到一组字符A-Za-z0-9+_,输出是URL和文件。
//MIME:输出隐射到MIME友好格式。输出每行不超过76字符,并且使用'\r'并跟随'\n'作为分割。编码输出最后没有行分割。
public class Jdk8Test7 {public static void main(String args[]){try {// 使用基本编码String base64encodedString = Base64.getEncoder().encodeToString("zhangshuai?java8".getBytes("utf-8"));System.out.println("Base64 编码字符串 (基本) :" + base64encodedString);// 解码byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);System.out.println("原始字符串: " + new String(base64decodedBytes, "utf-8"));base64encodedString = Base64.getUrlEncoder().encodeToString("TutorialsPoint?java8".getBytes("utf-8"));System.out.println("Base64 编码字符串 (URL) :" + base64encodedString);StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < 10; ++i) {stringBuilder.append(UUID.randomUUID().toString());}byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8");String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes);System.out.println("Base64 编码字符串 (MIME) :" + mimeEncodedString);}catch(UnsupportedEncodingException e){System.out.println("Error :" + e.getMessage());}}
}

运行结果

Base64 编码字符串 (基本) :emhhbmdzaHVhaT9qYXZhOA==
原始字符串: zhangshuai?java8
Base64 编码字符串 (URL) :VHV0b3JpYWxzUG9pbnQ_amF2YTg=
Base64 编码字符串 (MIME):MzNlYTZmM2ItNjc1ZC00ZTUyLWFiMTgtNWRkYzdiNGQ4MWIzYjU0ODFjZTQtZGExZi00ZDIyLTli
NWQtNzUzZWViYWU2YmQwM2FmOWY3YTktNzg2My00NWUyLTljYjktZmI2NDljOGE2OWI1ZjQzNTgz
MTQtMzY4Zi00NzUxLTg3MWEtZTUxNmRmM2FhNGZmMTJiZWIzODctMDQyMi00ZTFhLWE0ZmItZDkx
YTY5Zjc0MTQ1ZTk2NTRhZDMtYmJiOS00ZTg5LWI2YTgtNmI5ZTA1YWE4OWZjM2RhYjhlZWUtZjMz
Yy00Mzk1LWIwODYtMDE4NGQyMzhhOWUwZjgwZmI5ZDItNjg2YS00ZWY1LTlhZTEtYmJlYjRkZDQ1
ZDMxZmRlZjYxNjItYTg4MC00ZWU4LTgxZDQtNTBlYmI2MzAzMWNiZGZiZjg0NmItODkyNi00YjAw
LWE5YmMtY2MyZWVhN2RiMTNl

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改git历史提交的commit信息

本文是基于idea的操作&#xff0c;亲测可用 前言&#xff1a; 很多公司都会自定义 Git - 使用强制策略&#xff0c;那么他的commit信息就会有固定的格式&#xff0c;一旦不是这个格式&#xff0c;就会出现push失败 但是push失败&#xff0c;很多也只在dev和master分支做强制限…

七、区块链如何运用merkle tree验证交易真实性

转载自&#xff1a;https://www.tangshuang.net/4117.html 本文假设你已经知道区块链中merkle tree的原理&#xff0c;现在搞明白具体怎么来实现交易真实性验证。 Merkle Tree 这个小节简述一下merkle的原理。简单说&#xff0c;merkle tree就是一个hash二叉树&#xff0c;父…

idea端口占用解决记录

idea端口占用解决 每次占用&#xff0c;每次都要百度&#xff0c;路子很清晰了&#xff0c;记录下 报错&#xff1a;The port may already be in use or the connector may be misconfigured. 解决&#xff1a; 1.cmd 2.netstat -ano|findstr 你的端口号 举例&#xff1a;…

西安软件行业闲谈

尘埃落定&#xff0c;最终选择了西安 讲真&#xff0c;今年年初&#xff0c;就萌生了回西安的想法&#xff0c;毕竟北漂几年&#xff0c;该回了 当初还想着去上海两年&#xff0c;再去深圳两年&#xff0c;好好体验下各个一线城市的不同魅力 性格就是这样&#xff0c;不甘平凡…

消息队列(1):一个消息队列应该有的特点

消息队列常见场景 异步解耦 削峰填谷 日志收集分析 代替事务&#xff0c;最终一致 消息队列特点 消息队列之所以能异步&#xff0c;就是因为消息并不是实时处理的&#xff0c;那肯定会有一个存储消息&#xff0c;处理消息的地方&#xff0c;才能达到异步效果。 所以最简单的…

消息队列(2):常见的消息队列协议

协议很常见&#xff0c;只要是通信&#xff0c;就会用到协议&#xff0c;就像我们说话的语言一样&#xff0c;不同的语言连通着不同的人群。 所以说&#xff0c;消息队列也是一样&#xff0c;想要互相通信&#xff0c;就要使用同一种协议。 每个协议下的消息队列&#xff0c;都…

spingboot下shiro自定义过滤器roles

shiro默认的roles过滤&#xff0c;是与的关系&#xff0c;就是你的用户得有roles对应的所有角色&#xff0c;才算有权限。 但是实际开发过程中&#xff0c;更多的是或的需求&#xff0c;只要用户满足roles中的一个角色&#xff0c;就算有权限。 所以就涉及到重写过滤器roles&am…

shiro的集群动态权限更新

shiro的动态权限&#xff0c;一般都是将权限放在数据库中&#xff0c;项目启动后将权限加载给shiro 当数据库的权限数据发生改变时&#xff0c;重新加载权限给shiro。 单机这样做没问题&#xff0c;但是当项目服务是集群的时候&#xff0c;比如有tomcat1&#xff0c;tomcat2&am…

消息队列(3):RabbitMQ

RabbitMQ&#xff0c;基于AMQP协议实现。 特点&#xff1a; 消息可靠&#xff1a;持久化消息&#xff0c;传输确认&#xff0c;发布确认。 路由灵活&#xff1a;使用AMQP的Exchange来路由消息&#xff0c;包括RabbitMQ内置的Exchange&#xff0c;还有复杂的路由也可以使用多个…

java基础 --- Arrays.asList():返回指定数组支持的固定大小列表

Arrays.asList()&#xff1a;返回指定数组支持的固定大小列表 首先看下这个方法的源码注释&#xff0c;注意第一句&#xff0c;Returns a fixed-size list backed by the specified array.&#xff0c; 意思就是&#xff1a;返回指定数组支持的固定大小列表 所以&#xff1a;…

[设计模式] ------ 单例模式

单例模式&#xff0c;是众多设计模式中&#xff0c;写法最多&#xff0c;套路最多&#xff0c;坑最多&#xff0c;面试被问最多的设计模式。 基本上&#xff0c;单例模式在面试中已经被问烂了&#xff0c;依稀记得我的上家公司面试我的时候&#xff0c;说到设计模式&#xff0c…

分布式锁闲谈

分布式锁闲谈 前言 服务器单机情况下&#xff0c;要锁住某个资源&#xff0c;我们一般用到的是synchronized&#xff0c;lock等锁&#xff0c;这是java提供的&#xff0c;也确实能很有效的锁住资源。 但是在服务器集群的情况下&#xff0c;上面这些单机锁就不起作用了&#…

java 后端与前端Date类型与String类型互相转换(使用注解)

一&#xff1a;java 后端格式化输出Date类型的属性值到前端 后端返回的类型中&#xff0c;直接定义Date类型&#xff0c;加上此注解&#xff0c;直接将Date类型转成自定义的格式给前端 class TestDateOutput{JsonFormat(pattern "yyyy-MM-dd")private Date create…

spring boot配置对上传文件的大小限制

spring boot配置对上传文件的大小限制 spring-boot 2.0之前 Spring Boot1.4版本后配置更改为&#xff08;默认单个文件最大1Mb,单次请求文件总数大小最大10Mb&#xff09;: spring.http.multipart.maxFileSize 20MB spring.http.multipart.maxRequestSize20MB spring-boot …

[设计模式] ------ 适配器模式

适配器把一个类的接口&#xff0c;强制变成另外一个类的接口实现。 个人建议&#xff0c;万不得已不要用适配器。但是&#xff0c;你一定要知道有这么个东西。 如果你的项目刚刚起步&#xff0c;就有人用了适配器&#xff0c;那基本上就是滥用。 适配器一般是项目庞大&#xff…

Notepad++中的UTF-8无BOM格式编码

Notepad中&#xff0c;关于utf-8的编码格式&#xff0c;有两种&#xff1a;以UTF-8无BOM格式编码和以UTF-8格式编码。 很容易给人一种错觉&#xff0c;第一反应会选择以UTF-8格式编码&#xff0c;感觉这种就是平时所说的UTF-8&#xff0c;然而这种编码是默认带BOM的&#xff0…

java 上传文件注意事项

java 上传文件注意事项 1、文件名有特殊字符的情况&#xff0c;所以最好是文件名前台url编码&#xff0c;后台再url解码&#xff0c;这点在下载的时候也一样 2、文件大小一定要设置&#xff0c;spring boot 有默认。 3、文件名校验&#xff1a; 3.1、文件后缀校验 3.2、conten…

[设计模式] ------ 装饰模式

首先&#xff0c;假设项目有个核心功能。 随着项目迭代&#xff0c;又产生功能1和功能2 于是有如下需求&#xff1a; 某个场景需要核心功能和功能1组合&#xff0c; 某个场景需要核心功能和功能2组合&#xff0c; 某个场景需要核心功能和功能1和功能2组合&#xff0c; 甚至以后…

hash和一致性hash

hash&#xff1b;简单的hash取余 优点&#xff1a; 计算简单&#xff0c;快速定位 缺点&#xff1a; 容错和扩展差&#xff0c;任何的增加机器或减少机器&#xff0c;都会伴随着重新set值 比如原来有五台机器做缓存&#xff0c;现在加一台&#xff0c;那么余5就变成余6&#x…

[记录]---mysql数据库,decimal类型设置默认值0,不要是null

mysql数据库 类型为decimal的字段&#xff0c;最好把默认值设置为0&#xff0c;不要设置为null。 因为null值在代码中及其容易造成空指针。