avatar
文章
383
标签
67
分类
46

主页
时间轴
标签
分类
关于
ClawHub的技术分享
搜索
主页
时间轴
标签
分类
关于

ClawHub的技术分享

Go-string模板?占位符?
发表于2019-08-11|Golang
文章首发于:clawhub.club 想实现邮件发送时,选择模板功能,于是找了找资料,最开始使用go的text/template,后来发现和我想要的有点区别,最后发现直接用fmt就好了!!!但是学了就学了,记录一下。 text/template传入string123456789101112name := "ClawHub" //建立一个模板,内容是"hello, {{.}}" tmpl, err := template.New("test").Parse("hello, {{.}}") if err != nil { panic(err) } //将string与模板合成,变量name的内容会替换掉{{.}} err = tmpl.Execute(os.Stdout, name) //合成结果放到os.Stdout里 if err != ni ...
验证码实现逻辑设计
发表于2019-08-11|Golang
文章首发于:clawhub.club 用途 注册 登陆 找回密码 方式 邮件发送 手机短信发送 逻辑1 发送验证码1.1 查看验证码发送记录,看是否能够发送验证码 检查验证码最小发送间隔 检查验证码今日已发送次数 1.2 刷新发送记录 刷新最后发送时间 递增今日发送次数 1.3 存储验证码信息验证码结构 1234567{ “addr”:”123@qq.com”,//邮箱或手机号 “code”:”985764”,//验证码 “type”:”login”,//目的服务 “sendTime”:1509721130,//验证码发送时间戳 “activeMinute”:10//验证码有效时间} 验证码信息直接存到redis中,根据activeMinute加上过期时间 最后发送时间/今日发送次数 也存储在redis中 验证码信息,当天发送次数等,入mongodb 1.4 发送操作将待发送信息放入队列,由邮件或者短信系统发送。 2 验证验证码和缓存中的验证码比较。 本次只是简单的实现邮件发 ...
Go版本邮件发送服务搭建
发表于2019-08-11|Golang
文章首发于:clawhub.club 简单的画了个架构图: 发送邮件 记录mongo 日志系统 配置文件读取 REST服务 vendor包管理 项目代码结构比较简单的项目结构。 技术核心:发送邮件1234567891011121314func Send(subject, toAddress, toName, body string) error { m := gomail.NewMessage() m.SetAddressHeader("From", "clawhub@163.com", "ClawHub") m.SetAddressHeader("To", toAddress, toName) m.SetHeader("Subject", subject) m.SetBody("text/html", body) d := gomail.NewDialer(EMailSetting.Host, EMailSetting.Port, EMailSe ...
cannot find package golang.org/x/sys/unix
发表于2019-08-11|Golang
文章首发于:clawhub.club 开发好的go项目,在windows上运行的好好的,等拿到linux上编译时,报错,找不到核心包,用共go get命令也获取不到,查资料说是被墙了,幸好github上又对应的包下载,https://github.com/golang?page=1下载后,成功解决。 123mkdir -p $GOPATH/src/golang.org/xcd $GOPATH/src/golang.org/xgit clone https://github.com/golang/sys.git 参考:http://www.fecshop.com/topic/805
Go-mongodb使用和Go格式化时间问题
发表于2019-08-11|Golang
文章首发于:clawhub.club 最近再做一个小型邮件发送服务,需要用mongo记录一下邮件发送历史。虽说网上一大堆教程都是不建议用mongo官方的go版本,但是我还是用了,感觉简单的使用,因该碰不到啥坑吧。github地址:https://github.com/mongodb/mongo-go-driver跟着示例就可以跑起来了,参考着官方文档,简单的封装了一下,以备使用。官方文档地址:https://www.mongodb.com/blog/post/mongodb-go-driver-tutorial 上封装的原码: 123456789101112131415161718192021222324252627282930313233343536373839404142package gmongoimport ( "context" "go-email/com/clawhub/pkg/logging" "go-email/com/clawhub/pkg/setting" "go.mongodb.org/m ...
Go-email使用
发表于2019-08-11|Golang
文章首发于:clawhub.club 想用Go做一个简单的邮件发送服务,所以在github上找了一圈,最后选中:https://github.com/go-gomail/gomail我是使用163邮箱作为发送端,因为以前用过java实现过邮件发送告警,所以还保留者邮箱与密码。简单的实例: 12345678910111213func Send(subject, toAddress, toName, body string) error { m := gomail.NewMessage() m.SetAddressHeader("From", "clawhub@163.com", "ClawHub") m.SetAddressHeader("To", toAddress, toName) m.SetHeader("Subject", subject) m.SetBody("text/html", body) d := gomail.NewDialer(EM ...
defer对函数内变量赋值问题
发表于2019-08-11|Golang
文章首发于:clawhub.club 问题代码: 123456789101112func Test() error { var err error defer func() { //恢复程序的控制权 iErr := recover() if iErr != nil { err = errors.New("err") } }() panic("error") return err} 发生panic时,变量err赋值不生效。解决后代码: 1234567891011func Test() (err error) { defer func() { //恢复程序的控制权 iErr := recover() if iErr != nil { err = errors.New("err") } }() panic("error") return err} 原因:defer在 ...
Go-头等函数
发表于2019-08-11|Golang
文章首发于:clawhub.club 这篇文章纯纯的借鉴加复制,参考了Go 系列教程 —— 33. 函数是一等公民(头等函数)虽然说java现在也支持了链式编程,但是对头等函数方面还是很陌生的。 定义支持头等函数(First Class Function)的编程语言,可以把函数赋值给变量,也可以把函数作为其它函数的参数或者返回值。Go 语言支持头等函数的机制。 匿名函数没有名称的函数称为匿名函数(Anonymous Function),要调用一个匿名函数,可以不用赋值给变量。还可以向匿名函数传递参数。 1234567891011package mainimport ( "fmt")func main() { func(n string) { fmt.Println("Welcome", n) }("Gophers")} 用户自定义的函数类型和定义结构体一样,可以定义函数类型,就像HandlerFunc一样。 12// HandlerFunc ...
不带模式和填充来获取AES算法-JAVA与Golang的互通
发表于2019-08-11|Golang
文章首发于:clawhub.club 重要:在Java中不带模式和填充来获取AES算法的时候,其默认使用AES/ECB/PKCS5Padding!!! 1 Java的AES加解密如果把Cipher.getInstance(“AES”);中的”AES”换成”AES/ECB/PKCS5Padding”,效果是一样的。 1.1 加密操作123456789101112131415/** * Description: 加密操作 <br> * * @param data 待加密数据 * @param key 密钥 * @return 加解密后的信息 * @throws Exception <br> */ public static byte[] encrypt(byte[] data, byte[] key) throws Exception { Key secretKey = new SecretKeySpec(key, "AES"); ...
Gin+ini+redis+log+mysql+cron+govendor框架搭建
发表于2019-08-11|Golang
文章首发于:clawhub.club 最近学习Go,在看各种文档,博客,别人写的代码。最后搭建了一个纯API应用框架。 选用Gin框架做web服务 分层思想 配置文件采用:github.com/go-ini/ini 日志采用go.uber.org/zap/zapcore和gopkg.in/natefinch/lumberjack.v2 redis:github.com/go-redis/redis orm:github.com/jinzhu/gorm操作mysql 校验框架采用:github.com/astaxie/beego/validation Token方案:github.com/dgrijalva/jwt-go 工具包:github.com/Unknwon/com 导入导出excel:github.com/360EntSecGroup-Skylar/excelize和github.c ...
1…192021…39
avatar
ClawHub
ClawHub的技术分享,记录学习中的点点滴滴!
文章
383
标签
67
分类
46
Follow Me
公告
奋斗!
最新文章
以精准营销为例梳理短信业务
以精准营销为例梳理短信业务2023-10-16
小程序商品库存及限购优化改造
小程序商品库存及限购优化改造2023-10-16
从恶意刷单到小程序下单流程优化
从恶意刷单到小程序下单流程优化2023-10-16
从红包裂变活动了解活动业务
从红包裂变活动了解活动业务2023-09-27
从服务提醒单了解商机提醒业务
从服务提醒单了解商机提醒业务2023-09-23
标签
Golanghexo分布式微服务业务梳理小程序下单商机提醒活动短信nodeelectronvue测试PostmanJasper打印模板ExcelSQL微信ElasticSearchSQL优化福利资源问题与解决Excel上传OOMMap.computeIfAbsentAsyncTransmittableThreadLocalLists.partition随笔面试一键分发平台JavaJAVA基础java泛型arthasJAVA基础集合框架java并发容器源码分析
归档
  • 十月 20233
  • 九月 20233
  • 十二月 20223
  • 十一月 20223
  • 七月 20222
  • 六月 202210
  • 五月 202211
  • 四月 20222
©2019 - 2023 By ClawHub
好好学习 天天向上
搜索