大家好,我是大明哥. 上篇文章我们分析了高性能 IO模型Reactor模式,了解了什么是Reactor 模式以及它的三种常见的模式,这篇文章,大明再介绍另外一种高性能IO模型: Proactor. 为什么是 Proactor 模式 上篇文章 [死磕 NIO]- Reactor 模式就一定意味着高性能吗?大明哥分析了 Reactor模式,我们知道Reactor性能确实非常高,适合高并发场景,但是它依然存在一个问题,那就是它是 同步IO.同步IO会有一个什么问题呢?同步IO需要线程自己等待内核准备好…
大家好,我是大明哥,我又来了. 为什么是 Reactor 一般所有的网络服务,一般分为如下几个步骤: 读请求(read request) 读解析(read decode) 处理程序(process service) 应答编码 (encode reply) 发送应答(send reply) 接下来,大明哥就来分析解决这个问题的最佳实践. 单线程模式 对于很多小伙伴来说,最简单,最传统的方式就是一个方法来处理所有的请求,这种实现方式最简单,也是最保险的方式. 这种方式实现起来虽然简单,但是性能不行,…
大家好,我是大明哥,今天我们来看看 Buffer. 上面几篇文章详细介绍了 IO 相关的一些基本概念,如阻塞.非阻塞.同步.异步的区别,Reactor 模式.Proactor 模式.以下是这几篇文章的链接,有兴趣的同学可以阅读下: [死磕NIO]- 阻塞.非阻塞.同步.异步,傻傻分不清楚 [死磕NIO]- 阻塞IO,非阻塞IO,IO复用,信号驱动IO,异步IO,这你真的分的清楚吗? [死磕 NIO]- Reactor 模式就一定意味着高性能吗? [死磕 NIO]- Proactor模式是什么?很…
万事从最基本的开始. 要想完全掌握 NIO,并不是掌握上面文章([死磕NIO]- NIO基础详解)中的三大组件就可以了,我们还需要掌握一些基本概念,如什么是 IO,5 种IO模型的区别,什么是阻塞&非阻塞等等,只有掌握了这些基本概念,我们对NIO才能理解得更加得心应手. 这篇文章我们就从阻塞&非阻塞,同步&异步说起. 同步与异步 什么是同步与异步呢?百度百科是这样定义的: 同步指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系. 异步与同步相对(这解释让我无言相对) 所以…
通过上篇文章([死磕NIO]- 阻塞.非阻塞.同步.异步,傻傻分不清楚),我想你应该能够区分了什么是阻塞.非阻塞.异步.非异步了,这篇文章我们来彻底弄清楚什么是阻塞IO,非阻塞IO,IO复用,信号驱动IO,异步IO. 要想彻底弄清楚这五种IO模型,我们需要先弄清楚几个基本概念. 基本概念 什么是IO 什么是IO?维基百科上面是这样解释的: I/O(英语:Input/Output),即输入/输出,通常指数据在存储器(内部和外部)或其他周边设备之间的输入和输出,是信息处理系统(例如计算机)与外部世界…
大家好,我是大明哥,一个专注于[死磕 Java]系列创作的程序员. [死磕 Java ]系列为作者「chenssy」 倾情打造的 Java 系列文章,深入分析 Java 相关技术核心原理及源码 死磕 Java :https://www.cmsblogs.com/group/1420041599311810560 上篇文章([死磕 NIO]- 深入分析Channel和FileChannel)已经详细介绍了 FileChannel的核心原理及相关API,了解了FileChannel是用来读写和映射一…
MySQL 等数据库客户端软件市面上非常多了,别的栈长就不介绍了, 其实 IntelliJ IDEA 自带的数据库工具就很牛逼,不信你继续往下看. 本文以 IntelliJ IDEA/ Mac 版本作为演示,其他版本的应该也差距不大! 1.打开数据库工具面板 如果 IDEA 主页没有看到 Database 面板,可以在 View 菜单中依次调出 Database 菜单打开数据库工具面板. 2.创建数据源 打开 Database 数据库面板后,点击 + 号根据提示选择对应的数据库创建一个数据源.…
大家好,我是大明哥,一个专注于[死磕 Java]系列创作的程序员. [死磕 Java ]系列为作者「chenssy」 倾情打造的 Java 系列文章,深入分析 Java 相关技术核心原理及源码. 死磕 Java :https://www.cmsblogs.com/group/1420041599311810560 前两篇文章我们分析了 Channel 及 FileChannel,这篇文章我们探究 SocketChannel的核心原理,毕竟下一个系列就是 [死磕 Netty]了. 聊聊Socket…
Netty 是基于Java NIO 封装的网络通讯框架,只有充分理解了 Java NIO 才能理解好Netty的底层设计.Java NIO 由三个核心组件组件: Buffer Channel Selector 缓冲区 Buffer Buffer 是一个数据对象,我们可以把它理解为固定数量的数据的容器,它包含一些要写入或者读出的数据. 在 Java NIO 中,任何时候访问 NIO 中的数据,都需要通过缓冲区(Buffer)进行操作.读取数据时,直接从缓冲区中读取,写入数据时,写入至缓冲区.NIO…
db笔记本 mysql资源 mysql5.1中文参考手册 mysql管理 基于linux使用mysql二进制包安装mysql5.5 mysql client命令行选项 mysqld服务器系统变量和状态变量 mysql SQL服务器模式 mysql 账户管理 mysql日志文件 mysql列类型 mysql数据库操作 mysql创建和删除表 mysql修改表 mysql索引操作 mysql索引详解 mysql select操作 mysql insert操作 mysql load操作 mysql u…