java
文章平均质量分 76
platypus_ding
这个作者很懒,什么都没留下…
展开
-
记一次springmvc响应string-json被转义斜杠问题
排查项目响应sting类型的json数据,最终的数据被转义了原创 2022-09-19 11:40:16 · 2917 阅读 · 1 评论 -
零拷贝
NIO与零拷贝零拷贝基本介绍零拷贝是网络编程 的关键,很多性能优化都离不开在java 程序中,常用的零拷贝有mmap(内存映射) 和 sendFile,那么,他们在OS李,到底是怎样一个设计? 我们分析mmap和sendFile这两个零拷贝另外我们看一下NIO中如何使用零拷贝传统io数据读写java传统IO和网络编程的一段代码 File file = new File("test.txt"); RandomAccessFile raf = new Rand原创 2021-04-05 12:09:45 · 106 阅读 · 1 评论 -
NIO网络编程简单应用实例
实例要求编写一个NIO群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞)实现多人群聊服务器端: 可以检测用户上线,离线,并实现消息转发功能客户端: 通过channel可以无阻塞发送消息给其他所有用户,同时可以接受其他用户发送的消息(有服务器转发得到)目的: 进一步理解NIO非阻塞网络编程机制服务器端代码:package com.ding.nio.groupchat;import java.io.IOException;import java.net.InetSocketAdd原创 2021-03-13 15:33:33 · 128 阅读 · 0 评论 -
selector选择器
基本介绍java的NIO,用非阻塞的IO方式,可以用一个线程,处理多个客户端连接,就会使用到selector(选择器)selector能够检测多个注册的通道上是否有事件的发生(注意: 多个Channel以事件的方式可以注册到同一个selector), 如果有事件发生,便获取事件然后针对每个事件进行相应的处理. 这样就可以只用一个单线程去管理多个通道,也就是管理多个连接和请求只有在连接真正有读写事件发生时, 才会进行读写, 就大大地减少了系统开销, 并且不必为每一个连接都创建线程,不用去维护多个线程原创 2021-03-07 17:48:25 · 287 阅读 · 0 评论 -
NIO中的channel
基本介绍NIO的通道类似于流, 但有如下区别:通道可以同时进行读写,而流只能读或者写通道可以实现异步读写数据通道可以从缓冲读数据, 也可写数据到缓冲#mermaid-svg-YcQzCIoLu5KRFE4h .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-YcQzCIoLu5KRFE4h .原创 2021-03-07 15:13:26 · 265 阅读 · 0 评论 -
NIO中的Buffer
缓冲区(Buffer)缓冲区(buffer): 缓冲本质上是一个可以读写数据的内存块,可以理解成是一个容器对象(含数组),该对象提供了一组方法,可以更轻松的使用内存块,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况.channel提供从文件,网络读取数据渠道,但是读取或写入的数据都必须经由buffer,如图:Buffer类及其子类在NIO中,Buffer是一个顶层父类,他是一个抽象类,类的层级关系图IntBuffer,存储整数数据到缓冲区FloatBuffer,存储小数数据到缓原创 2021-03-06 18:46:11 · 197 阅读 · 1 评论 -
NIO与BIO
netty介绍netty时jboos提供的java开源项目netty是一个异步的基于事件驱动的网络应用框架,用以开发高性能,高可靠的网络IO程序netty本质是NIO框架,适用于服务器通信相关多种应用场景netty是什么netty应用场景互联网行业 rpc框架中的应用,例如dubbo游戏中的应用 地图服务器中的使用,进行高性能通讯大数据领域 hadoop的高性能通讯和序列化组件(AVRO实现数据文件的共享)IO模型的简介I/O模型简单理解: 就是用什么样的通道进行数据的发原创 2021-03-06 18:29:19 · 127 阅读 · 0 评论