在做一个web应用的时候,通常多个页面会共用同一个模板,只是每个页面的内容不同。如网页的导航栏、菜单栏、footer是共用的。我们写代码的时候也只需要写一个主模板页面frame.html,内容空出来给具体的页面来实现,如:主页index.html,文章页面post.html,错误页面error.html等等,...
golang接口型函数作用
在我们使用golang写http服务的时候通常会使用http.Handle来注册pattern对应的Handler,其实这里就使用到了接口型函数,源码定义如下: type Handler interface { ServeHTTP(ResponseWriter, Request) } type HandlerFunc func(ResponseWriter, Request) func (...
腾讯OCR文字识别API调用
根据用户上传的图像,返回识别出的字段信息。 腾讯AI开放平台地址:https://ai.qq.com/console/capability/overview package main import ( "bytes" "crypto/md5" "encoding/base64" "encoding/json" "fmt" _ "github.com/jinzhu/gorm/dialects/mys...
删除数据库中没有使用到的图片
有个web/upload目录下有许多图片,但是很多图片是测试时产生的在博客文章中并没有使用,所以写个小程序判断哪些图片没有用到然后删除。 步骤 1. 连接数据库 2. 读取目录下的所有图片 3. 根据图片名字在数据库中查找 4. 如果没有找到文章就删除图片 源码...
golang 控制goroutine调度顺序
使用go关键字就可以很容易的启动一个goroutine,启动后他们的执行顺序是不能保证的。如果有多个goroutine,怎样按照我想要的顺序来执行呢? 如: a1在b1和c1后面执行(b1和c1都执行完a1才能执行) d1在a1后面执行(d1执行完才能执行a1) e1在b1或者c1后面执行(b...
golang设置桌面壁纸
golang语言编写,设置windows桌面壁纸,图片来自于必应网站(cn.bing.com) github源码地址:[https://github.com/tujiaw/gowallpaper](https://github.com/tujiaw/gowallpaper) 有兴趣的Star一下吧 编译好的程序:[https://pan.baidu.com/s/1l5OW9GeuUF0r5TFaBW...
golang调用Windows API
golang还能调用Windows API非常有意思,下面写了一个golang换壁纸的demo。 准备了两张bmp格式的图片,没三秒钟换一下壁纸。 主要是先通过dll获取里面api,要注意api参数的写法,dll用完了要释放句柄,这里我用缓存把api缓存起来不必每次调用都去dll里加载。 代码: pac...
goland2020.1含激活
下载地址:https://pan.baidu.com/s/1qh49NXUm0K0VlJo82d723A 提取码:4p8h 激活方式见:Patch/jetbrains-agent/README.txt 如果你下载的jetbrains-agent.jar小于2M,肯定是没有下载完全(可对照sha1sum.txt)。 请保留压缩包内的important.txt和jetbrains-agent...
golang html/template模板继承(嵌套)实例
golang的模板包是html/template,使用的时候通常我们会关注它的模板继承(模板嵌套)怎么写, 毕竟这影响到整体网页渲染接口的写法,以及接口是否优雅和可扩展。 base.tmpl 首先,我们定义一个基础模板layouts/base.tmpl cassandraql {{ define "base" }} <html> <he...
sync.WaitGroup增加timeout
要等待多个goroutine完成,我们可以使用sync.WaitGroup,但是它会一直等待,这里简单封装下增加超时机制。 直接上代码: type WaitGroupTimeout struct { wg sync.WaitGroup done chan struct{} timeout time.Duration } func NewWaitGroupTimeout(timeout...
golang与qpid broker通信
这里我用的是github.com/Azure/go-amqp这个库,它支持AMQP 1.0协议,是纯go语言实现的。qpid用的是1.39.0版本直接启动的话它是不支持AMQP 1.0协议的,需要加载amqp.so库([加载方法](https://www.ningto.com/post/5ea109bb707b535469eb754c))。 下面演示使用sender和rece...
用脚本启停我的go程序
用一个脚本来方便编译、启停我的blog程序(go语言编写的),我在程序中使用了github.com/sevlyar/go-daemon这个库来让博客进程在后台运行。具体用法可以看github上的README,它会生成一个文件存放当前运行进程的pid,我这里取名叫:ningtogo.pid。下面就是服务端脚本的编写了。 ...
go channel缓冲的作用
golang中make chan第二个参数设置缓冲区的大小,如果不设置是无缓冲区的。 下面通过一个例子来说明缓冲的作用。 代码如下: package main import ( "fmt" "time" ) var ch = make(chan int) func main() { go sender() time.Sleep(1 time.Second) ...
给mongodb服务增加认证
在连接mongodb的时候增加用户名和密码认证,如你需要访问nodeblog库进行认证。 将数据库配置改为不需要认证的方式启动 noauth:true ./mongod 进入本地数据库 use nodeblog 切换到nodeblog db.createUser({user:"lion", pwd:"lion", roles:[{role: "readWrite", d...
ERROR: child process failed, exited with error number 62
今天做了数据库恢复动作,然后重启mongodb的时候出现如下错误: ERROR: child process failed, exited with error number 62 解决方法是: 找到dbpath所在的目录删除掉(注意你之前的数据应该有备份),如我的存放在db目录 rm -rf ./db mkdir db 然后重新创建...
go拓扑排序
拓扑排序常用来确定一个依赖关系集中,事物发生的顺序。例如,在日常工作中,可能会将项目拆分成A、B、C、D四个子部分来完成,但A依赖于B和D,C依赖于D。为了计算这个项目进行的顺序,可对这个关系集进行拓扑排序,得出一个线性的序列,则排在前面的任务就是需要先完成的任务。 注意...
go反射
简单结构 package main import ( "fmt" "reflect" ) type User struct { Id int Name string Age int } func (u User) Say() { fmt.Println("hello, world!") } func PrintInfo(o interface{}) { t := reflect.TypeOf(o) fmt.Pri...
go模拟命令行文件拷贝命令
通过这个小程序可以熟悉下面这些包和函数: 1. 命令行参数解析(flag); 2. 从命令行读取输入数据(bufio, reader); 3. 文件操作,判断文件是否存在,创建拷贝文件(io, defer); 4. 基本操作(fmt, string) 代码: package main import ( "bufio" "errors" "...
go mod graph 图表
我们知道通过go mod graph命令可以输出当前工程的模块依赖图,但是这个输出是纯文本的并且只是简单的一对一的关系。 很难看出所有模块之间的依赖关系,如果能用图的形式来显示就清晰多了。 [Graphviz](https://www.ibm.com/developerworks/cn/aix/library/au-aix-graphv...
go 获取bing壁纸地址
必应首页背景图片每天一更新,如果想把它作为桌面壁纸好像没那么简单,它没有提供直接下载的地方也不能右键保存,但是通过分析网页源代码可以拿到我们要的信息。 地址:[https://ningto.com/bing](https://ningto.com/bing) 历史图片: [https://ningto.com/bingimages...