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

建设网站目的及功能定位东莞关键词排名快速优化

建设网站目的及功能定位,东莞关键词排名快速优化,太原市建设工程交易中心网站,解决wordpress注册目录 一、为什么需要消息序列化#xff1f;二、常用的消息序列化方式1#xff09;Java原生序列化#xff08;默认#xff09;2#xff09;JSON格式3#xff09;Protobuf 格式4#xff09;Avro 格式5#xff09;MessagePack 格式 三、总结 RabbitMQ 是一个强大的消息中间… 目录 一、为什么需要消息序列化二、常用的消息序列化方式1Java原生序列化默认2JSON格式3Protobuf 格式4Avro 格式5MessagePack 格式 三、总结 RabbitMQ 是一个强大的消息中间件广泛应用于 分布式系统 中。在使用 RabbitMQ 时选择 合适的方式来序列化 消息可以提高性能、可靠性、扩展性。 一、为什么需要消息序列化 在使用 RabbitMQ 时消息需要在生产者和消费者之间进行传递。由于网络通信只能传输二进制数据因此需要对消息进行 序列化将对象转换为二进制数据和反序列化将二进制数据转换回对象。这样才能实现生产者与消费者之间的无缝通信。 消息序列化的目标是将对象转换为字节流。以便于在网络上进行传输。在选择序列化方式时我们 需要考虑以下因素 性能 序列化和反序列化的效率直接 影响消息传输的速度和延迟。空间开销 序列化后的字节流大小会 影响网络带宽的利用 和 存储空间的占用。可读性 序列化后的字节流是否 易于解析和理解方便调试和维护。兼容性 序列化方式是否 支持不同的编程语言 和 版本之间的交互。 二、常用的消息序列化方式 RabbitMQ 本身不直接处理消息内容的序列化它主要负责消息的路由、存储和传递。当发送或接收消息时客户端库如Java 中的 RabbitTemplate 或 Spring AMQP 框架会根据内部配置或默认设置来决定如何对消息体进行序列和反序列化。 1Java原生序列化默认 Java 自带的 Serializable 接口和 ObjectOutputStream/ObjectInputStream 可以将对象转换为字节数组进行传输。在 Java Spring AMQP 中默认的消息序列化方式就是 Java 原生序列化。 优点 简单易用 Java 内置支持只需让需要序列化的类实现 Serializable 接口即可。 缺点 效率低 生成的数据流可能比 JSON、Protocol Buffers 等二进制格式更大导致存储和传输效率低。安全风险 由于序列化机制中包含了类的信息存在安全风险如恶意攻击者可以构造特殊序列化数据以执行任意代码例如通过 readObject 方法的重写。语言独立性差 Java 原生序列化只适用于 Java 环境不便于与其他编程语言间的通信。 为了克服这些限制并提供更好的性能和互操作性开发者通常会选择更现代和灵活的方式如 JSON 或 Protobuf 等。 2JSON格式 JSONJavaScript Object Notation是一种轻量级的数据交换格式易于阅读和编写。它以键值对的形式表示数据并且在不同的编程语言中都有广泛的支持。 优点 易于使用和调试。兼容性好支持不同编程语言和版本之间的交互。 缺点 性能较差相比其他序列化方式JSON 的序列化和反序列化速度较慢。字节流相对较大占用网络带宽较多。 在 Spring AMQP 中可以配置 MessageConverter 来替换默认的序列化器例如使用 Jackson 库提供的 Jackson2JsonMessageConverter 将消息转换为 JSON 格式。 Spring Boot 可以通过以下方式更改默认的消息序列化策略 spring:rabbitmq:message-converter: org.springframework.amqp.support.converter.Jackson2JsonMessageConverter或者在 Java 配置类中定义 Bean public MessageConverter jsonMessageConverter() {return new Jackson2JsonMessageConverter(); }Autowired public void configureRabbitTemplate(RabbitTemplate rabbitTemplate) {rabbitTemplate.setMessageConverter(jsonMessageConverter()); }这样消息体就会被自动转换成 JSON 字符串发送到 RabbitMQ并在接收端反序列化回对应的 Java 对象。 补充 如果对象中使用了 LocalDateTime在反序列化的时候会报错InvalidDefinitionException: Cannot construct instance of java.time.LocalDateTime (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) 解决方式 首先需要引入 jackson-datatype 依赖如果之前已经引入了 spring-boot-starter-web 依赖则不需要手动添加。 !-- LocalDateTime反序列化 -- dependencygroupIdcom.fasterxml.jackson.datatype/groupIdartifactIdjackson-datatype-jsr310/artifactIdversion2.4.0/version /dependency需要在 LocalDateTime 类型的字段上面添加 JsonDeserialize 注解和 JsonSerialize 注解来指定如何序列化和反序列化java.time.LocalDateTime类型的数据如下所示 import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;JsonDeserialize(using LocalDateTimeDeserializer.class) JsonSerialize(using LocalDateTimeSerializer.class) JsonFormat(pattern yyyy-MM-dd HH:mm:ss, timezone GMT8) private LocalDateTime createTime;补充 上述代码中JsonFormat 注解是完善显示形式。 使用 JsonFormat 注解前 使用 JsonFormat 注解后 3Protobuf 格式 ProtobufProtocol Buffers是 Google 开发的一种高效的数据序列化格式。它以 二进制格式 存储数据可以通过定义消息结构和 IDLInterface Description Language文件来实现消息的序列化和反序列化。 优点 高性能比 JSON 和 XML 等方式更快速和高效。字节流较小占用网络带宽和存储空间较小。 缺点 由于二进制格式存储不易读和调试。 4Avro 格式 Avro 是一种基于 Schema 的数据序列化系统由 Apache 开发。Avro 使用简单的动态 Schema 来定义消息格式并支持多种编程语言。它具有高效的压缩和快速的序列化/反序列化性能。 优点 高性能支持快速的序列化和反序列化。字节流小占用网络带宽和存储空间较小。 缺点 Schema 管理较为复杂需要定义并维护 Schema。 5MessagePack 格式 MessagePack 是一种快速、紧凑且可读写的二进制序列化格式。它以键值对的形式表示数据并支持多种编程语言。MessagePack的主要目标是提供高性能的序列化和反序列化。 优点 高性能比 JSON 和 XML 等方式更快速和高效。字节流较小占用网络带宽和存储空间较小。 缺点 不易读和调试。 三、总结 RabbitMQ消息序列化 是构建 分布式系统 的关键环节之一。在选择序列化方式时需要综合考虑性能、空间开销、可读性和兼容性等因素。根据具体需求 选择合适的序列化方式并遵循最佳时间可以提高系统的性能、可靠性和扩展性。通过测试、优化和监控不断改进序列化方案使其更好地 适应实际应用场景。 整理完毕完结撒花~ 参考地址 1.Spring boot使用Rabbitmq注解及消息序列化https://blog.csdn.net/cristianoxm/article/details/114883340 2.RabbitMQ消息序列化的终极指南https://baijiahao.baidu.com/s?id1773630009654004953wfrspiderforpc
http://www.w-s-a.com/news/69670/

相关文章:

  • seo对网站优化网站更换程序
  • 网站建设放什么科目中小学生在线做试卷的网站6
  • 网站建设推广公司排名绥化建设局网站
  • 凡科做的网站为什么打不开苏州行业网站建设
  • 南昌定制网站开发费用微信小商店官网入口
  • 深圳网站建设费用找人做的网站怎么看ftp
  • 做网站cookie传值dedecms网站后台
  • 温州网站推广网站建设要学会什么
  • c 网站开发框架品牌策划方案范文
  • 儿童摄影作品网站多元网络兰州网站建设
  • 电脑上不了建设厅网站常德网站建设费用
  • 做单页免费模板网站最新办公室装修风格效果图
  • 中国铁路建设投资公司网站熊学军想开网站建设公司
  • 优化一个网站多少钱网站开发北京
  • html教学关键词优化价格
  • 黄冈论坛网站有哪些给wordpress首页添加公告栏
  • 初中做数学题的网站做淘宝必备网站
  • 买拆车件上什么网站谁有那种手机网站
  • 一家专做有机蔬菜的网站万户网络是干嘛的
  • 十堰百度网站建设八宝山做网站公司
  • 地区电商网站系统建筑施工图纸培训班
  • 网站外包维护一年多少钱医院网站 功能
  • 电子商务市场的发展前景seo推广平台服务
  • 乐清网页设计公司哪家好seo推广任务小结
  • 360建筑网是什么pc优化工具
  • 越秀免费网站建设风景区网站建设项目建设可行性
  • 网站建站公司一站式服务学校网站开发招标
  • asp.net mvc 5 网站开发之美电商网站 流程图
  • 室内设计素材网站推荐郑州专业做淘宝网站建设
  • 新建的网站怎么做seo优化模板规格尺寸及价格