database/sql: Stmt的使用以及坑

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

2014年11月8日 郝冠伟
阅读:41566 评论:0

Go如何输出ANSI 颜色代码

这连天bee升级到了1.5版本,在执行bee version的时候会输出一个有颜色的BEE的logo,很多人觉着很神奇,其实这个就是ANSI颜色代码。 其实在Linux,我们编写C语言轻易可以实现这个效果。 具体的书写格式如下: 格式:\033[显示方式;前景色;背景色m 说明: 前景色 背景色 颜色 --------------------------------------- 30 40 黑色 31 41 红色 32 42 绿色 33 43 黃色 34 44 蓝色 35 45 紫红色 36 ...阅读全文

阅读:5389 评论:0

Go 中的任务队列

在 [RapidLoop](https://www.rapidloop.com/) 中,我们几乎用 [Go](https://golang.org) 做所有事情,包括我们的服务器,应用服务和监控系统 [OpsDash](https://www.opsdash.com/)。 Go 十分擅长编写异步程序 - goroutine 和 channel 使用十分简单不容易出错并且和其他语言相比异步/等待模式,语法和功能都更加强大。请继续阅读来瞧瞧围绕任务队列的一些有趣的 Go 代码。 ## 不...阅读全文

2018-03-19 10:51:44 saberuster
阅读:11986 评论:4

如何用golang实现一个定时器任务队列

golang中定时器 golang中提供了2种定时器timer和ticker(如果JS很熟悉的话应该会很了解),分别是一次性定时器和重复任务定时器。 一般用法: func main() { input := make(chan interface{}) //producer - produce the messages go func() { for i := 0; i < 5; i++ { input <- i } input <- "hello, world" }() t1 := time....阅读全文

2018-05-23 01:33:04 o0无忧亦无怖
阅读:14078 评论:2

Go 代码重构:23 倍性能提升!

要说写代码是每位程序员的使命,那么写优秀的代码则是每位程序员的底线。本文作者分享基于 Go 语言的代码重构,使得性能提升 23 倍的快速方法。以下为译文:几周前,我读了一篇名为“Go 语言中的好代码与差代码”(https://medium.com/@teivah/good-code-vs-bad-code-in-golang-84cb3c5da49d)的文章,作者一步步地向我们介绍了一个实际业务用例的重构。文章的主旨是利用 Go 语言的特性将“差代码”转换成“好代码”,即更加符合惯例和更易读的代...阅读全文

2018-07-11 14:20:16 Val Deleplace
阅读:5650 评论:1

Go Reflect 高级实践

https://golang.org/pkg/reflect/ 最重要的官方文档,建议先粗读一遍再来看本文。 go 的 reflect 还是比较简单的,可以很快上手。 https://github.com/golang/go/blob/master/src/reflect/type.go https://github.com/golang/go/blob/master/src/reflect/value.go源码中有上百个 panic,各种检查做的很全面,有想法就大胆地去试,只要能 run 起来...阅读全文

2018-08-31 20:34:53 sxssxs
阅读:2906 评论:0

阿里P8架构师谈:淘宝技术架构从1.0到4.0的架构变迁!附架构资料

淘宝技术架构变迁自2003年创立以来的,淘宝业务发展非常迅速,几乎是每年以100%的速度在成长。创立之初,为了快速上线,抢占市场,选择了当时流行的LAMP架构,用PHP作为网站开发语言, Linux作为操作系统,Apache作为Web服务器,MySQL为数据库,用了三个月不到的时间淘宝就上线了。当时整个网站应用服务器大概10台左右,MySQL数据库采用了读写分离、一主两备的部署方式。2004年在淘宝业务发展的推动下,我们参考电信运营商、银行等的一些企业解决方案,将LAMP架构改造为Oracle+...阅读全文

2018-09-18 14:54:42 Java_fenxiang
阅读:6952 评论:0

Go语言基础入门学习线路图+开源项目推

Go作为近两年迅速流行起来的编程语言始终致力于使事情简单化。它并未引入很多新概念,而是聚焦于打造一门简单的语言,让开发者使用起来感觉异常快速且简单。相信有意向深入学习Go语言的小伙伴都在研究Go的开源项目,今天我就把自己觉得不错的6个Go开源项目和学习线路图分享给大家,希望大家能获得收获和成长。Go语言基础入门学习线路图:Go语言开源项目推荐:推荐一:kubernetes 【Star:44418】Kubernetes基于Docker,其目的是让用户通过Kubernetes集群来进行云端容器集群的...阅读全文

2018-11-28 17:21:43 程序员小千
阅读:4193 评论:0

重构这件小事

服务端的技术重构,对于很多开发人员来说并不陌生。这里,我们称大的技改叫做重构。自加入我站以来,也是主导或经历过比较大的技术重构,简单说有两类: 从php到golang的重构 两年累积的golang代码的重构 其实重构的动机无非就这么两类 语言栈的迁移或统一 算是重写了 因业务发展,老的架构不满足了,包括稳定性、性能上的、扩展性上的等等 那么,到底我们的项目,是否需要重构了呢? 重构本身属于技改,一般情况下产品和老板不一定是非常关心的,甚至有时候是“反对”的。短期来看,重构对业务迭代速度的影响、重...阅读全文

阅读:1243 评论:0

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。

使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。​设计模式的类型共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)- 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。工厂模式(Factory Pattern)抽象工厂模式(Ab...阅读全文

阅读:1344 评论:0

你真的需要微服务吗

## 前言 我们已经[设计和构建](https://www.browserlondon.com/services/design-development/) 了十多年的软件,大部分时间我们一直在使用优秀的 Symfony 框架来实现这一目标。 Symfony 是一个传统的单体 PHP 构件集,受 Java Spring 的启发,我们发现它非常适合[企业 Web 应用程序](https://www.browserlondon.com/case-study/insights/) 和[数字产品](...阅读全文

2019-07-27 23:18:58 Alex1996a
阅读:1238 评论:0

golang从context源码领悟接口的设计

注:写帖子时go的版本是1.12.7 Context的github地址 go语言中实现一个interface不用像其他语言一样需要显示的声明实现接口。go语言只要实现了某interface的方法就可以做类型转换。go语言没有继承的概念,只有Embedding的概念。想深入学习这些用法,阅读源码是最好的方式.Context的源码非常推荐阅读,从中可以领悟出go语言接口设计的精髓。 对外暴露Context接口 Context源码中只对外显露出一个Context接口 type Context inte...阅读全文

2019-07-26 12:11 li-peng
阅读:556 评论:0