StringUtil

简介: StringUtil

长String接收处理
1 背景
String内部是以char数组的形式存储,数组的长度是int类型,那么String允许的最大长度就是Integer.MAX_VALUE了。又由于java中的字符是以16位存储的,因此大概需要4GB的内存才能存储最大长度的字符串。不过这仅仅是对字符串变量而言,
如果是字符串字面量(string literals),如“abc"、"1a2b"之类写在代码中的字符串literals,那么允许的最大长度取决于字符串在常量池中的存储大小,也就是字符串在class格式文件中的存储格式:
Java
运行代码
复制代码
1
2
3
4
5
CONSTANT_Utf8_info {
u1 tag;
u2 length;
u1 bytes[length];
}
理论上允许的string literal的最大长度是2^16-1=65535。然而实际测试表明,允许的最大长度仅为65534,超过就编译错误了。
2 问题描述
问题的关键就在于,不管从Http还是RPC等协议中,我们都没办法直接用字符串字面量去直接接收,即:
String result = **,因为这样会直接报错:常量字符串过长
所以需要将数据进行分组处理
3 解决方案
Java
运行代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private String getOutOfMaxLengthStr() {

StringBuilder sb = new StringBuilder();
sb.append("65535长度字符串");
sb.append("65578长度字符串");

json.put("test", sb.toString());

// 总字符串长度
int length = json.get("test").toString().length();

// 整数组
int size = length / 65534;

// 最后一组起始脚标
int lastLength = (65534 * size);

// 分组追加
StringBuilder sbuffer = new StringBuilder();
for (int i = 0; i < size; i++) {
    String str = json.get("test").toString().substring(65534 * i, 65534 * (i + 1));
    sbuffer.append(str);
}

// 最后一组
String lastStr = json.get("test").toString().substring(lastLength, length);
sbuffer.append(lastStr);

return sbuffer.toString();

}

相关文章
|
API
code: 400, value is mandatory for this action
code: 400, value is mandatory for this action
4607 1
|
安全 项目管理 开发工具
阿里云Code已升级为新版Codeup,更大容量、更多功能还免费的新版Codeup真香
阿里云Code(https://code.aliyun.com/)已经升级为新版代码管理平台Codeup,更大容量、更高性能、更多功能的新版Codeup更适合企业开发者使用。
7803 0
阿里云Code已升级为新版Codeup,更大容量、更多功能还免费的新版Codeup真香
|
8月前
|
自然语言处理 前端开发 语音技术
《虚拟即真实:数字人驱动技术在React Native社交中的涅槃》
本文探讨了React Native与数字人驱动技术结合在社交应用中塑造智能客服与虚拟主播自然交互的可能性。React Native作为跨平台开发框架,具备高效开发、丰富组件和强大社区支持的优势,为社交应用提供了流畅体验。数字人技术通过计算机视觉、语音识别和自然语言处理等实现逼真互动,使虚拟形象能实时响应用户表情与动作。两者融合可打造个性化、沉浸式的交互体验,例如智能客服能根据用户情绪调整回应,虚拟主播则通过实时互动提升直播效果,显著提高用户满意度和应用活跃度。
191 14
|
10月前
|
缓存 Java
线程池初始化严禁使用Executors
线程池初始化严禁使用Executors
|
10月前
|
Java
websocket同步
websocket同步
|
10月前
|
Dubbo Java 应用服务中间件
|
10月前
|
负载均衡 算法 Nacos
服务注册与发现流程
服务注册与发现流程
常用工具类-StringUtils
StringUtils 是 Apache Commons Lang 库中的一个非常有用的工具类,它提供了许多操作 String 的静态方法。
|
10月前
|
XML Java 数据格式
HUTOOL-Word生成-Word07Writer
HUTOOL-Word生成-Word07Writer
|
10月前
|
存储 Java
超长String接收处理
超长String接收处理