61、旋转链表
模拟题
1 | /** |
模拟题
1 | /** |
回溯法
1 | class Solution { |
1、利用 信息熵 的方法对加密流量进行识别。
对不同类型的文件,如文本、图片、压缩文件、加密文件等的前 1KB 数据的熵进行计算分析,可以发现文本文件的熵处于较低水平,压缩文件和加密文件的熵处于较高的水平,且两者较难区分。
多元组熵的定义:
(1)n元字符组集合指以大小为 n 的滑动窗口对报文序列 P 进行切割后得到的字符串 $s_i (1 \le i \le L-n+1)$ 的集合,L 表示分析报文序列以 字节 为单位的长度:
$$
S_n = \lbrace s_1, s_2, …, s_{L-n+1} \rbrace
$$
如 “data.dat” 对应的二元字符组集合为 $S_2 = \lbrace da, at, ta, a., .d, da, at \rbrace$。
HTTP2的所有帧都是由一个固定的9字节头部(payload之前)和一个指定长度的负载(payload)组成,如下图所示:

其中,Stream Identifier用作流控制,用31位无符号整数表示。客户端建立的sid必须为奇数,服务端建立的sid必须为偶数,值(0x0)保留给与整个连接相关联的帧(连接控制消息),而不是单个流。
Frame Payload是主体内容,有帧类型决定,HTTP2一共有10种类型的帧:
IPSec是IETF制定的为保证在Internet上传送数据的安全保密性能的三层隧道加密协议。IPSec是应用于IP层上网络数据安全的一整套体系结构,他包括报文首部认证协议( Authentication Header, AH)、封装安全载荷协议(Encapsulating Security Payload, ESP)、互联网间密钥交换协议(Internet Key Exchange, IKE) 和一些用于网络认证及加密的算法等。IPSec协议本身定义了如何在IP数据包中增加字段来保证IP包的完整性、私有性和真实性,以及如何加密数据包。
IPSec有传输(transport)和隧道(tunnel)两种工作方式,其中,传输模式适用于主机之间建立IPSec安全传输,隧道模式更适合网关之间的通信,常用来实现虚拟专用网VPN。
详细教程请参考:https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/README-zh.md
以 Ubuntu 16.04为例,首先执行:
1 | wget https://git.io/vpnsetup -O vpnsetup.sh |
之后,在vpnsetup.sh文件中,设置YOUR_IPSEC_PSK, YOUR_USERNAME 和 YOUR_PASSWORD三个字段,如下图:

数组中元素互换,让元素大小与下标相对应。数值小于0或者大于数组长度的元素值,直接略过,之后遍历整个数组,第一次出现数值和下标不相等的位置就是ans,如果全部满足,返回数组长度即可。
1 | class Solution { |
偷个懒,直接使用库函数next_permutation。
1 | class Solution { |
用栈进行括号匹配消除,在消除过程中记录最大长度值。
博客停更了将近半年的时间,然后近期闲着打算接着写写记录下日常学习过程,其中被同学吐槽,你这访问太慢了啊,页面好大会转不出来,怎么回事小老弟?github pages国内访问的话,速度还是很慢的,想要更好的提升访问速度,得将博客迁移到国内才行,幸运的是,国内的coding.net也提供pages服务。下面,我们主要讲解如何实现个人博客的双仓库部署。
1、注册 coding 账号,创建一个和注册名一样的仓库,部署公钥,此处部署的公钥一定要和github pages上的公钥一致。运行 ssh -T git@git.coding.net 指令,测试公钥是否添加成功,如下图所示,代表成功添加了公钥。

2、deploy部署配置,更改本地 根目录下的_config.yml文件,如下图,这样才可以实现两个仓库的同步推送。
1、安装VMware Tools
在VMware中安装虚拟机后,记得安装VMware Tools。在虚拟机中找到名为VMwareTools…tar.gz的压缩包(一般在media文件夹中),复制到某个文件夹中后执行:tar -xvzf VMwareTools…tar.gz进行解压。之后会看到一个 ./vmware-install.pl的执行程序,执行后安装,一路默认即可,安装完成后,重启虚拟机。
2、卸载自带软件
1 | dpkg --list # 查看自带已安装程序 |
当然也可以在软件管理中进行查看已安装软件,卸载软件等操作。
3、GTK,GTK+,Qt, KDE,GNOME, Unity的区别与联系
在ubuntu中,软件的安装主要有3种方式:
通过apt包管理工具从官方软件源安装
通过deb格式的软件包安装,以安装搜狗输入法为例:
1 | 下载 sogou.deb |
使用软件的源码手动编译安装
下面我们主要介绍第一种安装方式,即apt命令从软件源安装。软件源分为 Ubuntu官方软件源 和 PPA软件源 两种。