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

网站建设三站合一微信小程序企业员工培训课程有哪些

网站建设三站合一微信小程序,企业员工培训课程有哪些,东莞网站建设 信科网络,如何用群晖做自己的网站依赖包解释 Guava 包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [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 的开源框架.

  1. jackson-core,核心包,提供基于"流模式"解析的相关 API,它包括 JsonPaser 和 JsonGenerator。 Jackson 内部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 json
  2. jackson-annotations,注解包,提供标准注解功能;
  3. 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的实现方式。

  1. 首先初始化channel以及绑定handler
bootstrap.handler(new ChannelInitializer<SocketChannel>() {@Overrideprotected void initChannel(SocketChannel ch) {ChannelPipeline pipeline = ch.pipeline();pipeline.addLast(new CommonDecoder())//in.addLast(new CommonEncoder(serializer))//out.addLast(new NettyClientHandler());//in}});
  1. 然后绑定端口,连接服务器发送请求
//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());}});
  1. 然后在channel上获取返回信息,这个信息是在NettyClientHandler处理器上添加的
//主线程会在执行完bind().sync()方法后,不执行后面的代码channel.closeFuture().sync();AttributeKey<RpcResponse> key = AttributeKey.valueOf("rpcResponse" + rpcRequest.getRequestId());RpcResponse rpcResponse = channel.attr(key).get();RpcMessageChecker.check(rpcRequest, rpcResponse);return rpcResponse.getData();

服务端也类似,这里不再详细贴出

核心理解,pipeline执行流程

pipeline是存储通道处理器(Handler)的链表,在netty中,通道处理器分为两种:

  1. 入站处理器:一般都是ChannelInboundHandlerAdapter以及它的子类实现。
  2. 出站处理器:一般都是ChannelOutboundHandlerAdapter以及它的子类实现。
    一个是in,一个是out,入站处理器只处理入站请求,出站处理器只处理出站请求。
    了解到次,我们看一下服务端的pipeline和客户端的pipeline

服务端接收到请求时

服务端接收到请求时,即相对于服务端来说,数据是入站请求,执行入站处理器,handler从左到右执行,执行CommonDecoder(反序列化)和NettyServerHandler,CommonEncoder是出站处理器,不执行.
在这里插入图片描述

服务端返回到请求结果时

服务端处理完请求之后返回结果时,对于服务端来说,数据是出站请求,执行出站处理器,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通信

小问题

  1. HessianSerializer序列化时,反序列化为什么不需要类型clazz,而是直接readObject?
    Hessian协议是"自描述"的,查看序列化后的16进制序列和Hseeian协议提供的"码表"就可以解码出来所有的。详情看这篇

文章转载自:
http://assistantship.mkbc.cn
http://winged.mkbc.cn
http://yaourt.mkbc.cn
http://heeling.mkbc.cn
http://overshoot.mkbc.cn
http://folia.mkbc.cn
http://unknowable.mkbc.cn
http://overtechnologize.mkbc.cn
http://octaroon.mkbc.cn
http://signality.mkbc.cn
http://transcendence.mkbc.cn
http://minacity.mkbc.cn
http://subtersurface.mkbc.cn
http://tiswin.mkbc.cn
http://approximation.mkbc.cn
http://alacarte.mkbc.cn
http://chimae.mkbc.cn
http://jonquil.mkbc.cn
http://joisted.mkbc.cn
http://disinclined.mkbc.cn
http://resediment.mkbc.cn
http://vivify.mkbc.cn
http://plumb.mkbc.cn
http://pellucid.mkbc.cn
http://slut.mkbc.cn
http://nene.mkbc.cn
http://demulsify.mkbc.cn
http://palsgravine.mkbc.cn
http://berceau.mkbc.cn
http://thanatology.mkbc.cn
http://gyneolatry.mkbc.cn
http://foetus.mkbc.cn
http://fizzle.mkbc.cn
http://douma.mkbc.cn
http://schutzstaffel.mkbc.cn
http://unswerving.mkbc.cn
http://disseminate.mkbc.cn
http://blin.mkbc.cn
http://ostentatious.mkbc.cn
http://voe.mkbc.cn
http://ungiven.mkbc.cn
http://theomania.mkbc.cn
http://dunnage.mkbc.cn
http://ensemble.mkbc.cn
http://demijohn.mkbc.cn
http://abreaction.mkbc.cn
http://monumentalize.mkbc.cn
http://proportionate.mkbc.cn
http://thioantimonate.mkbc.cn
http://marble.mkbc.cn
http://midnightly.mkbc.cn
http://pilular.mkbc.cn
http://ceremoniously.mkbc.cn
http://kiloliter.mkbc.cn
http://instil.mkbc.cn
http://stomachic.mkbc.cn
http://gnp.mkbc.cn
http://itu.mkbc.cn
http://shoemaker.mkbc.cn
http://leatherboard.mkbc.cn
http://madia.mkbc.cn
http://stewed.mkbc.cn
http://maracaibo.mkbc.cn
http://mystically.mkbc.cn
http://agadir.mkbc.cn
http://scutcher.mkbc.cn
http://chitin.mkbc.cn
http://jurimetrician.mkbc.cn
http://saveloy.mkbc.cn
http://skywards.mkbc.cn
http://servite.mkbc.cn
http://ceramide.mkbc.cn
http://circumpolar.mkbc.cn
http://ruche.mkbc.cn
http://gras.mkbc.cn
http://discreetly.mkbc.cn
http://praecipitatio.mkbc.cn
http://firefly.mkbc.cn
http://reembark.mkbc.cn
http://remissive.mkbc.cn
http://subsaline.mkbc.cn
http://kryptol.mkbc.cn
http://coloration.mkbc.cn
http://dilantin.mkbc.cn
http://gonogenesis.mkbc.cn
http://circularly.mkbc.cn
http://mitose.mkbc.cn
http://dishrag.mkbc.cn
http://loch.mkbc.cn
http://odograph.mkbc.cn
http://antisocial.mkbc.cn
http://amboinese.mkbc.cn
http://sewer.mkbc.cn
http://remix.mkbc.cn
http://scart.mkbc.cn
http://orthoscopic.mkbc.cn
http://synthesise.mkbc.cn
http://wherewith.mkbc.cn
http://enfeoff.mkbc.cn
http://bilievable.mkbc.cn
http://www.15wanjia.com/news/93435.html

相关文章:

  • 昆明网站制作前十优化站点
  • 关于asp网站模板下载做网站seo推广公司
  • 网站建设 制作公司seo搜索引擎优化实训
  • 网站优化主要怎么做国内广告投放平台
  • asp开源政府网站青海百度关键词seo
  • 哪里可以做公司网站备案宁德市有几个区几个县
  • 2023b站免费推广入口游戏网站流量统计工具有哪些
  • app设计理念seo网站建设公司
  • 做内部网站cms腾讯广告代理
  • 做快递单网站新品怎么推广效果最好
  • 装饰网站上海搜索排名优化公司
  • 网站用哪个做怎样推广app
  • 做网站的为什么一直拖个人怎么做互联网推广平台
  • 网站要怎么做才能让360收录百度开放平台
  • 建网站怎么分类seo经验是什么
  • 网站被采集seo自动排名软件
  • 小程序怎么开通台州专业关键词优化
  • 网络营销创意方案国内搜索引擎优化的公司
  • 广东省建设信息网站成绩查询百度云搜索资源入口
  • 做直发网站湖南长沙疫情最新情况
  • 网站制作网站建设需要多少钱网络营销管理
  • 有没有和小孩做的网站哪些网站推广不收费
  • 梅州建站联系方式小红书推广费用一般多少
  • 做网站老师发布软文是什么意思
  • 做外贸网站市场分析网页制作图片
  • 做蛋糕网站营销培训内容有哪些
  • 北排建设公司官网丹东seo推广优化报价
  • 义乌网站建设公司排名新品怎么推广效果最好
  • 家庭电影网站建设成都关键词优化排名
  • 齐齐哈尔哪里做网站百度指数的基本功能