随笔分类 - golang
摘要:在公网访问内网http服务可以用内网穿透工具,例如frp和nps等优秀工具。但我发现这类工具会在服务器启动不止一个端口,对于有些网络审查来说很容易发现在进行内网穿透。因此我想是否可以只在服务器启动一个http服务来完成内网穿透,公网服务只开放一个http服务端口即可。因此我完成了相关代码:点击跳转查
阅读全文
摘要:源码如下 package main import ( "archive/zip" "bytes" "encoding/base64" "fmt" "image" "image/color" "image/png" "log" "math/rand" "strings" "time" "github.
阅读全文
摘要:安装: go install github.com/jan-bar/interesting/findModVer@latest 执行:findModVer d:\myproject 结果如下图所示: 根据结果可以找到哪个依赖导致google.golang.org/grpc v1.45.0使用了这个版
阅读全文
摘要:当需要比较两个`[]byte`数组是否相等时有好几种方案,下面可以看出前三种方案都是优化过的,效率高的方案。 ```go package main import ( "bytes" "crypto/rand" mr "math/rand" "testing" ) func StringEqual(n
阅读全文
摘要:项目 项目仓库:goOpenCv 连连看 麻将 单机版麻将 腾讯麻将小程序 总结 通过学习opencv图像匹配,完成游戏作弊,感觉没用的知识又增加了。
阅读全文
摘要:已经实现蒙特卡洛树算法的通用逻辑,只需要对应结构体实现相关接口就可以直接使用该算法。 优化算法主要优化GetActions生成下一步动作,要尽可能少,去掉无意义的动作。 以及优化ActionPolicy从众多动作挑选比较优秀的动作。对应五子棋就是执行该动作后当前局面评分最高。 package mai
阅读全文
摘要:四川麻将胡牌规则,参考腾讯麻将“血流成河”规则 详细代码如下: package main import ( "bytes" "fmt" "strings" ) func main() { var ( tile = []string{ "56756744422222m", // 超过4张牌,记为4张
阅读全文
摘要:检查Chrome浏览器标签,通过Chrome导出的收藏夹文件,挨个使用http get请求检查url是否有效 package main import ( "bufio" "errors" "flag" "fmt" "io" "net" "net/http" "net/url" "os" "strin
阅读全文
摘要:在golang中可以使用a := b这种方式将b赋值给a,只有当b能进行深拷贝时a与b才不会互相影响,否则就需要进行更为复杂的深拷贝。 下面就是Go赋值操作的一个说明: Go语言中所有赋值操作都是值传递,如果结构中不含指针,则直接赋值就是深度拷贝;如果结构中含有指针(包括自定义指针,以及切片,map
阅读全文
摘要:项目地址 这个项目是很久以前的,当时go能力有限,写的不尽人意。刚好最近有加密文件的需求,所以就完善了相关逻辑。 之前的方案还依赖 Seek(offset int64, whence int) (int64, error) ,看了go很多源码,都说Seek不可靠。所以目前改为纯Reader和Writ
阅读全文
摘要:官方资料 官方解释: https://pkg.go.dev/cmd/go#hdr-Build_constraints ,go help buildconstraint 也能看到描述 根据官方描述,go1.16开始建议使用go:build方式,与+build相比更容易被人阅读。 有关go:build注
阅读全文
摘要:服务端 package main import ( "errors" "fmt" "log" "net" "net/rpc" "net/rpc/jsonrpc" "os" ) // 算数运算结构体 type Arith struct { } // 算数运算请求结构体 type ArithReques
阅读全文
摘要:记录一下ipv4和ipv6与int互转通用处理方式,由于ipv6转的int比较大,因此需要使用big.Int来保存 另外记录一下将ip返回转换为CIDR表达方式 点击运行 package main import ( "fmt" "math/big" "net/netip" ) func IpRang
阅读全文
摘要:项目地址 xmind 基于go语言的xmind接口 使用方法参考: example 本库主要加载xmind文件为json结构,保存文件时也用的json结构而不是xml结构 本库只做了最基本的主题添加功能,类似标签/备注/图片等其他功能不考虑,有想法的自行实现 本库做了通用加载和通用保存方法,可以更灵
阅读全文
摘要:问题 当我使用kubeadm部署成功k8s集群时在想默认生成的证书有效期是多久,如下所示 /etc/kubernetes/pki/apiserver.crt #1年有效期 /etc/kubernetes/pki/front-proxy-ca.crt #10年有效期 /etc/kubernetes/p
阅读全文
摘要:Github地址 前言 最近有需要研究阴历和阳历互相转换的问题。因此找到两个库carbon和solarlunar 但是感觉计算出来的总是不太放心,而且也会占用计算资源。我的想法是通过接口获取现成的阴历和阳历数据,存到本地数据库,这样查询的时候一步到位。 方案 我通过百度搜索万年历,抓取网页请求得到百
阅读全文
摘要:介绍 官方SDK地址 本项目会将官方dll编译到可执行程序中,运行时无需考虑dll问题。 根据官方介绍,使用SDK前需要运行everything程序。 执行go build -tag ASCII时编译ascii相关接口,否则编译unicode接口。 可以参考examples/search.go示例代
阅读全文
摘要:前言 以往我安装go环境都是去网站上下载对应文件,然后本地解压。 每次发布新版本都要搞一次,太麻烦了,所以想找找多版本管理工具。 找到一个操作非常简单又能完全满足我的要求的库https://github.com/voidint/g。 美中不足的是在window下安装和切换时使用软连接需要管理员权限。
阅读全文
摘要:前言 由于redis的keys命令是线上禁用,所以就有了SCAN、SSCAN、HSCAN和ZSCAN四个命令。 但是这四个命令也不是每次返回全部匹配结果,因此需要一遍遍执行下去,而且每次返回的cursor要作为下一个的参数。 因此查找也不太方便,我写了一个简单的方法,用来查找scan的所有结果。关于
阅读全文
摘要:前言 今天看到一个超级简单的算法题,但是我当时思路往递归,逐级筛选里面想了。结果百度查查答案,超级简单。 真是惭愧惭愧,不过我还是坚持用递归实现了,因为用递归的方案,可以适用于任何给定数据和指定位数。 传统解法 如下所示,因为题目是找1、2、3、4组合的三位数,因此可以用三重循环,遍历所有组合,筛选
阅读全文