This commit is contained in:
parent
10f1972d13
commit
cbfb9c0a50
|
@ -56,6 +56,13 @@ layout: default
|
|||
color: #444;
|
||||
outline: 0
|
||||
}
|
||||
article>div>h2 {
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
article>div>h2, article>div>h3, article>div>h4 {
|
||||
padding-left: 6px;
|
||||
border-left: 3px solid #00a8e6;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="uk-flex">
|
||||
|
|
|
@ -11,8 +11,6 @@ keywords: [开源项目, http代理, gevent, 协程, 惊群]
|
|||
|
||||
## 前言
|
||||
|
||||
---
|
||||
|
||||
这篇文章将会介绍一个 http 代理的实现过程...
|
||||
|
||||
### http 协议的文档
|
||||
|
@ -42,8 +40,6 @@ keywords: [开源项目, http代理, gevent, 协程, 惊群]
|
|||
|
||||
## 实现基本的功能
|
||||
|
||||
---
|
||||
|
||||
按照前言中提到的[最原始的实现原理](#最原始的实现原理), 我们来一步步实现.
|
||||
这里不考虑性能, 对于性能的改善, 会在[改善性能](#改善性能)这一章中介绍.
|
||||
|
||||
|
@ -393,8 +389,6 @@ soc.send(buf)
|
|||
|
||||
## 改善性能
|
||||
|
||||
---
|
||||
|
||||
### 协程
|
||||
|
||||
现在的程序还是多线程的模型,虽然功能已经实现。但是至少我自己在用的时候,明显感觉网速很慢。尤其是像腾讯、新浪这种门户网站的首页。一个页面的请求太他妈多了!!一下子就开了巨多的线程。线程相互之间切换的代价也是很大的,每个线程时间没做多少事,多数时间都在等待 IO。带宽没利用上多少,cpu 就快耗尽了,还都是耗在切换线程上,然后网速还很慢。
|
||||
|
|
|
@ -8,14 +8,14 @@ tags: [vi, vim]
|
|||
---
|
||||
|
||||
## 背景
|
||||
---
|
||||
|
||||
之前每次重装系统,第一件事就是升级 vim。因为刚装好系统使用 vi 命令编辑文件有好多问题,语法不高亮事小,方向键映射不对也忍了,关键 Backspace 键不好用!!!
|
||||
|
||||
最近写毕设论文,不得已用回 windows,装了 cygwin 作为 Linux 的替代品。刚装好vi和vim的问题又出来了。
|
||||
|
||||
|
||||
## 解决
|
||||
---
|
||||
|
||||
### 方案1
|
||||
之前在网上找到一个解决方案,是重装新版的vim。如下:
|
||||
|
||||
|
@ -39,12 +39,10 @@ alias vi='vim'
|
|||
|
||||
## 参考文献
|
||||
|
||||
---
|
||||
http://superuser.com/questions/505761/how-to-get-vim-color-mode-to-work-in-vim-under-cygwin
|
||||
|
||||
## 另
|
||||
|
||||
---
|
||||
|
||||
cygwin 的镜像地址:
|
||||
http://mirrors.sohu.com/cygwin
|
||||
|
|
|
@ -8,13 +8,13 @@ lastModifiedDate: 2021-11-30
|
|||
---
|
||||
## 项目地址
|
||||
|
||||
---
|
||||
|
||||
http://git.oschina.net/chenyanclyz/curspeed
|
||||
|
||||
|
||||
## 基本原理
|
||||
|
||||
---
|
||||
|
||||
在 Linux 上,可以用`ifconfig`命令查看到网络接口的信息,包括本次开机某个网络接口收发了多少字节的数据。
|
||||
|
||||
注意是字节 byte,不是比特 bite。
|
||||
|
|
|
@ -7,12 +7,10 @@ tags: [os, middleware, hdd]
|
|||
|
||||
|
||||
## 引言
|
||||
---
|
||||
|
||||
固态硬盘已经出现n年了, 大概还是价格的原因, 工程师们依旧与机械硬盘奋战着. 举几个例子, 感受下 if else 之外的代码乐趣.
|
||||
|
||||
## QMQ 中针对硬盘IO的优化
|
||||
---
|
||||
|
||||
qmq 是去哪儿网自研的消息队列. 相比于 RabbitMQ, Kafka 等消息中间件, qmq 在复杂业务场景的适用性上拥有绝对的优势. 延迟消息, 广播消息, tag过滤, 轨迹跟踪, 事物消息, Consumer扩容 这些在使用其他消息队列时让人叫苦连天的特性, 对qmq来说都不是事儿.
|
||||
|
||||
|
@ -32,7 +30,6 @@ qmq 是去哪儿网自研的消息队列. 相比于 RabbitMQ, Kafka 等消息中
|
|||
|
||||
|
||||
## MYSQL 数据多了查询就会慢吗?
|
||||
---
|
||||
|
||||
|
||||
有过这样的压测经历, 压测前需要造数据量, 在mysql单表中插入了几千万条数据, 但是这些数据都是跑不通接口跑不通业务流程的脏假数据. 然后手动生成了一份可用的数据, 压测时就用这一份能跑通流程的数据作参数来压.
|
||||
|
|
|
@ -8,7 +8,6 @@ tags: [middleware, redis]
|
|||
|
||||
|
||||
## 分布式锁
|
||||
---
|
||||
|
||||
### 消息折叠
|
||||
|
||||
|
@ -72,7 +71,7 @@ try {
|
|||
|
||||
|
||||
## 击穿
|
||||
---
|
||||
|
||||
|
||||
击穿的意思, 是
|
||||
@cacheable
|
||||
|
@ -81,22 +80,22 @@ try {
|
|||
|
||||
|
||||
## 穿透
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
## 雪崩
|
||||
---
|
||||
|
||||
|
||||
## keys *
|
||||
---
|
||||
|
||||
|
||||
但凡是有点自主学习能力,看过官网的。。。命令介绍里那么黑的加粗说明。
|
||||
|
||||
|
||||
|
||||
## 以一己之力,发明了MemoryCache
|
||||
---
|
||||
|
||||
|
||||
跟前面讲的消息折叠里遇到的bug一样, 也是五六年前的老代码了。顺带跑个题,讲讲一个OOM的事情吧。那个服务大概启动一两周左右,内存就满了,fgc也回收不掉,只能重启。
|
||||
|
||||
|
@ -110,7 +109,7 @@ ORM 框架是动不了了,在用的低版本的没法处理这个问题, 又
|
|||
|
||||
|
||||
## 缓存与DB的数据一致性
|
||||
---
|
||||
|
||||
|
||||
有这么个不解之谜,缓存里的内容和数据库中的数据不一致了。并且这部分的代码很新,很清晰。
|
||||
|
||||
|
@ -138,10 +137,9 @@ ORM 框架是动不了了,在用的低版本的没法处理这个问题, 又
|
|||
|
||||
1. (写接口,可以多说点)假设数据中有version字段表示数据的版本。写接口 数据更新时,删除缓存的主体内容,但保留最新的version值。读接口就能根据版本号,判断要放进缓存的是不是旧数据。
|
||||
|
||||
2. (读接口,也要有主观能动性)。时不时的抽查下数据质量,不能说缓存里有数据就 100% 认为是合格的数据。那检查抽取样本的标准呢...(哎...越搞越复杂了)
|
||||
2. (读接口,也要有主观能动性)。时不时的抽查下数据质量,不能说缓存里有数据就 100% 认为是合格的数据。那检查抽取样本的标准呢...比如,可以按时间,越新的缓存越不可信。还可以做个本地计数器,按频率或次数,阈值到了就去数据库里取新的。
|
||||
|
||||
|
||||
----
|
||||
|
||||
* 文章目录
|
||||
{:toc}
|
Loading…
Reference in New Issue