- 博客(4)
- 收藏
- 关注
原创 高性能Netty学习_01.Java BIO详解
java BIO编程详解 一、I/O基本模型 Java BIO 同步并阻塞(传统阻塞型), 服务器实现模式为一个连接一个线程, 即客户端有连接请求时服务器端就需要启动一个线程进行处理, 如果这个连接不做任何事情会造成不必要的线程开销 . Java NIO : 同步非阻塞, 服务器实现模式为一个线程处理多个请求(连接), 即客户端发送的连接请求都会注册到多路复用器上, 多路复用器轮询到连接有 I/O 请求就进行处理 Java AIO(NIO.2) : 异步非阻塞, AIO 引入异步通道的概念,
2020-09-20 15:34:34
160
原创 树与图的深度优先遍历和广度优先遍历
1. 树与图的存储 (1).邻接矩阵 解释: 在二维数组中,0表示没有连线,1表示有连线. 通过二维数组,我们可以很快的找到一个顶点和哪些顶点有连线(比如A顶点,只需要遍历第一行即可) 另外,A-A,B-B(也就是顶点到自己的连线),通常使用0表示. 邻接矩阵的问题: 邻接矩阵还有一个比较严重的问题,就是如果图是一个稀疏图 那么矩阵中将存在大量的0,这意味着我们浪费了计算机存储空间来表示根本不存在的边。 (2)邻接表 加入有向边,权值为w // 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k
2020-09-07 13:03:58
356
原创 Java并发编程_原理
1.volatile 原理 在当前的 Java 内存模型下,线程可以把变量保存本地内存(⽐如机器的寄存器)中,⽽不是直接在主存中进⾏读写。这就可能造成⼀个线程在主存中修改了⼀个变量的值,⽽另外⼀个线程还继续使⽤它在寄存器中的变量值的拷⻉,造成数据的不⼀致。而volatile就是用来解决这个问题的,volatile主要作用就是保证可见性和有序性(禁止指令重排序)。 volatile如何保证可见性? 写屏障保证了 写屏障之前对共享变量的改动同步到主存中,读屏障保证了读屏障后,对共享变量的读取是从主存中读取
2020-09-05 21:30:38
496
原创 io多路复用的演进
一次网络通信的流程: 服务端进程: //创建socket int s = socket(AF_INET, SOCK_STREAM, 0); //绑定 bind(s, ...) //监听 listen(s, ...) //接受客户端连接 int c = accept(s, ...) //接收客户端数据 recv(c, ...); //将数据打印出来 printf(...) ················这个时候网卡传来了数据。············· 1.网卡作用? 将网接收到的网络数据写入内存中
2020-09-05 20:33:57
192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人