Go语言中文网 为您找到相关结果 1145

database/sql: Stmt的使用以及坑

前言 众所周知,golang操作数据库,是通过database/sql包,以及第三方的实现了database/sql/driver接口的数据库驱动包来共同完成的。 其中database/sql/driver中的接口Conn和Stmt,官方交给第三方实现驱动,并且是协程不安全的。官方实现的database/sql包中的DB和Stmt是协程安全的,因为内部实现是连接池。 如何使用 刚开始接触database/sql包,并且网上的很多使用例子,都类似下面这种方式: db,err := sql.Open("mysql","test:test@tcp(127.0.0.1:3306)/abwork?charset=utf8") rows,err := db.Query("select id,name,a...阅读全文

博文 2014-11-08 18:52:32 郝冠伟

Gin实战:Gin+Mysql简单的Restful风格的API

我们已经了解了Golang的Gin框架。对于Webservice服务,restful风格几乎一统天下。Gin也天然的支持restful。下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全。我们先以一个单文件开始,然后再逐步分解模块成包,组织代码。 It works 使用Gin的前提是安装,我们需要安装gin和mysql的驱动,具体的安装方式就不在赘述。可以参考Golang 微框架Gin简介和Golang持久化。 创建一个文件夹用来为项目,新建一个文件main.go: ☁ newland tree . └── main.go main.go package main import ( "gopkg.in/gin-gonic/gin.v1" "net/http" ) func main() {...阅读全文

博文 2017-03-23 06:59:03 人世间

golang - gorm

gorm github、 gitbook 概述 package main import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) type Product struct { ID uint `gorm:"primary_key"` Code string Price uint } func main() { db,err := gorm.Open("mysql","root:root@tcp(localhost:3306)/gorm") if err != nil { panic("failed to connect database") } defer db.Close() // 自动迁移表...阅读全文

博文 2017-06-02 15:04:12 中柠檬

深入理解GO时间处理(time.Time)

1. 前言时间包括时间值和时区, 没有包含时区信息的时间是不完整的、有歧义的. 和外界传递或解析时间数据时, 应当像HTTP协议或unix-timestamp那样, 使用没有时区歧义的格式, 如果使用某些没有包含时区的非标准的时间表示格式(如yyyy-mm-dd HH:MM:SS), 是有隐患的, 因为解析时会使用场景的默认设置, 如系统时区, 数据库默认时区可能引发事故. 确保服务器系统、数据库、应用程序使用统一的时区, 如果因为一些历史原因, 应用程序各自保持着不同时区, 那么编程时要小心检查代码, 知道时间数据在使用不同时区的程序之间交换时的行为. 第三节会详细解释go程序在不同场景下time.Time的行为. 2. Time的数据结构go1.9之前, time.Time的定义为 ty...阅读全文

博文 2017-12-18 05:57:14 hanjm

golang orm对比

各主流的golang orm介绍 当前较为主流/活跃的orm有gorm、xorm、gorose等 xorm 文档 github document godoc 支持的数据库有:mysql、mymysql、postgres、tidb、sqlite、mssql、oracle 事务性支持 链式api has, err := engine.Where("name = ?", name).Desc("id").Get(&user) err := engine.Where(builder.NotIn("a", 1, 2).And(builder.In("b", "c", "d", "e"))).Find(&users) 支持原生sql操作 查询缓存 可根据数据库反转生成代码 级联加载 提供sql语句日志输...阅读全文

博文 2018-07-11 23:34:48 曾纪文

优秀的 Go 存储开源项目和库

可以看到,今年谷歌家的 Go 编程语言流行度有着惊人的上升趋势,其发展也是越来越好,因此本文整理了一些优秀的 Go 存储相关开源项目和库,一起分享,一起学习。 存储服务器(Storage Server) Go 实现的存储服务器 minio - Minio 是一个与 Amazon S3 APIs 兼容的开源对象存储服务器,分布式存储方案 rclone - “用于云存储的 Rsync” - Google Drive, Amazon Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Cloudfile… camlistore - Camlistore 是你的个人存储系统:一种存储、同步、共享、建模和备份内容的方式 torus - ...阅读全文

博文 2017-02-14 11:00:08 编辑部的故事

Golang 项目中 ORM 选择,gorm xorm 对比

之前用 beego 中自带的 orm,感觉有一些不是很满足需求的地方,而且想要尝试一些新的 orm,写一篇记录一下。在 xorm 和 gorm 之间对比了一下:p.s. 需要说明的是,对比非常初级,而且项目处于很早期,也抱着尝试一下不行再改的心理,并没有想要得到一个孰优孰劣的结论。 commit 的数量相差不多,gorm 相对多了一些 都是在2013年开始的项目 stars gorm 遥遥领先 看起来好像 gorm 的反馈渠道多一些,并且活跃一些 xorm 的博客更好,但是 gorm 的文档好像全面一些 近期提交频率 xorm 优于 gorm 默认支持的数据库类型 xorm 多一些,但是 po 主用的的几个 mysql postgres sqlite 都是支持的 想来想去,对于一个成熟的项目...阅读全文

博文 2017-07-03 05:06:45 HughFace

APIGin_API_Framework

欢迎使用GO Gin API Framework @(示例笔记本)[马克飞象|帮助|Markdown] GIN API Framework是一款专为Go Gin 框架打造的API Framework,通过精心的设计与技术实现,集成了大部分稳定开发组件,memcache consistance Hash,redis,nsq,api doc ,mysql 等。特点概述: 功能丰富 :支持大部分服务器组件,支持API Doc; 得心应手 :简单的实例,非常容易上手; 深度整合 :深度整合memcache,redis,mysql,beego ,gin 框架。 性能优先 :为啥不直接使用beego那,因为gin是目前httprouter性能最高,占用资源最少的框架,而beego...阅读全文

开源项目 2016-12-15 03:49:19

golang数据库操作

一、准备1、MySQL :数据库服务端2、MySQL Workbench:图形界面,用于连接数据库,对数据库进行操作3、连接数据库并创建表 二、引入driver import( "database/sql" _"github.com/go-sql-driver/mysql"// "_" 引入后面的包名 而不直接使用里面的定义的函数、变量、资源等 ) 三、连接数据库 db,err := sql.Open("mysql","用户名:密码@tcp(127.0.0.1:3306)/demo?charset=utf8") Tool.Check("打开数据库",err) //执行Open函数的时候,并不会去获得数据库连接有效性,当执行数据库操作的时候才会去连接, // 当我们需要在Open之后就知道连接...阅读全文

博文 2017-08-31 03:05:19 vet_

大型互联网公司招 数据分析工程师 — 会 Go 优先考虑

北京大型互联网公司招 数据分析工程师,要求懂编程,目前项目有用Go写一些服务,因此会Go语言的优先考虑; 工作职责: 1. 完成数据模型的ETL实施,参与团队ETL流程的优化以及相关技术问题的解决 2. 设计大规模实时系统,实现数据采集、分析和检索 3. 建立数据仓库,DPM 职位要求: 1. 计算机相关专业大学本科及以上学历,有扎实的计算机基础 2. 精通常用数据结构和算法 3. 精通PHP,熟悉Java/Python/Go/C等语言中的一种或几种 4. 精通SQL,掌握MySQL,熟悉Redis和MongoDB等DB的一种或者多种 5. 熟练掌握Hadoop/MR、Storm、Spark或其它并行计算架构 6. 熟悉Linux...阅读全文

Gin实践 连载二 搭建Blog API's(一)

Gin搭建Blog API's (一) 介绍和初始化项目 初始工作区 首先,我们需要增加一个工作区(GOPATH)路径用于我们的Blog项目。 将你新的工作区加入到/etc/profile中的GOPATH环境变量中, 并在新工作区中,建立bin、pkg、src三个目录。 在src目录下创建gin-blog目录,初始的目录结构: $GOPATH ├── bin ├── pkg └── src └── gin-blog 初始化项目目录 gin-blog/ ├── conf ├── middleware ├── models ├── pkg ├── routers └── runtime conf:用于存储配置文件 middleware:应用中间件 models:应用数据库模型 pkg:第三方包 ...阅读全文

博文 2018-02-17 11:34:37 EDDYCJY

Golang-使用goconfig 读取配置文件

使用goconfig 读取ini 配置文件 安装 go get github.com/Unknwon/goconfig 使用方法 加载配置文件 cfg, err := goconfig.LoadConfigFile("conf.ini") if err != nil{ panic("错误") } [mysql] username=root password=123456 url=(127.0.0.1:3306)/baidu [redis] address=127.0.0.1:6379 读取 读取单个值 value, err := cfg.GetValue("mysql", "username") valut, err := cfg.Int("must", int) 读取整个区 sec err...阅读全文

博文 2018-08-07 12:34:49 yunpiao

awesome-go

https://awesome-go.com/ Awesome Go A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python. Contributing Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock! If you see a package or project here that is no longer maintained or is not a good fit, please submit a pu...阅读全文

博文 2016-12-20 13:00:02 andylau00j

golang orm 框架之 gorm

最近在想给这个小站增加点赞和评论功能,第三方系统又有各种限制,就想自己弄个后端,实现类似的功能,对于个人来说,数据量不是很大,单机的 mysql 足够存下所有数据,mysql 作为底层存储是个不错的选择 之前在公司是直接用的 github.com/go-sql-driver/mysql 访问数据库都是直接用写 sql,取出结果然后自己拼成对象,使用上面不是很方便,可读性也不好。想起之前研究 php laravel 框架的时候,直接把数据库层屏蔽了,用户看到的只有对象,使用非常方便,java 里面这种操作方式基本上已经成了标准做法,就去 github 上找了一下 golang 里面有没有类似的东西,果然已经有非常成熟的框架了,github.com/jinzhu/gorm 已经有 7k+ 的 s...阅读全文

博文 2018-02-08 16:34:39 hatlonely

非科班程序员找Golang工作

我是一个非科班的程序员,在省级电视台工作,负责电视技术。出于喜好,业余自学了编程,也不知道算不算精通。 独立写过电视台内部办公OA(04年,ASP+SQL Server+IIS), 写过决策辅助系统(08年,用PHP+MySQL+Apache), 用Python、JS、PHP和树莓派写过魔镜(2016年),代码开源在GitHub, 用Golang写过一些小工具,开源的有ProxyPool(267star, 77fork)。 个人的开源地址是:https://github.com/henson https://gitee.com/henson 想问下大家,像我这样子的跳槽转行做Golang程序员,能开多少钱(深圳、广州)?有公司收么...阅读全文

beego连接mysql包选择

初学go不久,想用beego开发项目,现在想考虑用哪个包连接数据库 beego官方提供了ORM包,但是文档上并没有写采取这种方法的优势,或者说有什么好处,效率提高了还是写起来更方便了? 相比于golang的 "database/sql", "github.com/go-sql-driver/mysql",这种他的劣势在哪里呢? 网上还有用mymysql这个包的,这个包效果如何呢? 希望有人指点迷...阅读全文

kingshard--一个Go开发高性能MySQL Proxy项目

kingshard简介 kingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。 主要功能: 1.读写分离。 2.跨节点分表。 3.客户端IP访问控制。 4.平滑上线DB或下线DB,前端应用无感知。 反馈 目前kingshard还是1.0版本,比较核心的功能已经实现了。但还有很多地方不完善。如果您在使用kingshard的过程中发现BUG或者有新的功能需求,非常欢迎您发邮件至flikecn#126.com与作者取得联系,或者加入QQ群(147926796)交流。 地址:https:...阅读全文

Gin实践 连载九 将Golang应用部署到Docker

将Golang应用部署到Docker 项目地址:https://github.com/EDDYCJY/go... (快上车,支持一波)原文地址:https://segmentfault.com/a/11... 注: 开始前你需要安装好 docker,配好镜像源 本章节源码在 f-20180324-docker 分支上 从本章节开始 项目目录都以 go-gin-example 为基准(请配合自己本地项目灵活变动) 介绍 在这里简单介绍下Docker,建议深入学习 Docker 是一个开源的轻量级容器技术,让开发者可以打包他们的应用以及应用运行的上下文环境到一个可移植的镜像中,然后发布到任何支持Docker的系统上运行。 通过容器技术,在几乎没有性能开销的情况下,Docker 为应用提供了一个隔...阅读全文

博文 2018-03-24 17:34:38 煎鱼

golang mysql

我实在受不了哪些只会粘贴别人东西的东西。自己不动手实践就开始放屁!golang访问mysql数据库1)下载mysql驱动https://github.com/go-sql-driver/mysql下载zip包mysql-master.zip2)将mysql-master.zip放到redhat6.4的机器上,解压,获得文件夹mysql-master,将这个目录改名为mysql,并将mysql目录移到/usr/local/go/src/目录下。/usr/local/go目录是我的GOROOT目录。3)安装mysql,为了简单使用root用户在mysql数据库中创建表userinfo用户:root,密码:空;数据库:msyql,表userinfocreate table userinfo (ui...阅读全文

博文 2017-05-24 02:09:33 haolifengwang

go get 报错

D:\mygo\src>go get github.com/astaxie/beego 1 [main] git-remote-https 4108 fork: child -1 - forked process 8012 died nexpectedly, retry 0, exit code -1073741515, errno 11 # cd .; git clone https://github.com/garyburd/redigo D:\mygo\src\github.com\gaburd\redigo cygwin warning: MS-DOS style path detected: D:\mygo\src\github.com\g...阅读全文

主题 2013-05-16 13:24:08 vest

beego 使用连接mysql 报错 register db Ping `default`, default addr for network '123.56.95.103' unknown must have one register DataBase alias named `default

RT 按着官方文档,当连接一个已有的数据库时报 ``` register db Ping `default`, default addr for network '123.56.93.183' unknown must have one register DataBase alias named `default ``` 代码如下 ``` package main import ( _ "beetest/routers" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" ) func init() { orm...阅读全文

EMQ百万级MQTT消息服务(TLS Docker Golang)

附上: 喵了个咪的博客:w-blog.cn EMQ官方地址:http://emqtt.com/ EMQ中文文档:http://emqtt.com/docs/v2/guide.html 1.TLS证书验证 为了保障安全.我们常常会使用HTTPS来保障请求不被篡改,作为MQTT使用TLS加密的方式来保障传输安全 EMQ默认使用的TLS加密的端口是8883端口,默认证书在EMQ目录下etc/certs: 对应的配置文件在emq.conf中,可以修改你的端口和配置文件路径 listener.ssl.external = 8883 listener.ssl.external.keyfile = etc/certs/key.pem listener.ssl.external.certfile = etc...阅读全文

博文 2018-04-24 19:33:05 喵了_个咪

golang中的加密方式总结

缘起 因为项目中使用mysql的AES_DECRYPT方法,欲使用golang实现该方法, 但是研究了半天没明白怎么回事, 最后才发现golang当前默认支持CBC的方式,但是mysql当前使用的是ECB模式, 所以需要使用者分组分块加密,特总结一下golang中的各个加密算法 关于密码学 当前我们项目中常用的加解密的方式无非三种.对称加密, 加解密都使用的是同一个密钥, 其中的代表就是AES非对加解密, 加解密使用不同的密钥, 其中的代表就是RSA签名算法, 如MD5、SHA1、HMAC等, 主要用于验证,防止信息被修改, 如:文件校验、数字签名、鉴权协议 AES AES:高级加密标准(Advanced Encryption Standard),又称Rijndael加密法,这个标准用来替代...阅读全文

博文 2018-10-20 19:34:42 pengj

成都地区招聘golang

成都魔方在线数据中心诚聘 golang工程师 : 1、计算机相关专业专科及以上学历,具有3年及以上开发工作经验; 2、熟悉golang语言编程,掌握多线程、socket等相关技术; 3、具有高负载、高并发开发设计经验值者优先考虑; 4、熟悉MySql、Mongo等数据库编程; 5、熟悉Linux服务器,有丰富的C/C++编程经验; 6、拥有扎实的计算机编程能力,尤其在数据结构、算法和代码、软件设计方面有较好的功底; 7、最重要的是有责任心,对技术有激情、有追求,富于技术创新精神,勇于解决技术难题; 8、C/C++工程师具有同等工作经验也可以考虑; 9、研究生以上学历可适当放宽其他要求; 职位描述: 1、参与公司平台分布式云搭建 ...阅读全文

谷歌 Go 语言从入门到应用,

Go语言于2009年11月正式宣布推出,成为开放源代码项目,发展至今已经具有越来越广泛的影响力,今年更是在 TIOBE 编程语言排行榜中上升了 34 位,跻身 20 强。很多开发者也逐渐将目光投向这门语言,本文整理了部分比较好的学习和应用 Go 语言的开发项目,希望为没有接触过这门语言的开发者们提供一个学习和了解这门语言的途径。 关于 Go 语言: Go 是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言。 一、入门篇 0.开源图书 《Go Web编程》 一本开源的书籍《Go Web编程》《build web application with golang》。书中作者主要分享了Go写web应用的一些东西: 对于从php/python/ruby转过来的同学了解go怎么写web...阅读全文

博文 2016-12-11 10:00:03 两味真火

studygolang源码阅读小结(一)

最近待业在家,闲来无事。在博主大神@polaris的指点下,开始探索studygolang的源码。最初定的题目是studygolang源码剖析,想想不合适,牛皮吹的有点大了。还是叫源码阅读小结吧。写一些个人的浅薄理解与看法,可能会有错误,希望大伙儿指正。 ## 第一节 源码的获取与本地化运行 ## 本文的目的在于把源码本地运行起来 ###准备工作### 首先源码地址 https://github.com/studygolang,下载最新代码 在本地要编译并执行源码还需要安装下面3个package,使用go get工具 go get github.com/Go-SQL-Dr...阅读全文

PostgreSQL与MongoDB竞争激烈 为事务我也选择了Postgre

欢迎大家一起讨论: MongoDB 不支持事务 也许需不需要数据库事务成了是否选择 MongoDB 的决定性因素,MongoDB 不支持数据库事务。 有很多应用对数据一致性其实要求不高,例如很多社交应用,大多数应用逻辑只是简单存取(发一段文字,上传一张照片),极少的不一致是不影响应用的。 而一些严肃应用,例如交易系统,就很需要数据库事务的支持了,否则就需要在应用层自己实现一个粗糙的、充满 Bug 的事务支持。如果有兴趣自己实现事务操作,可以看 MongoDB 的文章 Perform Two Phase Commits。 如果有跨系统的事务操作,就不能完全依赖数据库事务,还要有应用层的重试或回滚操作(例如远程调用支付接口)。数据库层面支持事务的话,起码...阅读全文

招聘Golang开发工程师

移动应用后端开发工程师职位描述20-40K 需求2-3人 * 采用Go语言(Golang)开发稳健可扩展的后端程序; 备注:这类人比较少,如果比较优秀的候选人即使没做过,有了解过此语言,如果有一定的学习能力,技术团队可以教他。 * 基于SOA架构,为各类项目需求设计架构,开发后端功能服务,同团队成员合作并积极提出建议和反馈; * 通过单元测试、自动化以及代码审查等提升优化代码质量; * 积极参与各种头脑风暴会议并对用到的技术、算法和产品功能提出意见和建议; * 同产品和设计团队协作,理解用户需求,归纳功能用例,并转化为高效的技术解决方案; * 重点及难点技术攻坚,并按时交付研究成果。 岗位要求: * 2-7年的实际项目开发经验; * 本科及以上学历,计算机相关...阅读全文

golang操作mysql使用总结

sql.DB 通过数据库驱动为我们提供管理底层数据库连接的打开和关闭操作. sql.DB 为我们管理数据库连接池 需要注意的是,sql.DB表示操作数据库的抽象访问接口,而非一个数据库连接对象;它可以根据driver打开关闭数据库连接,管理连接池。正在使用的连接被标记为繁忙,用完后回到连接池等待下次使用。所以,如果你没有把连接释放回连接池,会导致过多连接使系统资源耗尽。 操作mysql 1.导入mysql数据库驱动 1 2 3 4 import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) 通常来说, 不应该直接使用驱动所提供的方法, 而是应该使用 sql.DB, 因此在导入 mysql 驱动时, 这里使用了匿名导入的方式(在包路...阅读全文

博文 2018-03-06 20:33:09 coder_kev

web框架Gin使用

### 介绍 为简化使用流程,减少开发时间,降低项目开发成本,搭建了一套基于 ```Gin``` 的web骨架。组件包括但不局限于路由、控制器、Orm、session、cookie、mysql连接、认证中间件等。 项目地址:https://github.com/chenhg5/morningo ### 使用指南 提供了一个命令行工具,morningo-installer。可以直接下载: ``` wget https://gitee.com/cg33/morningo-installer/raw/master/morningo-installer # mac wget https://gitee.com/cg33/morningo-installer/raw/master/morningo-i...阅读全文

博文 2018-08-04 12:15:07 cg33

Go 的 MQ 框架 KiteQ

KiteQ 是一个基于 go + [protobuff](http://www.oschina.net/p/protocol+buffers) 实现的多种持久化方案的 mq 框架(消息队列)。 特性:

* 基于zk维护发送方、订阅方、broker订阅发送关系、支持水平、垂直方面的扩展
* 基于与topic以及第二级messageType订阅消息
* 基于mysql、文件存储方式多重持久层消息存储
* 保证可靠异步投递
* 支持两阶段提交分布式事务
工程结构:
kiteq/
├── README.md
├── binding           订阅关系管理处理跟ZK的交互
├── build.sh          安装脚本
├── client   ...阅读全文

开源项目 2015-05-24 16:00:00 blackbeans

基于 Go 的 Web 开发工具Algernon

纯 Go 语言开发的 Web 开发工具,内置 Lua,Markdown,模板和 HTTP / 2,Redis,Mysql,Postgresql 支持。支持 Lua 写网页。当 Redis 不存在时,用 Go 语言的 boltdb 模板引擎。 运行Algernon(从较早版本的屏幕截图): ![image](https://static.oschina.net/uploads/space/2017/0501/081907_wbI4_2903254.png) Markdown 很容易设置 Sass 或 GCSS 样式。 ![image](https://static.oschina.net/uploads/space/2017/0501/082426_BkhP_2903254.png...阅读全文

开源项目 2017-05-01 01:00:22 xyproto

饿了么 Influxdb 实践之路

前言 Influxdb是一个基于golang编写,没有额外依赖的开源时序数据库,用于记录metrics、events,进行数据分析。这篇文章谈论的influxdb版本在1.2.0以上。这篇文章只谈论influxdb在监控中的数据存储应用,不会谈论influxdb提供的整套监控方案。本文主要谈论五个方面:时序数据库选型、influxdb基本概念、存储引擎、实践、数据聚合。 选型 Influxdb vs Prometheus influxdb集成已有的概念,比如查询语法类似sql,引擎从LSM优化而来,学习成本相对低。 influxdb支持的类型有float,integers,strings,booleans,prometheus目前只支持float。 influxdb的时间精度是纳秒,prom...阅读全文

博文 2017-06-24 09:49:24 刘平

权限管理单用户多角色权限管理平台

权限管理服务平台, 利用shiro权限管理设计思想, 支持单用户多角色,比RBAC的资源管理更细粒度化 Edit 权限管理服务平台 该服务采用比较流行的微服务思想, 利用shiro<域,动作,实体>思想,实现权限管理平台服务, 它支持单用户多角色 , 比RBAC的资源管理更细粒度化 权限管理服务平台的实现,主要由三个步骤构成: 第一步:判断URL是否在白名单中,如果是,直接返回状态码:200 第二步:解析URL,获取功能ID和实体ID,服务初始化阶段,会构建多叉树 第三步:获取<域,动作,实体>, 并在redis中采用SET集合存储 权限管理库表设计 权限管理库表 环境依赖 beego框架 redis OpenResty配置 权限管理安插...阅读全文

开源项目 2017-03-04 03:24:03 陈东海

go连接mysql产生大量连接

一直是这个问题困扰着哦我,为什么越来越多连接,到爆掉,换作postgresql驱动也是,还是我理解go语言并发有错呢 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "strconv" "time" ) var xiancheng = 10 var over = make(chan bool) var sem = make(chan int, xiancheng) func checkErr(err error, hh int) { if err != nil { fmt.Printf("er...阅读全文

基于gin框架快速开发应用(实战类型项目)

### 技术选型 框架: gin 日志处理: zap orm: gorm 优雅重启HTTP服务: gracehttp 测试框架: ginkgo ### 接口风格 RESTFUL ### 项目结构 * api - handler函数 * route - 路由注册 * model - 数据模型以及数据库操作 * doc - 接口文档 * log - 日志处理 * config - 配置文件 * tools - 公共工具类 * vendor - 项目依赖其他开源项目目录 * dist - 打包生成安装包的存放路径 * main.go - 程序执行入口 * Makefile 提供编译、打包、测试等功能的脚本文件 * ginkgo 二进制文件,容器内执行测试用例的时候需要使用的命令,请勿移除 * ju...阅读全文

博文 2018-07-17 19:52:14 KenmyZhang

统一任务调度平台scheduler for golang

在企业项目开发中会定时执行对应的job,对于一些简单少的job可以直接使用调度器调度执行任务。当随着公司的业务越来越多,执行任务越来越多。那么直接使用任务调度器调度任务执行会变得臃肿,而且对于任务是动态配置不可实现。如:想某一个时刻停止任务的执行、删除此任务然后修改更新任务执行时间等,如某一个任务配置到多台机器上如何做到不可用时,进行转移等问题。 为了解决此类问题,我们需要对任务的调度和执行进行分开。有统一的任务调度中心-专门进行任务的调度分发任务工作,各个任务的具体任务执行分配到个个项目中。从而达到对任务的统一配置和管理。 #基础环境 #GO环境 cd /usr/local/src/ mkdir -p $HOME/gocode/src # tar -zxf go1.8.3.linux-am...阅读全文

博文 2017-07-11 11:04:02 13614

golang优雅读取环境变量 env

有时候,env会非常多,尤其是现在很多应用都放在doker里,很多配置都是通过环境变量读取,所以希望读取的env能与golang的struct能对应,比如: CONFIG_APP=ENVAPP CONFIG_DEBUG=1 CONFIG_HOSTS=192.168.0.1,127.0.0.1 CONFIG_TIMEOUT=5s CONFIG_REDISVERSION=3.2 CONFIG_REDIS_HOST=rdb CONFIG_REDIS_PORT=6379 CONFIG_MYSQL_HOST=mysqldb CONFIG_MYSQL_PORT=3306 可以通过: import ( "fmt" "time" "os" "github.com/timest/env" ) type con...阅读全文

博文 2018-07-11 12:34:46 看山羊

实现golang将mysql结果集转换成json的通用方法的正确姿势

写在开头 最近在做elasticsearch相关的开发,有这么一个需求,需要将mysql指定表的数据导入到elasticsearch的索引中,这个需求似乎比较容易,大致思路就是从遍历表中的每一行数据,转换成json,然后通过es的api接口提交到es中。 这个似乎是一个比较简单需求,只是有一点这是一个通用的操作,程序不需要关心遥操作的是什么样的表,包含哪些字段等等。 第一版 stackoverflow上已经有了一个比较好的解决方案:这里只使用了 go-sql-driver/mysql func getJSON(sqlString string) (string, error) { rows, err := db.Query(sqlString) if err != nil { return ...阅读全文

博文 2017-07-29 17:05:13 这里好像没有人

超级简单ORM的实现方式

//根据传入的struct中定义的字段名自动小写首字母,查询得到的值自动插入struct中.当然也可以用tag查询,但是需要首先把tag取出来,然后做一个map把tag值和对应的field存储起来. func SelectOne(i interface{}, query string, a ...interface{}) { rows, err := db.Query(query, a...) if nil != err { log.Println(err) return } cols, err := rows.Columns() if nil != err { log.Println(err) return } is := ma...阅读全文

一个Go开发高性能MySQL Proxy项目kingshard

###kingshard简介 kingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。 主要功能: 1.读写分离。 2.跨节点分表。 3.客户端IP访问控制。 4.平滑上线DB或下线DB,前端应用无感知。 ###反馈 目前kingshard还是1.0版本,比较核心的功能已经实现了。但还有很多地方不完善。如果您在使用kingshard的过程中发现BUG或者有新的功能需求,非常欢迎您发邮件至flikecn#126.com与作者取得联系,或者加入QQ群(147926796)交流。 ...阅读全文

开源项目 2015-07-19 11:28:34 flike

北京招聘golang工程师

工作地点: 北京市通州区马驹桥环科中路16号66号楼2层 待遇福利: 包吃包住.衣食无忧 24寸大宽屏显示器(竖屏 代码专用) 还有详谈....... 岗位要求: 有2年及以上开发工作经验(如果优秀可以发github or code) 熟悉Linux工作环境,熟悉MySql、Redis等数据库编程,golang能够独立开发 熟悉网络协议,Socket协议 具有高负载、高并发开发设计经验值者优先考虑 拥有扎实的计算机编程能力,尤其在数据结构、算法和代码、软件设计方面有较好的功底 工作积极主动、擅于思考问题,能够主动沟通与解决问题 职位描述: 参与并负责公司服务端开发(linux + golang) 公司名称: 北京微梦灵动科技有限公司 邮件...阅读全文

GOLANG 连接Mysql的时区问题

使用mysql的时间字段遇到如下两个问题1.使用go-sql-driver来连接mysql数据库,获取的时区默认是UTC +0的,与本地的东八区是有区别,在业务处理中会出现问题2.获取mysql中的日期,是string类型,需要在代码中用time.Parse进行转化 解决方案:在连接的dsn中,添加parseTime=true 和loc=Local,此处的local可以换为具体的时区(Asia/Shanghai) 示例代码: package main import ( "database/sql" "fmt" "time" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "bp:1...阅读全文

博文 2017-05-27 04:13:14 莫Y兮

【滴滴出行】邀请Go大牛加入

滴滴出行诚邀有技术、有热血的golang大牛加入~ 坐标西二旗 有意者请将简历发送至 wangweiyu@didichuxing.com 职位要求 1. 熟练掌握C、C++、java、python等语言,熟悉golang将是很大的加分项,我们未来的开发将以golang为主; 2. 有丰富的工作经验,能够独立主导要求对自己做的项目有自己深入的理解,并能持续的关注和优化自己做的项目,研究过优秀开源软件的源码并有心得者优先; 3. 精通 MySQL 应用开发,熟悉数据库原理和常用性能优化技术,以及 NoSQL原理、使用场景以及限制; 4. 熟悉常用的互联网技术,包括但不限于RPC、MQ、缓存技术、调用策略等; 5. 参与过大型复杂分布式互联网系统的设计、架构者优先...阅读全文

kingshard--一个Go开发高性能MySQL Proxy项目

kingshard简介 kingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。 主要功能: 1.读写分离。 2.跨节点分表。 3.客户端IP访问控制。 4.平滑上线DB或下线DB,前端应用无感知。 反馈 目前kingshard还是1.0版本,比较核心的功能已经实现了。但还有很多地方不完善。如果您在使用kingshard的过程中发现BUG或者有新的功能需求,非常欢迎您发邮件至flikecn#126.com与作者取得联系,或者加入QQ群(147926796)交流。 地址:https://gi...阅读全文