Go
sb___itfk
这个作者很懒,什么都没留下…
展开
-
Go中方法调用和接口实现
方法调用方法的接收者有两种:值接收者、指针接收者。这两种有什么区别呢?来看下面这段代码,最后结果是什么呢?编译错误?package mainimport "fmt"type Person struct { age int}func (p Person) howOld() int { return p.age}func (p *Person) growUp() { p.age += 1}func main() { // zhangsan 是值类型原创 2020-10-15 19:41:12 · 682 阅读 · 0 评论 -
Golang HTTP使用方式
前言关于Golang HTTP服务器实现原理,本文将通过下面两点来讲述,希望能帮到大家!如何创建一个HTTP服务器HTTP服务器实现原理如何创建一个HTTP服务器创建一个 HTTP服务器 的步骤:创建一个处理器(实际的业务逻辑)创建一个路由器并与处理器进行绑定/注册(这样才能根据URL匹配到对应的函数)启动HTTP服务器,并监听指定端口对于处理器的实现,其实只有两种,一是使用处理器函数实现,二是创建一个结构体,并实现ServeHTTP方法。而对于处理器与路由器的绑定方式,一种是通转载 2020-09-16 17:49:15 · 853 阅读 · 0 评论 -
Go中net/context和http.Handler
The approaches in this post are now obsolete thanks to Go 1.7, which adds the context package to the standard library and uses it in the *net/http http.Request type. The background info here may still be helpful, but I wrote a follow-up post that revisits.转载 2020-08-26 14:41:17 · 530 阅读 · 0 评论 -
【The Go Blog】Go Concurrency Patterns: Pipelines and cancellation
Sameer Ajmani13 March 2014IntroductionGo’s concurrency primitives make it easy to construct streaming data pipelines that make efficient use of I/O and multiple CPUs. This article presents examples of such pipelines, highlights subtleties that arise whe转载 2020-08-13 15:02:12 · 179 阅读 · 0 评论 -
理解Go Context机制
文章目录1 什么是Context2 context包3 context使用3.1 小结4 使用原则1 什么是Context最近在公司分析gRPC源码,proto文件生成的代码,接口函数第一个参数统一是ctx context.Context接口,公司不少同事都不了解这样设计的出发点是什么,其实我也不了解其背后的原理。今天趁着妮妲台风妹子正面登陆深圳,全市停工、停课、停业,在家休息找了一些资料研究把玩一把。Context通常被译作上下文,它是一个比较抽象的概念。在公司技术讨论时也经常会提到上下文。一般理解转载 2020-08-10 15:46:47 · 231 阅读 · 0 评论 -
Goroutine Local Storage
背景最近在设计调用链与日志跟踪的API,发现相比于Java与C++,Go语言中没有原生的线程(协程)上下文,也不支持TLS(Thread Local Storage),更没有暴露API获取Goroutine的Id(后面简称GoId)。这导致无法像Java一样,把一些信息放在TLS上,用于来简化上层应用的API使用:不需要在调用栈的函数中通过传递参数来传递调用链与日志跟踪的一些上下文信息。在Java与C++中,TLS是一种机制,指存储在线程环境内的一个结构,用来存放该线程内独享的数据。进程内的线程不能访问转载 2020-08-07 15:16:05 · 403 阅读 · 0 评论 -
二叉查找树
二叉查找树要求,在树中的任意一个节点,其左子树中的每个节点的值,都要小于这个节点的值,而右子树节点的值都大于这个节点的值。二叉查找树的查找操作先取根节点,如果它等于我们要查找的数据,那就返回。如果要查找的数据比根节点的值小,那就在左子树中递归查找;如果要查找的数据比根节点的值大,那就在右子树中递归查找。二叉查找树的插入操作新插入的数据一般都是在叶子节点上,所以我们只需要从根节点开始,依次比较要插入的数据和节点的大小关系。如果要插入的数据比节点的数据大,并且节点的右子树为空,就将新数据直接插到右子节转载 2020-05-13 17:59:02 · 297 阅读 · 0 评论 -
散列表 哈希表 HaskTable
散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。我们通过散列函数把元素的键值映射为下标,然后将数据存储在数组中对应下标的位置。当我们按照键值查询元素时,我们用同样的散列函数,将键值转化数组下标,从对应的数组下标的位置取数据。散列函数,顾名思义,它是一个函数。我们可以把它定义成 hash(key),其中 key 表示元素的键值,hash(key) 的值表示经过散列函数计算得到的散列值。散列函数设计的基本要求:1.散列函转载 2020-05-12 19:04:30 · 687 阅读 · 0 评论 -
Golang控制panic stack trace的深度
通过研究官方文档,发现可以通过设置环境变量GOTRACEBACK来控制Golang panic stack trace输出的信息的多少。说明如下:环境变量GOTRACEBACK可以控制Go进程由于不可恢复的panic或者未预料到的其他运行时异常而产生的错误堆栈输出的信息的多少。默认情况下(single),当产生错误的时候,只会打印出异常goroutine的异常堆栈,当不存在当前goroutin...转载 2018-09-14 20:24:05 · 996 阅读 · 0 评论