IO 流的一些优化

Java 中,IO 流的 read 和 write 方法都是消耗系统资源的操作,多数操作系统在系统级进行了优化,比如在进行写文件的时候,先将字节存储到内核缓冲里,当流关闭或刷新时,再将内核缓冲的内容写入磁盘。

关于系统级的优化,这里不深入了,整理一下应用中 IO 的优化知识,主要是缓冲流的一些注意点。在 Socket 编程以及文件的读写操作等,缓冲流尤为重要。

Read More

HTTP 缓存

一次网络通信,也许会有多个缓存,从数据库缓存,服务器缓存,代理服务器缓存,中间服务器缓存,到本地浏览器缓存等,一路缓存下来,不仅减轻服务端的压力,本地用户体验也流畅了。

HTTP 的缓存是在请求/响应头里控制的,不同版本的 HTTP 协议,缓存配置字段也有些区别。

Read More

SSH 使用以及与 HTTPS 的对比

HTTPS 与 SSH,他们都是网络通信的协议,主要作用都是加密网络通信数据,他们之间的区别广义上讲,差不了多少,以至于有人把他们比作 苹果和桔子的关系,我们日常使用的 GitHub,在 clone 仓库的时候,也提供了 HTTPS 和 SSH 两种方式,都能 clone 下来。

但 SSH 和 HTTPS 还是不同的,HTTPS 大量用于客户端服务器直接的安全通信,SSH 主要用于两台电脑之间登录、共享数据和协同工作。

Read More

HTTPS 安全机制

使用 HTTPS 时,所有的 HTTP 请求和响应数据在发送到网络之前,都要先进行加密。 HTTPS 在 HTTP 下面提供了一个数据传输级的安全层(SSL or TLS),用来对数据进行加密。

写这篇文章时,看到了一篇很形象的阐述 HTTPS 的安全的故事,故事有趣不枯燥,推荐大家可以直接看看这篇 HTTPS 的故事

Read More

HTTP 授权认证

Web 上对于一些私人数据,获取时需要进行用户认证,即要用户名和密码,才能访问资源。浏览器上可以通过 Cookie 来进行认证,移动客户端没有 Cookie,可以使用 HTTP 原生提供的一些认证机制。

这里介绍两种最常见的 HTTP 认证形式,基本认证(basic authentication)和摘要认证(digest authentication)。

Read More

HTTP 协议各版本特性

HTTP 协议规定了客户端和服务器直接通信的规范,在网络模型中属于应用层,与开发者直接打交道,它本身也是基于 TCP 和 IP 协议来获取请求和响应,默认 HTTP 使用 TCP 的 80 端口,HTTPS 使用 443 端口。

HTTP 协议发展至今,已经经历过好几个版本。

Read More