阿小信大人的头像
Where there is a Python, there is a way. 阿小信大人

我和Dave有个约会2019-04-29 18:54

### start

今天上午参加了Go语言项目开发成员Dave Cheney的分享。

![](https://wx1.sinaimg.cn/large/67ac78cfgy1g2jogclys2j20tg0nqaf6.jpg)

分享的主题是”High Performance Go: Two tools, three types of profiling in 45 minutes”

![](https://wx1.sinaimg.cn/large/67ac78cfgy1g2joihbvqzj20zk0qn7wh.jpg)

分享的内容来自 非常有干货的分享!

......
#Golang#   评论[0]阅读全文[1945]

Go中组织结构体以节省内存2018-12-11 15:51

Go中组织结构体以节省内存
===================

有一个类似如下的结构体 `myStruct`:

package main

import (
"fmt"
"reflect"
"unsafe"
)

type myStruct struct {
myBool bool
myFloat float64
myInt int32
}

func main() {
a :=

......
#Golang#   评论[0]阅读全文[2507]

pink-lady:Gin WebApp Project Skeleton2018-11-16 23:33

使用go进行web开发,前期经过一些选型,最终决定使用gin这个框架来做开发,gin和flask这类框架很像,一个文件就能起一个服务,但是当项目变得庞大复杂,一个文件是很难维护的,通常我们需要将其拆分为多个目录来存放代码,根据自己的需求实现各种mvc之类的模式。

pink-lady是根据我个人习惯整理而成的代码结构。开发时主要可以总结为ASM(apis services models)模式,开发时只需要关注这三个地方,主要流程是在apis中配置路由routes,编写路由处理方法,处理方法细分为apis接入层和可复用的services层,models定义db数据表结构。

pink-l

......
#Golang#   评论[0]阅读全文[2847]

Golang Gorm中自定义Time类型的JSON字段格式2018-11-05 13:18

Golang中使用gorm时,通过加入gorm.Model到自己的struct来定义一个model。
Gorm是这样定义[Model](https://github.com/jinzhu/gorm/blob/master/model.go#L9)的:

:::go
type Model struct {
ID uint `gorm:"primary_key"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt *time.Time `s

......
#Golang#   评论[2]阅读全文[11214]

Golang变量作用域踩坑记录2018-10-26 11:14

这是一篇记录实际应用中遇到的变量作用域问题,golang的学习资料中很多都提到过这个知识点,但是实际使用中还是不小心就忽略掉坑里了。

背景:打算封装一个gorm的初始化连接db的操作放在一个包里,通过调用这个初始化函数为包里面的全局变量`var DB *gorm.DB` 赋值来作为操作db的句柄

错误写法:

:::golang

var DB *gorm.DB

func InitGormDB(engine, addr, name, username, password string) {

var dsn string

......
#Golang#   评论[0]阅读全文[2967]

Golang web框架选型2018-10-17 18:16

老板说要选一个go的web框架来用,所以记录一下选择理由。

go本身就具备了web开发的特性,`net/http`包+httprouter开发一个apiserver已经足够了,写好包含`http.ResponseWriter`和`*http.Request`参数的业务处理函数,通过`http.HandleFunc`注册路由就可以了。

当前流行的框架:结合github关键字`go web` `go web framework`搜索和`awesome-go`中提及的框架,选出了当前比较start数较多且最近一直在更新的框架

按start数排名:gin 21.2k、beego 17

......
#Golang#   评论[0]阅读全文[6100]

使用Go定义一个可以调用任意回调函数的函数2018-10-15 11:49

原始需求是这样的:我需要监听一个json文件是否发生变化,一旦发生变化就重新调用函数读取文件中新的json来更新一个变量。

现在的需求是想把这种监听到某个事件自动就调用一个函数来处理的通用写法,Golang新手,很多写法都受到Python的影响,想到封装一个能调用通用的回调函数的函数,类似于 OnFileChange(whichFile, callback),当第一个参数指定的文件发生变化时调用第二个参数传入的函数来处理这个事件。直觉上觉得go还可以有其他方式来优雅实现这种需求。

这个函数支持传入一个回调函数作为参数,回调函数的参数不确定,返回值不确定,只能把参数和返回值都定义为i

......
#Golang#   评论[0]阅读全文[3918]

CentOS7 安装 MySQL 5.7.23 并开启 MGR 多主模式2018-08-08 10:39

三台服务器,hostname分别为node1, node2, node3, 可通过hostname相互访问

卸载mariadb

rpm -qa | grep mariadb | xargs rpm -e --nodeps
rm -rf /etc/my.cnf /etc/mysql /etc/my.cnf.d

安装libaio

yum install libaio

下载Linux-Generic版本,上传到安装服务器目录/usr/local/services。

解压重命名为mysql-5.7.23

MySQL不能使用root运行

......
#数据库#   评论[0]阅读全文[3332]