今天完成了数据库TestMrl的增删改查四个接口的开发,测试。
测试接口getQRcodeandscene
遇到的问题及解决
不知道在mapper中的增删改方法返回值int的值,和含义,在调用方法时也没有定义int来接参,都是直接调用。于是我定义int i,并打印输出,使用postman调用接口方法,debug调试i的值后,得知i只有1和0,两个取值,1代表操作成功,0代表失败,基于此我使用i对我的接口做了异常处理。
有些代码写在mapper.xml文件中,我不习惯使用这种方式,于是在查阅资料和摸索调试后,使用注解的形式整合在mapper接口文件中,而不使用xml文件。
学会了使用@Builder注解,来简化代码。
Buffer
1.每个 Channel 都会对应一个 Buffer;
2.Selector 对应一个线程,一个线程对应多个 Channel(连接);
3.该图反应了有三个 Channel 注册到该 Selector //程序 ;
4.程序切换到哪个 Channel 是由事件决定的,Event 就是一个重要的概念;
5.Selector 会根据不同的事件,在各个通道上切换;
6.Buffer 就是一个内存块,底层是有一个数组;
7.数据的读取写入是通过 Buffer,BIO 中要么是输入流,或者是输出流,不能双向,但是 NIO 的 Buffer 是可以读也可以写,需要 flip 方法切换。 Channel 是双向的,可以返回底层操作系统的 情况,比如 Linux,底层的操作系统通道就是双向的。
一、Buffer分类
定义:缓冲区Buffer在java nio中负责数据的存储,缓冲区Buffer本质就是数组,用于存储不同类型数据的数组,nio提供了一整套读写API。
jdk为java七大基本类型数据都准备了响应的缓冲区(boolean值除外):
上述缓冲区除了ByteBuffer的 功能稍微多点外,因为ByteBuffer是通用的,所以功能会比较多。其他6种的使用方式几乎是一致的。都是通过如下方法获取一个 Buffer对象:
static XxxBuffer allocate(int capacity) : 创建一个容量为capacity 的 XxxBuffer 对象
二、缓冲区的基本属性
Buffer 中的重要概念:
容量 (capacity) :表示 Buffer 最大数据容量,缓冲区容量不能为负,并且创建后不能更改。
限制 (limit) :第一个不应该读取的数据的索引,即位于 limit 后的数据不可读。缓冲区的限制不能为负,并且不能大于其容量。
位置 (position):下一个要读取或写入的数据的索引。缓冲区的位置不能为负,并且不能大于其限制
标记 (mark) 与重置 (reset) :标记是一个索引,通过 Buffer 中的 mark() 方法指定 Buffer 中一个特定的 position,之后可以通过调用 reset() 方法恢复到这个 position.
标记 、 位置 、 限制 、 容量遵守以下不变式: 0 <= mark <= position <= limit <= capacity
缓冲区的基本属性:
Buffer有分读模式和写模式,其实质是由limit值和position值决定的。这种模式没有特定的死规定。
Buffer 的常用方法:
缓冲区的数据操作:
Buffer 所有子类提供了两个用于数据操作的方法:get() 与 put() 方法
获取 Buffer 中的数据
get() :读取单个字节
get(byte[] dst):批量读取多个字节到 dst 中
get(int index):读取指定索引位置的字节(不会移动 position)
放入数据到 Buffer 中
put(byte b):将给定单个字节写入缓冲区的当前位置
put(byte[] src):将 src 中的字节写入缓冲区的当前位置
put(int index, byte b):将指定字节写入缓冲区的索引位置(不会移动 position)