自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qililong88的博客

技术大牛有多远,我给量量去......追上就可以嘿嘿嘿O(∩_∩)O

  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

转载 Netty学习笔记(十)心跳机制与断线重连

心跳是啥在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性.心跳机制的工作原理心跳机制的工作原理是: 在服务器和客户端之间一定时间内没有数据交互时, 即处于 idle 状态时, 客户端或服务器会发送一个特殊的数据包给对方, 当接收方收到这个数据报文后, 也立即发送一个特殊的数据报文, 回应发送方, 此即一个 PING-PONG 交互. 自然地, 当某一端收到心跳消息后, 就知道了对方仍然在线, 这就确保 TCP 连接的有效性

2020-09-19 12:14:01 804

转载 Netty学习笔记(九)新连接接入

引子在上一篇分析NioEventLoop那篇文章中分析NioEventLoop.run()时候提到当方法processSelectedKey()处理事件的时候,比如读事件,最终调用了unsafe.read();本文就来分析一下unsafe对象的read方法的具体实现。检测新的连接源码中的Unsafe是一个接口,在调试时可知其实现类为NioMessageUnsafe类,其read方法源码如下: private final List<Object> readBu.

2020-09-19 11:31:02 309

转载 netty学习笔记(八)ByteBuf分析2

引子java NIO 使用ByteBuffer作为字节容器,使用上过于复杂,为此netty使用ByteBuf来代替ByteBuffer。ByteBuf的APINetty的数据处理API通过两个组件暴露:ByteBuf和ByteBufHolder。 ByteBuf维护了两个不同的索引:readerIndex和writerIndex,分别用于读写。 我们在ByteBuf的源码的注释中看到: * +-------------------+------------------+-.

2020-09-19 11:29:10 517

转载 Netty学习笔记(七)ByteBuf分析

ByteBufjava NIO 使用ByteBuffer作为字节容器,使用上过于复杂,为此netty使用ByteBuf来代替ByteBuffer。ByteBuf是一个抽象类,不能直接使用,它的子类有:ByteBuf子类它有两个重要的指针:readerIndex读指针,writerIndex写指针。在ByteBuf的0到readerIndex区间内不可读,在readerIndex到writerIndex区间内可读,在writerIndex到capacity容量区间内可写入。另外Byte.

2020-09-19 11:26:58 220

转载 Netty学习笔记(六)Pipeline

Pipeline初始化Pipeline创建Netty在创建客户端Channel和服务端Channel的时候,都会调用父类的构造函数: protected AbstractChannel(Channel parent) { this.parent = parent; id = newId(); unsafe = newUnsafe(); pipeline = newChannelPipeline(); }构造函数

2020-09-19 11:25:21 3110 1

转载 Netty学习笔记(五)NioEventLoop启动

引子在之前的文章中有提到BootStrap启动类中绑定端口的内部实现如下: private static void doBind0( final ChannelFuture regFuture, final Channel channel, final SocketAddress localAddress, final ChannelPromise promise) { channel.eventLoop().execu.

2020-09-19 11:22:41 296

转载 Netty学习笔记(四)NioEventLoopGroup分析

引子在上一篇文章中我们已经分析了Netty注册相关的逻辑,接下来再开看下NioEventLoopGroup这个类内部的相关构造。NioEventLoopGroup在之前的demo中第一行就是:EventLoopGroup bossGroup = new NioEventLoopGroup(1);这个NioEventLoopGroup类的构造函数最终实现如下:protected MultithreadEventExecutorGroup(int nThreads, E..

2020-09-19 11:21:27 453

转载 Netty学习笔记(三)Reactor线程模型

单线程模型所有操作都在同一个NIO线程处理,在这个单线程中要负责接收请求,处理IO,编解码所有操作,相当于一个饭馆只有一个人,同时负责前台和后台服务,效率低。单线程模型多线程模型多线程的优点在于有单独的一个线程去处理请求,另外有一个线程池创建多个NIO线程去处理IO。相当于一个饭馆有一个前台负责接待,有很多服务员去做后面的工作,这样效率就比单线程模型提高很多。多线程模型主从线程模型多线程模型的缺点在于并发量很高的情况下,只有一个Reactor单线程去处理是来不..

2020-09-19 11:19:56 158

转载 Netty学习笔记(二)Channel的分类

Channel分类在Netty中存在众多Channel类和接口,大致关系如下:Netty中Channel类图Channel:和Java Nio中的Channel同名,是Netty对网络底层读写和连接的抽象。 AbstractChannel: 是Channel的抽象实现类,抽象出了parent,id,unsafe,pipeline等概念。 AbstractNioChannel:封装Java NIO,通过Selector选择器进行IO事件的监听,拥有SelectionKey,readI.

2020-09-19 10:46:12 432

转载 Netty学习笔记(一)组件

Channel,EventLoop和ChannelFuture类构成了Netty网络抽象的代表:Channel:对应Socket EventLoop:对应控制流,多线程处理,并发 ChannelFuture:对应异步通知Channel接口Channel是对Socket的封装,大大降低了直接使用Socket的复杂性。EventLoop接口EventLoop用于处理连接的生命周期中所发生的事件。在服务端编程中,EventLoop起到了监听端口连接和数据读取的工作。ChannelFutu

2020-09-19 10:43:45 182

转载 Elasticsearch面试题

1.为什么要使用Elasticsearch?​   因为在我们商城中的数据,将来会非常多,所以采用以往的模糊查询,模糊查询前置配置,会放弃索引,导致商品查询是全表扫面,在百万级别的数据库中,效率非常低下,而我们使用ES做一个全文索引,我们将经常查询的商品的某些字段,比如说商品名,描述、价格还有id这些字段我们放入我们索引库里,可以提高查询速度。2.Elasticsearch是如何实现Master选举的?  Elasticsearch的选主是ZenDiscovery模块负责的,主要包含Ping(节

2020-09-18 20:13:20 2367 1

原创 springCloud组件以及相应原理

springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflixspringcloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布。所以springcloud不方便使用版本号来管理,而是使用版本名。以避免和子

2020-09-18 10:37:21 2088

转载 微服务入门-1、RPC、APIgateway

微服务 (Microservices) 是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building Blocks) 为基础,利用模组化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关 (Language-Independent/Language agnostic) 的 API 集相互通讯。微服务的优势:独立性 每个微服务的构建、部署、扩容、缩容、数据库都是独立的。数据库表修改时,互补影响。 敏捷性 功能单一、可快速添加新需求 技术栈灵活 可以发挥不

2020-09-17 19:01:44 1107

原创 Tomcat消息处理流程

图1-1一、前言 平时我们都将项目扔给Tomcat就行了,做了撒手掌柜,没接触过JavaEE项目,对于请求从服务器接收后的处理流程模棱两可,不利于对Web项目的理解,我们现...

2020-09-17 17:10:18 243

转载 HTTP1.0、HTTP1.1 和 HTTP2.0 的区别

原文:https://mp.weixin.qq.com/s/GICbiyJpINrHZ41u_4zT-A一、HTTP的历史早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了 WEB2.0 以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的 HTML 页面有了 CSS,Javascript.

2020-09-17 17:04:04 739

原创 WebSocket总结

IM通讯项目中用到了WebSocket建立连接,这里做一个简单地整理总结:一句话总结一下 WebSocket:WebSocket 是 HTML5 开始提供的一种独立在单个TCP连接上进行全双工通讯的有状态的协议(它不同于无状态的 HTTP),并且还能支持二进制帧、扩展协议、部分自定义的子协议、压缩等特性。一、Socket简介Socket又称‘套接字‘,应用程序通常通过‘套接字‘向网络发出请求或者应答网络请求。Socket可以实现应用程序间网络通信。Socket可以使用TCP/IP协议或..

2020-09-17 16:49:06 790

RocketMQ文档和书籍.zip

MQ介绍,基本使用,MQ结合SpringBoot实现商城下单和支付流程,详细讲解了Rocket源码和相关原理

2020-05-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除