亿级用户下的新浪微博平台架构

序言 新浪微博在2014年3月公布的月活跃用户(MAU)已经达到1.43亿,2014年新年第一分钟发送的微博达808298条,如此巨大的用户规模和业务量,需要高可用(HA)、高并发访问、低延时的强大后台系统支撑。 微博平台第一代架构为LAMP架构,数据库使用的是MyIsam,后台用的是php,缓存为Memcache。 随着应用规模的增长,衍生出的第二代架构对业务功能进行了模块化、服务化和组件化,后台系统从php替换为Java,逐渐形成SOA架构,在很长一段时间支撑了微博平台的业务发展。 在此基础上又经过长时间的重构、线上运行、思索与沉淀,平台形成了第三代架构体系。

两个程序员的故事

从前,有两家互不知晓的公司,一家叫做“自动会计应用协会”,另外一家叫做“统一计算资本公司”。他们同时决定开发一种提供相同功能的程序。 “自动”雇佣了一位分析程序员,艾伦,来解决这个问题。 而“统一”决定试一下新来的初级程序员查尔斯,看看他是否有真本事。

为什么说2015年将是微服务架构元年?

编者按:微服务架构(MSA)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。

造成IT项目失败的五个原因

1. 技术与商业需求相悖 酷炫前沿技术不一定就是最适合,虽然新技术看上去很美。但是时刻紧记的一点应是如何以最小的代价获取最大的商业收益。因此,要先想明白“为什么”和“是什么”,然后才是“如何做”。 2. 急于求成 在明确项目范围前,人们往往会更倾向于尝试先做。这份自信或许来自过去成功的经验和认为技术能够摆平任何困难。这不但是个代价高昂的举措,而且会影响需求分析和造成80/20问题的出现(当80%的需求满足时,20%“有就更好”的需求往往会成为决定成败与否的关键因素)。

如何保持积极的心态

创造你的生活应该是你能做的一件最有影响力的事情。你可以身处在某个情况下看到积极的一面,在同样情况下,你也可以选择去看消极的一面。通常情况下,你所意识到的正在发生的事情是透过你脑子中的想法体现出来的。 积极的想法能够创造出更多的可能。如果你想把关系搞得更好,在你的职业生涯中更加成功或者找到能带给你宁静和安逸的幸福,那么试着去注意你生活中的积极,正确的一面是一个不错的开始。 而另一方面,消极的想法只会让你觉得不满,沮丧和挫败感。你把它想的太糟糕,他就会变得太糟糕。学着去改变你消极的想法会让你沮丧的生活变得充满自信。

盘点2014年科技界六大技术失败

谷歌眼镜 尽管我们每天都能从报纸上看到有科学家取得了一些突破,但其实,绝大多数技术都以失败告终,主要原因在于这些技术达不到应用规模,这就使它们缺少与人类生活的相关性,从而导致失败。技术失败的原因当然无法预测,否则,这项技术或许早就被扼杀在摇篮中。

给Eclipse提速的7个技巧[转]

大约一个月前,我发表了一篇博客,其中介绍了对Eclipse的爱与恨。 有些人问我如何给Eclipse提速,这篇文章就来讨论这个问题。顺带提一下,这篇文章不是比较IDE,所以不要说你讨厌某个IDE而选择另外一个。这篇文章只是关注如何让Eclipse运行得更快。每个技巧都针对Windows、Linux和MacOS用户详细说明。在使用所有优化技巧之后,Eclipse应该能在10秒内启动,并且比以前运行得更流畅。

分享5个可视化的正则表达式编辑工具

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 本文推荐五款可以可视化操作的正则表达式编辑器,这些工具可以很好地帮助开发者学习正则表达式知识,并且提升开发技能。 1.Regulex Regulex是一个JavaScript正则表达式可视化工具,由纯JavaScript实现,源码托管在Github上。

新物流的崛起:一场从主动脉到毛细血管的创新

最近,我和Leon都关注到了有一类服务正在快速崛起,那就是“新物流”服务,其最常见的应用就是快速配送服务。崛起表现在哪?不仅国内外此类服务的数量开始迅速上升,而且在A、B轮所融到的资金额度也大幅提高。虽然不及互联网金融、互联网教育的投资热度来的疯狂,但作为一种物流服务、作为 O2O 服务中的一个垂直环节,动辄几千万美金的融资额已经不容小觑。它会是市场的下一个爆发点。

Jansi:让控制台输出彩色字符的方法

给政府做项目时我们一般都使用的是Java,服务器一般都是Weblogic或Tomcat(开发环境)。经常使用Java的人都知道,它在后台输出的信息一般都是黑底白字,或在Linux环境中可以改成黑绿字等,反正是很单调。我也从来没想过它能够变成彩色,但今天我发现了一个java类库——Jansi——它能够让你在控制台输出色彩缤纷的文字。先给大家看看效果:

OpenSignal:Android碎片化越来越严重 目前已有18796种不同设备

碎片化问题,让Android这个移动操作系统领域的霸主饱受困扰多年,尽管谷歌最近也一直在稳步采取措施解决这个问题,但仍旧有许多不同设备运行着各种Android版本。这也让开发者痛苦地无休止迎合越来越多的移动平台。这个问题究竟有多严重?OpenSignal的一份报告给出了答案。

六大神器助力SaaS公司留住老用户

【编者按】当下的SaaS公司投入巨大资源去吸引新用户,这无可厚非,但是DZone的Ashli N.却发出不一样的呐喊,他认为SaaS公司应该更关注老用户,即如何留住已有用户才是成功的关键,他总结了留住老用户的三条理由,以及如何留住老用户的6大神器,相信还在为自己的App如何留住用户而烦恼的创业者们可以借鉴一下。 以下为原文:

2014 年必备的 15 款 WordPress 插件

这些是2014年对你Wordpress站点非常有用的15款插件。这些插件能大大增强你的Wordpress站点的表现力。 在网络开发中,Wordpress是领先的CMS平台之一。因为Wordpress插件的灵活性,它们能被轻松下载,并能用于轻易地建立起一个网络发布平台。用上下面这几款插件,你的网站的表现力将大大提高。

Apache Log4j 2.0值得升级吗

Apache软件基金会最近发布了Log4j 2.0通用版本,相比之前Log4j的1.x版本有了很大的性能提升。本版本的灵感来自于诸如Log4j 1.x和java.util.logging之类的已有日志解决方案,它是经过了数年的努力从头开始编写完成的。 Log4j 2.0引入了新的插件系统、对properties的支持、对基于 JSON配置的支持和配置的自动化重载。它支持很多已有的日志框架,包括SLF4J、Commons Logging、Apache Flum、Log4j 1.x,并提供了新的程序员API。

为什么软件测试需要变革?

世易时移,现今的科技发展一日千里,软件测试这门科学也到了该进行革命的时候了,“这是变革者的路!。”Bhumika Mehta的这篇文章很好的诠释了为什么软件测试需要变革以及如何进行变革。他认为,软件测试需要的就是想法与创意。没有想法的测试人员可能在测试这条路上不会走得太远。

图说计算机病毒史

计算机病毒由来已久,最初它们只是一些恶作剧,如今有的已经发展成了军事武器。最近有一家名为“Computer Virus Catalog”的网站对计算机病毒历史进行了研究,并且还给每一个病毒配上了图片。在这份历史榜单中,我们病毒主要集中在DOS时 代,特别是上世纪90年代末的病毒繁荣期,当然许多著名的恶意软件也随着时间流逝被淹没在历史长河中。后来,很多病毒都以可视化组件的形式出现,比如有可 视化的电子邮件蠕虫病毒,还有让你的电脑屏幕布满绿色真菌的病毒,当这些可视化恶意软件出现时,你的第一反应肯定就是“我中毒了!”

在程序员的眼里,用户是这样使用他们开发的软件的

我曾经说过,程序员不是一般的人,是具有某种超能里的人。但问题是,程序员往往意识不到自己的这种特异功能,在他们的眼里,会认为自己很普通,跟常人一样,所以,程序员能做到的事情,其他人——比如他们的客户/软件用户——也应该很容易做到。但事实上,由于大部分人——绝大部分人(包括软件开发公司的客户/购买软件的用户)——都是电脑小白(对电脑知识/计算机知识/软件知识知之甚少的人)。一个对于程序员来说很显而易见的软件操作,换成让用户来操作,就会出现各种各样奇怪的事情。这让程序员非常痛苦。

吐槽编程问题的五张漫画

大家可能知道,我时常活跃于Stack Overflow——当今最热门的程序员问答网站。该网站的好同志们公开了他们的数据,任何人都可以通过这个页面查询他们的数据库:data.stackexchange.com 那里的很多问题和回答都配上了XKCD(由Randall Munroe 创作)的漫画链接,于是我决定扒一扒,哪几篇漫画最爱被程序员拿来吐槽他们遇到的奇葩事。