TLS握手流程
TLS握手过程
HTTP 由于是明文传输,所谓的明文,就是说客户端与服务端通信的信息都是肉眼可见的,随意使用一个抓包工具都可以截获通信的内容。
所以安全上存在以下三个风险:
窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。
冒充风险,比如冒充淘宝网站,用户钱容易没。
HTTPS 在 HTTP 与 TCP 层之间加入了 TLS 协议,来解决上述的风险。
TLS 协议是如何解决 HTTP 的风险的呢?
信息加密:HTTP 交互信息是被加密的,第三方就无法被窃取。
校验机制:校验信息传输过程中是否有被第三方篡改过,如果被篡改过,则会有警告提示。
身份证书:证明淘宝是真的淘宝网。
上图简要概述来 TLS 的握手过程,其中每一个「框」都是一个记录(record),记录是 TLS 收发数据的基本单位,类似于 TCP 里的 segment。多个记录可以组合成一个 TCP 包发送,所以通常经过「四个消息」就可以完成 TLS 握手,也就是需要 2个 RTT 的时延,然后就可以在安全的通信环境里发送 HTTP 报文,实现 HTT ...
CRC校验详解
摘要
本文首先阐述了错误检测的目的以及纠错复杂度,然后以此引出了CRC背后的基础思想。为了能够充分理解CRC运算所基于的运算系统,本文还介绍了抽象代数中的相关概念(多项式环、素域、扩域)。然后描述了如何选取CRC的多项式。有了这些基本概念之后,本文介绍了三种CRC的实现,对于同一个CRC算法,其中SIMPLE于TABLE ALGORITHM所使用的寄存器初值是一样的,只是后者更高效一点,而DIRECT TABLE ALGORITHM则更高效,而且寄存器初值也与前两种不一样(通常CRC算法所说的初值就是指的这个算法的寄存器初值),因此需要进行初值转换。在此之后还介绍了一些决定CRC算法的其他参数,并且以此定义一个名为Rocksoft™的参数化模型,用以精确描述CRC算法。最后本文还包含了CRC算法的C实现。
本文很大程度上参考了A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS,在其中加入了一些自己的理解。因此非常感谢Ross N. Williams.大佬
错误检测的目的
发射机产生的数据,在经过带有噪声的信道之后,会被噪声所污染,从而导 ...
WaveDrom教程
WaveDrom 可以根据特定指令生成时序 / 波形图(SVG/PNG),并且也可以在浏览器中运行。同时也提供了在线编辑器和教程、教程 2。
信号(signal)
名称(name)和波形(wave)
绘制信号时,需要向 WaveDrom 传递键为 signal,值为 WaveLanes 的数组,WaveLane 一般至少需要包含两个属性:名称(name)和波形(wave),例如(在官方在线编辑器中打开):
1{ "signal" : [{ "name": "clk", "wave": "P..........." }] }
{ "signal" : [{ "name": "clk", "wave": "P..........." }] }
波形的名称将显示在波形左侧,波形由一个字符串指定,每个字符都代表了一个周期的波形,每个字符代表的意义如下:
符号
含义
样例
渲染结果
.
与上一周期状态相同
{ signal ...
计算机数值表示
计算机数值表示
符号定义
Symbol
Type
Meaning
Defineition
\(B2T_w\)
函数
Binary to two's complement
\(\vec{x} = [x_{w-1},x_{w-2},\cdots,x_0];\;B2T_w(\vec{x})=-x_{w-1}2^{w-1}+\sum\limits_{i=0}^{w-2}x_i2^i\)
\(B2U_w\)
函数
Binary to unsigned
\(\vec{x} = [x_{w-1},x_{w-2},\cdots,x_0];\;B2U_w(\vec{x})=\sum\limits_{i=0}^{w-1}x_i2^i\)
\(U2B_w\)
函数
Unsigned to binary
\(B2U_w\)的反函数
\(U2T_w\)
函数
Unsigned to two's complement
\[0\leq u\leq UMax_w;U2T_w(u)=B2T_w(U2B_w(u))=\begin{cases}u, u\leq TMax_w \\ u- ...
The Art of Command Line
命令行的艺术
前言
基础
日常使用
文件及数据处理
系统调试
单行脚本
冷门但有用
仅限 OS X 系统
仅限 Windows 系统
更多资源
免责声明
熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。
这篇文章是许多作者和译者共同的成果。这里的部分内容首次出现于 Quora,但已经迁移到了 GitHub,并由众多高手做出了许多改进。如果你在本文中发现了错误或者存在可以改善的地方,请贡献你的一份力量。
前言
涵盖范围:
这篇文章不仅能帮助刚接触命令行的新手,而且对具有经验的人也大有裨益。本文致力于做到覆盖面广(涉及所有重要的内容),具体(给出具体的最常用的例子),以及简洁(避免冗余的内容,或是可以在其他地方轻松查到的细枝末节)。在特定应用场景下,本文的内容属于基本功或者能帮助您节约大量的时间。
本文主要为 Linu ...
c plus plus summary
C++基础入门
C++初识
第一个C++程序
编写一个C++程序总共分为4个步骤
创建项目
创建文件
编写代码
运行程序
创建项目
Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开
创建文件
右键源文件,选择添加->新建项
给C++文件起个名称,然后点击添加即可。
编写代码
1234567891011#include<iostream>using namespace std;int main() { cout << "Hello world" << endl; system("pause"); return 0;}
运行程序
注释
作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码
两种格式
单行注释:// 描述信息
通常放在一行代码的上方,或者一条语句的末尾,==对该行代码说明==
多行注释: /* 描述信息 */
通常放在一段代码的上方,==对该段代码做整体说明==
提示:编译器在编译代码时,会忽略注释的内 ...
PyTorch Abstract
简单的PyTorch教程,来自官网教程60分钟PyTorch教程、通过例子学PyTorch和迁移学习教程。
目录
60分钟PyTorch教程
什么是PyTorch?
Tensor
Operation
Tensor的变换
Tensor与Numpy的互相转换
CUDA Tensor
Autograd: 自动求导
从自动求导看Tensor
梯度
PyTorch神经网络简介
定义网络
测试网络
损失函数
计算梯度
更新参数
训练一个分类器
如何进行数据处理
训练的步骤
数据处理
定义卷积网络
在测试数据集上进行测试
GPU上训练
通过例子学PyTorch
使用Numpy实现三层神经网络
使用Tensor来实现三层神经网络
实现autograd来实现三层神经网络
使用自定义的ReLU函数
和Tensorflow的对比
使用nn模块来实现三层神经网络
使用optim包
自定义nn模块
流程控制和参数共享
迁移学习示例
加载数据
可视化图片
训练模型
可视化预测结果的函数
fine-tuning所有参数
fine-tuning最后一层参数
60分钟PyTorch教程
...
Static Timing Analysis for Nanometer Designs:A Practical Approach(v1)
绪论
众所周知,静态时序分析是IC工程师必备知识点,也是秋招中笔试面试的高频考点。
网上不乏优秀视频课,如V3学院尤老师、小梅哥、IC创新学院邸志雄老师的课。
《Static Timing Analysis for Nanometer Designs:A Practical Approach》,可堪称静态时序分析的“圣经”吧!
由于网上找不到此书的翻译,因此笔者决定开坑进行对“圣经”的翻译~!希望可以在加深对静态时序分析的学习同时,完成这一本书的翻译方便大家以后更好地从中学习吧。
本章节概述了纳米级(nanometer)设计下的静态时序仿真过程
本章节解决了如下问题:
什么是静态时序分析(static timing analysis)?
噪声(noise)与串扰(crosstalk)会带来什么影响 ?
如何使用静态时序分析?
在整个设计流程中的哪个阶段会应用静态时序分析?
纳米级设计
在半导体器件中,常使用金属互连线来连接电路中的不同部分,从而实现设计。随着工艺技术的发展,这些互连线逐渐开始影响设计的性能。对于深亚微米或者纳米级别的工艺技术,互连线间的耦合效应会带来噪声与串 ...
Static Timing Analysis for Nanometer Designs:A Practical Approach(v2)
绪论
众所周知,静态时序分析是IC工程师必备知识点,也是秋招中笔试面试的高频考点。
网上不乏优秀视频课,如V3学院尤老师、小梅哥、IC创新学院邸志雄老师的课。
《Static Timing Analysis for Nanometer Designs:A Practical Approach》,可堪称静态时序分析的“圣经”吧!
由于网上找不到此书的翻译,因此笔者决定开坑进行对“圣经”的翻译~!希望可以在加深对静态时序分析的学习同时,完成这一本书的翻译方便大家以后更好地从中学习吧。
本章节概述了纳米级(nanometer)设计下的静态时序仿真过程
本章节解决了如下问题:
什么是静态时序分析(static timing analysis)?
噪声(noise)与串扰(crosstalk)会带来什么影响 ?
如何使用静态时序分析?
在整个设计流程中的哪个阶段会应用静态时序分析?
纳米设计
在半导体器件中,金属互连走线通常用于在电路的各个部分之间建立连接以实现设计。众所周知,随着工艺技术的缩小,这些互连走线会影响设计的性能。对于深亚微米或纳米工艺技术,互连中的耦合会引起噪声和 ...
ML Theory Summary
Introduction
对概率的诠释有两大学派,一种是频率派另一种是贝叶斯派。后面我们对观测集采用下面记号:
\[
X_{N\times p}=(x_{1},x_{2},\cdots,x_{N})^{T},x_{i}=(x_{i1},x_{i2},\cdots,x_{ip})^{T}
\]
这个记号表示有 \(N\) 个样本,每个样本都是 \(p\) 维向量。其中每个观测都是由 \(p(x|\theta)\) 生成的。
频率派的观点
\(p(x|\theta)\)中的 \(\theta\) 是一个常量。对于 \(N\) 个观测来说观测集的概率为 \(p(X|\theta)\mathop{=}\limits _{iid}\prod\limits _{i=1}^{N}p(x_{i}|\theta))\) 。为了求 \(\theta\) 的大小,我们采用最大对数似然MLE的方法:
\[
\theta_{MLE}=\mathop{argmax}\limits _{\theta}\log p(X|\theta)\mathop{=}\limits _{iid}\mathop{argmax}\li ...