golang

Go

“Python太慢了、Golang糟透了、MongoDB是最好的”:那些关于软件工程的“宗教”辩论

42 0

“Python 的速度不行。”“都 9102 年了,还有人不用 Java 虚拟机(Scala、Clojure)构建 Web App 吗?”“Mongo 是最好的数据库;SQL 很差劲,SQL 数据库扩展性不行。任何现代工程师都必须熟悉 Mongo。”“Golang 糟透了(因为没有泛型);谁用谁白痴。”在我刚刚成为软件工程师那会,最令我震惊的就是,同行们居然用“宗教战争”这样的字眼来形容工程层面的争议。有这么严重吗?干嘛那么大火气?带着好奇心,我希望弄清为什么工程技术辩论会成为“宗教战争”,而不像经验主义

Go

如何用 Go 语言写出好用的 Http 中间件?

74 0

当我们用 Go 语言编写较为复杂的服务时,一个永恒的话题就是中间件。这个话题在网上被一遍、一遍、又一遍地讨论着。归根结底,中间件应该允许我们:拦截 ServeHTTP 调用,并执行任意代码。在持续的链上对请求 / 响应流做变更。中断中间件链条,或继续下一个中间件拦截器,最终到真正的请求处理程序上面。这些听起来跟 express.js 中间件很相似。我们研究了许多资料,发现了一些已经存在的解决方案,这些方案跟我们想要的非常吻合,但他们要么有不必要的额外功能,要么需求不对我们的胃口。很明显,我们可以基于 ex

Go

golang Cond基本用法

77 0

Cond的基本结构 type Cond struct {noCopy noCopy// L is held while observing or changing the conditionL Lockernotify notifyListchecker copyChecker }func NeWCond(l Locker) *Cond func (c *Cond) Broadcast() func (c *Cond) Signal() func (c *Cond) Wait()Signal 允许调

Go

Go reflect

40 0

reflection反射(reflection)是程序在运行时通过检查其定义的变量和值获得对应的真实类型。在计算机科学领域,反射是指一类应用能够自描述和自控制。此类应用采用某种机制来实现自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。反射机制就是在运行时动态的调用对象的方法和属性每种编程语言的反射模型都不同,有些语言并不支持反射。支持反射的语言可以在程序编译期将变量的反射信息,比如字段名称、

Go

go中x/sync/semaphore解读

65 0

go中x/sync/semaphore解读semaphoreAcquireTryAcquireReleasesemaphore的作用如何使用分析下原理总结参考semaphoresemaphore的作用信号量是在并发编程中比较常见的一种同步机制,它会保证持有的计数器在0到初始化的权重之间,每次获取资源时都会将信号量中的计数器减去对应的数值,在释放时重新加回来,当遇到计数器大于信号量大小时就会进入休眠等待其他进程释放信号。go中的semaphore,提供sleep和wakeup原语,使其能够在其它同步原语中的

Go

Golang Context深入理解

61 0

Golang Context深入理解 Context背景 和 适用场景golang在1.6.2的时候还没有自己的context,在1.7的版本中就把golang.org/x/net/context包被加入到了官方的库中。golang 的 Context包,是专门用来简化对于处理单个请求的多个goroutine之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。 比如有一个网络请求Request,每个Request都需要开启一个goroutine做一些事情,这些gorout

Go

Golang的反射reflect深入理解和示例

33 0

Golang的反射reflect深入理解和示例 【记录于2018年2月】 编程语言中反射的概念在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和属性,官方自带的refl

Go

Golang面向对象编程之构造函数【struct&new】

77 0

Golang面向对象编程之构造函数【struct&new】 201808 构造函数是一种特殊的方法,主要用来在创建对象时初始化对象,即为对象成员变量赋初始值。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载。 Golang里面没有构造函数,但是Golang却可以像C++一样实现类似继承、构造函数一样等面向对象编程的思想和方法。Golang里面要实现相关的构造函数定义可以通过通过new来创建构造函数。 一个简单的构造函数的实现定义一个结构 type Con