准备工作一台拥有公网 IP 的服务器一个域名服务器准备工作安装 Golang ,版本最好为1.20以上安装Caddy2进入网站了解安装方式:caddy2中文网Caddyfile配置caddy的作用仅用于申请tls证书证书目录:/var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/example.comexample.com { tls 邮箱 respond "Hello, world!" } }安装 tailscalecurl -fsSL https://tailscale.com/install.sh | sh启动并登录tailscale up安装 derper 服务go install tailscale.com/cmd/derper@main配置derper service[Unit] Description=derper service After=network.target StartLimitIntervalSec=0 [

redis有两种持久化机制,分别为RDB和AOF。RDBRDB是以快照的形式持久化数据,只关注当前结果,优点是占用少,效率高,缺点是恢复时有可能造成数据的不完整。AOFAOF是以日志的形式持久化数据,关注整个过程,优点是数据完整性高,缺点是开销大。可以设置周期性保存,如一秒保存一次。因为AOF是以日志的形式记录,所以文件会越来越大,AOF会对文件进行重写优化。redis会开启一个子进程重写,为了保证在重写期间,主进程的数据和子进程的数据保持一致,则采用了AOF重写缓存,当主进程写入一条数据,子进程也会随之写入数据。

默认环境:debian11、go1.20。创建文件Dockerfile,写入一下内容FROM golang:1.20.4 MAINTAINER cdx cdxccx@outlook.com ENV password="root" RUN echo 'root:$password' |chpasswd RUN apt update && \ apt-get install -y openssh-server && \ apt clean && \ rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp* && \ echo "PermitRootLogin yes" >> /etc/ssh/sshd_config && \ echo "export PATH=/usr/local/go/bin:$PATH" >> /root/.bashrc RUN mkd

vite+ts+vue3项目依赖"dependencies": { "@element-plus/icons-vue": "^2.1.0", "axios": "^1.3.4", "element-plus": "^2.2.32", "pinia": "^2.0.32", "pinia-plugin-persistedstate": "^3.1.0", "vue": "^3.2.45", "vue-router": "^4.1.6" }main.tsimport { createApp } from 'vue' import './style.css' import App from './App.vue' import Eleme

知识小点常量创建整数常量时,不管多长的数字,精度都不会丢失,因为它是“常量”基础类型基础类型包括:数字类型、布尔类型、字符类型。比较在go中必须是两个类型相同的值才可以比较,接口则需要也实现了相应的接口才可比较。如果其中一个是常量,则需要和常量能兼容的类型才可以比较。如果都不满足,则需要转换成相同类型才可以比较。值类型与引用类型int、float、bool、string这些基本类型属于值类型,数组和结构也属于值类型,这些的变量直接指向内存中的值。 指针、切片、map、chan为引用类型,引用类型储存的是值所在的内存地址,或者内存地址中第一个值所在的位置,内存地址又称为指针。当引用类型被使用=进行复制时,是对内存地址的复制,并非值的复制,当修改其中一个的值时,也会改变另一个变量的值。不管是值类型还是引用类型,都可以使用&进行取地址。内存逃逸分析栈空间:系统自己申请和释放堆空间:程序员自己申请和释放,在go中由GC搞定go build -gcflags=-m 可以检查代码的编译优化情况,包括逃逸情况和函数是否内联指针逃逸指针是指向堆中的指针,此时会发生逃逸到堆上栈空间不足局部变量下,编译