自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sushauai的博客

居安思危,临危不乱

  • 博客(124)
  • 资源 (16)
  • 收藏
  • 关注

转载 [置顶] 史上最全设计模式导学目录(完整版)

圣诞献礼!          2012年-2013年,Sunny在CSDN技术博客中陆续发表了100多篇与设计模式学习相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式 +  简单工厂模式),为了方便大家学习,现将所有文章的链接进行了整理,希望能给各位带来帮助!       祝大家圣诞节快乐! 花絮:本文的工作量大大超过之前的估计,几乎整个平安夜都花在它身

2016-09-07 11:12:30 676

原创 JS如何实现获取表格中的单元格里面的数据,并让其累加

Sunyanzi's Test 12 34 56 78 910 /* get our table ... */ var table = document.getElementById( "thetable" ); /* last

2016-11-29 11:38:22 6077

原创 JS格式化数字(每三位加逗号)

// 方法一function toThousands(num) { var result = [ ], counter = 0; num = (num || 0).toString().split(''); for (var i = num.length - 1; i >= 0; i--) { counter++; result.

2016-10-28 17:28:42 35252 11

转载 工厂三兄弟之简单工厂模式(四)

4 方案的改进       Sunny软件公司开发人员发现在创建具体Chart对象时,每更换一个Chart对象都需要修改客户端代码中静态工厂方法的参数,客户端代码将要重新编译,这对于客户端而言,违反了“开闭原则”,有没有一种方法能够在不修改客户端代码的前提下更换具体产品对象呢?答案是肯定的,下面将介绍一种常用的实现方式。       我们可以将静态工厂方法的参数存储在XML或pro

2016-09-07 11:28:04 496

转载 工厂三兄弟之简单工厂模式(三)

3 完整解决方案       为了将Chart类的职责分离,同时将Chart对象的创建和使用分离,Sunny软件公司开发人员决定使用简单工厂模式对图表库进行重构,重构后的结构如图2所示:图2 图表库结构图       在图2中,Chart接口充当抽象产品类,其子类HistogramChart、PieChart和LineChart充当具体产品类,ChartFactor

2016-09-07 11:27:17 475

转载 工厂三兄弟之简单工厂模式(二)

2 简单工厂模式概述       简单工厂模式并不属于GoF 23个经典设计模式,但通常将它作为学习其他工厂模式的基础,它的设计思想很简单,其基本流程如下:       首先将需要创建的各种不同对象(例如各种不同的Chart对象)的相关代码封装到不同的类中,这些类称为具体产品类,而将它们公共的代码进行抽象和提取后封装在一个抽象产品类中,每一个具体产品类都是抽象产品类的子类;然后提供

2016-09-07 11:26:40 356

转载 工厂三兄弟之简单工厂模式(一)

工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式。本章将要学习的简单工厂模式是工厂方法模式的“小弟”,它不属于GoF 23种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门。此外,工厂方法模式还有一位“大哥”——抽象工厂模式。这三种工厂模式各具特色,难度也逐个加大,在软件开发中它们都得到了广泛的应用,成为面向对

2016-09-07 11:25:59 408

转载 面向对象设计原则之迪米特法则

迪米特法则来自于1987年美国东北大学(Northeastern University)一个名为“Demeter”的研究项目。迪米特法则又称为最少知识原则(LeastKnowledge Principle, LKP),其定义如下:迪米特法则(Law of  Demeter, LoD):一个软件实体应当尽可能少地与其他实体发生相互作用。     

2016-09-07 11:23:52 285

转载 面向对象设计原则之合成复用原则

合成复用原则又称为组合/聚合复用原则(Composition/Aggregate Reuse Principle, CARP),其定义如下:合成复用原则(Composite Reuse Principle, CRP):尽量使用对象组合,而不是继承来达到复用的目的。      合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用

2016-09-07 11:23:06 370

转载 面向对象设计原则之接口隔离原则

接口隔离原则定义如下:接口隔离原则(Interface  Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。      根据接口隔离原则,当一个接口太大时,我们需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。每一个接口应该承担一种相对独

2016-09-07 11:22:36 348

转载 面向对象设计原则之依赖倒转原则

如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要实现机制之一,它是系统抽象化的具体实现。依赖倒转原则是Robert C. Martin在1996年为“C++Reporter”所写的专栏Engineering Notebook的第三篇,后来加入到他在2002年出版的经典著作“Agile Software Development, Principles, Patter

2016-09-07 11:22:01 491

转载 面向对象设计原则之里氏代换原则

里氏代换原则由2008年图灵奖得主、美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing教授于1994年提出。其严格表述如下:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1代换o2时,程序P的行为没有变化,那么类型S是类型T的子类型。这个定义比较拗口且难以理解,因此我们一般使用它的另一个通俗版

2016-09-07 11:21:16 328

转载 面向对象设计原则之开闭原则

开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。开闭原则由Bertrand  Meyer于1988年提出,其定义如下:开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。      在开闭原则的定义中,软件实体可以指一个软

2016-09-07 11:20:43 278

转载 面向对象设计原则之单一职责原则

单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则定义如下:单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。      单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大

2016-09-07 11:20:04 333

转载 面向对象设计原则概述

对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。在面向对象设计中,可维护性的复用是以设计原则为基础的。每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平。      面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模

2016-09-07 11:19:13 359

转载 从招式与内功谈起——设计模式概述(三)

1.3 设计模式有什么用      下面我们来回答最后一个问题:设计模式到底有什么用?简单来说,设计模式至少有如下几个用途:      (1) 设计模式来源众多专家的经验和智慧,它们是从许多优秀的软件系统中总结出的成功的、能够实现可维护性复用的设计方案,使用这些方案将可以让我们避免做一些重复性的工作,也许我们冥思苦想得到的一个“自以为很了不起”的设计方案其实就是某一个设计模式。在时间就

2016-09-07 11:18:17 813

转载 从招式与内功谈起——设计模式概述(二)

1.2 设计模式是什么       俗话说:站在别人的肩膀上,我们会看得更远。设计模式的出现可以让我们站在前人的肩膀上,通过一些成熟的设计方案来指导新项目的开发和设计,以便于我们开发出具有更好的灵活性和可扩展性,也更易于复用的软件系统。       设计模式的一般定义如下:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的

2016-09-07 11:17:47 759

转载 从招式与内功谈起——设计模式概述(一)

关于金庸小说中到底是招式重要还是内功重要的争论从未停止,我们在这里并不分析张无忌的九阳神功和令狐冲的独孤九剑到底哪个更厉害,但我想每个武林人士梦寐以求的应该是既有淋漓的招式又有深厚的内功。看到这里大家可能会产生疑问了?搞什么,讨论什么招式与内功,我只是个软件开发人员。别急,正因为你是软件开发人员我才跟你谈这个,因为我们的软件开发技术也包括一些招式和内功:Java、C#、C++等编程语言,Eclip

2016-09-07 11:17:11 683

原创 2010-2011-...-2016

别了,凄凉的雨后,看着幸福流走,无情的回首,泪眼模糊的双眸 2010年2月10日落花有意随流水 流水无心恋落花 别了,凄凉的雨后,看着幸福流走, 2010年2月10日如果梦想可以飞翔,朋友就是左半边翅膀 2010年8月16日青春会开满记忆的花,带着或喜或悲的枯枝败叶,还有满院断肠的落红 2011年1月28日默然,相遇, 寂静,欢喜 2011年6月11日人生若只如初见,晚相逢 又何怨 20

2016-08-31 18:30:18 1078 1

原创 倘若我们不再联系,不久之后就会把彼此忘记

倘若我们不再联系,不久之后就会把彼此忘记。 我不敢果断地去做一些决定,我以为这样对他人不好,其实到最后,受拖累的只有自己而已。

2016-06-05 18:10:58 635

原创 越努力,越幸运

从开学就开始准备找实习,3月中旬开始准备简历,准备了半个月,错过了一些内推的机会,因为大多内推都是在3月底就结束了,当然也有幸赶上了一些公司内推的末班车,犹记得第一次面试时兴奋紧张的心情(百度面试),然而面试过后才觉得自己差的太远,太多的东西需要学习,没有过多沉浸在失败的低落中,开始给自己列了一些需要学习的知识清单,一步步学习。4月尾声,接到了阿里面试,(内推的java岗已经满了,无奈推的移动端。)

2016-05-26 19:22:52 503

转载 线程池的原理和连接池的原理

线程池的原理:           来看一下线程池究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。可能你也许会问:为什么要搞得这么麻烦,如果每当客户端有新的请求时,我就创建一个

2016-05-19 11:25:22 320

原创 阿里面试java研发工程师

笔试面试约的11点面试,10点左右感到现场,通关卡与身份证验证后,刚坐下,这边就通知面试了。所以赶得有点急,心理没有做调整。自我介绍就是一个暖场,同时也让面试官有时间看看你的简历。面试开始1 首先提问了一个简单的问题,java语言的特性?说一下多态的概念?继承和组合区别?什么时候用? 2 java多线程怎么实现的?解释一下什么是线程池? 3 看到你数据库用到了连接池,说一下连接池的作用? 4

2016-05-19 11:23:32 944

原创 java基础知识学习笔记(四)

类与对象java是一种面向对象的开发语言。java程序是由类与对象组成的。类与对象之间有什么关系呢?类是构造对象的蓝图或模板。由类构造对象的过程,称之为创建类的实例。可知对象就是类的一种实例或具体实现。为什么为选用java语言做开发,这种面向对象的语言对开发有什么好处?首先,从设计上,对一个问题,你可以暂且不管它的具体实现是什么,先把它抽象成一个对象,问题中涉及到的数据,变成对象中的实例域,求解问题

2016-05-13 19:46:42 632

转载 阿里巴巴常考面试题及汇总答案

原文地址:http://blog.csdn.net/free0sky/article/details/7927275一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?答:   1、String是字符串常量,StringBuffer和StringBuilder都是字符串变量。后两者的字符内容可变,而前

2016-05-13 00:20:31 481

原创 java与php在web开发方面的区别

语言比较php是解释执行的服务器脚本语言,语言风格和c语言比较像,而java是面向对象的语言,它的最初原型是从c++上演化而来的,学习java首先要理解面向对象的概念,所以从这点上,php较java好学。java编译成字节码.class文件,然后在java虚拟机上执行。java的web开发首先想到就是JSP,原来的web开发是servlet实现的(java源文件中内嵌大量html元素,用out.pr

2016-05-13 00:03:37 829

原创 金智教育校园招聘笔试

选择题部分树的前序遍历、中序遍历,排序算法的时间复杂度,虚函数,TCP/IP协议等等。总结:小题侧重数据结构,网络协议等一些基础知识。编程题用递归方法判断一个数组是不是递增数组/** * */package com.su.JinZhi;/** * @title IsIncreaseArray.java * @author Shuai * @date 2016-5-9下午2:39:41

2016-05-09 15:12:50 1796

转载 找工作知识储备(3)---从头说12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用

作者:寒小阳时间:2013年9月。出处:http://blog.csdn.net/han_xiaoyang/article/details/12163251。声明:版权所有,转载请注明出处,谢谢。0、前言     从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算

2016-05-08 22:37:42 858

原创 java基础知识学习笔记(三)

Java集合引言在实现某个方法时,选择不同的数据结构,代码的简洁性与时间效率会有所不同,根据需要,选择合适的数据结构解决问题。比如要搜索很大数据量但是有序的数据(数组),或者在序列中间插入一个或删除一个元素(链表),或者需要建立键与值的关系(map),等等。以上一些数据结构在java中如何实现的?接口的概念在介绍接口之前,先给出一个java的集合框架图 简单说明一下:短虚线表示的矩形框:接口(8个

2016-05-07 21:53:18 884

原创 如何学好java?

最近在面试中深感java基础知识的匮乏,看了一些java成长之路的博客,跟着博客中提到的知识,慢慢学习了一段时间,但总感觉事倍功半。很苦恼,逐渐有点迷失方向,突然就看到了一篇文章,写的很清晰,也许关于程序员,真的无捷径可循,不可急躁,方能得益于身。如果有心为之,就过来一起看看吧。作者:樊凯 链接:https://www.zhihu.com/question/19945685/answer/1359

2016-05-07 20:29:34 644

原创 剑指offer之面试题30:最小的k个数

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:如果不考虑时间效率的话,很容易想到就是把数组排序,直接用Arrays.sort(int[] a)方法可以对指定的 int 型数组按数字升序进行排序(但有一点注意,这样就会修改输入的数组)。该排序算法是一个经过调优的快速排序法,此算法在许多数据集上提供 n*log(n

2016-05-07 14:27:05 587

原创 剑指offer之面试题29:数组中出现次数超过一半的数字

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路: 一般方法:先排序,然后统计每个数字出现的次数,O(nlogn) 其他方法: 数组中有一个数字出现的次数超过数组长度的一半,如果把这个数组排序,那么排序之后位于数字中间的数

2016-05-05 21:46:39 407

原创 剑指offer之面试题28:字符串的排列

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。思路:把原字符串看成两部分:第一个字符,后面的所有字符。后面的字符又可看成:第一个字符,后面的字符…这是一个递归的

2016-05-04 17:26:55 354

原创 剑指offer之面试题27:二叉搜索树与双向链表

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:采用中序遍历的思想(二叉搜索树中序遍历有序)。假设某一时刻遍历到根结点(结点10),则此时左子树已经转化成双向链表,用一个指针指向此时的尾结点,现在可将原来的二叉搜索树看成三部分:已经转化好的左子树,根结点,未转化的右子树。且此时尾结点的值<根结点<右子树,我们可以把他们连

2016-05-04 15:41:29 587

原创 剑指offer之面试题26:复杂链表的复制

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。结点的定义已给出/*public class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; RandomListNode(int

2016-04-29 21:23:11 454

原创 剑指offer之面试题25:二叉树中和为某一值的路径

题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。举个例子分析一下 10 / \ 5 12 / \ 4 7 和为22的路径有两条:{10,5,7},{10,12}怎么得到的? 首先需要先遍历每

2016-04-27 18:09:27 605

原创 剑指offer之面试题24:二叉搜索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。举个例子,如图所示二叉搜索树,左孩子结点值<根结点<右孩子结点值 8 / \ 6 10 / \ / \ 5 7 9 11则输入数组{5,7,6,9

2016-04-27 16:07:29 408

原创 剑指offer之面试题23:从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。输入二叉树 8 / \ 6 10 / \ / \ 5 7 9 11输出 8,6,10,5,7,9,11思路:二叉树的层次遍历 初始化队列,结点8入队,结点8出队,8的孩子结点不为空,把8的孩子结点6,10放进队列中。6出队,

2016-04-26 11:58:33 359

原创 剑指offer之面试题22:栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。思路:这是道很抽象的题,根据题目所给的例子验算一遍。4,5,3,2,1第一个出栈的4必须先入栈且在栈顶,入栈顺序按照序列1,2,3

2016-04-26 00:11:54 416

原创 剑指offer之面试题21:包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。在该栈中,调用min、push以及pop的时间复杂度都是O(1)。思路: 第一种思路,可不可以每次push操作后,对栈中元素排序,使最小的元素位于栈顶?这样min操作可以保证在O(1)内完成,但pop操作就与栈的pop操作违背了(栈顶的元素不一定是最后进栈的,不是后进先出)。显然这种思路行不通,直接pass掉。第二种思路

2016-04-25 22:57:44 328

中科大软院软件测试4

中科大软院,软侧实验4WAS性能测试,附带实验源码以及实验报告,仅供学习参考

2016-06-30

中科大软院软件测试3

中科大软院,软侧实验3单元测试,人民币大小写转换,附带实验源码以及实验报告,仅供学习参考

2016-06-30

中科大软院软侧实验2

中科大软院,软侧实验2白盒测试,人民币大小写转换,附带实验源码以及实验报告,仅供学习参考

2016-06-30

中科大软院软侧实验1

中科大软院,软侧实验,人民币大小写转换,附带实验源码以及实验报告,仅供学习参考

2016-06-30

中科大软院算法导论实验七

这是我自己总结的中科大软院算法导论实验七,最佳调度,很全,包括源码,实验报告,在此分享,希望能对学弟学妹的有所帮助

2016-01-16

中科大软院算法导论实验六

这是我自己总结的中科大软院算法导论实验六,赫夫曼树,很全,包括源码,实验报告,在此分享,希望能对学弟学妹的有所帮助

2016-01-16

中科大软院算法导论实验五

中科大软院算法导论实验五,包括源码,实验报告

2016-01-16

中科大软院算法导论实验三

这是我自己总结的中科大软院算法导论实验三,很全,包括源码,实验报告,在此分享,希望能对学弟学妹的考试复习有所帮助

2016-01-16

中科大软院高软复习资料

这是我自己总结的中科大软院高软复习资料,很全,包括ppt,老师提问的问题(这个很重要),自己总结的word格式的重点题目以及答案(里面已考部分是期中考试考过的),在此分享,希望能对学弟学妹的考试复习有所帮助

2016-01-16

USTC-算法基础课-2013-第二次习题课

中科大算法导论习题答案第二次习题课,比较完整.ppt

2015-12-30

USTC-算法基础课-2013-第一次习题课

比较全的算法导论第三版作业答案,中科大的.ppt

2015-12-30

中科大软院算法导论实验二

中科大软院算法导论实验二:红黑树的插入算法实验,报告与源码等。仅供参考,有待改进,望对学弟们有所帮助,故在此分享

2015-11-18

中科大软院算法导论实验一

中科大软院算法导论实验一:快排序的优化算法,实验报告,源码,仅供参考,有待改进,望能对学弟有所帮助,在此分享

2015-11-18

中科大软院数据库实验一

里面有数据库实验一的银行业务系统的逻辑及物理图,以及数据库导出的截图,当然仅供参考,有待改进,希望能帮助学弟们,故在此分享

2015-11-18

中科大软院数据库实验二

里面有数据库实验二的buffer管理模拟LRU算法java实现源码,以及LRU-k改进算法源码,两者比较,可以加分的,当然仅供参考,有待改进,希望能帮助学弟们,当时我也是煞费苦心,懂得,故在此分享

2015-11-18

数据库系统实现答案

数据库系统实现答案,部分答案,基本较全,包括2,3,4,5章(中文版)

2015-11-18

空空如也

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

TA关注的人

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