nio/netty
文章平均质量分 82
指尖踢踏舞
这个作者很懒,什么都没留下…
展开
-
7 netty网络篇,netty拆包粘包和自定义协议
概况 本篇文章会在应用层面分享一下netty怎么方便的解决拆包和粘包问题,和我会分享一个最常用于解决拆包和粘包的方案自定义协议的demo,其中还会涉及到自定义编解码器,这个以后有时间再分享拆包粘包 解决拆包和粘包,最常见的方案有三种。 1 消息定长,每个报文长度固定,如果不够,空位补0; 2 使用分隔符,报文间使用分隔符识别; 3 使用自定义协议,将消息分为消息头,和消息体,消息头记录着消息体的长度。 netty提供很方便的handler实现上面的方案,其中 原创 2021-09-13 22:20:28 · 566 阅读 · 0 评论 -
6 netty网络篇,前置知识3,序列化
概况 这篇文章会讲一下序列化的重要性和序列化工具的选型。 我们在系统间接口的调用中,基本上都会用到序列化和反序列化。下图是订单中心从用户中心获取用户的场景,会发生以下动作。 1 用户中心先将User对象序列化为json字符串 2 然后通过网络将json字符串传送到订单中心 3 订单中心将json字符串反序列化为User对象,然后接着做下面的业务操作 在上面的例子中,序列化和反序列化主要影响有两点: 1 序列化和反序列化的时间(或者说消耗的资源) 2 序列化原创 2021-08-23 15:55:36 · 168 阅读 · 0 评论 -
5 深入理解netty,网络篇,粗谈TCP和UDP协议
概况 上篇文章简单描述了一下网络分层。这篇文章就分享一些TCP和UDP的一些内容,这篇文章会分享一些我觉得跟我们开发有直接关联的一些知识。文章内容分为两分部。 第一部分是 TCP的那些事 第二部分是 UDP的那些事TCP的那些事 TCP的内容很复杂,这里只是概述性的讲解它的优缺点,并不会详细描述它的各种算法,策略等。 TCP是成熟可靠的协议,它具有以下的功能。 1 保证网络包的顺序: TCP是受过seq序号来保证网络包的顺序问题的,TCP提供有序的传输,所以每个数据段都要标上一个原创 2021-08-17 12:38:34 · 1595 阅读 · 0 评论 -
4 深入理解netty,网络篇,粗谈网络分层
概况 在网络编程中,网络协议的选型是尤其重要,比如在物联网领域中,我们可能会选择UDP或者是MQTT,大多数的微服务间的通信中,我们多数会选择基于tcp的rpc协议。所以选择一个合适的协议很重要。 这篇文章会分享一些我觉得跟我们开发有直接关联的一些知识。文章内容分为两分部。 第一部分是 简单理解 TCP/IP 四层模型 第二部分是 网络包在公网上是怎么传输的简单理解TCP/IP四层模型下面是我用wireshark监听我本地电脑网卡截的一幅图,我们就以这幅图为例,来描述一下TCP/IP四原创 2021-08-17 10:34:29 · 586 阅读 · 0 评论 -
深入理解semaphore
概况 关于锁,我上次写了一篇ReentrantLock,目的是借助ReentrantLock来分析AQS的独占锁部分,今天我们来一起分析Semaphore,主要目的是借助Semaphore来分析AQS的共享锁部分。 下面文章分为三部分,第一部分介绍semaphore的作用,第二部分是分析semaphore 尝试获取资源的过程,第三部分是分析semaphore 释放资源的过程第一部分 semaphore的使用场景 信号量。从概念上讲,信号量维护一组许可,许可也可以理解为一组资源的使用权。其中获原创 2021-08-02 14:15:11 · 1100 阅读 · 3 评论 -
深入理解重入锁
本篇的内容介绍 本篇文章会详细分析reentrantlock的工作原理,会分为三部分讲解,第一部分是 reentrantlock 大体上的脉络,第二部分是分析公平锁的实现,第三部分再简单对比非公平锁的实现第一部分 reentrantlock 的一个大概设计我们简单的看一下reentrantlock 的一个大的设计是怎么样的,我们简单用一个伪代码表示public class ReentrantLock { public ReentrantLock(boolean fair) {原创 2021-07-26 12:50:04 · 355 阅读 · 0 评论 -
3 深入理解Netty, 线程篇2, 深入分析netty的线程模型
上篇讲了reactor的线程模型,我们说netty 是属于主从线程模型,下面我们一起来看看netty的线程模型。 本片文章分为两部分:第一部分是分析 netty的线程模型,这部分我只会贴关键源码,我觉得贴太多源代码会很难理解,所以我一般会用贴关键源代码和伪代码表示。 第二部分是分析几道关于这部分的面试题。第一部分: 我们先从一个服务端demo开始: public static void main(...原创 2021-07-10 17:33:05 · 341 阅读 · 1 评论 -
2 深入理解Netty, 线程篇1, 前置知识reactor模型
netty 是基于 java nio 上封装的框架,所以它的核心功能一定也是依赖 java nio的核心组件。因为原生java nio太原始,如果要在生产上使用,程序员要花大量的时间在非业务上的处理。如写半包,jdk select的空轮询等等。 netty 从 并行,池化,网络通信等方面帮助我们优化程序。并行可以让我们程序充分利用cpu,今天我们浅析一下netty的线程模型。这篇文章我们先讲讲什么是 reactor模型:reactor反应堆的...原创 2021-07-10 14:40:16 · 171 阅读 · 0 评论 -
1 深入理解Netty, 前置知识从java nio 到 hotspot 到 linux
select/poll机制 select/poll 是 epoll之前提出的一种多路复用机制,它大概的原理是在一个线程内,将用户层的fd集合拷贝进内核,进行遍历,然后返回 可读,可写的fd集合。由前一段可以看出select/poll的问题是,他每次遍历都需要将fd从用户态复制到内核态。如果连接数一多,对性能造成很大的影响。epoll机制:epoll 是基于事件通知机制 与 多路复用,在内核级别实现的机制。 ...原创 2021-07-05 11:43:08 · 189 阅读 · 3 评论