- 浏览: 41245 次
最新评论
-
wst0350:
学习,感谢分享
单线程你别阻塞,Redis时延问题分析及应对 -
yangsong158:
好东西,这个一定要支持
发布《Linux工具快速教程》 -
轻指飞扬:
思维导图总结的不错
《小强升职记》 读书笔记 含思维导图 -
alvin198761:
去一个早亮一个小时的国家,或者,将闹钟定到那个时间
如何做到早起一小时? -
BruceLeeli:
一直想早起,一直没做到。
如何做到早起一小时?
文章列表
优化准则:
1. 二八法则:在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的;在优化实践中,我们将精力集中在优化那20%最耗时的代码上,整体性能将有显著的提升; 这个很好理解。函数A虽然代码量大,但在一次正常执行流程中,只调用了一次。而另一个函数B代码量比A小很多,但被调用了1000次。显然,我们更应关注B的优化。 2. 编完代码,再优化;编码的时候总是考虑最佳性能未必总是好的;在强调最佳性能的编码方式的同时,可能就损失了代码的可读性和开发效率;
工具:
1 Gprof
工欲善其事,必先利其器。对于Linux平台下C++的优化,我们使用gp ...
进行优化前,关键是剖析当前的web性能,找到性能瓶颈,从而确定最需改进的地方;如果精力有限,首先将精力放在能明显提升性能的改进点上;
《高性能网站建设指南》提出了一个性能黄金法则:
只有10%-20%的最终用户响应时间花在了下载HTML文档上;其余的80%-90%的时间花在了下载页面中的所有组件上。
由于本文将实施一个完整的优化流程,所以,我们还是从后台开始;
算起来,用C++已经有七八年时间,也有点可以分享的东西;
以下推荐的书籍大多有电子版。对于技术类书籍,电子版并不会带来一个好的阅读体验。如果喜欢,最好找纸版(图书馆是个好去处);电子版更适合作为一个参考书 ...
Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程
这里的函数式编程的设计以muduo为例进行对比说明;
Reactor实现架构对比
面向对象的设计类图如下:
函数式编程以muduo为例,设计类图如下:
面向对象的Reactor方案设计
我们先看看面向对象的设计方案,想想为什么这么做; 拿出Reactor事件驱动的模式设计图,对比来看,清晰明了;
从左边开始,事件驱动,需要一个事件循环和IO分发器,EventLoop和Poller很好理解;为了让事件驱动支持多平台,Poller上加一个继承结构,实现select、epoller等IO分发器选用;
...
单线程你别阻塞,Redis时延问题分析及应对
- 博客分类:
- redis
单线程你别阻塞,Redis时延问题分析及应对
Redis的事件循环在一个线程中处理,作为一个单线程程序,重要的是要保证事件处理的时延短,这样,事件循环中的后续任务才不会阻塞; 当redis的数据量达到一定级别后(比如20G),阻塞操作对性能的影响尤为严重; 下面我们总结下在redis中有哪些耗时的场景及应对方法;
耗时长的命令造成阻塞
keys、sort等命令
keys命令用于查找所有符合给定模式 pattern 的 key,时间复杂度为O(N), N 为数据库中 key 的数量。当数据库中的个数达到千万时,这个命令会造成读写线程阻塞数秒; 类似的命令有sunion sort等操作; ...
IO设计模式:Reactor和Proactor对比
平时接触的开源产品如Redis、ACE,事件模型都使用的Reactor模式;而同样做事件处理的Proactor,由于操作系统的原因,相关的开源产品也少;这里学习下其模型结构,重点对比下两者的异同点;
反应器Reactor
Reactor模式结构
Reactor包含如下角色:
Handle 句柄;用来标识socket连接或是打开文件;
Synchronous Event Demultiplexer:同步事件多路分解器:由操作系统内核实现的一个函数;用于阻塞等待发生在句柄集合上的一个或多个事件;(如select/epoll;)
...
发布《Linux工具快速教程》
- 博客分类:
- Linux
发布《Linux工具快速教程》
阶段性的完成了这本书开源书籍,发布出来给有需要的朋友,同时也欢迎更多的朋友加入进来,完善这本书; 本书Github地址:https://github.com/me115/linuxtools_rst
在线阅读
缘起
Linux下有很多命令行工具 ...
收集互联网博客
缘起
中国的博客发展已有十余年历史;这些年诞生了不少高质量的博客,给大家带来了很多精品博文; 但是,人的精力和注意力是有限的,一旦博客不再更新后,它就渐渐的就淡出了互联网的舞台; 而这博客上的优秀作品也被历史潮水所淹没; 这样很遗憾,其实有不少博客的内容,都经得起时间的推敲。 我觉得有必要将这内容保存下来,供更多人阅读; 我喜欢阅读博客,也订阅了不少博客,对于同类精品文章,希望归集到一块;
阅读载体
对于短片文章,浏览器中阅读没有问题; 但是对于长篇文章,最好还是能在专门的阅读平台上阅读: 完美的阅读媒介是Kindle和pad平板;
我的需求
所以,我有了以下需求: ...
NoSQL数据库:数据的一致性
- 博客分类:
- 数据库
NoSQL数据库:数据的一致性
读取一致性
强一致性 在任何时间访问集群中任一结点,得到的数据结果一致;
用户一致性 对同一用户,访问集群期间得到的数据一致; 解决用户一致性:使用粘性会话,将会话绑定到特定结点来处理; 这样会降低负载均衡器的性能;
最终一致性 集群中各结点间由于数据同步不及时造成暂时的数据不一致,但数据同步完成后,最终具有一致性;
更新一致性
悲观方式
使用写锁
大幅降低系统响应能力
可能导致死锁
乐观方式
先让冲突发生,再检测顺序
自动合并的处理方式极具“领域特定”问题
放宽“一致性约束”
CAP定理 一 ...
架构设计中要考虑的核心五要素; 性能、可用性、扩展性、伸缩性、安全性
性能
性能的测试指标
响应时间 应用执行一个操作需要的时间,包括从发出请求开始到收到最后响应数据所需要的时间。响应时间是系统最重要的 ...
《大型网站技术架构》读书笔记[2] - 架构的模式
- 博客分类:
- 架构
《大型网站技术架构》读书笔记 - 架构的模式
大CC上周写的读书笔记记录的是网络的升级路线,其中用到的各种技术手段只是点到即止(《大型网站技术架构》读书笔记 - 网站的技术升级路线);今天写的第二篇笔记,讨论架构的模式;这篇文章,其中主干是书中的重点笔记,分支和内容则是我展开的思考,如有不对的地方,还请大家指出;
需要说明,模式不是万能的,任何模式都是一定应用场景的经验总结;离开具体的场景生搬硬套就偏离的模式总结的初衷;
分层
随着应用框架的普及,分层的概念已经深入人心;从我们学习写web代码开始,框架就要求我们通过分层开发来适应框架的结构;只是到后来,才逐渐体会到分层带来的好处; ...
《大型网站技术架构》读书笔记 - 网站的技术升级路线 本文描述网站从小到大演变过程中的技术升级路线;
1.初始架构
一台服务器,应用、DB、文件都在一块,使用经典的LAMP模式构建整个站点; 优点很明显,开发部署都简单 ...
《小强升职记》 读书笔记 含思维导图
- 博客分类:
- CC书评
《无压工作的艺术》是时间管理的圣经,这本书则是《无压工作的艺术》的本土版; 作者用讲故事的方式描述了一个职场新手成长的过程,又可谓是圣经的实践版; 本人评分 5分; 唯一的缺点,就是这本书的名字太俗;不过话说回来,正是大俗,才带来了世俗中的广泛传播;
书的章节命名也挺有意思,从一个种子发芽说起,直到开花结果;
寻找种子
时间管理方法的执行,是一个锻炼自我的过程,当然,必然和自己从前的生活方式有所区别,为了让这方法持续下去,我们首先得找到一个支柱; 我们需要走出混沌,找出浪费时间的源头; 我们需要寻找到个人价值观; 问自己,为了什么而工作? 工作是为了智力刺激,希望不断思考、学习及探 ...
早起是个不过时的话题,在很多人心里都有一个早起的愿望,但总是难以付诸行动;在受到某篇文章或某本成功学书籍的刺激后,可能会有那么几天早起,而之后,又回到从前; 其实早起,并不是一件多困难的事,只要我们能 ...
这本书很有趣,故事叙述好玩,且价值颇高; 它让更多人了解并熟悉淘宝,让我们近距离观察大公司成长过程中遇到的问题;
我将从三个方面来做这个概要版的读书笔记;
淘宝的升级路线叙述了淘宝的成长路线,如果能引 ...