
go学习
文章平均质量分 91
上山打 老虎
纸上得来终觉浅,绝知此事要躬行
展开
-
图解Golang内存管理机制!
上篇说到超超从汇编的角度的解析了make和new的区别,下面来到了面试中常见的考点GC,Go的GC常常因为性能问题被业界所诟病,下面跟着超超来看看内存垃圾是如何产生的,以及Go从1.3到1.8在GC上做了哪些改进吧!一、内存垃圾面试官:你知道程序的垃圾是怎么产生的吗?考点:Go内存管理超超:程序在内存上被分为堆区、栈区、全局数据区、代码段、数据区五个部分。对于C++等早期编程语言栈上的内存由编译器管理回收,堆上的内存空间需要编程人员负责申请与释放。在Go中栈上内存仍由编译器负责管理回收,而堆上的内存原创 2021-07-14 11:34:33 · 863 阅读 · 0 评论 -
sync.once详解
超超为了能让婷婷过上幸福美满的生活,决定去大厂历练一番,下面是他去大厂面试时遇到的几个关于单例的问题。一、认识单例超超:您好,面试官~面试官:你好,你平时开发是用 windows 还是 linux 居多?超超:(哎呀,这是要问我linux问题吗,算了,如实回答吧) 我平时都是用windows开发的。面试官:那你知道 windows 的资源管理器只能单开,但是cmd命令行可以开很多个,有想过这是为什么吗?考点:单例的使用场景优缺点超超:资源管理器在整个系统运行过程中不会因为不同的任务管理器内容原创 2021-03-30 15:10:06 · 3485 阅读 · 3 评论 -
一个恋爱小故事告诉你什么是gRPC?!
RPC对RPC不了解的人,或许会纠结其与TCP、HTTP等的关系。后者是网络传输中的协议,而RPC是一种设计、实现框架,通讯协议只是其中一部分,RPC不仅要解决协议通讯的问题,还有序列化与反序列化,以及消息通知。一个完整的RPC架构里面包含了四个核心的组件,分别是Client ,Server,ClientOptions以及ServerOptions,这个Options就是RPC需要设计实现的东西。客户端(Client):服务的调用方。服务端(Server):真正的服务提供方。客户端存根原创 2021-02-09 10:48:05 · 19538 阅读 · 3 评论 -
8.struct
一、基础知识原创 2020-11-02 19:05:13 · 137 阅读 · 0 评论 -
7.map
一、基础知识原创 2020-11-02 19:01:09 · 129 阅读 · 0 评论 -
6. 切片
一、俩种创建没有长度的[ ],这里区别于数组,数组是有长度的通过make创建make([ ]int, len, cap)二、俩种拷贝=拷贝会直接赋值地址,这时俩个切片指向同一块地址空间copy是值拷贝,会复制一份值到目标切片(这里注意数组是必须长度一样才能拷贝)三、俩种添加用append(s, num):在切片s后面加上数字num用切片s[low: high: max] low默认值是0,high的默认值是切片长度,最终结果含左不含右,len=high-low,cap=max-l原创 2020-10-27 19:36:56 · 185 阅读 · 0 评论 -
5. 数组
一、数组的创建var nums […]int:注意不定数组要标出…不然就是切片,数组大小可以是const修饰的常量但不能是变量初始化一个数组一共有三种方式var nums1 [len]int //len是const修饰的常量var nums2 [10]int = [10]int{12,3,4} //不用编译器确定的初始化方法nums3 := [...]int{1, 2, 3} //由初始化再确定大小nums4 := [5]int{1:10, 2:30} //定好位置初始化,未定的位置初始原创 2020-10-27 19:09:20 · 134 阅读 · 0 评论 -
4. defer
defer作用defer用于延迟函数调用,将defer修饰的代码段放在main函数结束的最后一刻调用如果有多个defer,那么将遵循后入栈的先调用的规则应用场景:defer通常被应用于资源的释放,保证无论怎样,最后加锁的资源都能被释放...原创 2020-10-27 18:32:26 · 108 阅读 · 0 评论 -
3. 匿名函数与闭包
一、函数类型函数也是一种类型可以作为函数返回值,也可以作为参数传入子函数中可以用type FuncType func(int ,int) int来替换二、匿名函数与闭包匿名函数是指在主函数中定义一个函数用变量fun接受,之后再通过fun()来调用该方法闭包就是指匿名函数,只是在匿名函数中引用来主函数中变量的值,因此在变量会一直存在,不会被gc掉package mainimport "fmt"//匿名函数与闭包的使用//闭包就是匿名函数中引用了外部的变量, 且变量是通过传引用的方式原创 2020-10-27 18:27:24 · 406 阅读 · 0 评论 -
2. C++与Go区别
一、程序习惯上go项目中必须要有main包和main函数,这俩个决定了go程序的入口go的main函数与C++也不同,没有参数列表也没有返回值go的分号可以不要二、基础类型go习惯将类型写在最后如:var num intgo语言基础类型有int8,float32,float64等,且无float类型,字符的类型是bytego中还多了一个复数类型三、变量的赋值go中有C11的赋值方法a:=1,在for循坏中十分实用go中多了一个多重赋值,如:var (a intb int原创 2020-10-26 22:22:38 · 4074 阅读 · 8 评论 -
1. go引言
go语言基础1.go语言为什么快(1)go语言使用的import而不是include,可以有效减少重复编译的次数(2)go没有使用模板编程减少了模块的编译时间2.go语言优势(1)可以直接打包发送不依赖其他库(2)自动垃圾回收机制不用手动释放内存(3)内置的并发库,以及轻量化的协程库(4)大量的网络并发库...原创 2020-10-26 21:32:37 · 120 阅读 · 0 评论 -
goland常用快捷键
常用快捷键command+/ 注释⌘F12 查看文件结构(即文件所包含的常量、变量、类型、接口、函数、方法等)command+option+L 代码格式化⌘P 查看方法或函数建议的参数(光标首先选中函数名或者光标至于函数后的括号中)...原创 2020-10-26 21:05:13 · 1010 阅读 · 0 评论