golang
67
一、初识Go语言Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Griesemer、Ken Thompson和Rob Pike等世界顶尖计算科学家精心打造的系统编程语言。Go语言最显著的特点是编码简洁迅速、支持高效并发和自动内存管理等。此外,Go语言还面向网络服务器、存储系统和数据库等领域的编程进行了优化设计,并且简化了应用系统的安装和部署。因此,Go语言受到了广大程序员的青睐,越来越多地开始应用于谷歌和百度等知名中外企业的产品中。Go语言形象标识对于这样一个在云计算
61
golang v1.3前-标记清除(mark and sweep)方法
标记清除再gc前会进行STW,STW - MARK标记 - SWEEP清除 - 停止STW1、STW暂停程序业务逻辑,找出不可达对象和可达对象;2、开始标记,程序找出所有的可达对象做上标记;3、标记完之后,开始清楚未标记对象;4、停止暂停,让程序继续运行。循环重复这个过程,直到程序生命周期结束;不足:1、STW程序暂停,程序出现卡顿(严重问题)2、标记需要扫描整个heap3、清除数据会产生heap碎片4、缓解办法:可将三步和四步换位置
49
手撸golang GO与微服务 聚合模式之2
缘起
最近阅读 [Go微服务实战] (刘金亮, 2021.1)
本系列笔记拟采用golang练习之
聚合模式
DDD中有两个非常重要的模式:聚合(Aggregate)和聚合根(AggregateRoot)。
聚合是对概念上属于同一实体(entity)或值对象(value object)的封装。
而聚合根的含义是指,任何对该聚合的访问都仅到达聚合根。比如Car就是聚合根,虽然Car有轮胎、车灯,
但是显然外部访问都只需要访问Car,聚合根确保了聚合的完整性。聚合
60
分支控制
1.if else写法1age := 30;
if age > 18 {fmt.Println("成年人")
}写法2if age := 30; age > 18 {fmt.Println("成年人")
}两种写法的{}都不能省略,区别是:变量age的作用域不同2.switch case这里的break语句,可写可不写。switch extname := ".html"; extname
46
golang初始化数组
golang中数组为值类型
方式1:指定数组长度
func main() {var defaltArray [3]int //数组会初始化为int类型的零值var numArray = [3]int{1, 2} //使用指定的初始值完成初始化var strArray = [3]string{"python", "java", "golang"} //使用指定的初始值完成初始化fmt.Println(def
40
golang 切片(Slice)
切片为引用类型,切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装,支持自动扩容。
切片的本质就是对底层数组的封装,由三个重要部分构成:底层数组的指针
切片的长度(len)
和切片的容量(cap)创建切片
func main() {// 声明切片类型var a []string //声明一个字符串切片var b = []int{} //声明一个整型切片并初始化var c = []bool
49
Golang之不可重入函数实现
平台开发 360云计算
女主宣言一个不可重入的函数就是一个在任何时间点只能执行一次的函数,不管它被调用了多少次,以及有多少goroutines。PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!一个不可重入的函数就是一个在任何时间点只能执行一次的函数,不管它被调用了多少次,以及有多少goroutines。
本篇文章说明了阻塞不可重入函数,并在golang中产生不可重入的函数实现。
场景用例
某个服务是对某些条件进行轮询,每秒监视一些状态。
38
基本操作:Go创建GraphQL API
平台开发 360云计算
女主宣言
越来越多的项目中都能看到GraphQL的身影,不知道大家在项目中有没有使用过GraphQL呢?今天给大家分享一下使用Go,来创建基础GraphQL API,供大家参考学习。PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!
引言
随着时间推移,我们在越来越多的项目中,都可以发现GraphQL的身影。
从几个方面看,包括图形化的数据、多个分布式团队和高度版本化的api,以及关于类型安全和文档的问题