手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:思想

重要的不是语言,是思想

标题这种话已经在被很多人所理解,现在大多数开发人员已经不再把语言当成障碍,而是把思想当成障碍,语言的跨度其实真的很容易解决,但思想不进步,你有着再好的语言又怎么样?即使你用的是所谓的自然语言(即平时生活中的语句),但只要你没有思想,没有逻辑,你又能写出什么样的程序?

以下内容来自老王参加的某大会的记录、摘要。我是看中其中的一小部分,觉得有感触。。原文在这里,点击进入

部分我认为不错的精华,或者说是我关注的。。。

1、课程:失败来临的征兆(讲师:Michael Nvgard)这一切正是Michael Nvgard先生演讲的主旨:意外的问题总是在不经意间发生,要注意把它们的影响限制在局部,避免拖累整个应用。比如说在SOA中集成若干个服务时,应该 设置好各个服务的Timeout,避免其中一个服务崩溃连带整个系统等待。

2、课程:Twitter的可伸缩性数据架构(讲师:Nick Kallen)

Nick Kallen介绍了Twitter在处理海量数据时的经验,其实总结出来就三条:分区,索引,复制。

着重介绍了Tweets,Timelines,Social Graphs,Search Indices四个基本功能的实现:

Tweets比较简单,就是分区,虽然可以使用id或者user_id来分区,不过目前Twitter使用的是按time分区。

Timelines相对复杂了一些,最开始采用的方法是纯SQL的,大致如下:

SQL代码
  1. SELECT * FROM tweets  
  2. WHERE user_id IN (SELECT source_id FROM followers WHERE destination_id = ?)  
  3. ORDER BY created_at DESC  
  4. LIMIT 20  
这当然不是一个高效的解决方案,后来采用了被称作离线计算(Offline Computation)的解决方案,其思路大致就是每当发送一条推的时候,采用队列存储避免峰值瓶颈,同时向所有Followers分发此消息,然后每 个分发 终端在缓存中完成合并计算。乍一听起来这似乎也不是什么好的解决方案,一旦某人有非常多的Followers,即便分区,这个分发操作也会非常耗时,但按 Nick Kallen的介绍,Twitter确实是这么做的,细节操作有待研究。

剩下的问题不多说了,Nick Kallen给了PPT地址:http://www.slideshare.net/nkallen/q-con-3770885

3、课程:构建可扩展的微波系统(讲师:杨卫华)

杨卫华作为新浪微博的架构师,这次的PPT做得很酷,虽然在内容上和Twitter有些重复,但还是很不错。

提到了Memcached的evictions问题,给出了三个守则:

1:规划好cache的容量
2:将永久数据和临时性数据分开
3:不使用随机字符串做Key

至于原因,可以参考杨卫华的博客上的介绍:Memcached数据被踢(evictions>0)现象分析

4、课程:敏捷在中国(讲师:Tom Mellor) 编程工期的催促往往让程序员只考虑眼前的既得利益,却忽视了后期的风险。

5、课程:如何在团队中有效实施TDD(讲师:麦天志)在阐述为什么即便工期紧张也应该使用TDD的时候,他给了一个比喻:医生做手术的时间很紧张,但即便 这样,手术前清洗双手的工作程序也是必不可少的。在讲解重构时,他强调了TDD是重构的基础,只有这样才能保证重构没有改变现有的行为,否则就不是重构,而是重写。

Tags: 语言, 思想, 参考