WolfcsTech


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 公益 404

OkHttp3中的HTTP2首部压缩

发表于 2016-12-15 | 分类于 网络协议 | | 阅读次数:

当前网络环境中,同一个页面发出几十个HTTP请求已经是司空见惯的事情了。在HTTP/1.1中,请求之间完全相互独立,使得请求中冗余的首部字段不必要地浪费了大量的网络带宽,并增加了网络延时。以对某站点的一次页面访问为例:

阅读全文 »

在Android中使用FlatBuffers

发表于 2016-12-08 | 分类于 Android开发 | | 阅读次数:

总览

先来看一下 FlatBuffers 项目已经为我们提供了什么,而我们在将 FlatBuffers 用到我们的项目中时又需要做什么的整体流程。如下图:

在使用 FlatBuffers 时,我们需要以特殊的格式定义我们的结构化数据,保存为 .fbs 文件。FlatBuffers 项目为我们提供了编译器,可用于将 .fbs 文件编译为Java文件,C++文件等,以用于我们的项目。FlatBuffers 编译器在我们的开发机,比如Ubuntu,Mac上运行。这些源代码文件是基于 FlatBuffers 提供的Java库生成的,同时我们也需要利用这个Java库的一些接口来序列化或解析数据。

阅读全文 »

在Android中使用Protocol Buffers

发表于 2016-12-02 | 分类于 Android开发 | | 阅读次数:

网络性能优化的终极手法就是不通过网络传输,但这常常是不可能的。但我们还是可以通过对网络传输的数据本身做优化,来获得更好的性能,性能就应该从每一个可能的地方榨取。这里来看一下 Protocol Buffers 。

Protocol Buffers 是一个序列化结构数据的灵活、高效且自动化的机制——类似于XML,但更小,更快,更简单。定义一次结构化数据的方式,然后就可以使用专门生成的代码简单地写入,或用不同的语言从大量的数据流读出结构化数据。甚至可以更新数据结构而不破坏已部署的基于 老 格式编译的程序。我们看一下要如何将 Protocol Buffers 用到我们的Android项目中。

阅读全文 »

在Java中使用Protocol Buffers

发表于 2016-12-02 | 分类于 Java开发 | | 阅读次数:

这份教程为Java开发者提供了使用 Protocol Buffer 的基本介绍。通过创建一个简单的示例应用,它展示了

  • 在 .proto 文件中定义消息格式。
  • 使用 Protocol Buffer 编译器。
  • 使用Java Protocol Buffer API读写消息。
阅读全文 »

在C++中使用Protocol Buffers

发表于 2016-12-02 | 分类于 C/C++开发 | | 阅读次数:

下载并编译Protocol Buffer

这份教程为C++开发者提供了使用 Protocol Buffer 的基本介绍。通过创建一个简单应用,它展示了

  • 在 .proto 文件中定义消息格式。
  • 使用 Protocol Buffer 编译器。
  • 使用C++ Protocol Buffer API读写消息。
阅读全文 »

Protobuf开发者指南

发表于 2016-11-22 | 分类于 网络协议 | | 阅读次数:

欢迎访问 Protocol Buffers ——一个用于通信协议、数据存储及其它场景中,语言无关、平台无关、可扩展的结构化数据序列化方法——的开发者文档。

阅读全文 »

HTTP/2 流量调试

发表于 2016-11-18 | 分类于 网络调试 | | 阅读次数:

当前主要可以通过浏览器和Wireshark等工具调试HTTP/2流量。

使用浏览器调试HTTP/2流量

HTTP/2 引入二进制分帧层(Binary Framing),将每个请求和响应分割为更小的帧,并对它们进行二进制编码。与此同时,HTTP/2 沿用之前 HTTP/1.1中的绝大部分语义,上层应用基本上感知不到 HTTP/2 的存在。通过浏览器提供的网络调试工具我们可以清晰地看到请求和响应的详细信息。

阅读全文 »

非对称加密与证书

发表于 2016-11-18 | 分类于 安全 | | 阅读次数:

SSL/TLS是一个密码学协议,它的目标并不仅仅是网页内容的加密传输。SSL/TLS的主要目标有四个:加密安全、互操作性、可扩展性和效率。对于安全性的保障,它还会从多个方面进行,包括机密性,真实性以及完整性。机密性是指,传输的内容不被除通信的双方外的第三方获取;真实性是指,通信的对端正是期待的对端,而不是其它第三方冒充的;完整性则是指,传输的数据是完整的,数据没有被篡改或丢失。为了平衡多种需求,SSL/TLS被设计为一个安全框架,其中可以应用多种不同的安全方案,每种方案都由多个复杂的密码学过程组成。不同的安全方案,在安全性和效率之间有着不同的取舍,并由不同的密码学过程组成。

阅读全文 »

Chromium GN构建工具的使用

发表于 2016-11-16 | 分类于 Android开发 | | 阅读次数:

Chromium整体的构建过程大体如下:

Chromium build flow

阅读全文 »

OkHttp3 HTTP请求执行流程分析

发表于 2016-11-15 | 分类于 网络协议 | | 阅读次数:

OkHttp3的基本用法

使用OkHttp3发送Http请求并获得响应的过程大体为:

  1. 创建OkHttpClient对象。OkHttpClient为网络请求执行的一个中心,它会管理连接池,缓存,SocketFactory,代理,各种超时时间,DNS,请求执行结果的分发等许多内容。
  2. 创建Request对象。Request用于描述一个HTTP请求,比如请求的方法是”GET”还是”POST”,请求的URL,请求的header,请求的body,请求的缓存策略等。
  3. 利用前面创建的OkHttpClient对象和Request对象创建Call对象。Call是一次HTTP请求的Task,它会执行网络请求以获得响应。OkHttp中的网络请求执行Call既可以同步进行,也可以异步进行。调用call.execute()将直接执行网络请求,阻塞直到获得响应。而调用call.enqueue()传入回调,则会将Call放入一个异步执行队列,由ExecutorService在后台执行。
  4. 执行网络请求并获取响应。
阅读全文 »
1…151617…21
Han Pengfei

Han Pengfei

207 日志
19 分类
30 标签
GitHub 豆瓣 知乎 E-Mail
Links
  • Android Developers
  • Android Open Source Project
  • 蚂蚁网
© 2016.09.16 — 2020 Han Pengfei
由 Hexo 强力驱动
|
主题 — NexT.Mist v6.0.3