OOP和设计模式
文章平均质量分 90
良少
资深挨踢人士,精通Python,C,Java,JavaScript,Linux内核,网络协议,虚拟化,云计算,分布式存储,kubernetes,数据仓库等技术。擅长微服务架构设计,DevOps。目前致力于以Fintech助力普惠金融。
展开
-
Bad Smell重构和设计的标准
Bad Smell重构和设计的标准 -------“与其无尽的等待完美的设计,不如立刻着手实现可行的设计,然后再在设计出现臭味的时候重构实现!” n 引言 今天,一位初学编程的朋友对我说,他写的类要么是数据类,要么是操作类。似乎写得不太好。于是,我看了他写的代码。他的类虽然编得不怎么样,但是放在他的小项目中,并没有发出多浓的bad smell。所以原创 2005-10-19 21:05:00 · 4128 阅读 · 1 评论 -
关系型数据库表结构的两个设计技巧
设计关系型数据库的表时,需要给表添加一个ID字段(自增字段,或者uuid字段)和一个version字段(数值类型)。ID字段作为物理主键,用于保证记录的不可重复性和用作外键关联。 version字段用于实现乐观锁,提供比悲观锁更好的性能。特别是对于UI显示并可能出现并发更新的数据,更需要使用乐观锁来提升数据库访问性能。 对于后台自动更新的任务,可以使用乐观锁实现。但需要在冲突发生时实现自动退让。也可以使用悲观锁在数据库上对事务进行排队来解决更新冲突问题。 对于不关原创 2015-08-12 13:17:10 · 8834 阅读 · 0 评论 -
编程能力层次模型
程序员的编程技能随着经验的积累,会逐步提高。我认为编程能力可以分为一些层次。 下面通过两个维度展开编程能力层次模型的讨论。 一个维度是编程技能层次,另一个维度是领域知识层次。...... 有些程序员可能把精力都花在提升编程技能上了,领域知识知之甚少,这其实在日常工作中也是极其有害的。有些需求可能早已经有了现成、开源免费的解决方案,或者只需要组合几个现有软件就可以快速搞定,而他们却不得不自己花大量时间去开发。另外,缺少领域知识,在程序出现非预期状况时,很难快速定位到问题的根源,很难解决bug。原创 2015-02-15 15:30:39 · 17967 阅读 · 11 评论 -
Linux内核中链表和散列表的实现原理揭秘
inux内核的实现,大量使用了数据结构,包括了数组、链表和散列表。其中用的最多的是双向循环链表。Linux内核使用的是自己定义的链表和散列表,简单而高效,使用方法也非常的别具一格。研究Linux内核的链表和散列表对于看懂Linux内核源源代码有重要的意义。原创 2011-07-14 11:37:02 · 10116 阅读 · 7 评论 -
构建一个分布式操作系统的简单方案—答陈硕的“分布式系统中的进程标识”一文
本文提出了构建一个分布式操作系统的简单方案。核心是使用ssh的强大能力,构建一个简单、安全、灵活、高效的分布式操作系统!并且没有单点失效的问题。注意,是通用的分布式操作系统,而不是专用的分布式系统。原创 2011-03-29 16:20:00 · 9313 阅读 · 57 评论 -
Unix编程哲学和软件设计方法
Unix编程哲学: 1,模块原则:使用简洁的接口拼合简单的部件。2,清晰原则:清晰胜于机巧。3,组合原则:设计时考虑拼接组合。4,分离原则:策略同机制分离,接口同实现引擎分离。5,简洁原则:设计要简洁,复杂度能低则低。6,吝啬原则:除非确无它法,不要编写庞大的程序。7,透明性原则:设计要可见,以便审查和调试。8,健壮原则:健壮源于透明与简洁。9,表示原则:把知识叠入数据以求逻辑质朴而健壮。10,通俗原则:接口设计避免标新立异。11,缄默原则:如果一个程序没什么好说的,就沉默。12,补救原则:出现原创 2011-03-02 23:06:00 · 2943 阅读 · 4 评论 -
主流编程语言优劣考
主流编程语言优劣考 前言 本文的目的并非是想挑起语言之争,而是希望通过客观地分析每一种主流语言的能力,辨明其长短,让程序员能够扬长避短,有效地使用各种语言。让各种语言能够各安其位,为你更好的服务。程序员应当成为语言的主人,而不是语言原创 2008-06-10 00:19:00 · 41276 阅读 · 88 评论 -
基于对象和面向对象编程范式辨析和主流编程语言中的应用
基于对象和面向对象编程范式辨析和主流编程语言中的应用 前言 本文的目的是想告诉大家,为什么C++的模板这么强大。为什么Ruby的Duck Typing(像鸭子那样编程)这么强大! 基于对象和面向对象编程范式关于基于对象和面向对象编程范式,我有着不同于传统的理解。我认为我的理解更能体现出这2个范式的本意。原创 2008-06-09 01:41:00 · 9524 阅读 · 11 评论 -
面向对象编程语言中的函数式编程--为命令模式和访问者模式正名
函数式编程和命令式编程 函数式编程是最近被热炒的一个概念。国内外众多大牛纷纷发表文章,认为函数编程可能会再度兴起。搞得一向喜欢跟风的小弟我如坐针毡。因此,也抽空研究了一下函数式编程这个时髦的概念。上个世纪,我曾经在图书馆借了一本介绍所有主要计算机语言的书,那本书简单得介绍过Lisp和其他语言的语法。其中提到,Lisp是一门函数语言。当然,那时对这句话没什么概原创 2008-01-24 23:16:00 · 7243 阅读 · 6 评论 -
[预告]将要推出编程方式事务管理祥解!
[预告]将要推出编程方式事务管理祥解! 以前一直都用声明式事务管理:EJB,Spring的。这一次要用Jbpm,需要使用编程方式的事务管理,立刻乱了阵脚。事务管理得那个烂呀!真是惨不忍睹! 经过几天痛苦的研究,兄弟我终于搞定了编程方式的事务管理,研究出了一下小原创 2006-11-14 13:25:00 · 1571 阅读 · 0 评论 -
jBPM3.12用户指南中文翻译----第四章 面向图表编程
这是Jboss 的jBPM3.12框架的用户指南的中文翻译。我的翻译风格是中英文对照,只翻译部分我认为重要的,不翻译简单的英文,以免浪费你我的时间。 同时,对于其中的部分内容,我会在翻译中做出解释和写上我的理解。 Chapter 4. Graph Oriented Programming面向图表编程4.1. Introduction介绍This chapter can be翻译 2006-09-22 22:21:00 · 3447 阅读 · 0 评论 -
“状态模式”深入浅出
前几天遇到了命令模式,在Blog上解释了一下。今天,又遇到了状态模式,还是深入浅出的告诉大家什么是状态模式吧。状态state模式是GOF23种模式中的一种,和命令模式一样,也是一种行为模式。状态模式和命令模式相当像,一样是“接口—实现类”这种模式的应用,是面向接口编程原则的体现。 状态模式的理解,关键有2点:一、使用接口---实现类的方式。 通常命令模式的接口中只有一个方原创 2006-09-22 19:12:00 · 9672 阅读 · 7 评论 -
“命令模式”深入浅出
命令Command模式是GOF23种模式中的一种,是一种行为模式。这种模式很难理解。《设计模式》一书中对它语焉不详。而网上的一些文章对其的解释也是错误的。实际上,命令模式并不是那么神秘。本文中我会简单的告诉你什么是命令模式,怎样使用命令模式。命令模式的理解,关键有2点:一、使用接口---实现类的方式。 通常命令模式的接口中只有一个方法。 实现类的方法有不同的功能,覆盖接原创 2006-09-21 15:13:00 · 13757 阅读 · 25 评论 -
用Ant自动测试JUnit(Ant测试自动化--上)
用Ant自动测试JUnit 经过痛苦的N次尝试,终于,我成功的运行了Ant驱动的JUnit!一、问题一 支持ANT的任务所需的jar包的配置。Note: This task depends on external libraries not included in the Ant distribution. See Library Depend原创 2005-11-18 21:34:00 · 17960 阅读 · 3 评论 -
怎样用Ant测试Spring项目(Ant测试自动化--下)
怎样用Ant测试Spring项目 对于Spring项目,还有另外的讲究。一、可以运行,但是要设置Eclipse,以使Eclipse自动往我的 中复制Spring配置文件。 设置了路径以后就正常了 Eclipse中,java构建路径.java源:src,test,WebRoot; 缺省输出文件夹 为/bin 这个目录,否则会报Spring的bean未定义错误!原创 2005-11-18 21:40:00 · 4771 阅读 · 3 评论 -
横切关注点的两种实现方法
横切关注点的两种实现方法 软件系统,可看作由一组关注点组成。其中,直接的业务关注点,是直切关注点。而为直切关注点提供服务的,就是横切关注点。有两种方法可以提供横切关注点,一种是传统的OOP方法,提供一个与直切关注点的实现一样的类来提供服务。另一种是最新的AOP方法,提供一个Aspect方面(Spring AOP中叫advisor顾问)来提供服务。OOP方式是:业务原创 2005-11-09 23:47:00 · 9406 阅读 · 2 评论 -
避免过度精简临时变量----重构的问题
避免过度精简临时变量----重构的问题 在我重构的过程中,我的代码出现了一个问题,出现了一个死循环!重构的一个重要手段就是把可恶的临时变量去掉,而改之以方法的调用。这是Martin Fowler非常强调的一个思想。重构的一大手段和目标是提炼出方法来。将大段的代码分解成许多微型函数。而提炼函数的一大障碍就是到处出现的变量,特别是有时原创 2005-11-03 23:55:00 · 2954 阅读 · 0 评论 -
软件架构设计原则和模式(上):分层架构设计
绪论本文打算探讨一下软件架构设计的一些设计原则与经过实践验证的设计模式。 前端(MVC模式)和后端(接口层-业务层-助手层)的分层设计经过了几十年大量软件的证明。分层的思想,就是每一个层次专注做一件事情。每一个层次都为上层提供服务。每一个层次对于其上层来说,都是可以复用的。分层设计的软件,结构清晰,代码各司其职,能够最大限度地重用代码。本文还给出了一套笔者使用多年的数学建模和识别领域对象的方法。原创 2016-05-23 04:29:57 · 15364 阅读 · 3 评论