jjzjj

bytebuffer

全部标签

java - 以多种方式发送数据,具体取决于您希望如何发送

我有一堆键和值,我想通过将它们打包到一个字节数组中来发送到我们的消息队列。我会将所有键和值组成一个字节数组,这些键和值应始终小于50K,然后发送到我们的消息队列。数据包类:publicfinalclassPacketimplementsCloseable{privatestaticfinalintMAX_SIZE=50000;privatestaticfinalintHEADER_SIZE=36;privatefinalbytedataCenter;privatefinalbyterecordVersion;privatefinallongaddress;privatefinallon

java - Java中的内存映射文件

我一直在尝试编写一些必须执行大量I/O的非常快速的Java代码。我正在使用返回ByteBuffer的内存映射文件:publicstaticByteBufferbyteBufferForFile(Stringfname){FileChannelvectorChannel;ByteBuffervector;try{vectorChannel=newFileInputStream(fname).getChannel();}catch(FileNotFoundExceptione1){e1.printStackTrace();returnnull;}try{vector=vectorChann

java - 将 32 位无符号整数(大端)转换为长整数并返回

我有一个byte[4],它包含一个32位无符号整数(按大端顺序),我需要将它转换为long(因为int不能保存无符号数)。此外,我该如何反之(即从包含32位无符号整数的long到byte[4])? 最佳答案 听起来像是ByteBuffer的作品.有点像publicstaticvoidmain(String[]args){byte[]payload=toArray(-1991249);intnumber=fromArray(payload);System.out.println(number);}publicstaticintfrom

c# - 字节集合基于类似于 ByteBuffer from java

我需要一个类似于Java中的ByteBuffer的C#实现。感兴趣的方法-.remaining()-返回当前位置和限制之间的元素数。-。大批()-。清除()-.put(byte[],int,int)我开始使用MemoryStream..但没有clear(),并且有很多即兴创作另外,我在Koders上找到了一个c#实现:http://www.koders.com/csharp/fid2F8CB1B540E646746D3ADCB2B0AC867A0A8DCB06.aspx?s=socket#L2..我将使用它..但也许你们知道一些更好的东西 最佳答案

扩展 java.nio.ByteBuffer 的 Java 循环字节缓冲区

我在SO和其他地方看到的每个Java循环字节缓冲区实现都没有扩展java.nio.ByteBuffer,这对我来说是与SocketChannel一起使用所必需的。有谁知道扩展ByteBuffer的开源实现。我尝试自己编写,但当我意识到位置和剩余功能是最终的并且我打算覆盖它们以调整头部并防止缓冲区溢出异常时卡住了。在通过套接字channel发送5000条消息时,每个消息都需要我将内容复制到线性缓冲区的头部,这会为每条消息增加大约450毫秒或90微秒(其中包含10个数据包,因此每个数据包9微秒)。现在我能想到的唯一可行的方法是重写每个方法并重写所有内容。有什么想法吗?

java - 关于何时应该将直接缓冲区与 Java NIO 一起用于网络 I/O 的简单规则?

具有以简单直接的方式解释复杂事物的天赋的人可以解决这个问题吗?在使用JavaNIO进行网络I/O时,何时应该使用直接ByteBuffers与常规ByteBuffers以获得最佳性能?例如:我应该读入堆缓冲区并从那里解析它,执行多次get()(逐字节)还是应该将它读入直接缓冲区并从直接缓冲区解析? 最佳答案 ToacquirethebestperformancewhenshouldIusedirectByteBuffersversusregularByteBufferswhendoingnetworkI/OwithJavaNIO?直接

java - 从 ReadOnly java.nio.ByteBuffer 中提取字符串

如何从只读的ByteBuffer中提取字符串?我不能使用ByteBuffer.array()方法,因为它会抛出ReadOnlyException。我是否必须使用ByteBuffer.get(arr[])并将其复制出来以读取数据并创建一个字符串?只为了阅读而必须创建一个副本似乎很浪费。 最佳答案 您应该能够使用Charset.decode(ByteBuffer)这会将ByteBuffer转换为CharBuffer。然后只需调用toString()即可。示例代码:importjava.nio.*;importjava.nio.chars

java - 如何在 Java 中访问字节数组作为短裤

我有一个大小为n的字节数组,它实际上表示一个大小为n/2的短数组。在将数组写入磁盘文件之前,我需要通过添加存储在另一个短数组中的偏差值来调整值。在C++中,我只是将字节数组的地址分配给短数组的指针,并将其强制转换为short并使用指针算法或使用联合。如何在Java中完成此操作-顺便说一句,我对Java还很陌生。 最佳答案 您可以自己动手操作,但我建议您查看ByteBuffer和ShortBuffer类。byte[]arr=...ByteBufferbb=ByteBuffer.wrap(arr);//Wrapperaroundunde

java - 我如何继承 ByteBuffer?

所以JavaNIO架构师并没有制作ByteBuffer接口(interface),而是制作了一个ByteBufferclass,它不是最终类,但它没有包公共(public)构造函数,因此不能在其包之外进行子类化。呸。:P我有一个程序在很多地方使用内存映射文件字节缓冲区(通过FileChannel.map()获得),我正试图追踪一个令人讨厌的错误,其中有问题的文件保持打开状态,因为至少有一个ByteBuffer没有被释放到垃圾回收。我喜欢创建一个看起来像字节缓冲区的InstrumentedByteBuffer类,但装饰了一个常规的ByteBuffer(或其子类,例如MappedByteB

Java : DataInputStream replacement for endianness

下面是我的代码,它替换了DataInputStream以包装InputStream,但除了读取大端类型的常规方法之外,还提供了额外的方法来读取小端数据类型。如果您愿意,请随意使用它。我有以下几点保留意见。注意不改变功能的方法(读取大端类型的函数)。我无法将DataInputStream实现为基类并使用其方法,如read()、readInt()、readChar()等?我的类层次结构在这里似乎有点奇怪。这样合适吗?像readUTF()或readLine()这样的其他类型是否需要小端版本?或者这对特定程序来说是主观的?Java是如何存储boolean类型的?这也是字节顺序的主观因素吗?感谢