自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

转载 访问者模式

标签 :设计模式引言一个学校可能每天有不同的领导过来巡视检查,今天来一个教育局领导检查教育实施工作,明天来一个卫生局的领导检查食堂卫生,后天来一个公安局的领导检查安全消防安全设备。每一个领导会带着不同的目的来访问学校。教育局领导的工作内容包括教育方针研讨会、课堂旁听和教师慰问;卫生局领导的工作内容包括检查食堂厨房卫生、食品安全研讨会等;公安局领导的工作内容包括设备巡查、消防演练...

2017-05-12 07:02:00 108

转载 模版模式

标签: 设计模式引言在模板方法模式中,将实现功能的每一个步骤所对应的方法称为基本方法(例如“点单”、“吃东西”和“买单”),而调用这些基本方法同时定义基本方法的执行次序的方法称为模板方法(例如“请客”)。模板方法定义算法执行的骨架,子类继承下来直接使用,一般用final修饰不允许子类修改。抽象类的任务是搭建逻辑的框架,通常由经验丰富的人员编写,抽象类的好坏直接决定了程序是否稳定。...

2017-05-10 09:32:00 118

转载 策略模式

标签(空格分隔): 设计模式行为型模式。一个类的行为或者其算法可以在运行时更改。策略模式与状态模式类似,但Context类中包含一个strategy接口的引用,而不是state接口的引用。策略的选择是客户端决定的,不同的策略最终都是为了达到同一个效果。例如排序算法有很多种,可以使用策略模式来动态替换排序算法。类结构图角色环境类(Context):用一个ConcreteS...

2017-05-09 20:13:00 115

转载 状态模式

标签(空格分隔): 设计模式行为型模式。类的行为是基于它的状态改变的,状态改变,行为跟着改变。具体实现:一个状态接口,具体状态类实现该接口。一个Context类,拥有状态的实例,随着这个状态的改变,它的行为会改变。注重状态的转变,状态只能从一个状态转变按规则转变成另一个状态,而不是任意转换。例如房间只能从未预订变成预订。类图结构角色:环境类(Context): 定义...

2017-05-08 21:55:00 95

转载 观察者模式

标签(空格分隔): 设计模式行为型模式。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。不知道观察者有多少个,观察者可以动态绑定和解绑。具体实现:Subject角色:抽象角色,用来存放所有观测者,即聚集一个Observer的list,提供绑定观测者和解绑观测者的借口,其实就是把Observe放进list和从list中删除...

2017-05-06 16:50:00 57

转载 备忘录模式

标签(空格分隔): 设计模式简介  行为型模式。保存一个对象的状态,以便在某个时刻恢复对象。  打boss前存档,下象棋悔棋,编辑文档时使用Ctrl+z撤销等场景都是备忘录模式的应用。  优点:可以回滚。缺点:资源消耗严重。具体实现  写一个存储对象状态的类(类似于备忘),然后在另一个类中维护一个备忘类的List,这个类类似于备忘录。当需要保存状态时,把一个备忘对象add进...

2017-05-05 10:03:00 76

转载 中介者模式

标签(空格分隔): 设计模式  降低多个对象与类之间的通信复杂性。  行为型模式。  将网状结构的类交互,分离成星型结构。  没有QQ之前,大家的沟通都是两两之间面对面的,消息的交互非常复杂,如果想要发出一条新信息,让大家都知道,这个过程要传递很多遍。有了QQ群之后,大家只要把消息发到QQ群上,所有人立马就能看到了。这里的QQ群就充当了中介者的角色。具体实现    每个同...

2017-05-04 16:06:00 70

转载 Java中数组复制的4种方法

标签: java基础在Java中,我们经常需要复制一个数组,以下介绍几种数组复制方法。1. for循环复制最简单直观的方法,循环访问当前数组的每一个元素,并复制到新数组的相应下标。int [] oldArray = {1, 2, 3};int [] newArray = new int[oldArray.length];for(int i = 0; i < oldAr...

2017-04-22 09:58:00 143

转载 面试题34:丑数

标签: 剑指offer题目描述:只包含因子2,3,5的数称为丑数,1是第一个丑数,求第n个丑数是什么。思路:1 . 暴力法。  从1开始遍历每个整数,判断每个数是不是丑数,是的话计数器加1,当计数器等于n时,返回当前遍历到的整数。这种算法要计算1到第n个丑数中间的所有数。// 判断一个数是否为丑数public boolean isUgly(int number){ ...

2017-04-16 16:35:00 105

转载 常见笔试题型和解题思路汇总

huffman树的构造过程,带权路径长度。给出二叉树的先序遍历,中序遍历,求后序遍历。转载于:https://www.cnblogs.com/banyu/p/6718841.html

2017-04-16 15:15:00 127

转载 23:请不要在新代码中使用原生态类型

标签: Effective Java容器使用泛型可以在编译时防止你放错元素,放错元素编译不通过。从容器中拿元素出来时不需要类型转换。现在还支持原生态是因为要兼容旧代码,新代码坚决不要用。可以使用Object作为类型参数,明确告知编译器可以放任意对象,例如List。如果要使用泛型,但确实不关心类型参数,则可以使用?通配符,例如Set<?>来代表任意类型参数。通配...

2017-04-16 15:12:00 63

转载 命令模式(Command Pattern)

标签: 设计模式简介  数据驱动的设计模式,行为型模式。  定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。  使命令的发送者和执行者解耦。  把每个命令(方法)封装成一个对象,以便对多个功能进行封装和处理。UML类图角色客户(Client):创建了一个具体命令(ConcreteComma...

2017-04-16 10:01:00 54

转载 13: 使类和成员的可访问性最小化

标签(空格分隔): Effective Java尽可能地使每个类或者成员不被外界访问。类或者接口能做成包级私有,就做成包级私有。如果做成公有,则是API的一部分,有责任支持它。如果一个类只在另一个中使用,考虑做成另一个类的内部私有类。缺省(default)的访问级别是包级私有。protected级别是导出的API的一部分,应该尽量少用。实例域不能是公有的,final的域例...

2017-04-15 09:49:00 72

转载 责任链模式(Chain Of Responsibility Pattern)

标签: 设计模式简介  责任链模式是行为型模式。  为请求创建了一个接收者对象的链。每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。  使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止(不一定有)。应用  Strut...

2017-04-15 09:36:00 55

转载 面试题 10:二进制中1的个数

标签 :剑指Offer问题描述:统计一个整数n的二进制表示中1出现的次数。考虑:该整数为0的情况;该整数为负数的情况;思路:右移法  将该整数n和1做与操作,如果结果为1,说明最低位是1,如果结果为0,说明最低位为0。循环使整数n右移一位,统计1出现的次数,直到n为0,循环结束。32位整数要循环32次。 public int NumberOf1(int n)...

2017-04-14 22:35:00 66

转载 代理模式(Proxy Pattern)

标签 :设计模式模式简介  代理模式是一种结构型模式。使用一个代理类来调用真实类的请求。  代理可以提供延迟实例化,访问控制,等等功能。UML类图角色抽象角色(Subject):声明真实对象和代理对象的共同接口。代理角色(Proxy):代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代...

2017-04-14 10:47:00 69

转载 Java多线程

标签 :java基础1. Java多线程的实现(1)继承Thread类,重写run方法。(2)实现Runnable接口,重写run方法。(这个设计比较好)本质上Thread类就是实现了Runable的类。// 创建线程Runnable task = new TaskClass();// 开启线程new Thread(task).start();2. 线程池使用使用E...

2017-04-10 21:17:00 77

转载 数据库Select查询总结

标签: 数据库select from where从某个表中选择符合条件的某列。// * 表示选择所有列SELECT * FROM R_User WHERE uname = 'Amy' AND uname = 'bob'// 选择部分列,用逗号分隔SELECT uname, age FROM R_user WHERE uname = 'Amy' OR uname = '...

2017-04-08 16:41:00 179

转载 享元模式(Flyweight Pattern)

标签 : 设计模式模式简介  享元模式是一种结构型模式。  当有大量重复对象时,通过共享对象,来达到减少系统运行时对象的总数的目的。  避免对象过多导致内存溢出。提升效率。  享元模式以共享的方式高效地支持大量的细粒度对象。  需要有一个工厂来控制对象生成。核心实现  在对象工厂中放一个HashMap,在HashMap中能查找到该对象就直接返回,查找不到才new一个新的...

2017-04-08 09:46:00 64

转载 外观模式(Facade Pattern)

标签 : 设计模式外观模式是结构型模式。定义  为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口(Facade类),这个接口使得这一子系统更加容易使用。例子  把一个子系统比作公司,外观类就是公司的公关部,任何客户与这个公司合作只需要找公关部即可,公关部会根据客户的需求调用公司内部资源。降低了客户和这个公司的“耦合”。如图:系统角色(1)外观角色(F...

2017-04-06 16:48:00 48

转载 快速排序 两种partition实现

标签: 算法基础1. 算法简介  快速排序,正如其名字一样,是排序算法中速度较快的一种排序,算法复杂度为\(O(n*logn)\)。  排序过程中会打乱元素的相对位置,是不稳定排序。  算法思想:选定一个pivot,把元素分为两组,一组比pivot小,一组比pivot大,然后按照相同的方法处理这两组元素,是一个递归的过程。  算法核心是partition方法,即把元素分开两组...

2017-04-02 23:37:00 232

转载 装饰器模式(Decorator Pattern)

装饰器模式(Decorator Pattern)标签: 设计模式  装饰器模式是一种结构型模式,目标是动态的给一个对象添加一些额外的职责,装饰器模式使用组合而不是继承的方式来实现。  核心代码是包装器的构造方法传入组件作为参数,再把构造出来的类传入其他包装器,实现不断包装、不同组合包装的过程。  UML类结构图:Component :用来规范被装饰的对象的接口。Concr...

2017-04-02 10:32:00 64

转载 数据库事务 与Spring事务管理

标签: 数据库 框架1. 数据库事务  (1)数据库事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。  (2)事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。  (3)简化错误恢复并使应用程序更加可靠。  (4)必须满足所谓的ACID属性。  (5)事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子...

2017-03-31 19:09:00 73

转载 过滤器模式(Filter/Criteria Pattern)

标签: 设计模式过滤器模式比较简单,是一种结构型模式。使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。即写一个接口,接口中每个方法代表一个标准,传入一组对象,返回这组对象中符合标准的对象。像面试官根据不同标准来刷人的感觉。转载于:https://www.cnblogs.com/banyu/p/6649686.html...

2017-03-31 09:31:00 440

转载 组合模式(Composite Pattern)

标签(空格分隔): 设计模式组合模式是结构型模式,在表示一种关系时使用。将对象组合成树形结构以表示"部分-整体"的层次结构(文件夹与文件,树枝和叶子,部门与员工)。类似递归。客户程序可以像处理简单元素一样来处理复杂元素。UML类结构图Component:是组合中的对象声明接口,实现所有类共有接口的默认行为(即所有Operation())。声明几个接口方法用于访问和管理C...

2017-03-31 09:19:00 46

转载 面试题27 : BST转成双向链表

标签: 算法初始描述:输入一棵二叉搜索树,将其转换为一个排序的双向链表。要求:不能创建任何新的结点,只能调整树中结点指针的指向。思路:二叉搜索树的特性是,其中序遍历是有序的,同时左子树的元素都比根结点小,右子树的元素都比根节点大。由上述特性可知,把二叉搜索树转换成双向链表后,根节点的前一个元素是左子树的最右边结点,根结点的后一个元素是右子树的最左边结点。左子树和右子树的转换...

2017-03-31 08:30:00 67

转载 工厂模式与抽象工厂模式

标签: 设计模式1. 工厂模式  创建型模式,调用者新建对象时使用,不需要new具体对象,只需要先获取一个工厂,从工厂里面按照名字来get对象即可。  优点:隐藏了新建对象的细节,新建对象需要复杂逻辑时使用效果好。  缺点:复杂化新建对象的流程,简单对象使用工厂多次一举。2. 抽象工厂模型  创建型模式,抽象工厂是一个生成工厂的工厂,一般是存在多种工厂时使用。调用者先获取一...

2017-03-30 07:51:00 63

转载 桥接模式(Bridge Pattern)

标签: 设计模式桥接模式用于把抽象化与实现化解耦,使得二者可以独立变化。属于结构型模式,通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。原本使用类继承关系可以解决多维度变化,但是会导致类爆炸。比如二维度下,每个维度有两个变化,则需要\(2*2=4\)个类,是乘法关联。例如汽车在公路上跑,公交车在公路上跑,自行车在公路上跑。然后公路也可能变化,变成高速路,变成沙路,泥路,...

2017-03-30 07:39:00 52

转载 适配器模式(Adapter Pattern)

标签: 设计模式适配器模式一种比较简单的结构型模式。解决已有类复用,但接口不符合客户类需求的场景,这时需要一个“适配器”来转换接口,类似与手机充电口适配器。不宜过多使用,如果需要转换的类比较多,建议重构系统。新设计的系统不要使用适配器模式,而是构想更好的设计。更好的复用,更好的扩展性。UML类结构图  也存在另一种适配器。在java中,继承一个抽象类的子类中, 必须...

2017-03-29 21:32:00 48

转载 Maven项目 Struts和Spring整合

标签: 框架上网找了很久教程,终于成功搭建起了项目,真心不容易,且行且珍惜。一. 新建项目1.新建maven项目,右击,new,project,Maven project,next,next,选择maven-archetype-webapp,next,输入GroupId和ArtifactId,Finish。2.为了避免乱码,将项目编码换成UTF-8,具体右击项目,“属性”。3...

2017-03-28 16:45:00 178

转载 原型模式(Prototype Pattern)

标签: 设计模式  原型模式是使用内存复制的方法创建对象的模式,当需要创建大量类似的对象时,性能较好。属于创建型模式。  区别于工厂模式, 原型模式是先创建一个对象并缓存起来,然后后续需要创建这种对象的时候,只需要调用该对象clone()方法,即可获取一个新对象,由与clone()是内存数据复制操作,这样可以避免new操作带来的巨大性能损失。  由于Client类需要调用Prot...

2017-03-27 13:28:00 49

转载 建造者模式(Builder Pattern)

建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常包括下面几个角色:Builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过...

2017-03-26 15:48:00 39

转载 单例模式

标签: 设计模式单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点的模式。属于建造型模式。1. 简单方式, 懒加载,单线程public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton...

2017-03-26 14:56:00 52

转载 小孩排队问题

标签: 算法初始问题:幼儿园小孩排成一行,但是男孩和女孩相邻会冲突,现在你是老师,每次只能调换相邻两个小孩的位置,要使男女冲突最少,至少要调换多少次?输入情况: 用形如'BBBGGBB'的一个字符串表示队伍,'B'表示男孩,'G'表示女孩。输入情况:最少的调换次数。  目标是使男女冲突最少,可以理解为把男孩和女孩分开两边,左边全站男孩,右边全站女孩(或者左边全站女孩,右边全站男...

2017-03-26 11:50:00 869

转载 扔鸡蛋问题

标签: 算法初始问题:在100层楼里,给定2个鸡蛋,在安全楼层以上的楼扔鸡蛋会碎。设计一种方案,测试哪层楼是最高安全楼层,要求测试次数最少。思路:这是典型的动态规划问题。  假设\(f[n]\)表示从\(n\)层楼找到摔鸡蛋不碎安全楼层的最少判断次数。  假设第一个鸡蛋第一次从第\(i\)层扔下,  如果碎了,说明安全楼层低于\(i\)。剩一个鸡蛋,为确定\(i-1\)下面楼...

2017-03-25 23:27:00 67

转载 路由汇聚计算

标签: 计算机网络假设下面有4个网络:172.18.129.0/24 后面的24表示前24位为子网掩码(255.255.255.0)172.18.130.0/24172.18.132.0/24172.18.133.0/24如果这四个进行路由汇聚,能覆盖这四个网络的汇总地址是:172.18.128.0/21算法思路是,首先从左到右开始,把不同的那个ip数字换算成二进制,即...

2017-03-25 19:22:00 525

转载 Java集合框架学习

http://www.jianshu.com/p/63e76826e852转载于:https://www.cnblogs.com/banyu/p/6604400.html

2017-03-23 12:02:00 65

转载 多线程 - synchronized 和 ReentrantLock的区别

标签: java基础 多线程  synchronized和ReentrantLock都是多线程中的上锁操作,目的是使程序互斥执行,从而保证对资源的访问是线程安全的。1. 使用方法  synchronized是一个关键字,可以修饰方法、语句块。但ReentrantLock是一个类,使用时必须在用户类中组合实现这个类,并调用lock(),unlock()等方法来控制。2. 锁定机...

2017-03-23 11:51:00 83

转载 哈希冲突处理方法总结

1. 开放定址法线性探测再散列,二次探测再散列,伪随机探测再散列。2. 重哈希法多个哈希方法,如果第一下哈希不能找到空位放置,则采用第二个,第三个哈系方法计算,直到没有冲突发生为止。3. 链地址法JDK的HashMap中采用的方法。如哈希时发生冲突,在哈希到的位置上建立链表,在java8中,链表的个数超过一个阈值后会转化成红黑树,大大提高查询效率,默认阈值是8。4. 建...

2017-03-23 10:12:00 101

转载 递归时间复杂度分析-主定理分析

标签: 算法 复杂度分析1. 主定理定义以下是评估递归时间复杂度的主定理,例如有递归形式\[T(n) = aT(n/b) + f(n)\]  其中, \(a≥1\)和\(b≥1\), 均为常数, \(f(n)\)是一个确定的正函数。 在\(f(n)\)的三类情况下, 我们有\(T(n)\)的渐近估计式:若对于某常数\(ε>0\), 有\(f(n) = O(n ^ {l...

2017-03-21 10:22:00 706

空空如也

空空如也

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

TA关注的人

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