`
colin115
  • 浏览: 39993 次
社区版块
存档分类
最新评论
文章列表
优化准则: 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的数据量达到一定级别后(比如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工具快速教程》 阶段性的完成了这本书开源书籍,发布出来给有需要的朋友,同时也欢迎更多的朋友加入进来,完善这本书; 本书Github地址:https://github.com/me115/linuxtools_rst 在线阅读 缘起 Linux下有很多命令行工具 ...
收集互联网博客 缘起 中国的博客发展已有十余年历史;这些年诞生了不少高质量的博客,给大家带来了很多精品博文; 但是,人的精力和注意力是有限的,一旦博客不再更新后,它就渐渐的就淡出了互联网的舞台; 而这博客上的优秀作品也被历史潮水所淹没; 这样很遗憾,其实有不少博客的内容,都经得起时间的推敲。 我觉得有必要将这内容保存下来,供更多人阅读; 我喜欢阅读博客,也订阅了不少博客,对于同类精品文章,希望归集到一块; 阅读载体 对于短片文章,浏览器中阅读没有问题; 但是对于长篇文章,最好还是能在专门的阅读平台上阅读: 完美的阅读媒介是Kindle和pad平板; 我的需求 所以,我有了以下需求: ...
NoSQL数据库:数据的一致性 读取一致性 强一致性 在任何时间访问集群中任一结点,得到的数据结果一致; 用户一致性 对同一用户,访问集群期间得到的数据一致; 解决用户一致性:使用粘性会话,将会话绑定到特定结点来处理; 这样会降低负载均衡器的性能; 最终一致性 集群中各结点间由于数据同步不及时造成暂时的数据不一致,但数据同步完成后,最终具有一致性; 更新一致性 悲观方式 使用写锁 大幅降低系统响应能力 可能导致死锁 乐观方式 先让冲突发生,再检测顺序 自动合并的处理方式极具“领域特定”问题 放宽“一致性约束” CAP定理 一 ...

架构核心五要素

架构设计中要考虑的核心五要素; 性能、可用性、扩展性、伸缩性、安全性 性能 性能的测试指标 响应时间 应用执行一个操作需要的时间,包括从发出请求开始到收到最后响应数据所需要的时间。响应时间是系统最重要的 ...
《大型网站技术架构》读书笔记 - 架构的模式 大CC上周写的读书笔记记录的是网络的升级路线,其中用到的各种技术手段只是点到即止(《大型网站技术架构》读书笔记 - 网站的技术升级路线);今天写的第二篇笔记,讨论架构的模式;这篇文章,其中主干是书中的重点笔记,分支和内容则是我展开的思考,如有不对的地方,还请大家指出; 需要说明,模式不是万能的,任何模式都是一定应用场景的经验总结;离开具体的场景生搬硬套就偏离的模式总结的初衷; 分层 随着应用框架的普及,分层的概念已经深入人心;从我们学习写web代码开始,框架就要求我们通过分层开发来适应框架的结构;只是到后来,才逐渐体会到分层带来的好处; ...
《大型网站技术架构》读书笔记 - 网站的技术升级路线 本文描述网站从小到大演变过程中的技术升级路线; 1.初始架构 一台服务器,应用、DB、文件都在一块,使用经典的LAMP模式构建整个站点; 优点很明显,开发部署都简单 ...
《无压工作的艺术》是时间管理的圣经,这本书则是《无压工作的艺术》的本土版; 作者用讲故事的方式描述了一个职场新手成长的过程,又可谓是圣经的实践版;  本人评分 5分; 唯一的缺点,就是这本书的名字太俗;不过话说回来,正是大俗,才带来了世俗中的广泛传播; 书的章节命名也挺有意思,从一个种子发芽说起,直到开花结果; 寻找种子 时间管理方法的执行,是一个锻炼自我的过程,当然,必然和自己从前的生活方式有所区别,为了让这方法持续下去,我们首先得找到一个支柱; 我们需要走出混沌,找出浪费时间的源头; 我们需要寻找到个人价值观; 问自己,为了什么而工作? 工作是为了智力刺激,希望不断思考、学习及探 ...
早起是个不过时的话题,在很多人心里都有一个早起的愿望,但总是难以付诸行动;在受到某篇文章或某本成功学书籍的刺激后,可能会有那么几天早起,而之后,又回到从前; 其实早起,并不是一件多困难的事,只要我们能 ...
这本书很有趣,故事叙述好玩,且价值颇高; 它让更多人了解并熟悉淘宝,让我们近距离观察大公司成长过程中遇到的问题; 我将从三个方面来做这个概要版的读书笔记; 淘宝的升级路线叙述了淘宝的成长路线,如果能引 ...
Global site tag (gtag.js) - Google Analytics