首页 > 其他 > 详细

BIO到NIO,IO零食一箩筐

时间:2020-11-02 20:55:59      阅读:23      评论:0      收藏:0      [点我收藏+]

1.linux编辑文本显示行号

set nu

2.linux程序标准输出流返回值

0输入

1标准输出

2报错输出

===============下面返回值以程序实际运行为准=====================

3(需要开辟)比如new ServerSocket时对内核产生3个系统调用,线程执行的非Java函数socket()方法的返回值是3,代表监听,一个服务的描述

5代表系统调用,一个客户端连接,也是方法返回值

3.linux建立连接命令

nc:建立3次握手进行连接

4.Java对linux底层的IO调用

system.out.println会调用IO,会不断调用内核,在接口压测时会影响测试结果

5.一个Java线程与操作系统线程的一一对应的场景

socket网络编程中,Java通过执行操作系统的clone()方法新建线程

6.内核监听程序的3步

socket()=3    bind(3,8080)  listen(3)

7.程序调用系统内核

接上,

while(true){       

  accept(3) = 5阻塞| 返回 client FD       这里会调用thread  => recv(5   阻塞

  clone()

}

8.BIO的优缺点

优点:每个连接 对应一个线程

缺点:本质时blocking,没办法,必须得多线程,才能支持多客户端交互

9.计组(可不是计算机组成原理)

第一个进入内存的程序时内核kernel(向下管理IO,向上服务app),有且仅有一个,

之后内核会暴露系统调用,如socket(),write(),bind()。(这里开机时内核进入内存时会有实模式、保护模式(程序无法访问内核)两种模式)

(这里有一个函数调用(不复杂,快,因为直接通过函数地址找下一个函数)与系统调用(会中断,较复杂))

直流电流入晶振,输出有规律的电给CPU供电,产生时钟中断,会记录在中断向量表(如0对用一个回调函数cb    1cb   128cb ...),CPU根据中断向量表对程序进行切换

参考:

计组--指令集及其特性(博主表示有点难啃)

https://blog.csdn.net/qq_42182367/article/details/82950703

10.什么叫系统调用

system.out.println会调用write(1,hello)函数,向CPU的寄存器填充:write函数名,参数,执行对应指令+一个序号,int 0x80

这里比如某个app会执行write  函数名  参数  int 0x80,进行系统调用

11.系统调用与中断

系统调用会产生软中断,会触发内核保护模式

12.缓存IO(带buffer的)优点

带buffer的会减少系统调用

参考:

Linux 中直接 I/O 机制的介绍

https://www.ibm.com/developerworks/cn/linux/l-cn-directio/

13.BIO的accept方法响应时间为什么变长

线程特别多的时候  CPU在单位时间内,消费更多的时间去,中断/调度,去进行保护线程/恢复线程

14.常见webserver

apache@httpd进程模型

nginx  NIO epoll    =>   轻量级的

参考:

Apache进程模型分析

https://baijiahao.baidu.com/s?id=1659326572286532468&wfr=spider&for=pc

15.NIO模型

Java的NewIO用到OS Kernel nonbocking

16.man命令是很有用的命令,Linux默认man为英文,我们需要安装中文man-pages

yum install man-pages

17.Java服务端编程设置非阻塞

ServerSocketChannel对象.setConfiguration(true/false);此处JAVA的NIO会调用操作系统的非阻塞

18.NIO下网络编程不再是阻塞点的方法

accept()   read()

19.打印程序下所有线程的执行日志

step1
编写Java类 testSocket.java
step2
javac testSocket.java
step3
strace -ff -o out java testSocket

strace 指令 可以查看 Java代码形成的 底层调用 ,具体是什么

参考:

https://www.bilibili.com/video/BV1ft4y1i7G1?p=18

20.非阻塞优缺点

优点:节省线程

缺点:连接数多时,每次都会所有线程遍历一遍

BIO到NIO,IO零食一箩筐

原文:https://www.cnblogs.com/powerZhangFly/p/13915560.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!