后端开发
文章平均质量分 89
后端开发学习及归纳
yangwen-bo
这个作者很懒,什么都没留下…
展开
-
Netty学习笔记(五)Netty 异步模型,简单实现http服务
Netty学习笔记(五)Netty 异步模型,简单实现http服务Netty handle异步处理当处理工作handler中有特别耗时间的任务,如果继续,则会造成任务的阻塞可以使用异步处理,将任务提交到该channel对应的NioEventLoop的taskQueue任务执行队列中去异步执行解决思路1:用户程序自定义的普通任务(可加多个,按添加顺序依次执行(在同一个线程中))解决思路2:用户自定义定时提交任务,该任务是添加到scheduleTaskQueue中执行的解决思路3:非当前原创 2021-04-23 10:58:51 · 895 阅读 · 0 评论 -
Netty学习笔记(四)Netty概述及传统阻塞 IO 、Reactor 模式线程模型
原生NIO存在的问题1.NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。2.需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。3.开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。4.JDK NIO 的 B原创 2020-09-27 10:06:08 · 503 阅读 · 0 评论 -
Netty学习笔记(三)零拷贝原理剖析及其应用实例
Netty学习笔记(三)零拷贝原理剖析及其应用实例传统网络io通信(读写)过程先来理解当我们想从某台机器将一份数据(比如一个文件)通过网络传输到另外一台机器(网络服务器将存储在文件中的数据通过网络传输到客户端)时,传统网络io通信(读写)过程:File file = new File("test.txt");RandomAccessFile raf = new RandomAccessFile(file, "rw");byte[] arr = new byte[(int) file.length(原创 2020-09-16 17:09:34 · 354 阅读 · 0 评论 -
Netty学习笔记(二)java NIO Buffer、Channel、Selector学习及使用,搭建nio群聊系统
缓冲区(Buffer)缓冲区(Buffer):缓冲区本质上是一个可以读写数据的内存块,可以理解成是一个容器对象(含数组),该对象提供了一组方法,可以更轻松地使用内存块,,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况。Channel 提供从文件、网络读取数据的渠道,但是读取或写入的数据都必须经由 Buffer。在NIO中,Buffer是一个顶级父类,它是一个抽象类,类的层级关系如图:(每个buffer实现类中都有对应数据类型的数组用来存储数据(所以buffer实际上数据是存在该数组中的)原创 2020-09-15 10:29:47 · 203 阅读 · 0 评论 -
Netty学习系列(一)初步了解NIO和BIO及两者的区别,同步异步
Netty 及其应用场景Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github上的独立项目。Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。应用场景Netty主要针对在TCP协议下,面向Clients端的高并发应用,或者Peer-to-Peer场景下的大量数据持续传输的应用。Netty本质是一个NIO框架,适用于服务器通讯相关的多种应用场景要透彻理解Netty , 需要先学习 NIO , 这样我们才能阅读 Netty原创 2020-08-26 11:26:26 · 650 阅读 · 0 评论 -
ForkJoin使用,模拟数据库查询操作List
ForkJoin使用,模拟数据库查询操作手上的工作需要实现从数据库中查询大量的数据,然后将数据整合进行分页,于是了解使用ForkJoin框架,进行优化ForkJoin框架从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。这种思想和MapReduce很像(input --> split --> map --> reduce --> output)主要有两步:第一、任原创 2020-06-11 11:56:19 · 2640 阅读 · 0 评论