自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

读书就是赚钱

nothing is impossible

  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 MultipartFile-使用策略模式实现可拓展文件分类上传

引子: 想起以前第一个项目的时候,常常使用apache的fileUploadutil,感觉效果很不好,又不容易实现一个上传的过程。 后来使用了spring提供的MultipartFile上传机制,将少了很多复杂的处理过程。但是随着业务逻辑的复杂,对于文件的分类那时候处理得比较困难,比如上传一个图片,还是pdf,还是doc,图片多大?pdf多大?分别存储的路径在哪?如果是图片要压缩怎么办?等等,

2016-09-23 14:42:48 2458

原创 提高代码质量-总结思维导图

拜读了“究竟怎样写代码才算是好代码“这篇文章http://blog.csdn.net/u013970991/article/details/52609083。简单做了个整理,规划学习路线,提高代码质量

2016-09-22 11:57:08 614

原创 easy ui in action 两个月总结

**定义:**jquery easy ui 是以jq为基础一个前端ui框架,通过easy ui相关插件的混合使用,可以高效搭建出一个漂亮的系统管理平台,或门户网站。与此框架相同类型的前端框架有bootstrap,jquery ui ,ext js等。jquery ui 与 jquery easy ui 的不同之处在于,jq ui 可以使用的组件相对比较多,比如他还提供了门户的搭建框架,管理系统框架,

2016-09-20 18:26:30 703

原创 一头扎进设计模式-策略模式

定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。用自己的话说:把算法封装好在类里面,通过组合的方式进行算法切换。代码: 定义一个鸭子接口:public abstract class Duck { //今天开始学习设计模式,策略模式实现鸭子的飞,叫灵活功能 private Fly flier; p

2016-09-18 14:56:48 343

原创 一头扎进设计模式-状态模式

定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。用自己的话说:把每个状态的具体行为封装的具体的某个类中,让状态类代替主体是实现一些操作。代码: 定义一个状态接口类public interface State { //插入

2016-09-18 14:22:54 325

原创 一头扎进设计模式-观察者模式

定义:观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。用自己的话说:思想是往观察者里面注入主体,但

2016-09-18 11:14:56 310

原创 一头扎进设计模式-迭代器模式

定义:迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。用自己的话说:封装了列表对象,不把底层的东西暴露给用户,注意:每次获取迭代器的时候,都会取到一个新的迭代器,所以记得不能直接取着用。代码: 首先,我们定义一个迭代器接口:public interface OfferIterator { Iterator<String> itera

2016-09-18 10:16:08 284

原创 一头扎进设计模式-命令模式

定义:命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。用自己的话说:把真正操作的实体封装到命令里面,通过命令对实体进行真正的操作。代码: 定义一个真正操作的实体类:public class GarageDoor { public void up(){ System.out.p

2016-09-13 16:24:33 259

原创 一头扎进设计模式-模版模式

定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情冴下,重新定义算法中的某些步骤。用自己的话:把算法的步骤,困难的实现,通用的实现都在父类里面规定好,把特殊的实现交给子类,达到一个复用的效果。”不用打给我,我会打给你”,子类中的方法不能访问上层类的东西,好莱坞原则代码: 定义一个泡茶抽象类:public abstract class MakeT

2016-09-13 11:53:40 255

原创 一头扎进设计模式-代理模式

定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。用自己的话说:把真正运行的类封装到代理类里面,当实际调用时通过代理类去调用,代理类与真正运行的类实现同一套接口,代理类可以在真正操纵前对动作进行一些处理,适用为 远程代理:远程链接时,通过代理类隐藏网络获取等相关动作。 虚拟代理:使用代理

2016-09-13 11:27:39 279

原创 一头扎进设计模式-外观模式

定义:外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。用自己的话:把所有操作复杂的类集合到一起,提供一个容易操作的接口代码: 定义一个灯类:public class Light { public void openLight() { System.out.println("开灯"); }

2016-09-13 11:09:11 417

原创 一头扎进设计模式-装饰者模式

定义:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。用自己的话说:装饰者与被装饰者实现同一个接口,把被装饰者当为参数传递到装饰者中,由装饰者进行粉饰调用,用户面向装饰者代码: 定义一个抽象饮料类public abstract class Beverage { //抽象饮料类 String description

2016-09-12 16:37:51 294

原创 一头扎进设计模式-组合模式

定义:组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 “组合对象” 的含义。用自己的话说:使用该模式把类组合成类似树的结构,树的结点与树的子叶共同继承同一个抽象类。相对于用户来说,树的结点和树的子叶都是一样的,然后通过迭代器进行操作等等…代码: 定义一个菜单抽

2016-09-12 16:15:12 297

原创 一头扎进设计模式-适配器模式

定义:定义为将一个类的接口变换成客户端所期待的一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。用自己的话说:通过一个中间类进行接口转换,把一个接口转换成另外一个接口代码: 定义一个鸭子接口:public interface Duck { //这是一个鸭接口,适配器要以该接口作为目标进行适配 void quack();//鸭子呱呱叫 void fly(

2016-09-12 15:58:48 332

原创 一头扎进设计模式-单例模式

定义:单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例用自己的话说:保证全局只有一个对象,即不提供公用的构造方法,通过一个公用的方法返回具体的实例。代码:/** * */package com.jjt.singleton;/** * @author jiangjintai * */public class S

2016-09-09 14:25:00 385

原创 一头扎进设计模式-抽象工厂模式

定义:抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就

2016-09-09 14:14:02 322

原创 综合整理规划java学习路线

以下是大牛总结: 1.Java基础 javase,过于基础,不谈,推荐传智博客30天掌握javase系列视频2.Web开发 Web开发相关的内容,包括HTML/CSS/JS(前端页面)、Servlet/JSP(J2EE)以及Mysql(数据库)相关的知识。它们的学习顺序应该是从前到后,因此最先学习的应该是HTML/CSS/JS(前端页面),作者学习是直接去w3cschool把全部关于前端都看了

2016-09-07 17:06:22 891

原创 各用一句话描述23种设计模式

Abstract Factory(抽象工厂):提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体的类。Adapter(适配器):将一个类的接口转换成调用者希望的另外一个接口。适配器模式是的原本由于接口不兼容而不能在一起工作的那些类可以一起工作。Bridge(桥接):将抽象部分与他的实现部分分离,使他们都可以独立的变化。比如在实体类里面使用聚合,该聚合的属性为抽象的,可以动态改变其真正的

2016-09-06 16:09:07 2619

原创 VO(DTO)存在的必要性,以及使用工厂模式+模版模式+自省实现可拓展VO

引子: 想起以前第一个项目的时候,使用springMvc+mybatis+restful实现一个论坛的网站,那个时候因为还不知道VO层的存在(因为一直使用MVC三层架构)。为了不想重复写get,set方法(把po的数据封装到map或者新的bean),所以直接从数据库里面读取出来的po就直接封装成json反馈到前端,很多重要的数据字段如用户密码这些都直接抛给前端,数据泄漏了出去。 后来使用

2016-09-01 18:15:48 11859 7

图片检索jar包

/** * 相似图片的搜索技术 * * 通过把一张图片压缩简化,把像素点经过离散余弦变换(表示为DCT( Discrete Cosine Transformation))算取均值求的图片指纹, * 然后通过汉明距离来判别图片是否想似的 * * 步骤: (1)缩小尺寸:pHash以小图片开始,但图片大于8*8,32*32是最好的。这样做的目的是简化了DCT的计算,而不是减小频率。 * (2)简化色彩:将图片转化成灰度图像,进一步简化计算量。 (3)计算DCT:计算图片的DCT变换,得到32*32的DCT系数矩阵。 * (4)缩小DCT:虽然DCT的结果是32*32大小的矩阵,但我们只要保留左上角的8*8的矩阵,这部分呈现了图片中的最低频率。 * (5)计算平均值:如同均值哈希一样,计算DCT的均值。 * (6)计算hash值:这是最主要的一步,根据8*8的DCT矩阵,设置0或1的64位的hash值,大于等于DCT均值的设为 * ”1”,小于DCT均值的设为“0”。组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。 名词定义pHash:加强版的哈希感知技术 * * @author 江锦泰 * */

2016-02-02

空空如也

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

TA关注的人

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