- 博客(166)
- 收藏
- 关注
原创 整理MAC下Eclipse的常用快捷键
整理Eclipse常用快捷键开发环境切换到Mac下后原来Window下的快捷键很大一部分是不相容的,习惯了快捷键的生活忽然哪天快捷键不起作用了,跟着的就是开发效率明显降低,频繁录入错误的快捷键让Eclipse都不知道你想要什么了。 以下内容是我整理的经常使用的Eclipse快捷键,主要依据首个按键进行了分类。文档末尾是收集了Mac系统下对文本编辑当标跳转或选中的快捷键。 ...
2017-01-09 10:26:57
141
原创 回调模式
回调在spring中被大量使用,那什么是回调呢? 简单的说,在A类中调用B类的C方法,然后B类调用A类中的D方法。方法D被称为回调方法。回调是实现异步的基础。经典的回调方式如下:Class A实现回调接口CallBack——背景1class A中包含一个class B的引用b ——背景2class B有一个参数为callback的方法f(CallBack cal...
2017-01-06 14:08:57
202
原创 观察者模式(监听器模式)
观察者模式基本概念 观察者模式(Observer),也称发布/订阅模式; 观察者模式是软件设计模式的一种。在此模式中,一个目标(被观察者)管理所有相依于它的观察者,并且在它本身的状态改变时主动发出通知。这通常通过调用各观察者所提供的方法来实现。 观察者模式完美的将观察者和被观察的对象分离开。 面向对象设计的一个原则是:系统中的...
2017-01-06 10:31:29
246
原创 Spring XML使用资源文件进行占位配置不生效
之前一直困扰的关于在XML文件中使用spring读取资源文件,并使用${}占位符替换的问题,现在终于搞明白了。如果存在多个XML文件需要使用资源文件占位替换,必须在每个XML文件的头部进行首先加载。在多个XML文件中注入资源文件时,配置order,并设置ignoreUnresolvablePlaceholders=true具体配置如下: <!-- 引入外部数据源...
2016-12-24 23:43:37
1120
原创 正则表达式基础知识
[...] 位于括号之内的任意字符[^...] 不在括号之中的任意字符. 除了换行符之外的任意字符,等价于[^\n]\w 任何单字字符, 等价于[a-zA-Z0-9]\W 任何非单字字符,等价于[^a-zA-Z0-9]\s 任何空白符,等价于[\ t \ n \ r \ f \ v]\S 任何非空白符,等价于[^\ t \ n \ r \ f \ v]\d 任何数字,...
2016-12-24 23:39:02
96
原创 23种设计模式(13):适配器模式
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题...
2016-12-24 23:38:26
142
原创 23种设计模式(11):装饰者模式
一:装饰模式的定义 --->动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 --->如果大家还记得代理模式,那么很容易看懂这个类图,装饰类的作用也就是一个特殊的代理类. --->在装饰模式中,必然有一个最基本、最核心、最原始的接口或抽象类充当Component抽象构件二:装饰模式的角色 ...
2016-12-24 23:38:10
99
原创 23种设计模式(8):中介者模式
一:中介模式的定义 --->用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 --->中介模式的组成部分: ● Mediator 抽象中介者角色:抽象中介者角色定义统一的接口,用于各同事角色之间的通信。 ● Concre...
2016-12-24 23:37:54
145
原创 设计模式六大原则(6):开闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 开闭原则是面向对象设...
2016-12-23 23:17:43
73
原创 23种设计模式(1):单例模式
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图:类图知识点:1.类图分为三部分,依次是类名、属性、方法2.以<<开头和以>>结尾的为注释信息3.修饰符+代表public,-代表private,#代表protected,什么都没有代表包可见。4.带下划线的属性或方法代表是静态的。5.对类图中对...
2016-12-23 23:17:31
82
原创 23种设计模式(10):责任链模式
一:责任链模式的定义 --->使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 --->责任链模式的重点是在“链”上,由一条链去处理相似的请求在链中决定谁来处理这个请求,并返回相应的结果 --->一般会有一个封装类对责任模式进行封装,也就是替...
2016-12-23 23:14:44
92
原创 设计模式六大原则(2):里氏替换原则
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子...
2016-12-23 23:14:30
90
原创 23种设计模式(9):命令模式
一:命令模式的定义 --->命令模式是一个高内聚的模式 --->将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 --->命令模式的角色 ● Receive接收者角色==>该角色就是干活的角色,命令传递到这里是应该被执行的 ...
2016-12-23 23:14:18
108
原创 23种设计模式(4):模板模式
1 辉煌工程——制造悍马 周三,9:00,我刚刚坐到位置上,打开电脑准备开始干活。“小三,小三,叫一下其他同事,到会议室开会”,老大跑过来吼,带着坏笑。还没等大家坐稳,老大就开讲了:“告诉大家一个好消息,昨天终于把××模型公司的口子打开了,要我们做悍马模型,虽然是第一个车辆模型,但是我们有能力、有信心做好,我们一定要……”(中间省略20分钟的讲话,如果你听过领导人的讲话,这个你应该能够...
2016-12-22 09:37:10
104
原创 设计模式六大原则(1):单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时...
2016-12-22 09:36:55
83
原创 设计模式六大原则(3):依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I...
2016-12-22 09:36:42
136
原创 23种设计模式(2):工厂方法模式
1 女娲造人的故事东汉《风俗通》记录了一则神话故事:“开天辟地,未有人民,女娲搏黄土做人”,讲述的内容就是大家非常熟悉的女娲造人的故事。开天辟地之初,大地上并没有生物,只有苍茫大地,纯粹而洁净的自然环境,寂静而又寂寞,于是女娲决定创造一个新物种(即人类)来增加世界的繁荣,怎么制造呢?别忘了女娲是神仙,没有办不到的事情,造人的过程是这样的:首先,女娲采集黄土捏成人的形状,然后放到八卦炉中烧制...
2016-12-22 09:34:03
134
原创 23种设计模式(7):原型模式
本文主要介绍设计模式中的原型模式。 现在电子账单越来越流行了,比如你的信用卡,到月初的时候银行就会发一份电子邮件到你邮箱中,说你这个月消费了多少,什么时候消费的,积分是多少等等,这是每个月发一次,还有一种也是银行发的邮件你肯定非常有印象:广告信,现在各大银行的信用卡部门都在拉拢客户,电子邮件是一种廉价、快捷的通讯方式,你用纸质的广告信那个费用多高呀,比如我行今天推出一个信用卡刷卡抽奖...
2016-12-22 09:33:49
140
原创 设计模式六大原则(5):迪米特法则
定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才...
2016-12-21 17:26:39
99
原创 设计模式六大原则(4):接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类C来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1 未遵...
2016-12-21 17:23:18
77
原创 23种设计模式(3):抽象工厂模式
1 女娲的失误 上一篇讲了女娲造人的故事。人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋,忘记给人类定义性别了,那怎么办?抹掉重来,于是人类经过一次大洗礼,所有的人种都消灭掉了,世界又是空无一物,寂静而又寂寞。由于女娲之前的准备工作花费了非常大的精力,比如准备黄土、八卦炉等,从头开始建立所有的事物也...
2016-12-21 17:22:48
107
原创 23种设计模式(5):建造者模式
一:建造者模式的定义 --->建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 ● Product产品类 通常是实现了模板方法模式,也就是有模板方法和基本方法,这个参考模板方法模式。例子中的BenzModel和BMWModel就属于产...
2016-12-21 17:22:34
112
原创 23种设计模式(6):代理模式
先看一个例子,是有关于打游戏杀怪兽的。 [java] view plain copy //先定义一个游戏者接口 public interface IGamePlayer { //登陆游戏 public void login(String user, String password); //杀怪,网络游戏...
2016-12-21 17:22:14
105
原创 23种设计模式(14):合成模式
合成模式属于对象的结构模式,有时又叫做“部分——整体”模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。 合成模式 合成模式把部分和整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由它们复合而成的合成对象同等看待。 比如,一个文件系统就是一个典型的合成模式系统。下图是常见的计算机...
2016-12-20 19:05:41
183
原创 23种设计模式(17):备忘录模式
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态类型:行为类类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返回。这时...
2016-12-20 19:05:03
87
原创 23种设计模式(15):观察者模式
观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。观察者模式的结...
2016-12-20 19:04:31
72
原创 23种设计模式(16):门面模式
一:门面模式的定义 --->门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式 --->要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 --->门面模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统...
2016-12-20 19:01:14
89
原创 23种设计模式(12):策略模式
策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 策略模式的结构 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就...
2016-12-20 19:00:16
134
原创 关于Spring MVC非常详细的介绍
目录 一、前言二、spring mvc 核心类与接口三、spring mvc 核心流程图四、spring mvc DispatcherServlet说明五、spring mvc 父子上下文的说明六、springMVC-mvc.xml 配置文件片段讲解 七、spring mvc 如何访问到静态的文件,如jpg,js,css八、spring mvc 请求如何映射到具体的Action中...
2016-12-16 20:25:32
87
原创 apache性能调优
性能测试简介即压力测试,就是根据一定数量的VU(Virtual Users)我称为并发用户操作核心交易后,系统所能达到的最大瓶劲,以便于发现系统的极限、有没有Outof memory这样的问题存在以及相关的系统设置、配置是否搭挡的合理的一种测试。一般商业的比较好的用LoaderRunner,如果没钱的就用Opensource的Jmeter来模拟这个VU的操作。压力测试,存在几个误区,...
2016-12-08 19:43:21
134
原创 Apache status 配置以及怎么查看apache-status
经常有人会为apache进程占用过多的服务器资源而困扰,而apache的日志又多又杂,一般的管理员很难从日志里看出结果来,如果你用的是Apache 1.3.2 及以后的版本,这时候apache的一个很好的工具可以解决您的困扰,那就是apache自带的功能----server-status。 怎样才能打开apache的server-status呢? 首先你得编译apache的一个模块...
2016-12-08 19:34:54
349
原创 修改Linux下Apache的最大连接数
Apache的最大连接数,默认为256个。 修改apache的最大连接数,方法如下: 一:先修改./apache/conf/httpd.conf文件。 # vi httpd.conf 将“#Include conf/extra/httpd-mpm.conf”前面的 # 去掉。 保存。 二:再修改./apache/conf/ex...
2016-12-08 19:34:22
1015
原创 Windows系统下Apache性能优化,提高并发
在Windows系统上面按以往Unix/linux的经验配置Apache时,由于Windows的内存回收机制和进程管理的不同,会发现许多新问题。前些时单位的网站需要搬迁到新的Windows服务器,笔者在调试过程中也碰上了许多问题。新系统是Windows 2003 Server,为了满足网站高负荷的要求,在调整Apache参数时发现进程经常占用内存过多导致当机。经过不断的优化和修改参数组合,终...
2016-12-08 19:32:37
543
原创 Apache优化:修改最大并发连接数
Apache是一个跨平台的web服务器,由于其简单高效、稳定安全的特性,被广泛应用于计算机技术的各个领域。现在,Apache凭借其庞大的用户数,已成为用户数排名第一的web服务器。尽管如此,在实际的生产环境中,我们仍然不可能直接使用默认配置的Apache来充当服务器。毕竟,为了更充分合理地利用Apache服务器,我们都应该根据自己的实际需要对Apache的默认配置作出一些必要的调整。而针对...
2016-12-08 17:43:18
139
原创 tomcat
假期的时候偶尔安装了一下,安装版和免安装版的都试过了,觉得免安装版的比较好一点,涉及到的配置比较多,文件也多,根据我现在掌握的知识,简单的做了一下免安装版的tomcat的基本配置和安装方法。一、配置JDK要想在自己的计算机上安装Tomcat,需要JDK的支持,因为Tomcat是用java语言编写的一个很轻量级的Web服务器。Java SE的最新版下载地址:http://www.jb5...
2016-06-01 22:08:01
73
原创 三步创建Disruptor应用
Disruptor是一个高性能的用于线程间消息处理的开源框架。它的目标就是快. 我们知道,java.util.concurrent.ArrayBlockingQueue 是一个非常优秀的有界队列实现。Disruptor与之相比,性能更加的优秀。性能比较 完整的性能报告在这里.Disruptor内部使用了RingBuffer,它是Disruptor的核心的数据结构。和其它的RingB...
2016-05-12 13:42:06
91
原创 Disruptor 极速体验
已经不记得最早接触到 Disruptor 是什么时候了,只记得发现它的时候它是以具有闪电般的速度被介绍的。于是在脑子里, Disruptor 和“闪电”一词关联了起来,然而却一直没有时间去探究一下。 最近正在进行一项对性能有很高要求的产品项目的研究,自然想起了闪电般的 Disruptor ,这必有它的用武之地,于是进行了一番探查,将成果和体会记录在案。一、什么是 Disrupt...
2016-05-12 13:41:17
81
原创 myeclipse 10 在mac retina 屏幕下显示字体模糊解决方法
1.编辑文件 vi /Applications/MyEclipse/MyEclipse\ 10.app/Contents/Profile/myeclipse.app/Info.plist2.加入如下代码,在</array>下面添加 <key>NSHighResolutionCapable</key><true/> 3.效果如下...
2016-05-05 13:25:29
194
原创 通Java工程转换成maven工程
一、使用IDE提供的转换功能: 1. 右键普通Java项目,在弹出的菜单中选择[Configure]-[Convert to Maven Project]: 2. 在弹出的对话框中输入项目的groupId, artifactId和version等,点击[Finish],在根目录下生成maven的pom.xml文件。 3. 经过IDE转换的maven项目还不能满足要求,需要手动配置: a. 将p...
2016-04-29 15:01:37
83
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人