nginx学习笔记

一、Nginx的安装

1.1 源码编译

Nginx官网下载对应版本的源码包并解压

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
git clone http://github.com/simpl/ngx_devel_kit.git ## 扩展模块
git clone http://github.com/calio/form-input-nginx-module.git ## 扩展模块
./configure \
--prefix=/usr \ ## 应用默认根路径
--without-http_memcached_module \
--with-http_stub_status_module \
--with-http_ssl_module --with-pcre \
--add-module=ngx_devel_kit \
--add-module=form-input-nginx-module \
--add-module=echo-nginx-module \
--add-module=lua-nginx-module \
--pid-path=/usr/local/nginx/nginx.pid \ ## 指定PID路径
--error-log-path=/usr/local/nginx/error.log \ ##指定error-log路径
--conf-path=/etc/nginx/nginx.conf \## 指定conf路径
--sbin-path=/usr/sbin/nginx ## 指定nginx文件路径
make && make install

一般而言,上述后面几个参数在指定prefix后不用指定。但对于只是出于更新原有nginx的binary文件目的,需要指定原先的相应配置目录。对于重新编译nginx,可以通过nginx -V查看之前的编译信息。

注意,lua模块务必使用文档所说版本。
make upgrade可以让nginx进行平滑升级,参见文档

阅读全文
linux学习笔记
shell | linux | OS

一、环境变量的查看与配置

1.1 环境变量的查看

$PATH

通过“$+名称”的形式查看环境变量。这里以添加路径/usr/local/gcc-8.3.0/bin到环境变量为例,该路径是gcc、g++等C/C++编译器命令的目录。

1.2 临时环境变量的设置

(1)bash脚本中变量

v=$1

通过如上形式同其他编程语言一样产生变量,并用“$”查看。

效用范围:当前bash脚本

(2)export命令配置环境变量

export PATH=$PATH:/usr/local/gcc-8.3.0/bin

效用范围:当前终端连接,所有用户。不同路径间分隔符用“:”,$PATH放在其中用于拼接原有的路径。下同。

(3)/etc/profile

export PATH=$PATH:/usr/local/gcc-8.3.0/bin

这个文件中添加同样的命令,并

source /etc/profile

效用范围:重启系统前,属于临时环境变量,只有效于当前终端连接和所有用户。重启系统后,属于全局环境变量,长期有效。

阅读全文
基于Clash配置linux服务器代理
clash | vpn | 代理

配置过程

首先从Dremacro/clash仓库下载最新的发行版。注意选择适合自己CPU架构的版本。可以通过dpkg --print-architecturearch来查看CPU架构,x86_64amd64是等价的架构名称。

1
2
3
4
wget https://github.com/Dreamacro/clash/releases/download/v1.10.0/clash-linux-amd64-v3-v1.10.0.gz
gunzip clash-linux-amd64-v3-v1.10.0.gz
mv clash-linux-amd64-v3-v1.10.0 <你的保存目录>/clash
chmod +x <你的保存目录>/clash

将clash所在目录加入PATH,例如在~/.bashrc中添加
1
export PATH=your/path/to/clash:$PATH

再进行clash初始化,执行clash命令即可,初始化完毕后,在~/.config/clash看到了config.ymlCountry.mmdb两个重要文件。

接着从你购买的VPN服务商那里获取clash的订阅连接,例如我使用的kingfast,将其覆盖保存为前面的config.yml

1
wget https://sub.o4o.win/api/sub/****?type=clash -O ~/.config/clash/config.yml
阅读全文
python学习笔记

一、类与对象

1.1 根类和元类

在python当中一切皆为对象,而在这当中有两个特别重要的概念:元类(meta class)和根类(root class)。对应两个基本类型typeobject

类型本身也是一种对象,它是的类型即为元类type。例如我们常见的内置数据类型str、list、dict、int和float等均为type的实例,如下示例。

1
2
3
4
5
assert isinstance(str, type)
assert isinstance(list, type)
assert isinstance(dict, type)
assert isinstance(int, type)
assert isinstance(object, type)

而所有类型又都是根类object的直接或间接子类,继承了object的属性,如下示例

1
2
3
assert issubclass(str, object)
assert issubclass(list, object)
assert issubclass(type, object)

阅读全文
anaconda学习笔记

一、Anaconda的下载与安装

Anaconda官网下载对应版本的Anaconda,根据提示安装。

二、Anaconda虚拟环境的创建与使用

Anaconda的一大特色就是支持虚拟环境的创建。虚拟环境之间不共享,从而解决了多版本安装的冲突问题。默认情况下进入anaconda终端,其实进入的是anaconda的base虚拟环境。

1
(base) PS C:\Users\idrb>

2.1 虚拟环境的创建

1
conda create -n <环境名称> [包1, 包2,...]

例如conda create -n gcszhn python=3.8.5 torch创建了名为gcszhn的虚拟环境,同时安装了python3.8.5和torch在虚拟环境中。需要指出的时,创建时不一定要安装包。可以在激活进入虚拟环境时单独安装。

2.2 虚拟环境的激活

1
2
(base) PS C:\Users\idrb>conda activate gcszhn
(gcszhn) PS C:\Users\idrb>pip install torch
阅读全文
markdown学习笔记

markdown实用技巧

引用Base64编码的照片

很多时候,我们存在将照片内置于markdown文档的需求,这时候可以采用Base64编码方式编码字符串。字符串格式data:image/图像类型;base64,图像编码,图像类型可以是gif、png、webp和jpeg等多种类型,依据自身图片格式而定。

1
![img](你的base64图像字符串)

若图片过于大,编码字符串会很长,此时可以选择将字符串建立索引并置于文末,格式如下:

1
2
3
![img][自定义ID]
你的正文其他内容
[自定义ID]:你的base64图像字符串
阅读全文
windows11使用的小技巧杂收

使用windows10经典菜单

windows11菜单很蠢,需要二级菜单才能进行很多方便的右键操作。可以通过修改注册表来实现恢复windows 10风格。以管理员身份运行下列语句。

1
reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f

恢复windows 11风格

1
reg.exe delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f

上述两个操作都要重启资源管理器方可生效。

阅读全文
使用hexo构建个人博客

使用hexo构建个人博客步骤

  • 安装nodejs
  • npm install hexo -g安装hexo
  • hexo init myblog创建个人博客项目
  • cd myblog进入个人博客项目
  • npm install安装项目依赖
  • hexo new blog创建新博文
  • hexo server本地查看博客
阅读全文
WSL2和Docker for Windows
Linux | WSL | windows | Docker

一、Docker和WSL2概述

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。一个完整的Docker有以下几个部分组成:

  • DockerClient客户端
  • Docker Daemon守护进程
  • Docker Image镜像
  • DockerContainer容器

在windows下配合VS code的Remote - Containers插件,使用体验很不错,缺点就是不像WSL2一样可以在资源管理器中直接处理文件。

但是,Docker本身是基于Linux的。为了让windows用户能够体验docker的便利,docker for windows应运而生。而它则是基于windows subsystem for linux(WSL)的。启动docker可以发现WSL多了docker-desktopdocker-desktop-data两个wsl分发版。而docker就在此基础上运行。(当然最初的docker for windows后端并不是直接使用WSL)。

Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。如果使用Windows 10 2004以上,可以通过WSL 2来窗口化运行桌面应用,也不需要另外安装其他的X 服务器。

阅读全文
GNN学习笔记

一、图的概述

在图论中,图(Graph)指的许多节点及其相互关系。而我们传统的图像可以看着是一种特殊的图——像素点及其之间的关系。如果有点集$V={V_1,V_2,…,V_n}$
和他们之间的关系边集$E={e_1,e_2,…,e_n}$。那么我们一般用下列数学表达式来表示一个图。

  1. 有向图VS无向图
    有向图的边具有方向性,$e_{ij}$表示从$v_i$指向$v_j$的有向边。但注意有向图不一定所有边都是有向边。
    无向图的边没有方向性。

  2. 加权图VS非加权图

    加权指的是两点之间的边有权重。而非加权图则相当于时权重相等的加权图

  3. 连通图VS非连通图

    任意两个节点都有通路,称为连通图。反之则称为非连通图。非连通图中有许多连通分量。连通分量自身是图的最大连通子图。连通图的连通分量是自己。

  4. 子图

    子图从直观来看是图的裁剪区域。从数学表达来看,子图的边集和点集均为图的边集和点集的子集,即

  5. 通路与距离

    通路也称路径,对于两个点,他们的通路就是连通它们的边的序列集合。

    两点间的距离指的是两点间最短通路的边数

    k阶邻居:指的是两点的距离为k,此时两点互为k阶邻居(无向图)。

    k阶子图:指的是任意两点之间距离最大为k的子图。

  6. 邻接矩阵VS关联矩阵

    邻接矩阵表达的是点与点之间存在连接,即边。关联矩阵表达的是点和边之间存在关联,即点是边的端点。两种矩阵都能够表达图中的关系。

  7. 同构图VS异构图

    同构图中所有节点的类型都是相同的,边的类型也是相同的。而异构图则不一定。异构图更有现实意义。

阅读全文