From 2063d35fb0f78729820693f4b289f37065a3bd7d Mon Sep 17 00:00:00 2001 From: zhangyanfei Date: Sun, 4 Apr 2021 10:57:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=91=E5=B8=83=E7=94=B5=E5=AD=90?= =?UTF-8?q?=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++++-- imgs/official_accounts.jpg | Bin 0 -> 27903 bytes 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 imgs/official_accounts.jpg diff --git a/README.md b/README.md index 360a335..b8c1e80 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,8 @@ - [漫画 | 理解了TCP连接的实现以后,客户端的并发也爆发了!](https://mp.weixin.qq.com/s/ta6upubg0o1w03YGUo8Trg) - [百看不如一练,动手测试单机百万连接的保姆级教程!](https://mp.weixin.qq.com/s/f_CMt2ni0vegB3-pf2BTTg) (:cn:新) - +**1.5 电子书** +- [开发内功修炼网络篇电子书出炉!!!](https://mp.weixin.qq.com/s/kE8y9em9a0Xv80YaQqPbRg) (:cn:新) ## 二、硬盘篇 **2.1 硬件工作原理** @@ -86,4 +87,6 @@ ## 五、应用篇 - [峰值 QPS 50 万 +,性能优异的网络框架开源力作 Sogou Workflow!](https://mp.weixin.qq.com/s/clILKrOO7_XJs6uHp5hoUw) (:cn:新) - + +**公众号二维码**:微信扫一扫关注! +![avatar](imgs/official_accounts.jpg) diff --git a/imgs/official_accounts.jpg b/imgs/official_accounts.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5a9c9edcdd91be8a9d28c08b5f9a5240780756ff GIT binary patch literal 27903 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