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

golang学习之旅:使用go语言操作mysql数据库

1.下载并导入数据库驱动包 官方不提供实现,先下载第三方的实现,点击这里查看各种各样的实现版本。这里选择了Go-MySQL-Driver这个实现。地址是:https://github.com/go-sql-driver/mysql/。 然后按照里面的说明下载驱动包: $ go get github.com/go-sql-driver/mysql 最后导入包即可: import "database/sql" import _ "github.com/go-sql-driver/mysql" 2.连接至数据库 db, err := sql.Open("mysql", "root:root@/uestcbook") 3.执行查询 (1)Exec result, err := db.Exec( "I...阅读全文

博文 2015-05-07 03:00:00 michaellau

GoLang redis 连接池

最近被日志是折腾得死去活来,写文件无疑效率是最高的,但是分布式又成问题,虽然稍微折腾一下配合NFS,还是可以搞一搞的,但是始终语言设计没有那么方便。 最终决定用redis,换了redis以为就好了,因为内存运行嘛,谁知道tcp连接开销大得一塌糊涂,服务器负载一下子高了许多,使用netstat -an 查看发现一堆的 TIME_WAIT,连ssh到服务器都巨慢无比,所谓天下武功唯快不破,这么慢80岁老太太跳一支广场舞都能给灭了吧。 既然 tcp连接开销这么大,当然首要任务就是解决连接问题,明显一个请求一次连接是很不靠谱的,还不如直接往硬盘写日志呢,当然写日志第一段也说了,不支持分布式,业务分配没那么好。 那么,能不能先定只用一个连接呢,这显然是不行的,一个连接多个php-fpm互掐也会造成瓶颈...阅读全文

博文 2015-05-07 14:00:01 echo不惑

go语言的官方包sync.Pool的实现原理和适用场景

已经使用golang有一段时间,go的协程和gc垃圾回收特性的确会提高程序的开发效率。但是毕竟是一门新语言,如果对于它的机制不了解,用起来可能会蹦出各种潘多拉盒子。今天就讲讲我在项目中用到的sync包的Pool类的使用,以免大家混淆使用。 众所周知,go是自动垃圾回收的(garbage collector),这大大减少了程序编程负担。但gc是一把双刃剑,带来了编程的方便但同时也增加了运行时开销,使用不当甚至会严重影响程序的性能。因此性能要求高的场景不能任意产生太多的垃圾(有gc但又不能完全依赖它挺恶心的),如何解决呢?那就是要重用对象了,我们可以简单的使用一个chan把这些可重用的对象缓存起来,但如果很多goroutine竞争一个chan性能肯定是问题.....由于golang团队认识到这个...阅读全文

博文 2015-06-17 20:06:14 yongjian_lian

Golang数据库操作

Golang支持DB操作位于database包下,支持基本CRUD操作、事务和Prepared Statement,本文以MySQL为例。 MySQL驱动安装 使用数据库之前,必须安装相关MySQL数据驱动[1],如果未安装驱动或者没有引入驱动库会报以下错误: failed to open database: sql: unknown driver "mysql" (forgotten import?) 安装golang mysql driver go get github.com/go-sql-driver/mysql 代码中还需注册数据库驱动,通过引入空白倒入[2]mysql包来完成 import("database/sql"// 引入数据库驱动注册及初始化_ "github.com/g...阅读全文

博文 2015-06-17 20:01:42 CoProphet

Redigo--用池管理redis连接

在golang的项目中,若要频繁的用redis(或者其他类似的NoSQL)来存取数据,最好用redigo自带的池来管理连接。 不然的话,每当要操作redis时,建立连接,用完后再关闭,会导致大量的连接处于TIME_WAIT状态(redis连接本质上就是tcp)。 注:TIME_WAIT,也叫TCP半连接状态,会继续占用本地端口。 以下为redis连接池的golang实现: import ( "github.com/garyburd/redigo/redis" "github.com/astaxie/beego" "time" ) var ( // 定义常量 RedisClient *redis.Pool REDIS_HOST string REDIS_DB int ) func init()...阅读全文

博文 2015-06-17 20:15:55 stevefang

AlphaGo的论文的译文,关于深度神经网络,蒙特卡洛树搜索:Mastering the game of Go with deep neural networks and tree search

前言: 围棋的英文是 the game of go,标题翻译为:《用深度神经网络和树搜索征服围棋》。译者简介:大三,211,计算机科学与技术专业,平均分92分,专业第一;英文水准:托福 103分,GRE v158 + q167 + AW3.5。为了更好地翻译此文,笔者查看了很多资料。笔者翻译此论文已尽全力,不足之处希望读者指出。 在AlphaGo的影响之下,全社会对人工智能的关注进一步提升。在笔者考完GRE的当天,3月12日,AlphaGo 第三次击败李世石。在3月15日总比分定格为4:1,随后AlphaGo的围棋排名世界来到第二。 论文的英文原文点击这里拜读 编者按:吐槽CSDN的后台服务器,在我用LaTeX编写的公式结尾都加上了一个“|”,比如:公式公式。这真是一个醉人的Bug。2014...阅读全文

博文 2016-03-22 19:00:01 u013390476

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 曾纪文

李嘉璇:技术人如何深入人工智能

前不久趣直播举办了一场技术人成长交流会,邀请了《TensorFlow 技术解析与实战》作者李嘉璇来分享。以下是视频:以下是文字版:谢谢智维的介绍,介绍的太棒了,我其实没有他说的那么棒,让我压力好大,尤其巧哥又讲的那么好我目前主要是做人工智能方向的,比较熟悉的是 TensorFlow,我有写过一本书,《TensorFlow 技术解析与实战》,我这里面再多说两句,因为有非常多的人会问我,你是怎么写出一本书的?或者说你写出一本书遇到什么样的困难?我现在面试的时候就会有人问我这样的问题,会经常让我去说这个事,我跟大家分享一下。我在写这本书的时候,我脑子里没有第二件事了,我说的第二件事就包括吃饭和睡觉上厕所,脑子里没有这些,就是在我的意识里,这些东西都不存在的。我眼里只有这一件事,我活着就是为了写书这...阅读全文

golang中net包用法(三)--TCP和UDP以及Unix domain socket

type TCPAddr //表示TCP终端地址 type TCPAddr struct { IP IP Port int Zone string // IPv6寻址范围 } func ResolveTCPAddr(net, addr string) (*TCPAddr, error)//将一个地址解析成TCP地址形式,形如"host:port"或 "[ipv6-host%zone]:port",解析得到网络域名和端口名.其中net必须是"tcp","tcp4"或者"tcp6",IPv6地址字面值/名称必须用方括号包起来,如"[::1]:80"、"[ipv6-host]:http"或"[ipv6-host%zone]:80". func (a *TCPAddr) Network() stri...阅读全文

博文 2015-06-18 19:00:33 chenbaoke

Cassandra go语言client使用

关于什么是cassandra,可以参考: http://blog.csdn.net/zyz511919766/article/details/38683219 http://cassandra.apache.org/ 比较了HBASE、mongodb 和 cassandra 1)HBASE 和 cassandra 都是列式存储,但是 cassandra部署方便,扩展容易2) mongodb 并不是真正的列式存储,数据扩容比较麻烦,需要提前做好集群分区 casandra是 p2p(gossip)实现的bigtable, 数据一致性可以通过参数配置(R+W >N), 写操作完成是all node,还是指定的node个数,才进行返回。 数据模型: 尝试了cassandra的两个client。 1....阅读全文

博文 2015-09-16 03:00:00 zhangqingping

golang mgo的mongo连接池设置:必须手动加上maxPoolSize

熊猫TV的礼物系统使用了golang的 mongo库 mgo,中间踩了一些坑,总结下避免大家再踩坑 golang的mgo库说明里是说明了开启连接复用的,但观察实验发现,这并没有根本实现连接的控制,连接复用其实仅在当前操作 (session.Close 之前 )生效,最终还是需要程序员自行去限制连接才行。 废话不多说,开始上代码 GlobalMgoSession, err := mgo.Dial(host) func (m *MongoBaseDao) Get(tablename string, id string, result interface{}) interface{} { session := GlobalMgoSession.Clone() defer session.Close...阅读全文

博文 2016-03-26 22:00:00 shenguanpu

使用Redis做任务队列(Golang)

在上篇用纯go在本机模拟了下分布式队列的东西。这里补上Redis队列部份。 用Redis做队列有下面三个问题需解决: 1. 队列构建 使用Redis的RPUSH/LPOP来解决 2. 参数传递/解析 客户端将JOSN参数存入Redis,Server端取出后解析还原。 3. 连接池 redigo支持Redis连接池 下面代码就是具体解决实现: //Redis做后台任务队列 //author: Xiong Chuan Liang //date: 2015-3-25 package main import ( "bytes" "encoding/json" "errors" "fmt" "time" "github.com/garyburd/redigo/redis" ) func main() ...阅读全文

博文 2015-06-17 20:17:45 xcltapestry

GO中调用redis时,当并发量比较大时出现的问题。

GO中调用redis时,实始化一个连接池,做法也是一般的用户: ```go &redis.Pool{ MaxIdle: beego.AppConfig.DefaultInt("redis::maxidle", 1), MaxActive: beego.AppConfig.DefaultInt("redis::maxactive", 10), IdleTimeout: time.Duration(beego.AppConfig.DefaultInt64("redis::idle_time_out", 180)) * time.Second, Dial: func() (redis.Conn, error) { log.Println("func dia...阅读全文

Go连接MySql数据库too many connections错误解决

这几天用Go写了个简陋的服务器,连接Mysql数据库,提供api给其他程序调用来实现增删改产等服务。Go的版本是1.2,使用的驱动是go-sql-driver/mysql。但是在有一定量的查询结果以后,会出先too many connection的错误。 google了一下,很多文章都建议修改MySql的配置文件:my.ini。文章是这样解释的:MySql的默认连接数是100,当查询数过多时,就会出现这个错误。所以把配置修改: max_connections=1000 这个字段后面的数字就是MySql允许的连接数,改的大一些就会解决问题。于是在电脑上直接改成10000,重启MySql。然后电脑就卡的要崩溃了。看了相关的文档大约知道,这个参数是控制MySql建立的线程数的。改成10000就会有...阅读全文

博文 2015-05-12 20:00:03 WAKnow

Go连接MySql数据库too many connections

Go中连接数据库的连接池:当你需要和数据库通信时,就会从连接池里面取出一个连接,和数据库交互。使用完的闲置的连接会回到连接池,等待下一次的调用。如果连接池里面没有闲置的连接,会自动创建一个新的连接出来。其中有一段: An sql.Row returns the connection when Scan() is called, sql.Rows returns either when Close() is called or all rows have been iterated over with Next(), and sql.Tx will return when Commit or Rollback() are called. If you forget to completely ...阅读全文

博文 2015-06-05 23:00:05 牛牛张

golang操作redis连接池

func newPool(server, password string) *redis.Pool { return &redis.Pool{ MaxIdle: 3, IdleTimeout: 240 * time.Second, Dial: func () (redis.Conn, error) { c, err := redis.Dial("tcp", server) if err != nil { return nil, err } if _, err := c.Do("AUTH", password); err != nil { c.Close() return nil, err } return c, err }, TestOnBorrow: func(c redis.Conn, ...阅读全文

博文 2014-10-04 19:27:36 程序员Jack

golang连接mysql操作及动态连接池设置

golang本身没有提供连接mysql的驱动,但是定义了标准接口供第三方开发驱动。这里连接mysql可以使用第三方库,第三方库推荐使用https://github.com/Go-SQL-Driver/MySQL这个驱动,更新维护都比较好。下面演示下具体的使用,完整代码示例可以参考最后。 下载驱动 sudo go get github.com/go-sql-driver/mysql 数据库连接 db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/dbname?charset=utf8") 其中连接参数可以有如下几种形式:通常我们都用第二种。 user@unix(/path/to/socket)/dbname?chars...阅读全文

博文 2015-10-27 23:00:06 u011715678

golang redis连接池的使用

````golang package main import ( "encoding/json" "errors" "fmt" "time" "github.com/garyburd/redigo/redis" ) const ( RedisURL = "redis://*****:6379" redisMaxIdle = 3 //最大空闲连接数 redisIdleTimeoutSec = 240 //最大空闲连接时间 RedisPassword = "*****" ) // NewRedisPool 返回redis连接池 func NewRedisPool(redisURL string) *redis.Pool { return &redis.Pool{ MaxIdle: redisMa...阅读全文

博文 2018-01-18 11:35:27 hfyarvin

Golang 数据库操作

Golang 数据库操作 Golang 数据库 MySQL Golang支持DB操作位于database包下,支持基本CRUD操作、事务和Prepared Statement,本文以MySQL为例。 MySQL驱动安装 使用数据库之前,必须安装相关MySQL数据驱动[1],如果未安装驱动或者没有引入驱动库会报以下错误: failed to open database: sql: unknown driver "mysql" (forgotten import?) 安装golang mysql driver go get github.com/go-sql-driver/mysql 代码中还需注册数据库驱动,通过引入空白倒入[2]mysql包来完成 import( "database/sql"...阅读全文

博文 2015-08-09 18:00:00 nop4ss

mqtt介绍和go代码实现

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家...阅读全文

博文 2018-08-27 09:35:06 John_zhang

PostgreSQL(数据库)资料和分布式系统(Distributed System)资料与Go语言资料整理

《PostgreSQL Documentation》 介绍:PostgreSQL官方文档主页 《PG技术沙龙ppt》 介绍:2013年4月PG技术沙龙PPT 《PG9.3中文翻译文档》 介绍:PG9.3中文翻译文档 谢谢@skykiker提供 《PostgreSQL从菜鸟到专家(中译稿 by 洞庭湖的泥鳅)》 介绍:这篇文档是国内的一线postgreSQL专家所翻译。很经典 《PostgreSQL vs. MS SQL Server》 介绍:PostgreSQL与 MS SQL Server的对比,中文版 《PostgreSQL 30天 培训视频》 介绍:作者德哥@Digoal从事pg截止目前大概有7-8年,长期活跃在国内的pg社区。这套PostgreSQL 30天 培训视频包含了SQL基础...阅读全文

博文 2015-04-28 14:00:13 zhongwen7710

Go-数据库连接

GO src中自带了sql包和连接数据库的包。这里以连接MYsql为例子。 sql.Open 就是开启了一个数据库连接处。在执行EXEC 或者 QUERY的时候就会自己去建立连接。因此整个应用程序 只需要初始化一次sql.db指针。然后到处用就oK了。 // dbTest project main.go package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "time" ) func IsErr(err error) { if err != nil { fmt.Printf("程晗错误:%s", err) } } func main() { //初始化数据库信息,此时就是一个数据库连接池 d...阅读全文

博文 2015-11-07 15:00:01 shuanger_

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

sqlite连接(windows 7)

请问在windows下连接sqlite应该怎么做? 试了mattn/go-sqlite3..提示 # command-line-arguments D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text) : __divdi3: not defined D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text) : __moddi3: not defined D:\GOPATH\pkg\windows_386/github.com/mattn/go-sq...阅读全文

Golang redis 操作初体验

安装 我使用的是 https://github.com/go-redis/r... 这个 golang 客户端, 因此安装方式如下: go get gopkg.in/redis.v4 接着在代码中导入此包即可: import "gopkg.in/redis.v4" 基本操作 创建客户端 通过 redis.NewClient 函数即可创建一个 redis 客户端, 这个方法接收一个 redis.Options 对象参数, 通过这个参数, 我们可以配置 redis 相关的属性, 例如 redis 服务器地址, 数据库名, 数据库密码等.下面是一个连接的例子: // 创建 redis 客户端 func createClient() *redis.Client { client := redis.N...阅读全文

博文 2017-02-10 10:27:51 永顺

最强围棋程序Alpha Go 浅析

最强围棋程序Alpha Go 浅析 去年谷歌的围棋程序Alpha Go一举打败所有已知的围棋AI程序,以及以5:0的大比分打败了专业棋手Fan Hui。随后在《nature》上报到了Alpha Go 的内幕。作为一个伪的围棋爱好者和一个机器学习爱好者,看了该文章,并看了其他的分析,写下自己的心得: 围棋的智能对弈程序最早当属我国的手谈,那个时期的自动对弈程序属于经验型的。随后从国外对围棋研究后,产生了蒙特卡洛树搜索的方法应运于围棋对弈,产生了一系列的强AI,可以达到业余水准,关于蒙特卡洛树搜索可以参看《基于蒙特卡洛树搜索的计算机围棋博弈研究》,可以说对该方法进行了详细的说明,阅读也较容易,可以得到围棋AI的一些背景,制约蒙特卡洛方法更近一步的原因是:树的展开,以及搜索的深度的确定。于此同时,...阅读全文

Go Kit: Go in the Modern Enterprise

文 http://peter.bourgon.org/go-kit/ The modern enterprise 当我们听到 企业(enterprise)这个词的时候,往往会联想到老派,缓慢, 繁文褥节等名词,就比如 IBM HP 甚至红帽这样的公司,他们已经在长达数十年的时间内成为科技行业的领导者。现在,一些如 Google Amazon Twitter,Netflix,Facebook,Spotify,乃至 SoundCloud 这些公司正成为互联网行业的主流,这些现代的企业通常有以下一些特质: 技术导向 专注用户产品和用户体验 成功的,爆炸式的增长 100-1000 数量级的工程师 采用面向服务的架构 (SOA) 最后一点尤其关键。 A service-oriented archite...阅读全文

博文 2015-05-19 10:04:42 c4pt0r

如何在 Go 语言中使用 Redis 连接池-Radix.v2

一、关于连接池 一个数据库服务器只拥有有限的资源,并且如果你没有充分使用这些资源,你可以通过使用更多的连接来提高吞吐量。一旦所有的资源都在使用,那么你就不能通过增加更多的连接来提高吞吐量。事实上,吞吐量在连接负载较大时就开始下降了。通常可以通过限制与可用的资源相匹配的数据库连接的数量来提高延迟和吞吐量。 如果不使用连接池,那么,每次传输数据,我们都需要进行创建连接,收发数据,关闭连接。在并发量不高的场景,基本上不会有什么问题,一旦并发量上去了,那么,一般就会遇到下面几个常见问题: 性能普遍上不去CPU 大量资源被系统消耗网络一旦抖动,会有大量 TIME_WAIT 产生,不得不定期重启服务或定期重启机器服务器工作不稳定,QPS 忽高忽低 要想解决这些问题,我们就要用到连接池了。连接池的思路很简...阅读全文

博文 2016-02-20 15:00:01 scut1135

vitess源码阅读笔记cache系列之用go实现通用资源池

更新日志: 更新至2012.4.8的vitess代码 新的代码增加了同步用的条件变量,没有空闲资源时的排队不再使用channel来同步(使用其它编程语言的同学可以方便的移植这个代码了),转而使用condition variable。不再使用mu.RLock,统一使用Lock,不再纠结。 整体代码清晰了许多。 为了进一步提高性能和代码复用,vitess还提供了通用的池管理,RoundRobin.go中实现了通用的资源池,方便管理池内资源总数,超时。 先上第一道菜:RoundRobin在整个vitess架构中扮演的什么角色? 个人觉得RoundRobin的重要性在vitess中怎么着也能算个丐帮的几个长老之一吧,作为其它几个pool的核心基础 如cache_pool.go就是RoundRobin...阅读全文

博文 2014-10-04 19:26:26 gongaut

Go 机器学习库 Gorgonia

Gorgonia 是 Go 机器学习库。撰写和评估多维数组的数学公式。与  [Theano](http://deeplearning.net/software/theano/) 和 [TensorFlow](https://www.tensorflow.org/) 理念相似。具体来说, #### Gorgonia 性能: * 执行自动分化 * 执行符号微分 * 优化 梯度下降 * 进行稳定的数值计算 * 提供便捷功能来帮助创建神经网络 * 操作快(与Theano和Tensorflow速度相当) * 支持GPU / CUDA * 支持分布式计...阅读全文

redigo 包报EOF错误

我使用了redigo包的连接池方法来请求建好的redis库。但是在请求过程中经常会报 EOF的错误,这就导致rs(redis.Conn)关闭。并且数据也没有请求到。想请教一下有没有其他人也有类似的问题。这个EOF是什么导致的错误呢。 * 我的redis是用docker容器跑的。 * go版本 1.4.2 * 不管是连接池还是直接请求,都会常出现EOF错误 * 之前在写http的stream方式请求的数据的时候,也经常出现 unexpected EOF错误,也没有找到原...阅读全文

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...阅读全文

[笔记] Golang小试实现神经网络框架

国庆节宅在家里,看完了40集的电视剧,也刷了4K代码。最近看看Golang,然后想摆弄一下神经网络。虽然如今都是第三方库泛滥,开源代码拿来即用,而这次对自己的要求是没有第三方库,代码自成闭包。这样更有自主控制性,加深对神经网络实现的理解,也省去了学习各种三方包的用法,顺带着熟练下Golang这门新语言。 搜索引擎可以找到各种神经网络的入门文章。 A Neural Network in 11 lines of Python Anyone Can Learn To Code an LSTM-RNN in Python 这两篇算是不错的入门级文章,虽然第二篇直接跳到比较新的循环神经网络。写文章的前辈代码质量虽然不是特别高,但是也是一行一行用尽洪荒之力来分析代码。第一篇的11行代码的神经网络很清晰,...阅读全文

博文 2016-10-10 01:00:01 prog_6103

Web 服务及网络服务框架Go Frame

## 介绍 gf(Go Frame)是一款为Web服务及网络服务开发设计的,模块化、低耦合、轻量级的Go语言开发框架。 实现了通用的HTTP/TCP/UDP Server,并提供了Web服务开发的系列核心组件, 包括:MVC、Cookie、Session、模板引擎、路由控制、配置管理、数据校验、数据库操作(ORM)等等, 并且提供了数十个实用开发模块,包括:缓存模块、日志模块、JSON模块、命令行模块、二进制模块、环境变量模块、并发安全容器、Goroutine池等等。 gf是开源的,免费的,基于MIT...阅读全文

windows下用golang连接mssql

我擦,最近下了几十个G的数据(哈哈,你们懂的),都是mssql格式的,需要处理下。想用golang处理,于是就需要golang连接mssql。 1.安装Microsoft SQL Server Native Client 去官方下载吧,下载地址: http://www.microsoft.com/zh-CN/download/details.aspx?id=35580 2.安装golang的mssql驱动 go get code.google.com/p/odbc 3.写测试代码: package main import ( _ "code.google.com/p/odbc" "database/sql" "fmt" ) func main() { conn, err := sql.Ope...阅读全文

博文 2014-10-04 19:26:11 ijibu

golang-数据库详解

基本概念 Open() – creates a DB Close() - closes the DB Query() - 查询 QueryRow() -查询行 Exec() -执行操作,update,insert,delete Row - A row is not a hash map, but an abstraction of a cursor Next() Scan() 注意:DB并不是指的一个connection 连接到数据库 我们以mysql为例,使用github.com/go-sql-driver/mysql,首先我们需要导入我们需要的包 import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) 注意我们导入gith...阅读全文

博文 2015-11-06 17:00:12 shuanger_

gossdb终于可以全速前进了

用了一周的时间才最终找到了一个会在大并发(并发1000,mbp普通本)下可能会发生的空指针问题,现在经过多次测试,终于可以关闭这个bug了。哈哈,高兴啊。 现在的gossdb已经相对成熟了,而且用的人也越来越多了,希望在这里介绍给大家,如果有人用ssdb,不妨尝试一下,会有惊喜的。 下面简单的介绍一下gossdb https://github.com/seefan/gossdb 功能列表 1. 继承官方连接方式。已支持超过40个官方命令。 2. 支持连接池。 3. 已支持 set 相关方法 4. 已支持 hashmap 相关方法 5. 已支持 queue 相关方法 6. 已支持返回值类型转换,可以方便的把从ssdb中取到的内容转化为指定类型。 连接池已支...阅读全文

golang操作mysql数据库示例代码

使用了github.com/go-sql-driver/mysql驱动。go在database/sql中实现了连接池,所以每次操作数据库,重复打开关闭即可。 1 package main 2 3 import( 4 "database/sql" 5 _ "github.com/go-sql-driver/mysql" 6 "fmt" 7 ) 8 9 type User struct{ 10 Id int 11 UserName string 12 Passwd string 13 Number int 14 } 15 16 func main() { 17 db,err := sql.Open("mysql","root:sban@/test") 18 if err != nil { 19 ...阅读全文

博文 2014-10-04 19:26:12 sban

除了 Python ,这些语言写的机器学习项目也很牛

Python 由于本身的易用优势和强大的工具库储备,成为了在人工智能及其它相关科学领域中最常用的语言之一。尤其是在机器学习,已然是各大项目最偏爱的语言。 其实除了 Python ,也不乏有开发者用其他语言写出优秀的机器学习项目。在此,列出其中一些个人认为值得关注的开源机器学习项目。由于篇幅有限,考虑分多期整理。 1、C Darknet —— 神经网络框架 Darknet 是一个用 C 和 CUDA 编写的开源神经网络框架。它快速,易于安装,并支持 CPU 和 GPU 计算。 CCV —— 计算机视觉库 CCV 是 C-based/Cached/Core Computer Vision Library 的简称, 它是一个现代的计算机视觉库。 CCV 是一种以应用驱动的算法库,比如对静态物体(如...阅读全文

博文 2017-06-25 06:47:11 编辑部的故事

go net/http Client使用——长连接客户端的使用

go net/http Client使用总结 Client数据结构 // A Client is an HTTP client. Its zero value (DefaultClient) is a // usable client that uses DefaultTransport. // // The Client's Transport typically has internal state (cached TCP // connections), so Clients should be reused instead of created as // needed. Clients are safe for concurrent use by multiple goroutin...阅读全文

博文 2017-12-24 02:31:07 u013870094

golang的连接池例子

github.com/jolestar/go-commons-pool 测试代码 package main import ( "github.com/jolestar/go-commons-pool" "fmt" ) type MyPoolObject struct { Name string } type MyObjectFactory struct { } func (f *MyPoolObject) Print() { fmt.Println(f) } func (f *MyObjectFactory) MakeObject() (*pool.PooledObject, error) { return pool.NewPooledObject(&MyPoolObject{}), nil...阅读全文

博文 2016-03-02 15:00:01 ziyouchutuwenwu

聊聊TCP连接池

概览: 为什么需要连接池 连接失效问题 database/sql 中的连接池 使用连接池管理Thrift链接 以下主要使用Golang作为编程语言 为什么需要连接池 我觉得使用连接池最大的一个好处就是减少连接的创建和关闭,增加系统负载能力,之前就有遇到一个问题:TCP TIME_WAIT连接数过多导致服务不可用,因为未开启数据库连接池,再加上mysql并发较大,导致需要频繁的创建链接,最终产生了上万的TIME_WAIT的tcp链接,影响了系统性能。 链接池中的的功能主要是管理一堆的链接,包括创建和关闭,所以自己在fatih/pool基础上,改造了一下:https://github.com/silenceper/pool ,使得更加通用一些,增加的一些功能点如下: 连接对象不单单是net.Co...阅读全文

博文 2017-02-10 10:30:15 silenceper

golang SQLDriverConnect: {IM005} [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLAllocHandle on SQL_HANDLE_DBC 失败

问题: 2015/12/04 17:03:36 sqldb.go:2166: SQLDriverConnect: {IM005} [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLAllocHandle on SQL_HANDLE_DBC 失败 环境: go 语言编写 SQL SERVER 数据库 “code.google.com/p/odbc” 数据库操作使用的包 程序刚启动,运行一切正常,但是运行一段时间过后,总是会出现以上报错信息。仔细查看打印的报错信息,初步认为是数据库出现异常信息。 跟踪数据库运行情况,其他的程序连接数据库能连接上,排除数据库问题。但是SQLDriverConnect 提醒明显是提醒连接数据库失败。怀疑是否是因为数据库连接池出现的问题。 查看此应...阅读全文

博文 2015-12-25 14:00:01 xia_xing

Golang+MySQL 事务

准备知识:MySQL事务 1 基本操作 sql.Tx tx会从连接池中取一个空闲的连接,直至调用commit或者rollback才会释放 tx, err := db.Begin() // 创建tx对象 tx.Query(command1) tx.Exec(command2) tx.Commit() 2 并发 事务只有一个连接,事务内的操作是串行的 db, _ := sql.Open(...) rows, _ := db.Query("SELECT id FROM tt_users") for rows.Next(){ var ( user_id int openid string ) rows.Scan(&user_id) db.QueryRow("SELECT openid FROM tt...阅读全文

博文 2018-08-08 14:34:53 埃尔温薛定谔不养猫

使用 Golang 操作 Linux Namespaces

Linux 命名空间简介命名空间分类CLONE_NEWPIDCLONE_NEWIPCCLONE_NEWNSCLONE_NEWNETCLONE_NEWUTSCLONE_NEWUSER代码示例总结参考 Linux 命名空间简介 Linux Namespaces(Linux 命名空间)机制提供了进程使用操作系统资源时的隔离方式,是基于内核实现轻量级虚拟化(容器化,例如 docker)的实现基础。 具体来说就是当我们创建一个进程时,可以给进程设置 flag 组合来构建进程的命名空间,处于不同命名空间的进程是相互隔离的。 命名空间分类 目前我们可以设置如下几种命名空间,它们分别从不同的资源纬度进行隔离。 CLONE_NEWPID 该标识用于创建一个新的 PID 命名空间,新进程将成为命名空间里的第一个...阅读全文

博文 2015-04-05 11:18:54 88250

golang连接mysql数据库实现增删改查

数据库连接使用datebase/sql Open函数进行连接 代码如下 db, err := sql.Open("mysql", "user:password@tcp(localhost:5555)/dbname?charset=utf8") 其中连接参数可以有如下几种形式: user@unix(/path/to/socket)/dbname?charset=utf8 user:password@tcp(localhost:5555)/dbname?charset=utf8 user:password@/dbname user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname 通常我们都用第二种。 插入操作 代码如下 stmt, err := db.P...阅读全文

博文 2016-04-26 13:00:05 wk890718

人工智能聊天机器人Olivia

Olivia 是带有人工神经网络的人工智能聊天机器人。 ![image](https://static.oschina.net/uploads/space/2019/0617/141938_28Mx_4105562.png) ### 使用 要使用 REST Api,必须使用两个参数建立对 `/api/response` 的 `POST` 请求: * `sentence` 这是要发送给 Olivia 的消息 * `authorId` 这是一个任意 ID,用于标识用户进行上下文聊天 ### 示例

curl -X POST 'https://olivia-api.herokuapp.com/api/response' --data "...阅读全文

golang sql连接池

olang的”database/sql”是操作数据库时常用的包,这个包定义了一些sql操作的接口,具体的实现还需要不同数据库的实现,mysql比较优秀的一个驱动是:github.com/go-sql-driver/mysql,在接口、驱动的设计上”database/sql”的实现非常优秀,对于类似设计有很多值得我们借鉴的地方,比如beego框架cache的实现模式就是借鉴了这个包的实现;”database/sql”除了定义接口外还有一个重要的功能:连接池,我们在实现其他网络通信时也可以借鉴其实现。连接池的作用这里就不再多说了,我们先从一个简单的示例看下”database/sql”怎么用:package main import( "fmt" "database/sql" _ "github.c...阅读全文

博文 2018-09-05 18:35:40 wzFreewz