
golang
文章平均质量分 79
golang学习
搬砖使我快乐!
热爱技术,热爱生活.
展开
-
[golang]defer 别再记各种case了
golang defer简单理解,别再记各种case了原创 2022-08-04 15:37:40 · 274 阅读 · 1 评论 -
[golang] 零值和nil
golang 零值 nil原创 2022-08-03 16:51:21 · 663 阅读 · 0 评论 -
[golang]channel源码
golang channel源码原创 2022-08-03 15:45:32 · 369 阅读 · 0 评论 -
[golang]runtime!!!!
本文转自:https://zhuanlan.zhihu.com/p/95056679万字长文深入浅出 Golang Runtime腾讯技术工程已认证的官方帐号已关注718 人赞同了该文章介绍本文主要内容如下:Golang Runtime 是个什么? Golang Runtime 的发展历程, 每个版本的改进 Go 调度: 协程结构体, 上下文切换, 调度队列, 大致调度流程, 同步执行流又不阻塞线程的网络实现等 Go 内存: 内存结构, mspan 结构, 全.转载 2021-01-31 15:07:53 · 507 阅读 · 0 评论 -
[golang]调度原理
协程的调度分为抢占式和调度式抢占式就是说.如果一个协程长期占用着P,那别的协程还过不过.这时候就会抢占P.runtime2.go原创 2021-01-13 10:03:42 · 763 阅读 · 0 评论 -
[golang]内存管理(涉及tcmalloc,gc等)
1.操作系统存储模型不赘述了,大学都学过.cpu寄存器-->L1/L2/L3缓存-->内存-->磁盘物理内存和虚拟内存.我们程序申请的内存都是虚拟内存,虚拟内存和物理内存通过页表进行关联. 而实际内存的分配也不是你申请了虚拟内存就会分配物理内存的,而是真正要用的时候,发送缺页异常,才会分配.虚拟内存的布局用户空间和内核空间内核空间:每个进程都有内核空间,但是他们映射的同一个物理段.内核空间虽然用户进程也知道,但是用不了,因为那是老大的空间,小弟不能乱用用原创 2021-01-13 09:06:30 · 778 阅读 · 0 评论 -
[golang]Writing a Memory Allocator
转载https://zhuanlan.zhihu.com/p/51056407本篇文章讲述了如何基于C实现一个简单的内存分配器。这是一篇入门级别的文章,不会涉及过深的内存分配算法及其相关实现。我们的目的是实现一个可以正常工作的内存分配器,但是它的性能和内存的利用率都不是最优的。我们将会实现malloc(),calloc(),realoc(),free()四个函数。翻译自:Memory Allocators 101 - Write a simple memory allocator1...转载 2021-01-12 12:44:13 · 303 阅读 · 0 评论 -
[golang]sync.Pool源码(PMG,false sharing,victim cache,环形链表)
1.为什么要有sync.Pool创建对象需要申请内存,例如你写了一个网关服务,每个请求过来都创建一个request对象.内存就会越申请越多,当不够的时候,还要gc用来释放不用的对象.因此,pool就是用来解决频繁申请内存和释放内存(gc)的问题. 注意gc的时候会stw,因此我们要写优雅的程序,减少gc的发生2.pool流程pool对外只暴露了两个方法以及一个参数设置Newget:获取池子中的对象,如果池子为空,就调用Newput:把使用过的对象归还池子.new:创.原创 2021-01-08 11:27:53 · 522 阅读 · 0 评论 -
[golang]fasthttp源码
一.核心逻辑func (s *Server) ListenAndServe(addr string) error { //1.监听端口 ln, err := net.Listen("tcp4", addr) if tcpln, ok := ln.(*net.TCPListener); ok { return s.Serve(tcpKeepaliveListener{ TCPListener: tcpln, keepalive: s.TCPKeepa.原创 2021-01-07 01:11:52 · 542 阅读 · 0 评论