司马刘的日志

分享工作,分享生活。

Skip to: Content | Sidebar | Footer

Category: 杂项

[北京]诚聘 Java 工程师

1 九月, 2010 (13:08) | 杂项 | By: 司马 刘

我们目前在研发一套分布式数据访问中间件(关于中间件的介绍请浏览 blog:http://www.longker.org/,http://www.simaliu.com/),由于团队成员离职,现邀有志之士加入。
我们可以提供:
自由宽松的工作环境;
足有竞争力的薪酬;
大致要求如下:
诚实、正直、敬业、有责任感,有较好的沟通能力和团队精神;
有较强的学习能力和领悟能力,能够自主学习;
基本功扎实,了解常用的数据结构和算法;
熟悉以下语言中一种以上: java,python,php,c。
符合以下条件的优先考虑:
熟练掌握 java 程序设计与开发,编程能力强;
有 python、php 等脚本语言使用经验;
理解能力强,有较强的软件设计能力;
善于协作和沟通,有责任心,对新技术能快速学习并掌握;
所有要求都不是强制的,如果你有兴趣、有责任心,请别犹豫,赶快发简历至
关于公司:
手机之家(http://www.imobile.com.cn/)自 2002 年创办,是中国最大的面向消费者的手机及移动设备网站。在 GOOGLE 以及百度等搜索引擎上,有关手机的关键词,手机之家的排名均非常靠前。根据百度数据研究中心发布的 2009 年上半年行业报告显示,“手机之家”是网民最关注的手机及相关产品资讯网站,以超过一半(55.71%)的关注份额位居第一。 公司旗下还拥有多家电子商务站点:如:烧包网,18900等等。

一年又过去了

31 十二月, 2009 (22:46) | 杂项, 生活 | By: 司马 刘

首先祝大家新年快乐!
转眼一年又要过去了,我给自己 2009 年打 70 分。在工作上我还比较认真,我觉得老板给了你一份工作,要不就认真做,要不就走人。09 年在读书学习这方面做的不好,先后也买了一些书,但是完整看完的很少,以后要杜绝浮躁,静心花些时间来读书。08 年最后一天领结婚证了,但是我觉得这一年还没有很好的尽到一个做丈夫的责任,没有多花点时间陪老婆,以后也要好好改进。自从 07 年工作以来,身体持续发福,后面不一定有很多时间来锻炼,但是一定要控制饮食。
时不待我,我不待时。

MySQL 的 master-slave 复制实施细节

19 十二月, 2009 (18:34) | 杂项 | By: 司马 刘

很多 WEB 站点使用 MySQL 的 master-slave 结构,写请求都在 master 数据库上操作,读请求都在 slave 数据库上操作,这样就减轻了单台数据库的读写压力。MySQL 是如何实现数据从 master 到 slave 的同步呢?
当 slave 发起了 START SLAVE 指令时,slave 会创建一个线程来连接 master,让 master 发送二进制的更新日志。当然这里有两点要明确的:1)master 必须记录二进制更新日志;2)slave 必须告知 master 要从哪个点开始复制二进制日志。master 收到 slave 的请求后,也会创建一个线程,从指定的点开始给 slave 发送二进制日志。slave 会有另外一个线程根据接收到的二进制日志来更新本地数据。这样就实现了 master 到 slave 之间的数据同步。

大规模并行计算简介

29 十一月, 2009 (18:35) | 开发, 杂项 | By: 司马 刘

当今信息化时代,计算机需要处理的信息量呈几何级数增加,但是由于 CPU 架构本身的局限,CPU 时钟频率提升已经遇到了瓶颈.而最初只作为图形处理的 GPU 的可编程性日益增加使得很多科学家开始使用 GPU 来运行通用的计算程序.今天我给大家简单介绍一下 GPU 以及 CUDA 架构.
为什么 GPU 适合做大规模并行计算?
GPU 当初设计就是用来做图形处理的,而图形处理本身就是高密度,高并行的计算.请看下图:

GPU 的计算单元非常密集,可以让多个线程在多个不同的计算单元上同时运行,而 CPU 上的进程切换是一个很耗资源的操作,进程内的多个线程共享一份内存和寄存器,CPU 上的多线程并行和 GPU 的多线程并行性能必定有很大的差距.但是 CPU 的复杂的指令流控制是 GPU 的弱项.所以目前大多采用若干个 CPU 和若干个 GPU 来构建大规模并行计算系统,应用程序的顺序部分在 CPU 上运行,计算密集型部分在 GPU 上运行.
CUDA 是什么?
简单来说 CUDA 就是通用的并行计算架构.包括硬件指令集和并行编程模型.请看下图:

目前应用程序可以通过 C 语言来使用 CUDA 架构,从而解决很多复杂的计算问题.其他的诸如 FORTRAN,C++,OpenGL 和 DirectX 等语言或者编程接口会陆续支持.
如何在 CUDA 的编程模型上开发并行运行的程序?
CUDA 编程模型扩展了 C 语言,可以使用扩展语法调用 C 语言定义的特殊函数(这种特殊函数称作 kernel).请看下面的代码:

当用 CUDA 扩展语法调用 kernel [...]

google 出错了……

29 十一月, 2009 (00:14) | 杂项 | By: 司马 刘

2009 年 11 月 29 日临晨 0 点 10 分左右打开 www.google.cn 出现了 502 错误,持续了几分钟……

这次应该不是实习生搞的吧?

SD 2.0 大会第三天

24 十月, 2009 (21:29) | 杂项 | By: 司马 刘

今天是大会的最后一天.
上午第一节是关于 Ophone 应用开发的.自从 Apple 开创了 AppStore,不知有多少公司效仿.听今天的讲解,Ophone 做的也很一般,用户体验比较差,开发者上传应用很麻烦,不知有多少人愿意去做 Ophone 平台的开发.如果是我,我可能会选择 Iphone 的开发.
第二节听了康晓宁的<<网站那些事儿>>,讲的都是些中型网站经常用到的架构和优化方法.如:数据库主从,WEB 加速,前端优化等等.
下午第一节是我们手机之家大牛”超前”和大家分享的 Data Access Layer 研发实践,超前博客上有具体的内容,我就不多说了.
下午第二节听了两个地方的,<<B2B视频广告平台架构剖析>>听了一点就走了,对这块了解不多,也没兴趣.高焕堂的 Android 相关的内容讲的诙谐幽默,也有独到的思考.他仔细解释了为何”平台为王”,也建议大家在一个领域深入研究,我觉得这些对我将来的职业规划有很大的帮助.
接下来一节是讲基于 WEB 的 3D,会场里的人陆续走了,我觉得还比较有意思,坚持听完了,对 3D 有了一些了解.大体来说就是把大量 2D 的图片数据用引擎渲染出来.如果将来能在 WEB 游戏里用到 3D 场景,游戏体验一定会有所提升.
最后一节是黄冬讲的<<大规模消息系统的架构>>,黄老师生动幽默的讲述了他们在自主开发一套适应自身业务的消息系统中遇到的问题和吸取的经验.最终总结出以下几点:让数据尽量靠近CPU;减少重复的计算;用成熟的协议.这些经验是比较通俗,但是在实际操作中未必能做的很好.

SD 2.0大会第二天

23 十月, 2009 (22:54) | 杂项 | By: 司马 刘

上午第一节是 Bill Venners 讲的 Scala 语言.整个演讲中提到的都是 Scala 语言的优点:简单,灵活,还有 Java 不具备的一些特性等等,感觉 Scala 势必替代 Java.其实我对 Scala 语言的认识很少,今天来听这节课也就是为了对 Scala 有更多的了解,Scala 语言确实比 Java 灵活,但这未必是好事.如: Scala 可以动态的给 Object 增加属性和方法,我觉得这种灵活性对代码的可读性和可维护性有极大的损害;还有函数体可以这样写:
if (a > b) a else b
返回值不用写 return,写起来是简单了,但是维护起来就不好了,如果没有明显的 return 语句,我相信代码改过多次极有可能出错.除此之外 Scala 还提供了个性的函数定义和函数调用的写法,可能是为了看起来更”函数式”,但是我觉得这些小技巧有弊而无利.我的一个经验是只要语言提供了一些小技巧,程序员就会去用,而这些小技巧恰是维护的噩梦.
第二节是 Gary 讲的 Iphone SDK 简介.很自豪的说,这节课的英文基本全听懂了,对 Iphone 的应用开发也有一些了解.苹果公司在 SDK 上作了很多工作,目前 SDK 提供的接口确实很丰富.我不打算在这个平台上做开发,了解一下也不错.
下午第一节听了杨硕讲的 symbian 系统的发展.主要是自从 nokia 收购 symbian 之后成立了软件基金会,以及基金会的具体运作情况.对这些不是很懂,不发表看法.
Amazon 的演讲和预期的一样,又做了很多广告.其中也提到一些提高系统的稳定性,可靠性的一些措施,具体的实现估计很复杂,也没具体说.
蔡学镛讲的 DSL 是我以前接触很少的知识,所以特意选了这节课.因为以前了解的不多,所以听下来觉得收获不少.我觉得软件的抽象设计这方面理论确实有很多,真正到实际情况都是靠经验,因人而异.
最后一节是云风讲的<<C/C++ [...]

SD 2.0大会第一天

22 十月, 2009 (17:48) | 杂项 | By: 司马 刘

早上六点多起床,从双井站出发,不到八点就到了天通苑北.等了半小时的班车才到,大概乘班车十几分钟就到了目的地宏福大厦.
上午第一节微软讲的<<未来软件开发的”云和端”>>没多大意思,微软在互联网和云计算方面落后太多了,当然也讲不出什么东西.
阿里的王老师在云计算方面倒是有很多发人深思的见解 — 数据驱动的云计算,当今能称的上拥有云计算技术的公司无不处理着海量的数据,并且基于这些数据提供服务.
IBM 的 Robert Degg 讲到在 IBM 如何实施敏捷开发,总结一下还是看情况而定,根据团队能力和经验具体实施.其中也提到很多团队管理的经验,如尽量发掘,发挥团队成员的能力.
Bill Venners 讲到开发语言的发展趋势,大体意思就是动态语言,函数式语言,高层语言会是主流, Scala 可能会取代 Java.我觉得 Scala 的语法可能就是它的致命缺点.目前的主流开发语言的语法都是源于 C 语言,除非用 C/C++,Java 不能解决现有问题,否则不会有很大的动力转到 Scala 上的.还有我相信 Scala 目前的某些特性在 Java 的新版本中也会有的.
关于 Visual Studio 2010 的演讲只听了一部分,大体上就是 VS 整合了很多项目管理的工具.个人不太喜欢 MS,并且 MS 的步伐越来越迟缓了.
下午第一节是一个院士讲的<<云计算的技术与发展>>,我个人觉得非常无聊,像大学老师讲课一样,并且也没什么深度.估计其他人也是同感.看大家在”做啥“上发表的言论就知道.
接着就是关于移动平台,腾讯的搜索,讲的都很浅显,没多大收获.
TurboLinux 创始人讲的 <<怎么做”傻瓜计算机”>>还很有意思,这位外国友人通篇都用流利的中文演讲,大家都很敬佩.演讲的主要内容是基于 linux 开发个性化的操作系统.其中的有一经典语录:”我们要感谢微软,如果不是微软开发出这么慢的操作系统,我们哪有商业机会.”