240 发简信
IP属地:台北
  • 为什么Rust生命周期这么难?因为你一直在用语法糖

    前言 很多rust教程里,把生命周期标记'a视为rust中最难理解的一部分,尤其某些函数、结构体,必须声明生命周期标记,否则会报错,这个情况尤其...

  • 从自引用类型谈到Pin以及Tokio异步

    一、自引用类型 很多人知道自引用类型,那么这究竟是什么概念呢,其实就是以下的这个结构体: 在这里我们定义了一个SelfReferential的结...

  • mac 和 win 上给 ssh key 配置钥匙串

    以 git 为例,最安全的生成SSH命令大概就是: 但很多人偷懒,不设置 passphrase ,但其实这样很不安全。这里必须输入一个强 pas...

    3.5 30 0 2
  • 结合自定义 Tag 去理解 Golang 的反射

    提到反射,不得不提到接口interface,这是一对双生子。简单来说:接口是反射的基石,而反射是接口在运行时的“透视镜”。 一、interfac...

  • 结合 conn.Read 的 epoll 机制去理解 Golang 的GPM模型

    如果你已经理解了 epoll 是什么,也看懂了 Golang 对它的封装,那我们现在就来回答一个更深的问题: 一个 goroutine 卡在 c...

  • Resize,w 360,h 240
    epoll 以及从 conn.Read 出发探讨 Golang 对 epoll 的封装

    一、epoll是什么? epoll是 Linux 内核中一种高性能的 I/O 多路复用机制。 如果你正在开发一个需要同时处理成千上万个客户端连接...

  • sync.Once 在高并发环境下依然保持高效的原因

    在 Go 的并发编程中,sync.Once 是一个非常经典的同步原语。它的作用很简单:保证某个函数在并发环境中只执行一次。无论有多少个 goro...

  • Map 无序的底层原因

    本质原因是 Map 底层是 Hash 表。 当你插入键值对时: 对 key 做 hash 运算 根据 hash 结果决定存到哪个 bucket ...

  • Golang 的 defer 底层实现

    一、数据结构 defer的核心数据结构是: 可以看到这里有个链表指针,这就是defer后进先出 (LIFO)的原因,链表是用头插法构建的,后写的...