let's encrypt申请证书命令
申请范域名证书命令使用certbot可以免费申请范域名证书。使用试输入下面的命令,注意替换命令为自己的域名。
1sudo certbot certonly -d "*.example.com" -d example.com -m YOUR_EMAIL --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
申请单域名证书命令也可以申请单域名证书,命令如下
1sudo certbot certonly --manual -m YOUR_EMAIL -d example.com --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
Nginx的配置使用certbot申请的证书会保存在/etc/letsencrypt/live/example.com/下面,注意这里的是一个软连接,指向真正的证书
下面给出一个监听8080 ...
如何在本地搭建VSCode环境编写c++代码
文件结构在一个cpp项目中,文件结构如下:
12345678*|-- .vscode/| |-- setting.json| |-- launch.json| |-- tasks.json|-- bin/ |-- CMakeLists.txt|-- main.cpp
你需要修改的配置都在 .vscode/ 目录下面,在那里面修改对应配置
这里创建了一个 bin/ 目录用于存放临时生成的可执行文件
记得要先创建文件夹
tasks.json 内容示例tasks.json 用于指明编译、运行的配置,同样记得修改command为你自己的路径,并且把mingw的bin目录添加到path。并且记得在你的项目文件夹下面把 bin/ 目录创建好
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566{ "version": "2.0.0" ...
如何把hexo搭建的博客发布到自己的云服务器,包含部署https
本文将介绍如何把自己搭建的hexo发布到云服务器上
购买云服务器、域名以及ICP备案想要部署hexo博客,有一台具有公网ip的云服务器是必须的。
如果想要别人能够方便的访问你的博客,还需要申请一个域名。
如果你希望你的博客能够在大陆地区被正常访问,那么还需要进行ICP备案。
以上三者作为前置条件,本文不做赘述,请自行上网搜索相关教程。
在云服务器上配置好ssh公钥登录在你希望使用的账户的~目录下的.ssh文件夹中,创建authorized_keys文件,将你的公钥复制进去。注意公钥是一行一个。然后把这个文件的权限改为600。
1chmod 600 authorized_keys
这样就可以进行ssh公钥登录了。
可以尝试使用ssh命令登录一下,如果没叫你输密码,那么就可以进行下一步了。
安装Nginx和gitubuntu和debian系列执行
1sudo apt install nginx git
centos系列执行
12sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos- ...
非递归无栈AVL树实现
AVL树基本结构AVL树是通过 balance factor 平衡因子来控制树的高度不会失衡的,每个节点的 balance factor 定义为右子树的高度减去左子树的高度,如果是平衡的,那么 balance factor 的绝对值不会超过1,如果超过了1,那么就需要进行旋转操作来保持平衡。
在维护AVL树的时候,基本操作只有 左旋 he 右旋 两种,其示意图如下:不难发现,左旋和右旋都有保证树的高度不变的性质。
其中左旋的代码如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152void AVL::roteLeft(Node *A, Node *C) {#ifdef DEBUG cout << "Rote left \n";#endif if (A == this->root) { //处理A是根节点的情况 Node *B = A->leftChild; Node ...
数据的表示
字,字节,单字,双字一个 bit 是1个二进制位,一个 byte (字节)是八个二进制位,也就是两个十六进制数,例如一个全是1的字节可以表示为 0xFF
一个字在32位的机器上是两个个字节,即十六位,而双字是四个字节,三十二位
小端方式和大端方式小端方式是低有效字节存放在低地址,高有效字节存放在高地址,大段方式相反。
注意,在机器码反汇编的时候,从左到右依次是低地址到高地址,不用反过来,而且在每一个字节,即两个十六进制数表示一个数的时候,也不用在字节内进行翻转,例如,在一个小端机器的反汇编中,一个数是 b8 01 00 00它对应的数学真值是 0x01B8 即是十进制下的 440
整形无符号数无符号数直接按照二进制表示,没有歧义,其每一位都是有效位,乘以对应的权值即可转换成对应的数学真值
有符号数有符号数一般按照补码表示,其特征是最高位为符号位,如果是 0 表示是一个正数,否则为负数
在将一个正数转换为无符号数的时候,如果不超出范围,没有发生溢出的现象,此时的有符号数的机器表示和无符号数是一样的。
将一个负数转换为无符号数的时候,先取出它的绝对值,将其转换为机器码,然后实行操作 各位 ...
并查集
并查集简介并查集是为了解决图联通的问题而发明的算法,它可以实现$O(1)$时间复杂度的插入和平均$O(log(n))$时间的查询,从而快速处理判断两个元素是否属于同一个部分
并查集支持的操作
寻找根节点(find)
判断任意两个节点是否联通(is_connected)
将两个节点合并(join)
返回一个节点的联通个数(count)
并查集的实现find无路径压缩版本1234567int find(int x) { if(parent[x] == x) { return x; } else { return find(parent[x]); }}
有路径压缩版本123456789int find(int x) { if(parent[x] == x) { return x; } else { int p = find(parent[x]); parent[x] = p; ...
数学分析总结
积分总结常用且记不到的公式
定积分的常用技巧保向性若可积,且,则保向性被用于证明积分相关的不等式,如教材P186的A组第14题
微分中值定理描述若在上连续,定号(不变号),则使得该定理常用于证明存在某些特殊点使得某个等式成立,如教材P186B组第3题
证明首先我们通过达布上和和达布下和,得到式子2.2.1是由于我们在每个区间里面分别选取最小值和最大值,这是上界和下界。再由的连续性,由介值定理,得到
特殊不等式证明柯西不等式的积分形式设在区间上连续,有
证明对任意,,所以对于方程没有两个根,使用判别式,有整理可得
牛顿-莱布尼茨公式描述
证明使用差分和拉格朗日中值定理的技巧,详情见教材P187
微积分第一基本定理(可变上限的积分)描述设
证明连续函数版本$$\begin{split}\varPhi’(x_0) &=\lim_{t \to 0} \frac{\varPhi(x_0 +t) - \varPhi(x_0)}{t}\&= \lim_{t \to 0} \frac{\int {a}^{x_0 + t}f(x)\mathrm{d}x - \int {a}^{x_ ...
部署frp服务器发布内网服务并获取免费ssl证书
部署frp服务器发布内网服务并获取免费ssl证书本文适用对象
不想花冤枉钱搭建一个自己的服务器
能够在本地搭建好服务并且能够通过 localhost 访问
有一台可以访问互联网的服务器 (例如腾讯云、阿里云)(如果没有建议花点小钱买一个)
有一个自己的域名(必需品,可以在各种云上买到,记得备案哦)
云端搭建frps服务基础配置这里建议云服务器安装linux系统,操作更简单
到frp github发布页找到对应的架构,右键复制链接地址
在云服务器上执行(这里以amd64为例)
1wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz
下载完成后解压
1tar -zxvf frp_0.51.3_linux_amd64.tar.gz
然后进入解压后的文件夹,修改配置文件 frps.ini ,在里面输入一下内容:
12345678910111213141516[common]bind_port = 7000vhost_http_port = 80vhost_h ...
如何进行gitlab-ci发布软件包
如何使用Gitlab CI发布软件包前言本文参考官网,给出一个在powershell下能够发布软件包的例子以及一些坑,供大家参考。
Step 1. 安装release-cli123New-Item -Path 'C:\GitLab\Release-CLI\bin' -ItemType DirectoryInvoke-WebRequest -Uri "https://gitlab.com/api/v4/projects/gitlab-org%2Frelease-cli/packages/generic/release-cli/latest/release-cli-windows-amd64.exe" -OutFile "C:\GitLab\Release-CLI\bin\release-cli.exe"$env:PATH += ";C:\GitLab\Release-CLI\bin"
坑点1:以上是官方的配置方法,由于某些原因,最后一步添加环境变量的方法在你重新打开一个powershell或者在gitlab ...
本地搭建gitlab
如何使用docker在ubuntu22.04中搭建Gitlab(无坑版)[TOC]
安装docker这里推荐使用官方教程docker官方安装教程安装
更新源
12sudo apt-get updatesudo apt-get install ca-certificates curl gnupg
添加GPGkey
123sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpg
建立仓库
1234echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/lin ...