万能钥匙-中间层
最近小菜刀重读《程序员的自我修养》,里面提到过一句名言:计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。
上述名言概括了计算机系统软件体系结构的设计要点,整个体系结构从上到下都是按照严格的层次结构设计的。不仅是计算机系统软件整个体系是这样的,体系里面的每个组件比如操作系统本身,应用程序、软件系统甚至很多硬件结构都是按照这种层次的结构组织和设计的。
最近小菜刀重读《程序员的自我修养》,里面提到过一句名言:计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。
上述名言概括了计算机系统软件体系结构的设计要点,整个体系结构从上到下都是按照严格的层次结构设计的。不仅是计算机系统软件整个体系是这样的,体系里面的每个组件比如操作系统本身,应用程序、软件系统甚至很多硬件结构都是按照这种层次的结构组织和设计的。
学过计算机系统的人,应该知道异常控制流(ECF)。异常控制流发生在计算机系统的各个层次。比如,在硬件层,硬件检测到的事件会触发控制突然转移到异常处理程序。在操作系统层,内核通过上下文切换将控制从一个用户进程转移到另一个用户进程。在应用层,一个进程可以发送信号到另一个进程,而接收者会将控制突然转移到它的一个信号处理程序。
golang中内置了map关键字,但是它是非线程安全的。从go 1.9开始,标准库加入了sync.Map,提供用于并发安全的map。
普通map的并发问题
在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。限流是指通过对并发访问/请求进行限速或者对一个时间内的的请求进行限量来保护系统,一旦达到限制条件则可以拒绝服务。
想成为一名优秀的Golang开发者,你知道需要掌握哪些技能吗?为了帮助你更好的上🚗,本文为你提供了2020版Go开发者成长路线图。
1. 先决条件
Golang中通过go关键字就可开启一个goroutine,因此,在Go中可以轻松写出并发代码。但是,如何对这些并发执行的groutines有效地控制?
Go语言是一门非常简单优雅的语言,其源码更是其风格标杆。看源码,不仅能学习Go的设计哲学,了解如何调用库函数,同时帮助我们写出更优雅的go代码。
交叉编译是指在一个硬件平台生成另一个硬件平台的可执行文件。而Go提供了非常方便的交叉编译方式。
如何编译
Go交叉编译,涉及到几个环境变量的设置: GOARCH、GOOS和CGO_ENABLED。