自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一小步一大步的博客

不平凡的事遇多了也就平凡了

  • 博客(59)
  • 收藏
  • 关注

原创 访问者模式

在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。例如:顾客在商场购物时放在“购物车”中的商品,顾客主要关心所选商品的性价比,而收银员关心的是商品的价格和数量。意图:主要将数据结构与数据操作分离。主要解决:稳定的数据结构和易变的操作耦合问题。何时使用:需要对一个对象结构中的对象进行很...

2019-04-17 14:15:39 340

原创 模板方法模式

在模板方法模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。例如,一个人每天会起床、吃饭、做事、睡觉等,其中“吃饭”和“做事”的内容每天可能不同。意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决:一些方法通用,却在每一个子类都重新写了这一方法。何时使用:有...

2019-04-16 11:11:12 2659

原创 策略模式

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。例如:出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。何时使用:一个系统有许多许多类,而区...

2019-04-11 11:16:55 6174

原创 状态模式

在状态模式(State Pattern)中,类的行为是基于它的状态改变的。如人的情绪有高兴的时候和伤心的时候,不同的情绪有不同的行为,当然外界也会影响其情绪变化。意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。何时使用:代码中包含大量与对象状态有关的条件语句。如何解决...

2019-04-03 10:30:41 281

原创 观察者模式

当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象;MVC 模式中的模型与视图的关系;拍卖的时候,拍卖师观察最高标价,然后通知给其他竞价者竞价等。意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考...

2019-04-02 11:08:52 242

原创 备忘录模式

备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。何时使用:很多时候我们总是需要记录一个对象的内部状态,这样做的目的就...

2019-04-01 17:24:38 136

原创 中介者模式

中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。例如,在 MVC 框架中,控制器(C)就是模型(M)和视图(V)的中介者;意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。主要解决:对象...

2019-03-18 16:41:16 1514 2

原创 迭代器模式

迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要解决:不同的方式来遍历整个整合对象。何时使用:遍历一个聚合对象。如何解决:把在元素之间游走的责任交给迭代器,而不是聚合对象。...

2019-03-18 10:53:27 144

原创 解释器模式

解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。意图:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。主要解决:对于一些固定文法构建一个解释句子的解释器。何时使用:如果一种特定类型的问题发生的频率足够高...

2019-03-06 17:25:39 2603

原创 命令模式

命令模式(Command Pattern)是一种数据驱动的设计模式,请求以命令的形式封装在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。例如,电视机遥控器(命令发送者)通过按钮(具体命令)来遥控电视机(命令接收者),还有计算机键盘上的“功能键”等。意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决:...

2019-03-05 13:57:14 397

原创 责任链模式

责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推,发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求。例如:公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工...

2019-03-04 16:22:59 195

原创 代理模式

代理模式(Proxy Pattern),一个类代表另一个类的功能。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或...

2019-02-28 17:32:57 278

原创 享元模式

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源,这就是享元模式的产生背景。意图:运用共享技术有效地支持大量细粒度的对象。主要解决:在有大量对象时...

2019-02-26 15:18:07 187

原创 外观模式

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。何时使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。 2、定义系统...

2019-02-25 13:34:56 137

原创 装饰器模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在不想增加很多子类的情况下扩展类。如何解决:将具体功能职责划...

2019-02-22 16:38:41 804

原创 组合模式

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,...

2019-02-18 11:49:59 414

原创 桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。意图:将抽象部分与实现部分分离,使它们都可以独立的变化。主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。如何解决:把这种多角度分类分离出来,让它们...

2019-01-18 16:03:13 1023

原创 适配器模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。何时使用:1、系统需要使用现有的类,而此类的接口不符合系统的需要。2、想要建立一个...

2019-01-17 15:57:36 173

原创 原型模式

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。主要解决:在运行期建立和删除原型。何时使用:1、当一个系统应该独立于它的产品创建,构成和表示时。2、当要实例化的类是在运行时刻指定时,例如,通过动态装载。3、为了避免创建一个与产品类层次平行的工厂类层次时。4、当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能...

2019-01-03 15:57:35 192

原创 建造者模式

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。何时使用:一些基本部件不会变,而其组合经常变化的时候。如何解决:将变与不变分离开。...

2018-12-28 15:53:38 863 1

原创 单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。主要解决:一个全局使用...

2018-12-25 16:49:30 54316 13

原创 抽象工厂模式

工厂方法模式(Factory Method Pattern):创建一个工厂接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。抽象工厂模式(Abstract Factory Pattern):是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。主要解决:主要解决接...

2018-12-20 11:39:05 498

原创 工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其子类实现工厂接口,返回的也是一个抽象...

2018-12-20 11:38:34 280 1

原创 java设计模式

一直以来都有看设计模式,却一直没有归纳,对设计模式也只是一知半解,对个人技术的提升几乎没有,书到用时方恨少,所以,从现在开始对设计模式进行归纳,参考一些大佬的博客,网上的资料,对知识进行优化,提高自身。设计模式分为三大类:创建型,结构型,行为型。当然,还有另一类设计模式:J2EE 设计模式。创建型:主要提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。...

2018-12-20 11:37:58 254

原创 timer定时器在项目启动时执行了两次的原因及其解决办法

Spring time定时器在项目启动时执行了两次今天在项目的时候用到了Spring的定时计划任务。这是Spring的特色功能,可以根据设置在特定的时间或间隔时间做特定的事。下面给出一个例子:        @Override public void afterPropertiesSet() throws Exception { Timer timer = new Timer();...

2018-07-11 10:46:25 7143

原创 Linux下启动,关闭Tomcat

在Linux系统下,启动和关闭Tomcat使用命令操作。首先进入到你的tomcat文件中的bin,可以使用cd命令行来进入,例如:cd /usr/local/tomcat/apache-tomcat-9.0.1/bin进入bin文件后,使用ls命令来打开bin文件,例如:# ls打开后显示如下:bootstrap.jar catalina-tasks.xml configt...

2018-07-10 10:31:28 26451

原创 Jquery添加新元素时,无法给新元素添加事件问题

当使用jquery动态添加元素时,无法给新元素添加事件,导致无法触发事件下面是我的jquery无法触发的的代码:$(function(){ //这里是动态添加元素 $(".add").click(function(){ var btn = "<button class='newBtn'>新按钮</button>"; $...

2018-07-05 08:59:09 1258

原创 Jquery对时间进行判断,格式化

1.获取当前时间,并进行格式化      var myDate = new Date();  //获取当前年 var year=myDate.getFullYear(); //获取当前月 var month=myDate.getMonth()+1; //获取当前日 var date=myDate.ge...

2018-07-04 17:42:13 2071

原创 mysql操作查询结果需要使用查询表的字段定义类型来查询不同表的字段时,可以使用case when then else end来解决

        mysql操作查询结果需要使用查询表的字段定义类型来查询不同表的字段时,可以使用case when then else end来解决Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex          WHEN '1' THEN '男'          WHEN '2' THEN '女' ELSE '其他' END --Case搜索...

2018-06-13 11:43:03 1285

原创 String截取指定字符

public static String subString1(String str, String strStart, String strEnd) { /* 找出指定的2个字符在 该字符串里面的 位置 */ int strStartIndex = str.indexOf(strStart); int strEndIndex = ...

2018-06-01 10:44:45 29631 1

原创 ssm框架实现微信公众号菜单栏自定义

通过微信公众平台开发文档可以知道:自定义菜单创建接口为:http请求方式:POST(请使用https协议)https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKENclick和view的请求示例{ "button":[ { "type":"click", ...

2018-03-13 17:44:25 2379 4

原创 关于java自动拆箱,装箱的陷阱

/** * 自动拆箱装箱案例 * @author Administrator * */public class ChaiXiang { public static void main(String[] args) { Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321...

2018-03-09 11:24:36 255

转载 Spring注解@Resource和@Autowired区别对比

@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。1、共同点两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。2、不同点(1)@Autowired@Autowire

2018-01-23 10:37:17 172

转载 数据库三范式

数据库设计三大范式为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。                 在实际开发中最为常见的设计范式有三个:1.第一范式(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据...

2018-01-16 08:34:56 260

原创 关于spring mvc 400 Required String parameter 'xxx' is not present 所需字符串参数“xx”不存在

关于spring mvc 400 Required String parameter 'xxx' is not present 所需字符串参数“xx”不存在如果用的是POST提交,而且ajax中的contentType是用application/json, application/xml等格式的话,应该用@RequestBody注解,并把传入的数据封装到一个Map中,例如: @Request...

2017-12-11 09:28:07 6029

转载 springMVC报出400,The request sent by the client was syntactically incorrect.

前台提交form,tomcat返回 http status 400   The request sent by the client was syntactically incorrect,控制台无任何错误输出。       这是因为前台form表单中的某些参数 和 后台接受的参数类型不一致导致的。即参数名称相同,但是类型不一致。spring mvc在绑定参数的时候出现异常,所以返回4

2017-12-11 09:14:48 215

原创 String判断相等

源于一次公司项目,对java基础还是理解的太浅例:String aString ba.equal(b)和b.equal(a)有什么区别a.equal(b)和b.equal(a)表达式表达的意思是一样的,都是为了判定a和b两个string对象是否相同,但是,前者表示a对象不能为空,否则会报错,后者表示b对象不能为空,否则报错

2017-12-07 10:05:58 6193

原创 ajax一些错误错误

当ajax数据传输失败或直接跳error:1.data是否有写2.后台接受数据是否有用@resquestBody注释3.dataType是否一致4.URL路径问题5.async请求同步异步问题 6.传递的参数就是否使ajax支持的编码格式7.Content-Type类型是否书写正确要注意,单词需要拼写正确

2017-11-27 10:37:51 541

原创 mysql分组多个数据计算

当需要我们做分组并计算每组中的数据时,可以把查询的结果作为一个表,然后再进行运算。表aidcnameclass1000a11001b21002c3表bidsnameagecid2000小红1210002001小白

2017-11-10 16:14:44 1308

原创 mysql中的datetime时间对比

今天在工作中用到,用来记录一下,方便下次使用首先,把datetime中的时间获取到,可以用mysql中的time(),即time(字段)然后再用TIME_TO_SEC()把时间转换成毫秒 ,即TIME_TO_SEC(time(字段))最后进行比较即可

2017-11-08 16:58:52 4812

空空如也

空空如也

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

TA关注的人

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