0%

SSL/TLS协商基本流程

  1. 客户端向服务器索要并验证服务器公钥
  2. 双方协商产生「对话秘钥」
  3. 双方使用「会话秘钥」进行加密通信

前面两步是SSL/TLS的建立过程,也就是TLS握手阶段,SSL/TLS「握手阶段」设计的四次通信,如下图所示:

HTTPS 连接建立过程
阅读全文 »

HTTP基本概念

HTTP是什么

HTTP全称为超文本传输协议(HyperText Transfer Protocol)。

  1. 超文本

    如HTTP名字中所说的,其传输的是超文本,超文本从字面上理解是超过了普通的文本文字,也就是还包括文字以外的内容,如图片、视频、超链接等,超文本 就是这些内容的混合体。

    HTML(Hyper Text Markup Language)就是最常见的超文本了,它本身只是纯文字的文件,但是内部用很多标签定义了图片、视频的链接,经过浏览器解释之后,呈现给我们的就是一个有文字、有图片和视频的网页了。

  2. 传输

    所谓“传输”,就是将东西从一个地方搬到另一个地方。

    HTTP协议是一个双向协议。

    我们上网的时候,浏览器是请求方A,访问的网站就是应答方B,双方约定使用HTTP协议来通信,于是浏览器把请求数据发送给网站,网站再把一些数据返回给浏览器,最后由浏览器渲染出来显示在屏幕上。

    请求-应答
    阅读全文 »

TCP/IP网络模型适用于不同设备上进程间的通信,共分为四层分,从上到下分别是应用层、传输层、网络层、网络接口层

应用层(Application Layer)

应用层是最上层的,我们能直接接触到的层,我们日常所使用的软件都是在应用层上实现的。

应用层不关心数据是如何传输的,就和我们寄快递的时候只需要把包裹交给快递员,我们不关心包裹是如何运输的。

协议

应用层的协议包括HTTP、FTP、Telnet、DNS、SMTP等。

传输层(Transport Layer)

传输层是为应用层提供网络支持的,在传输层有两个传输协议,分别是TCP和UDP。

TCP(Transmission Control Protocol)

TCP的全称是传输控制协议,大部分应用传输层协议使用的都是TCP,TCP为了保证数据能够可靠的传输到目的地,有流量控制、超时重传、拥塞控制等特性。

UDP(User Datagram Protocol)

UDP全称是用户报文协议,UDP相对TCP来说就很简单,只负责发送数据包,至于数据包能否正常抵达目的地,UDP不能保证;但是换一个角度来说,UDP少干了这么多,那他的实时性相对TCP来说更好,传输效率也更高。

通常来说一台设备上会运行多个应用进程,为了区分数据要发送的具体进程,传输层中需要指定端口号来区分不同的进程和应用。

阅读全文 »

  • hexo版本:6.2.0
  • NexT版本:8.12.2
  • NodeJS版本:16.16

背景修改canvas-nest

step1

在next主题文件夹根目录下的layout/_layout.njk中加入如下代码到footer标签后面即可:

1
2
3
4
5
6
7
8
9
10
{% if theme.canvas_nest.enable %}

<script color="{{ theme.canvas_nest.color }}"
opacity="{{ theme.canvas_nest.opacity }}"
zIndex="{{ theme.canvas_nest.zIndex }}"
count="{{ theme.canvas_nest.count }}"
src="https://cdn.jsdelivr.net/npm/canvas-nest.js@1/dist/canvas-nest.js">
</script>

{% endif %}
阅读全文 »

1.查询所有的硬盘识别码

1
ls -la /dev/disk/by-id/|grep -v dm|grep -v lvm|grep -v part

2.将硬盘直通到TrueNAS

vmid是TrueNAS虚拟机的编号,x是编号,若此虚拟机没有sata设备,则从从0开始,xxxx为硬盘识别码

1
qm set <vmid> --sata[x] /dev/disk/by-id/[xxxxxxx]

背景

最近跟着up司波图在玩一个AIO(All In One)服务器,也就是将软路由,NAS系统以及影音系统都集成到一个物理系统中,我用的是之前买的一个M73的小主机,里面的mini-PCIE插槽扩展了一个螃蟹RTL8111的千兆网卡,主机自带的是Intel的I217-V千兆网卡。

经过一天的使用下来发现每次大流量下载或上传时,openwrt都会断一下,开始还以为是openwrt系统的问题,后来经过一番资料搜索,发现是pve下面的这张Intel网卡有问题,查看了pve系统的日志,发现了如下:

1
pve kernel: e1000e 0000:00:19.0 eno1: Detected Hardware Unit Hang:

这和搜索到的情况一样,于是就确定是这张Intel网卡的问题。

原因

造成该问题的原因是Intel网卡固件的bug

解决方法

在pve虚拟机下关掉网卡的offload功能

1
ethtool -K <网卡编号> tx off rx off >/tmp/e1000e.log

为了方便,不需要每次重启虚拟机之后都手动来关掉,这里设置了一个自启动脚本,原理是pve虚拟机每次启动的呃时候都会扫描/etc/profile.d下面的.sh文件,所以办法很简单,在改文件夹下面新建一个e1000e.sh的文件

1
vim /etc/profile.d/e1000e.sh

然后填入上面的命令即可

参考链接:

解决在x86平台装openwrt旁路由大流量断网问题(intel网卡驱动bug问题)

openWRT在M93p上出现的Detected Hardware Unit Hang

最近尝试了一下Nginx,感觉配置比Apache还要麻烦,折腾了一天,经过自己的不断尝试,总算试出了自己想要的结果。

阅读全文 »

Ubuntu安装MySQL8

1
apt install mysql-server

Debian 安装MySQL8

因为Debian的源中没有MySQL,所以我们需要手动添加

  1. 先去MySQL官网

    选择版本和系统之后,会出来下面这张图片,点击这张图片,进入到第二步

    image-20230826144155692

  2. 下载DEB package

    进入第二个页面后,点击下载按钮,之后会跳转到另外一个页面

    image-20230826144328978

    不需要登录,右键点击最下面的直接下载的链接,复制链接

    image-20230826144446024

    然后到Debian中用wget下载:

1
wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb
  1. 安装
1
dpkg --install mysql-apt-xxx.deb

然后apt update一下,apt install mysql-server就可以找到MySQL的包了。

修改配置

登录MySQL

1
sudo mysql

可以直接登录,只要输入账户密码,登录之后再改密码

1
2
3
4
5
show databases;

use mysql;

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';

更新域属性,’%’表示任何方式访问

1
update user set host='%' where user ='root';

执行以上语句之后再执行

1
FLUSH PRIVILEGES;

再执行授权语句

1
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;

Debian系统到这里一般就可以远程连接了,Ubuntu可能还需要修改配置文件,注释掉绑定地址。

!!! 若还是有问题,则将/etc/mysql/mysql.conf.d/mysqld.cnf文件中的bind-address注释掉。

LeetCode第350题

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]

说明:

输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
我们可以不考虑输出结果的顺序。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii

方法一:

用哈希表映射,先把较短的那个数组遍历,存入哈希表中,键是数组中元素的值,值是数组中元素出现的次数
再遍历另外一个数组,从哈希表中找这个数组中的值,看是否存在,存在就将其存入新造的数组中,再将哈希表中该键对应的值减一,如果值减到了0,就将这个键移除去,否则将这个键对应的值减一,在存入哈希表中。

阅读全文 »