【计算机网络 - 基础问题】每日 3 题(二)

✍个人博客:Pandaconda-CSDN博客
📣专栏地址:http://t.csdnimg.cn/fYaBd
📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
📝推荐参考地址:https://www.xiaolincoding.com/(这个大佬的专栏非常有用!)

4. Json 格式描述

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,通常用于将数据从一个程序转换到另一个程序。它以易于阅读和编写的方式表示结构化数据。
JSON 使用键值对 (key-value pairs) 的方式来表示数据,其中键是字符串,值可以是字符串、数字、布尔值、数组、对象或者 null。
以下是 JSON 格式的描述:

  1. 对象(Object):用花括号({})表示,包含一组键值对,键和值之间用冒号(:)分隔,不同键值对之间用逗号(,)分隔。例如:
{"name": "John","age": 30,"city": "New York"
}
  1. 数组(Array):用中括号([])表示,包含一组值,值之间用逗号(,)分隔。数组可以包含字符串、数字、布尔值、对象、数组或者null。例如:
    [ “apple”, “banana”, “orange” ]
  2. 字符串(String):用双引号(")包裹的文本。例如:
    “Hello, World!”
  3. 数字(Number):可以是整数或浮点数。
  4. 布尔值(Boolean):可以是 true 或 false。
  5. 空值(Null):表示一个空值。

JSON 的格式描述非常简洁和易读,这使得它成为了一种通用的数据交换格式,在 Web 应用程序和 API 之间广泛使用。

5. Protobuf 协议了解吗?

Protobuf 是一种用于序列化结构化数据的二进制格式,由 Google 开发。它与 JSON 和 XML 相比,具有更高的效率和更小的存储空间。下面是一些关于 Protobuf 的要点:

  1. 结构化数据定义:Protobuf 使用 .proto 文件来定义数据结构和消息。在 .proto 文件中,你可以定义消息的字段和类型以及消息之间的关系。
  2. 语言无关:Protobuf 支持多种编程语言,包括 Java、C++、Python 等。通过使用 Google 提供的 Protobuf 编译器,可以将 .proto 文件编译成对应语言的代码文件,从而方便在不同的编程环境中使用。
  3. 二进制编码:与文本格式的 JSON 和 XML 不同,Protobuf 使用二进制编码,使得数据传输和存储更加高效。相同的数据结构和内容,在 Protobuf 中的表示通常比 JSON 或 XML 更小,序列化和反序列化的性能也更好。
  4. 高效的数据交换:Protobuf 不仅可以用于数据的持久化和存储,还可以用于网络通信和数据交换。将结构化数据序列化成 Protobuf 格式后,在不同的系统之间传输和解析数据变得更加高效。
  5. 向后兼容性:使用 Protobuf 定义的数据结构具有较好的向后兼容性。如果你需要对数据结构进行更新或扩展,可以通过定义新的字段和消息来实现,而不会破坏旧版本的数据。

虽然 Protobuf 在某些方面与 JSON 和 XML 有些不同,但它在性能和存储方面提供了更好的效率和可扩展性,因此被广泛应用于各种需要高效数据交换和通信的领域,如分布式系统、大型数据存储和网络通信等。

6. 为什么需要 URL 编码?

URL 编码是将 URL 中的特殊字符转换为特定格式的编码,以便在互联网上进行可靠的传输和处理。以下是需要 URL 编码的几个主要原因:

  1. 特殊字符处理:URL 中包含一些特殊字符,如空格、问号、引号、斜杠等。这些特殊字符在 URL 中有特定的含义,如果直接使用它们作为 URL 的一部分,可能会引起解析错误或混淆。URL 编码可以将这些特殊字符转换为特定的编码,保证 URL 的正确性和可解析性。
  2. 网络传输支持:URL 经常用于在网络上传输,包括通过 HTTP 请求发送 URL 或在网页中链接到其他页面。网络传输过程中,一些特殊字符可能会被不同的网络设备或协议解析错误,导致数据丢失或导航错误。URL 编码可以在传输过程中保证数据的完整性和可靠性。
  3. 多语言支持:URL 编码还可以处理多语言字符。由于 URL 是基于 ASCII 字符的,如果 URL 中包含非 ASCII 字符,如中文、日文等,必须将其转换为编码形式。URL 编码可以将非 ASCII 字符转换为 %XX 的形式,使其在 URL 中可传输和处理。

总之,URL 编码是为了确保 URL 的正确性、可解析性和安全性而进行的处理。通过将特殊字符转换为编码格式,可以保证 URL 在互联网上的传输和解析过程中不会引起问题,并能够支持多语言字符的处理。

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

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

相关文章

Android 用线程池实现一个简单的任务队列(Kotlin)

关于线程池,Kotlin和java的使用方式一样 在Android中,很多人喜欢用Handler的postDelayed() 去实现延时任务. 要使用postDelayed(),去实现延时任务队列,就不可避免要使用递归. 但是这样做,代码的简洁性,和书写的简易,就远不如使用线程池. 使用线程池的简单程度: private val…

从用户数据到区块链:Facebook如何利用去中心化技术

在数字化时代,用户数据的管理和保护已成为科技公司面临的重大挑战。作为全球最大的社交网络平台之一,Facebook不仅在用户数据的处理上积累了丰富的经验,也在探索如何利用去中心化技术,如区块链,来改进其数据管理和用户…

健身房预约小程序定制搭建,数字化运营管理

目前,健身已经成为了大众日常生活中不可或缺的一部分,不管是健身跑步、打羽毛球等,都受到了大众的欢迎!随着健身行业的快速发展,为了提高大众的健身体验,健身房预约系统得到了广泛发展。预约系统不仅解决了…

深入MySQL的索引实践及优化

文章目录 一、什么是索引二、数据结构——为什么是B树平衡二叉查找树红黑树B树(多叉)B树(多叉) 三、MySQL索引实战1.索引创建(1)自动创建索引(2)手动创建非聚簇索引(3)索引的代价 2.B树索引原则(1)等值匹配…

引领智能家居新风尚,WTN6040F门铃解决方案——让家的呼唤更动听

在追求高效与便捷的智能家居时代,每一个细节都承载着我们对美好生活的向往。WTN6040F,作为一款专为现代家庭设计的低成本、高性能门铃解决方案,正以其独特的魅力,悄然改变着我们的居家生活体验。 芯片功能特点: 1.2.4…

4.qml单例模式

这里写目录标题 js文件单例模式qml文件单例模式 js文件单例模式 直接添加一个js文件到qml中 修改内容 TestA.qml import QtQuick 2.0 import QtQuick.Controls 2.12 import "./MyWork.js" as MWItem {Row{TextField {onEditingFinished: {MW.setA(text)}}Button…

【D3.js in Action 3 精译_022】3.2 使用 D3 完成数据准备工作

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可视化最佳实践(下)1.4 本章小结 第二章…

飞机表面缺陷检测系统源码分享

飞机表面缺陷检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

3.Java高级编程实用类介绍(一)

三、Java高级编程实用类介绍(一) 文章目录 三、Java高级编程实用类介绍(一)一、枚举类型二、包装类三、Math 一、枚举类型 使用enum进行定义 public enum 枚举名字{值1,值2.... }二、包装类 每个基本类型在java.lang包中都有一个相应的包装类 /** new包装类(字符…

4、(PCT)Point Cloud Transformer

4、(PCT)Point Cloud Transformer 论文链接:PCT论文链接 本篇论文介绍Transformer在3D点云领域的应用,Transformer在NLP领域和图像处理领域都得到了广泛的应用,特别是近年来在图像领域的应用,本篇论文主要…

【FastAPI】实现服务器向客户端发送SSE(Server-Sent Events)广播

在FastAPI中实现服务器向客户端发送SSE(Server-Sent Events)广播,可以通过以下步骤实现。SSE是一种服务器推送技术,允许服务器发送实时数据到客户端,通常用于创建实时更新的应用程序。 1. 安装必要的依赖 首先&#…

Neo4j入门案例:三星堆

创建一个关于三星堆的知识图谱可以是一个非常有趣的项目,它可以帮助理解如何使用Neo4j来存储和查询复杂的关系数据。三星堆文化以其独特的青铜器、金器和其他文物而闻名,这为我们提供了一个丰富的历史背景来构建知识图谱。 数据模型定义 实体类型&#…

[Python]一、Python基础编程

F:\BaiduNetdiskDownload\2023人工智能开发学习路线图\1、人工智能开发入门\1、零基础Python编程 1. Python简介 Python优点: 学习成本低开源适应人群广泛应用领域广泛1.1 Python解释器 下载地址:Download Python | Python.org 1.2 Python开发IDE -- Pycharm 2. 基础语法…

JAVA—组件及事件处理

对于使用JAVA的GUI程序的学习了解,学习常用的组件,容器和常用的一些API 1.java Swing 概述 java Swing 包下提供了强大的用于开发桌面程序的API 理解面向对象编而简单学习一些内容 2.窗口 介绍: 窗口是基于JFrame类实例的一个底层容器&#…

C++中的new与delete

目录 1.简介 2.底层 1.简介 new是升级版的malloc,它会先开空间再去调用构造函数。 delete是升级版的free,它会先调用析构函数再free掉空间。 class A { public:A(int a10, int b10){a a1;b b1;}private:int a;int b; };int main() {//new会先开空间…

Leetcode—322. 零钱兑换【中等】(memset(dp,0x3f, sizeof(dp))

2024每日刷题&#xff08;159&#xff09; Leetcode—322. 零钱兑换 算法思想 dp实现代码 class Solution { public:int coinChange(vector<int>& coins, int amount) {int m coins.size();int n amount;int dp[m 1][n 1];memset(dp, 0x3f, sizeof(dp));dp[0][…

Vue(12)——路由的基本使用

VueRouter 作用&#xff1a;修改地址栏路径时&#xff0c;切换显示匹配的组件 基本步骤&#xff08;固定&#xff09; 下载&#xff1a;下载VueRouter模块到当前工程引入安装注册创建路由对象注入&#xff0c;将路由对象注入到new Vue 实例中&#xff0c;建立关联 发现了#/表…

C#使用Access数据库使用总结

话说这Access数据库确实是有点年代了&#xff0c;前面在深圳的一家放射医疗公司&#xff0c;数据库用的Access&#xff0c;后面在我的建议下&#xff0c;换成了SQLite。用SQLite多舒服&#xff0c;不用装Runtime&#xff0c;还可以用EF。Access得装Runtime&#xff0c;也用不了…

Spring Boot:现代化Java应用开发的艺术

目录 什么是Spring Boot&#xff1f; 为什么选择Spring Boot&#xff1f; Spring Boot的核心概念 详细步骤&#xff1a;创建一个Spring Boot应用 步骤1&#xff1a;使用Spring Initializr创建项目 步骤2&#xff1a;解压并导入项目 步骤3&#xff1a;构建和配置项目 po…

python实战实例:素数回文数的个数

题目描述 求 11 到 n 之间&#xff08;包括 n&#xff09;&#xff0c;既是素数又是回文数的整数有多少个。 输入格式 一个大于 11小于 10000。 输出格式 11 到 n之间的素数回文数个数。 输入输出样例 输入 # 23 输出 # 1 说明/提示 回文数指左右对称的数&#xff…