自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

华仔-技术博客

前阿里P9,《编程的逻辑》《从零开始学架构》《大厂晋升指南》《架构实战营》

  • 博客(152)
  • 资源 (11)
  • 收藏
  • 关注

原创 连载:面向对象葵花宝典:思想、技巧与实践(31) - OCP原则

OCP,Open-Closed Principle,中文翻译为“开闭原则”。 当我第一次看到OCP原则时,我的感觉就是这原则也太抽象了吧,什么开,什么闭呢? 然后我去寻找更加详细的答案,最经典也是最常见的解释就是维基百科了:http://en.wikipedia.org/wiki/Open/closed_principle "software entities (classes, modules,

2014-05-14 09:36:01 4387 4

原创 连载:面向对象葵花宝典:思想、技巧与实践(30) - SRP原则

前面详细阐述了“高内聚低耦合”的总体设计原则,但如何让设计满足这个原则,并不是一件简单的事情,幸好各位前辈和大牛已经帮我们归纳总结出来了,这就是“设计原则”和“设计模式”。毫不夸张的说,只要你吃透这些原则和模式并熟练应用,就能够做出很好的设计。==================================================================【SRP原则详解】SRP

2014-05-08 09:55:40 4763 4

原创 连载:面向对象葵花宝典:思想、技巧与实践(29) - 高内聚低耦合

高内聚低耦合,可以说是每个程序猿,甚至是编过程序,或者仅仅只是在大学里面学过计算机,都知道的一个简单的设计原则。虽然如此流行和人所众知,但其实真正理解的人并不多,很多时候都是人云亦云。===============================================================要想真正理解“高内聚低耦合”,需要回答两个问题:1)为什么要高内聚低耦合?2)高内聚低耦合

2014-05-05 19:57:46 5721

原创 连载:面向对象葵花宝典:思想、技巧与实践(28) - 设计原则:内聚&耦合

前面通过实例讲解了一个一环扣一环的面向对象的开发流程:用例模型 -> 领域模型 -> 设计模型(类模型 + 动态模型),解答了面向对象如何做的问题。接下来我们就要讲“如何做好面向对象设计”的技巧了===================================================================参考维基百科的解释,内聚的含义如下:cohesion refers t

2014-04-25 16:35:39 4791 2

原创 连载:面向对象葵花宝典:思想、技巧与实践(27) - 动态模型设计

类模型指导我们如何声明类,动态模型指导我们如何实现类!动态模型设计一般都是在类模型设计完成后才开始,因为动态模型设计的时候一般都需要用到类模型中的类。相对类模型来说,动态模型要相对简单一些,主要原因在于动态模型设计的时候没有什么设计原则和设计模式需要应用,只需要对照用例模型,根据用例模型的特点,选取一个合适的动态模型将其表述出来即可。动态模型在实际开发过程中有非常重要的作用,简单来说,如果没有动态

2014-04-22 17:19:28 5460 19

原创 连载:面向对象葵花宝典:思想、技巧与实践(26) - 类模型三板斧

类模型设计其实就是程咬金打天下 -- 三板斧 而已 :)第一斧(照猫画虎):领域类映射面向对象类设计首先要解决的一个问题是:类从哪里来 ?有的人可能会认为,要发挥想象力、创造力。。。。。等各种“力”——这种方法的主要问题是:我们不是在进行纯粹的艺术创造,而是要最终满足客户需求,而不能天马行空。有的人可能会想到,参考其它的系统吧,把类似系统拿过来改吧改吧 ——这种方法的主要问题是:如果没有其它类似系

2014-04-15 10:18:39 7662 9

原创 连载:面向对象葵花宝典:思想、技巧与实践(25) - 类模型

面向对象设计和弹吉他差不多,有很多成熟的理论和技巧,学会弹吉他并不难,但要成为吉他高手或者大师,还是要靠个人天分!【师傅领进门,修行在个人】“类模型”是整个面向对象设计模型的核心,是面向对象设计阶段的主要输出,也是设计师们最能够发挥自己才能的地方。 虽然“类模型”如此重要,但面向对象设计技术经过几十年的发展后,目前已经形成了很成熟的一套体系,因此真正在进行“类模型”设计的时候,其实难度并不高,这也

2014-04-11 16:52:36 4767 9

原创 连载:面向对象葵花宝典:思想、技巧与实践(24) - 设计模型

完成领域类到软件类的转换,这就是面向对象领域设计阶段的主要任务。经过领域模型的分析后,面向对象已经初具雏形,但领域类并不能指导我们进行编码工作,因为领域类只是从用例模型中提炼出来的反应业务领域的概念,而并不是真正意义上的软件类。 “革命尚未成功,同志还需努力”,我们需要再进一步,完成领域类到软件类的转换,这就是面向对象领域设计阶段的主要任务。 设计阶段是整个面向对象分析和设计的高潮阶段。在设计阶段

2014-04-10 16:01:52 5199 3

原创 连载:面向对象葵花宝典:思想、技巧与实践(23) - 领域建模三字经

看起来有点不可思议,需求阶段“白纸黑字”的用例文档,经过我们一步一步的操作,逐步就得到了“图形化”的领域模型,面向对象初具雏形。领域建模的三字经方法:找名词、加属性、连关系。 我们接下来以一个样例看看领域模型具体如何建模。1.1. 找名词我们以POS机买单的用例来看看具体如何建领域模型。 首先,将用例中所有的名词挑选出来(如下用例文档中蓝色加粗的词组):【用例名称】买单【场景】Who:顾客、收银员

2014-04-02 13:55:47 9811 13

原创 连载:面向对象葵花宝典:思想、技巧与实践(22) - 领域模型

领域模型是面向对象分析和设计的第一步!!完成了需求分析之后,我们已经有了一个良好的开端,但我们的主角“面向对象”还不见踪影。前面我们提到,需求分析和面向对象是没有直接关系的,需求分析阶段是不区分是面向对象还是面向过程,那么什么时候才真正开始面向对象的工作呢? 答案就在本章:领域建模。从领域模型开始,我们就开始了面向对象的分析和设计过程,可以说,领域模型是完成从需求分析到面向对象设计的一座桥梁。 领

2014-03-24 18:02:46 5622 3

原创 连载:面向对象葵花宝典:思想、技巧与实践(21) - SSD

用例图是用来描述系统的,而SSD(系统序列图)又是来描述用例的,oh my god,这不是在玩我们么?System Sequence Diagram,缩写为SSD(注意不要与SSD硬盘混淆),中文翻译为“系统顺序图”,主要用于描述某个用例的某个分支场景下,外部参与者与系统的交互过程。简单来说:SSD就是用例的可视化描述。 细心的朋友可能会发现,前面我们在介绍“用例方法”的时候说不需要画图,这里又说

2014-03-21 16:49:24 5197 10

原创 连载:面向对象葵花宝典:思想、技巧与实践(20) - 用例图的陷阱

你知道么,用例图 不是 用来描述 用例的哦!!!!熟悉UML的朋友都肯定知道,UML有一个叫做用例图的东东。单纯从名字上来看,你可能以为用例图是用来描述用例的,即:用例图 = 用例的图形化表示。 然而各位发明UML的大师们,却在无意中给我们设下了一个陷阱:所谓的用例图,不是用来描述用例,而是用来描述系统的图形。 听起来有点奇怪和别扭,既然是用来描述系统的图形,为什么叫做用例图,而不叫系统图呢? 这

2014-03-20 17:56:18 4914 7

原创 连载:面向对象葵花宝典:思想、技巧与实践(19) - 功能点提取

完成了用例之后,需求分析的工作基本上已经完成,接下来我们需要趁热打铁,完成另外一个事情:提取功能点! 有了用例之后,提取功能可以说是一个水到渠成的事情,基本上只是一个文字工作,我们只需要将用例中那些需要系统完成的事情——更简单的说:是动词——提取出来,就成为了系统的功能。 以前面的POS机为例,我们看看如何提取功能,如下粗体字即为提取的功能: 【用例名称】

2014-03-19 19:17:27 4937 1

原创 连载:面向对象葵花宝典:思想、技巧与实践(18) - 用例分析

很多人在分析需求的时候,采用的是东扯葫芦西扯瓢的方式,列出了很多的需求点,但当你看完后,你还是不知道到底要干嘛!!  ---- 写在前面

2014-03-17 10:17:48 5462 4

原创 连载:面向对象葵花宝典:思想、技巧与实践(17) - 需求分析518方法

对于大部分人来说,可能并没有机会进行需求分析,因为在大部分的公司里面,需求分析都是有很多工作经验的资深人员,或者是对系统很熟悉的老的开发人员。 所以,很多人都会对需求分析有一种景仰的心态,认为既然做需求的人要求这么高,那么需求分析一定很复杂、很难、很高级了。而且很多需求分析人员动不动就会教训“你要站在客户的角度”、“你要全面的分析”等,然后再抛出几个需求建模之类的玩意吓吓你。。。。。。

2014-03-12 11:11:16 6336 9

原创 连载:面向对象葵花宝典:思想、技巧与实践(16) - 需求分析终极目的

需求分析有三种级别,你自认为属于哪一级呢 ?需求分析的目的是什么? 你可能会毫不犹豫的回答:需求分析的目的当然是了解客户需要什么! 这个回答看起来是毫无疑问的,我们当然要了解客户需要什么,我们才能给他们做出他们想要的。但只做到这样就可以了么? 我们来看一个简单的需求,客户找到你说:“我要一只羊!”这个需求够简单吧?那你是不是毫不犹豫的就抓一只羊给客户呢?

2014-03-06 19:17:21 5725 4

原创 连载:面向对象葵花宝典:思想、技巧与实践(15) - 需求详解

很多人像老黄牛一样辛辛苦苦做了很多年软件开发,但却连“需求”到底是什么都不清楚。当然,没有人自己会承认这点!凡事都有一个开头,软件项目也不例外,对于软件项目来说,需求就是项目最开始的一个输入。 参考维基百科,需求定义如下:In systems engineering, a requirement can be a description of what a

2014-03-04 17:17:51 5088 8

原创 连载:面向对象葵花宝典:思想、技巧与实践(14) - 面向对象开发技术流程

抛开项目流程,让我们来谈谈“技术流程”吧!!谈到流程,很多人立刻就会想到熟悉的瀑布模型、螺旋模型、迭代开发、敏捷、RUP等一堆软件工程相关的软件开发流程,但对于大部分人来说,这些流程仅仅是项目管理上的概念,只有项目经理开例会时那红红绿绿的甘特图、燃尽图、路径图等,或者只有评估工作量和是否要加班的时候,我们才会意识到这些流程的存在。 通俗的讲,项目管理上的流程主要是用于指导项目经

2014-02-28 18:05:59 4428 3

原创 连载:面向对象葵花宝典:思想、技巧与实践(13) - “多态” 详解

在此要向将polymorphism翻译成“多态”的人致敬!因为多态的英文实在是太难理解了,而中文翻译得又如此形象如此贴切。 从字面意思上就可以看出,多态就是“多种形态”的意思。但仔细探究一下:“多种形态”其实还是没法很好的理解,不同的人也还是会有不同的理解。 动画片看得多的同学可能会以为:多种形态,就是很多种变身啦 :),就像孙悟空72变一样,一会儿可以变成房子,一会儿可以变成

2014-02-26 15:05:57 4395 8

原创 连载:面向对象葵花宝典:思想、技巧与实践(12) - “继承” 详解

继承 = 遗传继承是面向对象最基本的特征,如果一个语言没有继承机制,就谈不上真正的面向对象的语言。 继承本身很好理解,和我们日常生活中的“继承”概念基本一样:子承父业!所以,你可以看到面向对象的编程语言里面,有了“父类”、“子类”的概念。 但是我个人认为“继承”这个说法并不确切,一般我们理解“继承”,都是理解为继承产业、继承财产,例如李泽钜继承李嘉诚的事业。但在面向对象的领域里

2014-02-24 13:40:18 4414 3

原创 连载:面向对象葵花宝典:思想、技巧与实践(11) - “封装” 详解

封装的概念本身很好理解,意思就是把一堆东东装起来。 但要想真正理解封装,这样还远远不够。第一个问题是:我们要封装什么?这个问题很好回答,封装当然是封装不想让别人知道或者看到的东东了。例如:你的身家。。。。。。漂亮MM的年龄。。。。。。富二代的女朋友数。。。。。明星是否整过容。。。。。。你是如何赚到100万的(想想什么样

2014-02-21 11:10:06 4540 1

原创 连载:面向对象葵花宝典:思想、技巧与实践(10) - “抽象” 详解

抽象的中文概念非常形象,简单来说就是“抽取出来比较像的部分”。 那么,在面向对象的领域里,抽取什么东西比较像的部分? 还记得前面给类下的定义么?我们一起来回顾一下:类就是一组相似事物的统称。再结合我们对象的定义:对象就是一个具体的类,一个真实存在的类。我们就很容易发现了抽象的详细含义:抽取多个对象或者类中比较像的部分。   注:史派克:《猫和老鼠》中的斗

2014-02-13 16:29:37 4588 5

原创 连载:面向对象葵花宝典:思想、技巧与实践(9) - “抽象类” 详解

抽象类是一种特殊的类,其特殊性在于抽象类只能用于继承,不能被实例化为具体的对象。例如在Java中不能new一个抽象类,但可以extends一个抽象类。 抽象类的定义其实很简单,但其使用并不那么简单,有几个问题我们需要深入研究一下。 第一个问题是:有了类,为什么还要抽象类,为什么设计一种只能继承,不能实例化的类?答案就在于:某些场景下普通类不够用。例如,“苹果”、“桔子”、“香蕉

2014-01-24 09:56:08 4927 3

原创 连载:面向对象葵花宝典:思想、技巧与实践(8) - “接口” 详解

“接口”是我见过的面向对象领域中滥用、乱用、误用最多的术语:有的人说:兄弟,给我提供一个“查询XXX”的接口。。。。。。有的人说:系统对外提供了“查询”、“插入”、“更新”、“删除”4个接口。。。。。。有的人说:我们要基于“接口”编程。。。。。。有的人说:你这样做破坏了我们的接口设计。。。。。。。。。。。。。。。。。倒不是在这里指责他们的水平有多差,而是接口这个属于的中文翻

2014-01-19 13:41:20 5520 9

原创 连载:面向对象葵花宝典:思想、技巧与实践(7) - “对象”新解

有了“类”的清晰定义后,“对象”就比较容易理解了。对象就是一个具体的类,一个真实存在的类。前面我们提到面向对象是对现实世界的模拟,那么对象就是现实世界中存在的“物体”。 例如,“人”是一个类,我就是一个“人”的对象,你也是“人”的对象,奥巴马也是“人”的对象。。。。。。又比如:你去国美买冰箱,但国美肯定没有一个单独叫做“冰箱”的东西卖给你,而是具体的某台海尔XX型号的冰箱、西门

2014-01-08 20:49:05 5395 2

原创 连载:面向对象葵花宝典:思想、技巧与实践(6) - 不要说你懂“类”

方以类聚,物以群分——《周易 易传》。 类是面向对象领域里最基础的一个概念,也是面向对象分析和设计的基石。 然而,如此重要的一个概念,竟然很难找到深入的说明,绝大部分介绍面向对象的书籍或者资料基本上都是这么解释的:“类是一组对象的抽象”,这个解释看起来清晰明了,但实际上犯了一个逻辑上的错误:以未明确的概念来解释待明确的概念,什么是对象,什么是抽象,我们都还不知道,你却用这个概念来解

2013-12-25 20:11:47 5678 8

原创 连载:面向对象葵花宝典:思想、技巧与实践(5) - 面向对象迷思:面向对象导致性能下降?

面向对象会导致性能降低?这是一个在IT江湖流传已久的传说,很多对面向对象不甚了解、或者一知半解的人,每当需要抵触面向对象时,就会把这条“金科玉律”拿出来救驾! 更要命的是,每个相信这个传说的人都会举一个看起来很显而易见的例子:C和Java的对比! 你可以到网上搜索一大堆C和Java的性能对比,你自己也可以做一个简单的对比测试,我毫不怀疑测试结果肯定是C快,但这能证明面向对象导致

2013-12-21 09:39:38 5154 3

原创 连载:面向对象葵花宝典:思想、技巧与实践(4) - 面向对象是瑞士军刀还是一把锤子?

为什么要面向对象?可以说,面向过程和计算机是如影随形的。从计算机诞生之日起,面向过程就是占据着主导地位的思想,即使到了现在,面向过程也是无处不在的,C语言、操作系统、协议栈、驱动系统,都是面向过程的代表。 那为什么还会有面向对象的诞生并流行呢?当然是面向过程存在某些不足,如果面向过程足够好,谁还费心费力的去搞另外一套呢? 前面我们提到,面向过程是一种机器的思想,我们以流水线作为类比,那

2013-12-17 10:28:42 5698 5

原创 连载:面向对象葵花宝典:思想、技巧与实践(3) - 面向过程 vs 面向对象

从理论的角度对比“面向对象”和“面向过程”两种编程思想的差异,提出了面向对象的程序 = 对象 + 交互 的新颖说法

2013-12-13 17:57:00 8098 16

原创 连载:面向对象葵花宝典:思想、技巧与实践(2) - 面向对象语言发展历史

Simula 面向对象技术最早是在编程语言Simula中提出的。1967年5月20日,在挪威奥斯陆郊外的小镇莉沙布举行的IFIP TC-2 工作会议上,挪威科学家Ole-Johan Dahl和Kristen Nygaard正式发布了Simula 67语言。Simula 67被认为是最早的面向对象程序设计语言,是面向对象的开山祖师,它引入了所有后来面向对象程序设计语言所遵循的基础概念:对

2013-12-12 10:47:32 6105 4

原创 连载:面向对象葵花宝典:思想、技巧与实践(1) - 程序设计思想的发展

史前时代:面向机器最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数据。简单来说,就是直接编写0和1的序列来代表程序语言。例如:使用0000 代表 加载(LOAD),0001 代表 存储(STORE)等。 机器语言由机器直接执行,速度快,但一个很明显的缺点就是:写起来实在是太困难了,一旦你发现自己写错了,改起来更蛋疼!这样直接导致程序编写效率十分

2013-12-10 20:13:28 10466 13

原创 Java aes加密C#解密的取巧方法

项目开发过程中遇到一个棘手的问题:A系统使用java开发,通过AES加密数据,B系统使用C#开发,需要从A系统获取数据,但在AES解密的时候遇到麻烦。Java的代码和C#的代码无法互通。Java代码: /** * 加密 * * @param content 需要加密的内容 * @param password 加密密钥 * @return */

2013-12-09 17:26:33 9216 1

原创 优化临时表使用,SQL语句性能提升100倍

一个真实的mysql优化案例,优化效果直接提升100倍

2013-09-26 18:18:32 10026 3

原创 高可用开源方案 Keepalived VS Heartbeat对比

最近因为项目需要,简单的试用了两款高可用开源方案:Keepalived和Heartbeat。两者都很流行,但差异还是很大的,现将试用过程中的感受以及相关知识点简单总结一下,供大家选择方案的时候参考。1)Keepalived使用更简单:从安装、配置、使用、维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat 2.1.4后拆分成3个子项目,安

2013-08-06 11:26:18 20182

原创 RHEL安装heartbeat报错: heartbeat: udpport setting must precede media statements

环境如下:[root@master ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.5 (Tikanga)[root@master ~]# uname -aLinux master 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64

2013-07-15 16:43:59 4589

原创 实战:MySQL Sending data导致查询很慢的问题详细分析

这两天帮忙定位一个mysql查询很慢的问题,定位过程综合各种方法、理论、工具,很有代表性,分享给大家作为新年礼物:)【问题现象】使用sphinx支持倒排索引,但sphinx从mysql查询源数据的时候,查询的记录数才几万条,但查询的速度非常慢,大概要4~5分钟左右【处理过程】1)explain首先怀疑索引没有建好,于是使用explain查看查询计划,结果如下:

2013-02-06 12:48:40 114112 13

翻译 【转】MySql官方建议:Innodb表最佳实践

原文:http://dev.mysql.com/doc/refman/5.5/en/innodb-default-se.htmlBest Practices for InnoDB TablesIf you have been using InnoDB for a long time, you already know about features like transactions and

2012-11-29 14:33:39 4898

原创 tcp短连接TIME_WAIT问题解决方法大全(5)——tcp_max_tw_buckets

参考官方文档(http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt),解释如下:tcp_max_tw_buckets - INTEGERMaximal number of timewait sockets held by system simultaneously.If this number is excee

2012-11-04 21:55:59 17465

原创 tcp短连接TIME_WAIT问题解决方法大全(4)——tcp_tw_reuse

tcp_tw_reuse选项的含义如下(http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt):tcp_tw_reuse - BOOLEANAllow to reuse TIME-WAIT sockets for new connections when it issafe from protocol view

2012-11-04 21:54:04 20928 2

原创 tcp短连接TIME_WAIT问题解决方法大全(3)——tcp_tw_recycle

【tcp_tw_recycle和tcp_timestamps】参考官方文档(http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt),tcp_tw_recycle解释如下:tcp_tw_recycle选项作用为:Enable fast recycling TIME-WAIT sockets. Default valu

2012-11-04 21:52:09 21107 4

十年磨一剑之架构设计

浓缩10年工作经历精华,结合电信领域和互联网领域的经验,剥去架构设计高大上的神秘外衣,提炼架构设计的终极大法,菜鸟也能做架构设计。 主要内容包括:什么是架构设计、架构设计的终极大法、架构设计的基本原则、如何提升架构设计能力

2014-12-24

零缺陷”开发技巧

零缺陷开发技巧,简单易懂,一学即会,一用就有效果,让你写10K代码只有1个bug的方法

2014-12-24

TCP头信息详解(英文版 pdf)

详细介绍来的TCP头相关的信息,例如mss、sack、win等字段是什么含义,从英文网站上下载的,转换为pdf了,如果要看原文,直接点击pdf上的链接即可

2013-12-13

spring_in_action中文第二版(高清完整书签版).part2

spring_in_action中文第二版(高清完整书签版) 第二部分,手工添加和校正了所有书签。 CSDN上传限制,拆分为2个包

2013-11-05

apache-ant-1.7.1-src

Apache ant的源码,用于给有需要的同学用。

2009-03-21

设计模式精解 Design_Patterns_Explained

本文详细解释了设计模式隐含的思想,GOF的书只讲解了有哪些模式,而本文解释了“为什么”要用这些设计模式,对于理解GOF的设计模式有非常大的帮助,让你从死记硬背GOF模式中解脱出来,从而能够灵活的应用到实际工作中去

2009-03-11

软件架构设计艺术:方法和技术

描述了架构设计要考虑的内容、方法、技术,适合于系统设计师,架构师

2009-03-11

Linux指令详解——详细介绍了每条Linux操作系统的命令

Linux命令描述,详细介绍了每条Linux操作系统的命令,避免大家去读英文的man手册

2009-01-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除