在前面一节中简单介绍了golang的调度模型-GPM模型,介绍了他们各自的作用。这篇文章就来看看他们的源码结构。 Go版本:go1.13.9 M结构体 M结构体是OS线程的一个抽象,主要负责结合P运行G。它里面有很多字段,差不多有60个字段,我们看看里面主要的字段意思。 /src ...
分析接口的赋值,反射,断言的实现原理 版本:golang v . interface底层使用 个struct表示的:eface和iface 一:接口类型分为 个 . 空接口 . 带方法的接口 二:eface空接口定义 空接口通过eface结构体定义实现,位于src runtime runtime .go 可以看到上面eface包含了 个元素,一个是 type,指向对象的类型信息,一个 data,数 ...
2019-09-20 16:49 0 1471 推荐指数:
在前面一节中简单介绍了golang的调度模型-GPM模型,介绍了他们各自的作用。这篇文章就来看看他们的源码结构。 Go版本:go1.13.9 M结构体 M结构体是OS线程的一个抽象,主要负责结合P运行G。它里面有很多字段,差不多有60个字段,我们看看里面主要的字段意思。 /src ...
一、背景 在golang中,最主要的一个概念就是并发协程 goroutine,它只需用一个关键字 go 就可以开起一个协程,并运行。 一个单独的 goroutine运行,倒也没什么问题。如果是一个goroutine衍生了多个goroutine,并且它们之间还需要交互-比如传输数据 ...
接口(Interface)的深入理解 一:接口是规范(不展开) 二:接口可以看成是一个特殊的类 1: 接口可以定义“接口类型变量”,就好像类可以定义类类型的变量(或者说是引用类型变量)。申明一个类类型的变量,然后我们通常使用构造器创建对象,并把该对象赋值给类类型的变量(或者说引用变量引用 ...
Spring容器初始化 本文使用的是Spring 5.1.7版本 写在前面:我们看源码一般有3种方式。 第一种直接用class文件,IDEA会帮我们反编译成看得懂的java代码 第二种是用maven的download Sources 第三种是直接下载源码编译 如果随便看看 ...
前言 什么是 CAS Java 中的 CAS JVM 中的 CAS 前言 在上一篇文章中,我们完成了源码的编译和调试环境的搭建。 鉴于 CAS 的实现原理比较简单, 然而很多人对它不够了解,所以本篇将从 CAS 入手,首先介绍 ...
一、疑惑开篇 有了map为什么还要搞个sync.map 呢?它们之间有什么区别? 答:重要的一点是,map并发不是安全的。 在Go 1.6之前, 内置的map类型是部分goroutine安全的,并发的读没有问题,并发的写可能有问题。自go 1.6之后, 并发地读写map会报错,这在一些 ...
一、Linux系统内存 在说明golang内存分配之前,先了解下Linux系统内存相关的基础知识,有助于理解golang内存分配原理。 1.1 虚拟内存技术 在早期内存管理中,如果程序太大,超过了空闲内存容量,就没有办法把全部程序装入到内存,这时怎么办? 在许多年前,人们采用了一种叫做覆盖 ...
一:什么是调度 平常我们在生活中会有哪些调度的例子呢?比如十字路口的红绿灯,它就是一种调度系统。在交通十字路口,每个路口上多多少少有一些车辆,为了限制这些车辆不随意行驶,就建起了红绿灯调度系统。红绿 ...