240 发简信
IP属地:北京
  • 120
    Golang Gcache中的LRU和LFU

    源码:https://github.com/bluele/gcache[https://github.com/bluele/gcache] 多种淘汰策略,LRU、LFU、si...

  • Golang cache2go

    源码学习 https://github.com/muesli/cache2go[https://github.com/muesli/cache2go] 一、简介 cache2...

  • Golang Context 实现

    一、应用场景 链路跟踪,业务需要传递上下游元信息; 主协程和子协程同步信号,减少计算资源的浪费。例如rpc调用时的超时控制。 二、使用示例 RPC超时控制 Context传递...

  • 120
    Golang Channel实现

    Channel是Golang实现CSP的核心。 基于channel通信主要涉及buf(数据)和sendq、recvq(维护阻塞的G),lock保证并发访问安全;本质是一个基于...

  • Golang Singleflight实现

    golang/groupcache[https://github.com/golang/groupcache] 用处 保护下游,针对下游的同一批请求,只有一个负责去请求,其他...

  • 120
    TCP/IP协议栈 - 2020

    学习资料 理解 互联网协议入门(一)[http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_...

  • 120
    理解Linux堆内存管理

    一、堆的基础知识 1.1 堆的内存布局 1.2 堆和栈的区别 栈主要用来维护函数调用的上下文,由高向低增长; 堆用来容纳程序动态分配的内存区域,使用malloc或new分配的...

  • 程序员的自我修养

    程序员的自我修养:编译、链接、装载 问题 编译/链接的过程做了什么 目标/可执行文件的内容是什么 装载的过程做了什么 进程空间的内容是什么 笔记 程序员自我修养1:构建过程[...

  • 120
    程序员自我修养4:装载过程

    可执行文件只有装载到内存以后才能被CPU执行。 一、装载的方式 页映射:将内存和磁盘中的数据和指令按照页为单位划分,以后装载和操作的单位就是页。4kb 二、程序的装载运行步骤...

  • 120
    程序员自我修养3:目标文件

    一、相同的文件格式:ELF 目标文件:代码编译后未链接的文件(Linux的.o) 可执行文件 静态链接库(Linux的.a) 动态链接库(Linux的.so) 二、ELF文件...

  • 120
    程序员自我修养1:GCC构建过程

    示例代码:hello.c 1. 预处理 gcc –E hello.c –o hello.i 预处理过程主要处理源代码中以#开始的预编译指令,将要包含(include)的文件插...

  • 120
    程序员自我修养2:编译过程

    编译过程分为6步:扫描(词法分析)、语法分析、语义分析、源代码优化、代码生成、目标代码优化。 示例代码:array[index] = (index + 4) * (2 + 6...

  • 120
    理解函数的调用过程

    一、函数的范围 ebp寄存器指向函数的栈底,esp寄存器指向函数的栈顶,共同划分了函数的活动范围。减小esp的值相当于在栈上开辟空间,而增大esp的值相当于在栈上回收空间; ...

  • 120
    Golang Map实现原理

    目录 一、map的操作 声明 map的零值为 nil 。nil 映射既没有键,也不能添加键。var m map[string]int 初始化//运行时初始化m = make(...

  • JVM读书笔记

    深入理解JVM(1) : Java内存区域划分 深入理解JVM(2) : Java堆中对象创建、布局、访问全过程 深入理解JVM(3) : 虚拟机类加载机制 深入理解JVM(...

  • 链表问题总结 (下)

    【声明】欢迎转载,但请保留文章原始出处→_→文章来源:http://www.jianshu.com/p/08d085b34b2c联系方式:zmhg871@gmail.com ...

个人介绍
时光未老,理想仍在。