自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Go - Goroutine

一、Goroutine多个线程可以属于同一个进程并共享内存空间。因为多线程不需要创建新的虚拟内存空间,所以它们也不需要内存管理单元处理上下文的切换,线程之间的通信也正是基于共享的内存进行的,与重量级的进程相比,线程显得比较轻量。虽然线程比较轻量,但是在调度时也有比较大的额外开销。每个线程会都占用 1 兆以上的内存空间,在对线程进行切换时不止会消耗较多的内存,恢复寄存器中的内容还需要向操作系统申...

2020-03-30 09:11:03 343

原创 Go - Time

一、Time1-1 time.Format() - 时间格式化package mainimport ( "fmt" "time")func main() { now_time := time.Now() fmt.Println(now_time) //2020-03-09 14:48:06.238256 +0800 CST m=+0.000109584 //相当于Ymd ...

2020-03-30 09:10:21 285

原创 Go-Func,Struct,Interface

一、FunctionGo 语言中,函数的参数,无论是基本类型、结构体、指针,都会对传递的参数进行拷贝。但呈现方式并不都是值传递,原因是指针类型作为参数传递时,函数内部会对指针进行复制,会同事出现俩个指针指向原有的内存地址,所以 Go 语言中,传指针 == 传值传值:函数调用时会对参数进行拷贝,被调用方和调用方两者持有不相关的两份数据;传引用:函数调用时会传递参数的指针,被调用方和调用方两...

2020-03-30 09:09:34 652

原创 Go-Context

一、Context 简单介绍context.Context,是专门用来简化对于处理单个请求的多个 goroutine 之间与传递请求数据、同步信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。1-1 应用场景举例e.g.1​ 有一个网络请求 Request,每个 Request 都需要开启一个 goroutine 做一些事情,这些goroutine又可能会开启其他的 gorou...

2020-03-30 09:09:09 183

原创 Go-Channel

一、Channel 设计原理Go 中使用 Channel 即通信的方式共享内存,避免了使用内存共享的方式通信,解决了需要限制同一时间能够读写变量的线程数量去解决线程冲突的问题。Go 语言虽然也能使用 共享内存+互斥锁 进行通信,但同时也提供了 通信顺序进程(Communicating sequential processes,CSP) 的并发模型。即,Goroutine -> Chann...

2020-03-30 09:08:31 129

原创 Go-同步原语

一、同步原语 - Sync这些基本原语提高了较为基础的同步功能,但是它们是一种相对原始的同步机制,在多数情况下,我们都应该使用抽象层级的更高的 Channel 实现同步。1-1 并发状态下的资源冲突由于引用传递,在并发状态下的数据资源获取无序,导致最终结果重复或者错误。package mainimport ( "fmt" "sync" "time")fun...

2020-03-30 09:08:00 564

原创 Go-关键词总结

一、For & For-Range循环的两种方式:for 、 for rangepackage mainimport "fmt"func main() { sum := 0 for i := 0; i < 10; i++ { sum += i } fmt.Println(sum) // 初始化语句和后置语句是可选的。 sum := 1 for ;...

2020-03-30 09:07:28 341

原创 Go - 数据结构

一、Array数组和切片是 Go 语言中最常见的数据结构。数组是由相同类型的元素的集合的数据结构,被分配一块的连续的内存用来保存数据,且可以通过其中存储的索引进行快速访问其存储地址。1-1 Array 的初始化Array 是定长的,一旦初始化后,无法改变其长度大小;而 Slice 是不定长的Array。array 的初始化有两种方式:1、显式指定长度 2、使用可变参数,由语言推断长度a...

2020-03-10 09:48:20 833

原创 Go - 编译过程总结

一、 语言类型:编译型语言代码在运行前,通过编译器生成二进制机器码,即,包含二进制机器码的文件才能再目标机器上运行。Go 语言编译器的源代码在 src/cmd/compile 目录中编译器分为前端和后端编译器的前端一般承担着词法分析、语法分析、类型检查、中间代码生成;后端主要负责目标代码的生成和优化,即,将中间代码翻译成目标机器能够运行的二进制机器码。二、Go 编辑器上的四个转换阶段...

2020-03-10 09:47:04 697

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除