(Junit单元测试、NIO(异步IO))day19javaSE基础查漏补缺

1.单元测试:单独的测试某一个方法的运行

2.导完是不是可以删除jar包?

不能删除,删除了,类里面就不能导包了

3.注解是一个数据类型

4.点击类的三角,会全部执行,但是不是按顺序运行的

点击模块run all test,里面的所有test方法也会运行。

5.什么测试方法可以直接运行?

1)没有添加@Test注解的方法,不能junit单独运行

2)junit只能运行,public修饰的,没有返回值,没有参数的非静态方法

6.想运行静态等方法怎么办

1)先创建一个可以直接运行的测试方法

2)在里面调用其他方法。

7.Junit相关注解

@Test:可以单独的执行某一个方法
@Before:用来修饰方法,该方法会在每一个测试方法执行之前自动执行一次。
@After:用来修饰方法,该方法会在每一个测试方法执行之后自动执行一次。
@BeforeClass:用来静态修饰方法,该方法会在所有测试方法之前自动执行一次,而且只执行一次。
@AfterClass:用来静态修饰方法,该方法会在所有测试方法之后自动执行一次,而且只执行一次。

注:before不能加在静态方法上

8.测试方法注意事项

1)junit的注意事项:不是所有的方法都能使用junit单元测试运行
1.没有添加@Test注解的方法,不能junit单独运行
2.junit只能运行,public修饰的,没有返回值,没有参数的非静态方法

2)如何运行测试方法

选中方法名 --> 右键 --> Run ‘测试方法名’ 运行选中的测试方法

选中测试类类名 --> 右键 --> Run ‘测试类类名’ 运行测试类中所有测试方法

选中模块名 --> 右键 --> Run ‘All Tests’ 运行模块中的所有测试类的所有测试方法

3)如何查看测试结果

绿色:表示测试通过

红色:表示测试失败,有问题

4)断言,Assert.asserEquals,预判错误就会抛断言异常。

9.同步异步,阻塞非阻塞

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7GWzULDw-1639407035397)(C:\Users\xiu\AppData\Roaming\Typora\typora-user-images\1639360751654.png)]

阻塞:Sever Socket.accpet 和 is.read 也是阻塞的方法。

10.请说出“同步”与“异步”的区别。

同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调用返回,才会进行下一步;而异步则相反,其他任务不需要等待当前调用返回,通常依靠事件、回调等机制来实现任务间次序关系

11.请说出“阻塞”与“非阻塞”的区别。

在进行阻塞操作时,当前线程会处于阻塞状态,无法从事其他任务,只有当条件就绪才能继续,比如ServerSocket新连接建立完毕,或者数据读取、写入操作完成;而非阻塞则是不管IO操作是否结束,直接返回,相应操作在后台继续处理。

12.字符流底层也是用的字节数组,是不是跟bytebuffer,一样啊???

13.请说出Buffer的allocate()与allocateDirect()方法的区别。

在堆中创建缓冲区:allocate(int capacity)

在系统内存创建缓冲区:allocatDirect(int capacity)

在堆中创建缓冲区称为:间接缓冲区,在系统内存创建缓冲区称为:直接缓冲区,间接缓冲区的创建和销毁效率要高于直接缓冲区,间接缓冲区的工作效率要低于直接缓冲区。

14.系统内存比堆内存读取要快嘛?

系统内存和系统交互的快

15.为啥但是放在系统内存中的ByteBuffer我们不能直接使用 ?

因为这是内核的内存,只能由操作系统来使用。

16.ByteBuffer的使用

在这里插入图片描述

ByteBuffer有三个重要的属性:

capacity:ByteBuffer底层其实是一个字节数组,capacity代表数组的长度。
position:表示下一个要操作(读或写)的元素的位置。
limit:在写模式下,limit=capacity,在读模式下,limit代表数组中实际元素的个数。limit:限制多少长度可用。

注意:存满了再存会咋样?

会报错。

17.ByteBuffer 是缓冲区,可用来减少物理磁盘的读写。

18.mark标记,reset:重置position位置到mark。

reset必须配合mark使用。

19.run with coverage的作用?

查看单元测试覆盖度

20.高速缓存,MapTypeBuffer原理。–内存到内存的复制

被读取的文件,和被写入的文件,都会实时映射到内存中

所以就是内存到内存的复制。

21.实时映射,是咋做出来的

看MappedByteBuffer底层原理

22.能把大文件分成 n个小文件再复制不?

可以逻辑分段存储,不可以物理分段。

23.内核空间和用户空间

内核空间 是操作系统 内核代码运行的地方,用户空间 是 用户程序代码运行的地方。当应用进程执行系统调用陷入内核代码中执行时就处于内核态,当应用进程在运行用户代码时就处于用户态。

24.MapperBtyeBuffer写的比被读取文件多了:会报cannot extend file to required size–无法将文件扩展到所需大小

25.请说出Buffer的flip()方法的作用。

Buffer有两种模式,写模式和读模式。在写模式下调用flip()之后,Buffer从写模式变成读模式。

那么limit就设置成了position当前的值(即当前写了多少数据),postion会被置为0,以表示读操作从缓存的头开始读,mark置为-1。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值