专栏首页程序手艺人nghttp2 - HTTP/2 C Library 简明教程(一)

nghttp2 - HTTP/2 C Library 简明教程(一)

nghttp2 - HTTP/2 C Library

nghttp2 是在C中的超文本传输协议版本2的实现. HTTP/2 的框架层被实现为可重用的C库. 最重要的是我们实现了一个HTTP/2客户端,服务器和代理.还为HTTP/2开发了负载测试和基准测试工具. HPACK编码器和解码器可用作公共API。 还有一个实验性的高级C++库. 我们有这个库的Python绑定,但是我们还没有完整的代码覆盖.

发展情况

为HTTP/2实现了RFC 7540 HTTP/2和RFC 7541 HPACK-头部压缩. nghttp2的代码库是从 spdylay中分出来的. (https://github.com/tatsuhiro-t/spdylay) project.

公共测试服务器

以下端点可用来测试nghttp2的实现.

  • https://nghttp2.org/ (TLS + ALPN/NPN) 此端点通过ALPN/NPN支持h2,h2-16,h2-14,和http/1.1,并且需要HTTP/2连接的TLSv1.2.
  • http://nghttp2.org/ (HTTP Upgrade and HTTP/2 Direct) h2c and http/1.1

编码风格

我们使用clang-format来统一格式化源代码.clang-format的配置文件.clang-format位于根目录下. 由于clang-format在版本之间产生稍微不同的结果,我们目前使用clang-format-5.0 .

为了检测任何违反编码风格的行为,我们建议设置git pre-commit hook来检查你更改的编码风格.pre-commit文件位于更目录. 将其复制到.git/hooks下,并确保是可执行文件. pre-commit 脚本使用clang-format-diff.py来检测任何样式错误. 如果它不在你的PATH中, 或者他以不同的名字存在(如debian中的clang-format-diff-5.0),可以将它添加到 PATH变量中,或者添加git选项clangformatdiff.binary来指向脚本.

针对emacs用户,将clang-format集合到emacs是非常容易的. clang-format.el应该与clang分发, 如果没有发现,请从这里下载,并将这些行添加到你的.emacs文件.

;; From
;; https://code.google.com/p/chromium/wiki/Emacs#Use_Google's_C++_style!
(load "/<path/to>/clang-format.el")
(add-hook 'c-mode-common-hook
     (function (lambda () (local-set-key (kbd "TAB")
                                         'clang-format-region))))

你可以找到其他的编辑器集成. http://clang.llvm.org/docs/ClangFormat.html.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [ 系统篇 ] 嵌入式系统中磁盘空间占用率100%

    系统OTA升级之后,发现/etc/config 分区占用率100%,着实郁闷,/etc/config 分配20M空间,实际占用的配置文件<1M, 怎么会磁盘占用...

    程序手艺人
  • [ 后端篇 ] 04 - 一次完整的HTTP连接

    为了了解HTTP 具体的传输协议,花时间阅读了MDN 上的的HTTP协议说明,写的很详细,中英文版本都有。 这里把看完的一些知识点重点记录

    程序手艺人
  • shell解析json字符串

    之前了解Lua中如何解析Json字符串,现在了解一下shell中如何解析Json字符串, 常用到的方法使用正则表达式配合grep/awk/sed来进行解析, 这...

    程序手艺人
  • CS231n笔记:通俗理解CNN

    上图中CNN要做的事情是:给定一张图片,是车是马还是飞机未知,现在需要模型判断这张图片里具体是一个什么东西

    mathor
  • 使用webstom或者idea上传代码到github或coding

    鉴于github网络速度太慢,建议用coding。先介绍github上传方式,因为webstom或idea集成了github,方法简单。 git是一个版本控制器...

    Ryan-Miao
  • 【AI白身境】Linux干活三板斧,shell、vim和git

    通过第一篇的介绍,我们已经知道在Linux下面操作会比windows下效率高很多,下面和大家讲解一下Linux的基础操作,默认大家已经装好了Linux系统。

    用户1508658
  • 一杯茶的时间,上手 Jest 测试框架

    现在让我们正式开始,茶和图雀社区精心准备的甜品更搭哦。 在项目根目录下新建src目录,存放我们的功能代码。然后创建src/dessert.js。

    一只图雀
  • HGE系列之二 更上层楼

    上次颇为感性的描述了一番HGE的轮廓,并给出了一个世界上最简单的HGE示例程序,不知读过的人有了怎样的认识,如果你说一点感觉都没有的话——哦,好吧,在此我再重...

    用户2615200
  • android native内存检测方案(二)

    android native 代码内存泄露 定位方案(一) 什么是 AddressSanitizer clang 是一个 C、C++、Objective-C 编...

    用户1263308
  • 泰国游戏区块链初创公司Gamedex获80万美元种子轮融资

    全球游戏行业持续增长,2017年市场规模已达到1100亿美元。预计到2020年,游戏行业的年复合增长率将达到6.2%,其中大部分增长来自亚洲。Gamedex是一...

    数据猿

扫码关注云+社区

领取腾讯云代金券