
Golang
文章平均质量分 59
一只努力的微服务
努力坚持终会有收获
展开
-
【clickhouse系列】使用operator-sdk快速开发clickhouse-operator
ch-operator是一个基于operator-sdk框架的实验性的clickhouse operator项目,目的是为了熟悉operator-sdk框架的使用以及clickhouse集群怎样适配k8s。operator-sdk安装安装最新版本brew install operator-sdk指定版本安装export RELEASE_VERSION=v0.13.0curl -LO https://github.com/operator-framework/operator-sdk/relea原创 2021-04-05 12:27:18 · 658 阅读 · 0 评论 -
Kubernetes源码之informer机制分析
背景informer是kubernetes非常重要的组件,负责各组件与apiserver的资源与事件同步。informer在许多组件中都有用到。乍一看可能比较难理解,但深入之后就会对kubernetes的事件处理机制与未来可能的瓶颈有更深刻的认识。简单的来说,informer监听某些资源,从apiserver中接受该类型资源的变化,由用户注册的回调函数对资源变化进行处理,并将变化之后的对象持久化到本地缓存中。源码分析为了简单起见,我选择kubernetes的custom controller进行分析转载 2020-07-22 20:23:57 · 2729 阅读 · 1 评论 -
gorm Find查询流程源码分析
gorm查询流程源码分析gorm是用golang写的数据库orm库,目前golang写的orm库也有很多,例如xorm,beego orm,gomybatis等,各有各的优势特点,看一下gorm对golang基础框架中数据库相关接口是如何封装的。gorm一般的初始化方式db, err := gorm.Open("mysql", "user:password@/dbname?charset=u...原创 2019-05-11 22:16:04 · 5403 阅读 · 0 评论 -
如何避免Golang结构体嵌套格式化输出指针地址
go结构体存在嵌套结构体时,使用%+v格式化输出时会出现打印指针地址的问题,如:type Student struct{ Name string Desp string}type Teacher struct{ Student []*Student Name string}func main() { teacher := new(Teacher) teacher.Name...原创 2019-05-11 22:21:29 · 3496 阅读 · 0 评论 -
systemctl使用reload及踩坑
1.demo.service文件[Unit]Description=demo - demo serverDocumentation=http://git.demo.com/demoAfter=network.target remote-fs.target nss-lookup.target[Service]Type=sampleUser=rootPIDFile=/run/demo...原创 2019-07-11 15:43:32 · 40231 阅读 · 1 评论 -
Go数据库查询底层流程
一般写法:db,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/husky?charset=utf8");rows,err := db.Query("select * from test");for rows.Next(){ var name string rows.Columns() err :=...原创 2019-08-23 22:09:22 · 680 阅读 · 0 评论 -
Golang数据库连接池几个你很困惑的问题(未完待续)
xorm简介xorm框架对go基础包database及go-mysql-driver驱动进行了比较完整的封装,go在database/sql/drive中实现驱动接口,由go-mysql-driver/mysql来实现具体的mysql交互方法。对于数据库连接池部分,xorm是没有单独实现,只是对go基础包中的数据库通用连接池进行了封装。xorm对连接池暴露的方法有三个:// 设置连接池最大空...原创 2019-08-22 21:28:03 · 4789 阅读 · 0 评论 -
Golang数据库连接池运行原理(源码解析)
1.MySQL驱动注册即连接池启动github.com/go-sql-driver/mysql/driver.go中的init方法实现mysql驱动注册func init() { sql.Register("mysql", &MySQLDriver{})}上面的init方法实际是调用"database/sql/driver"基础包中的Register()方法,如下:func ...原创 2019-08-29 21:52:40 · 2061 阅读 · 0 评论