小编Kun*_*nal的帖子

在Java中,以字符形式"构建"和使用字符串的最快方法是什么?

我有一个间歇性地接收数据的Java套接字连接.每次突发接收的数据字节数不同.数据可以或可以不由众所周知的字符(例如CR或LF)终止.每个数据突发的长度是可变的.

我正在尝试从每个数据突发中构建一个字符串.构建一个稍后需要解析的字符串的最快方法(速度,而不是内存)是多少?

我开始使用字节数组来存储传入的字节,然后将它们转换为每个突发的字符串,如下所示:

byte[] message = new byte[1024];
...
message[i] = //byte from socket
i++;
...
String messageStr = new String(message);
...
//parse the string here
Run Code Online (Sandbox Code Playgroud)

这样做的明显缺点是一些突发可能比1024更长.我不想随意创建一个更大的字节数组(如果我的突发更大会怎么样?).

这样做的最佳方式是什么?我应该创建一个StringBuilder对象并追加它()吗?这样我就不必将StringBuilder转换为String(因为前者有我需要的大部分方法).

再次,执行速度是我最关心的问题.

TIA.

java string variables byte

4
推荐指数
2
解决办法
947
查看次数

使用proxool时,是否需要显式关闭每个getConnection()?

我正在编写新的数据库连接代码,并认为我会尝试将proxool作为连接池实现者.

通常,程序员会确保每个DriverManager.getConnection(...)后跟一个connection.close().

但是在使用Proxool时,是否需要关闭?我很困惑,因为:

一个.这里的proxool文档(http://proxool.sourceforge.net/quickStart.html)显示了被调用的close(),

湾 我读到某个地方,proxool添加了关闭钩子,当程序退出时关闭所有连接.

我的程序最关心的是性能(每秒最多200个DB写入),因此我不确定Proxool的getConnection()/ close()将如何影响性能.

我的问题是:

  1. 是否需要close(),还是我可以依靠Proxool关闭我的连接?

  2. 如果我必须每次都明确地调用close(),那么这不会对性能产生负面影响吗?

提前致谢.

java connection pooling proxool

3
推荐指数
1
解决办法
989
查看次数

如何使用Netty在单个端口上编写多协议处理程序?

我是Netty的新手,我想知道当TCP客户端有时发送可变长度的二进制记录(十六进制)时,如何读取/处理传入的TCP数据,有时会发送可变长度的ASCII记录,其中没有一个是由回车符分隔的或换行.

TCP客户端正在发送字节流,如下所示:

  1. 一个二进制字节流,以'$'开头但具有不同的字节数,并且不会被任何字符终止,并且

  2. 一个ASCII字节流,以'('和''结尾'开头,但字节数不同,不会被任何字符终止

两组记录都到达同一个端口.

我如何编写基于Netty的TCP服务器来处理/读取两者?

提前致谢.

注:Kunal

java binary ascii tcp netty

3
推荐指数
1
解决办法
1967
查看次数

标签 统计

java ×3

ascii ×1

binary ×1

byte ×1

connection ×1

netty ×1

pooling ×1

proxool ×1

string ×1

tcp ×1

variables ×1