Jenkins备份
安装插件[系统管理]->[插件管理]->[Available plugins] 搜索安装ThinBackup 进入ThinBackup操作界面[系统管理]->[插件管理]->[ThinBackup] Backup now: 马上备份 Restore: 恢复 Settings: 设置 ThinBackup设置 全量与差量备份选择其一即可,推荐全量备份 我的设置 恢复教程将备份文件拷贝到备份目录 恢复完毕后重启jenkins就可以了
Tailscale部署私有 DERP 中继服务器
Derp的Dockerfile1234567891011121314151617181920212223242526272829303132333435FROM golang:latest AS builderWORKDIR /app# https://tailscale.com/kb/1118/custom-derp-servers/RUN go install tailscale.com/cmd/derper@mainFROM ubuntuWORKDIR /appARG DEBIAN_FRONTEND=chcgolangRUN apt-get update && \ apt-get install -y --no-install-recommends apt-utils && \ apt-get install -y ca-certificates && \ mkdir /app/certsENV DERP_DOMAIN your-hostname.comENV DERP_CERT_MODE letsencry...
Openwrt安装配置Tailscale教程
1. 软件安装图形化工具: https://github.com/asvow/luci-app-tailscaleTailscale程序包: 推荐使用自编译固件或者软件仓库的方式按照 2. 验证绑定2.1 启动服务 选择防火墙模式Openwrt部分问题处理#如何查看openwrt是nftables还是iptables的防火墙 勾线 启动 选项 点击 保存并应用2.2 点击链接绑定 验证成功后 2.3 配置路由表 组网配置输入以下命令回车,设置本设备为局域网出口,如果你的局域网不是192.168.43.X的网段,需要将命令中的192.168.1.0修改你的局域网实际的网段(假设你的openwrt的IP是10.10.10.222,填写10.10.10.0/2) 保存并应用 3. Tailscale控制台配置3.1 选择“Edit route settings” 在“192.168.30.0/24”(第8个步骤命令中你写的网段是什么,这里就显示什么)打勾,再点“Save”; 2.2 选择“Disable key expiry”,设置该设备的密钥为永不过期 ...
Golang反射reflect解析
反射基本函数 reflect.Type 主要提供关于类型相关的信息,所以它和 _type 关联比较紧密; reflect.Value 则结合 _type 和 data 两者,因此可以获取甚至改变类型的值。 12345func TypeOf(i interface{}) Type // 返回i的对象类型func ValueOf(i interface{}) Value // 返回i的Value(如果要对i进行修改的话传入变量地址) reflect.Indirect(v value) // 返回v获取了该指针指向的值reflect.New(typ Type) // 返回一个新的type类型的对象。 TypeOf123456789101112func TypeOf(i interface{}) Type { // 将i转成emptyInterface eface := *(*emptyInterface)(unsafe.Pointer(&i)) // emptyInterface的*rtype实...
Golang的pprof基本使用
什么是pprofpprof 是用于可视化和分析性能分析的工具 开启pprof1234567891011121314151617181920212223242526272829303132package mainimport ( "log" "net/http" _ "net/http/pprof" // pprof会自动注册 handler 到 http server,从而开启pprof "os" "runtime" "time")func main() { // 限制 CPU 使用数,避免过载 runtime.GOMAXPROCS(1) // 开启对锁调用的跟踪 runtime.SetMutexProfileFraction(1) // 开启对阻塞操作的跟踪 runtime.SetBlockProfileRate(1) go func() { // 启动一个 http server if err := http.ListenAndSe...
Golang底层解析之Context
什么是context context,中文译作“上下文”,它是 goroutine 的上下文,包含 goroutine 的运行状态、环境、现场等信息。 context 主要用来在 goroutine 之间传递上下文信息,包括:取消信号、超时时间、截止时间、k-v 等。 context.Context 类型的值可以协调多个 groutine 中的代码执行“取消”操作,并且可以存储键值对。最重要的是它是并发安全的。 与它协作的 API 都可以由外部控制执行“取消”操作,例如:取消一个 HTTP 请求的执行。 Context底层解析整体概览 名称 类型 作用 CancelFunc:func() Func 取消,关闭函数 Context interface 定义了Context的接口方法 cancelCtx struct 可以取消的Context canceler interface Context 取消接口,定义了两个方法 deadlineExceededError struct 定义了Context返回错误 emptyCtx struct 实...









