![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【RPC】
chenshiying007
关注大数据相关技术和软件架构
展开
-
NIO的selector.wakeup的实现
NIO中的Selector封装了底层的系统调用,其中wakeup用于唤醒阻塞在select方法上的线程,它的实现很简单,在linux上就是创建一 个管道并加入poll的fd集合,wakeup就是往管道里写一个字节,那么阻塞的poll方法有数据可读就立即返回。证明这一点很简单,strace即 可知道: Java代码 public class SelectorTest { public ...转载 2018-06-11 11:54:00 · 8159 阅读 · 3 评论 -
Java NIO通道Channel的原理与获取
Java NIO通道Channel的原理与获取更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) 构建中小型互联网企业架构(干货) python 学习持续更新 ElasticSearch 笔记 ...原创 2018-07-20 16:36:06 · 907 阅读 · 0 评论 -
Netty3 Hello Word
Netty Hello Word概述netty版本大致版本分为 netty3.x 和 netty4.x、netty5.xnetty可以运用在那些领域?1、分布式进程通信例如: hadoop、dubbo、akka等具有分布式功能的框架,底层RPC通信都是基于netty实现的,这些框架使用的版本通常都还在用netty3.x2、游戏服务器开发最新的游戏服务器有部分公司可能已经开始采用netty4.x 或...原创 2018-06-10 20:59:41 · 619 阅读 · 0 评论 -
自定义数据包协议
自定义数据包协议代码地址https://github.com/csy512889371/learndemo/tree/master/netty/packageProtocol粘包 分包两条消息give me a coffee give me a teagive me a coffeegive me a tea 粘包现象give me a coffeegive me a tea 分...原创 2018-06-15 14:57:05 · 4876 阅读 · 1 评论 -
自定义序列化
自定义序列化代码https://github.com/csy512889371/learndemo/tree/master/netty/Serial例子一使用位移 与大小端存储对象。import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import...原创 2018-06-15 07:47:19 · 580 阅读 · 0 评论 -
理解大小端字节序
学过编程的人都应该知道大小端字节序的概念,但是很多时候,总是把他们弄混,这是整理出来的一份很简单的方式理解字节序的文章,废话不多说,这里直接入正题。什么是字节序? 字节序,简单来说,就是指的超过一个字节的数据类型在内存中存储的顺序 那么就很明显了,像char这样的类型,肯定不存在字节序的问题了。字节序分为哪几类?大端字节序: 高位字节数据存放在低地址处,低位数据存放在高...转载 2018-06-15 07:19:13 · 4628 阅读 · 2 评论 -
netty 之nio
netty 之nio传统IOIO特点 * 阻塞点 server.accept(); inputStream.read(bytes);单线程情况下只能有一个客户端用线程池可以有多个客户端连接,但是非常消耗性能public class OioServerOne { @SuppressWarnings("resource") public static void main(String[] arg...原创 2018-06-08 07:25:37 · 1187 阅读 · 0 评论 -
Protocol Buffer 使用
Protocol Buffer 使用概述Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。https://github.com/csy512889371...原创 2018-06-14 16:03:45 · 1672 阅读 · 1 评论 -
netty心跳
netty心跳概述心跳对于服务端来说,定时清除闲置会话inactive(netty5) channelclose(netty3)心跳对客户端来说,用来检测会话是否断开,是否重连! 用来检测网络延时!netty3package com.heart;import java.net.InetSocketAddress;import java.util.concurrent.ExecutorServ...原创 2018-06-14 07:40:20 · 840 阅读 · 1 评论 -
基于netty的聊天室
基于netty的聊天室概述chat_netty3 基于netty3chat_netty4 基于netty4chat_protobuf 序列化协议 使用protobufhttps://github.com/csy512889371/learndemo/tree/master/netty/chat_netty3https://github.com/csy512889371/learndemo/tree...原创 2018-06-21 06:55:45 · 1876 阅读 · 0 评论 -
netty 解决粘包 和 分包的问题
netty 解决粘包 和 分包的问题概述粘包现象客户端在一个for循环内连续发送1000个hello给Netty服务器端 Socket socket = new Socket("127.0.0.1", 10101); for(int i = 0; i < 1000; i++){ socket.getOutputStream().write(“hell...原创 2018-06-20 18:45:42 · 5167 阅读 · 0 评论 -
netty 管道传递
netty 管道传递概述我们在使用netty的是有都会存在将channelBuffer的数据处理成相应的String或者自定义数据。而这里主要是介绍管道里面存在的上行和下行的数据处理方式通过一张图片来看一下具体管道中的实现过程代码serverpackage com.server;import java.net.InetSocketAddress;import java.util.concur...原创 2018-06-20 18:05:53 · 1164 阅读 · 0 评论 -
Netty5 服务端和客户端
Netty5 服务端和客户端概述netty 5 已经放弃掉了,作为学习netty4和5的差别不大,本例子是基于netty5https://github.com/netty/netty/issues/4466线程安全一个thread + 队列 == 一个单线程线程池。线程安全的,任务是线性串行执行的线程安全,不会产生阻塞效应 ,使用对象组线程不安全,会产生阻塞效应, 使用对象池Figure 1. 对...原创 2018-06-13 09:21:42 · 2328 阅读 · 0 评论 -
RPC
RPCnetty 之nio Netty Hello Word NIO的selector.wakeup的实现 Netty 核心代码 简单了解RPC实现原理 Netty5 服务端和客户端 netty心跳 Protocol Buffer 使用 理解大小端字节序 自定义序列化 mina保持android端\服务端的长连接 Netty 长连接服务...原创 2018-06-12 10:13:43 · 3877 阅读 · 0 评论 -
Netty3 核心代码
Netty 核心代码概述netty 核心代码基于nio 实现多线程。下面是简化版的netty代码https://github.com/csy512889371/learndemo/tree/master/netty/NIONetty代码Bossimport java.nio.channels.ServerSocketChannel;/** * boss接口 * * */public i...原创 2018-06-11 15:41:07 · 870 阅读 · 0 评论 -
mina保持android端\服务端的长连接
更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) 构建中小型互联网企业架构(干货) python 学习持续更新 ElasticSearch 笔记 kafka storm 实战 (干货) ...转载 2018-10-08 11:03:34 · 754 阅读 · 0 评论