Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
thrunder liu
llthunder-netty
提交
a65f9654
L
llthunder-netty
项目概览
thrunder liu
/
llthunder-netty
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
llthunder-netty
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a65f9654
编写于
9月 10, 2020
作者:
L
liulei06
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
buffer状态位分析
buffer分片示例
上级
14e3bfee
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
86 addition
and
2 deletion
+86
-2
src/main/java/com/llthunder/netty/nio/buffer/BufferDemo.java
src/main/java/com/llthunder/netty/nio/buffer/BufferDemo.java
+47
-0
src/main/java/com/llthunder/netty/nio/buffer/BufferSliceDemo.java
.../java/com/llthunder/netty/nio/buffer/BufferSliceDemo.java
+33
-0
src/main/java/com/llthunder/netty/nio/buffer/IntBufferDemo.java
...in/java/com/llthunder/netty/nio/buffer/IntBufferDemo.java
+5
-2
src/main/resources/BufferDemoText.text
src/main/resources/BufferDemoText.text
+1
-0
未找到文件。
src/main/java/com/llthunder/netty/nio/buffer/BufferDemo.java
0 → 100644
浏览文件 @
a65f9654
package
com.llthunder.netty.nio.buffer
;
import
com.sun.org.apache.bcel.internal.util.ClassPath
;
import
java.io.*
;
import
java.nio.Buffer
;
import
java.nio.ByteBuffer
;
import
java.nio.channels.FileChannel
;
/**
* buffer基本示例:演示position/limit/capacity的变化
*/
public
class
BufferDemo
{
public
static
void
main
(
String
[]
args
)
throws
IOException
{
//读取文件流,此处操作时I/O操作
String
fileUrl
=
BufferDemo
.
class
.
getClassLoader
().
getResource
(
"BufferDemoText.text"
).
getFile
();
FileInputStream
inputStream
=
new
FileInputStream
(
fileUrl
);
FileChannel
inputChannel
=
inputStream
.
getChannel
();
//创建一个大小为10的缓冲区
ByteBuffer
byteBuffer
=
ByteBuffer
.
allocate
(
100
);
out
(
"初始化"
,
byteBuffer
);
//将数据写入缓冲区
inputChannel
.
read
(
byteBuffer
);
out
(
"调用read"
,
byteBuffer
);
//锁定写入范围
byteBuffer
.
flip
();
out
(
"调用flip"
,
byteBuffer
);
while
(
byteBuffer
.
hasRemaining
()){
byte
b
=
byteBuffer
.
get
();
}
//可以理解对flip的解锁
byteBuffer
.
clear
();
out
(
"调用clear"
,
byteBuffer
);
//关闭流
inputChannel
.
close
();
inputStream
.
close
();
}
public
static
void
out
(
String
step
,
Buffer
buffer
){
System
.
out
.
println
(
step
+
":"
);
System
.
out
.
print
(
"position:"
+
buffer
.
position
()
+
","
);
System
.
out
.
print
(
"limit:"
+
buffer
.
limit
()
+
","
);
System
.
out
.
print
(
"capacity:"
+
buffer
.
capacity
()
+
","
);
System
.
out
.
println
();
System
.
out
.
println
();
}
}
src/main/java/com/llthunder/netty/nio/buffer/BufferSliceDemo.java
0 → 100644
浏览文件 @
a65f9654
package
com.llthunder.netty.nio.buffer
;
import
java.nio.IntBuffer
;
/**
* 缓冲区分片
*/
public
class
BufferSliceDemo
{
public
static
void
main
(
String
[]
args
)
{
IntBuffer
intBuffer
=
IntBuffer
.
allocate
(
10
);
//给缓冲区的数据复制:1-10
for
(
int
i
=
1
;
i
<=
intBuffer
.
capacity
();
i
++){
intBuffer
.
put
(
i
);
}
//分片:创建子缓冲区
intBuffer
.
position
(
3
);
intBuffer
.
limit
(
7
);
IntBuffer
slice
=
intBuffer
.
slice
();
//给子缓冲区中的数据*10
for
(
int
i
=
0
;
i
<
slice
.
capacity
();
i
++){
int
value
=
slice
.
get
(
i
);
slice
.
put
(
i
,
value
*
10
);
}
//重置主buffer的状态位
intBuffer
.
position
(
0
);
intBuffer
.
limit
(
intBuffer
.
capacity
());
//读取buffer中的数据
while
(
intBuffer
.
hasRemaining
()){
System
.
out
.
print
(
intBuffer
.
get
()
+
" "
);
}
}
}
src/main/java/com/llthunder/netty/nio/buffer/Int
b
ufferDemo.java
→
src/main/java/com/llthunder/netty/nio/buffer/Int
B
ufferDemo.java
浏览文件 @
a65f9654
...
...
@@ -2,7 +2,10 @@ package com.llthunder.netty.nio.buffer;
import
java.nio.IntBuffer
;
public
class
IntbufferDemo
{
/**
* buffer操作基本API示例
*/
public
class
IntBufferDemo
{
public
static
void
main
(
String
[]
args
)
{
//buffer中共有3个属性
...
...
@@ -20,7 +23,7 @@ public class IntbufferDemo {
while
(
intBuffer
.
hasRemaining
()){
//读取缓冲区当前position位置的数据,知道position=limit
int
j
=
intBuffer
.
get
();
System
.
out
.
print
ln
(
j
);
System
.
out
.
print
(
j
+
" "
);
}
}
}
src/main/resources/BufferDemoText.text
0 → 100644
浏览文件 @
a65f9654
buffer基本示例:演示position/limit/capacity的变化
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录