如何获取更多的免费服务器

2024/4/1
articleCard.readMore

Kubernetes 调度器队列 - 设计与实现

2024/1/23
articleCard.readMore

Kubernetes 调度器 - 核心流程

2024/1/20
articleCard.readMore

Kubernetes Networking Model & CNI

2024/1/12
articleCard.readMore

Kubernetes 控制器管理总结

2024/1/7
articleCard.readMore

Kubernetes CronJob 设计与实现

2024/1/3
articleCard.readMore

Kubernetes Job 设计与实现

2024/1/2
articleCard.readMore

Kubernetes HPA 设计与实现

2023/12/31
articleCard.readMore

Kubernetes Deployment 滚动更新实现原理

2023/12/28
articleCard.readMore

Kubernetes GC 设计与实现

2023/12/25
articleCard.readMore

Kubernetes Pod 驱逐 - 设计与实现

2023/12/21
articleCard.readMore

Kubernetes Daemonset 设计与实现

2023/12/18
articleCard.readMore

Kubernetes ReplicaSet 设计与实现

2023/12/15
articleCard.readMore

Kubernetes EndPoint 设计与实现

2023/12/8
articleCard.readMore

Kubernetes Informer 设计与实现

2023/11/30
articleCard.readMore

降本增效之应用优化 (三) 日志存储与检索

2023/11/27
articleCard.readMore

Kubernetes Pod 设计与实现 - 创建流程

2023/11/23
articleCard.readMore

Kubernetes 探针设计与实现

2023/11/20
articleCard.readMore

Unix 编程艺术名句摘录

2023/11/11
articleCard.readMore

Kubernetes - CRI 概述

2023/11/7
articleCard.readMore

Golang 编译速度为什么这么快?

2023/10/28
articleCard.readMore

Kubernetes Pod 设计与实现 - Pause 容器

2023/10/26
articleCard.readMore

Kubernetes - kube-proxy 代理模式工程优化

2023/10/23
articleCard.readMore

Kubernetes 应用最佳实践 - 优雅关闭长连接

2023/10/20
articleCard.readMore

Kubernetes Service 类型和会话亲和性

2023/10/16
articleCard.readMore

Kubernetes 为什么需要 Ingress

2023/10/13
articleCard.readMore

Kubernetes 架构 - 控制平面和数据平面

2023/10/12
articleCard.readMore

降本增效之应用优化 (二) 大报表

2023/9/21
articleCard.readMore

Go 语言如何获取 CPU 利用率

2023/9/18
articleCard.readMore

降本增效之应用优化 (一) Redis

2023/9/7
articleCard.readMore

业务规则引擎演变过程简述

2023/8/7
articleCard.readMore

微服务中的熔断算法

熔断机制是微服务调用链路中的的自我保护机制,当链路中某个服务响应时间过长甚至不可用时,会进行服务熔断,快速返回错误响应,停止级联故障,避免雪崩效应。

2023/7/24
articleCard.readMore

漏桶算法和令牌桶算法

漏桶算法和令牌桶算法是接口限流设计中常用的两种算法,本文通过 Go 语言中两个常用的开源组件,研究下两种算法的区别和具体代码实现。

2023/7/20
articleCard.readMore

jsonparser 为什么比标准库的 encoding/json 快 10 倍 ?

2023/7/17
articleCard.readMore

zap 高性能设计与实现

zap 是 Uber 开源的 Go 高性能日志库,性能远超于标准库和其他开源日志库。zap 使用简单,支持多种格式结构化日志、可以设置不同的日志级别,并且能够记录堆栈信息和 …

2023/7/16
articleCard.readMore

HTTP Router 算法演进

2023/7/13
articleCard.readMore

布谷鸟过滤器

布谷鸟过滤器是一种节省内存空间的概率数据结构,基于布谷鸟哈希算法实现的过滤器,和布隆过滤器一样,用于检测指定元素是否存在于某个集合中,返回结果语义是“元素一定不存在”或“有较大可能存在”。

2023/7/10
articleCard.readMore

fastcache 高性能设计与实现

2023/7/6
articleCard.readMore

Web 常见的三个安全问题

2023/7/5
articleCard.readMore

ants Code Reading

ants 是一个高性能且低损耗的 goroutine 池,组件内部会创建一个固定容量的 goroutine 池,并且管理和回收池中的 goroutine,主要应用场景是允许开发者限制并发程序中的 goroutine 数量,更多的特性 …

2023/6/30
articleCard.readMore

布谷鸟过滤器

布谷鸟过滤器是一种节省内存空间的概率数据结构,基于布谷鸟哈希算法实现的过滤器,和布隆过滤器一样,用于检测指定元素是否存在于某个集合中,返回 “元素一定不存在” 或 “有较大可能存在” 两种语义之一。

2023/6/30
articleCard.readMore

Go 线程安全 map 方案选型

Go 语言标准库中的 map 数据类型并不是线程安全的,多个 goroutine 可以并发读取同一个 map, 但是不能并发写入同一个 map, 否则会引发 panic, 为了解决这个问题 …

2023/6/25
articleCard.readMore

布隆过滤器

布隆过滤器(英语:Bloom Filter)是 1970 年由布隆提出的,是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。

2023/6/20
articleCard.readMore

死锁、活锁、饥饿、自旋锁

2023/6/19
articleCard.readMore

sync.Pool Code Reading

sync.Pool 是 Go 语言标准库中的一个并发安全的对象池,可以用来缓存那些需要重复创建和销毁的对象,从而避免频繁地进行内存分配和回收,降低内存和 GC 压力。本文通过底层源代码来分析 sync.Pool 高性能背后的设计与实现…

2023/6/15
articleCard.readMore

Go 内存管理概述

Go 语言的底层内存分配实现方案参考了 TCMalloc, 通过多级缓存机制、 内存对象大小分类来完成不同的分配策略以提升性能。

2023/6/13
articleCard.readMore

Go netpoll Code Reading

2023/6/12
articleCard.readMore

goroutine 泄漏与检测

Go 语言内置 GC,因此一般不会内存泄漏,但是 goroutine 可能会发生泄漏,泄漏的 goroutine 引用的内存同样无法被 GC 正常回收 …

2023/6/11
articleCard.readMore

time/Timer Code Reading

Go 语言中的计时器常用于定期执行某个操作或者在指定时间内执行某个操作,例如实现超时、周期性执行任务等场景,主要通过标准库的 time 包中的相关方法来实现,如 time.After(), time.Tick() 等。

2023/6/10
articleCard.readMore

GMP Scheduler Code Reading

Go 语言中的 GMP 是指用于管理 goroutine 的调度器,其内部使用了一种称为 M:N 的调度模型,其中 M 个用户级 goroutine 被分配到 N 个内核级线程上执行。调度器负责将 goroutine 分配给处理器 P, 并在需要时将 goroutine 从一个处理器 P 转移到另一个处理器 P …

2023/6/9
articleCard.readMore

Go channel 的 15 条规则和底层实现

Go 语言中 channel 发送、接收、关闭规则都有哪些?底层又是如何实现的呢?

2023/6/8
articleCard.readMore

为什么 Linux “一切皆文件”

在 Linux 中,包括硬件设备、目录、文本文件、二进制文件、输入输出流、套接字、管道、TTY 终端等各种资源都被抽象成文件,并且它们之间没有太大的区别。每个文件都有一个唯一的路径进行标识,因此可以通过文件系统中的路径来访问和管理这些资源 …

2023/5/19
articleCard.readMore

context.Context Code Reading

context.Context 类型表示上下文信息,作用是在 API 通信、进程通信、函数调用之间传递超时时间、取消信号和其他数据值。

2023/5/12
articleCard.readMore

runtime/HACKING.md

最近阅读标准库源代码时,偶然间发现 runtime 包下面的一个 markdown 文件,大致读了一下,感觉对理解 GMP 调度的基础概念和标准库中的各类注解指令非常有帮助,决定翻译出来,正好提高一下自己的英文水平。

2023/5/11
articleCard.readMore

Goland 最佳实践

2023/5/10
articleCard.readMore

互联网开发与金庸武学

2023/5/9
articleCard.readMore

为什么 Redis 6.0 引入多线程模型?

2023/5/3
articleCard.readMore

Kubernetes 应用最佳实践 - 金丝雀发布

2023/5/1
articleCard.readMore

容器中如何正确配置 GOMAXPROCS ?

2023/4/30
articleCard.readMore

singleflight Code Reading

singleflight 是将 多个请求的返回结果相同 + 计算过程次数限制 这一过程抽象出来,将所有细节隐藏在内部实现中,只提供 GET 和 DELETE 两种类型 API, 简化了调用方法。一个比较常见的场景是使用 singleflight 来限制同一个缓存 key 的重复请求,避免发生 缓存击穿 时,避免请求全部落到数据库,减少性能影响和宕机风险。

2023/4/28
articleCard.readMore

sync.Map Code Reading

从内部底层实现来说,sync.Map 通过 entry 类型将 map 的变化和元素的变化进行隔离的同时, 还保证了底层数据的复用 (read map 和 dirty map 指向同一个 entry), read, dirty 2 个字段加原子操作的紧密配合,非常简洁优雅地实现了 sync.Map 根据读写比例动态变化和转换内部字段数据结构, 尤其是 read 和 dirty 两个字段保持…

2023/4/27
articleCard.readMore

sync.Cond Code Reading

sync.Cond 不是一个常用的同步机制,在条件变量长时间无法满足时,sync.Cond 能够让出处理器的使用权,和单纯使用 for {} 进行无限等待相比,可以提高 CPU 的利用率。

2023/4/26
articleCard.readMore

sync.WaitGroup Code Reading

2023/4/25
articleCard.readMore

sync.RWMutex Code Reading

如果一个 goroutine 持有了读锁进行操作,此时其他的 goroutine 可能尝试获取写锁 (参与竞争),那么在读锁被释放之前,不会有其他 goroutine 获取到读锁 (避免竞争写锁的 goroutine 被饿死), 一个 goroutine 在阻塞获取写锁的过程中,会阻止其他 goroutine 获得读锁。

2023/4/24
articleCard.readMore

sync.Mutex Code Reading

互斥锁可以在两种模式下操作:正常模式和饥饿模式,正常模式的性能要好很多,因为 goroutine 可以连续多次获得互斥锁,即使存在阻塞的 goroutine, 与此同时,饥饿模式是防止尾部的 goroutine 被饿死的重要机制 (高尾延时)。

2023/4/23
articleCard.readMore

sync.Once Code Reading

sync.Once 可以保证某段程序在运行期间的只执行一次,典型的使用场景有初始化配置, 数据库连接等,那么它的内部是如何实现的呢?

2023/4/23
articleCard.readMore

Go 无锁编程

锁是一种常见的同步机制,用来解决多个线程同时访问共享资源导致的数据竞争问题。在高并发场景下,锁的使用可能会成为性能瓶颈,因为线程需要频繁地加锁和释放锁,这会增加上下文切换开销并降低程序的吞吐量。

2023/4/22
articleCard.readMore

sync/atomic Code Reading

sync/atomic 包提供了原子同步操作原语,整个操作过程无需加锁,也不会产生 goroutine 上下文切换。

2023/4/21
articleCard.readMore

goroutine 交替打印奇偶数

使用两个 goroutine 交替并且顺序地打印数字 1…10, 要求其中一个 goroutine 打印奇数,另一个 goroutine 打印偶数。

2023/4/20
articleCard.readMore

GODEBUG

GODEBUG 环境变量可以控制程序运行时的调度信息输出,方便开发者了解程序运行内部细节。

2023/4/19
articleCard.readMore

Go 并发模式

Go 语言常用的并发模式代码模板,已更新。

2023/4/18
articleCard.readMore

Go 汇编

为什么要学习汇编语言?更加接近硬件底层,性能极致优化,可以降维打击所有高级编程语言。

2023/4/17
articleCard.readMore

UUID 通用技术选型

分布式唯一 ID 是指在分布式系统中生成的全局唯一标识符。在分布式系统中,由于多个节点同时操作数据可能会导致数据冲突或者重复,因此需要为每个数据对象赋予一个唯一的标识符,以便在系统范围内进行区分。

2023/4/17
articleCard.readMore

Kubernetes 应用最佳实践 - 水平自动伸缩

2023/4/14
articleCard.readMore

Go 高性能 Tips

阅读 Go 标准库和开源框架代码时,经常会发现这些 Tips 的踪迹。

2023/4/10
articleCard.readMore

fasthttp 为什么比标准库 net/http 快 10 倍 ?

2023/4/7
articleCard.readMore

技术文章配图指南

为什么技术文章需要配图?一图胜千言。

2023/4/4
articleCard.readMore

ChatGPT 初体验

概述 ChatGPT 从 2 月份热度一直持续到现在,并且在接下来的一段时间内,热度还会持续下去。笔者从 3 月初开始慢慢接触,从最初的在 搜索引擎 和 ChatGPT 之间来回切换并验证, 到目前的简单搜索场景 80% 的时间都是直接用 ChatGPT 的,本文总结下这一个月的时间,笔者用到的最多的 4 个功能。

2023/4/3
articleCard.readMore

Docker 网络原理概览

Docker 原生网络是基于 Linux 的 网络命名空间(net namespace) 和 虚拟网络设备(veth pair)实现的。当 Docker 进程启动时,会在宿主机上创建一个名称为 docker0 的 虚拟网桥,在该宿主机上启动的 Docker 容器会连接到这个虚拟网桥上 …

2023/4/3
articleCard.readMore

iptables 的五表五链

iptables 是一个配置 Linux 内核防火墙的命令行工具,它基于内核的包过滤框架(packet filtering framework) netfilter, 主要用于管理数据包过滤和 NAT 规则。

2023/4/3
articleCard.readMore

Kubernetes 应用最佳实践 - 亲和性和污点容忍度

2023/3/31
articleCard.readMore

Go 的反射与三大定律

1.反射可以通过 interface{} 得到反射对象; 2.反射可以通过反射对象得到 interface{}; 3.修改反射对象的前提是值必须可以被修改; 反射三大定律背后的实现原理是什么?

2023/3/30
articleCard.readMore

Docker 官方提供的最佳实践

2023/3/29
articleCard.readMore

Go 语言内置的设计模式

和传统的 GOF, Java, C# 教科书式的设计模式不同,Go 语言设计从一开始就力求简洁,已经有其他编程语言基础的读者在学习和使用 Go 语言时,万万不可按图索骥、生搬硬套,简单的事情复杂化。

2023/3/22
articleCard.readMore

HTTP1 到 HTTP3 的工程优化

2023/3/18
articleCard.readMore

Kubernetes 应用最佳实践 - Sidecar 模式

2023/3/16
articleCard.readMore

Kubernetes 应用最佳实践 - init 容器和钩子函数

2023/3/15
articleCard.readMore

为什么 recover 必须在 defer 中调用?

2023/3/13
articleCard.readMore

为什么 defer 的执行顺序和注册顺序不同?

2023/3/12
articleCard.readMore

Go map 设计与实现

本文从源代码的角度分析 Go map 数据结构使用中的常见问题,例如: 为什么 map 未初始化写入时报错 ? map 是线程安全的吗 ? 为什么遍历 map 是无序的 ? …

2023/3/11
articleCard.readMore

Go 切片扩容底层实现

2023/3/10
articleCard.readMore

Go 语言中的零拷贝

2023/3/10
articleCard.readMore

Go Delve

Delve 用来调试 Go 语言开发的程序,该工具的目标是为 Go 语言提供一个简单、功能齐全的调试工具。

2023/3/9
articleCard.readMore

云原生和边缘计算简介

2023/3/8
articleCard.readMore

Kubernetes Pod 服务质量等级

2023/3/7
articleCard.readMore

Kubernetes 应用最佳实践 - 探针

2023/3/3
articleCard.readMore

Kubernetes 应用最佳实践 - 资源请求和限制

2023/3/1
articleCard.readMore

CDN 原理

CDN 的基本原理为反向代理,反向代理(Reverse Proxy)方式是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器, 并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个节点服务器 …

2023/2/28
articleCard.readMore

Kubernetes 应用最佳实践 - 开篇

2023/2/27
articleCard.readMore

缓存策略和模式

2023/2/25
articleCard.readMore

Go 内存模型

为什么要学习 Go 内存模型? 因为这是理解和掌握 Go 并发编程的基础,也是学习 Go 标准库底层源码实现的前提。

2023/2/24
articleCard.readMore

Kubernetes 核心概念

2023/2/24
articleCard.readMore

软件版本语义化

2023/2/24
articleCard.readMore

字节序概述

2023/2/20
articleCard.readMore

DNS 原理

2023/2/18
articleCard.readMore

Go pprof 从入门到精通

2023/2/16
articleCard.readMore

如何设计一个无状态应用

2023/2/16
articleCard.readMore

Go 1.20 发布了

前言 这几天所有的热度都集中到了 ChatGPT,不过我对这件事情没有什么兴趣,原本计划换换脑,看一下 Docker 基础相关技术,恰巧这时 兔兔大佬 发来了灵魂拷问 …

2023/2/11
articleCard.readMore

Docker 基础支撑技术概览

2023/2/7
articleCard.readMore

Go 逃逸分析

Go 语言的编译器使用逃逸分析决定哪些变量分配在栈上,哪些变量分配在堆上。

2023/2/3
articleCard.readMore

Go 数据竞态

数据竞态是并发系统编程中最常见和最难调试的错误类型之一。当两个 goroutine 同时访问同一个变量并且至少有一个是写入操作时,就会发生数据竞态。

2023/2/2
articleCard.readMore

异或运算的妙用

2023/2/1
articleCard.readMore

Go 如何实现 implements 功能

Go 语言中检测一个类型是否实现了某个接口,通常分为两类机制: 编译期间和运行期间。

2023/1/31
articleCard.readMore

Go 的面向对象编程

Go 语言如何实现封装、继承、多态等面向对象的特性?

2023/1/30
articleCard.readMore

为什么需要 VXLAN 网络

2023/1/12
articleCard.readMore

为什么需要 VLAN 网络

2023/1/5
articleCard.readMore

网络编程框架的作用和价值

2022/10/25
articleCard.readMore

如何实现可靠的 UDP ?

2022/10/15
articleCard.readMore

TCP 到底有什么性能问题?

2022/10/10
articleCard.readMore

计算机网络中的设计模式

2022/7/25
articleCard.readMore

动态规划简明教程 - 5

2022/6/25
articleCard.readMore

动态规划简明教程 - 4

2022/6/19
articleCard.readMore

动态规划简明教程 - 3

2022/6/15
articleCard.readMore

动态规划简明教程 - 2

2022/6/9
articleCard.readMore

动态规划简明教程 - 1

2022/6/5
articleCard.readMore

LeetCode 回溯 刷题模板

2022/5/30
articleCard.readMore

LeetCode Binary Search Tree 刷题模板

2022/5/25
articleCard.readMore

LeetCode 拓扑排序 刷题模板

2022/5/17
articleCard.readMore

LeetCode BFS 刷题模板

2022/5/11
articleCard.readMore

LeetCode DFS 刷题模板

2022/5/5
articleCard.readMore

LeetCode Binary Search 刷题模板

2022/4/25
articleCard.readMore

LeetCode Binary Tree 刷题模板

2022/4/18
articleCard.readMore

LeetCode Sliding Window 刷题模板

2022/4/10
articleCard.readMore

LeetCode 双指针 刷题模板

2022/3/22
articleCard.readMore

LeetCode Stack 刷题模板

2022/3/17
articleCard.readMore

LeetCode Hash 刷题模板

2022/3/15
articleCard.readMore

LeetCode Linked List 刷题模板

2022/3/10
articleCard.readMore

LeetCode 位运算刷题模板

2022/2/16
articleCard.readMore

LeetCode 刷题必懂位运算

2022/2/2
articleCard.readMore

I/O 多路复用模型

2022/1/23
articleCard.readMore

计算机网络到底难学在哪里?

2022/1/22
articleCard.readMore

I/O 模型的阻塞/非阻塞, 同步/异步

2022/1/9
articleCard.readMore

Effective TCP/IP Programming

2021/5/1
articleCard.readMore

Mac 边边角角

2020/11/11
articleCard.readMore

TDD 和敏捷开发

2020/11/11
articleCard.readMore

为什么应用层心跳检测是必要的

2020/10/17
articleCard.readMore

PHP 边边角角

2020/2/9
articleCard.readMore

Python 快速入门

2020/1/24
articleCard.readMore

工程师面试指北

2020/1/1
articleCard.readMore

Git 边边角角

2019/11/11
articleCard.readMore

MySQL 运维 SQL 备忘

2019/3/16
articleCard.readMore

TCP 100 万长连接的参数调优

2019/1/5
articleCard.readMore

TCP Fast Open

2019/1/5
articleCard.readMore

TCP 可靠传输实现原理 - 3.拥塞控制

2018/12/30
articleCard.readMore

TCP 可靠传输实现原理 - 2.滑动窗口 (流量控制)

2018/12/25
articleCard.readMore

TCP 可靠传输实现原理 - 1.确认和重传

2018/12/21
articleCard.readMore

为什么 TCP 粘包 是正常现象

2018/12/16
articleCard.readMore

为什么 TCP 需要 TIME_WAIT 状态

2018/12/11
articleCard.readMore

为什么 TCP 建立连接需要三次握手

2018/12/8
articleCard.readMore

Nginx 快速安装优化指南

2018/10/23
articleCard.readMore

磁盘结构和调度算法

2018/3/9
articleCard.readMore

HTTP 鲜为人知的细节

2018/2/16
articleCard.readMore

System Design Principles

2018/2/16
articleCard.readMore

网络基础: 内网穿透 是如何实现的 ?

2018/2/16
articleCard.readMore

网络基础: NAT 是如何工作的 ?

2018/2/10
articleCard.readMore

网络基础: 交换机和路由器的区别

2018/1/25
articleCard.readMore

硬件延迟级别

2018/1/16
articleCard.readMore

TCP VS UDP 区别

2017/12/12
articleCard.readMore

网络基础: IP 协议 (拾遗补缺)

2017/12/1
articleCard.readMore

网络基础: 网络层和路由器 (拾遗补缺)

2017/11/21
articleCard.readMore

网络基础: 什么是 DDoS ?

2017/10/30
articleCard.readMore

网络基础: ICMP 是如何工作的?

2017/9/30
articleCard.readMore

网络基础: ARP 是如何工作的?

2017/9/25
articleCard.readMore

网络基础: DHCP 是如何工作的?

2017/9/16
articleCard.readMore

网络基础: 公网/子网 地址是如何分类的?

2017/9/10
articleCard.readMore

网络基础: 交换机 (拾遗补缺)

2017/7/16
articleCard.readMore

网络基础: MTU 和 MSS

2017/2/1
articleCard.readMore

netstat 命令常用操作

2017/1/26
articleCard.readMore

ping 命令常用操作

2017/1/23
articleCard.readMore

ifconfig 命令

2017/1/22
articleCard.readMore

nc 命令常用操作

2017/1/18
articleCard.readMore

DNS 命令行工具

2017/1/15
articleCard.readMore

查看 IP 地址归属地

2017/1/11
articleCard.readMore

curl 命令常用操作

2017/1/10
articleCard.readMore

网络基础: 杂七杂八

2017/1/2
articleCard.readMore

Linux 快捷键

2016/2/9
articleCard.readMore