- 博客(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 120
原创 树与图的深度优先遍历和广度优先遍历
1. 树与图的存储(1).邻接矩阵解释:在二维数组中,0表示没有连线,1表示有连线.通过二维数组,我们可以很快的找到一个顶点和哪些顶点有连线(比如A顶点,只需要遍历第一行即可)另外,A-A,B-B(也就是顶点到自己的连线),通常使用0表示.邻接矩阵的问题:邻接矩阵还有一个比较严重的问题,就是如果图是一个稀疏图那么矩阵中将存在大量的0,这意味着我们浪费了计算机存储空间来表示根本不存在的边。(2)邻接表加入有向边,权值为w// 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k
2020-09-07 13:03:58 326
原创 Java并发编程_原理
1.volatile 原理在当前的 Java 内存模型下,线程可以把变量保存本地内存(⽐如机器的寄存器)中,⽽不是直接在主存中进⾏读写。这就可能造成⼀个线程在主存中修改了⼀个变量的值,⽽另外⼀个线程还继续使⽤它在寄存器中的变量值的拷⻉,造成数据的不⼀致。而volatile就是用来解决这个问题的,volatile主要作用就是保证可见性和有序性(禁止指令重排序)。volatile如何保证可见性?写屏障保证了 写屏障之前对共享变量的改动同步到主存中,读屏障保证了读屏障后,对共享变量的读取是从主存中读取
2020-09-05 21:30:38 455
原创 io多路复用的演进
一次网络通信的流程:服务端进程://创建socketint 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 163
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人