使用io.Copy将下载的部分内容不断写入文件,重载io.Reader的Read函数,使用Read读取数据和大小,通过http的ContentLength获取total大小。 package goutil import ( "io" "net/http" "os" ) type ChunkRe...
golang 生成目录的check list文件并校验目录
目的是将当前可执行程序平级的某个目录生成check list文件,表明是文件还是目录,如果是文件生成md5值。还可以根据check list文件来判断目录里面的内容是否完整,如果是目录就判断目录是否存在,如果是文件就比对md5值是否...
robotgo模拟鼠标键盘操作
用robotgo库来实现一个自动化过程。 自动打开一个记事本,输入当前日期并且保存记事本,最后关闭记事本。 同时全局监听键盘事件,当按下组合键“ctrl+shift+q”后退出程序。 自动化记事本 package main impo...
接入腾讯AI智能闲聊API接口
蛮有意思的一个接口就是你问什么它会给你一些回应,如: 问:你好啊 答:果然我的魅力无敌,终于把你吸引来了,哈哈哈 问:你是谁 答:我叫小豪豪,一定要记住,好不好嘛 文档地址[https://ai.qq.com/doc/nlpchat.sht...
Go 实现简单端口扫描
通过端口扫描我们可以知道服务器上哪些端口是处于监听状态。 借助Go net模块的DialTimeout方法可以很容易的判断端口是否打开,同时对于批量端口的扫描使用Go Routines实现非常简单。 主结构 type PortScanner...
Go 使用gomail发送邮件,包括附件
这里使用的是gopkg.in/gomail.v2包,smtp协议。演示了发送日志目录。 准备 发送邮件首先要进行一些配置项,如下结构: type MailConf struct { User string Pass string Host string Port int ...
Go 使用zip压缩文件目录
使用archive/zip包可以压缩目录为zip文件,流程如下: 1. 创建压缩后的目标文件(zip文件); 2. 使用zip writer向zip文件写入内容; 3. 遍历要压缩的目录,如果是文件就用zip writer写入; 4. 如果是目录,在父目录的基础...
Go寻找最长不含有重复字符的子串
寻找最长不含有重复字符的子串,这道算法题很常见,现在用go语言来实现下。 思路 从头到尾遍历,设置一个起始位置start,当前最大不重复字符子串的长度maxLength以及位置maxStart,还有一个map存储了遍历过的所有字符...
Go Buffer重用,避免频繁内存分配
在我们写代码的过程中如果多次使用make([]byte, 4096),那就要考虑使用下面的方法了。当然你不要想着把这个buffer保存为全局变量,多线程下会有竞态问题,实现代码: var blackHoleUsed = make(chan []byte, 1) fun...
Go竞态检测
介绍 竞争条件是最隐蔽和难以捉摸的编程错误之一。它可能会导致不稳定和莫名其妙的故障,而且很可能是在代码部署到生产环境很久之后才会产生。虽然Go的并发机制使编写干净的并发代码变得容易,但它们并不能防止竞争条件...
Golang pipeline模式
pipeline流水线模式(管道模式),我们用这个模式来计算所有质数的和。 什么是质数 质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。 C++代码实现 我们先用一般的方法实现...
gorm写入数据库后时间差8小时
这个很明显是时区的问题,首先检查一下数据库连接的uri,是否包含如下参数: parseTime=true&loc=Local 重新连接数据库就可以了,如果还不行那你可能要看一下系统环境设置了。 [官方文档链接](https://github.co...
博客文章增加TOC
博客文章是使用Markdown写的,有了TOC(Table of Contents)阅读起来体验更好,TOC就是所有h1组成的标签目录,点击后调到相应的位置。 获取所有h1标签 我用的是github_markdown库,在renderer的Header方法中可以获取,存...
golang设计模式-命令模式
介绍 命令(Command)模式是一种对象的行为型模式,类似于传统程序设计方法中的回调机制,它将一个请求封装为一个对象,从而使得可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是对命令的封装,将发出命令的责任和执行命令的责任...
golang上传图片文件
使用golang来实现图片的上传,服务端我们使用gin框架来接收保存图片 服务端 服务端路由 router.POST("/uploadimage", controller.UploadImage) 服务端保存上传的图片 这里设置了一个简单的认证,上传文件的时候需要带一个pass字段里面存储了需要认证的字符串...
golang读取excel文档转换成json
我们是使用github.com/tealeg/xlsx库实现的,用法比较简单: 1. 读取excel文件 2. 遍历sheets 3. 在每个sheet中再遍历每行 当然这个库还可以写入excel文档这里就不介绍了,有兴趣的可以去github上查看。 代码如下: package main import ( "encoding/json" ...
golang 日志文件切割、保存最大文件数
组合使用logrus和lumberjack库能达到我们的目的。 如:日志单个文件最大10M,最多保存30个日志,代码如下: package Logger import ( "io" "os" "path" "github.com/sirupsen/logrus" "gopkg.in/natefinch/lumberjack.v2" ) var ( logger = logru...
golang 单例模式
单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 要保证线程安全 package main import ( "fmt" "sync" "time" ) type Singleton struct { } var singleton Singleton va...
golang 中介者模式
中介者模式是一种行为设计模式。此模式是创建一个中介对象,以防止对象之间的直接交互,从而避免它们之间的直接依赖关系。 一个很好的中介模式的例子是铁路系统平台,两列火车之间是相互独立的,站长充当调停者,使站台仅对其中一列列车可用。列车通过站长交互,站长维持着等候...
微信本地图片格式转化
PC端微信收到的图片存储在本地,我们可以打开微信的设置->通用设置->文件管理->打开文件夹,在FileStorage/Image日期目录下找到图片文件,但是它经过了简单的加密并且后缀为.dat。 通过下面这个算法可以将dat文件还原成原始图片,目前支持jpg,gif,png三种格式,其他格式应该...