java8 base64_Java 8中的Base64 –加入乐趣为时不晚

java8 base64

最后,Java 8发布了。 最后,有一种执行Base64编码的标准方法。 长期以来,我们一直依赖于Apache Commons Codec(无论如何还是很棒的)。 内存敏感的编码人员将拼命使用sun.misc.BASE64Encoder和sun.misc.BASE64Decoder,以避免在其程序中添加额外的JAR文件,前提是他们确信只使用Sun / Oracle JDK。 这些类仍在Java 8中潜伏。

为了进行试验,我提供了一个JUnit测试,以显示如何使用以下API进行编码:

  • 公用编解码器:org.apache.commons.codec.binary.Base64
  • Java 8的新java.util.Base64
  • Sun / Oracle JDK的一种常绿内部代码:sun.misc.BASE64Encoder
package org.gizmo.util;import java.util.Random;import org.apache.commons.codec.binary.Base64;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.assertArrayEquals;import sun.misc.BASE64Encoder;public class Base64Tests {private static byte[] randomBinaryData = new byte[5000000];private static long durationCommons = 0;private static long durationJava8 = 0;private static long durationSun = 0;private static byte[] encodedCommons;private static byte[] encodedJava8;private static String encodedSun;@BeforeClasspublic static void setUp() throws Exception {//We want to test the APIs against the same datanew Random().nextBytes(randomBinaryData);  }@Testpublic void testSunBase64Encode() throws Exception {BASE64Encoder encoder = new BASE64Encoder();long before = System.currentTimeMillis();encodedSun = encoder.encode(randomBinaryData);long after = System.currentTimeMillis();durationSun = after-before;System.out.println("Sun: " + durationSun);} @Testpublic void testJava8Base64Encode() throws Exception {long before = System.currentTimeMillis();java.util.Base64.Encoder encoder = java.util.Base64.getEncoder();encodedJava8 = encoder.encode(randomBinaryData);long after = System.currentTimeMillis();durationJava8 = after-before;System.out.println("Java8: " + durationJava8);}@Testpublic void testCommonsBase64Encode() throws Exception {long before = System.currentTimeMillis();encodedCommons = Base64.encodeBase64(randomBinaryData);long after = System.currentTimeMillis();durationCommons = after-before;System.out.println("Commons: " + durationCommons);}@AfterClasspublic static void report() throws Exception {//Sanity checkassertArrayEquals(encodedCommons, encodedJava8);System.out.println(durationCommons*1.0/durationJava8);}
}

这三种方式的性能如何? Base64似乎是一个很小的方法,因此拧紧它的方法很少,但是您永远不会知道表面之下的内容。 从一般的时间安排(在JUnit测试中)看来,可以将3种方法排列成这样,从最快到最慢:Java 8,Commons,Sun。 时间示例(编码大小为5,000,000的字节数组):

太阳:521

公地:160

Java8:37

Java 8的运行速度比Commons快4倍,比Sun快14倍。 但是此示例只是简单化。 一定要为自己建立基准,以得出自己的结论。

那么,要使用哪些API? 正如任何专家都会告诉您的那样……要视情况而定。 如果您有足够的能力来决定您的代码只能在Java 8及更高版本上运行,那么请务必使用新的java.util.Base64。 如果只需要支持多个JDK版本和供应商,则可以使用Commons Codec或其他一些第三方API。 或者等到较旧的Java不再发行或使用后,再重写您宝贵的代码库。 或继续使用另一种编程语言。

注意:我什至没有提到使用sun.misc.BASE64Encoder。 尽可能避免使用它。 也许有一天,该类将在另一个(alos)JDK版本中删除……其他供应商在其他(heteros)JDK中不提供该类。

资源资源

  • http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html
  • http://stackoverflow.com/questions/13109588/base64-encoding-in-java/22704819#22704819
  • http://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/binary/Base64.html

翻译自: https://www.javacodegeeks.com/2014/04/base64-in-java-8-its-not-too-late-to-join-in-the-fun.html

java8 base64

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

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

相关文章

【渝粤教育】国家开放大学2018年秋季 2083T信息技术与教育技术(2) 参考试题

试卷代号:2099 民事诉讼法学 试题 注意事项 2019年1月 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收完 考卷和答题纸后才可离开考…

HDMI视频光端机传输故障如何调试?

HDMI高清光端机就是光信号传输的终端设备。在广泛领域应用中,往往需要把HDMI信号源输送远处进行处理。最为突出的问题有:远处接收到的信号出现偏色、模糊,信号产生重影和拖尾及网纹干扰。那么,HDMI高清视频光端机传输故障该如何调…

【渝粤教育】国家开放大学2018年秋季 2405T现代汉语(1) 参考试题

试卷代号:2444 | 酒店管理概论试题 2019年1月 注意事项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试 结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收完 考卷和答题纸后才可离开考…

前9个免费的Java流程监视工具以及如何选择一种

这样就可以运行Java代码了。 也许它甚至可以在生产服务器上运行。 在您完成出色工作之后,我们得到了好消息和令人讨厌的消息。 令人讨厌的消息是,现在开始调试。 就是调试和应用程序性能监视。 这意味着您不仅需要查看编写的代码,还可以查看…

什么是HDMI视频光端机?

HDMI高清光端机对视频音频发布等起到传输作用,HDMI光端机由发送器和接收器组成,能通过单根光纤把计算机主机的音频,视频,USB延长到远端,用户可以在远端实时收听到电脑主机的图像和声音,并使用电脑控制。那么…

【渝粤教育】国家开放大学2018年秋季 2764T饲养与饲料 参考试题

试卷代号:2777 绿地规划 试题 2019年1月 一、单项选择题(每题3分,共30分) 1.综合性公园起辅助性作用的,是为附近局部地区居民服务的出入口是( )。 A.主要出人口 B.次要出人口 C&…

【渝粤教育】国家开放大学2018年秋季 8038-22T实用管理基础 参考试题

试题编号:0850 座位号 2018-2019 学年度第一学期期末考试 电子商务概论(农) 试题 一、名词解释题: (每题5分,共20分) 1.制造商型配送中心: 电子合同: 搜索引擎推广: 4.农产品物流…

pdh光端机相关知识介绍

目前随着网络信息技术的发展,我们拥有了更加先进的技术运用技巧,其中一个就是pdh光端机的使用。我们自从使用了pdh光端机,对于信息的传输大大的打破了传统的信息传输的缺点。那么,作为一种新生的技术,相信大家对于它的…

【渝粤教育】国家开放大学2019年春季 0233-22T学前儿童语言教育 参考试题

试卷编号:0233 2018——2019学年度第二学期期末考试 学前儿童语言教育 2019年7月 1.在儿童掌握语言之前,有一个较长的言语发生准备阶段,称为“ ”。 2.学前儿童语言教育的内容应该根据教育目标来确定,还应该根据 和 来选择。 3.…

ClassNotFoundException:是否会减慢您的JVM?

大多数Java开发人员都熟悉臭名昭著且非常常见的java.lang.ClassNotFoundException 。 虽然通常已经很好地了解了此问题的根源(类路径中缺少类/库,类加载器委派问题等),但对整体JVM和性能的影响通常是未知的。 这种情况可能会严重影…

【渝粤教育】国家开放大学2019年春季 0752-22T建筑工程资料管理 参考试题

试卷编号:0752 2018——2019学年度第二学期期末考试 建筑工程资料管理 2019年6月 工程资料短期保管期限是指工程档案保存_________年以下。 技术交底分为_______________、、、_____。 单位工程档案总案卷数超过________卷的,应编制总目录卷。 在案卷页…

pdh光端机的优点介绍

PDH光端机(Plesiochronous Digital Hierarchy,准同步数字系列)是小容量光端机,一般是成对应用,也叫点到点应用,容量一般为4E1,8E1,16E1。接下来杭州飞畅科技的小编来为大家详细介绍下…

【渝粤教育】国家开放大学2019年春季 1127实用卫生统计学 参考试题

试卷代号:1127 2019年春季学期期末统一考试 实用卫生统计学试题(开卷) 2019年7月 一、单项选择题(每题2分,共20分) 1.某护士记录了50名婴儿出生体重的测定结果,小于2500克15人,介于2…

什么是485光端机,485数据光端机产品介绍

485光端机,光纤modem,485光纤收发器,485光端机器,串口光端机,串口转光纤,串口光猫,485光纤猫,提供RS-232/485/422串口转光纤功能,实现光纤与RS-232/485/422串口的数据双向…

OpenShift Origin中的Kubernetes Spark运算符(第1部分)

本系列有关Radanalytics.io的Kubernetes Spark运算符 OpenShift起源 。 它是一个开源的运营商来管理 Apache Spark集群和应用程序。 为了在OpenShift Origin上部署操作员,第一次需要为其克隆GitHub存储库: git clone https://github.com/radanalytics…

【渝粤教育】国家开放大学2019年春季 1312学前教育原理 参考试题

试卷代号:1312 学前教育原理 试题 2019年7月 一、单项选择题【每小题3分,共30分) 1.学前教育学是以( )和学前教育问题为对象的一个研究领域。 A.幼儿园 B.学前教育现象 C.学前教育目的 D.学前教育规律 2.教育的目的不仅…

什么是模拟光端机?模拟光端机优缺点介绍!

模拟光端机是光端机的一种,主要是采用模拟调频、调幅、调相的方式将基带的视频、音频、数据等信号调制在某一载频上,通过发射光端机进行传输。传输的光信号:模拟光端机发射的光信号是模拟光调制信号,它随输入的模拟载波信号的幅度…

支付宝通知侦听器是什么_使用SWTEventHelper清除SWT侦听器通知

支付宝通知侦听器是什么为基于SWT的UI编写测试通常需要以编程方式通知小部件侦听器。 不幸的是,用于创建,初始化并最终触发事件的代码有点冗长,并且分散了测试的实际目的。 在编写了类似的初始化例程几次之后,我想出了一个小实用程…

【渝粤教育】国家开放大学2019年春季 2080现代教育思想 参考试题

试卷代号:2080 现代教育思想 试题(开卷) 注意事项 2019年7月 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收…

30路电话光端机

30路电话光端机就是把传统的电话信号转换成光信号并在光纤上传输的设备。30电话光端机是成对使用,一端去接程控交换机,中间是通过光纤传输, 另一端直接接使用电话机,一般是用来延长通信距离的! 30路电话光端机采用的专…