7days-golang icon indicating copy to clipboard operation
7days-golang copied to clipboard

7 days golang programs from scratch (web framework Gee, distributed cache GeeCache, object relational mapping ORM framework GeeORM, rpc framework GeeRPC etc) 7天用Go动手写/从零实现系列

Results 52 7days-golang issues
Sort by recently updated
recently updated
newest added

```go func (server *Server) handleRequest(cc codec.Codec, req *request, sendMutex *sync.Mutex, wg *sync.WaitGroup, timeout time.Duration) { defer wg.Done() finished := make(chan struct{}) var timeoutFlag int32 go func() { defer func() {...

session INSERT clause should be invoke only once, and all insert record should be same type

```go func TestGetRoute(t *testing.T) { r := newRouter() r.addRoute("GET", "/", nil) r.addRoute("GET", "/hello/:id", nil) r.addRoute("GET", "/hello/b/c", nil) n, ps := r.getRoute("GET", "/hello/21/c") fmt.Printf("n: %v\n", n) // n: node{pattern=/hello/b/c, part=c, isWild=false}...

String类型所占用的内存大小应该用SIzeof来获取,不应该用Len()

源码single-flight并不能保证fn只执行一次,可以用我提交的单测去跑一下,发现fn的执行次数并不是一次(而且每次运行次数还不确定),达不到防止缓存击穿的效果。 我的实现思路:map延迟一秒删除,第一个请求更新map,map里面的key全部一秒之后删除,一秒之内的所有请求都从map获取。一秒之后删除map里面一秒钟之前的数据,请求来了再重新更新map,重复如上 步骤。 注:删除数据不一定得一秒钟之后,可以一百毫秒,更具业务可以调整

geerpc第三天服务注册中,有newArgv和newReplyv,有个疑问:为什么newReplyv中需要进一步判断是否为slice或者map,而newArgv中不需要呢?难道是因为Argv一定就不会是slice或者map吗?

讨教一下,请问在GeeRPC的gob.go中,NewGodeCodec方法里为什么只给写加缓冲区而不给读加缓冲区呢?加一个读缓冲区bufio.NewReader(conn)传给gob.NewDecoder()效率不是会更高吗? ![gob](https://user-images.githubusercontent.com/93911762/212552054-f1167733-67bc-4748-82bf-b180d92af77d.png)

line 14 `t.Fatal("v2 prefix should be /v1/v2")` should be `t.Fatal("v3 prefix should be /v1/v2/v3")`