0%

Ngnix 的功能

Nginx 同 Apache、Tomcat 一样,是一种服务器软件。它是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。因此,使用 Ngnix 可以搭建网站,也可以实现负载均衡的功能,还可以作为邮件代理服务器来接受和发送邮件。Ngnix 1.9.0 以后的版本还可以作为通用的 TCP/UDP 代理服务器,也可以提供一定的缓存服务功能。

说明:本文章非原创,转载自 HTTP 和 HTTPS 协议,看一篇就够了_不一样的博客 - CSDN 博客

HTTP 和 HTTPS 发展历史

什么是 HTTP

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于 TCP/IP 协议传输数据,互联网上应用最为广泛的一种网络协议, 所有的 WWW 文件都必须遵守这个标准。设计 HTTP 的初衷是为了提供一种发布和接收 HTML 页面的方法。

流媒体传输 - RTSP Over HTTP

中我们分析了如何使用 HTTP 来进行 RTSP 交互,而在一些使用场景中,RTSP 和 HTTP 的明文交互带来了很多安全性问题,而 HTTPS 的出现,大大提高了数据交互的安全性,而在 RTSP Over HTTP 协议中,我们也可以参考 HTTP 和 HTTPS 的修改,实现 RTSP Over HTTPS 协议,从而可以应用在一些安全性要求较高的场景中。

RTSP 的标准端口是 554,但是由于各种不同的防火墙等安全策略配置的原因,客户端在访问 554 端口时可能存在限制,从而无法正常传输 RTSP 报文。 但是 HTTP 端口(80 端口)是普遍开放的,于是就有了让 RTSP 报文通过 80 端口透传的想法,即 RTSP Over HTTP。

H264 编码预测时,选择哪种预测方式是一个永远躲避不了的一个问题,我们希望找到一个最优的预测方式,即预测的亮度 / 色度值与真实的亮度 / 色度值最为接近。这就需要有一种计算方法来评价各种预测方式的效果,我们称这种计算方法为代价计算。

在帧内预测模式中,预测块 P 是基于已编码重建块和当前块形成的。对亮度像素而言,P 块用于 4×4 子块或者 16×16 宏块的相关操作。4×4 亮度子块有 9 种可选预测模式,独立预测每一个 4×4 亮度子块,适用于带有大量细节的图像编码;16×16 亮度块有 4 种预测模式,预测整个 16×16 亮度块,适用于平坦区域图像编码;色度块也有 4 种预测模式,类似于 16×16 亮度块预测模式。编码器通常选择使 P 块和编码块之间差异最小的预测模式。

CAVLC(Context-based Adaptive Variable-Length Code):基于上下文的可变长度编码,是 H.264 中进行 4x4 像素块进行熵编码的方法,基本 (baseline) 档次中只能使用 CAVLC,只有主要 (main) 档次和扩展 (extern) 档次才能使用 CABAC

SDP 协议介绍

SDP 全称是 Session Description Protocol,翻译过来就是描述会话的协议。主要用于两个会话实体之间的媒体协商。

什么叫会话呢,比如一次网络电话、一次电话会议、一次视频聊天,这些都可以称之为一次会话。

那为什么要去发这个描述文本呢,主要是为了解决参与会话的各成员之间能力不对等的问题,如果参加本次通话的成员都支持高质量的通话,但是我们没有去进行协议,为了兼容性,使用的都是普通质量的通话格式,这样就很浪费资源了。所以 SDP 的作用还是很有必要的。

流媒体传输 - RTSP 协议 中,我们分析 RTSP 协议交互的整个流程,在本篇文章中,我们对交互中携带的报文进行详细分析。

Request

Request     =       Request-Line              ; Section 6.1
            *(      general-header            ; Section 5
            |       request-header            ; Section 6.2
            |       entity-header )           ; Section 8.1
                    CRLF
                    [message-body]            ; Section 4.3

并查集介绍

在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合 - 查找算法(union-find algorithm)定义了两个用于此数据结构的操作:

  • Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。
  • Union:将两个子集合并成同一个集合。

由于支持这两种操作,一个不相交集也常被称为联合 - 查找数据结构(union-find data structure)或合并 - 查找集合(merge-find set)。

欧拉回路 & 通路介绍

一笔画问题

一笔画问题:给定一个 n 个点 m 条边的图,要求从指定的顶点出发,经过所有的边恰好一次。

欧拉回路 & 通路与一笔画问题的关系

定义:

  • 通过图中所有边恰好一次且行遍所有顶点的通路称为 欧拉通路
  • 通过图中所有边恰好一次且行遍所有顶点的回路称为 欧拉回路
  • 注:定义中边经过且仅经过 1 次,顶点的经过次数不受限制。

游程编码的概念

游程编码的基本原理

将具有相同值的连续串用其串长和一个代表值来代替,该连续串就称为游程,串长称为游程长度。

编码思想

去除像素冗余:用游程的灰度和游程的长度代替游程本身。

算术编码的原理

算术编码是 1980 年代发展起来的一种熵编码方法。

基本原理是将被编码的数据序列表示成 0 和 1 之间的一个间隔 (也就是一个小数范围),该间隔的位置与输入数据的概率分布有关。信息越长,编码表示的间隔就越小,因而表示这一间隔所需的二进制位数就越多 (由于间隔是用小数表示的)。

霍夫曼(Huffman)算法的简介

Huffman 编码是 1952 年为压缩文本文件所设计的编码方法,也是目前消除视频信息冗余最常使用的方法之一;其对出现概率最大的符号赋以最短的码字,概率越小表示的码字越长,从而使表示每个符号的平均比特数最小。

信息量的概念

信息量:表示该符号所需要的位数。

考虑用 0 和 1 组成的二进制数码为含有 n 个符号的某条消息编码,假设符号 \(a_{j}\) 在整条消息中重复出现的概率为 \(P_{j}\) ,则该符号的信息量定义为:

\[E_{n} = -log_{2}(P_{j})\qquad(0\le P_{j}\le1)\]

信息量表示为以 2 为底的对数,是正值。