自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HELLOW,文浩

优雅的键盘啪啦啦。。

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

转载 @ServeletComponentScan和@ComponentScan的区别

一、SpringBoot中使用Servlet在SpringBootApplication上使用@ServletComponentScan注解后,Servlet、Filter、Listener可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册,无需其他代码。1.在入口Application类上加入注解@ServletComponentScanp...

2019-04-30 15:01:06 3125

转载 什么是EJB

EJB到底是什么?1.我们不禁要问,什么是"服务集群"?什么是"企业级开发"?既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务集群"和"企业级开发"吧!这个问题其实挺关键的,因为J2EE 中并没有说明白,也没有具体的指标或者事例告诉广大程序员什么时候用EJB 什么时候不用。于是大家都产生一些联想,认为EJB"分布式运算"指得是"负载均衡"提高系统的...

2019-04-29 18:55:14 285

原创 mysql字符集理解

mysql字符集mysql的字符集设置项非常多,经常让人感觉无所适从,如下:character_set_client utf8 character_set_connection utf8 character_set_database utf8mb4 character_set_filesystem binary character_set_results...

2019-04-29 13:08:23 244 2

转载 二叉树,B-Tree,B+Tree,B*Tree介绍

这是一片很棒的针对b-tree,b+tree,b*tree的介绍文档:1、平衡二叉树(1)由来:平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构;(2)特点:平衡二叉树是采用二分法思维把数据按规则组装成一个树形结构的数据,用这个树形结构的数据减少无关数据的检索,大大的提升了数据检索的速度;平衡二叉树的数据结构组装过程有以下规则:非叶子节点只能允许最多两个子节点...

2019-04-28 15:10:05 231

转载 算法复杂度

【对于一个给定的算法,通常要评估其正确性和运行效率的高低。算法的正确性评估不在本文范围之内,本文主要讨论从算法的时间复杂度特性去评估算法的优劣。】程序是用来解决问题的,是由多个步骤或过程组成的,这些步骤和过程就是解决问题的算法。解决一个问题有多种方法,也就有多种算法。每一种算法都可以达到解决问题的目的,但花费的成本和时间不尽相同,从节约成本和时间的角度考虑,需要找出最优算法。那么,如何衡量一个...

2019-04-28 14:30:48 210

转载 访问者模式

访问者模式介绍最复杂的设计模式,并且使用频率不高,《设计模式》的作者评价为:大多情况下,你不需要使用访问者模式,但是一旦需要使用它时,那就真的需要使用了。访问者模式是一种将数据操作和数据结构分离的设计模式。(觉得太抽象,可以看下面的例子)。访问者模式的使用场景对象结构比较稳定,但经常需要在此对象结构上定义新的操作。 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要...

2019-04-26 21:54:16 319

转载 原型模式

原型模式原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,...

2019-04-26 21:31:28 100

转载 原型模式中浅克隆和深克隆

原型模式所谓的原型模式,无非就是从一个对象再创建另一个可定制的对象,而且不需要知道任何创建的细节。所谓的原型模式,其实质就是编程需要中的克隆技术,以某个对象为原型,复制出新的对象。只是需要注意深复制与浅复制的问题。其实关于原型模式,大话设计模式这本书中的相关实例已经说明的比较通俗了,这里只是重新梳理深复制与浅复制的区别和实例浅复制Java中针对基本数据类型的成员变量,在浅复制的时候...

2019-04-26 21:23:54 396

转载 备忘录类

在不被破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。优点:实现新的封装和提供了状态恢复的实现机制缺点:资源消耗过大模式结构:1.Originator(原发器)保存内部状态的类称为原发器。原发器可以创建一个备忘录,并存储它的当前状态,也可以使用备忘录来恢复其内部状态。一句话,触发存储操作和恢复操作。2.Mem...

2019-04-26 20:48:29 147

转载 中介者模式

在我们的生活中处处充斥着“中介者”,比如你租房、买房、出国留学、找工作、旅游等等可能都需要那些中介者的帮助,同时我们也深受其害,高昂的中介费,虚假信息。在地球上最大的中介者就是联合国了,它主要用来维护国际和平与安全、解决国际间经济、社会、文化和人道主义性质的问题。国与国之间的关系异常复杂,会因为各种各样的利益关系来结成盟友或者敌人,熟话说没有永远的朋友,也没有永远的敌人,只有永远的利益!所以国与国...

2019-04-26 19:30:26 150

转载 解释器模式

为人处事是一门大学问,察言观色、听懂弦外之音都是非常重要的,老板跟你说“XX你最近表现平平啊,还得要多努力”,如果你不当回事,平常对待,可能下次就是“XX,恩,你人还是不错,平常工作也很努力,但是我想这份工作可能不是很适合你…..”。又比如你老大说“XX,你最近表现不错,工作积极性很高啊!继续保持啊!”,你高兴乐呵着心想是不是老板要给我加工资了,可能你等到花都谢了也没有,得到的可能会是...

2019-04-26 19:01:34 96

转载 享元模式

享元模式(Flyweight)是一种结构型设计模式,它的出现是为了在使用大量细粒度对象时节省空间。在使用大量细粒度对象时,它们彼此之间往往有所相同,又有所不同。比如在一个PPT文档中,可能多处出现了“A”这个字母。它们之间的共同处是字形一样,都是A;不同是颜色不同,有的地方字体颜色为黑,有的地方为灰。我们把这些对象之间相同的地方抽象出来称为“内蕴状态”,不同的地方称为“外蕴状态”。在使用享元模...

2019-04-26 15:14:36 154

转载 责任链模式

如果你有Web方面的经验,在JavaScript中的事件流、Java Web中的过滤器,其实都是职责链模式的体现。职责链模式可以这么来形容。A、B、C三个人去参加一个解题比赛,但是A更擅长数学问题,B更擅长理化问题,C更擅长文史问题。于是他们决定这样做:每接到一道题,A先阅读,如果是数学题A解答,否则传给B;B阅读后如果发现是理化题,则B解答,否则传给C来解答。这样A->B->C就构...

2019-04-26 14:29:53 123

转载 生成器模式

生成器模式是一种创建型设计模式,它把对象的创建步骤抽象成生成器,并且可以通过指导类(director)对所有生成步骤的先后顺序进行控制。客户端使用指导类并传入相应的生成器,通过指导类的接口便可以得到相应的对象。以我的理解看,生成器模式中的生成器被用来对生成对象的每一个步骤自身进行控制,比如要产生一辆汽车(最终对象),那么玻璃是用普通玻璃还是防弹玻璃(生成最终对象的一个步骤)。而指导类主要用来设...

2019-04-26 14:20:27 117

转载 桥接模式

设想要绘制一幅图画,蓝天、白云、绿树、小鸟,如果画面尺寸很大,那么用蜡笔绘制就会遇到点麻烦。毕竟细细的蜡笔要涂出一片蓝天,是有些麻烦。如果 有可能,最好有套大号蜡笔,粗粗的蜡笔很快能涂抹完成。至于色彩吗,最好每种颜色来支粗的,除了蓝天还有绿地呢。这样,如果一套12种颜色的蜡笔,我们需 要两套24支,同种颜色的一粗一细。呵呵,画还没画,开始做梦了:要是再有一套中号蜡笔就更好了,这样,不多不少总共36...

2019-04-26 11:41:22 324

原创 复合模式-MVC

复合模式结合至少两个设计模式,组成一个解决方案,解决一再发生的一般性问题。MVCMVC是一种威力强大的复合模式,内部有多个设计模式,因此如果你想了解MVC,应该先了解基本的设计模式。M,model模型,模型持有所有的数据、状态和程序逻辑。V,visual试图,用来呈现状态和数据,是和用户交互的界面。C,control控制,取得用户的输入并告知模型如何作出对应的动作。C层...

2019-04-25 11:25:12 596

原创 代理模式

代理模式为另一个对象提供一个替身或占位符以控制这个对象的访问。代理模式有很多变体,而这些变体几乎都和控制访问的做法有关。proxy和realObj实现相同的接口,当调用proxy的某一个方法时,proxy作出某种控制,去调用真正的realObj,并将处理结果传给proxy,proxy将结果返回给调用者。这就是代理模式的基本逻辑。远程代理当我们想要调用远程的类的方法时,我们先调用本地...

2019-04-23 22:11:48 74

原创 状态模式

唯一不变的原则就是变化一个刚刚设计完毕并诞生的程序,后续必须随着客观世界的改变而进行更新,否则,这个程序会随着时间的流逝而腐烂,最终一无是处。因此,当设计程序时,要时时刻刻想着未来有可能发生的变化,以及如何应对这种变化。而这就是设计模式的核心意义所在。一个好的程序设计,必须易于扩展。一个坏的程序,当你想扩展的时候,就会发现举步维艰,通常改一处,就会影响其他四五处,且潜在的bug无法预知,随...

2019-04-23 11:45:06 98

原创 组合模式

组合模式允许你将对象组合成树型结构来表现整体/部分层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。为了保持透明性,节点和叶节点需实现同样的接口。虽然实现了同样的接口,但实现内容却不相同,节点需要有一个集合,而叶节点却不需要组合一个集合,节点的某些方法是用遍历实现的,而叶节点的该方法却是具体的实现。节点和叶节点总会有不需要实现的方法,这时候可以不做事,可以返回null,可以返...

2019-04-20 18:23:26 106

原创 迭代器模式

迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露其内部的表示。封装的含义被调用方的操作细节都封装在类中,而不需要被客户端知晓,比如利用迭代器封装类的遍历方式,就不用管目标类中用的是数组,列表,集合来作为容器,我们只需要获取迭代器,迭代器由具体的目标类来实现,客户端就不用操心这这个事情了。设计原则一个类应该只有一个引起变化的原因。也就是说一个类只有一个责任,只支持...

2019-04-20 14:29:31 147

原创 模版方法模式

模版方法模式模版方法要用final进行修饰,可以防止该算法被子类覆盖。模版方法就是提供并保护了一个算法骨架,子类为一个或多个步骤定义具体实现。模版方法提供一个钩子钩子的作用是根据某些条件实现模板算法中的可选部分。使子类可以对超类的模版作出一定的影响和抉择。Runtime.getRuntime().addShutdownHook();是Jvm在退出后的一个钩子。好莱坞原则我来找你...

2019-04-19 19:22:26 70

转载 RMI和RPC简介与区别

一:RPC 远程过程调用RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。一次RPC调用的过程大概有10步:  1.执行客户端调用语句,传送参数  2.调用本地系统发送网络消息  3.消息传送到远程主机  4.服务器得到消息并取得参数  5.根据调用请求以及参数执行远程过程(服务) ...

2019-04-17 11:27:31 183

转载 跨域问题解决方案

当前端页面与后台运行在不同的服务器时,就必定会出现跨域这一问题,本篇简单介绍解决跨域的三种方案,部分代码截图如下,仅供参考:方式一:使用ajax的jsonp前端代码服务器代码使用该方式的缺点:请求方式只能是get请求方式二:使用jQuery的jsonp插件插件下载网址:https://github.com/jaubourg/jquery-jsonp前端代码服务器代码使用该方式...

2019-04-17 11:03:34 97

转载 Servlet简介

本文介绍真的是言简意赅啊!看完之后就了解了servlet是什么!servlet有点类似于观察者模式哦!sun公司制定的一种用来扩展web服务器功能的组件规范(服务器端的Java应用程序)。具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其它HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层1.用来扩展web服务器功能(生成动态的...

2019-04-17 10:35:07 83

转载 Mysql索引命中失效的几种情况

1.索引无法存储null值  a.单列索引无法储null值,复合索引无法储全为null的值。  b.查询时,采用is null条件时,不能利用到索引,只能全表扫描。  为什么索引列无法存储Null值?  a.索引是有序的。NULL值进入索引时,无法确定其应该放在哪里。(将索引列值进行建树,其中必然涉及到诸多的比较操作,null值是不确定值无法    比较,无法确定null出...

2019-04-17 10:23:11 1425

原创 负载均衡的会话保持和长短连接简介

本文基于负载均衡讲会话保持和TCP长短链接。如果你的负载均衡关闭了会话保持,还是有负载不均衡的情况,本文章正适合你来看。图片来源:王朝阳简单来说会话保持是指连接断开,在规定时间内再次连接的时候,保证路由到同一服务器。而长连接在keep-alive状态下,也是会路由到同一服务的。会话不保持的话,连接断开,再次连接的时候,会重新进行服务器路由。会话保持会话保持机制的意义就在于,...

2019-04-16 17:05:44 8414

原创 外观模式

外观模式用一个接口,简化子类系统中的一群复杂的接口调用。外观模式,并没有封装原先的子系统,其只是提供另外的简化接口,代替原先对于子系统的复杂调用。外观模式将客户代码从子系统中解耦,任何对子系统的升级都不会影响客户原先的代码内容。适配者的意图是改变接口,外观的意图是简化接口,装饰的意图是增加类的功能。最少知识原则减少对象之间的交互。可以这样理解,我们不要调用组件内部组件的方法,这...

2019-04-10 18:20:27 170

原创 适配者模式

适配器模式将对象包装起来,并将其接口转化为想要的接口,以符合客户的期望。(与装饰者比较,后者将对象包装起来,赋予对象新的职责)客户和被适配者是解耦的,因为客户不知道被适配者的细节。对象适配器和类适配器对象适配器组合被适配者,被适配者及其子类都可以适配,弹性更强。类适配器通过多重继承目标接口和被适配者,java无法使用,且弹性不足。枚举类和迭代类Enumeration类枚举器...

2019-04-10 17:40:13 232

转载 Prometheus配置/查询语句等简介

一. Server端 安装&配置&使用1. 安装1.1 二进制包https://prometheus.io/download/这个网页提供了各种组件的二进制包, 如果有的组件没有列出来,就在github上查找相应的repository.还有一些独立维护的exporters: https://prometheus.io/docs/instrumenting/expor...

2019-04-08 15:54:23 10312

原创 命令模式

命令模式把方法调用封装起来。日志记录,撤销等行为。命令模式可以将“动作的请求者”从“动作的执行者”对象中解耦。但是当你调用方法的时候,不用执行者对象去调用,怎么可能?利用命令对象,把请求封装成一个特定的对象,当调用请求时,直接用该命令对象调用。而该命令对象组合了执行者对象,这就达到了上述的解耦目的。这让我想起了,遥控器的学习功能。是不是也是用这种方式进行解耦的。只要动作调用者用接口...

2019-04-08 11:49:44 147

原创 单例模式

有些情景下,我们只需要一个对象,比方说数据库连接池、线程池、缓存、对话框、处理偏好设置的对象、注册表对象、日志对象、打印机显卡等设备的驱动程序对象。如果创建了多个对象,很有可能造成程序行为异常、资源使用过量、或者是不一致的效果。当然唯一的一个实例可以靠约定或者全局final变量做到,但是这样会有一个缺点,如果这个对象创建之后就非常消耗资源。单件模式:一个类只有一个实例,并提供一个全局的访问...

2019-04-04 11:13:36 70

转载 工厂模式

当运用多态实例化对象的时候,有时候要根据条件选择不同的实现类对象。但是用new的时候,就无法避免用具体实现类。简单工厂模式只是简单的把创建对象的代码转移到Factory类中,调用该类的create方法,返回一个对象。这样的好处是将创建代码集中于一处,可以有多个客户进行调用,方便管理,就像把所有的羊用栅栏围起来一样。而且客户方不需要知道创建对象的细节,也就是解耦了。静态工厂模式只是把...

2019-04-03 13:50:58 84

原创 装饰者模式

设计原则:类应该对扩展开放,对修改关闭。注意是类的扩展-修改,而不是业务流程代码,当有新的行为时,业务流程代码肯定要变,但是类可以不变和复用。继承没有弹性,那是因为类的行为在编译时就静态决定了,想改变行为,必须修改源代码。组合有弹性,是因为类的行为是通过组合的超类调用的,当超类引用指向不同的实现类对象时,只用扩展实现类对象而不用修改类的源代码,类就能产生不同的行为,这种就可以说类的行为在运...

2019-04-02 16:29:14 140

原创 观察者模式

什么叫松耦合对象间可以交互,但是他们并不太清楚彼此的细节。这就是多态的魅力,出版者只需要知道订阅者实现了某个接口,就可以了,不用清楚这些对象具体是怎么实现这些接口的,即使有新的对象加入,只要它实现了这个接口,出版者就不用修改自己的代码。即使订阅者修改了自己的代码,并不会影响出版者,因为两者是松耦合的。只要他们之间遵守接口的约定,我们就可以自由的改变他们。设计原则:为了交互对象间的松耦合设计...

2019-04-01 11:42:15 325

空空如也

空空如也

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

TA关注的人

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