![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
文章平均质量分 81
狂奔文化
人人都想成为拍抖音的人,而我只想成为在抖音工作的人
展开
-
Golang调度器GMP原理与调度
一、Golang“调度器”的由来?(1) 单进程时代不需要调度器我们知道,一切的软件都是跑在操作系统上,真正用来干活(计算)的是CPU。早期的操作系统每个程序就是一个进程,知道一个程序运行完,才能进行下一个进程,就是“单进程时代”,一切的程序只能串行发生。单进程操作系统,面临2个问题:1.单一的执行流程,计算机只能一个任务一个任务处理。2.进程阻塞所带来的CPU时间浪费。最早的并发能力,多进程并发,当一个进程阻塞的时候,切换到另外等待执行的进程,这样就能尽量把CPU利用起来,CPU就不浪费了。有原创 2020-07-28 14:43:56 · 625 阅读 · 1 评论 -
GO语言interface——海纳百川的接口
前言生活就应该像接口,容纳一切Go 语言的接口类型非常特别,它的作用和 PHP 语言的接口一样,但是在形式上有很大的差别。PHP语言需要在类的定义继承实现了某些接口,才可以说这个类具备了接口定义的能力。但是 Go 语言的接口是隐式的,只要结构体上定义的方法在形式上(名称、参数和返回值)和接口定义的一样,那么这个结构体就自动实现了这个接口,我们就可以使用这个接口变量来指向这个结构体对象。下面我们看个例子package mainimport "fmt"// 可以闻type Smellable i原创 2020-07-10 13:52:58 · 156 阅读 · 0 评论 -
Go语言struct——与众不同的结构体
前言物以类聚,人以群分。结构体就是go语言里面典型的代表,每个结构体都有自己不同的成员结构体类型的定义结构体和其它语言里的"类"比较类似。下面我们使用结构体语法来定义一个"圆"type Circle struct { x int y int Radius int}Circle 结构体内部有三个变量,分别是圆心的坐标以及半径。特别需要注意是结构体内部变量的大小写,首字母大写是公开变量,首字母小写是内部变量,分别相当于类成员变量的 Public 和 Private 类别。内部变量只有属原创 2020-07-09 17:00:41 · 300 阅读 · 0 评论 -
GO语言string——默默无闻的字符串
前言字符串好像是所有语言最不起的东西,但是实际业务中又无法避免的一个环节,就跟空气一样,每个人都需要呼吸,但是谁都不会无时不刻的去注意他一样,他们都是默默无闻的使者。。。啥?字符和字节Go 语言里的字符串是“字节”串,英文字符占用 1 个字节,非英文字符占多个字节。这意味着无法通过位置来快速定位出一个完整的字符来,而必须通过遍历的方式来逐个获取单个字符,我们所说的字符通常是指 unicode 字符,你可以认为所有的英文和汉字在 unicode 字符集中都有一个唯一的整数编号,一个 unicode 通常原创 2020-06-21 09:19:34 · 192 阅读 · 0 评论 -
如何定义protobuf
定义消息类型首先让我们看一个非常简单的例子。假设您要定义一个搜索请求消息格式,其中每个搜索请求都有一个查询字符串,您感兴趣的特定结果页面以及每页结果数量。这是.proto用于定义消息类型的文件。syntax = "proto3";message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3;}文件的第一行指定您正在使用proto3语法:如果不这样做,则协议缓冲区编原创 2020-06-08 18:18:40 · 838 阅读 · 0 评论 -
GO语言map——万能的字典
前言字典在英文中的词汇是dictionary,在数学上的词汇是映射,在go语言中称之为map,很奇怪翻了一下大英词典(百度翻译),map怎么都没有字典这个翻译,偏偏在go中就是叫字典。但大家都一直这么用,这么叫,有些事就是这样,又何必纠结对与错呢,生活亦是如此。有因必有果字典的 key 是因,字典的 value 是果。如果说数组和切片赋予了我们步行的能力,那么字典则让我们具备了跳跃的能力。指针、数组切片和字典都是容器型变量,字典比数组切片在使用上要简单很多,但是内部结构却无比复杂字典的创建关于 G原创 2020-06-05 15:08:07 · 574 阅读 · 1 评论 -
GO言语if-else——永恒的逻辑
前言其实所谓的算法都是严格的数据公式,只不过有的复杂一点,有的简单一点,但都离不开永恒的逻辑,生活也是如此。。。语法糖少?Go 语言的分支循环语句选择性较少,循环语句它只有 for 循环,平时我们在其它语言用的 while 语句、do while 语句。分支语句只有 if 和 switch,也没有三元操作符(PHPer表示这语言跟PHP没法比)。少是坏事,也是好事。语法糖丰富了表面上选择性多了功能强大了,但是也会增加代码的理解成本,用户需要掌握更多的知识才可以理解代码,这会提高语言的学习门槛。一个原创 2020-06-04 10:07:24 · 452 阅读 · 0 评论 -
GO语言变量——不朽的变量
前言任何一门语言里面最基础的莫过于变量了。如果把内存比喻成一格一格整齐排列的储物箱,那么变量就是每个储物箱的标识,我们通过变量来访问计算机内存。没有变量的程序对于人类来说是可怕的,需要我们用数字位置来定位内存的格子,人类极不擅长这样的事。这就好比一岁半左右的幼儿还没有学会很多名词,只能用手来对物体指指点点来表达自己的喜好。变量让程序逻辑有了丰富的表达形式。定义变量的三种方式Go 语言的变量定义有多种形式,我们先看最繁琐的形式package mainimport "fmt"func main原创 2020-06-02 18:22:14 · 378 阅读 · 0 评论 -
GO语言slice——神奇的切片
切片是个啥切片无疑是 Go 语言中最重要的数据结构,也是最有趣的数据结构,它的英文词汇叫 slice。所有的 Go 语言开发者都津津乐道地谈论切片的内部机制,它也是 Go 语言技能面试中面试官最爱问的知识点之一。初级用户很容易滥用它,这小小的切片想要彻底的理解它是需要花费一番功夫的。在使用切片之前,我觉得很有必要将切片的内部结构做一下说明。学过 Java 语言的人会比较容易理解切片,因为它的内部结构非常类似于 ArrayList,ArrayList 的内部实现也是一个数组。当数组容量不够需要扩容时,就会原创 2020-05-29 11:08:19 · 585 阅读 · 0 评论 -
GO坑——map map重新赋值之后,前面的map都是最后一个值
go 当对map和string 重新赋值,产生的结果不一样//make 一个map,然后循环对map进行重新赋值,最后追加到一个slice里func main(){ var data = make(map[string]interface{}, 0) var res []map[string]interface{} var testSlice = []int{1,2,3,4,5} for _,v :=range testSlice{ data["key"] = v fmt.Printl原创 2020-05-21 18:23:23 · 2702 阅读 · 2 评论