240 发简信
IP属地:广东
  • Kratos认证和鉴权

    基于jwt(认证)和casbin(鉴权)。生成jwt部分参考jwt的介绍[https://www.cnblogs.com/zly-go/p/15532783.html]以及直...

  • 120
    grpc简单编码和分帧

    本文介绍protobuf种对消息的编码和分帧手段,主要参考:这篇文章[https://zhuanlan.zhihu.com/p/645555627]gRPC与云原生应用开发 ...

  • 120
    系统设计面试中文翻译

    System Design Interview 先建立框架再逐步细化的方式翻译 从零到百万用户量 设计一个百万级用户的系统是有挑战的,并且这是个需要持续的精炼和无尽的改善的过...

  • 图形推理

    参考: https://zhuanlan.zhihu.com/p/38034590[https://zhuanlan.zhihu.com/p/38034590]平移 旋转 翻...

  • netpoller

    关于epoll/io多路复用的解析是经典八股文,网上很多讲解,这里不做赘述。 本文基于go1.17,是对go语言网络模型netpoller的学习笔记,只涉及unix下的epo...

  • 跳表实现

    手写跳表,有点丑陋,亟待优化,不过是一遍过。先纪念下

  • defer浅析

    本文是对go语言defer实现原理的解析,基于go1.17。 简单的demo代码,myFunc中进行一次defer调用 使用GOOS=linux go build -gcfl...

  • 120
    go启动流程

    使用dlv找到程序入口 跳转到这 复制下启动参数 大部分初始化操作都在rt0_go函数中 ...省略一些看不懂的代码 启动的代码整体参考下图 全部展开代码太多了逻辑很复杂, ...

  • 练习题合集

    要求实现一个 map(1) 面向高并发;(2) 只存在插入和查询操作 o(1);(3)查询时,若 key 存在,直接返回 val; 若 key 不存在,阻塞直到 key va...

  • sync.WaitGroup

    整体来说比较正常,就是保存三个状态 计数值 // add到了多少 waiter数量 // 有多少调用了Wait方法 seme // 用来阻塞的信号量,挂载等待的协程只是为...

  • 120
    Sync.Once

    一般来说原子的改变一个标志位就可以了。比如使用cas操作原子改变,但是这里如果f的执行时间比较长则可能会出现问题 源码中特意说明了不能使用这种方式,原因是在并发情况下竞争失败...

  • RWMutex

    读多写少的场景下,大量读锁也需要进行锁竞争,比较浪费。读写锁的实现是为了解决读者写者问题go的实现方式是写优先,可能存在读(锁)协程饥饿问题和Mutex一样 ,1 不能重复...