Socks5
这个是NX的Socks5的书写,实不相瞒,写完后Any告诉我这个都没什么用,配网啥的都是靠工具来配的,看个乐子就行
原理RFC 1928 - SOCKS 5 协议中文文档「译」 - 光韵流转 (quarkay.com)
认证
客户端向服务端发送
12345678910// +----+----------+----------+// |VER | NMETHODS | METHODS |// +----+----------+----------+// | 1 | 1 | 1 to 255 |// +----+----------+----------+// VER: 协议版本,socks5为0x05// NMETHODS: 支持认证的方法数量// METHODS: 对应NMETHODS,NMETHODS的值为多少,METHODS就有多少个字节。RFC预定义了一些值的含义,内容如下:// X’00’ NO AUTHENTICATION REQUIRED// X’02’ USERNAME/PASSWORD
服务端响应
12345// +----+--------+/ ...
在线字典
学习链接
流程
控制台输入单词 go run main.go world
将这个 world 当作请求的body一部分,传给相应的翻译网站
网站翻译后获取Responsebody
print result
难题
如何连接相应的翻译网站
如何获取相应的翻译网站
如何实现通用
准备的翻译网站
其实具体连接获取代码都是有网站可以实现的
只要输入相应的URL bash
就可以转成相应的Go语言
具体的怎么操作就不展现了,反正就是跟着NX做的
有个小问题就是那个转Go的网站翻译出来的有问题
所以我直接抄NX的代码,发现可以用就直接用了
123456789101112131415161718192021222324252627282930313233343536373839404142434445package mainimport ( "fmt" "io/ioutil" "log" "ne ...
猜随机数
随机数12345maxNum := 100fmt.Println("Create a random number")//rand.Seed(time.Now().UnixNano())random := rand.Intn(maxNum)fmt.Println(random)
不用设立种子也能生成随机数。
用户输入输出猜随机数小游戏
1234567891011121314151617181920212223242526272829303132func main() { maxNum := 100 secretNumber := rand.Intn(maxNum) // fmt.Println("The secret number is ", secretNumber) fmt.Println("Please input your guess") reader := bufio.NewReader(os.Stdin) for { input, err := reader.ReadString(' ...
事务
普通事务/嵌套事务1234567891011121314151617181920212223242526272829// 事务操作type TMG struct { ID uint Name string}func TestTransaction() { Db.AutoMigrate(&TMG{}) flag := false // 如果外层的事务出错,内层事务完好,则所有事务都不能执行 // 如果内层的事务出错,外层事务完好,则除了内层事务之外的操作都能执行 if err := Db.Transaction(func(tx *gorm.DB) error { tx.Create(&TMG{Name: "汉子"}) tx.Create(&TMG{Name: "威武"}) // 多重事务开启 tx.Transaction(func(tx *gorm.DB) error { tx.Create ...
多态
什么是多态
一开始我也不是很理解,那么我用我学了三天的JAVA基础来理解
首先多态只存在于 Has One 和 Has Many 中
把多态用类的思想去理解,把一整个结构体当作一个类
而某个类的属性,比如说纸飞机类,有很多人的纸飞机类
由此就会产生多态
12345678910111213141516171819type A struct { ID uint Name string C C `gorm:"polymorphic:Owner;"`}type B struct { ID uint Name string C C `gorm:"polymorphic:Owner;"`}type C struct { ID uint Name string OwnerType string OwnerID uint}
GORM 入门笔记(九)多态的概念与使用 | NX の 博客 (nickxu.me)
算了描述不清楚………..
到时候用到了再 ...
关联
tips:
关联自动创建,更新
关联模式Association()
要启动关联模式,请指定源模型和关系的字段名称。
源模型必须包含主键,并且关系的字段名称应与现有关联匹配。
12Db.Model(&User).Association(&Teacher)...// delete,replace,append...// Model-源模型 Teacher是关系的字段
关联标签
标签
描述
foreignKey
指定在联接表中用作外键的当前模型的列名。
references
指示连接表的外键映射到的引用表中的列名。
polymorphic
定义多态类型,通常为模型名称。
polymorphicValue
设置多态值,通常为表名(如果未另行指定)。
many2many
命名多对多关系中使用的联接表。
joinForeignKey
标识联接表中映射回当前模型表的外键列。
joinReferences
指向联接表中链接到引用模型表的外键列。
constraint
为关联指定关系约束,如 。OnUpdate``OnDelete
Be ...
Gorm配置
Gorm因为没有深入了解过Gorm,了解一下
配置之前连接有个细节没注意
1234567891011121314151617dsn := "user:password@tcp(127.0.0.1:3307)/shortURL?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.New(mysql.Config{ DSN: dsn, }), &gorm.Config{ SkipDefaultTransaction: false, //跳过事务控制,但是关掉后不保证数据一致性 NamingStrategy: schema.NamingStrategy{ TablePrefix: "test_", // 表名前缀,`User` 的表名应该是 `t_users` SingularTable: false, // 使用单数表名,启用该选项后,`User` 的表名应该是 `t_u ...
dockerfile尝试
给短链系统收个尾,写个dockerfile,本来就很害怕写这个东西
然后这个东西一写就是半天过去了
而且基本上就是在蒙蔽状态下度过的
代码写写很快,但是没啥用
Dockerfile1234567891011121314151617181920212223# 第一阶段:使用Go语言环境构建应用程序FROM golang:1.21 as builderENV GOPROXY https://goproxy.cn,direct# 设置工作目录WORKDIR /app# 将当前目录的内容复制到容器内的/app目录COPY . .# 构建应用程序,生成可执行文件RUN CGO_ENABLED=0 go build -a -installsuffix cgo -o main .# 第二阶段:从一个空镜像创建最终的镜像FROM alpine:3.12WORKDIR /app# 复制第一阶段构建的可执行文件到最终镜像的/app目录COPY --from=builder /app/main /app/main# 暴露应用程序监听的端口EXPOSE 8080# 设置容器启动时运行的命令CMD [" ...
栈与队列
用栈实现队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):
实现 MyQueue 类:
void push(int x) 将元素 x 推到队列的末尾
int pop() 从队列的开头移除并返回元素
int peek() 返回队列开头的元素
boolean empty() 如果队列为空,返回 true ;否则,返回 false
使用双栈
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849type MyQueue struct { stackIn []int stackOut []int}func Constructor() MyQueue { return MyQueue{ stackIn: make([]int,0), stackOut: make([]int,0), ...
ngrok实现内网穿透
在写短链系统的时候,本来想装个逼,然后发现别人访问不了我的短链
问了NX,又被NX冷言讽刺了 公网和私网的区别
问了鸟鸟,就去找了内网穿透的工具,让公网能够访问到私网的服务器
内网穿透
什么是内网穿透?非学术的说法: 通常个人电脑无论是连接WIFI上网还是用网线上网,都是属于局域网里边的,外网无法直接访问到你的电脑,内网穿透可以让你的局域网中的电脑实现外网访问功能
内网穿透有什么用? 通过内网穿透可以实现通过外网直接访问到你的电脑
步骤
访问官方 https://ngrok.com/
下载解压相应的文件–>可以出现一个 ngrok.exe 的文件,打开来就是一个命令行工具
在ngrok官网登录,在刚刚的命令行工具中输入
鉴权
1ngrok config add-authtoken 2dWxDXj5F9A48P4JzdpgYbXhxrj_6JRjH9ArvF5E5zTxmJFGc
启动监听
1ngrok http http://localhost:8080
监听后会跳转一个页面
12 tunnel start a tunnel fo ...