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

做网站编写如何制作小视频

做网站编写,如何制作小视频,如何登录公众号平台,制作网页的软件免费文章目录 前言一、如何选择序列化协议#xff1f;二、Netty 的零拷贝实现#xff1f;总结 前言 如何选择序列化协议#xff1f;Netty 的零拷贝实现#xff1f; 一、如何选择序列化协议#xff1f; 具体场景 对于公司间的系统调用#xff0c;如果性能要求在 100ms 以上的… 文章目录 前言一、如何选择序列化协议二、Netty 的零拷贝实现总结 前言 如何选择序列化协议Netty 的零拷贝实现 一、如何选择序列化协议 具体场景 对于公司间的系统调用如果性能要求在 100ms 以上的服务基于 XML 的 SOAP 协议是一个值得考虑的方案 基于 Web browser 的 Ajax以及 Mobile app 与服务端之间的通讯JSON 协议是首选。对于性能要求不太高或者以动态类型语言为主或者传输数据载荷很小的的运用场景JSON也是非常不错的选择。 对于调试环境比较恶劣的场景采用 JSON 或 XML 能够极大的提高调试效率降低系统开发成本。 当对性能和简洁性有极高要求的场景ProtobufThriftAvro 之间具有一定的竞争关系。 对于 T 级别的数据的持久化应用场景Protobuf 和 Avro 是首要选择。如果持久化后的数据存储在 hadoop 子项目里Avro 会是更好的选择。 对于持久层非 Hadoop 项目以静态类型语言为主的应用场景Protobuf 会更符合静态类型语言工程师的开发习惯。由于 Avro 的设计理念偏向于动态类型语言对于动态语言为主的应用场景Avro 是更好的选择。 如果需要提供一个完整的 RPC 解决方案Thrift 是一个好的选择。 如果序列化之后需要支持不同的传输层协议或者需要跨防火墙访问的高性能场景Protobuf 可以优先考虑。 protobuf 的数据类型有多种bool、double、float、int32、int64、string、bytes、enum、message。protobuf 的限定符required: 必须赋值不能为空、optional:字段可以赋值也可以不赋值、repeated: 该字段可以重复任意次数包括 0 次、枚举只能用指定的常量集中的一个值作为其值 protobuf 的基本规则每个消息中必须至少留有一个 required 类型的字段、包含 0 个或多个 optional 类型的字段repeated 表示的字段可以包含 0 个或多个数据[1,15]之内的标识号在编码的时候会占用一个字节常用[16,2047]之内的标识号则占用 2 个字节标识号一定不能重复、使用消息类型也可以将消息嵌套任意多层可用嵌套消息类型来代替组。 protobuf 的消息升级原则不要更改任何已有的字段的数值标识不能移除已经存在的required 字段optional 和 repeated 类型的字段可以被移除但要保留标号不能被重用。新添加的字段必须是 optional 或 repeated。因为旧版本程序无法读取或写入新增的required 限定符的字段。 编译器为每一个消息类型生成了一个.java 文件以及一个特殊的 Builder 类该类是用来创建消息类接口的。如UserProto.User.Builder builder UserProto.User.newBuilder();builder.build() Netty 中的使用ProtobufVarint32FrameDecoder 是用于处理半包消息的解码类ProtobufDecoder(UserProto.User.getDefaultInstance())这是创建的 UserProto.java 文件中的解码类ProtobufVarint32LengthFieldPrepender 对 protobuf 协议的消息头上加上一个长度为32 的整形字段用于标志这个消息的长度的类ProtobufEncoder 是编码类将 StringBuilder 转换为 ByteBuf 类型copiedBuffer()方法 二、Netty 的零拷贝实现 Netty 的接收和发送 ByteBuffer 采用 DIRECT BUFFERS使用堆外直接内存进行 Socket 读写不需要进行字节缓冲区的二次拷贝。堆内存多了一次内存拷贝JVM 会将堆内存Buffer 拷贝一份到直接内存中然后才写入 Socket 中。ByteBuffer 由 ChannelConfig 分配而 ChannelConfig 创建 ByteBufAllocator 默认使用 Direct Buffer CompositeByteBuf 类可以将多个 ByteBuf 合并为一个逻辑上的 ByteBuf, 避免了传统通过内存拷贝的方式将几个小 Buffer 合并成一个大的 Buffer。addComponents 方法将 header与 body 合并为一个逻辑上的 ByteBuf, 这两个 ByteBuf 在 CompositeByteBuf 内部都是单 独存在的, CompositeByteBuf 只是逻辑上是一个整体 通过 FileRegion 包装的 FileChannel.tranferTo 方法 实现文件传输, 可以直接将文件缓冲区的数据发送到目标 Channel避免了传统通过循环 write 方式导致的内存拷贝问题。 通过 wrap 方法, 我们可以将 byte[] 数组、ByteBuf、ByteBuffer 等包装成一个 Netty ByteBuf 对象, 进而避免了拷贝操作。 Selector BUG若 Selector 的轮询结果为空也没有 wakeup 或新消息处理则发生空轮询CPU 使用率 100% Netty 的解决办法对 Selector 的 select 操作周期进行统计每完成一次空的 select 操作进行一次计数若在某个周期内连续发生 N 次空轮询则触发了 epoll 死循环 bug。重建 Selector判断是否是其他线程发起的重建请求若不是则将原 SocketChannel 从旧的 Selector 上去除注册重新注册到新的 Selector 上并将原来的 Selector 关闭。 总结 如何选择序列化协议Netty 的零拷贝实现
http://www.hkea.cn/news/14393071/

相关文章:

  • 爱站网做网站吗茂名网站建设方案外包
  • 惠州网站制作定制福建建设执业资格注册管理中心网站
  • wordpress怎么做相关相似文章链接seo培训教程视频
  • 传统行业网站建设seo优化是什么职位
  • 网站建站专家页面设计站在学员的角度
  • 网站推广的岗位要求wordpress hide
  • 建筑局网站代做外国空间网站
  • 百度推广效果怎么样公司网站关键词优化
  • 做视频的免费素材网站连锁店管理网站开发
  • 济南网站建设首推企优互联不错网店运营的基本流程
  • 怎么发布自己的网站湖州网站建设湖州网站建设
  • 出入青岛最新通知今天seo优化培训学校
  • 宁波网站建设与设计制作wordpress自定义模块
  • 国外网页设计网站重庆网站建设c
  • 用什么软件做网站好wap卖料建站系统
  • ae如何做视频模板下载网站个人网上注册公司入口
  • 做电影网站解决版权问题在网上做网站
  • 汉中网站建设电话哪些网站上可以做租车
  • 做网站之前要安装什么上海餐饮网站建设
  • 会员管理网站ASP建设项目推广网
  • 网站怎么做定位功能建筑工程网上申报
  • 西安网站建设云阔成都最新通告今天
  • 邯郸建网站深圳网站建设维护服务
  • 网站图标ico海南省建设培训网站报名
  • 哪些网站是discuz做广州的企业网站建设
  • 网站出现wordpress网站制作 flash 修改
  • 免费招聘网站排行榜全球工业设计公司排名
  • 网站开发工程师专业好不好网站备案 做网站
  • 当阳市住房和城乡建设局网站做动态图的网站
  • 网站建设时间计划图网架