著名IT博客汇总

团队技术博客

阅读全文→


smarteng 发布于 2013-03-09 15:17

如何使用一个开源项目?

看到朋友微博发的,转之:

你有个任务,需要用到某个开源项目;或者老大交代你一个事情,让你去了解某个东西。怎么下手呢?如何开始呢?我的习惯是这样:

 

1.首先,查找和阅读该项目的博客和资料,通过google你能找到某个项目大体介绍的博客,快速阅读一下就能对项目的目的、功能、基本使用有个大概的了解。

 

2.阅读项目的文档,重点关注类似Getting started、Example之类的文...

阅读全文→

smarteng 发布于 2012-05-28 12:08

编写优秀代码的10条准则

 1. DRY: 不要重复你自己(Don’t repeat yourself)

  DRY是一条最容易理解但又是相对比较难以应用的原则。它是指当你在两处或者更多的地方发现相似代码时,我们应当把它们抽象成一个新的函数,在之前重复的地方调用新的函数并带上适当的参数。

  DRY也许是最普遍的一条编程原则,我从未发现一个开发人员认为编写重复的代码是件好事。但是我发现一些开发人员在编写单元测试时忘记了...


阅读全文→


smarteng 发布于 2011-07-18 16:49

转:俞军的PM12条

俞军:搜索引擎9238,男,26岁,上海籍,同济大学化学系五年制,览群书,多游历。 
97年7月起在一个国营单位筹备进口生产项目。
99年4月起在一个代理公司销售进口化工原料兼报关跟单。

2000年1月起在一个垂直网络公司做分析仪器资料采编。
2000年7月起去一个网络公司应聘搜索引擎产品经理,却被派去做数据库策划,9月起任数据中心经理。 
长期想踏入搜索引擎业,无奈欲投无门,心下甚急,故有此文。
如有公司想做最好的中文搜索,诚意乞一参与机会。

阅读全文→

smarteng 发布于 2011-04-19 15:19

《同事的你》

哈哈,在群里看到这个,很火呀,同事的你,写这个歌的哥们很有才呀,分享了~,敲好同事离职,纪念一下~ 

阅读全文→

smarteng 发布于 2011-04-10 17:05

coder、programer与计算机科学家三者之间的区别

开发人员、程序员与计算机科学家,我认为是三个层次的人,IT行业的从业人员一个发展的过程,当然有的发展到最后是计算机科学家,有的则没有,不是说一个人不能同时拥有 这三者的全部特点,但无论如何,他们总会更倾向类一种,那么我便把他们归属到那一类,程序员、开发人员或者计算机科学家。

阅读全文→

smarteng 发布于 2011-03-02 10:23

住店智力题

今天同学们热情很高,说了很多智力题,大家可以搜搜 住店 ,卖货了,天平称球 。。警察带小偷渡船。。等等吧,很多智力题,看看还是很有意思的~ 

阅读全文→

smarteng 发布于 2011-02-28 18:49

开放平台

2011年大家都在谈论开放平台,淘宝加大TOP的投入,新浪微博开放了,腾讯也开放了,飞信传言也要开放,这些电商跟门户都要开放自己的平台了,那我就谈一谈各个开放平台,不瞒您说,当当网也要做自己的开放平台了。敬请期待,下面我就各个现有的开放平台的介绍。

阅读全文→

smarteng 发布于 2011-02-27 21:08

记在2010年十一之前

又是一年十一了,时间真是太快了。

不知不觉来北京也有一年多了。依稀记得去年的十一,自己呆在北京,

那个凄惨的感觉,不是很爽,

今年略有不同,无论是人生观,价值观,世界观,都有了一些变化。

今年的十一更是一个大的变化吧。

阅读全文→

smarteng 发布于 2010-09-29 14:48

青岛-烟台-北京:记来北京一周年

2009.8.21 下午1点多,我下火车,历时10多个小时的火车,从熟悉而又陌生的烟台来到了人人都向往的首都,在火车上,我想像着我在北京新的生活——美好的生活。

还好,当时有同学在这边,到现在我还很感激养兆,请假去接我,在他看来也许这不算什么,但这份情谊,无语言表,只能默默记录心间,出了火车站的门就看到他等在那里了,哈哈,一切很顺利。Thank goodness。

回想这一年来,写到这儿,我想起一句歌词:“回忆,是我拥有的方式。”我是一个特别怀旧的人,总是在回忆着,回忆着大学生活,回忆着毕业,回忆着烟台,回忆着那里的同学。好像我一直在靠着回忆过日子,我也一直告诉自己:“过去的就过去了,还有那些快乐的日子,那毕竟是以前的快乐,回忆的多了,是不是也就不觉得快乐了,觉得麻木了呢?我曾经的梦想,也只是在脑海里打着转,却因为残酷的现实,不得不一再的妥协,妥协,再妥协……

哈哈,扯远了,说说经历,来北京还算是很顺利的,工作很快就有了着落,也有了一个安定的居所-酒仙桥的将府家园,哈哈,现在想想,那是我住的最好的房子,120多平的精装修,着实不错,开始在飘Home上班,骑一自行车 5分钟就到,生活过的甚是惬意,呵呵,那也是我学习的好时候,之后在10月份辞职,在家蹲了1个月,想了很多,当然也想到了打退堂鼓,真是想回家了,还好还是坚持下来了,接下来就跟同学搬到一块住-西坝河中里小区,环境不错,在三环里边,交通方便,四个同学在一块,有说有笑,有打有闹,日子平淡无漪的过着,大家也很努力,白白,开始在Yahoo,之后到了阿里集团的阿里云,再到现在的百度,阿彬开始在一法国外资企业,之后到IBM,我开始在TOM在线,之后在当当网,短短一年的时间,大家都有了进步,哈哈,在外人看来还算了不错,其实也就是那么回事,希望大家继续努力吧。哈哈

说说来北京的感受,我承认,北京的风景很漂亮,北京的街道也很宽,可是,即使已经来了一年了,还是让我觉得陌生,没有我想要的安全感以及归属感。我怀念家乡的一草一木,我想念我的家人、朋友……

一年后的今天,我依然平淡的过着并不是我期望的生活。该如何去继续呢?…… 

写在来北京一年时,记录心路历程~


smarteng 发布于 2010-08-21 07:58

随想:人人网之新鲜事存储实现

现在的SNS太火了,大家都在搞SNS,

我也很喜欢用这个,呵呵,从07年开始就一直在用校内网,现在的人人网,

每天总想登陆看看好友的新鲜事,

最近被问到这么个问题:

如何设计实现好友的新鲜事存储,设计一下数据结构,以及实现的方法,

说实话对这个用户数量巨大的系统,存储还真是个问题,

正好看了一篇文章  《又拍网架构中的分库设计》[break]

从中摘录一段:

 

垂直拆分:是指按功能模块拆分,比如可以将群组相关表和照片相关表存放在不同的数据库中,这种方式多个数据库之间的表结构不同。

水平拆分:而水平拆分是将同一个表的数据进行分块保存到不同的数据库中,这些数据库中的表结构完全相同。

拆分方式

一般都会先进行垂直拆分,因为这种方式拆分方式实现起来比较简单,根据表名访问不同的数据库就可以了。但是垂直拆分方式并不能彻底解决所有压力问题,另外,也要看应用类型是否合适这种拆分方式。如果合适的话,也能很好的起到分散数据库压力的作用。比如对于豆瓣我觉得比较适合采用垂直拆分, 因为豆瓣的各核心业务/模块(书籍、电影、音乐)相对独立,数据的增加速度也比较平稳。不同的是,又拍网的核心业务对象是用户上传的照片,而照片数据的增加速度随着用户量的增加越来越快。压力基本上都在照片表上,显然垂直拆分并不能从根本上解决我们的问题,所以,我们采用水平拆分的方式。

拆分规则

水平拆分实现起来相对复杂,我们要先确定一个拆分规则,也就是按什么条件将数据进行切分。 一般2.0网站都以用户为中心,数据基本都跟随用户,比如用户的照片、朋友和评论等等。因此一个比较自然的选择是根据用户来切分。每个用户都对应一个数据库,访问某个用户的数据时, 我们要先确定他/她所对应的数据库,然后连接到该数据库进行实际的数据读写。

那么,怎么样对应用户和数据库呢?我们有这些选择:

按算法对应

最简单的算法是按用户ID的奇偶性来对应,将奇数ID的用户对应到数据库A,而偶数ID的用户则对应到数据库B。这个方法的最大问题是,只能分成两个库。另一个算法是按用户ID所在区间对应,比如ID在0-10000之间的用户对应到数据库A, ID在10000-20000这个范围的对应到数据库B,以此类推。按算法分实现起来比较方便,也比较高效,但是不能满足后续的伸缩性要求,如果需要增加数据库节点,必需调整算法或移动很大的数据集, 比较难做到在不停止服务的前提下进行扩充数据库节点。

按索引/映射表对应

这种方法是指建立一个索引表,保存每个用户的ID和数据库ID的对应关系,每次读写用户数据时先从这个表获取对应数据库。新用户注册后,在所有可用的数据库中随机挑选一个为其建立索引。这种方法比较灵活,有很好的伸缩性。一个缺点是增加了一次数据库访问,所以性能上没有按算法对应好。

比较之后,我们采用的是索引表的方式,我们愿意为其灵活性损失一些性能,更何况我们还有memcached, 因为索引数据基本不会改变的缘故,缓存命中率非常高。所以能很大程度上减少了性能损失。

索引表的方式能够比较方便地添加数据库节点,在增加节点时,只要将其添加到可用数据库列表里即可。 当然如果需要平衡各个节点的压力的话,还是需要进行数据的迁移,但是这个时候的迁移是少量的,可以逐步进行。要迁移用户A的数据,首先要将其状态置为迁移数据中,这个状态的用户不能进行写操作,并在页面上进行提示。 然后将用户A的数据全部复制到新增加的节点上后,更新映射表,然后将用户A的状态置为正常,最后将原来对应的数据库上的数据删除。这个过程通常会在临晨进行,所以,所以很少会有用户碰到迁移数据中的情况。

从中得到了启发,

大体猜想了一下人人网新鲜事的存储:

首先,人人网的用户数已经相当多了,

用户的存储也会按照规则分配到不同的服务器群上,

之后按照人人网的功能模块来垂直拆分,不同的业务分到不同的服务器上,

这是所有的业务存储,(这只是我的猜测),

关键是这个好友新鲜事的问题了,

我猜,是一个好友更新了一个业务(日志,图片,分享),之后在自己所在的服务器上记录一下,

之后通过“消息系统” , 来通知其他的好友所在的服务器,执行一个新鲜事的插入操作,这其中肯定会有Memcache缓存等的处理,这个咱们就不谈了。  

在多个服务器上写一下好友的新鲜事记录表,这样就用冗余换效率了, 用户一登陆,只要查一下自己的好友新鲜事表就可以得到人人网的登陆之后首页的好友新鲜事了,就取一次,效率肯定会高些,

接下来,就是这个“消息系统”了,如何来通知呢,关键就是这个消息系统,

如果没有消息中间件完成信息交换,应用开发者为了传输数据,必须要学会如何用网络和操作系统软件的功能,编写相应的应用程序来发送和接收信息,且交换信息没有标准方法,每个应用必须进行特定的编程从而和多平台、不同环境下的一个或多个应用通信。例如,为了实现网络上不同主机系统间的通信,将要求具备在网络上如何交换信息的知识(比如用TCP/IP的socket程序设计);为了实现同一主机内不同进程之间的通讯,将要求具备操作系统的消息队列或命名管道(Pipes)等知识。

幸亏Java中有像JMS这种消息系统(不是Java佬,这个也是听yhustc说的^_^),开源,而且有广泛的应用,所以用它比较合适,当然人人网用的什么不得而知,反正就是通过一个中间件,这个“消息系统”中间件  把插入,删除,更新操作  分发到不同的服务器上面,服务器上面的消息系统客户端  收到消息后 ,来操作数据, 实现好友新鲜事的存储。

这样一个个通知到,并返回一个状态。成功与否,消息系统再做一些处理,更新所有的好友新鲜事表完成。

SNS也是一个区域化的,也就是说,可能他一共有 1000个好友, 其中 500个好友 在同一台服务器上存储,另有一台存 300个好友,再就是其他的零散的了好友分散在不同的服务器上了,

这样所需要通知的服务器就不会很多(肯定小于等于202个了^_^),

所有开销相对就较小了,

说说这个每个用户的好友新鲜事表 ,

这个也是好友的更新记录,不是用户实际存储的数据,(用户实际存储的数据是存到”不同的业务分到不同的服务器上“),可以定期清除一下,以保持效率。

大体分析就是这样的,以上都是猜测,请不要拍砖。

感谢yhustc的指导 ^_^

————————————————————————

今天下午看了一些伟大的uchome,

大体看了一下,貌似uchome 没有好友新鲜事呀(今天下午才测试,没看仔细,要是有也别骂我),

但是有个全站动态,里面存的所有人的动态,等用户登录的时候,会取出100条来显示。

这些内容都放在 feed表中。


smarteng 发布于 2010-06-19 13:05

如何打造十页完美计划书

第一,用几句话清楚说明你发现目前市场中存在一个什么空白点,或者存在一个什么问题,以及这个问题有多严重,几句话就够了。很多人写了三百张纸,抄上一些 报告。投资人天天看这个,还需要你教育他吗?比如,现在网游市场里盗号严重,你有一个产品能解决这个问题,只需要一句话说清楚就可以。

第二,你有什么样的解决方案,或者什么样的产品,能够解决这个问题。你的方案或者产品是什么,提供了怎样的功能?
第三,你的产品将面对的用户群是哪些?一定要有一个用户群的划分。
第四,说明你的竞争力。为什么这件事情你能做,而别人不能做?是你有更多的免费带宽,还是存储可以不要钱?这只是个比方。否则如何这件事谁都能干,为什么 要投资给你?你有什么特别的核心竞争力?有什么与众不同的地方?所以,关键不在于所干事情的大小,而在于你能比别人干得好,与别人干得不一样。
第五,再论证一下这个市场有多大,你认为这个市场得未来是怎么样?
第六,说明你将如何挣钱?如果真的不知道怎么挣钱,你可以不说,可以老老实实地说,我不知道这个怎么挣钱,但是中国一亿用户会用,如果有一亿人用我觉得肯定有它的价值。想不清楚如何挣钱没有关系,投资人比你有经验,告诉他你的产品多有价值就行。
第七,再用简单的几句话告诉投资人,这个市场里有没有其他人在干,具体情况是怎样。不要说“我这个想法前无古人后无来者”这样的话,投资人一听这话就要打 个问号。有其他人在做同样的事不可怕,重要的是你能不能对这个产业和行业有一个基本了解和客观认识。要说实话、干实事,可以进行一些简单的优劣分析。
第八,突出自己的亮点。只要有一点比对方亮就行。刚出来的产品肯定有很多问题,说明你的优点在哪里。
第九,倒数第二张纸做财务分析,可以简单一些。不要预算未来三年挣多少钱,没人会信。说说未来一年或者六个月需要多少钱,用这些钱干什么?
第十,最后,如果别人还愿意听下去,介绍一下自己的团队,团队成员的优秀之处,以及自己做过什么。
一个包含以上内容的计划,就是一份非常好的商业计划书了。
 


smarteng 发布于 2010-01-10 09:55
    1 2