首页
学习
活动
专区
工具
TVP
发布

Golang语言社区

Golang语言社区(www.Golang.LTD)专业分享Go语言基础、提高等最新最前沿动态。
专栏作者
1903
文章
2784439
阅读量
585
订阅数
Golang语言情怀-第16期 Go 语言设计模式 工厂模式
因为这里的Student 的首字母S是大写的,如果我们想在其它包括创建Student 的实例(比如main包),引入model 包后,就可以直接创建Student 结构体的变量(实例)。但是问题来了,如果首字母是小写的,比如是:
李海彬
2021-01-21
6150
Golang语言情怀-第17期 Go 语言设计模式-对象池
对象池模式,对象被预先创建并初始化后放入对象池中,对象提供者,对象提供者就能利用已有的对象来处理请求,减少对象频繁创建所浪费的资源。例如数据库的连接池等等,基本都是创建后就被放入连接池中,后续的查询请求使用的都是连接池中的对象,从而加快了查询速度(不然每次查询都需要重新创建数据库连接对象,比较浪费)。
李海彬
2021-01-21
6690
手把手教你学之golang反射(下)
事务有三个关键动作begin,rollback,commit。 begin后,要求所有操作要不全部成功,要不全部失败,所以我们要检查所有error,一旦出现错误就rollback,并且还要recover程序的panic,发现panic时也要rollback,直到最后确保无错,才能commit。 调用*sql.DB.Begin()方法后,我们会得到一个事务具柄,事务内的mysql交互都要通过它来进行,它也实现了Query()、Prepare()等方法。 所以我们定义一个接口:
李海彬
2020-11-23
2730
手把手教你学之golang反射(上)
orm这个概念相信同学们都非常熟悉,尤其是写过rails的同学,对active_record的强大肯定深有体会(得益于的method_missing和define_method方法,少写了海量代码),所以对orm我就不过多介绍了。本文要实现的orm只提供基本的CRUD(增删改查)和transaction(事务)功能,核心代码控制在300行左右。 如果想手把手照着写,需要先做一些准备工作。
李海彬
2020-11-23
5650
LollipopGo游戏服务器-数据一致性设计
本期课程给大家谈谈数据一致性,因为经常有同学问到,今天就给大家讲讲,数据一致性大致可分为三类:
李海彬
2020-04-07
1.1K0
Go 生态圈的 K/V 数据库 benchmark
Go生态圈有好几个K/V数据库,我们经常用它来做我们的存储引擎,但是这些数据库引擎的性能如何呢?本文试图用性能而不是功能的数据考察这些数据库,我测试了几种场景: 并发写、并发读、单一写并发读、并发删除,得出了一些有趣的数据。
李海彬
2019-05-08
1.9K0
Go 语言调度(一): 系统调度
调度相关的一系列文章主要参考 Scheduling In Go : Part I - OS Scheduler 翻译来的。 因为在学习的过程中偶然发现,感觉总结得蛮好的,就不造轮子了,干脆直接翻译过来作为自己的学习笔记了,英文好的建议直接阅读原文。
李海彬
2019-05-08
1.3K0
Go中的依赖注入
I have written a small utility package to handle dependency injection in Go (it's in tinrab/kit, among other things). The goal was simplicity and for it to fit well in my current side project.
李海彬
2018-10-08
9900
beego 1.10.0 发布
beego经过了很长一段时间的修修补补,终于在周末发布了1.10.0版本,这一次详细更新如下,主要的特色是增加了自动https申请证书,增加了yaml格式支持输出,支持了Redis 集群等新特性。
李海彬
2018-07-26
1K0
分布式NewSQL数据库TiDB
TiDB 是 PingCAP 公司基于 Google Spanner / F1 论文实现的开源分布式 NewSQL 数据库。 https://github.com/pingcap/tidb docker部署方案 (https://github.com/pingcap/docs-cn/blob/master/op-guide/docker-deployment.md) 特性 SQL支持 (TiDB 是 MySQL 兼容的) 水平线性弹性扩展 分布式事务 跨数据中心数据强一致性保证 故障自恢复的高可用 TiD
李海彬
2018-03-28
1.3K0
如何跨服务器复制表中数据
不同服务器数据库之间的数据操作 不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表 当目标表不存在时: select * into 目的数据库..表 from 源数据库..表 --如果在不同的SQL之间: insert into openrowset('sqloledb','目的服务器名';'sa';'',目的数据库.dbo.表) select * from 源数据库..表 --创建链接服务器 exe
李海彬
2018-03-27
2.6K0
go语言的sql包原理与用法分析
本文实例讲述了go语言的sql包原理与用法。分享给大家供大家参考,具体如下: go的sql包是在pkg/database中,里面的两个包sql和sql/driver可以一起看。建议看这个两个包之前可以先看看sql文件夹下的doc.txt。这个文档说了几点比较重要的: 1 这两个包是真正Go风格的包。 2 这使用这两个包就不需要关于并发处理了,也不需要维护自己的数据库连接池了,一旦建立了一个连接,这个连接是可以在各个goroutine之间共用的。 3 sql/driver提供的是数据库的接口,具体的实现还需要
李海彬
2018-03-26
1.2K0
使用Go开发一个简单的服务器程序
最近有个小项目,需要一个简单的后台程序来支撑,本来想用Nodejs来做,但是由于本人js一直很菜,并且很讨厌callback,虽然我也很喜欢异步模型,但我一直都觉得JS是反人类的。后台就用了go处理,数据存储使用的mongodb。怎么说来着,从生成数据的角度来讲,这东西把C#+SQLCE甩出好几条街。生成go+mongodb 大约,10秒左右,而后者只是大约需要5分钟。当然,这个完全是写法问题。因为是写一条,就保存一下,如果C#那边一次保存的话性能也不会很差。但考虑的部署问题,因为GO只要2个exe和一个m
李海彬
2018-03-26
9740
Go语言读写数据库
我用的驱动是:https://github.com/Go-SQL-Driver/MySQL 理由跟 https://github.com/astaxie/build-web-application-with-golang/blob/master/05.2.md 的一样。 比较新,更新维护的比较好; 完全支持database/sql接口 支持keepalive,保持长连接。 安装 $ go get github.com/go-sql-driver/mysql 数据库连接语句 import "database/
李海彬
2018-03-23
1.9K0
golang go-sql-drive mysql连接池的实现
golang内部自带了连接池功能,刚开始接触golang的时候不了解这个,还自己搞了一个 sql.Open的对象管理池,真的非常囧啊。 sql.Open函数实际上是返回一个连接池对象,不是单个连接。在open的时候并没有去连接数据库,只有在执行query、exce方法的时候才会去实际连接数据库。在一个应用中同样的库连接只需要保存一个sql.Open之后的db对象就可以了,不需要多次open。 golang中关于mysql的增删改查我在前面的一篇文章中有说明了,不了解的小伙们可以先去了解一下:golang连接
李海彬
2018-03-23
9.9K1
go语言的sql包原理与用法分析
go的sql包是在pkg/database中,里面的两个包sql和sql/driver可以一起看。建议看这个两个包之前可以先看看sql文件夹下的doc.txt。这个文档说了几点比较重要的: 1 这两个包是真正Go风格的包。 2 这使用这两个包就不需要关于并发处理了,也不需要维护自己的数据库连接池了,一旦建立了一个连接,这个连接是可以在各个goroutine之间共用的。 3 sql/driver提供的是数据库的接口,具体的实现还需要自己实现。 先看database/driver包 第一个用到的方法是Regis
李海彬
2018-03-23
9060
服务器 数据库设计技巧--2
8.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如: select id from t wheresubstring(name,1,3)='abc'--name以abc开头的id select id from t wheredatediff(day,createdate,'2005-11-30')=0--‘2005-11-30’生成的id 应改为: select id from t where name like 'abc%' select id from t w
李海彬
2018-03-23
1.2K0
每个优秀程序员必须具备的技术技能
我特别支持软件开发者在他们掌握技术技能的同时去学习“软技能”——事实上,我写了一本关于这方面的书——但是不可否认的是:技术技能很重要。 我的意思是,如果你不能编写代码和开发软件,那么你学习众多软技能有
李海彬
2018-03-23
7020
Go语言读写数据库
我用的驱动是:https://github.com/Go-SQL-Driver/MySQL 理由跟 https://github.com/astaxie/build-web-application-with-golang/blob/master/05.2.md 的一样。 比较新,更新维护的比较好; 完全支持database/sql接口 支持keepalive,保持长连接。 安装 $ go get github.com/go-sql-driver/mysql 数据库连接语句 import "database/
李海彬
2018-03-22
9870
使用Go开发一个简单的服务器程序
最近有个小项目,需要一个简单的后台程序来支撑,本来想用Nodejs来做,但是由于本人js一直很菜,并且很讨厌callback,虽然我也很喜欢异步模型,但我一直都觉得JS是反人类的。后台就用了go处理,数据存储使用的mongodb。怎么说来着,从生成数据的角度来讲,这东西把C#+SQLCE甩出好几条街。生成go+mongodb 大约,10秒左右,而后者只是大约需要5分钟。当然,这个完全是写法问题。因为是写一条,就保存一下,如果C#那边一次保存的话性能也不会很差。但考虑的部署问题,因为GO只要2个exe和一个m
李海彬
2018-03-22
9890
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档