Go从1.11版本开始内置包管理工具,直到1.14已经正式支持Go Mdoule。以最新版Go1.13为例,学习GO包管。

阅读全文 »

XDebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况,极其方便。

阅读全文 »

我们已经构建一个用于编译Go程序的,如果我们使用Mac和Windows开发go,又该如在docker中调试我们程序。这其中用到了一个调试工具delve的远程调试功能。

阅读全文 »

我们现在使用的是Go 1.7.6版本。至于为什么从1.5开始总结,这是一个很重要的版本,实现方面有很多变化。最重要的是实现了自举。本文列出一些重大变化以及对我们升级有用的信息。

阅读全文 »

最近公司内部Go版本需要从1.7升级到最新版,涉及项目众多。为了正式环境自动构建系统能够兼容多版本方式构建,除了使用GVM方式之外,考虑到使用Docker Go程序构建容器更加的快速,不用每次版本切换时需要重新指定GOPATH。当然升级的目的,不仅仅的性能提升,第三方包兼容等,我们也会引入Go Moudule。特此记录此次Go升级实践。

阅读全文 »

Go语言参数传递是传值还是传引用?首先我们先了解下两个概念:

  • 传值(Pass By Value) 函数传递的总是原来这个东西的一个副本,一副拷贝。修改拷贝不会对原对象产生影响。
  • 传引用(Pass By Reference) 函数传递的总是原来这个东西的指针引用,修改拷贝改变原对象的值。

通过上面的描述,很容易让人误认为Go语言参数传递是有传值和传引用的,恰恰相反,Go语言的参数传递是没有引用的,只有传值。如果现在你脑海里有跟我一样的迷惑请往下看个例子。

阅读全文 »

Redis客户端通过RESP(REdis Serialization Protocol )协议与服务端通讯。Redis集群是则是通过另一协议来处理节点间的通讯。

RESP有以下特点:

  • 简单且容易实现
  • 能够快速解析
  • 可读的

RESP 能够序列化各种类型,包括整形,字符串,数组,错误类型. 客户端连接服务端的数据是以字符串数组的形式发送给服务端,相当于命令的参数形式。Redis 响应命令执行结果数据.

RESP 是二进制安全的,不需要从一个进程传送大量的数据,因为使用了前缀长度(prefixed-length)传送数据。

阅读全文 »