随笔分类 - golang
摘要:前言 很多时候我们都在window上使用goland,并直接使用goland调试go代码。 但是很多时候我们的程序运行在Linux服务器上,虽然可以通过dlv命令行进行手动打断点调试,但是太麻烦了。 因此我查阅资料发现,goland是支持远程调试的,因此写篇文章记录一下。 操作步骤 安装dlv 在L
阅读全文
摘要:有时候需要时间和时间戳之间进行转换,以及获取当前时间和时间戳。 虽然功能很小,但是也不想每次去网页上搜一搜这么麻烦,因此写了一个小工具。 源码鉴赏: package main import ( "fmt" "os" "strconv" "strings" "time" ) func main() {
阅读全文
摘要:以前为了防止前端密码安全问题,都是对密码进行md5(password + salt)。 有些也会用别的加密方式,但还是会存在撞库,彩虹表等破解常规密码。 因此使用bcrypt加密是一个不错的选择,因为每次加密都会随机salt,每次加密结果都不一样,相对安全性更高些。 下面是一个示例代码,启动一个ht
阅读全文
摘要:前言 大家应该都不喜欢一大堆开机自启程序运行吧,不仅拖慢开机速度,而且有些软件也不能刚开机就运行。 例如某些需要网络等环境的软件,这时候等待一段时间再运行是个不错的选择。 有些软件运行需要管理员权限,做成开机自启也稍微会有点麻烦。 因此我写了这个延迟执行的小工具,解决上述问题。 AutoStart
阅读全文
摘要:前言 在go官方出嵌入文件的方法前我在网上找过,并且自己还研究过,虽然没有问题,但是既然官方支持还是用起来吧。 看了下go源码embed/embed.go很简单,并且看embed/internal/embedtest/embed_test.go就知道如何使用。 示例程序 嵌入文件直接访问 原理是使用
阅读全文
摘要:前言 虽然现在文件上传下载工具多如牛毛,比如http、ftp、sftp、scp等方案都可以用于文件传输,但都是需要安装服务器甚至客户端。 有一种场景是我只需要临时上传或下载一个文件,完了就不用服务器运行了,如果使用那些文件传输工具,不光安装麻烦,开启关闭也恼火额。 因此才想搞小工具,不过Python
阅读全文
摘要:前言 启动程序很多时候用命令行参数可以很方便,做到简化一些配置,但是输入用户名密码等操作,如果通过进程查看工具直接看到密码就太不安全了。 因此很有必要研究如何隐藏命令行参数中的某些字段,当然做成配置文件也是极好的,但是无疑给运行程序增加额外操作。编辑保存配置文件也会费点事。 我结合网上找到的一些方案
阅读全文
摘要:前言 https要比http更安全些,因此可以配置Nginx服务器使用证书,客户端就会去第三方平台校验证书。 但是我们自己的服务器和客户端只是想要加个密而已,也没必要跑去第三方平台校验证书,省钱方便。 因此研究了一下生成证书和使用证书的笔记。 产生证书 网上很多都是用openssl命令行去产生,有点
阅读全文
摘要:前言 很多时候需要将遍历对象中去掉某些元素,或者往遍历对象中添加元素,这时候就需要小心操作了。 对于go语言中的一些注意事项我做了总结和示例,留下点笔记。 遍历切片 遍历切片时去掉元素,错误示例: func main() { arr := []int{1, 2, 3, 4} for i := ran
阅读全文
摘要:前言 各种编程语言都少不了与时间有关的操作,因为很多判断都是基于时间,因此正确和方便的使用时间库就很重要额。 golang提供了import "time"包用来处理时间相关操作,找到合适的api可以高效的处理时间,找到正确的使用方式可以少出bug。 可以去百度2020 年的第一天,程序员鸭血粉丝又碰
阅读全文
摘要:前言 有时候需要判断系统是否有修改过时间,最简单的方法就是获取当前时间A,然后sleep X秒,然后获取 时间B,如果 时间B - 时间A ≠ X,那就表示系统时间被修改过。 上面方案是可行的,但时间A和延时X在进程重启时不太好判断系统时间是否修改过时间。 已经有接口可以获取系统运行秒数,那么可以用
阅读全文
摘要:前言 很多时候需要编写串口代码,但是又没有真实串口设备来调试代码。以及本身就是要操作2个串口的情况,可以使用“虚拟串口驱动”工具方便的调试代码。 使用方法就是点击添加端口,此时“COM1 <-> COM2”是一组,即对COM1写数据会让COM2读到,对COM2写数据会让COM1读到,是不是很方便。
阅读全文
摘要:前言 之前写过使用用户名密码,以及扫描二维码方式验证后台登录ssh的文章:【点击跳转】。 但是这样还是不太保险,也存在被人利用的情况,因为别人破解你的后台你压根不知道。因此想到使用邮件验证码来提高验证服务器登录ssh的安全性。 如果有人破解了你ssh的用户名和密码,那么就会发送一个验证码邮件,当你在
阅读全文
摘要:前言 服务器重启进程时总会提示端口已经被绑定的报错,直到重试好几次才能重启成功。 这是因为端口尚未完全关闭的情况,这时如果不设置端口重用,则无法完成绑定,因为端口还处于被别的套接口绑定的状态之中。 SO_REUSEADDR 简介 允许启动一个监听服务器并捆绑其众所周知端口,即使以前建立的将此端口用做
阅读全文
摘要:前言 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 使用OpenCV可以方便的进行图像识别和图像处理,因此我打算学习学习。OpenCV在安装Python环境非常简单只需要下载opencv
阅读全文
摘要:前言 数独这个游戏很适合锻炼大脑思考,由于规则很简单,因此很适合我写代码拿来破解。所以就有了这篇随笔了。 首先我想通过自己的思考完成数独的求解,然后再到网上抄答案。提供一个【在线玩数独】的网站。 我的代码 代码讲解 我想通过自己的思路来求解,虽然网上肯定有非常巧妙高效的解法。因此我安装了HoDoKu
阅读全文
摘要:前言 很多时候我们都需要进程单例运行,当再次运行程序时检查到已有程序在运行可以做特别的操作,比如置顶已运行的程序,比如当前程序提示一下就退出。 最简单方案是打开进程创建一个文件,程序结束时删除文件,当第二个程序运行时判断该文件存在则认为已有程序运行。问题是程序异常退出没有删除那个文件就GG了。 还有
阅读全文
摘要:简单的代码 在我的笔记里面找到几种常用的排序代码,包括“冒泡排序、选择排序、二分排序、快速排序”。关于这些排序的原理,我之前是有专门研究的,网上也有很多教程。 package main import ( "fmt" "math/rand" "time" ) func main() { rand.Se
阅读全文
摘要:前言 有时候发送http请求不想让库自动帮忙处理重定向,库里面默认的是会把所有重定向都完成一遍,结果就是最后一个没有重定向的请求的结果。因此需要一种方案直接获取首次访问的结果,不走重定向。go的http库里面是使用如下代码检查重定向的,以前我傻傻的修改源码让下面这段代码直接返回,这样需要重新编译go
阅读全文
摘要:1.递归 当前节点不为空则交换左右子节点,递归非常直观。 func invertTree1(root *TreeNode) *TreeNode { if root != nil { root.Left, root.Right = invertTree1(root.Right), invertTree
阅读全文