应用层自定义协议(组织数据的格式)

概念

        在进行网络传输数据的时候,通常是将要传输的数据组织成一个字符串,再将字符串转换为一个字节流进行网络传输数据,而数据组织的格式是多种多样的,我们只需要保证,客户端和服务器对于字符串的组织和解析统一即可

现有的数据组织格式

        由于只需要保证客户端和服务器对于字符串的组织和解析统一即可,所以对于数据的组织格式是多种多样,天马行空的,所以有大佬就提出了现成的数据组织格式

        一.xml格式

                xml格式例子

        

        上图是xml格式的示例,格式有点像前端的html和css,用了很多的标签采用键值对(key-value)的形式非常清晰的把结构化数据表示出来了

        但是缺点也很明显,表示数据需要引入大量的标签,看起来很繁琐,同时由于在进行网络传输的时候标签也需要一起进行传输,所以会占用不少的网络带宽(国内最贵的硬件资源,就是网络带宽)所以现在xml格式以及没有多少地方会使用了

        二.json格式

        json格式例子

        上图是json格式的示例,在json中,使用{ }表示键值对,使用[ ]表示数组,数组里的每一个元素,可以是数字,可以是字符串,还可以是其他的{ }或[ ]

        在json数据组织格式中使用的核心思路也是键值对(key-value),很明显,json组织数据的格式比xml清新很多,这是当前最主流使用的一种网络传输数据的格式,未来在实际开发中会经常用到json格式的数据

        但是即使是json格式来组织数据依然会引入一些标签,在传输数据的时候占用部分的网络带宽,这也是json格式组织数据的一个小小的缺点

        三.protobuffer格式

        这是谷歌提出的一套,二进制的数据序列化方式,使用二进制的方式,约定某几个字节,表示哪个属性,这样就不需要引入标签,就可以最大限度的节省空间,就可以在传输数据的时候只传输确实需要的数据,节省网络带宽,最大化效率

        但是也有缺点,二进制数据是无法用肉眼观察的,不方便调试,使用起来比较复杂,需要专门编写一个proto文件(有自己一系列的语法规则),描述数据的格式咋样的,再进一步的通过大佬提供的工具,把proto文件转换成一些代码,再嵌入到程序中使用

实际开发中是开发效率重要还是运行效率重要

        而在我们实际开发中是开发效率重要还是运行效率重要呢,通常来说是开发效率重要,因为想要提高运行效率,升级硬件也是一种重要手段,不需要花太多的钱,而想要提高开发效率,就得招聘更多的程序猿,在软件开发领域中,人力成本,永远是最贵的,所以通常对于运行效率没有严苛要求的话,我们还是使用json格式来组织数据更多一点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/71182.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构单链表

单链表 1 链表的概念及结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链 接次序实现的 。 在我们开始讲链表之前,我们是写了顺序表,顺序表就是类似一个数组的东西&#xff0…

【一】ubuntu20.04上搭建containerd版( 1.2.4 以上)k8s及kuboard V3

k8s 部署全程在超级用户下进行 sudo su本文请根据大纲顺序阅读! 一、配置基础环境(在全部节点执行) 1、安装docker 使用apt安装containerd 新版k8s已经弃用docker转为containerd,如果要将docker改为containerd详见&#xff1a…

论文阅读 - Understanding Diffusion Models: A Unified Perspective

文章目录 1 概述2 背景知识2.1 直观的例子2.2 Evidence Lower Bound(ELBO)2.3 Variational Autoencoders(VAE)2.4 Hierachical Variational Autoencoders(HVAE) 3 Variational Diffusion Models(VDM)4 三个等价的解释4.1 预测图片4.2 预测噪声4.3 预测分数 5 Guidance5.1 Class…

如何仿写简易tomcat 实现思路+代码详细讲解

仿写之前,我们要搞清楚都要用到哪些技术 自定义注解,比如Tomcat使用的是Servlet,我们可以定义一个自己的MyServlet构造请求体和返回体,比如tomcat使用HttpRequest,我们可以自己定义myHttpRequestjava去遍历一个指定目…

当你出差在外时,怎样轻松访问远程访问企业局域网象过河ERP系统?

文章目录 概述1.查看象过河服务端端口2.内网穿透3. 异地公网连接4. 固定公网地址4.1 保留一个固定TCP地址4.2 配置固定TCP地址 5. 使用固定地址连接 概述 ERP系统对于企业来说重要性不言而喻,不管是财务、生产、销售还是采购,都需要用到ERP系统来协助。…

mysql between and 和 大于小于的区别

1&#xff09;表达式 between 下界值 and 上界值 ——限定"表达式"的值介于"下界值"到"上界值"之间的所有值&#xff0c;并且包含"下界值"和"上界值"&#xff1b; 2&#xff09;表达式 >下界值 and 表达式<上界值 ——…

进程|详解~什么是进程 以及 进程创建原理和过程

1.什么是进程 进程是正在运行的程序。 UNIX标准将进程定义为&#xff1a;其中运行着一个或者多个线程的地址空间和这些线程所需要的系统资源(分配给线程线程共享系统资源)。 组成&#xff1a;进程由程序代码、数据、变量(占用着系统内存)、打开的文件(文件描述符)、环境组成…

爬虫IP时效问题:优化爬虫IP使用效果实用技巧

目录 1. 使用稳定的代理IP服务提供商&#xff1a; 2. 定期检测代理IP的可用性&#xff1a; 3. 配置合理的代理IP切换策略&#xff1a; 4. 使用代理IP池&#xff1a; 5. 考虑代理IP的地理位置和速度&#xff1a; 6. 设置合理的请求间隔和并发量&#xff1a; 总结 在爬虫过…

Springboot 实践(1)MyEclipse2019创建maven工程

项目讲解步骤&#xff0c;基于本机已经正确安装Java 1.8.0及MyEclipse2019的基础之上&#xff0c;Java及MyEclipse的安装&#xff0c;请参考其他相关文档&#xff0c;Springboot 实践文稿不再赘述。项目创建讲解马上开始。 一、首先打开MyEclipse2019&#xff0c;进入工作空间选…

内网穿透-外远程连接中的RabbitMQ服务

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

SpringBoot整合Shiro实现登录认证,鉴权授权

文章目录 前言一、shiro简介二、环境搭建2.1.数据库2.1.1user用户表2.1.2user_role用户角色关系表2.1.3role角色表2.1.4role_permission角色权限关系表2.1.5permission权限表 2.2导坐标2.3实体类2.3.1User2.3.2Role2.3.3Permission 2.4MVC三层2.4.1User2.4.1.1mapper层2.4.1.2s…

将单个训练数据集文件拆分为:image文件和label文件(pytorch学习+蚂蚁蜜蜂数据集)

蚂蚁蜜蜂分类数据集下载链接&#xff1a;https://download.pytorch.org/tutorial/hymenoptera_data.zip 要实现如图操作&#xff1a; 将ants分为ants_image和ants_label 将bees分成bees_image和bees_label 创建ants_label和bees_label&#xff0c;并且以图片名作为txt文件的…