Base64工具类并发问题!

哈夫曼编码的基本概念和构造方法 哈夫曼编码 参考:B站青岛大学–王卓的数据结构与算法基础视频 哈夫曼树相关知识点 详见博客: 哈夫曼树的基本概念和构造方法 哈夫曼编码概念 引入等长编码 下面的例子是将字符串用2位的等长编码表示 在远程通讯中,要将待传字符转换成由二进制的字符串 设要传送的字符串为: ABACCDA 若编码为:A——00,B——01,C——10,D——11 则字符串可转换为:00010010101100 使用不等长的编码: 引入不等长编码 如下图,使用不等长的只需要9个二进制位。 但是问题是前面四个零会导致翻译时出 阅读详情

Base64工具类并发问题!

为减少对象创建次数,一般会做如下编码:

public class EncodeUtils {
	private static BASE64Encoder encoder;
	private static BASE64Decoder decoder;
	
	public static boolean isNULLorEmpty(String str){
	  if(str==null||str.trim().equals(""))
		return true;
	  else
		return false;
	}
	
	/**
	 * 
	 * 方法名称:encode
	 * 功能说明:字符串数据进行BASE64加密
	 * @param str
	 * @return
	 */
	public static String encode(String str){
		if(encoder == null) encoder = new BASE64Encoder();
		return encoder.encode(str.getBytes());
	}
	
	/**
	 * 
	 * 方法名称:decode
	 * 功能说明:字符串数据进行BASE64解密
	 * @param str
	 * @return
	 * @throws IOException
	 */
	public static String decode(String str) throws IOException {
		if(decoder==null) decoder = new BASE64Decoder();
		return new String(decoder.decodeBuffer(str));
	}
   
}

  这样写,看似没问题,但是在高并发下会存在问题,同一字符串解码出来的信息不一致,BASE64Encoder、BASE64Decoder 不是线程安全的类

所以可以按如下修改,有两种方案,一种是每次都重新创建个对象,另外一种是替换jra包,不用jre带的,用org.apache.commons.codec下的base64,这个是线程安全的类

修改如下:

	/**
	 * 
	 * 方法名称:decode
	 * 功能说明:字符串数据进行BASE64解密
	 * @param str
	 * @return
	 * @throws IOException
	 */
	public static String decode(String str) throws IOException {
		return new String(new BASE64Decoder().decodeBuffer(str));
	}

  或者换jar包

public class EncodeUtils {

    private static Base64 base64 = new Base64();
    
    
/**
     * 
     * 方法名称:decode
     * 功能说明:字符串数据进行BASE64解密
     * @param str
     * @return
     * @throws IOException
     */
    public static String decode(String str) throws IOException {
        return new String (base64.decode(str));
    }
   
}

 


  
posted @ 2018-06-11 11:55 ForeverYoungCoder 阅读( ...) 评论( ...) 编辑 收藏
基于Java11的Base64工具类 工具类 public class Base64Test { public static String encode(String src) { byte[] encodeBytes = Base64.getEncoder().encode(src.getBytes()); return new String(encodeBytes); } public static String decode(String src) { byte[] 阅读详情

相关推荐

AMD显卡跑MiniMax H3提速30%:SageAttention ROCm适配全记录

在Transformer架构的视频生成模型中,注意力计算往往是性能瓶颈,尤其当显存资源受限时,低精度量化与内核优化成为关键突破口。SageAttention通过将QK^T矩阵乘法量化为INT8,并以FP16/INT4表达注意力概率矩阵,在保证画质的前提下显著降低访存与计算开销,相比传统FlashAttention具备更高速度上限。这一技术价值在本地部署场景尤为突出——当用户使用非NVIDIA显卡运行大型视频模型时,通用优化库常因依赖CUDA而失效。本文聚焦AMD ROCm平台下的MiniMax H3视频生成

weixin_32238157的博客 277

关于Base64工具类并发问题

BASE64 编码是一种常用的字符编码,在很多地方都会用到。JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它们可以非常方便的完成基于 BASE64 的编码和解码。很多时候为减少对象创建次数,一般会做如下编码: package com.

jasontome的android之路:Do it. Do it right. Do it righ 2568

西门子S7-200 SMART控制步进电机(二)

目录 一、开环运动控制方法 二、运动轴概述 三、配置运动控制向导 一、开环运动控制方法 S7-200 SMART CPU提供三种开环运动控制的方法: 1、脉冲宽度调制(PWM):内置于CPU中,用于速度、位置或占空比的控制 2、脉冲串输出(PTO):内置于CPU中,用于指定长度脉冲或指定距离的控制 3、运动轴:内置于CPU总,用于速度和位置的控制。本文所讲的就是通过运动轴实现步进电机的运动控制。 SR20和ST20 CP...

qq_43134642的博客 2万+

一些有关base64的坑,不要再犯这些错了

前言 最近在和百度对接中,需要通过base64加密的方式对数据加密并校验。对方环境是jdk1.8的,我们的环境是jdk1.7的,在对接中遇到一些问题,所以总结一下。 概述 Base64是一种字符串编码格式,采用了A-Z,a-z,0-9,“+”和“/”这64个字符来编码原始字符(还有垫字符“=”)。一个字符本身是一个字节,也就是8位,而base64编码后的一个字符只能表示6位的信息。也就是原始字符...

m0_37825219的博客 2万+

别再手搓SVG了!用Vue3+SVG.js快速搭建电力系统拓扑图(附完整代码)

本文介绍了如何利用Vue3和SVG.js实现电力系统拓扑图的低代码开发,通过组件化和响应式数据绑定,大幅提升开发效率。文章详细解析了SVG.js的核心功能,包括图形创建链式API、动态属性绑定和高级图形操作,并提供了断路器组件的完整实现代码。此外,还分享了性能优化策略和调试技巧,帮助开发者应对大规模拓扑图的挑战。

weixin_27717759的博客 354

STGCN实战:从零构建PyTorch时空图卷积网络预测城市交通流

本文详细介绍了如何使用PyTorch从零构建时空图卷积网络(STGCN)进行城市交通流预测。通过将交通网络建模为图结构,并融合时间卷积与空间图卷积,STGCN能有效捕捉交通流的时空依赖性。文章提供了从数据预处理、核心模块(TimeBlock与STGCNBlock)搭建、模型训练到实战技巧的完整指南,帮助开发者快速掌握这一前沿的交通速度预测技术。

wasm7browser的博客 247

Java实现Base64工具类(编码和解码)

目录一、Base64简介二、Base64编译过程三、Base64工具类四、实践结语 一、Base64简介   Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。大家可查看RFC2045~RFC2049,上面有MIME的详细规范。 Base64转换表 索引 对应的字符 索引 对应的字符 索引 对应的字符 0 A 26 a 52 0 1 B 27 b 53 1 2 C 28 c 54 2 3 D 29 d

嘉禾嘉宁papa 1万+

《iOS之一起进大厂》系列-秒杀面试官的RunLoop底层原理面试题

Runloop是iOS面试中的必考题,不管大厂小厂都会问到。 这里包括了Runloop几乎所有的面试题,还有中肯完整的答案解释。

空杯子 1152

Base64工具类Base64Util

需要的依赖包 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3.1</version> </dependency> 直接上工具类...

小羽的博客 1万+

MIMO技术入门

MIMO:多天线技术,发射端和接收端有多个天线(注意:并不是指多个天线板,而是多套振子,每一套是一个独立的天线。) 4G:2、8天线 5G:4、64天线(64T64R) 手机也是多天线 MIMO实现效果的分类: 1)空间分集 。2)空间复用。3)波束赋形。 空间分集(space diversity) 作用:提升接收质量 利用多个天线发射或者接收一个数据流,避免单个信道衰落对整个链路的影响。(比如你的耳机坏了一只并不影响另一只) 空间复用(space multiplexing) 作用:提升速率 利

About1129的博客 2875

NX二次开发入门必看:手把手教你搭建开发环境

想顺利开展nx二次开发,第一步就是配置好开发环境。本文详细讲解从安装准备到环境调试的完整流程,结合实际操作细节,帮你避开常见坑点,快速进入nx二次开发的实战阶段。

weixin_31569663的博客 1458

Base64Utils java 常用Base64编码解码工具类

package com.mycode.util; import java.nio.charset.Charset; import org.apache.commons.codec.binary.Base64; /** Base64 工具类 @author lz */ public class Base64Utils { private static final Charset DEFAUL...

weixin_40256979的博客 3648

代码复现3—VLN-CE

运行训练完后在 data文件下会自动生成一个“checkpoints”文件,文件下包含任务文件“seq2seq”,该文件下会包括训练出来的权重和评估结果。数据集下载完后路径提取:data/scene_datasets/mp3d/{scene}/{scene}.glb。注意这里下载的数据集并不是所有的matterport3d,只需要一部分,包含90个场景,大小压缩后约16G。在“eval”时,会在data文件下生成videos文件,里面存放的是可视化的轨迹视频。

qq_44100524的博客 3201

Base64Utils加密,解密工具类

写一个Base64Utils工具类: import org.springframework.util.Base64Utils; public class Base64Util { /** * BASE64解密 * * @param key * @return * @throws Exception */ publi...

小敷的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

base64工具类

package util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.Date; import org.apache...

图图小淘气的博客 1033

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Base64工具类,Base64Utils

import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * Created by Administrator on 2017/11/22 0022. */ public class Base64Utils { public static String encode

fanblog的博客 7352

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JAVA base64 工具类

import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.SortedMap; public class Base64Util { private static final c...

默默不代表沉默 2539

base64转为multipartFile工具类

package com.taiji.agriculturalproductplatform.cms.controller; import org.springframework.web.multipart.MultipartFile; import sun.misc.BASE64Decoder; import java.io.*; /** * base64转为multipartFile...

qq_32898041的博客 3020

java图片转Base64工具类

import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import ja...

落地 1550

Java中BASE64加解密的工具类

package me.xueyao.encryption; import java.io.UnsupportedEncodingException; /** * BASE64加解密工具类 * * @Author: zkx * @date:2019年5月20日 下午5:05:30 * */ class Base64Utils { private static char[] base64EncodeChars = new char[] { 'A', 'B', 'C', 'D', 'E'

JavaWebEngineer的博客 638

鸿蒙NEXT开发Base64工具类Base64Util(ArkTs)

该代码实现了一个基于HarmonyOS的Base64编解码工具类,提供了Uint8Array与Base64字符串之间的相互转换功能。主要特点包括: 支持异步/同步两种操作方式 提供编码为Uint8Array或字符串的方法(encode/encodeToStr) 提供解码Uint8Array或字符串的方法(decode) 每个方法都支持可选参数配置 通过静态方法封装util.Base64Helper的核心功能 该类适用于需要处理二进制数据Base64编解码的HarmonyOS应用场景,

鸿蒙布道师 1443

对接百度api的工具类:Base64Util,FileUtil,HttpUtil

对接百度api的工具类:Base64Util,FileUtil,HttpUtil package com.baidu.ai.aip.utils; /** * Base64 工具类 */ public class Base64Util { private static final char last2byte = (char) Integer.parseInt("00000011", ...

wy_0830的博客 5776
上一篇: 2017-03-04 idea破解
下一篇: Dubbo负载均衡:最少活跃数(LeastActive)
口德尔
博客等级 码龄14年 3粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值