在上一篇《 主程的晋升攻略(4):TCP、消息分包和协议设计》中谈了协议设计的一些话题,这里补充聊聊HTTP协议和二进制协议的对比。

HTTP协议是一种文本协议,也是一种Name-Based协议,就从这两方面来说。

文本协议 vs 二进制协议

文本协议的特点:
    便于人
    易于阅读、理解、调试、构造
    解析复杂、冗余多
    需要考虑字符转义

二进制协议的特点:
    便于机器

Name-Based vs Position-Based

Name-Based协议的特点:
    协议字段都 用Name标识
    协议字段 与位置无关
    协议字段可缺省
    新增协议字段比较方便
    解析复杂
    需要考虑字符转义

Position-Based协议的特点:
    每个协议字段都 有特定的位置
    新增协议字段需要做好协议版本管理( protobuf这类就挺好)
    解析更高效

-------- 分割线 ---------
主程的晋升攻略(1):重要的引言
主程的晋升攻略(2):技术篇概要
主程的晋升攻略(3):IP、DNS和CDN
主程的晋升攻略(4):TCP、消息分包和协议设计
主程的晋升攻略(6):CGI和FastCGI

推荐 wecode程序员云笔记──为程序员而生的 开源、 简洁高效的云笔记软件,使用有道云做云端存储。
★ 【 语法高亮】目前支持 C/C++、C#、Pascal、Java、VB.Net、XML、HTML、Python、SQL等多种方。
★ 【 云端存储】除了本地笔记本外,还增加了云存储功能,目前使用有道云笔记做为云存储。
★ 【 文档加密】提供了文档加密功能,确保敏感文档的安全性。
★ 【 多个本地笔记本】支持多个本地笔记本,你能够新建本地笔记本、打开、压缩和备份本地笔记本。
★ 【 文章附件】能够为每个文章添加多个附件,并能够在临时目录中打开附件、导出附件。有道云的附件也存储在云端。

主程的晋升攻略(5):HTTP协议和二进制协议的对比相关推荐

  1. 主程的晋升攻略(1):重要的引言

    尽管是引言,但也非常重要. 程序猿怎样成长?这个话题百度有大约170万个相关结果,介绍了不少从菜鸟到老鸟的经验,但怎样成长为主程序猿(下面简称主程),网上的"帮助文档"不完好,也缺 ...

  2. 主程的晋升攻略(2):技术篇概要

    技术是程序员安身立命的家伙,主程的技术不强,向下难以服众,向上有负重托. 或许有人会问:技术深度上该挖多深才能做好主程?程序员至少有两个高阶成长方向: 1.技术型专家非常热爱技术本身,往往会钻研得非常 ...

  3. 主程的晋升攻略(3):IP、DNS和CDN

    有段时间我面试程序员时,喜欢问这个问题:局域网IP有哪些IP段?由这个问题再追问NAT(网络地址转换). 为什么不是每个设备一个公网IP? 先说个关于QQ的小故事,最早开发QQ时,小马哥他们也没想到Q ...

  4. 主程的晋升攻略(7):服务器模型谈

    在上一篇< 主程的晋升攻略(6):CGI和FastCGI>中,讲到Web服务器和CGI/FastCGI能动态输出内容,从而提供更强大的业务处理能力.Web服务器这种架构,我称之为Web模式 ...

  5. 程序员发展与晋升攻略

    > 思想互通: 1.PC时代,学的Java SE,写的是Windows软件  2.Nokia时代,学的是Java ME,写的是Symbian应用  3.Android时代,学的是Android, ...

  6. 来自十年互联网人的大厂等级晋升攻略

    今天给大家分享一个大厂的等级划分.这种划分其实每个大公司的内部都有,直接拿公司内部的资料来分享肯定是不妥当的,而且那些东西写得太正式,读起来很枯燥. 今天分享的这篇,是参考了一些大厂的划分,再加上自身 ...

  7. php yield 携程,爬取携程国内地区攻略评论

    这里我们用scrapy 框架爬取数据 爬虫文件里面的代码: # -*- coding: utf-8 -*- import json import re import os import scrapy ...

  8. 海淘转运攻略之2017年黑色星期五海淘转运公司对比推荐

    海淘转运毕竟时间比较长,少则三四天(日淘),多则十天半个月(美淘.德淘):要是运气不好,给海关抽查到,甚至得一个多月才能收货,因而说到海淘转运公司推荐,也不好推荐,毕竟每个转运公司都会有好评.差评,都 ...

  9. 技术合伙人必备攻略---app开发技术栈调研--多种方案对比--uniapp学习路线

    app开发技术方案对比 app开发主要有几种技术方案如下: 原生开发 原生开发简介 原生(native)开发从定义上来说 一般是指用原生开发语言开发,原生开发语言就是开发整个系统时使用的编程语言. 对 ...

最新文章

  1. Web App、Hybrid App与Native App的设计差异
  2. oracle 10g SYSAUX表空间快速增长之WRH$_SQL_PLAN篇
  3. JS 原生实现复选框全选反选功能
  4. tomcat优化-有改protocol 和 缓存 集群方案
  5. 欢迎使用CSDN-markdown编辑器-入门
  6. 疫情之下,哪些行业正在逆势爆发?
  7. AI编辑SVG格式的相关问题
  8. 毕设题目:Matlab故障分析
  9. 目标检测——CodeBook背景建模(原理+Opencv实现代码)
  10. mac Android studio 使用 阿里 maven 报错
  11. 计算机处理器采用多核,电脑处理器多核心与高主频哪个更重要【详细介绍】
  12. 7-9 把字符串中的大写字母改成小写字母 (10分)
  13. 安卓使用ContentProvider实现读取手机联系人和短信内容
  14. Https接口异常javax.net.ssl.SSLHandshakeException问题
  15. android按键模拟测试
  16. 蓝汛之5376脚位图
  17. 萃聚는 分散中의 統合
  18. docker webdav_跨主机容器共享数据卷(webdav 双向同步)
  19. Confidence-guided roadside individual tree extraction for ecological benefit estimation
  20. 狂神说SpringBoot最全笔记

热门文章

  1. Element UI 中国省市区级联
  2. mysql数据驱动的作用_MySQL数据优化
  3. Animal()动物类,关于多态的练习
  4. 启动计算机的程序方法单击,启动Windows应用程序的方法
  5. python 实时数据推送_python scrapy 爬取金十数据并自动推送到微信
  6. 为什么很多学华为、阿里的公司,最后都死掉了?
  7. “金融上链”正当时,百度智能云推出“链上可信金融”解决方案
  8. 练习:压缩字符串和逆序英文语句
  9. Linux下的PCB结构体
  10. 判断体重是否标准 男标准=身高-100±3 女标准=身高-110±3