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

秦皇岛 网站制作团风做网站

秦皇岛 网站制作,团风做网站,网站开发成功案例,做网站的环境配置依赖包解释 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.w-s-a.com/news/845128/

相关文章:

  • 天津公司网站建设公司哪家好网站建设评估
  • 猪八戒网网站建设wordpress建网 打不开
  • 廊坊网站排名优化报价自学网站建设和seo
  • 摄影网站开发背景vs2012做网站
  • 网站建设空间使用标准沈阳网站建设招标公司
  • 网站流量怎么做的成都山而网站建设公司
  • 天河区网站建设公司爱站网排名
  • 怎样开发设计网站建设博物馆网页设计案例
  • 山西建设厅网站查不了seo搜索引擎优化包邮
  • 临沂网站建设价格太原网站优化公司
  • 网页设计基础课程设计搜索引擎优化英文
  • 网站备案号怎么查楼书设计素材网站
  • 网站设计机构有哪些中国建设银行网站登录不上
  • 烟台理工学校网站罗湖建设网站
  • 卑鄙的网站开发公司郑州人才网站
  • 成都专业的网站设计公司文化建设的成就
  • 做书籍封皮的网站如何建网站教程视频
  • 唐山建站公司模板ipfs做网站
  • 贵阳做网站品牌网站模板
  • 紫网站建设我的个人博客
  • 优秀网站菜单网页上的视频怎么下载
  • 龙口建网站公司价格国内的平面设计网站
  • 电子商务网站建设与管理读后感上海市基础工程公司
  • 织梦免费企业网站做网站时,404网页如何指向
  • 摄影工作室网站源码百度为什么会k网站
  • 哪个网站有淘宝做图的素材网站分享做描点链接
  • 做哪个网站零售最好网站空间在哪里
  • 荆州网站建设多少钱南阳做网站推广
  • 网站代理打开个人网站设计源码
  • 做php网站的话要学什么语言wordpress搜索不到