• 深入理解Golang Channel 结构

    Go 语言的 channel 底层是什么数据结构?本文深入解析了 channel。 Golang 使用 Groutine 和 channels 实现了 CSP(Communicating Sequential Processes) 模型,channles 在 goroutine 的通信和同步中承担着重要的角色。 在 GopherCon 2017 中,Golang 专家 Kavya 深入介绍了 Go Channels 的内部机制,以及运行时调度器和内存管理系统是如何支持 Channel 的,本文根…

    go开发, 技术干货 2021年11月18日
  • 七步制作精简镜像

    目录 介绍 镜像层(Layers) 制作步骤 lab-1:初始化构建 Redis 镜像 lab-2:优化基础镜像 lab-3:串联 Dockerfile 指令 lab-4:压缩你的镜像 lab-5:使用最精简的 base image lab-6:提取动态链接的 .so 文件 lab-7:为 Go 应用构建精简镜像 总结 参考 介绍 前段时间网易蜂巢曾经推出蜂巢 Logo T恤,用的正是 Docker 镜像制作,最神奇的是,它最终的镜像大小只有 585 字节。 有些镜像都不是我们自己来打包的(比如…

    go开发 2021年11月16日
  • 浅谈 Golang 锁的应用: sync包

    Go 语言 sync 包中的锁都在什么场景下用?怎么用?本文对 sync 包内的锁做了梳理。 今天谈一下锁,以及 Go 里面 Sync 包里面自带的各种锁,说到锁这个概念,在日常生活中,锁是为了保护一些东西,比如门锁、密码箱锁,可以理解对资源的保护。在编程里面,锁也是为了保护资源,比如说对文件加锁,同一时间只也许一个用户修改,这种锁一般叫作文件锁。 实际开发中,锁又可分为互斥锁(排它锁)、读写锁、共享锁、自旋锁,甚至还有悲观锁、乐观锁这种说法。在 Mysql 数据库里面锁的应用更多,比如行锁、表…

    go开发, 技术干货 2021年10月25日
  • Golang 闭包的实现

    什么是闭包?什么场景下会用闭包?本文对 go 语言中的闭包做了详细介绍。 闭包是由函数及其相关引用环境组合而成的实体(即:闭包=函数+引用环境)。 Go中的闭包 闭包是函数式语言中的概念,没有研究过函数式语言的用户可能很难理解闭包的强大,相关的概念超出了本书的范围。Go语言是支持闭包的,这里只是简单地讲一下在Go语言中闭包是如何实现的。 函数f返回了一个函数,返回的这个函数,返回的这个函数就是一个闭包。这个函数中本身是没有定义变量i的,而是引用了它所在的环境(函数f)中的变量i。 c1跟c2引用…

    go开发, 技术干货 2021年10月18日
  • Go 可变参数 … parameters 读这篇就够了

    Go 语言可变参数怎么用能最大化它的效用?本文对可变参数进行了详细介绍。 在实际开发中,总有一些函数的参数个数是在编码过程中无法确定的,比如我们最常用的 fmt.Printf 和 fmt.Println: 当你需要实现类似的接口时,就需要我们的可变参数出场了。 golang 的可变参数 可变参数就是一个占位符,你可以将 1 个或者多个参数赋值给这个占位符,这样不管实际参数的数量是多少,都能交给可变参数来处理,我们看一下可变参数的声明: 可变参数使用 name …Type 的形式声明在…

    go开发, 技术干货 2021年9月18日
  • 深入浅出标准库 text/template 包

    go 语言标准库 text/template 在 web 编程项目中经常用到,本文详细介绍了这个包的用法。 官方定义: Package template implements data-driven templates for generating textual output. template 包是数据驱动的文本输出模板,其实就是在写好的模板中填充数据。 模板 什么是模板? 下面是一个简单的模板示例: {{ 和 }} 中间的句号 . 代表传入模板的数据,根据传入的数据不同渲染不同的内容。 ….

    go开发 2021年9月16日
  • 字节开源以Go为核心的项目,为何大厂都如此偏爱Go?

    9月8日,字节跳动正式宣布开源CloudWeGo,这是一套以Go 语言为核心中间件集合。字节相关技术负责人表示希望CloudWeGo能丰富云原生社区的Golang工具体系。 可以看出,字节内部已有诸多用Go语言开发的成熟项目,基本上也已经全员转Go了。其实不只是字节,阿里、腾讯、百度、B站等也都开始尝试用Go来开发项目了,如果你想进大厂,那么Go语言毫无疑问是最佳通行证。 为什么现在BAT大厂纷纷转Go? Go有十分明显的优势 许多大厂内部需要构建大型项目,而Go的高并发、高性能、高效率等优势,…

    go开发, 免费公开课 2021年9月11日
  • Go 项目中常见的 10 种错误

    本文总结了10种 go 语言编成中可能导致性能下降的坏实践。有代码洁癖的同学来自我检查吧! 这篇文章主要讲述了我在 Go 项目中见到过的常见错误清单,顺序无关。 未知的Enum值 来看个简单的例子 在上面的代码中,使用iota创建了一个enum类型,分别代指下面的状态信息: 现在,我们假设Status 是一个 JSON 请求中被Marshalled / Unmarshalled的一个属性,我们可以设计出下面的数据结构: 然后,假设收到的Request 的接口返回值为: 到目前为止,没有什么特殊的…

    go开发 2021年9月9日
  • Golang 如何表示枚举类型

    go 语言枚举类型是这么用的?在什么场景下会用到枚举?本文对 go 语言枚举做了详细讲解。 枚举,是一种重要的数据类型,由一组键值对组成,通常用来在编程语言中充当常量的标识符。在主流行编程语言如 c、 java 等,都有原生支持。在 go 中,大家却找不到 enum 或者其它直接用来声明枚举类型的关键字。从熟悉其它编程语言的开发者转用 go 编程,刚开始会比较难接受这种情况。其实,如果你看到如何在 go 中表示枚举类型时,可能会感受到 go 语言设计者对简洁性、问题考虑的深度,是一般资浅工程师无…

    go开发 2021年9月7日
  • 使用Golang开发OpenStack服务的CLI

    由于我们需要编写自己服务的客户端,之前参考过magnum的python客户端,编写过一个,整体感受就是: 一件简单的事儿,被他封装的很复杂,而且还有一个关键痛点,部署问题: 1.依赖python环境 2. 蹩脚的二进制打包方式。因此,作为一个产品的CLI,以二进制方式交付会带来诸多方便,比如cloud foundry也用golang重写了他的客户端部分。 Cobra简介 在博客的开篇写过一篇cobra的博客: 如何使用golang编写漂亮的命令行工具, 很多流行的CLI都基于这个库开发,比如ku…

    go开发, 技术干货 2021年8月11日
历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、容器云、Go、Python开发专业人才培训机构!