Beego提示数据库bad connection
使用Beego开发Go项目中,有时候在有大量操作Mysql时,有时候会发生如下错误。
1"driver: bad connection"
原因这是因为Mysql服务器主动关闭了Mysql链接。在项目中使用了一个mysql链接,同时使用了事务,处理多个表操作。处理时间长。导致空闲链接超时,Mysql关闭了链接。而客户端保持了已经关闭的链接。
具体原因是:beego没有调用db.SetConnMaxLifetime 这个方法,导致客户端保持了已经关闭的链接。
解决Beego调用db.SetConnMaxLifetime(time.Second),设置数据库闲链接超时时间。
1engine.SetConnMaxLifetime(time.Second * 30)
参考文章https://studygolang.com/topics/5576
python3安装pip3
python运行错误python报错ModuleNotFoundError: No module named 'httplib'缺乏’httplib’包 pip install –upgrade pip`响应
12Could not find a version that satisfies the requirement httplib (from versions: )No matching distribution found for httplib
更新pip
1pip install --upgrade pip
查看pip版本pip -V
1pip 19.1.1 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)
更新pip为pip312345curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py# 注意如果python有多个版本,用python3python3 get-pip.pypip -V//pip 19.1.1 fro ...
Go获取当前时间戳
在Go语言上,go语言的time.Now()返回的是当地时区时间,直接用:
1time.Now().Format("2006-01-02 15:04:05")
输出的是当地时区时间2019-05-13 18:00:17。
go语言没有全局设置时区,每次输出时间需要调用一个In()函数改变时区:
12var cstSh, _ = time.LoadLocation("Asia/Shanghai") //上海fmt.Println("SH : ", time.Now().In(cstSh).Format("2006-01-02 15:04:05"))
在windows系统上,没有安装go语言环境的情况下,time.LoadLocation会加载失败。
time.FixedZone12var cstZone = time.FixedZone("CST", 8*3600) // 东八fmt.Println("SH : ", time.Now().In(cstZon ...
压力测试工具wrk
wrk是一个一个简单的 http benchmark 工具, 能做很多基本的 http 性能测试。wrk 的一个很好的特性就是能用很少的线程压出很大的并发量。wrk支持大多数类UNIX系统,不支持windows。
安装Mac安装1brew install wrk
注意: mac 本身连接数有限制,不要做太大的测试
Linux 安装123git clone https://github.com/wg/wrk.gitcd wrkmake
成功以后在目录下有一个 wrk 文件
编译错误可能出现fatalerror: openssl/ssl.h: Nosuchfileor directory错误是因为系统中没有安装openssl的库
123sudo apt-get install libssl-dev# or runsudo yum install openssl-devel
使用参数1234567891011121314使用方法: wrk <选项> <被测HTTP服务的URL> Options: ...
Go包管理工具Glide
Go getGo 语言原生包管理一般用go get但get 子命令管理依赖有很多大缺陷:
能拉取源码的平台很有限,绝大多数依赖的是 github.com
不能区分版本,以至于令开发者以最后一项包名作为版本划分
依赖 列表/关系 无法持久化到本地,需要找出所有依赖包然后一个个 go get
只能依赖本地全局仓库(GOPATH/GOROOT),无法将库放置于局部仓库($PROJECT_HOME/vendor)
GlideGo有很多包管理工具,如godep、govendor、glide、gvt、gopack等。Glide目前比较受关注。 几大主要功能:
持久化依赖列表至配置文件中,包括依赖版本(支持范围限定)以及私人仓库等
持久化关系树至 lock 文件中(类似于 yarn 和 cargo),以重复拉取相同版本依赖
兼容 go get 所支持的版本控制系统:Git, Bzr, HG, and SVN
支持 GO15VENDOREXPERIMENT 特性,使得不同项目可以依赖相同项目的不同版本
可以导入其他工具配置,例如: Godep, GPM, Gom, ...
Go-xorm自动生成数据表对应struct
使用 golang 操作数据库的同学都会遇到一个问题 —— 根据数据表结构创建对应的 struct 模型。因为 golang 的使用首字母控制可见范围,我们经常要设计 struct 字段名和数据库字段名的对应关系。这是一个非常繁琐的过程。今天,记录一种自动生成代码的方法 —— xorm 工具。
关于 xormxorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。官网http://www.xorm.io/电子书XORM操作指南
常用命令xorm 是一组数据库操作命令的工具,包含如下命令:
12345reverse 反转一个数据库结构,生成代码shell 通用的数据库操作客户端,可对数据库结构和数据操作dump Dump数据库中所有结构和数据到标准输出source 从标注输入中执行SQL文件driver 列出所有支持的数据库驱动
编译xorm工具下载数据库驱动
1234go get github.com/go-sql-driver/mysql //MyMysqlgo get github.com/ziutek/mymysql/godrv //MyMysqlgo ...
使用nc命令监听端口及远程同步文件
nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。
nc的作用
实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
端口的扫描,nc可以作为client发起TCP或UDP连接
机器之间传输文件
机器之间网络测速
常用参数-l用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。
-p <port>老版本的nc可能需要在端口号前加-p参数
-s指定发送数据的源IP地址,适用于多网卡机
-u 指定nc使用UDP协议,默认为TCP
-v输出交互或出错信息,新手调试时尤为有用
-w超时秒数,后面跟数字
-z表示zero,表示扫描时不发送任何数据
常用用法启动tcp端口监听1nc -l 1234
启动端口监听,监听1234端口
测试
1telnet localhost 1234
响应
123Trying 127.0.0.1...Connected to localhost.Escape character is ...
Docker安装Fluentd并管理 Docker 日志
问题Docker每个容器运行一个单独的进程,进程的输出,一般保存在容器中,或者挂载在主机的磁盘上。这样会存在一些问题:
日志无限制的增长。Docker 以 JSON 消息记录每一行日志,这能引起文件增长过快以及超过主机上的磁盘空间,因为它不会自动轮转。
docker logs 命令返回在每次它运行的时候返回所有的日志记录。任何长时间运行的进程产生的日志都是冗长的,这会导致仔细检查非常困难。
日志位于容器 /var/log 下或者宿主机磁盘空间上。
Docker 日志选项有几种方法可以处理当前的 Docker 的日志:
在容器内收集除了正在运行的应用程序之外,每个容器设置一个日志收集进程。baseimage-docker 使用 runit 连同 syslog 作为一个示例。
在容器外收集一个单独的收集 agent 运行在主机上,容器有一个从该主机挂载的卷,它们把日志记录在那里。
在单独的容器中收集这是一个在主机上运行收集 agent 的细微变化。该收集 agent 也是运行在一个容器中并且该容器的卷是使用 docker run 的 volumes-from 选项被 ...
微信开放平台invalid signature错误解决
使用的是微信开放平台,第三方授权,通过第三方获取js_api_ticket, 然后sign后返回给前端页面,但前端页面一直爆config:invalid signature这个错误
错误排查使用微信签名校验工具https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign校验后是正常的
排查access_token参考https://www.jianshu.com/p/da1fddf1a0f2排查access_token,是使用的公众号的authorizer_access_token,非第三方平台的component_access_token
最终错误,获取ticket接口错误后参考https://segmentfault.com/q/1010000002520634注意jsapi_ticket的生成,别调到卡券ticket的生成接口了,type要传”jsapi”
1$url = sprintf("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token ...
微信开放平台第三方授权4001错误
使用微信第三方授权,获取api_component_token错误。
错误提示1errcode:40001 errmsg:invalid credential, access_token is invalid or not latest hint
1234567891011121314private function _get_component_access_token(){ $url = 'https://api.weixin.qq.com/cgi-bin/component/api_component_token'; $data = '{' . "\r\n" . ' "component_appid":"' . $this->appId . '" ,' . "\r\n" . '"component_ ...