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

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

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

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

Go语言可变参数函数,何时该使用省略号(...)

今天的一个例子中发现,对于在调用可变参数函数时,不是总能使用省略号将一个切片展开,有时候编译器可能会报错,为了清除的说明这个问题,我用几个小例子一步一步说明。 1、提出假想的需求 假如想要在一堆数据中找出最小的一个,该怎么做? 如果数据的类型为int,那么我可以这么做: func MinimumInt(first int, others ...int) int { min := first for _, value := range others { if value < min { min = value } } return min } 上述的MinimumInt函数的第二个参数声明为:others …int,表示这是一个可变参数,可以给它传入0个或者任意多个int型参数,在花栗鼠内部,...阅读全文

博文 2015-11-02 22:00:05 CMbug

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

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

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

Mac下go环境变量配置

1.0 查看是否存在bash_profile cd ~/.bash_profile 2.0 如果不存在则创建bash_profile Mac环境配置文件 touch ~/.bash_profile 3.0 打开bash_profile open -t ~/.bash_profile 4.0 添加go 环境变量:(等于号后面的为你的项目存储目录) GOPATH=website/apple/apps 5.0 warning:如果因为创建bash_profile 使命令行ls命令失效而造成go语言无法安装请关注 5.1 如上打开bash_profile 并加入环境变量 export PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X1...阅读全文

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

Go语言(服务器开发):实现最简单的HTTP GET/POST接口

Go语言提供了http包,可以很轻松的开发http接口。以下为示例代码: package webserver import ( "encoding/json" "fmt" "net/http" "time" ) func WebServerBase() { fmt.Println("This is webserver base!") //第一个参数为客户端发起http请求时的接口名,第二个参数是一个func,负责处理这个请求。 http.HandleFunc("/login", loginTask) //服务器要监听的主机地址和端口号 err := http.ListenAndServe("192.168.1.27:8081", nil) if err != nil { fmt.Printl...阅读全文

博文 2015-06-17 23:01:43 books1958

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

golang连接mysql

```/* * @Descripttion: golang 连接mysql demo * @version: * @Author: weilin * @Date: 2019-10-19 11:31:23 * @LastEditors: weilin * @LastEditTime: 2019-10-19 22:49:53 */package mainimport ( // database/sql是golang的标准库之一,它提供了一系列接口方法,用于访问关系数据库。 //它并不会提供数据库特有的方法,那些特有的方法交给数据库驱动去实现。我们这里使用到的是mysql驱动 "database/sql" "fmt" "time" // 导入mysql驱动 _ "github.com/go-sql...阅读全文

博文 2019-10-21 09:32:51 aside section ._1OhGeD

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+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 埃尔温薛定谔不养猫

使用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连接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

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

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

golang通用连接池的实现

golang的channel除了goroutine通信之外还有很多其他的功能,本文将实现一种基于channel的通用连接池。 何为通用? 连接池的实现不依赖具体的实例,而依赖某个接口,本文的连接池选用的是io.Closer接口,只要是实现了该接口的对象都可以被池管理。当然,你可以实现基于interface{}的连接池,这样任何对象都可以被管理。 实现原理 将连接句柄存入channel中,由于缓存channel的特性,获取连接时如果池中有连接,将直接返回,如果池中没有连接,将阻塞或者新建连接(没超过最大限制的情况下)。由于面向接口编程,所有创建连接的逻辑是不清楚的,这里需要传入一个函数,该函数返回一个io.Closer对象。 实现 由于并发问题,在需要操作池中互斥数据的时候需要加锁。 pack...阅读全文

博文 2018-02-01 20:34:37 xialeistudio

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操作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

奇虎360 和 Go

在中国,奇虎 360 是一个互联网和手机安全产品及服务的主要供应商,截止到 2014 年 6 月,奇虎拥有 5 亿的 PC 活跃用户以及超过 6.4 亿移动用户。奇虎还运营着中国最受欢迎的网络浏览器和 PC 搜索引擎(原文如此)。 我的团队,推送服务团队(Push Service Team),为超过 50 个公司的产品提供服务(PC 和移动),包括成千上万放在我们的开放平台的应用程序。 我们对Go的青睐要从2012年第一次尝试为奇虎的一个产品提供推送功能开始。最初的nginx + lua + redis方案因为负载过大没能满足我们对实时性能的需求。在这种情况下,最新发布的1.0.3版Go引起了我们的注意,借助它提供的goroutine和channel特性,我们在几周之内开发完成了一个原型。我...阅读全文

博文 2015-09-08 15:00:00 ak619

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 牛牛张

[远程][10k-20k]Team247 招聘全栈工程师

### 关于我们 Team247 是一家位于硅谷的软件创业公司。 Team247 致力于将智慧产权投资于广大的互联网以及移动应用的初创公司,在过去的一年取得了高速的成长和发展。目前由于业务的不断增加,诚邀全栈工程师的加入 ### 待遇 - 社保补助 - 弹性化工作时间 - 灵活的工作地点 - 一年 12 天带薪假 ### 要求 - 两年以上的全栈开发经验 - 良好的英语读写能力,可以根据英文文档进行开发 - 在压力下能快速学习,按照自己的计划高质量地完成工作 - 具有团队合作精神与沟通协调能力 - 有安静的工作环境和高速网络连接 ### 联系方式 - 请发送简历至 jobs@theteam247.com,谢谢! ...阅读全文

Go语言库系列之email

导读 大家好我是平也,今天跟大家介绍一款用来发送邮件的Go语言库email,目前星星1.3k,非常好用。 极速上手 准备工作 初始化项目 go get github.com/jordan-wright/email复制代码 本示例项目结构 . ├── go.mod ├── go.sum └── main.go复制代码 开启邮箱SMTP服务,以163邮箱为例,需要先登录到邮箱后台点击开启按钮,在发送完短信之后,会获取到一个授权码,将授权码保存,后面需要用到。 代码示例 首先配置好邮件内容 e := email.NewEmail() e.From = "平也" e.To = []string{"602588122@qq.com"} e.Subject = "发现...阅读全文

博文 2020-04-07 00:34:22 平也

golang中如何使用http长链接(client端)

RESTFUL请求大部分都可以用短连接,即三次握手建立链接,交换数据完成后,释放掉的链接,短链接不会长时间占用端口号,实际项目中还会用到另一种,长链接,比如客户端发送RESTFUL请求,需要监测某一资源变化情况,服务端提供watch机制,在资源有变化时通知client端。 那么client端,相对于短链接,长链接应该怎么写呢? 和短链接基本一样,只需要循环读取server端返回的response即可。 package main import ( "fmt" "io" "log" "net/http" ) func main() { request, err := http.NewRequest("GET", "http://www.example.com/", nil) if err != ...阅读全文

博文 2017-08-15 08:05:09 风千寻艾

Go语言库系列之email

导读 大家好我是平也,今天跟大家介绍一款用来发送邮件的Go语言库email,目前星星1.3k,非常好用。 极速上手 准备工作 初始化项目 go get github.com/jordan-wright/email 本示例项目结构 . ├── go.mod ├── go.sum └── main.go 开启邮箱SMTP服务,以163邮箱为例,需要先登录到邮箱后台点击开启按钮,在发送完短信之后,会获取到一个授权码,将授权码保存,后面需要用到。 file file 代码示例 首先配置好邮件内容 e := email.NewEmail() e.From = "平也" e.To = []string{"602588122@qq.com"} e.Subject = "...阅读全文

博文 2020-04-06 11:32:43 平也

Go语言库系列之email

导读 大家好我是平也,今天跟大家介绍一款用来发送邮件的Go语言库email,目前星星1.3k,非常好用。 极速上手 准备工作 初始化项目 go get github.com/jordan-wright/email 本示例项目结构 . ├── go.mod ├── go.sum └── main.go 开启邮箱SMTP服务,以163邮箱为例,需要先登录到邮箱后台点击开启按钮,在发送完短信之后,会获取到一个授权码,将授权码保存,后面需要用到。 代码示例 首先配置好邮件内容 e := email.NewEmail() e.From = "平也" e.To = []string{"602588122@qq.com"} e.Subject = "发现惊天大秘密!" ...阅读全文

博文 2020-04-06 11:32:41 平也

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

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 SQL 操作初体验

简介 Golang 提供了 database/sql 包用于对 SQL 的数据库的访问, 在这个包中, 最重要的自然就是 sql.DB 了.对于 sql.DB, 我们需要强调的是, 它并不代表一个数据库连接, 它是一个已存在的数据库的抽象访问接口. sql.DB 为我们提供了两个重要的功能: sql.DB 通过数据库驱动为我们管理底层数据库连接的打开和关闭操作. sql.DB 为我们管理数据库连接池 有一点需要注意的是, 正因为 sql.DB 是以连接池的方式管理数据库连接, 我们每次进行数据库操作时, 都需要从连接池中取出一个连接, 当操作任务完成时, 我们需要将此连接返回到连接池中, 因此如果我们没有正确地将连接返回给连接池, 那么会造成 db.SQL 打开过多的数据库连接, 使数据库连...阅读全文

数据宝祝您开工大吉,新年新气象,优质接口来报道!

今日向您推荐: 1、银行卡四要素认证:银行卡号、姓名、身份证号、手机号四项输入进行验证,支持国内全部银联卡,实时、全五星好评,用于金融风控、智慧出行(网约车、租车)。 2、学历信息查询:输入姓名、身份证返回入学毕业时间、学校、专业等,直连数据,覆盖01年以后的全国大专以上学历查询。用于个人信用分析,推断收入和还款能力;婚庆、相亲、社交网站会员信息验证以及人事招聘信息核实。 3、京东查询:输入京东账户、密码及验证码返回京东账户信息、会员等级、订单信息等;用于小额信贷等网贷平台进行个人信用分析,消费及还贷能力评估等。 4、实名认证(人像):输入姓名及身份证号匹配一致返回身份证照片;直连数据,覆盖全国,应用于涉及身份认证、资金交易的所有平台。 现在注册认证,即可获...阅读全文

Go语言构建千万级在线的高并发消息推送系统实践(来自360公司)-推送开发/专项技术区

1、前言 Go语言的渗透率越来越高,同时大家对Go语言实战经验的关注度也越来越高。Go语言在高并发、通信交互复杂、重业务逻辑的分布式系统中非常适用,具有开发体验好、一定量级下服务稳定、性能满足需要等优势。 本文内容整理自奇虎360公司的周洋在 Gopher China 2015 大会上的分享(演讲PPT下载:《Go语言构建高并发消息推送系统实践PPT(来自奇虎360)[附件下载] 》),该次分享以360海量在线的消息推送系统为例,来探讨使用Go语言构建高并发消息推送系统时所遇到的问题以及总结出的各种实践技巧。 2、Go语言在基础服务开发领域的优势 Go语言在高并发、通信交互复杂、重业务逻辑的分布式系统中非常适用,具有开发体验好、一定量级下服务稳定、性能满足需要等优势。以360消息推送系统为例...阅读全文

博文 2017-12-13 11:16:33 即时通讯开发者社区!

golang 数据库开发神器 sqlx使用指南

21天精品区块链课程免费学习,深入实战行家带路,助力开发者轻松玩转区块链! >>> sqlx使用指南 这边文章主要基于Illustrated guide to SQLX翻译而成。 sqlx是一个go语言包,在内置database/sql包之上增加了很多扩展,简化数据库操作代码的书写。 资源 如果对于go语言的sql用法不熟悉,可以到下面网站学习: database/sql documentation go-database-sql tutorial 如果对于golang语言不熟悉,可以到下面网站学习: The Go tour How to write Go code Effective Go CSDN 由于database/sql接口是sqlx的子集,当前文档中所有关于database/sq...阅读全文

博文 2018-09-01 14:33:04 Sunki

微信中继服务器https://github.com/1046102779/wx_relay_server

# 微信中继服务器 目的:其他服务采用拉服务模式,通过rpcx进行rpc通信,获取相关微信token. 用户微信公众号第三方平台刷公众号平台和托管的公众号appid的相关token, 该服务不能停超过10分钟. 主要刷公众号第三方平台的component_access_token和preauthcode, 公众号的authorizer_access_token和authorizer_refresh_token 存储方式:etcd存储rpc服务地址和微信公众号平台和公众号token, 使用etcd的ttl特性,并watch并刷新 ## 新增服务的可靠性措施 1. 服务启动后,立即读取etcd中的所有微信公众平台和公众号数据,加载到内存中。 并监听所有token ...阅读全文

golang开发中 redis连接池的使用

作为一个phper,第一次听到连接池还有点蒙圈,转golang开发后连接池的概念会经常使用。 一、连接池是什么 连接池是什么?一个服务端资源的连接数量都是有限的,每次初始化时他建一定数量的连接,先把所有连接存起来,谁要用则从里面取,用完后放回去。如果超出连接池容量,要是排队等着或么直接丢弃。 比如我们做开发中常用的mysq,redis,php-fpm的配置 1,redis服务端设置 maxclients 最大连接数设置 2, mysql服务端设置 max_connections 最大连接数 3,PHP-FPM 服务端设置 max_children 最大子进程数 start_servers 起始进程数 我们golang开发时连接redis用到自己设计的连接池概念,想要达到的效果是什么? 1,最...阅读全文

博文 2020-01-13 21:32:47 小手25

19年第41周:Go语言 微信小程序获取手机号 -加密数据解密算法-AES-128-CBC

一、简介 获取手机号 获取微信用户绑定的手机号,需先调用 wx.login 接口。 因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发。 注意:目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。 二、参考官方Python示例复写Golang版本 NOTE: 微信官方没有给Golang版本,但给了C++,PHP,Node,Python版本。这里选用Python来作为参考 python版本和Golang版本对比 三、参考资料 微信小程序开发指南-获取手机号 微信小程序开发指南-加密数据解密算法-官方案例下...阅读全文

博文 2019-10-07 19:32:44 aside section ._1OhGeD

redigo 包报EOF错误

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

golang post 上传文件

golang post 上传文件 地址:https://github.com/FakerGit/go-tools/tree/master/http //注意client 本身是连接池,不要每次请求时创建client var ( HttpClient = &http.Client{ Timeout: 3 * time.Second, } ) // 上传文件 // url 请求地址 // params post form里数据 // nameField 请求地址上传文件对应field // fileName 文件名 // file 文件 func UploadFile(url string, params map[string]string, nameField, fileName string...阅读全文

博文 2019-06-15 12:02:39 HollowKnight

聊聊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

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

go 数据库操作

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

博文 2017-08-13 09:31:02 black_OX