最新文章

摘要 序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式、大数据量系统设计...

阅读(115501)  推荐(41)  序列化 反序列化  发布于 2015-04-23 17:01

尾调用优化 编程基础

尾调用(Tail Call)是函数式编程的一个重要概念,本文介绍它的含义和用法。 一、什么是尾调用? 尾调用的概念非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。function f(x){ return g(x);} 上面代码中,函数f的最后一步是调用函数g,这...

阅读(2657)  推荐(4)  函数式编程 尾调用  发布于 2015-04-22 09:25

淘宝搜索排序的目的是帮助用户快速的找到需要的商品。从技术上来说,就是在用户输入关键词匹配到的商品中,把最符合用户需求的商品排到第一位,其它的依次排在后续相应的位置。为了更好的实现这个目标,算法排序系统基本按三个方面来推进: 一、算法模型 当用户输入关键词进行搜索的时候,系统依据算法模型来给匹...

阅读(15263)  推荐(22)  淘宝 搜索  发布于 2015-04-21 16:58

对象的职责 软件设计

对象和数据的主要差别就是对象有行为,行为可以看成责任职责(responsibilities以下简称职责)的一种,理解职责是实现好的OO设计的关键。“Understanding responsibilities is key to good object-oriented design”—Mart...

阅读(2169)  推荐(4)  面向对象 DDD  发布于 2015-04-21 10:54

好对象的7大美德 编程基础

英文原文:Seven Virtues of a Good Object Marin Folwer 说过:“库本质上是一组可以调用的函数,这些函数现在经常被组织到类中。” 函数组织到类中?恕我冒昧,这个观点是错误的。而且这是对面向对象编程中类的非常普遍的误解。类不是函数的组织者,对象也不是数据...

阅读(3522)  推荐(8)  面向对象  发布于 2015-04-19 21:56

缘由 之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验。在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 当时看到这个问题正好在乘公车回家的路上,闲来无聊就答了一把。在zzz在微...

阅读(10301)  推荐(31)  iOS 架构设计  发布于 2015-04-17 17:59

目标 通过引导、任务分配和沟通反馈等方式,让他逐步适应团队正常工作面临的压力、节奏和不确定性。对于一些心理预期过高的领导者,在此阶段应该明白,对于一个新手,还暂时谈不上能力判断和机会给予。 方式 创造良好的工作气氛:信任是第一位的。只有相互信任,才能把工作放手交给新手去做;另一方面,在他们...

阅读(6363)  推荐(19)  程序员 团队建设  发布于 2015-04-16 18:19

引言 微博是一个很多人都在用的社交应用。天天刷微博的人每天都会进行着这样几个操作:原创、转发、回复、阅读、关注、@等。其中,前四个是针对短博文,最后的关注和@则针对的是用户之间的关系,关注某个人就意味着你成为他的粉丝,而他成为你的好友;@某个人意味着你想要他看到你的微博信息。 微博被人们认为...

阅读(4911)  推荐(17)  机器学习 社交网络分析 算法 微博  发布于 2015-04-15 20:19

现在的很多公司,包括 Google 和我现在的公司 Coverity,都喜欢一种“测试驱动的开发”(test-driven development)。它的原理是,在写程序的时候同时写上自动化的“单元测试”(unit test)。在代码修改之后,这些测试可以批量的被运行,这样就可以避免不应该出现的...

阅读(2259)  推荐(7)  TDD  发布于 2015-04-15 14:48

《西游记》中的唐僧团队历经千难万险,终于求得真经,目标明确、分工合理为这支队伍最终走向成功奠定了基础。唐僧从一开始,就为这个团队设定了西天取经的目标,虽然经历各种挫折与磨难,但目标从未动摇。悟空探路、八戒牵马、沙僧挑担,几位徒弟一起肩负着保护唐僧的任务。虽然性格迥异、各有缺点,但目标分解合理及成...

阅读(4490)  推荐(17)  团队管理  发布于 2015-04-14 22:48

英文原文:Mobile App Testing - The Secret to the Perfect App 打造完美移动应用的关键 上个季度,你刚刚花了大半个季度的时间,开发最新版本的移动应用程序。这是一项必须完成的工作。最近的主流移动操作系统升级让你的应用具备了新的能力。你的竞争对手已...

阅读(2333)  推荐(1)  测试 移动测试  发布于 2015-04-13 22:02

一、 面向对象,这个对象到底是什么? 这个对象不是C#中的实例,C#中我们把一个类的实例也叫做对象,这种对象严格的说应该是面向对象的编程实现(OOP)中的对象,面向对象编程,也不是面向类的实例编程。对象的定义是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体...

阅读(14408)  推荐(28)  面向对象 OOP  发布于 2015-04-13 18:09

原文链接:*-Driven* do not change anything 你曾听说过一名专业软件开发人员应该掌握一种驱动方法吗?这些驱动方法可能是:领域驱动设计(Domain-Driven Design)、测试驱动开发(Test-Driven Development)、行为驱动开发(Beha...

阅读(1166)  推荐(4)    发布于 2015-04-12 15:49

推行TDD的思考 软件设计

目前来看,推行TDD的障碍大约有如下几点:1. 开发人员的质量意识;2. 分析需求并进行任务分解的能力;3. 将测试作为开发起点的开发习惯;4. 开发人员的重构能力,包括如何识别坏味道和如何运用重构手法;5. 单元测试的基础设施,尤其是测试数据准备; 开发人员的质量意识 开发人员对于软件质量...

阅读(1967)  推荐(5)  TDD  发布于 2015-04-12 13:56

英文原文:The Log: What every software engineer should know about real-time data's unifying abstraction 我在六年前的一个令人兴奋的时刻加入到LinkedIn公司。从那个时候开始我们就破解单一的、集中式...

阅读(9924)  推荐(10)  大数据 LinkedIn Hadoop  发布于 2015-04-10 18:51

真正的发现之旅不在于追求新大陆,而在于拥有新的视野。——马塞尔•普鲁斯特(Marcel Proust,1871.7.10—1922.11.18),法国20世纪最伟大的小说家,意识流小说的先驱与大师 那么,现在该怎么做? 有效的改变 当你决心改变时,大脑并不是一定会与我们合作。虽然你有学习的意愿...

阅读(7838)  推荐(15)  程序员 思维训练  发布于 2015-04-10 13:47

英文原文:The Elusive Dependency 我猜你一定了解以下这种感觉:你马上要准备在某个项目审查会议中发言,而你已知道自己陷入了麻烦中。看看这个仅有5页的幻灯片,你深切地感觉到这个会议注定不会进行得很顺利。即使经过连续三个晚上的通宵奋战,将原本16页的演讲精简为4页的模板,你也无...

阅读(3110)  推荐(2)  企业架构 架构设计  发布于 2015-04-09 19:46

小时候,老师问我,你的理想是什么?我不假思索说是工程师,于是长大之后果然成了工程师。 工作这么多年,一直在思考工程师这三个字的意义,终于有一天恍然大悟,原来就是:用技术手段改进世界。 那么,在软件方面,目前的世界有哪些问题需要解决呢?有这么一些问题可以思考:现在整个世界的信息化程度是偏高还是...

阅读(6195)  推荐(29)  程序员  发布于 2015-04-09 12:11

源头 “算法”的中文最早出现在中国汉代的数学名著《周髀算经》中。《周髀算经》卷上有:“数之法出于圆方。圆出于方,方出于矩。矩出于九九八十一”。意思是: 算数的方法都出于对圆、对方的计算,其中圆出于方(圆形面积=外接正方形x圆周率/4),方出于矩(正方形源自两边相等的矩),矩的计算出于九九八十一...

阅读(11121)  推荐(24)  算法  发布于 2015-04-01 20:04

关于事件流处理,在不同的场景中有不同的概念。有人称之为流处理,有人称之为事件溯源或CQRS,还有人称之为“复杂事件处理(Complex Event Processing)”。不管名称是什么,它们的基本原则都是一样的。Martin Kleppmann是Apache Samza的贡献者。在本文中,我...

阅读(3298)  推荐(4)  CQRS 软件框架 软件架构  发布于 2015-03-31 18:39