本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- xiangjie88
- zysnba
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sichunli_030
- sam123456gz
- arpenker
- tanling8334
- 龙儿筝
- kaizi1992
- gaojingsong
- xpenxpen
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
- kingwell.leng
最新文章列表
Apache MINA 1.x 中的ByteBuffer对象使用的问题
最近在为公司做一个消息中心的项目,项目中使用了Apache的MINA 1.7的版本,为消息中心做通讯接口。
[size=13px; line-height: 20px; ][size=x-small;] Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性 ...
Java中的缓冲区(直接缓冲区、非直接缓冲区等)
如果将同步I/O方式下的数据传输比做数据传输的零星方式(这里的零星是指在数据传输的过程中是以零星的字节方式进行的),那么就可以将非阻塞I/O方式下的数据传输比做数据传输的集装箱方式(在字节和低层数据传输之间,多了一层缓冲区,因此,可以将缓冲区看做是装载字节的集装箱)。
如果将同步I/O方式下的数据传输比做数据传输的零星方式(这里的零星是指在数据传输的过程中是以零星的字节方式进行的),那么就可以 ...
SNMP 修改SNMP4J消息内容 之TCP发送模式
之前写了一篇关于 SNMP 修改SNMP4J消息内容 的博客,但是当时只是针对UDP的,后来应用到TCP上后发现有一些问题,现在说一下解决方法
上一篇连接地址:http://cuisuqiang.iteye.com/blog/1584391
使用TCP发送时,由于Socket不知道数据流的长度,所以要增加数据包长度到包上,这才是真正的需求,是我上次理解错了
增加头信息与上一次一样, ...
SNMP 修改SNMP4J消息内容
我记得上次就有人说我这种做法
上次是因为我要在SNMP4J协议消息中增加两个特殊的OID来做为参数传递,遭到一些人质疑,认为是无用的
其实别的不说,我只想说一句:业务要求你这样你能怎么得,别跟我扯技术
我预计这次又得早质疑了,不过质疑你们就质疑吧,我们这次要求就是这样的
因为我们和远端机器调用时他们需要做数据流截取,所以我们必须打包一下我们这个SNMP协议包的大小
就是说这次 ...
Cassandra重启报错 java.lang.ClassCastException
通过CQL创建了若干表格,比如:
CREATE TABLE fileindex(
recid varchar,
agentno varchar,
customerno varchar,
recfile varchar,
createtime varchar,
PRIMARY KEY(recid)
);
CREATE INDEX ON fileindex(agentno);
C ...
Java 源码阅读系列(一) ByteBuffer.equals
首先看下ByteBuffer里面的equals方式实现源码,如下:
public boolean equals(Object ob) {
if (!(ob instanceof ByteBuffer))
return false;
ByteBuffer that = (ByteBuffer)ob;
if (this.remaining() != that.remaining())
...
NIO中缓冲区的API介绍
[转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ]
在java NIO中, 通道是IO传输发生时数据通过的入口, 而缓冲区是数据的来源或目标.
Buffer是java NIO中定义的所有缓冲区类的基类.
Buffer的属性
1. 容量(capacity)
缓冲区能够容纳的数据元素的最大数量, capacity在创建缓冲区时指定, 之后无法改变.
2. 上界(limit ...
NIO - Buffer
Buffer 类是 java.nio 的构造基础。一个 Buffer 对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里,数据可被存储并在之后用于检索。缓冲区可以被写满或释放。对于每个非布尔原始数据类型都有一个缓冲区类,即 Buffer 的子类有:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、Lo ...
ThreadLocal,静态变量,实例变量,局部变量的线程安全,回复:ByteBuffer 到底怎么用?网络编程中一点总结!
之前都是业务层次开发,现在公司进行的网络编程,一下子要了解太多java底层的东西并进行应用,我现在边学习边应用。由于知识能力有限,在上次发博客时出现了一个小小的纰漏,而这个纰漏被细心的博友发现了。
首先感谢你的关注,其次非常感谢你的建议和批评。其实上次博客中说道要线程安全的取得缓冲变量确实有安全取得某变量的意思,不过那个例子只是一个讲解Socket应用的小示例。如果真的要保证变量安全,使用静态 ...
ByteBuffer 到底怎么用?网络编程中一点总结!
做tcp网络编程,要解析一批批的数据,可是数据是通过Socket连接的InputStream一次次读取的,读取到的不是需要转换的对象,而是要直接根据字节流和协议来生成自己的数据对象。
按照之前的编程思维,总是请求然后响应,当然Socket也是请求和响应,不过与单纯的请求响应是不同的。
这里Socket连接往往是要保持住的,也就是长连接,然后设置一个缓冲区,网络流不断的追加到缓冲区。然后后台去 ...
从ByteBuffer中获取基本类型
我们可以从ByteBuffer中产生出不同类型值的方法
public class Test{
public static final int BSIZE=1024;
public static void main()
{
ByteBuffer bb=ByteBuffer.allocate(BSIZE);
in ...
NIO基础知识2
asCharBuffer()一次可以输出缓冲区中信息。使用方法为:
ByteBuffer buffer=ByteBuffer.allocate(1024);
System.out.println(buffer.asCharBuffer());
//这个地方注意:普通缓冲器容纳的是普通字节,假如把它们转换成字符,要在输入他们的时候进行编码,代码如下:
public class B ...
Java NIO基础知识
java NIO比普通IO访问速度有较大的提高,原因是新IO所使用的结构接近于操作系统执行IO的方式:通道和缓冲器。唯一直接与通道交互的缓冲期是ByteBuffer.
参考下面的例子:
public class GetChannel {
private static final int BSIZE=1024;
public static void main(String[] args) ...
NIO中的ByteBuffer
关于Java中的NIO,网上很多资料,关于ByteBuffer类也有很多内容,这里要说的是clear、flip、rewind三个方法的区别和对应缓冲区的状态。
ByteBuffer类没有构造方法,只能通过ByteBuffer.allocate(int)来分配一个新的字节缓冲区
下面我用图片展示不同状态下缓冲区,图中管道即操作缓冲区的IO流
这里需要明白以下几个术语的含义:
缓冲区容量:capaci ...
JavaNio 文件按行读写
package alex;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.n ...
ByteBuffer的position、flip和clear
position测试:
ByteBuffer bb = ByteBuffer.allocate(10);
System.out.println("起始position: "+bb.position());
bb.put(5, (byte)15);
System.out.println("指定位置put数据之后的position: "+bb.positio ...
ByteBuffer的allocate和allocateDirect
在Java中当我们要对数据进行更底层的操作时,通常是操作数据的字节(byte)形式,这时常常会用到ByteBuffer这样一个类。ByteBuffer提供了两种静态实例方式:
public static ByteBuffer allocate(int capacity)
public static ByteBuffer allocateDirect(int capacity)
为什么要提供两种方式 ...