• 浅谈 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日
  • kubernetes基础概念解析

    本篇文章介绍kubernetes的一些基础概念,也整理出了pdf版本,需要的下拉至文末领取。 目录:  1 、pod 概念 自主式POD:不是被控制器管理的pod。一旦死亡就不会再重生 控制器管理的POD:就是被控制器所管理的POD。 1、自主式POD的基础概念 容器会共用pause的网络栈,也就是说这两个容器就没有他的独立地址了他们都是共同使用pause的地址、共用他的存储卷 Pause 网络栈共享:首先我们要定义一个 POD,就会先启动第一个容器,只要运行一个POD这个容器就会被启动、这个容…

    go开发 2021年7月16日
  • 找到恶意软件包:Go 语言生态系统中的供应链攻击是怎样的?

    近期发生的严重的 SolarWinds 攻击事件和新型 “依赖混淆“攻击,让供应链攻击成为讨论焦点:攻陷供应链中不太安全的元素,导致更安全的目标遭攻陷。 供应链攻击的流行目标一直都是流行编程语言的很多包管理系统,如 NPM (JavaScript)、Rubygems (Ruby) 以及 PyPI (Python)。这些系统常年来遭受恶意攻击,攻击者上传恶意包并等待受害者安装。 目前为止,尚未看到关于 Go 生态系统的供应链攻击情况。鉴于 Go 语言是我的新宠,我决定自己做一些调查。 好在依赖混淆…

    go开发 2021年6月24日
历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、容器云、Go、Python开发专业人才培训机构!