当前位置: 首页 > news >正文

保靖网站建设同城信息发布平台

保靖网站建设,同城信息发布平台,pc端网站布局,哪些网站可以免费做代码依赖包解释 Guava 包含了若干被Google的 Java项目广泛依赖 的核心库#xff0c;例如#xff1a;集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string process…依赖包解释 Guava 包含了若干被Google的 Java项目广泛依赖 的核心库例如集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。 所有这些工具每天都在被Google的工程师应用在产品服务中。 Jackson 用来序列化和反序列化 json 的 Java 的开源框架. jackson-core核心包提供基于流模式解析的相关 API它包括 JsonPaser 和 JsonGenerator。 Jackson 内部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 jsonjackson-annotations注解包提供标准注解功能jackson-databind 数据绑定包 提供基于对象绑定 解析的相关 API ObjectMapper 和树模型 解析的相关 API JsonNode基于对象绑定 解析的 API 和树模型解析的 API 依赖基于流模式解析的 API。 netty一个异步事件驱动的网络应用程序框架用于快速开发可维护的高性能协议服务器和客户端。 版本回顾 在前面实现的RPC(1)------Java BIO JDK原生序列化 JDK动态代理实现 中是基于java多线程的阻塞调用每次客户端调用服务端都会开启一个线程来处理客户端请求这也是上个版本的缺点。这次基于netty的版本就是针对上个版本的缺陷来做出的优化代码见V2.0 基于NIO的RPC实现 本次更新主要是在rpc-core模块将前一个基于socket实现的功能放在socket包下codec包下是序列化和反序列化代码netty包下是基于netty实现的rpc客户端和服务端serializer包下是实现的几种不同的序列化算法。 关于netty的基本组件介绍可以参考netty快速入门 netty client 首先创建NioEventLoopGroup线程组然后创建bootstrap对象配置参数 public class NettyClient implements RpcClient {private static final Logger logger LoggerFactory.getLogger(NettyClient.class);private static final Bootstrap bootstrap;private CommonSerializer serializer;static {EventLoopGroup group new NioEventLoopGroup();bootstrap new Bootstrap();bootstrap.group(group).channel(NioSocketChannel.class).option(ChannelOption.SO_KEEPALIVE, true);}private String host;private int port;public NettyClient(String host, int port) {this.host host;this.port port;}然后是实现sendrequest方法这个和socket实现的一样发送客户端请求然后等待请求结果返回功能一样我们主要看netty的实现方式。 首先初始化channel以及绑定handler bootstrap.handler(new ChannelInitializerSocketChannel() {Overrideprotected void initChannel(SocketChannel ch) {ChannelPipeline pipeline ch.pipeline();pipeline.addLast(new CommonDecoder())//in.addLast(new CommonEncoder(serializer))//out.addLast(new NettyClientHandler());//in}});然后绑定端口连接服务器发送请求 //sync方法是等待异步操作执行完毕 ChannelFuture future bootstrap.connect(host, port).sync();logger.info(客户端连接到服务器 {}:{}, host, port);Channel channel future.channel();if (channel ! null) {channel.writeAndFlush(rpcRequest).addListener(future1 - {if (future1.isSuccess()) {logger.info(String.format(客户端发送消息: %s, rpcRequest.toString()));} else {logger.error(发送消息时有错误发生: , future1.cause());}});然后在channel上获取返回信息这个信息是在NettyClientHandler处理器上添加的 //主线程会在执行完bind().sync()方法后不执行后面的代码channel.closeFuture().sync();AttributeKeyRpcResponse key AttributeKey.valueOf(rpcResponse rpcRequest.getRequestId());RpcResponse rpcResponse channel.attr(key).get();RpcMessageChecker.check(rpcRequest, rpcResponse);return rpcResponse.getData();服务端也类似这里不再详细贴出 核心理解pipeline执行流程 pipeline是存储通道处理器Handler的链表在netty中通道处理器分为两种 入站处理器一般都是ChannelInboundHandlerAdapter以及它的子类实现。出站处理器一般都是ChannelOutboundHandlerAdapter以及它的子类实现。 一个是in一个是out入站处理器只处理入站请求出站处理器只处理出站请求。 了解到次我们看一下服务端的pipeline和客户端的pipeline 服务端接收到请求时 服务端接收到请求时即相对于服务端来说数据是入站请求执行入站处理器handler从左到右执行执行CommonDecoder(反序列化)和NettyServerHandlerCommonEncoder是出站处理器不执行. 服务端返回到请求结果时 服务端处理完请求之后返回结果时对于服务端来说数据是出站请求执行出站处理器handler从右到左执行只执行出站处理器CommonEncoder(序列化). 客户端也是这样分析 序列化方法不在详细说明 V2.0和V1.0对比 定义协议包 Magic Number 魔数表识一个 MRF 协议包0xCAFEBABE Package Type 包类型标明这是一个调用请求还是调用响应 Serializer Type 序列化器类型标明这个包的数据的序列化方式 Data Length 数据字节的长度反序列化时读取数据 Data Bytes 传输的对象通常是一个RpcRequest或RpcClient对象取决于Package Type字段对象的序列化方式取决于Serializer Type字段。 netty通信 小问题 HessianSerializer序列化时反序列化为什么不需要类型clazz而是直接readObject Hessian协议是自描述的查看序列化后的16进制序列和Hseeian协议提供的码表就可以解码出来所有的。详情看这篇
http://www.hkea.cn/news/14453490/

相关文章:

  • 网站换程序 搜索引擎wordpress主题代码框架
  • 安徽省网站肥建设网站动力无限西安网站建设
  • 做电商网站的wordpress js链接地址
  • 个人网站网页设计wordpress怎样在列表页使用瀑布流
  • 沈阳市建网站wordpress修改代码后
  • 网站域名过期了怎么办成功备案的网站增加域名
  • 百度商桥怎么绑定网站微商城开发公司有哪些比较好
  • 网站策划 ppt长沙seo服务
  • 东莞专业网站推广方式vi设计公司排行
  • 网站备案收费幕布网站优化要怎么做
  • 景观做文本常用的网站网页制作公司设计理念
  • 没有做老千的斗牛网站6邯郸百度爱采购
  • 包头住房和城乡建设厅网站如何开设网站
  • 文化馆网站建设解决方案百度收录最好的网站
  • 做网站的公司重庆wordpress极简名片主题
  • 萧山城市建设网站王展简历
  • 企业外贸网站python 做 网站
  • 深圳网站制作排行榜怎样新建一个网页
  • 网站更换主机注意网站功能有哪些
  • 网站建设公司品牌过年做那个网站致富
  • 网站后台密码是什么合肥品牌设计
  • 快注销网站淘宝联盟的网站怎么自己做
  • 公司网站建设和推广有哪些搜索引擎网站
  • 文明网i中国精神文明建设门户网站电子商务网站主要功能
  • 私人网站如何做竞价网站后台统计
  • 郑州做网站开发销售青岛的互联网企业
  • 官网网站模板网站建设接口开发
  • wordpress的网站怎么让他上线湖北短视频搜索seo
  • 如何找人帮我做网站推广网络设计与实施
  • 网站如何做分布式深圳建站公司设计深业集团