摘要: 最近一直反复地看博客园以前发布的一条.NET全栈开发工程师的招聘启事,觉得这是我看过最有创意也最朴实的一个招聘启事,更为重要的是它更像是一个技术提纲,能够指引我们的学习和提升,现在转载过来与各位园友分享。阅读全文
posted @ 2015-09-18 23:56 Edison Chou 阅读(7165) 评论(37) 编辑
摘要: 为了赶上大数据时代的发展,迎接云计算的思维,我选择业余时间学习Hadoop。我会从Hadoop1.x版本开始学习经典的HDFS与MapReduce,然后了解Hadoop2.x版本与老版本的差异,熟悉一些常见的Hadoop应用场景,并学着实践一个经典的网站日志数据分析案例。阅读全文
posted @ 2015-04-20 00:15 Edison Chou 阅读(6090) 评论(6) 编辑
摘要: 写博客是一个既痛苦又快乐的征途,作为一个计算机专业的毕业生,作为一个IT行业的从业者,看博客、评博客、写博客是一份坚持和一个习惯。每一次写博文,我都力求深入浅出,充分地多使用相关图片补充介绍,也形成了一个自己的写作风格。我会坚持,记录自己所学所见所感,分享给各位园友。阅读全文
posted @ 2014-07-15 09:26 Edison Chou 阅读(5354) 评论(10) 编辑
摘要: 在生活中,我们装修新房的最后几道工序之一是安装插座和开关,通过开关可以控制一些电器的打开和关闭,例如点灯或换气扇。在购买开关时,用户并不知道它将来到底用于控制什么电器,也就是说,开关与电灯、换气扇并无直接关系,一个开关在安装之后可能用来控制电灯,也可能用来控制换气扇或者其他电器设备。相同的开关可以通过不同的电线来控制不同的电器。在软件开发中也存在很多与开关和电器类似的请求发送者和接受者对象,例如一个按钮,它可能是一个“关闭窗口”请求的发送者,而按钮点击事件处理类则是该请求的接受者。为了降低系统的耦合度,将请求的发送者和接收者解耦,可以使用一种被称为命令模式的设计模式来设计系统。阅读全文
posted @ 2017-08-13 23:15 Edison Chou 阅读(221) 评论(0) 编辑
摘要: 俗话说条条大路通罗马,很多情况下实现某个目标地途径都不只一条。在软件开发中,也会时常遇到这样的情况,实现某一个功能有多条途径,每一条途径都对应一种算法。此时,可以使用一种设计模式来实现灵活地选择解决途径,也能够方便地增加新的解决途径。阅读全文
posted @ 2017-08-06 17:09 Edison Chou 阅读(304) 评论(0) 编辑
摘要: 在现实生活中,很多事情都需要经过几个步骤才能完成,例如请客吃饭,无论吃什么,一般都包含:点单、吃东西、买单等几个步骤,通常情况下这几个步骤的次序是:点单->吃东西->买单。在这3个步骤中,点单和买单大同小异,最大的区别在于第2步-吃什么?吃面条和吃满汉全席可大不相同。在软件开发中,有时候也会遇到类似的情况,某个方法的实现需要多个步骤(类似于“请客”),其中有些步骤是固定的,而有些步骤则存在可变性。为了提高代码复用性和系统灵活性,可以使用一种称之为模板方法模式的设计模式来对这类情况进行设计。阅读全文
posted @ 2017-07-31 22:15 Edison Chou 阅读(78) 评论(0) 编辑
摘要: 在患者就医时,医生会根据病情开具处方单,很多医院都会存在以下这个流程:划价人员拿到处方单之后根据药品名称和数量计算总价,而药房工作人员根据药品名称和数量准备药品,如下图所示。在软件开发中,有时候也需要处理像处方单这样的集合对象结构,在该对象结构中存储了多个不同类型的对象信息,而且对同一对象结构中的元素的操作方式并不唯一,可能需要提供多种不同的处理方式。在设计模式中,有一种模式可以满足上述要求,其模式动机就是以不同的方式操作复杂对象结构,该模式就是访问者模式。阅读全文
posted @ 2017-07-30 20:06 Edison Chou 阅读(285) 评论(1) 编辑
摘要: 在日常生活中,交通信号灯指挥者日益拥挤的城市交通。红灯亮,汽车停止;绿灯亮,汽车继续前行;在这个过程中,交通信号灯是汽车的观察目标,而汽车则是观察者。随着交通信号灯的变化,汽车的行为也会随之变化,一盏交通信号灯可以指挥多辆汽车。在软件系统中,有些对象之间也存在类似交通信号灯和汽车之间的关系,一个对象的状态或行为的变化将会导致其他对象的状态或者行为也发生改变,它们之间将产生联动,正所谓牵一发而动全身。为了更好地描述对象之间存在的这种一对多的联动,观察者模式应运而生。阅读全文
posted @ 2017-07-27 00:22 Edison Chou 阅读(77) 评论(0) 编辑
摘要: 相信大家都玩过类似于“斗地主”的纸牌游戏,某人出牌给他的下家,下家看看手中的牌,如果要不起,则将出牌请求转发给他的下家,其下家再进行判断。一个循环下来,如果其他人都要不起该牌,则最初的出牌者可以打出新牌。在这个过程中,纸牌作为一个请求沿着一条链在传递,每一位纸牌的玩家都可以处理该请求。在设计模式中,也有一种专门用于处理这种请求链式的模式,它就是职责链模式。阅读全文
posted @ 2017-07-23 23:36 Edison Chou 阅读(412) 评论(0) 编辑
摘要: 最近开启了追剧模式,不知道什么时候开始追起家庭伦理类的电视剧,或许是年龄到了吧。这部剧仍然延续了近年来的趋势,以离婚为主旋律,讲述了一个做了10年全职太太,只知道买买买的上海小女人,从离婚后无依无靠无法生活到坚强独立重新做回自己的过程。阅读全文
posted @ 2017-07-18 22:51 Edison Chou 阅读(161) 评论(1) 编辑
摘要: 所谓代购,简单说来就是找人帮忙购买所需要的商品。代购分为两种类型,一种是因为在当地买不到某件商品,又或者是因为当地这件商品的价格比其他地区的贵,因此托人在其他地区甚至国外购买该商品,然后通过快递发货或直接携带回来。另一种则是消费者对想要购买的商品相关信息的缺乏,自己无法确定其实际价值,因此只好委托中介讲价或购买。在软件开发中,有一种设计模式可以提供与代购类似的功能,由于某些原因,客户端不想或者不能直接访问某个对象,此时可以通过一个称之为“代理”的第三者来实现间接访问,该方案对应的设计模式则被称为代理模式。阅读全文
posted @ 2017-07-17 23:38 Edison Chou 阅读(84) 评论(0) 编辑
摘要: 现在在大力推行节约型社会,“浪费可耻,节俭光荣”。在软件系统中,有时候也会存在资源浪费的情况,例如,在计算机内存中存储了多个完全相同或者非常相似的对象,如果这些对象的数量太多将导致系统运行代价过高。那么,是否存在一种技术可以用于节约内存使用空间,实现对这些相同或者相似对象的共享访问呢?答案是肯定的,这种技术就是享元模式。阅读全文
posted @ 2017-07-11 00:17 Edison Chou 阅读(57) 评论(0) 编辑
摘要: 在软件开发中,有时候为了完成一项较为复杂的功能,一个类需要和多个其他业务类交互,而这些需要交互的业务类经常会作为一个完整的整体出现,由于涉及的类比较多,导致使用时代码较为复杂,此时,特别需要一个类似服务员一样的角色,由他来负责和多个业务类进行交互,而使用这些业务类的类只需要和该类进行交互即可。外观模式通过引入一个新的外观类来实现该功能,外观类充当了软件系统中的“服务员”,它为多个业务类的调用提供了一个统一的入口,简化了类与类之间的交互。阅读全文
posted @ 2017-07-06 23:14 Edison Chou 阅读(82) 评论(0) 编辑
摘要: 想要学习设计模式,你得先会看类图,这里带你一张图读懂UML类图。本文非原创,而是转载自圣杰的简书,欢迎关注他。阅读全文
posted @ 2017-07-03 16:38 Edison Chou 阅读(179) 评论(0) 编辑
摘要: 虽然目前房价依旧很高,就连我所在的成都郊区(非中心城区)的房价均价都早已破万,但却还是阻挡不了大家对新房的渴望和买房的热情。如果大家买的是清水房,那么无疑还有一项艰巨的任务在等着大家,那就是装修。对新房的装修并没有改变房屋用于居住的本质,但它可以让房子变得更加漂亮和温馨以及更加实用。在软件设计中,也有一种类似于新房装修的技术可以对已有的功能进行扩展使之更加符合用户需求,从而使得对象具有更加强大的功能,这便是本次即将介绍的装饰模式。阅读全文
posted @ 2017-07-02 17:57 Edison Chou 阅读(79) 评论(0) 编辑
摘要: 树形结构在软件中随处可见,比如操作系统中的目录结构,公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题。组合模式通过一种巧妙的设计方案来使得用户可以一致性地处理整个树形结构或者树形结构的一部分,也可以一致地处理树形结构中的叶子节点(不包含子节点的节点)和容器节点(包含子节点的节点),本次我们就将学习一下用来处理树形结构的组合模式。阅读全文
posted @ 2017-06-26 23:54 Edison Chou 阅读(61) 评论(0) 编辑
摘要: 在现实生活中,我们常常会用到两种或多种类型的笔,比如毛笔和蜡笔。假设我们需要大、中、小三种类型的画笔来绘制12中不同的颜色,如果我们使用蜡笔,需要准备3*12=36支。但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及的对象个数仅为3+12=15,远远小于36却能实现与36支蜡笔同样的功能。如果需要新增一种画笔,并且同样需要12种颜色,那么蜡笔需要增加12支,而毛笔却只需要新增1支。在软件系统中,有些类型由于自身的逻辑,它具有两个或多个维度的变化。为了解决这种多维度变化,又不引入复杂度,这就要使用今天介绍的Bridge桥接模式。阅读全文
posted @ 2017-06-10 21:33 Edison Chou 阅读(399) 评论(2) 编辑
摘要: 自从订阅了吴军老师的《硅谷来信》之后,对其中一篇介绍Google的目标管理方法OKR的文章记忆犹新。想到自己喜欢在每年年初的时候给自己定制一些规划,于是乎了解了一下OKR并重构了一下我的2017年计划,并借此机会进行一个年中(不是终)回顾,希望能有越来越多人使用OKR给自己设定目标规划,并努力去完成计划,当一年结束时看看自己完成的情况,会有不自觉地自豪感(前提是你得尽力去完成60%以上的情况下)。阅读全文
posted @ 2017-06-07 22:10 Edison Chou 阅读(218) 评论(0) 编辑