This commit is contained in:
chenyan 2022-12-15 00:59:21 +08:00
parent 10f1972d13
commit cbfb9c0a50
6 changed files with 18 additions and 24 deletions

View File

@ -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">

View File

@ -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 就快耗尽了,还都是耗在切换线程上,然后网速还很慢。

View File

@ -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

View File

@ -8,13 +8,13 @@ lastModifiedDate: 2021-11-30
---
## 项目地址
---
http://git.oschina.net/chenyanclyz/curspeed
## 基本原理
---
在 Linux 上,可以用`ifconfig`命令查看到网络接口的信息,包括本次开机某个网络接口收发了多少字节的数据。
注意是字节 byte不是比特 bite。

View File

@ -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单表中插入了几千万条数据, 但是这些数据都是跑不通接口跑不通业务流程的脏假数据. 然后手动生成了一份可用的数据, 压测时就用这一份能跑通流程的数据作参数来压.

View File

@ -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}