关于debug:Java设计模式精讲-Debug方式内存分析内附文档源码
download:Java设计模式精讲 Debug形式+内存剖析内附文档源码解析 Golang 定时工作库 gron 设计和原理简略说,每一个位都代表了一个工夫维度,* 代表选集,所以,下面的语义是:在每天早上的4点05分触发工作。但 cron 毕竟只是一个操作系统级别的工具,如果定时工作失败了,或者压根没启动,cron 是没法提醒开发者这一点的。并且,cron 和 正则表达式都有一种魔力,不知道大家是否感同身受,这里引用共事的一句名言: 这世界上有些语言非常相似: shell脚本, es查问的那个dsl语言, 定时工作的crontab, 正则表达式. 他们相似就相似在每次要写的时候基本都得从新现学一遍。 刚巧,最近看到了 gron 这个开源我的项目,它是用 Golang 实现一个并发安全的定时工作库。实现非常简略精美,代码量也不多。明天咱们就来一起拆散源码看一下,怎么基于 Golang 的能力做进去一个【定时工作库】。 Gron provides a clear syntax for writing and deploying cron jobs. gron 是一个泰国小哥在 2016 年开源的作品,它的个性就在于非常简略和清晰的语义来定义【定时工作】,你不必再去记 cron 的语法。咱们来看下作为使用者怎么上手。首先,咱们还是一个 go get 安装依赖:$ go get github.com/roylee0704/gron复制代码假设咱们期望在【时机】到了当前,要做的工作是打印一个字符串,每一个小时执行一次,咱们就可能这样:package main import ( "fmt""time""github.com/roylee0704/gron") func main() { c := gron.New()c.AddFunc(gron.Every(1*time.Hour), func() { fmt.Println("runs every hour.")})c.Start()}复制代码非常简略,而且即便是在 c.Start 之后咱们依然可能增加新的定时工作进去。反对了很好的扩展性。定时参数留意到咱们调用 gron.New().AddFunc() 时传入了一个 gron.Every(1*time.Hour)。这里其实你可能传入任何一个 time.Duration,从而把调度间隔从 1 小时调整到 1 分钟以至 1 秒。除此之外,gron 还很贴心地封装了一个 xtime 包用来把常见的 time.Duration 封装起来,这里咱们开箱即用。import "github.com/roylee0704/gron/xtime" ...