Jialong's Blog

Do things I love, and seek happiness.

0%

3.1 概述和运输层服务

运输层协议在不同主机上的应用进程之间提供了逻辑通信,这并非物理上的实际通信。在发送端,运输层将从应用程序接收到的报文转换成运输层分组,该分组称为运输层报文段,实现方法是将应用报文划分为一个个小的块,为每个块加上运输层首部生成运输层报文段,然后在端系统中传递给网络层,网络层将其封装成网络层分组,向目的地发送。

因特网由TCP和UDP两种运输层协议。

3.1.1 运输层和网络层的关系

网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信。

运输层协议至工作在端系统中,同时网络中的路由器既不处理也不识别运输层加在应用层报文的任何信息。运输层协议能提供的服务常常受制于底层网络层协议,例如,如果网络层协议无法为主机之间发送的运输层报文段提供时延和带宽保证,运输层协议可就无法为进程之间发送的应用程序报文提供时延和带宽保证。

3.1.2 运输层概述

首先定义两个名词的意义:

  • 报文段:运输层分组,即TCP和UDP的分组
  • 数据报:网络层分组

网络层的IP被称为不可靠服务。

阅读全文 »

1. SSL/TLS简介

TLSTransport Layer Security,传输层安全协议),以及它的前身SSLSecure Sockets Layer,安全套接层)是一种安全协议。Netscape公司在1994年推出HTTPS协议,使用SSL进行加密,这是SSL的起源。1999年公布了第一版的TLS协议,类似于SLLv3,只是对其做出了一些更改。

SSL协议处在计算机网络中的应用层和运输层之间,它不依赖于平台和运行程序的协议。

几个知名的使用SSL加密的协议

HTTP over SSL (HTTPS)

简称为HTTPS,它的产生是为了加密网页,HTTP是第一个使用SSL保障安全的应用层协议。HTTPS在RFC2818被标准化,HTTPS工作在443端口,HTTP默认工作在80端口。

Email over SSL

类似于HTTP over SSL,协议如下:

  • SMTP、IMAP能够支持SSL
  • SMTP over TLS在标准文档RFC2487中
阅读全文 »

0. 前言

最近在写笔记文档和实验报告的时候遇到一些处理资料图片的问题,PDF电子书或文档中的插图一般为矢量图,自己写笔记如果需要引用这些插图时,一般会直接截图,截图为JEPG或PNG格式,并非矢量图,会在新的文档中出现失真。所以为了解决这个问题,我使用Adobe Acrobatinkscape两个软件将PDF中的矢量图导出为SVG格式的矢量图。以下为具体步骤:

1. 在Adobe Acrobat中选择编辑PDF选项

阅读全文 »

0.前言

第一次使用Tex语言完整地完成了一篇实验报告的构建排版,这过程中遇到了各种各样的问题,有些问题虽然解决了,但在原理方面还是一知半解,之后再遇到还希望能多看文档。这篇博客是来记录第一次编写过程中遇到的一些问题。

这是第一次实验报告导出的pdf文档封面展示:

这是tex源代码

阅读全文 »

1.3 指数信号与正弦信号

1.3.1 连续时间复指数信号与正弦信号

连续时间复指数信号有如下形式: \[ x(t)=Ce^{at} \]

实指数信号

上式中的\(C\)\(a\)都为实数的信号。

周期复指数信号和正弦信号

第二种重要的信号为将上式\(a\)限制为纯虚数的信号(复指数信号): \[ x(t)=e^{jw_0t} \] 当基波周期\(T_0 = \left| \frac {2\pi} {w_0} \right|\)时,该信号是周期信号。

阅读全文 »

理解本文的基础是公钥密码加密,即非对称加密,比如其中一种非对称加密算法RSA。

非对称加密使用一对密钥,一个为公钥Pub,另一个为私钥Priv

明文P经过公钥Pub使用RSA加密算法混淆后变成了密文M,密文M无法用公钥Pub解开,只能用私钥Priv解开

同样的,明文P经过私钥Priv使用RSA加密算法混淆后变成了密文N,密文N只能用公钥Pub解开

阅读全文 »

转眼间2019年就要结束了,依稀记得2019年的刚开始我还在发空间动态说自己又买了一本日历,然而...明年就不买了吧,我并没有记得经常去看日历,更别说去每天一张一张地撕它。这一年里经历了非常多的事情,从学习、生活、关于未来的各方各面,我都发生了极大的改变,这源于我不断变化的想法,目标总是飘忽不定,我思考过,也经常迷茫,现在也是。

在写下这些话的时间里,我其实是非常难过和害怕的,这一个周末似乎没干什么事情就又要浑浑噩噩地结束了,直到现在还有一个DDL等着我,明早截止,我还没做完,间歇性拖延症晚期这件事情,一直发生在我身上,毫不夸张地说,我可以不间歇地拖延整整24小时,这过程中总想着做些什么、改变些什么,但除了睡觉,大部分时间眼睛都盯在手机屏幕上,尽管我知道这样做一点儿也不好,但结果还是发生了。我知道学习的重要性,也会去为了一个想要实现的东西不断地思考并找到解决方法,就比如搭建网站这件事情,前前后后花了很多的时间也学习了很多相关知识,基本掌握了中间的原理,结果在我预想的时间之前很久就做出来了,结果还是超乎预期的好。说实话,完成一件能看的到结果的事情能给人的心理带来很大的快感的愉悦,但愉悦过后,又只剩下了迷茫和拖延,并且在为了找到下一个实践目标而苦苦挣扎着。有时候大脑盯着手机屏幕看一些信息的时候,知道这是自己不想接收和浪费时间的,但就是控制不住自己去点开看,这样的人性的弱点也造就了很多的商机,造就了很多企业和公司的成功。

说点儿别的。在关于情感和人际交往方面,我可能是一个与绝大多数人都不一样的人,在情感上,我很少与他人或者是在公开场合表露(包括我的社交媒体,我发现,自己现在很少在社交媒体上表露自己的情感,更多的是分享一些自己的兴趣爱好,比如我热爱的摄影,因而,我也就把自己的空间对所有人开放了,微信这个东西另当别论,说实话,我挺讨厌这个软件的),但我还是知道自己想要的是什么,纵然我在过去的一年里总是带着一些自卑的情感,很久没有与他人进行深入内心的交谈,KY的与陌生人打电话活动也错过了很多次,每次都是在想和别人深入交流的时候才想起来,结果肯定是已经结束了,今后还是要多多关注,想想能与一同关注KY的人打电话是一件挺幸福的事情,也希望自己能早日找到灵魂伴侣。在人际交往方面,我尝试过学校的很多社团和活动,最终无一例外全都放弃了,我觉得也挺好,这也证明了我确实不喜欢过多的浮于表面和拉帮结派建造复杂人际关系的事情,做好自己就最好了,能认识几个朋友还是随缘了,人也并不需要那么多看上去像是朋友的朋友。

扯了这么多,还是回到最重要的学习和事业上吧。12月希望自己能好好学习学校的课程知识,好好地应对一下考试。明年下半年就要大三了,这学期结束以后要为成为一个前端工程师立一些目标,毕竟就快要毕业了,还是希望自己能去做自己喜欢的工作,上研究生这件事就暂时不考虑了,我在经历了一些事情以后对于读研这件事一点儿也不感兴趣了,做好自己就好了。

以上。

GitBook作为一个非常好用的基于Node.js的命令行工具,可以输出HTML、PDF、eBook等多种格式的电子书,这里就不再详细讲述GitBook的构建以及发布到Github托管的过程,网络上有非常多的教程,可以自行Google查看。

刚开始在每次更新内容的时候都需要一系列的git命令将原始内容仓库和构建的网页仓库同步到Github上,大概需要10条命令,如果你的更新频率很高的话,发布内容将会是有个痛苦的过程,但这里我们可以通过一个shell脚本只使用$ sh deploy.sh一条命令完成同步内容和构建网页的所有过程。

首先,在你的GitBook内容根目录下建一个deploy.sh文件,使用文本编辑器打开,然后输入以下内容:

1
#!bin/sh
2
git checkout master
3
# 切换到master分支,及内容所在的仓库
4
git add .
5
git commit -m "Update"
6
git push -u origin master
7
# 添加、提交到Git仓库,然后push到Github上
8
gitbook build
9
# 构建Gitbook
10
11
git checkout gh-pages
12
# 切换到gh-pages分支,即生成的HTML网页的仓库
13
cp -r _book/* . 
14
# 复制前面构建的内容
15
git add .
16
git commit -m "Update"
17
git push -u origin gh-pages
18
# 添加、提交到Git仓库,然后push到Github上
19
git checkout master
20
# 返回master主分支

然后打开命令行,为这个脚本授权:

1
$ chmod +x deploy.sh

至此就完成了,以后在更新的时候只需要输入一条命令$ sh deploy.sh就可以完成所有操作了。

一、储存类别

  • 对象:具有一定大小空间的一块内存。
  • 标识符:用来指定特定对象的内容。
  1. 作用域
    • 描述了程序中可访问标识符的区域。
    • 分类:
      • 块作用域
      • 函数作用域
      • 文件作用域
      • 函数原型作用域:从形参定义处到原型声明结束。
    • 全局变量:也称为文件作用域变量。
  2. 链接
    • C变量的三种链接属性:
      • 外部链接:该类型变量可以在多文件程序中使用
      • 内部链接:该类型变量只能在一个翻译单元中使用
      • 无链接:具有块作用域、函数作用域或函数原型作用域的变量
    • 储存类别说明符static
  3. 存储期:
    • C对象有4种
      • 静态存储期:在程序的执行期间一直存在,文件作用域变量都具有静态存储期。
      • 线性存储期:用于并发程序设计。
      • 自动存储期:所有局部变量都有该性质,在函数调用时被创建,离开函数时被销毁。
      • 动态分配存储期:
  4. 自动变量
    • 属于自动存储类别,有自动存储期、块作用域、无链接。
    • 可显式使用关键词auto
    • 块作用域和无链接意味着只有在变量定义的块中才能通过变量名访问该变量。
  5. 寄存器变量
    • 特殊的自动变量。也是自动存储期、块作用域、无链接。
    • 可以显式使用关键词register,是一种请求,编译器可能会拒绝你的请求,此时就变成了普通变量,但仍然无法访问该变量的内存。
    • 作用是储存在最快的可用内存中,能够以更快的速度访问。
    • 存储在寄存器中而非内存中,所以无法获取寄存器变量的地址。
  6. 块作用域的静态变量
    • 静态指的是在内存中原地不动,但它的值可以改变。
    • 具有块作用域、无链接、有静态存储期。
    • 在块中static(提供静态存储期)声明这种变量。
    • 如果未显式地初始化静态变量,它们会被初始化为0
  7. 外部链接的静态变量
    • 具有文件作用域、外部链接、静态存储期。
    • 有时又称为外部存储类型、该类别地变量被称为外部变量
    • 创建过程:在所有函数外面(定义性声明)创建这个外部变量。
    • 函数使用该变量时,为了指出使用的是外部变量,可以用关键字extern再次声明。
    • 如果一个源文件使用的外部变量定义在其他文件中,则必须用extern在该文件中声明该变量。
    • 定义式声明、引用式声明。
  8. 内部链接的静态变量
    • 具有静态存储期、文件作用域、内部链接。
    • 所有函数外部,用存储类别说明符static定义该类变量。
    • 该类型变量只能用于同一个文件中的函数
    • 可以在函数中使用类别说明符extern重复声明该类型变量,这并不会改变其链接属性。
  9. 多文件(多翻译单元)
    • 程序在多个翻译单元中才能体现区别内部和外部变量的重要性。
  10. 存储类别的选择
    • 正常情况下多使用自动存储类别,使用外部变量可能在不经意中修改变量的值,count类型变量除外。

二、