自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

软件设计专栏

专注架构设计、OOAD、设计模式、重构、Java EE!

  • 博客(135)
  • 资源 (20)
  • 收藏
  • 关注

原创 从员工到总监,你要明白的8个道理

职场是一个复杂的综合体,呼风唤雨的风光表面背后,必定得付出别人所不知道的艰辛。这个其实是很公平的。努力不一定有回报,但是如果不努力,就一定没有回报。如果你愿意改变,或许下次收获别人羡慕眼光的,就会是你。  说归说,对于那些想改变自己的朋友们来说,还是需要看清楚一些东西,有一些经验也想和大家分享分享。同样是职场人士,我也有我的经验和感受。在打工的3年里,我的到了7次加薪(同时进入公司的员工,

2013-03-06 12:41:10 3800 12

原创 软件设计的思考与关注点

软件设计是一个十分复杂且没有规律可遵循的思维发散过程。设计软件系统是非常有挑战性的,因为一方面需要你聚焦在今天的需求,同时要求可以适应未来对功能的修改和增加。面对软件最大的敌人—需求的变化,我们更多的是通过堆积木的方式堆砌代码。随着系统的上线运营,客户需求不断的变化与扩充、程序BUG的不断涌现,我们天天在为了修正BUG而干十万火急的工作,下班了还提心吊胆实施地是否给自己提了除错单。

2012-12-25 23:20:20 1673 1

原创 中国惠普前总裁孙振耀谈人生 [珍藏]

一、关于工作与生活我有个有趣的观察,外企公司多的是25-35岁的白领,40岁以上的员工很少,二三十岁的外企员工是意气风发的,但外企公司40岁附近的经理人是很尴尬的。我见过的40岁附近的外企经理人大多在一直跳槽,最后大多跳到民企,比方说,唐骏。外企员工的成功很大程度上是公司的成功,并非个人的成功,西门子的确比国美大,但并不代表西门子中国经理比国美的老板强,甚至可以说差得很远。而进外企的人往往并不

2012-12-06 11:39:02 2203 1

原创 一些软件设计的原则

以前本站向大家介绍过一些软件开发的原则,比如优质代码的十诫和Unix传奇(下篇)中所以说的UNIX的设计原则。相信大家从中能够从中学了解到一些设计原理方面的知识,正如我在《再谈“我是怎么招聘程序”》中所说的,一个好的程序员通常由其操作技能、知识水平,经验层力和能力四个方面组成。在这里想和大家说说设计中的一些原则,我认为这些东西属于长期经验总结出来的知识。这些原则,每一个程序员都应该了解。但是请不要

2012-11-30 12:42:50 1444

原创 单一职责原则(Single Responsibility Principle)

1 作用它指导我们如何提高代码的可重用度!2 定义一个类应该仅有一个引起它的变化的原因(职责),或者说一个类只负责一个功能领域中的相应职责。这条原则也称为类设计的“高内聚性原则”。(l)含义之一:避免相同的职责(也称为功能)分散到不同的类中实现。(2)含义之二:也应该要避免一个类承担过多的职责。将过多的职责耦合在一个类中导致了脆弱设计。软件设计真正要做的许多内容,就是发

2012-11-18 00:22:41 3426 6

原创 GRASP通用职责分配软件模式

1.  概述它的核心思想是“职责分配(Responsibility Assignment)”。GRASP提出了几个基本原则,用来解决面向对象设计的一些问题。Craig Larman在《Applying UML and Patterns》一书中提出了GRASP设计模式的概念。作者称其为设计模式,其实,更好的理解应该为设计原则。因为,与GoF等设计模式不同的是,GoF等设计模式是针对特定问题而

2012-11-18 00:00:12 6810 1

原创 Java泛型总结

1. 什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类的对

2012-11-17 14:54:09 2330 1

原创 Comt4j消息推送实例

1.1 Comt4j1.1.1 介绍Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。 功能特性· 推送消息广播。· 推送定向消息。· 提供连接上线前、上线、下线前、下线、发送消息等多种可处理事件。· 消息缓存机制,确保长轮询工作模式下不

2013-11-02 13:56:50 10463 4

原创 Pushlet实例解析

1.1 Pushlet1.1.1 介绍Pushlet 是一个开源的 Comet 框架,在设计上有很多值得借鉴的地方,对于开发轻量级的 Comet 应用很有参考价值。观察者模型Pushlet 使用了观察者模型:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。客户端 JavaScript

2013-11-02 13:54:51 10377 2

原创 Servlet3.0 服务端推技术实例

所谓Servlet 异步处理,包括了非阻塞的输入/输出、异步事件通知、延迟request 处理以及延迟response 输出等几种特性。这些特性大多并非JSR 315 规范首次提出,譬如非阻塞输入/输出,在Tomcat 6.0 中就提供了Advanced NIO 技术以便一个Servlet 线程能处理多个HttpRequest,Jetty、GlassFish 也曾经有过类似的支持。但是使用这些We

2013-11-02 13:49:55 7099

原创 全面解析数据的网络传输

1.1 带宽带宽的单位是“bit/s”,也就是单位时间的比特数。我们常说的比如100M带宽,全称应该是100Mbit/s,或者100Mbps。1.2 数据如何发送数据的发送一般经过以下几个环节:1) 应用程序首先将要发送的数据写入该进程的内存地址空间中。通常在程序开发中这只需要一般的运行时变量赋值即可。2) 应用程序通过系统函数库接口(比如send函数)向内核发出系统调用,

2013-11-02 13:41:01 2773

原创 12项职场缺陷行为你有吗?

为什么许多有才华的人会失败?美国哈佛商学院mba生涯发展中心主任詹姆士middot;华德普与提摩西middot;巴特勒博士,受命协助那些明明被看好却表现不佳,甚至快要被炒鱿鱼的主管。什么样的行为模式会成为致命缺陷,严重阻碍职业生涯?下文归纳出12项职场缺陷的行为模式。1.总觉得自己不够好这种人虽然聪明、有历练,但是一旦被提拔,反而毫无自信,觉得自己不胜任。此外,

2013-04-23 08:30:44 1775 2

原创 产品设计应抓住的用户心理

1. 把握用户的阅读心理    当一个用户访问网站的某个页面,一定有一些用户想马上看到的内容,这就是期待心理    怎么做?    (1)有一目了然的导航    (2)将用户期待的商品放在网站首页    (3)  将简单清晰而功能强大的搜索条件放在最显眼的位置  2. 和用户建立信任关系    用户对涉及个人信息时十分敏感,网站需要通过一些元素来完善设计,让网站看上去更

2013-04-20 16:02:54 1154

原创 使用Apache Jmeter编写自定义Java测试代码开展并发测试

我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser","Java Vuser"等协议。同样,Jmeter也支持自定义编写的测试代码,不过与LoadRunner不同的是,Jmeter没有自带编译器,需要借助第三方编译器才能实现。1) 下面举一个简单的Java自定义测试代码例子,使用Java编译

2013-04-20 12:34:52 17498

原创 职场必知的20条黄金法则

1、办公室里只有两种人,主角和龙套。    职场上,想要过的轻松,不想往上爬,那就只能做一辈子的龙套。作龙套的坏处就是:送死你先去,功劳全没有,裁员先考虑。现在的职场绝不是养懒人的地方,你要比别人生存的好,就唯有当主角,让别人去做龙套。你不能踩着别人肩膀,就只能做他人垫背。    2、每个人都要有大志,就算要毁灭世界也可以。    胸怀大志是做主角的首要条件。在职场上,你若

2013-04-20 11:42:56 2534 3

原创 对于内向、不善于社交的人来说,如何建立人脉?

三成能力,七分人脉,对于一个人的事业成功人是发挥着最重要的作用。可是对于我所问的题目,该怎么办呢?下面是精选知乎网友的回答。1.韩冰Bill人脉的意义不在于你认识谁,而在于你能吸引谁(靠权力、威慑去推动谁这不算人脉),能吸引谁根本在于能给对方提供什么价值。这种价值并非只是很肮脏龌龊的那种相互勾结利用的商业价值,任何情感价值,娱乐价值,信用价值,学术价值,都可以。不管是否

2013-04-20 11:34:36 4342 4

原创 互联网产品设计规划

找准目标用户群体    产品所面对的群体是什么?    他们的共同特征是什么?    目标用户群体的市场有多大,是否能实现可持续发展?  理解行业竞争    产品内容是否有独特的价值    与竞争者的优势在哪里?    如何借鉴并超越对手    在功能、内容以及节目的创新之处?  做长久的发展规划    产品能给团队带来什么?    经过长期的发展,产品

2013-04-20 11:26:22 1688 1

转载 java平台统一异常框架的设计与实现

在一个framework的设计中,异常框架的设计占据着很重要的位置,因为它会直接影响到整个应用的健壮性、稳定性和易用性,因此笔者结合自己在产品开发中的经验给出了一个异常框架的设计及实现与大家共享,有考虑不周或欠妥的地方还望大家一起讨论,共同提高。 1.1 Java异常框架总体设计异常框架的总体结构图11.1异常框架总体结构图如上图所示,java平台框架的异常

2013-03-11 08:35:48 1938

原创 开发架构设计

开发架构设计关注软件开发环境中软件模块的实际组织方式,即软件系统由那些程序包组成,以及它们之间的关系。程序包不仅包括要编写的源程序,而且包括直接使用的第三方SDK和现存的框架、类库,支持系统运行的操作系统或中间件。开发架构设计的重点考虑开发期质量,软件模块的组织有利于可扩展性、可重用性、可移植性、易理解性、易测试性等,设计中的关键技术主要体现软件开发期质量有关的设计,如设计模式的运用,框架的选

2013-02-27 17:47:00 2508

原创 逻辑架构设计

逻辑架构关心的是如何将系统分为不同部分以及各部分之间如何交互。但系统划分为不同单元后,必须考虑这些逻辑单元之间是如何协作的。识别协作,并将具有共性的协作抽象成通用机制,是逻辑架构设计的重点和难点。在大型软件系统中不同子系统之间的协作,在分布式集成系统中不同系统之间的协作,不是编程时根据局部需要去考虑,都是通过通用机制来综合考虑,避免子系统/系统之间的紧耦合。通用机制的发现可能抽象出新的连接

2013-02-27 17:46:17 9214

原创 概念性架构设计的步骤

概念性架构设计的输入是关键的功能需求、关键的质量属性需求和关键的商业需求。温昱在《软件架构设计》中给出了三个基本步骤:第一步,鲁棒性分析。通过分析表示关键功能需求的用例规约中的事件流,识别出实现用例规定的功能的主要对象及其职责,形成以职责模型为主的初步设计。鲁棒性分析是从用例到面向对象设计进行过度的一种技术。鲁棒性分析用鲁棒图作为描述工具。鲁棒图用边界对象、控制对象和实体对象三种元素。

2013-02-27 17:44:43 2461

原创 划分子系统的三种必用策略

分层的细化:分层最常用的架构模式,在架构设计初期,100%的系统都可以用分层架构,就算随着设计的深入而采用了其他的架构模式也未必和分层架构矛盾。于是,架构师最熟知、最自然的划分模式就是分层的细化。分区的引入:为了支持迭代开发,逻辑架构设计中必须引入分区,分区是一个单元,其粒度比层要小。一旦架构师针对每个层进行了分区设计,“深度优先”式的迭代开发就非常自然。机制的提取:机制是指预

2013-02-27 17:41:20 5360

原创 数据分布的六种策略

独立Schema当一个大系统有相关的多个小系统组成,且不同小系统具有互不相同的数据库Schema定义,这种情况称为“独立Schema”;集中只一个大系统必须支持来自不同地点的访问,或者该系统有相关的多个小系统组成,而持久集中化数据进行集中化的、统一的格式的存储;分区分区方式包含水平分区和垂直分区两种;复制在整个分布式系统中,数据保存多个副本,并且以某种机制(实时或快照)

2013-02-27 17:40:52 4261

原创 关注点分离

好的架构设计必须把变化点错落有致地封装到软件系统的不同部分。要做到这一点,必须进行关注点分离。Iuar Jacobson在《AOSD中文版》中写道:“好的架构必须使每个关注点相互分离,也就是说系统中的一个部分发生了变化,不会影响其他部分。即使需要改变,也能够清晰地识别出那些部分需要改变。如果需要扩展架构,影响将会最小化,已经可以工作的每个部分都将继续工作。上述论述中的三句话:“系统

2013-02-27 16:50:52 4987

原创 对SNS的理解

原本经济危机来了,FACEBOOK估值从150亿美金跌至40亿;国内互联网创投环境也日趋寒冷,而在舆论界,关于SNS的话题似乎热度未减,当然在精彩文章之中也夹杂着一些隔靴搔痒式的讨论;  最近,时值腾讯QQ空间及手机社区平台高速发展,迭创新高;我也想结合自身的工作实践,简单地聊一些关于SNS的理解;  个人认为,从严格产品意义而言,国外是FACEBOOK,国内是校内网最先实现相对完

2013-01-17 17:14:39 2254

转载 一套较完整的技术框架

一套较完整的技术框架1 引言1.1 前言本文将基于目前现有的软件开发架构(以下简称‘架构’)(Packer for Delphi),同时如何合理地引进新技术等问题,进行系统地分析和研究,以指导新架构的研发。1.2 研发依据1.2.1 公司发展1.2.2 开发方式1.2.3 技术升级1.2.4 产品线行业领域软件需要个性化的服务,如果对应以作坊式的开发方式,将会陷

2013-01-09 12:56:00 3670

转载 创办四家公司教给我的90件事

Jason Goldberg是设计类闪购网站Fab.com的CEO,本篇文章来自他的个人博客Betashop。2011年6月,Fab产品线正式上线。12天内,Fab的销售额达到了60万美元。出众的业绩为其带来了800万美元的A轮融资。11月,Fab用户数突破100万关口。12月,Fab进行了4000万美元的B轮融资,估值达到了2亿美元。比创办Fab这件事更疯狂的事是,他一气写下他连

2013-01-09 12:43:14 680

转载 软件质量有什么特性?

软件质量有什么特性?《软件工程—产品质量》(GB/T 16260-2006)中规定对软件的每个质量特性与子特性都有定义:一、功能性:是指当软件在指定条件下使用,软件产品满足明确和隐含要求功能的能力。适合性:是指软件产品与指定的任务和用户目标提供一组合适的功能的能力。准确性:是指软件产品具有所需精确度的正确或相符的结果及效果的能力。互操作性:是指软件产品与一个或多个规定系统进

2013-01-09 12:40:17 1014

转载 你是否正带着眼镜观察员工或老板?

在我们的工作之中,有过对个别员工有意见的时候,也有过对领导有意见的时候,这会给我们带来苦恼。对于员工,我们感到不满意,责怪他,甚至会认为自己看错了人;对领导,我们感到不痛快,觉得领导能力不行,甚至认为自己跟错了人,可又告诉自己不能轻易放弃。有时候甚至成了一种折磨,迷失了自我,影响了生活质量,没有了幸福感。       当然,有的时候,确实如我们看到和分析到的,员工确实能力不行,领导水平确实不够

2013-01-09 12:39:25 592

转载 从程序员的角度看浮躁?

工资低?老板刻薄?没时间谈朋友?没时间锻炼身体?整天加班?觉得自己没有理想了?浮躁吗?怎么办?让我们了解一下:         现在这个社会,大家都很浮躁。简单说,因为他是消费者。        具体的逻辑推理是这样的:       1. 现在的社会是一个“富裕社会”(Affluent Society),物质极大丰富,大部分的生产力都被用来生产消费品。       2. “富裕

2013-01-09 12:36:04 565

转载 如何了解别人把握自己

想谋求发展,就要去了解别人,以便更好的合作,更好的发挥人的优势。不能一切随意。  然而,美好的愿望,很可能被别人的一个态度,一句话就击碎了。于是陷入到苦闷中。不能自拔。  要如何去了解别人,并且不会陷入此山中呢?      孔子说,你看一个人,要“视其所以,观其所由,察其所安。人焉哉?人焉哉?”(《论语·为政》)这话什么意思呢?  “视其所以”,从一开始你要看到他为什么这么做。看他做一件事

2013-01-09 12:35:09 666

转载 你一生追求的是利益还是快乐?

俗话说,做事先做人,《论语》中关于做人的道理有许多,但曾子说其实只有一条,夫子之道,忠恕而已。忠恕二字的前提就是要知道自己的心在哪里。现代社会有太多的评判标准,如果我们的心迷失了方向,就根本无法判断自己行为的对错。特别是当自己有一颗忠诚于事业的心,却总是怀才不遇,无人赏识时,该怎么做才为忠?我们自己将心比心,善待他人,却被别人恶意伤害时,该如何做才为恕?如果我们真正做到了忠恕二字,生活会不会变得更

2013-01-09 12:34:22 564

转载 受挫时背背激励语录

据说是可以激励人的一生----            1、不问收获,只问耕耘。(如同种树,先有根茎,再有枝叶,尔后花实,好好劳动,不要想太多,那样只会使人胆小、懒惰)    2、体育锻炼可以(有时可以迅速)使人乐观(科学实验证明)。    3、勤奋,机会,乐观是成功的三要素。(注意:传统观念认为勤奋和机会是成功的要素,但是经过统计学和成功人士的分析得出,乐观是成功的第三要素)

2013-01-09 12:33:12 563

转载 关于人生路的思考

关于人生路的思考一:沉稳(1)不要随便显露你的情绪。(2)不要逢人就诉说你的困难和遭遇。(3)在征询别人的意见之前,自己先思考,但不要先讲。(4)不要一有机会就唠叨你的不满。(5)重要的决定尽量有别人商量,最好隔一天再发布。(6)讲话不要有任何的慌张,走路也是。二:细心(1)对身边发生的事情,常思考它们的因果关系。(2)对做不到位的执行问题,要发掘它们的根本

2013-01-09 12:31:45 706

原创 领域逻辑与业务逻辑的关系

领域逻辑用来表达业务概念,保证业务规则,存放业务数据和业务状态等。领域逻辑通常是通过领域模型中的对象来实现的,且这些对象并不知晓其持久化方式,不过数据仍旧被存储且行为也与相关的业务概念和规则保持一致。作为一个概念,强类型DataSet也可用来对领域进行建模。虽然存储的技术细节将委托给基础设施完成,不过反映业务情况的状态将在这里控制并使用,领域逻辑这一层是业务软件的核心。在有了软件需要实现的

2013-01-09 11:03:14 5402

原创 创建业务层的模式

在业务层的模式上有几种选择。首先是过程式模式,在面向对象开发兴起之前,业务逻辑只不过是一系列过程的集合,每个集合都用来处理来自于表现层的一个请求。因此好的设计都在于更好的去组织这些过程,减少代码和流程的冗余。基于对象的模式抽象程度越高,与数据模型的差距也会越大,因此若想创建一个领域驱动的对象模型,一般应该从领域着眼,而不是从数据库结构开始。领域驱动的设计一定会使数据库模型和领域模型之间存在不小差异

2013-01-08 16:24:33 1508

原创 业务逻辑层剖析

在业务逻辑层中,你会发现一个对业务实体进行建模的对象模型、表达了客户所有策略和需求的业务规则、实现了自治功能的服务,以及定义文档和数据如何在模块与层间传递的工作流。1   领域的对象模型领域的对象模型力求为系统提供一个结构上的描述,包括每个实体的功能描述、实体之间的关系以及实体的职责等。该模型有用户需求总结得出,并通过UML用例图和类图表示。业务实体描述了真实世界的元素,其中包括数据和

2013-01-08 11:00:44 4385

原创 BO与DTO的区别

业务对象(Business Object,BO)与数据传输对象(Data Transger Object, DTO)的区别:1)   业务对象同时包含了数据和行为,是一个可以参与到领域逻辑中的完整对象。2)   DTO更像一种值对象,即一系列数据的容器而没有相关的行为。3)   为了序列化,业务对象中的数据会复制到DTO中。4)   DTO并不仅仅是领域对象去掉了行

2013-01-08 10:28:57 13519 2

原创 如何开展软件设计

花了三年的时间研究如何做系统设计,在学习总结大师的设计观点后,自己对设计也有一定的理解。因此特意对设计的理解进行梳理,计划梳理的知识点如下:(1)对软件设计的思考(2)设计的困惑(3)设计的关注点(4)如何实现组件式设计?         1)划分职责         2)发布服务        3)建立协作        4)应对变化(5)敏捷设计过程(6

2012-12-28 01:37:10 1201

原创 我理解的设计模型

2012-12-28 01:36:26 1020

Spring Quartz调度

使用Spring Quartz框架调度的完整实例,包含代码与Spring Quartz相关的jar,可直接运行与使用。相关学习文档参考博客《Spring中使用Quartz任务调度 http://blog.csdn.net/chenxiang0207/article/details/8252784》。

2012-12-04

Spring mail发送邮件

使用Spring mail发送邮件的完整实例,包含代码与Spring mail的jar,可直接运行与使用。相关学习文档参考博客《Spring Mail邮件发送 http://blog.csdn.net/chenxiang0207/article/details/8256528》。

2012-12-04

存储过程编写经验和优化措施

存储过程编写经验和优化措施 存储过程编写经验和优化措施

2011-08-09

Oracle游标语法总结.doc

Oracle游标语法总结.doc Oracle游标语法总结.doc

2011-08-09

Oracle数据字典

Oracle数据字典 Oracle数据字典

2011-08-09

Oracle存储过程编写与调试

Oracle存储过程编写与调试 Oracle存储过程编写与调试

2011-08-09

Oracle常用函数总结

Oracle常用函数总结 Oracle常用函数总结

2011-08-09

Oracle SQL语法

Oracle SQL语法 Oracle SQL语法

2011-08-09

VS2005学习教程

VS2005学习教程,VS2005学习教程,VS2005学习教程

2009-05-25

领域驱动设计和开发实战

领域驱动设计和开发实战,领域驱动设计和开发实战,领域驱动设计和开发实战

2009-05-25

软件开发全过程-教程

软件开发全过程教程,软件开发全过程教程软件开发全过程教程,软件开发全过程教程

2009-05-25

Eclipse注释模版

十分完整的Eclipse注释模版,绝对经典

2009-05-25

Spring in Action中文版

Spring in Action中文版 Spring in Action中文版

2009-02-11

项目实践精解:基于Struts-Spring-Hibernate的Java应用开发

项目实践精解:基于Struts-Spring-Hibernate的Java应用开发(网上书店,有详细介绍)

2009-02-11

ext 2 实例教程

ext2实例教程,带你进入Ext的殿堂,学习Ext难得的好书。

2009-02-11

CheckStyle使用说明

CheckStyle使用说明,很具体,清楚的描述了如何在Eclipse下使用CheckStyle

2009-02-11

Ant 使用指南 电子教程

Ant 使用指南 电子教程Ant 使用指南 电子教程

2008-08-25

prototype 1.4 中文参考手册

很完整的prototype 1.4 中文参考手册

2008-08-25

ORACLE9i入门与实践

最好的Oracle入门教程

2008-08-09

MyEclipse6中文开发教程

MyEclipse6中文开发教程

2008-08-02

空空如也

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

TA关注的人

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