Netty(十) - NIO 应用实例:群聊系统

一、案例要求编写一个 NIO 群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞)实现多人群聊服务器端:可以检测用户上线,离线,并实现消息转发功能客户端:通过 channel 可以无阻塞发送消息给其它所有用户,同时可以接收其它用户发送的消息(由服务器转发得到)目的:进一步理解 NIO 非阻塞网络编程机制...
分类: 其他 发布时间: 03-01 09:44 阅读次数: 0

Netty(十一) - NIO与零拷贝

一、零拷贝基本介绍零拷贝是网络编程的关键,很多性能优化都离不开它在 Java 程序中,常用的零拷贝有 mmap(内存映射)和 sendFile。mmap 和 sendFile 在 OS 里,到底是怎么样的一个设计?对 mmap 和 sendFile 两个零拷贝进行分析?NIO 中如何使用零拷贝?1.1 传统IO数据读写1)、Java 传统 IO 和 网络编程的代码:File file = new File("1.txt");RandomAccessFile raf = new Random
分类: 其他 发布时间: 03-01 09:44 阅读次数: 0

Netty(十二) - Java AIO

一、基本介绍1)、JDK7 引入了 Asynchronous I/O,即 AIO。在进行 I/O 编程中,常用到两种模式:Reactor和Proactor。Java的NIO就是Reactor,当有事件触发时,服务器端得到通知,进行相应的处理。2)、AIO即NIO2.0,叫做异步不阻塞的IO。AIO引入异步通道的概念,采用了Proactor模式,简化了程序编写,有效的请求才启动线程,它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间较长的应用3)、目前AIO还没有
分类: 其他 发布时间: 03-01 09:44 阅读次数: 0

Netty(十三) - Netty概述

一、引言
分类: 其他 发布时间: 03-01 09:43 阅读次数: 0

Netty(十四) - 线程模型概述

一、基本介绍
分类: 其他 发布时间: 03-01 09:43 阅读次数: 0

Netty(十五) - 线程模型三种实现

一、单Reactor单线程1.1 工作原理1.2 NIO 群聊系统/** * @desc 群聊服务器端 * @author yxs * @date 2021-02-06 16:50 */public class GroupChatServer { // 定义属性 private Selector selector; private ServerSocketChannel listenChannel; private static final int POR
分类: 其他 发布时间: 03-01 09:43 阅读次数: 0

Netty(十六) - Netty模型

Netty主要基于主从Reactors多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor。一、Netty模型简单版1)、BossGroup 线程维护 Selector,只关注Accept事件2)、当接收到Accept事件,获取到对应的SocketChannel,封装成NIOSocketChannel,并注册到Worker线程(事件循环)进行维护3)、当Worker线程监听到Selector中注册的通道发生事件后,就进行处理(由Handler完成),注意:Handler已
分类: 其他 发布时间: 03-01 09:43 阅读次数: 0

Netty(十七) - Netty入门实例(TCP)

一、实例要求1)、使用IDEA创建Netty项目2)、Netty服务器在6668端口监听,客户端能发送消息给服务器:“Hello,服务器”3)、服务器可以回复消息给客户端:“Hello,客户端”4)、目的:对Netty线程模型有一个初步认识,便于理解Netty模型理论5)、说明:创建Maven项目,并引入Netty包...
分类: 其他 发布时间: 03-01 09:42 阅读次数: 0

Netty(十八) - taskQueue自定义任务

任务队列中的Task有3种典型使用场景:1)、用户程序自定义的普通任务public class NettyServerHandlerTask01 extends ChannelInboundHandlerAdapter { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { // 比如这里有一个非常耗时长的业务 -> 异步执行 -&
分类: 其他 发布时间: 03-01 09:42 阅读次数: 0

Netty(十九) -异步模型

一、基本介绍1)、异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的组件在完成后,通过状态、通知和回调来通知调用者。2)、Netty 中的 IO操作 是异步的,包括 Bind、Write、Connect等操作会简单的返回一个 ChannelFuture3)、调用者并不能立刻获得结果,而是通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果4)、Netty 的异步模型是建立在 future 和 callback
分类: 其他 发布时间: 03-01 09:42 阅读次数: 0

Netty(二十) - Netty入门实例(HTTP)

一、实例要求1)、使用IDEA创建Netty项目2)、Netty服务器在6668端口监听,浏览器发出请求:http://localhost:6668/3)、服务器可以回复消息给客户端:Hello!我是服务器,并对特定请求资源进行过滤4)、目的:Netty可以做Http服务开发,并且理解Handler实例和客户端及其请求的关系...
分类: 其他 发布时间: 03-01 09:42 阅读次数: 0

Netty(二十一) - Netty核心模块1

一、Bootstrap和ServerBootstrap1)、Bootstrap意思是引导,一个Netty应用通常由一个Bootstrap开始,主要作用是配置整个Netty程序,串联各个组件,Netty中Bootstrap类是客户端程序的启动引导类,ServerBootstrap是服务器端启动引导类。2)、常见的方法:public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup childGroup):该方法用于服务器端
分类: 其他 发布时间: 03-01 09:41 阅读次数: 0

Netty(二十二) - Netty核心模块2

一、ChannelHandlerContext1)、保存 Channel 相关的所有上下文信息,同时关联一个 ChannelHandler 对象2)、ChannelHandlerContext 中包含一个具体的事件处理器 ChannelHandler,同时 ChannelHandlerContext 中也绑定了对应的 Pipeline 和 Channel 的信息,方便对 ChannelHandler 进行调用3)、常用方法:ChannelFuture close():关闭通道ChannelHan
分类: 其他 发布时间: 03-01 09:41 阅读次数: 0

Netty(二十三) - Unpooled

一、基本介绍1)、Netty 提供一个专门用来操作缓冲区(即Netty的数据容器)的工具类2)、常用方法:public static ByteBuf copiedBuffer(CharSequence string, Charset charset):通过给定的数据和字符编码返回一个ByteBuf对象(类似于NIO中的ByteBuffer,但有区别)3)、Unpooled 获取Netty的数据容器ByteBufpublic class NettyByteBuf01 { public
分类: 其他 发布时间: 03-01 09:41 阅读次数: 0

mysql中给id重新排序

删除主键idalter table experts_title drop id(experts_title 为表名)重新给此表加id字段及其它信息alter table experts_title add id int(11) primary keyauto_increment first
分类: 其他 发布时间: 03-01 09:41 阅读次数: 0

删除mysql数据库中重复数据

最开始用的这个语句,显示报错delete from con where id in(select min(id) id1 from con group by url having count(url) > 1)(con为表名,id、url为表中字段名)删除数据的同时又去查询数据,查询数据的同时又去删除,mysql不支持更新查询同一张表的操作正确sql如下:1.先查询到重复的数据2.把重复的数据作为第三张表3.再去删除delete from con where id in(select
分类: 其他 发布时间: 03-01 09:40 阅读次数: 0

Android 颜色透明度百分比与十六进制对照表

100% — FF99% — FC98% — FA97% — F796% — F595% — F294% — F093% — ED92% — EB91% — E890% — E689% — E388% — E087% — DE86% — DB85% — D984% — D683% — D482% — D181% — CF...
分类: 其他 发布时间: 03-01 09:40 阅读次数: 0

Java 代码块、静态代码块和构造函数 执行顺序

今天突然想起了几年前我碰到的一个 Java 面试题,内容略简单,还是在此记录备忘。不讨论深层次原理,我也不会。Java 中代码块、静态代码块和构造函数的执行顺序是怎样的?针对此问题,要考虑父类子类继承关系,考虑多个代码块前后顺序。于是撸上代码父类:public class ParentClass { static { System.out.println(...
分类: 其他 发布时间: 03-01 09:40 阅读次数: 0

Android MismatchedInputException,网络请求成功,客户端识别为失败?

记录一个小坑。最近在工作中遇到一个小坑,消耗类我一天的时间最终才把问题解决。事件背景:1、Android 端需要请求网络接口。于是按照惯例我写好调用代码,获取返回状态值。2、运行程序,发现执行结果总是失败。3、抓包查看请求信息,发现请求成功了,服务器返回状态码为200。Response 无返回内容。4、反复检查 Android 端代码,没有发现错误。5、Debug 调式...
分类: 其他 发布时间: 03-01 09:40 阅读次数: 0

Android Jetpack Components of Lifecycle 学习笔记

Android Jetpack Components of Lifecycle 学习笔记Android Jetpack Components of LiveData 学习笔记Android Jetpack Components of ViewModel 学习笔记都说天下文章一大抄。不过我不担心,我从来不抄袭别人的见解。也有人说博客、GibHub 上 90% 的内容都是重复的。...
分类: 其他 发布时间: 03-01 09:39 阅读次数: 0