自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 内网穿透之http代理服务器

在公网访问内网http服务可以用内网穿透工具,例如frp和nps等优秀工具。但我发现这类工具会在服务器启动不止一个端口,对于有些网络审查来说很容易发现在进行内网穿透。因此我想是否可以只在服务器启动一个http服务来完成内网穿透,公网服务只开放一个http服务端口即可。因此我完成了相关代码:点击跳转查看代码原理如下图所示:如上图所示,内网客户端和公网服务器只会创建一个websocket连接,很...

2024-12-18 16:14:00 272

原创 同一个ip:port上同时开启socks5和http代理服务器

代码如下所示:package mainimport ( "bufio" "errors" "flag" "fmt" "io" "log" "net" "net/http" "strconv" "sync")func main() { addr := flag.String("s", ":1080", "proxy server address") flag.P...

2024-08-18 15:58:00 268

原创 为ssh服务器添加2fa认证,一个python脚本全搞定

服务器ssh如果被别人登陆就是一场灾难,所以我研究了ssh认证,我发现Google Authenticator PAM可以实现ssh的2fa认证,但是安装和配置比较麻烦。因此我用python实现了ssh的2fa认证。考虑到很多Linux服务器默认安装python,所以我用py脚本,并只使用标准库,不需要安装第三方py库,方便部署。首先保存如下脚本到文件:/bin/login,设置执行权限:c...

2024-06-28 16:00:00 255

原创 go语言实现扫雷

源码如下package mainimport ( "archive/zip" "bytes" "encoding/base64" "fmt" "image" "image/color" "image/png" "log" "math/rand" "strings" "time" "github.com/hajimehoshi/ebiten/v2" "github...

2024-03-02 22:13:00 578

原创 go mod tidy总是安装最新依赖,如何查找哪个模块导致某个包安装最新依赖,提供一个小工具...

安装: go install github.com/jan-bar/interesting/findModVer@latest执行:findModVer d:\myproject结果如下图所示:根据结果可以找到哪个依赖导致google.golang.org/grpc v1.45.0使用了这个版本,这样每次执行go mod tidy会自动修改该模块到v1.45.0版本。我看了下github...

2023-10-21 14:38:00 417

原创 golang对于[]byte数组转string进行比较的优化

当需要比较两个[]byte数组是否相等时有好几种方案,下面可以看出前三种方案都是优化过的,效率高的方案。package mainimport ( "bytes" "crypto/rand" mr "math/rand" "testing")func StringEqual(n int, f func(a, b []byte) bool) { buf := make([]by...

2023-06-13 21:16:00 425

原创 gocv分析图像玩游戏

项目项目仓库:goOpenCv连连看麻将单机版麻将腾讯麻将小程序总结通过学习opencv图像匹配,完成游戏作弊,感觉没用的知识又增加了。

2023-04-22 12:27:00 246

原创 golang蒙特卡洛树算法实现五子棋AI

已经实现蒙特卡洛树算法的通用逻辑,只需要对应结构体实现相关接口就可以直接使用该算法。优化算法主要优化GetActions生成下一步动作,要尽可能少,去掉无意义的动作。以及优化ActionPolicy从众多动作挑选比较优秀的动作。对应五子棋就是执行该动作后当前局面评分最高。package mainimport ( "fmt" "math" "math/rand" "strings...

2023-04-01 20:48:00 485

原创 PC微信3.9.0.28版小程序https抓包

下载工具CharlesPC微信安装证书设置代理微信使用代理分析抓包抓到需要的包复制curl命令,用于模拟请求,和分析后编写代码用

2023-03-28 17:56:00 562

原创 golang端口重用

服务器重启进程时总会提示端口已经被绑定的报错,直到重试好几次才能重启成功。这是因为端口尚未完全关闭的情况,这时如果不设置端口重用,则无法完成绑定,因为端口还处于被别的套接口绑定的状态之中。允许启动一个监听服务器并捆绑其众所周知端口,即使以前建立的将此端口用做他们的本地端口的连接仍存在。这通常是重启监听服务器时出现,若不设置此选项,则bind时将出错。允许在同一端口上启动同一服务器的多个实例,只要每个实例捆绑一个不同的本地IP地址即可。

2023-03-22 11:48:18 1182

原创 四川麻将判断胡牌,找到要听的牌

详细代码如下:package mainimport ( "fmt" "strings")func main() { s := "1w1w2d2d3d3d4w4w3w3w7d7d8d8d" mj := InitMahjong(s) mj.Print() fmt.Println(mj.Win()) fmt.Println("------------------------...

2023-03-04 21:01:00 690 2

原创 检查Chrome收藏夹链接是否有效

检查Chrome浏览器标签,通过Chrome导出的收藏夹文件,挨个使用http get请求检查url是否有效package mainimport ( "bufio" "errors" "flag" "fmt" "io" "net" "net/http" "net/url" "os" "strings" "sync" "time")func main() { ...

2023-02-02 15:03:00 573

原创 判断go对象是否能直接赋值进行深拷贝

在golang中可以使用a := b这种方式将b赋值给a,只有当b能进行深拷贝时a与b才不会互相影响,否则就需要进行更为复杂的深拷贝。下面就是Go赋值操作的一个说明:Go语言中所有赋值操作都是值传递,如果结构中不含指针,则直接赋值就是深度拷贝;如果结构中含有指针(包括自定义指针,以及切片,map等使用了指针的内置类型),则数据源和拷贝之间对应指针会共同指向同一块内存,这时深度拷贝需要特别处理...

2023-01-29 15:36:00 335

原创 一种安全加密文件的方式,文件可以实现自校验,防止文件损坏和篡改

项目地址这个项目是很久以前的,当时go能力有限,写的不尽人意。刚好最近有加密文件的需求,所以就完善了相关逻辑。之前的方案还依赖 Seek(offset int64, whence int) (int64, error) ,看了go很多源码,都说Seek不可靠。所以目前改为纯Reader和Writer这两种接口,当然文件的结构也必须改变。因为自带hash校验,因此内容连一个字节都不能被篡改,...

2022-12-20 17:16:00 463

原创 【git】报错unsafe repository xxx is owned by someone else解决方法

忽略单个目录git config --global --add safe.directory D:/www/your-projectgit config --global --add safe.directory D:/www/other-project忽略全部目录git config --global --add safe.directory "*"修改window文件夹的...

2022-12-14 10:28:00 528

原创 golang编译tag学习

官方资料官方解释: https://pkg.go.dev/cmd/go#hdr-Build_constraints ,go help buildconstraint 也能看到描述根据官方描述,go1.16开始建议使用go:build方式,与+build相比更容易被人阅读。有关go:build注释的解析: src/go/build/build.go#shouldBuild有关tag匹配规则...

2022-12-12 17:04:00 622

原创 window+deepin双系统安装

说明参考教程:https://baijiahao.baidu.com/s?id=1662960328855347503特别注意,最好用最新的PE工具,我用的 微PE。因为我弄过一次全盘安装,导致整个硬盘在PE工具中的diskgenius无法识别,最终为U盘安装最新版PE工具后可以识别。硬盘分区确保硬盘格式为GUID,如果已经是的则不用改如图所示在硬盘最左侧建立ESP和MSR分区...

2022-12-07 12:44:00 2397

原创 golang的jsonrpc客户端通用写法

服务端package mainimport ( "errors" "fmt" "log" "net" "net/rpc" "net/rpc/jsonrpc" "os")// 算数运算结构体type Arith struct {}// 算数运算请求结构体type ArithRequest struct { A int B int}// 算数运算响应结构...

2022-12-01 19:50:00 304

原创 TortoiseGit间接处理linux目录下的仓库,用到window映射linux目录方案

原始需求习惯用TortoiseGit查看git仓库信息和历史日志,但这个工具只支持window,我希望linux也能用虽然有其他linux的GUI的git工具,但我用到的linux基本都是无界面版本,命令行的话直接git命令呗还有就是映射linux目录到window上,这样就可以在window操作linux目录,TortoiseGit也就可以用了尝试samba很遗憾,这个虽然可...

2022-11-18 16:17:00 574

原创 ipv4和ipv6与int互转通用处理方式

记录一下ipv4和ipv6与int互转通用处理方式,由于ipv6转的int比较大,因此需要使用big.Int来保存package mainimport ( "fmt" "math/big" "net/netip")func InetNtoA(ip *big.Int, ipv4 int64) string { if ip == nil { ip = new(big.In...

2022-11-05 18:28:00 637

原创 基于Go语言的xmind读写库,我主要用来把有道云笔记思维导图转为xmind

本库主要加载xmind文件为json结构,保存文件时也用的json结构而不是xml结构。本库做了通用加载和通用保存方法,可以更灵活的与其他思维导图进行转换。本库只做了最基本的主题添加功能,类似。等其他功能不考虑,有想法的自行实现。基于go语言的xmind接口。

2022-08-20 14:54:14 483 5

原创 编译kubeadm使生成证书有效期为100年

目录问题编译检查结果问题当我使用kubeadm部署成功k8s集群时在想默认生成的证书有效期是多久,如下所示/etc/kubernetes/pki/apiserver.crt #1年有效期/etc/kubernetes/pki/front-proxy-ca.crt #10年有效期/etc/kubernetes/pki/ca.crt ...

2022-07-11 15:30:00 763 3

原创 编写谷歌浏览器的油猴脚本

之前一直知道油猴插件,但是一直没有认真用过。最近百度结果老是存在csdn那种推荐的结果,非常烦人,因此想到了用油猴脚本。打算在https://gitee.com/janbar/tampermonkey这个仓库管理后续我的油猴脚本。根据https://greasyfork.org/zh-CN这个常用获取油猴插件的网站可以找到各个浏览器安装油猴插件的方法。脚本如下,可以自行在函数中添加自己的...

2021-12-12 16:00:00 649

原创 window编译7z

首先在vs中安装需要的环境,如下图所示:去官网下载源码:修改如下文件,增加-DWIN_LONG_PATH \解除window文件长度260字符限制:搜索vcvars64.bat,得到完整路径:进入7z2106-src\CPP\7zip目录,并执行上面那个命令,然后执行编译命令nmake CPU=AMD64 NEW_COMPILER=1 MY_STATIC_LINK=1就可以成功了...

2021-12-05 09:29:00 321

原创 将百度万年历存入自己的数据库

Github地址前言最近有需要研究阴历和阳历互相转换的问题。因此找到两个库carbon和solarlunar但是感觉计算出来的总是不太放心,而且也会占用计算资源。我的想法是通过接口获取现成的阴历和阳历数据,存到本地数据库,这样查询的时候一步到位。方案我通过百度搜索万年历,抓取网页请求得到百度的一个接口正好可以获取万年历的信息,还是挺全面的。因此我写代码实现了将百度万年历的数据获...

2021-09-16 14:18:00 797 2

原创 go语言调用everything的SDK接口

介绍官方SDK地址本项目会将官方dll编译到可执行程序中,运行时无需考虑dll问题。根据官方介绍,使用SDK前需要运行everything程序。执行go build -tag ASCII时编译ascii相关接口,否则编译unicode接口。可以参考examples/search.go示例代码。本项目主要是我用来学习window下go调用dll的方法,包含传参和返回值处理。相关代码...

2021-09-09 18:59:00 431

原创 备份onetab数据

最近发现我的chrome标签有点多,太占用内存了,搜了一圈,发现onetab挺好用的,试了下真不错。但是搜索结果中还存在一些不好的消息,比如升级chrome,或者一些崩溃的情况会导致onetab丢数据。因此找了一种方案,就是备份onetab的数据。脚本如下,需要将you_name替换为你自己电脑的用户名。记得关闭chrome后台运行功能,并在关闭chrome时,执行下面的bat脚本。第一...

2021-09-06 18:18:00 889 2

原创 golang多版本管理工具

前言以往我安装go环境都是去网站上下载对应文件,然后本地解压。每次发布新版本都要搞一次,太麻烦了,所以想找找多版本管理工具。找到一个操作非常简单又能完全满足我的要求的库https://github.com/voidint/g。美中不足的是在window下安装和切换时使用软连接需要管理员权限。为此我找到了一个方案并fork然后修改了一下,我的项目地址:https://github.co...

2021-09-02 15:17:00 273

原创 redis中使用SCAN代替KEYS

前言由于redis的keys命令是线上禁用,所以就有了SCAN、SSCAN、HSCAN和ZSCAN四个命令。但是这四个命令也不是每次返回全部匹配结果,因此需要一遍遍执行下去,而且每次返回的cursor要作为下一个的参数。因此查找也不太方便,我写了一个简单的方法,用来查找scan的所有结果。关于这几个命令可以参考【详细解释】代码分享package mainimport ( "e...

2021-08-26 22:55:00 456

原创 git根据项目地址使用不同代理服务器

问题由于公司访问GitHub只能走代理,但是内网gitlab服务器又不能走代理。因此想找到一种方案,可以支持git自动根据项目地址使用不同代理。方案如下所示,可以指定GitHub地址使用指定的代理服务器git config --global http.https://github.com.proxy socks5://127.0.0.1:1081git config --glob...

2021-08-19 19:44:00 280

原创 关于MySQL8的WITH查询学习

目录前言示例练习总结前言对于逻辑复杂的sql,with可以大大减少临时表的数量,提升代码的可读性、可维护性MySQL 8.0终于开始支持with语句了,对于复杂查询,可以不用写那么多的临时表了。可以查看官方文档【点击跳转】示例官方第一个示例,可以看出该查询语句创建了cte1,cte2,cte3,cte4这4个临时表,后面的临时表依赖前面的临时表数据。最后一行为最终查询结果,实际c...

2021-08-07 15:47:00 1712

原创 有1、2、3、4个数字,能组成多少个互不相同 且无重复数字的三位数?都是多少?...

前言今天看到一个超级简单的算法题,但是我当时思路往递归,逐级筛选里面想了。结果百度查查答案,超级简单。真是惭愧惭愧,不过我还是坚持用递归实现了,因为用递归的方案,可以适用于任何给定数据和指定位数。传统解法如下所示,因为题目是找1、2、3、4组合的三位数,因此可以用三重循环,遍历所有组合,筛选不重复组合即可。但是该方案,如果给定数据改变,组合位数改变,那代码就得大改,所以不是一个通...

2021-07-18 14:24:00 1377

原创 无需会员将有道云笔记脑图转换xmind

我的烦恼有道云笔记有脑图功能,我平时经常用到,之所以很少用到其他脑图工具,是因为我一直用有道云笔记写笔记。因此编辑脑图和查看脑图比较方便,但是需要将脑图导出的时候目前只支持图片和xmind,但是需要开会员,由于囊中羞涩,所以我想了别的方案。解决方案我找到xmind的官方GitHub:https://github.com/xmindltd,找到了python的SDK,看了下有python和...

2021-06-23 15:33:00 1965

原创 使用goland调试远程代码

前言很多时候我们都在window上使用goland,并直接使用goland调试go代码。但是很多时候我们的程序运行在Linux服务器上,虽然可以通过dlv命令行进行手动打断点调试,但是太麻烦了。因此我查阅资料发现,goland是支持远程调试的,因此写篇文章记录一下。操作步骤安装dlv在Linux服务器上执行:go install github.com/go-delve/del...

2021-06-06 22:03:00 397

原创 nginx配置文件使用环境变量

前言由于现在需要部署nginx的docker,希望nginx配置文件里面有关server_name在启动容器前动态修改。但是由于nginx的配置文件不支持使用环境变量。网上找了好些方案,最终选择使用envsubst的方式改写nginx配置文件。学习envsubstenvsubst就是将环境变量替换文件里面指定标记的值。例如有如下文件env.conf,内容如下[test]ip...

2021-06-01 18:57:00 2973 1

原创 cmder定义go命令行模板

使用cmder时可以方便的定义各种自己使用的命令行提示功能,以下是我对go语言的命令行的提示代码。文件放到cmder\vendor\clink-completions\go.lualocal parser = clink.arg.new_parserlocal go_parser = parser({ "bug", "build", "clean" .. parser({"-...

2021-04-29 11:05:00 83

原创 时间戳转换小工具

有时候需要时间和时间戳之间进行转换,以及获取当前时间和时间戳。虽然功能很小,但是也不想每次去网页上搜一搜这么麻烦,因此写了一个小工具。源码鉴赏:package mainimport ( "fmt" "os" "strconv" "strings" "time")func main() { const timeLayout = "\"2006-01-02 15:04...

2021-04-17 10:35:00 234

原创 51单片机汇编程序,温度报警项目

Temperature大学时的单片机汇编作品,项目地址https://github.com/jan-bar/Temperature该项目需要protues运行,下面是可用的下载地址链接:https://pan.baidu.com/s/13gSiLTenkSV3a5niS3untQ提取码:7x48安装破解汉化方法如下:1、下载解压,得到proteus pro 8.9 sp0原程序、pa...

2021-04-03 12:26:00 1263

原创 在cmder中添加命令提示功能,添加了goctl命令的提示

经常用cmder会发现输入git后按tab键会自动提示git命令的子命令,非常的方便。最近我在用go-zero框架,但是每次敲goctl命令都需要翻一下笔记。因此我想让cmder支持goctl命令的自动提示功能,最终发现cmder\vendor\clink-completions\git.lua就是实现git自动联想的脚本。因此我仿照着写了一份goctl的脚本,由于没有深入研究,写的都很...

2021-04-02 17:25:00 358

原创 前端使用bcrypt对密码加密,服务器对密码进行校验

以前为了防止前端密码安全问题,都是对密码进行md5(password + salt)。有些也会用别的加密方式,但还是会存在撞库,彩虹表等破解常规密码。因此使用bcrypt加密是一个不错的选择,因为每次加密都会随机salt,每次加密结果都不一样,相对安全性更高些。下面是一个示例代码,启动一个http服务器,浏览器输入http://127.0.0.1:8080,当填入密码与服务器一致时提示...

2021-04-01 19:02:00 2821

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除