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软件源
两种。