后端

线程安全那些事

引言 在上一篇文章,我们了解了什么是进程/线程,把多进程和多线程进行了对比,那通常所说的线程安全是什么呢?要想搞清楚这个概念,那么我们可以尝试

进程那些事

什么是进程 在ARTS的微信群里,看到布置的命题作业,为了弄清楚一个概念,那所谓的进程到底是什么? 作为程序员都知道,进程是一段程序代码,好像也

Tars实践

什么是Tars Tars这个名字取自于电影”星际穿越”中的机器人,它是基于名字服务使用Tars协议的高性能RPC开发框架,配套一体化的运营管理

并发-学习Go语言

阅读笔记 goroutines.go package main import ( "fmt" "time" ) func say(s string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond) fmt.Println(s) } } func main() { go say("world") say("hello") } 笔记 Go 程(goroutine)是由 Go 运行时管理的轻量级线程。 go f(x,

接口-学习Go语言

阅读笔记 interfaces.go package main import ( "fmt" "math" ) type Abser interface { Abs() float64 } func main() { var a Abser f := MyFloat(-math.Sqrt2) v := Vertex{3, 4} a = f // a MyFloat 实现了 Abser a = &v // a *Vertex 实现了 Abser // 下面一行,v 是一个 Vertex(而

方法-学习Go语言

阅读笔记 methods.go package main import ( "fmt" "math" ) type Vertex struct { X, Y float64 } func (v Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } func main() { v := Vertex{3, 4} fmt.Println(v.Abs()) } 笔记 Go 没有类。不过你可以为结构体类型定义方法。 方法就是一类带

映射-学习Go语言

阅读笔记 maps.go package main import "fmt" type Vertex struct { Lat, Long float64 } var m map[string]Vertex func main() { m = make(map[string]Vertex) m["Bell Labs"] = Vertex{ 40.68433, -74.39967, } fmt.Println(m["Bell Labs"]) } 笔记 make 函数会返回给定类型的映射,并将其初始化备用。 m就是映射了,将k

切片-学习Go语言

阅读笔记 slices.go package main import "fmt" func main() { primes := [6]int{2, 3, 5, 7, 11, 13} var s []int = primes[1:4] fmt.Println(s) } 笔记 切片的内部实现,类似一个链表+头尾指针。 数组的切片范围为low<= x < high slices-pointers.go package

结构体-学习Go语言

阅读笔记 pointers.go package main import "fmt" func main() { i, j := 42, 2701 p := &i // point to i fmt.Println(*p) // read i through the pointer *p = 21 // set i through the pointer fmt.Println(i) // see the new value of i p = &j // point to j *p = *p / 37 // divide j through the pointer fmt.Println(j) // see the

控制流程-学习Go语言

阅读笔记 if-with-a-short-statement.go package main import ( "fmt" "math" ) func pow(x, n, lim float64) float64 { if v := math.Pow(x, n); v < lim { return v } return lim } func main() { fmt.Println( pow(3, 2, 10), pow(3, 3, 20), ) } 笔记 同 for 一样, if 语句可以在条件表达式前执行一个简