reflect 发表于 2020-12-01 | 分类于 Go | 0 | 阅读次数 53 反射反射是指在程序运行期对程序本身进行访问和修改的能力1、变量的内在机制变量包含类型信息和值信息vararr[10]intarr[0]=10类型信息:是静态的元信息,是预先定义好的值信息:是程序运行过程中动态改变的2、反射的使用reflect包封装了反射相关的方法获取类型信息:reflect.Typ 阅读全文 »
context 发表于 2020-12-01 | 分类于 Go | 0 | 阅读次数 40 1、Context初识Go1.7加入了一个新的标准库context,它定义了Context类型,专门有简化对于处理单个请求的多个goroutine之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个API调用。对服务器传入的请求应该创建上下文,而服务器的传出调用应该接受上下文。他们 阅读全文 »
如何优雅地关闭channel 发表于 2020-12-01 | 分类于 Go | 0 | 阅读次数 78 如何优雅的关闭Gochannel原文地址译文地址几天前,我写了一篇文章来说明Golang中channel的使用规范,在reddit和HN,那篇文章收到了很多赞同,但是我也收到了下面几个关于Gochannel设计和规范的批评:在不能更改channel状态的情况下,没有简单普遍的方式来检查channel 阅读全文 »
LRU 发表于 2020-10-27 | 分类于 Java | 0 | 阅读次数 76 LRU(Leastrecentlyused,最近最少使用)是溢出淘汰中最近常被人提起或使用的算法,算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。LRU的使用比较广泛,只要是涉及到缓存或者是数据存储长度限制时,都可以看到LRU算法的实现。在 阅读全文 »
channel 发表于 2020-10-16 | 分类于 Go | 0 | 阅读次数 82 Channel在并发编程中,虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发送竞争问题,为了保证数据交换的正确性,必须使用互斥量对内存进行加锁,这种做法势必造成性能问题。Go语言的并发模型是CSP(CommunicatingSequentialProcesses),提 阅读全文 »
Goroutine 发表于 2020-10-16 | 分类于 Go | 0 | 阅读次数 67 Goroutine1、介绍Go语言中的goroutine实现了程序员只需要关心任务的创建,由系统将任务分配到CPU上实现并发执行的机制。goroutine的概念类似于线程,但goroutine是由Go的运行时(runtime)调度和管理的。Go程序会只能地将goroutine中的任务合理地分配给每个 阅读全文 »
协程 发表于 2020-10-16 | 分类于 Go | 0 | 阅读次数 84 并发概念1、并发和并行多线程程序在单核CPU上运行,就是并发多线程程序在多核CPU上运行,就是并行并发主要由切换时间片来实现“同时”运行,并行则是直接利用多核实现多线程的运行,Go可以设置使用核数,以发挥多核计算机的能力。2、协程和进程协程:独立的栈空间,共享堆空间,调度由用户自己控制,本质上有点类 阅读全文 »
下划线的含义 发表于 2020-10-16 | 分类于 Go | 0 | 阅读次数 85 1、下划线在import中当导入一个包时,该包下的文件里所有init()函数都会执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是希望它执行init函数而已。这个时候就可以使用import引用该包。即使用import_path只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调 阅读全文 »
new和make 发表于 2020-10-16 | 分类于 Go | 0 | 阅读次数 75 1、newnew是一个内置函数,它的函数签名如下:funcnew(Type)*Type解释:Type表示类型,new函数只接受一个参数,这个参数是一个类型*Type表示类型指针,new函数返回一个指向给类型内存地址的指针new函数不太常用,使用new函数得到的是一个类型的指针,并且该指针对应的值为该 阅读全文 »
interface 发表于 2020-10-16 | 分类于 Go | 0 | 阅读次数 84 接口接口(interface)定义了一个对象的行为规范,之定义规范不实现,由具体的对象来实现规范的细节1、接口类型在Go中,接口(interface)是一种类型,一种抽象的类型。interface是一组method的集合,是duck-typeprogramming的一种体现。接口做的事情就像是定义一 阅读全文 »