展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

随笔分类 -  后端

上一页 1 2 3 4 5 6 7 8 9 10 ··· 16 下一页
摘要:1) netty的组件设计:Netty的主要组件有Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipe等 2) ChannelHandler充当了处理入站和出站数据的应用程序逻辑的容器。例如,实现ChannelInboundHandle 阅读全文
posted @ 2022-08-09 16:05 DogLeftover 阅读(78) 评论(0) 推荐(0) 编辑
摘要:简介 1) 客户端可以随机发送Student PoJo/ Worker PoJo 对象到服务器 (通过 Protobuf 编码) 2) 服务端能接收Student PoJo/ Worker PoJo 对象(需要判断是哪种类型),并显示信息(通过 Protobuf 解码) 编写Student.prot 阅读全文
posted @ 2022-08-09 15:01 DogLeftover 阅读(177) 评论(0) 推荐(0) 编辑
摘要:简介 1) 客户端可以发送一个Student PoJo 对象到服务器 (通过 Protobuf 编码) 2) 服务端能接收Student PoJo 对象,并显示信息(通过 Protobuf 解码) 导入依赖 # maven <dependency> <groupId>com.google.proto 阅读全文
posted @ 2022-08-09 14:22 DogLeftover 阅读(70) 评论(0) 推荐(0) 编辑
摘要:简介 1) 编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码 2) codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码 阅读全文
posted @ 2022-08-09 14:20 DogLeftover 阅读(174) 评论(0) 推荐(0) 编辑
摘要:简介 1) Http协议是无状态的, 浏览器和服务器间的请求响应一次,下一次会重新创建连接. 2) 实现基于webSocket的长连接的全双工的交互 3) 改变Http协议多次请求的约束,实现长连接了, 服务器可以发送消息给浏览器 4) 客户端浏览器和服务器端会相互感知,比如服务器关闭了,浏览器会感 阅读全文
posted @ 2022-08-09 13:19 DogLeftover 阅读(44) 评论(0) 推荐(0) 编辑
摘要:1) 编写一个 Netty心跳检测机制案例, 当服务器超过3秒没有读时,就提示读空闲 2) 当服务器超过5秒没有写操作时,就提示写空闲 3) 实现当服务器超过7秒没有读或者写操作时,就提示读写空闲 编写服务端 public class MyServer { public static void ma 阅读全文
posted @ 2022-08-09 11:08 DogLeftover 阅读(15) 评论(0) 推荐(0) 编辑
摘要:编写服务端 public class GroupChatServer { private int port; //监听端口 public GroupChatServer(int port) { this.port = port; } //编写run方法,处理客户端的请求 public void ru 阅读全文
posted @ 2022-08-09 10:23 DogLeftover 阅读(10) 评论(0) 推荐(0) 编辑
摘要:Netty 提供一个专门用来操作缓冲区(即Netty的数据容器)的工具类 常用方法 //通过给定的数据和字符编码返回一个 ByteBuf 对象(类似于 NIO 中的 ByteBuffer 但有区别) public static ByteBuf copiedBuffer(CharSequence st 阅读全文
posted @ 2022-08-09 09:05 DogLeftover 阅读(22) 评论(0) 推荐(0) 编辑
摘要:ChannelHandlerContext 1) 保存 Channel 相关的所有上下文信息,同时关联一个 ChannelHandler 对象 2) 即ChannelHandlerContext 中 包 含 一 个 具 体 的 事 件 处 理 器 ChannelHandler,同 时ChannelH 阅读全文
posted @ 2022-08-08 23:19 DogLeftover 阅读(10) 评论(0) 推荐(0) 编辑
摘要:ChannelPipeline 1) ChannelPipeline 是一个 Handler 的集合,它负责处理和拦截 inbound 或者 outbound 的事件和操作,相当于一个贯穿 Netty 的链。 (也可以这样理解:ChannelPipeline 是 保存 ChannelHandler 阅读全文
posted @ 2022-08-08 23:16 DogLeftover 阅读(79) 评论(0) 推荐(0) 编辑
摘要:Bootstrap、ServerBootstrap 1) Bootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件, Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 阅读全文
posted @ 2022-08-08 17:52 DogLeftover 阅读(26) 评论(0) 推荐(0) 编辑
摘要:之前的案例如下 现在将ChannelInitializer提取出来 编写服务端 public class TestServer { public static void main(String[] args) throws Exception { EventLoopGroup bossGroup = 阅读全文
posted @ 2022-08-08 17:23 DogLeftover 阅读(17) 评论(0) 推荐(0) 编辑
摘要:简介 1) 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的组件在完成后,通过状态、通知和回调来通知调用者。 2) Netty 中的 I/O 操作是异步的,包括 Bind、Write、Connect 等操作会简单的返回一个ChannelFuture。 3) 阅读全文
posted @ 2022-08-08 15:36 DogLeftover 阅读(29) 评论(0) 推荐(0) 编辑
摘要:任务队列中的 Task 有 3 种典型使用场景 1) 用户程序自定义的普通任务 [举例说明] 2) 用户自定义定时任务 3) 非当前 Reactor 线程调用 Channel 的各种方法 例如在推送系统的业务线程里面,根据用户的标识,找到对应的 Channel 引用,然后调用 Write 类方法向该 阅读全文
posted @ 2022-08-08 15:25 DogLeftover 阅读(23) 评论(0) 推荐(0) 编辑
摘要:导入依赖 // https://mvnrepository.com/artifact/io.netty/netty-all implementation group: 'io.netty', name: 'netty-all', version: '4.1.51.Final' 服务端 public 阅读全文
posted @ 2022-08-08 14:38 DogLeftover 阅读(16) 评论(0) 推荐(0) 编辑
摘要:简介 Netty 主要基于主从 Reactors 多线程模型做了一定的改进,其中主从 Reactor 多线程模型有多个 Reactor 1) BossGroup 线程维护Selector , 只关注Accecpt2) 当接收到Accept事件,获取到对应的 SocketChannel, 封装成 NI 阅读全文
posted @ 2022-08-08 09:35 DogLeftover 阅读(36) 评论(0) 推荐(0) 编辑
摘要:根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现 1) 单 Reactor 单线程 2) 单 Reactor 多线程 3) 主从 Reactor 多线程 单 Reactor 单线程 1) Select 是前面 I/O 复用模型介绍的标准网络编程 API,可以实现应用程序通 阅读全文
posted @ 2022-08-05 15:57 DogLeftover 阅读(29) 评论(0) 推荐(0) 编辑
摘要:原生NIO存在的问题 1) NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。 2) 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor模 阅读全文
posted @ 2022-08-05 15:41 DogLeftover 阅读(28) 评论(0) 推荐(0) 编辑
摘要:在 Java 程序中,常用的零拷贝有 mmap(内存映射射) 和 sendFile 传统io mmap优化 mmap 通过内存映射,将文件映射到内核缓冲区,同时,用户空间可以共享内核空间的数据。 这样,在进行网络传输时,就可以减少内核空间到用户控件的拷贝次数 sendFile优化 Linux 2.1 阅读全文
posted @ 2022-08-05 14:29 DogLeftover 阅读(43) 评论(0) 推荐(0) 编辑
摘要:简介 1) 编写一个 NIO 群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞) 2) 实现多人群聊 3) 服务器端:可以监测用户上线,离线,并实现消息转发功能 4) 客户端:通过channel 可以无阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(有服务器转发得到) 编写服务端 阅读全文
posted @ 2022-08-05 11:58 DogLeftover 阅读(18) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 10 ··· 16 下一页
点击右上角即可分享
微信分享提示