首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
luozhiyun
掘友等级
后端 | 公众号:luozhiyun很酷
|
腾讯
公众号:luozhiyun很酷
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
赞
19
文章 19
沸点 0
赞
19
返回
|
搜索文章
文章
热门
最新
从栈上理解 Go语言函数调用
没有看过我的文章的同学我这里说明一下,这篇文章也是我的深入 Go 语言的系列文章,里面会涉及栈以及堆的内存分配,需要在读之前了解过一些概念,如栈是如何增长的,堆内存分配是通过哪个函数进行分配的等。
一文教你搞懂 Go 中栈操作
多任务操作系统中的每个进程都在自己的内存沙盒中运行。在32位模式下,它总是4GB内存地址空间,内存分配是分配虚拟内存给进程,当进程真正访问某一虚拟内存地址时,操作系统通过触发缺页中断,在物理内存上分配一段相应的空间再与之建立映射关系,这样进程访问的虚拟内存地址,会被自动转换变成…
如何编译调试Go runtime源码
有朋友问我阅读源码,该怎么调试?这次我们简单看看如何编译调试 Go 的 runtime 源码,感兴趣的朋友可以自己手动操作一下。 我们在修改源码的时候,可以借助 GODEBUG 变量来打印调试信息。 schedtrace=X 表示运行时每 X 毫秒打印一行调度器的摘要信息到标准…
从源码剖析Go语言基于信号抢占式调度
这一次来讲讲基于信号式抢占式调度。 在 Go 的 1.14 版本之前抢占试调度都是基于协作的,需要自己主动的让出执行,但是这样是无法处理一些无法被抢占的边缘情况。例如:for 循环或者垃圾回收长时间占用线程,这些问题中的一部分直到 1.14 才被基于信号的抢占式调度解决。 这个…
Go语言GC实现原理及源码分析
三色标记法将对象的颜色分为了黑、灰、白,三种颜色。 结束后,剩下的没有被标记的白色对象即为 GC Roots 不可达,可以进行回收。 下面我们来说说三色标记法会存在的问题。 假设 E 已经被标记过了(变成灰色了),此时 D 和 E 断开了引用,按理来说对象 E/F/G 应该被回…
Go中定时器实现原理及源码解析
我在春节期间写了一篇文章有关时间轮的:https://www.luozhiyun.com/archives/444。后来有同学建议我去看看 1.14版本之后的 timer 优化。然后我就自己就时间轮和 timer 也做了个 benchmark: 从上面可以直接看出,在添加了一千…
Go语言实现布谷鸟过滤器
在我们工作中,如果遇到如网页 URL 去重、垃圾邮件识别、大集合中重复元素的判断一般想到的是将集合中所有元素保存起来,然后通过比较确定。如果通过性能最好的Hash表来进行判断,那么随着集合中元素的增加,我们需要的存储空间也会呈现线性增长,最终达到瓶颈。 所以很多时候会选择使用布…
详解Go语言调度循环源码实现
提到"调度",我们首先想到的就是操作系统对进程、线程的调度。操作系统调度器会将系统中的多个线程按照一定算法调度到物理CPU上去运行。虽然线程比较轻量,但是在调度时也有比较大的额外开销。每个线程会都占用 1M 以上的内存空间,线程切换和恢复寄存器中的内容也需要向系统申请资源。 G…
Go语言中时间轮的实现
最近在工作中有一个需求,简单来说就是在短时间内会创建上百万个定时任务,创建的时候会将对应的金额相加,防止超售,需要过半个小时再去核对数据,如果数据对不上就需要将加上的金额再减回去。 这个需求如果用Go内置的Timer来做的话性能比较低下,因为Timer是使用最小堆来实现的,创建…
详解Go语言I/O多路复用netpoller模型
可以从 Go 源码目录结构和对应代码文件了解 Go 在不同平台下的网络 I/O 模式的实现。比如,在 Linux 系统下基于 epoll,freeBSD 系统下基于 kqueue,以及 Windows 系统下基于 iocp。 因为我们的代码都是部署在Linux上的,所以本文以e…
下一页
个人成就
文章被点赞
90
文章被阅读
33,806
掘力值
1,352
关注了
7
关注者
47
收藏集
3
关注标签
19
加入于
2016-08-25