400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

Go 简单入门

GO的环境配置?

GOPATH GOROOT 都是干嘛用的?

创新互联是一家专业的成都网站建设公司,我们专注成都网站建设、网站建设、网络营销、企业网站建设,卖链接广告投放平台为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。

配置环境跟java对比有点奇怪

https://blog.csdn.net/weixin_/article/details/

语言特性

协程?

建立一个协程很简单 加一个go关键字就可以

package concurrence

import (
	"fmt"
	"time"
)

func hello(i int) {
	println("hello goroutine : " + fmt.Sprint(i))
}

func HelloGoRoutine() {
	for i := 0; i < 5; i++ {
		go func(j int) {
			hello(j)
		}(i)
	}
	time.Sleep(time.Second)
}

通过通信共享内存而不是通过共享内存而实现通信?

先提供一个或多个高性能队列,线程/进程/微服务之间需要访问别人时,不能直接读写别人的数据,而要通过队列提出请求,然后在对方处理请求时再做相应处理。

Q&A

Q:我对java比较熟悉,java里面通过锁来实现共享内存,从而实现通信。 那啥叫”通过通信共享内存“啊?

A:ultimate go notebook 里面讲把channel当做信号收发,而不是一种数据结构。

Q:我可以理解成chenel在go里 就像 阻塞队列BlockingQueu在java里吗? 只不过chenel颗粒度更小实现的更加底层?

A:无人回复。。。。

https://juejin.cn/post//#heading-14
https://draveness.me/whys-the-design-communication-shared-memory/

Channel?

make(chan元素类型,[缓冲大小])·

例子:一个经典的生产消费模型

package concurrence

func CalSquare() {
	src := make(chan int)
	dest := make(chan int, 3)
	go func() {
		defer close(src)
		for i := 0; i < 10; i++ {
			src <- i
		}
	}()
	go func() {
		defer close(dest)
		for i := range src {
			dest <- i * i
		}
	}()
	for i := range dest {
		//复杂操作
		println(i)
	}
}

LOCK?

package concurrence

import (
	"sync"
	"time"
)

var (
	x    int64
	lock sync.Mutex
)

func addWithLock() {
	for i := 0; i < 2000; i++ {
		lock.Lock()
		x += 1
		lock.Unlock()
	}
}
func addWithoutLock() {
	for i := 0; i < 2000; i++ {
		x += 1
	}
}

func Add() {
	x = 0
	for i := 0; i < 5; i++ {
		go addWithoutLock()
	}
	time.Sleep(time.Second)
	println("WithoutLock:", x)
	x = 0
	for i := 0; i < 5; i++ {
		go addWithLock()
	}
	time.Sleep(time.Second)
	println("WithLock:", x)
}

func ManyGoWait() {
	var wg sync.WaitGroup
	wg.Add(5)
	for i := 0; i < 5; i++ {
		go func(j int) {
			defer wg.Done()
			hello(j)
		}(i)
	}
	wg.Wait()
}

内存管理

相关概念

ConcurrentGC 的实现方式

追踪垃圾回收

可达性分析

引用计数

分块

缓存

内存管理优化

Balanced GC(根据对象的生命周期,使用不同的标记和清理策略)

小对象的管理

大对象的管理


文章标题:Go 简单入门
当前地址:http://mbwzsj.com/article/dsoisoi.html

其他资讯

让你的专属顾问为你服务