Go http Server 框架的简单实现 在Go想使用 http server,最简单的方法是使用 http/net 1234567err := http.ListenAndServe(":8080", nil)if err != nil { panic(err.Error())}http.HandleFunc("/hello", func(writer http 2022-11-16
手写一个Go Json库 - 解析篇 大概是2018年的时候看到 Milo Yip 大神的从零开始的 JSON 库教程,便开始着手跟着教程开始学习,不过可能拖延症爆发,这件事就一直延误下来了。 我写的解析器十分简单,读取第一个非空白的字符->判断类型->验证类型是否正确->设置值->判断结束,是一个递归下降解析器(recursive descent parser) 首先解析器的定义接口 123456789101 2022-10-10
Go 常用的几种 Limiter 三种常用的限流器 滑动窗口 漏桶限流 令牌池 滑动窗口滑动窗口算法指有一个固定大小的时间窗口T ,设置在这个T窗口下只能通过M个请求,并且这个窗口是不断向前移动 计算公式 remaining = M - (resetInSec / T * prevHit + currHit) resetInSec = exp - ts - time until end of current window. 2022-09-26
Go 的 CyclicBarrier 模式 最近在工作中遇到了需要控制多个Goroutine并发的问题,大致可以描述为,有一组需要计算的 Work,每个work都会得出一个结果,最后汇总每个work的结果,再进行下一轮计算。 这里结算结果是严格要求一组一组的计算,这里很像是使用WaitGroup 的场景,但是因为Add和Wait只能在一个Goroutine里面,所以最后实现的逻辑效率并不高。 大致的实现如下: 123456789101112 2022-09-23