Liangjf

The darkest hour is that before the dawn.

redis

redis存用户信息用key-value还是hash

redis存储用户信息用key-value还是hash 在平时开发中,用户信息的存储是经常碰到的,比如经常把用户数据缓存到redis中,此时,有两种存储方式: 1、把整个用户信息json序列化后通过key-value的形式存储 2、把用户信息拆分成一个个字段通过hash结构来存储 这两种方式,在平时开发中,应该如何选择呢? 方案解释 方案1 将整个对象作为jso...

go

go开发经验

go开发经验 go开发中,踩过的一些坑,此文章保持更新 1、在单元测试、集成测试、压力测试时,加入 -count=1。避免测试时中间结果或测试数据缓存了,影响多次测试结果。 2、使用binary包时,必须使用明确的长度确定的类型。(因为 intDataSize和data.(type)的存在。) 3、结构体需要作为参数,其他函数或方法用到,结构体里的每个变量必须大写开头,不然因...

go

wktmltopdf实战

wktmltopdf实战 有个需求是把订单的内容生成pdf,经过寻找,找到了go-wktmltopd wktmltopdf工具是使用Webkit引擎来将HTML网页转换为PDF文件,关于wkhtmltopdf工具的相关信息可以参见: http://code.google.com/p/wkhtmltopdf/ http://www.oschina.net/p/wkhtmltopdf/ ...

go

go-web常用表单验证

go-web常用表单验证 在go web开发中,对于客户端传过来的表单必须是保持不信任的状态,都要做严格的验证。以下是一些常用的表单验证。 中文 if m, _ := regexp.MatchString("^[\\x{4e00}-\\x{9fa5}]+$", r.Form.Get("realname")); !m { return false } 英文 if m, _ := ...

go

go websocket

go websocket(ws和wss) 最近有个项目是小程序,后台,安卓三方通信的,后台与安卓是基于http接口和走推送系统;因为和小程序是有主动和被动交互的,因此选用websocket来实现,希望能够及时推送终端(安卓端)的信息给小程序。 经过调研选用github.com/gorilla/websocket这个开源库。 1、制作ssl证书 如果没有购买的证书,测试用就自签ssl...

go-grpc

go-grpc应用demo

go-grpc应用demo demo deadline 安全权限 拦截器 流式处理 源码地址 github

go https

https 安全性API

win下https 安全性API 1.下载win下的openssl http://slproweb.com/products/Win32OpenSSL.html 2.把openssl bin加入path中 比如:加入自己的开发目录的conf目录就ok 3.去到要生成密钥的目录,执行 openssl req -new -nodes -x509 -out server.crt -keyo...

golang

http.Handle和http.HandleFunc的区别

#go http.Handle和http.HandleFunc的区别 例子分析 package main import ( "log" "io" "net/http" ) type TestHandle struct {} func (t TestHandle)ServeHTTP(w http.ResponseWriter, r *http.Request) ...

goland

goland连接远程仓库代码,自动同步

windows下goland连接远程仓库代码,自动同步 1、搭建samba 注意最后需要给samba共享的目录加上写权限。 liangjf@blue:~$ sudo chown -hR liangjf:root ljf_home/ [sudo] liangjf 的密码:        liangjf@blue:~$ chmod -R go+rwx ljf_home/ liangjf@bl...

gin

gin启动和请求流程,压测

gin启动和请求流程,压测 分析 new一个Engine代表gin服务 g := gin.Default() gin启动 g.Run http监听服务 http.ListenAndServe server监听服务 server.ListenAndServe() 监听连接 ln, err := net.Listen("tcp", addr) return srv.Serve(...