首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
yaop_
掘友等级
后端开发工程师
|
字节跳动
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
7
文章 7
沸点 0
赞
7
返回
|
搜索文章
最新
热门
Golang context包源码分析
context的目的是实现主协程对子协程的控制,作用包括取消执行、设置超时时间、携带键值对等。 下面是一个使用context防止协程泄露的例子。不使用context,创建了goroutine之后没有办法取消,在程序退出之前,会一直打印"in go loop"。 为了实现对子协程…
Golang调度器的GMP模型
一般来说,并发对应在单个处理器,通过串行的时间片分配(time slice)来执行任务。而并发,对应多个处理器,来执行不同的任务。 Golang中,执行多个任务时,Goroutine会创建不同的线程,也会将任务单元分配给其他线程来执行,这像是并发和并行的结合,能够最大化执行效率…
获取Goroutine的ID
在Golang的FAQ中,解释了为什么goroutine是匿名的,没有暴露出ID等状态信息,主要是因为如果一个特定的goroutine有了名字(ID),开发者就会忽略使用多个goroutine来处理信息的可能,从而限制库的使用。 但是,有时候开发者也需要获取goroutine来…
缓存(cache)介绍
缓存(cache)利用是空间局部性(Locality of reference):最近被访问的元素很有可能在将来也被访问,从而将结果缓存起来,避免更加耗时的查询(例如,数据库的查询操作,网页图片,网页格式的加载等)。 本文主要讲对数据库查询的缓存。 缓存里面的每条记录都有一个存…
Golang的逃逸分析
逃逸分析(Escape Analysis)指的是将变量的内存分配在合适的地方(堆或者栈)。 如果内存分配在堆(heap)上,函数的执行会交给GC(Garbage Collection)来处理。 此外,Golang与闭包密切相关。 Golang的逃逸分析的基本原则是:如果函数返回…
Golang的修饰器模式
装饰器(decorator)是一个这样的函数:它的参数是具体类型的函数,并且返回值也是和参数相同类型的函数。 ToUpper和ToMd5都接受func(string) string作为参数,并且返回和参数相同的类型func(string) string。 net/http的ht…
Golang channel 源码分析
Golang中,在接受和发送数据的同时,channel决定一个Goroutine是执行还是阻塞。关于Golang的调度器,可以看这里。 Golang中,channel结构体是用来进行在Goroutine中进行信息传递的结构体。 当使用make(chan int,8)时,chan…
Golang的GC性能优化技巧
当slice的容量小于1024时,容量是按照2倍大小增长的。当容量大于1024,增长的容量是原来的1.25倍。看下面的离例子: 函数appendOne没有指定初始容量大小,appendMany指定了初始的容量大小。进行一下benchmark测试: 可以看到,AppendMany…
一致性哈希算法
分布式环境中,需要进行分布式哈希来进行负载均衡,减少忙碌服务器的负载。例如,对一个键(key)做了哈希后,需要确定它保存在哪个服务器上面。一致性散列(consistent hash)函数的特点是,当函数范围(例如,服务器的数量)变化,它变化的最少。 一个对一致性哈希的典型应用是…
布隆过滤器(Bloom Filter)原理及Golang实现
布隆过滤器(Bloom Filter)是一个基于hash的概率性的数据结构,它实际上是一个很长的二进制向量,可以检查一个元素可能存在集合中,和一定不存在集合中。它的优点是空间效率高,但是有一定false positive(元素不在集合中,但是布隆过滤器显示在集合中)。 布隆过滤…
下一页
个人成就
文章被点赞
63
文章被阅读
52,818
掘力值
1,019
关注了
6
关注者
46
收藏集
0
关注标签
7
加入于
2019-12-25