自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ITGungnir

Guts Over Fear

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

原创 【Android - 基础】之Animator属性动画

1      概述在3.0系统之前,Android给我们提供了逐帧动画Frame Animation和补间动画Tween Animation两种动画:1)        逐帧动画的原理很简单,就是将一个完整的动画拆分成一张张单独的图片,然后将它们连贯起来进行播放;2)        补间动画是专门为View提供的动画,可以实现View的透明度、缩放、平移和旋转四种效果。 补间动

2016-12-20 19:22:52 777

原创 【Android - 进阶】之事件分发机制

参考资料:View事件分发:http://blog.csdn.net/pi9nc/article/details/9281829ViewGroup事件分发:http://blog.csdn.net/guolin_blog/article/details/9153747 1      概述Android中的布局是按树形结构层级排列的,根布局往往是一个ViewGroup,如Line

2016-12-19 19:27:42 497

原创 【JAVA - SSM】之MyBatis查询缓存

为了减轻数据压力,提高数据库的性能,我们往往会需要使用缓存。MyBatis为我们提供了一级缓存和二级缓存。    (1)一级缓存是SqlSession级别的缓存,在操作数据库的时候需要创建一个SqlSession,其中有一个HashMap,用于存储缓存数据。不同的SqlSession之间,其缓存数据的HashMap是不同的;    (2)二级缓存是Mapper级别的缓存,多个SqlSess

2016-12-15 13:52:31 2855

原创 【JAVA - SSM】之MyBatis逆向工程的使用

MyBatis逆向工程可以方便的从数据库中将表自动映射到JAVA POJO类,并同时生成Mapper.xml和Mapper接口,方便实用。下面介绍一下逆向工程的使用方法。        使用逆向工程,我们最好是新建一个JAVA Project,而不要直接在项目工程中进行,以免造成不好的后果。新建一个JAVA Project,导入需要的JAR包,搭建成如下图所示的样子:   

2016-12-15 13:15:41 11568 1

原创 【JAVA - SSM】之MyBatis动态SQL

动态SQL就是在SQL语句中添加一些标签,以完成某些逻辑。通常用到的动态SQL标签有、、、、、、等。1、if        if是简单的条件判断,通过if语句我们可以实现某些简单的条件选择,一个例子的代码如下: select * from t_blog where 11 = 1 and title = #{title}

2016-12-14 09:09:10 3126

原创 【JAVA - SSM】之MyBatis输出映射

MyBatis中的输出映射有两种:resultType和resultMap。1、resultType        使用resultType进行结果映射时,只有当查询结果中有至少一列的名称和resultType指定的POJO的某个属性名称相同时,才会映射成功。如果查询出来的列名和POJO中的属性名全部不一致,就不会映射成任何POJO对象(解决这个问题可以使用下面介绍的resultM

2016-12-13 16:29:09 1061

原创 【JAVA - SSM】之MyBatis开发DAO

在SSM框架中的DAO层就是MyBatis中的Mapper,Mapper分为两部分:Mapper接口(JAVA文件)和Mapper映射文件(XML文件)。DAO开发(Mapper开发)有两种方式:原始DAO开发和Mapper代理代码。今天就来介绍一下这两种方式。1、原始DAO开发        原始DAO开发就是不仅需要创建DAO接口,还需要创建其实现类。代码如下:     

2016-12-13 13:25:44 971

原创 【JAVA - SSM】之MyBatis与原生JDBC、Hibernate访问数据库的比较

首先来看一下原生JDBC访问数据库的代码:public static void main(String[] args) { // 数据库连接 Connection connection = null; // 预编译的Statement,使用预编译的Statement提高数据库的性能 PreparedStatement statement = null; // 结果集 ResultS

2016-12-13 11:05:57 1959

原创 【JAVA - SSM】之MyBatis插入数据后获取自增主键

很多时候,我们都需要在插入一条数据后回过头来获取到这条数据在数据表中的自增主键,便于后续操作。针对这个问题,有两种解决方案:(1)先插入,后查询。我们可以先插入一条数据,然后根据插入的数据的各个字段值,再次访问数据库,从数据库中将刚刚插入的数据查询出来。当然,这种方法是很笨的,不提倡使用。(2)MyBatis为我们提供了一种在插入数据后获取自增主键的方式,通过这种方式,我们可以在插入一条数

2016-12-13 10:40:53 5054

原创 【JAVA - SSM】之MyBatis的ParameterType的使用

在MyBatis的Mapper.xml文件中,参数的表示方法有两种:一种是使用 “#{XXX}” 的方式表示的,另一种是使用 “${XXX}” 的方式表示的。今天来介绍以下这两种方式的不同之处。1、#{XXX}        “#{XXX}” 是用来表示变量占位符,即将这个变量注入到SQL语句中。这里的变量可以是普通类型的变量(int、java.lang.String、long等),也可以

2016-12-13 10:30:10 2457

原创 【Android - 基础】之PopupWindow的使用

创建一个类继承自PopupWindow,编写自定义的PopupWindow类。示例代码如下:import android.app.Activity;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.view.Gravity;import android.

2016-12-12 19:23:24 408

原创 【Android - 基础】之Dialog分类及使用

1、确定取消对话框代码: // 使用AlertDialog.Builder初始化对话框 AlertDialog.Builder builder0 = new AlertDialog.Builder(context); // 设置图标 builder0.setIcon(R.mipmap.ic_launcher);

2016-12-12 16:14:42 1010

原创 【设计模式】

设计模式是一套反复被使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使得代码编写工程化,是软件工程的基石。设计模式的设计需要满足以下六个原则:(1)开闭原则(Open Close Principle):对扩展开放,对修改关闭。(2)里氏代换原则(Liskov Substitution Principle)

2016-12-12 12:37:30 441

原创 【设计模式 - 24】之访问者模式(Visitor)

1      模式简介访问者模式的定义:访问者模式将数据结构与数据操作进行了分离,解决了稳定的数据结构和易变的数据操作的耦合问题。 访问者模式的优点:1)        符合单一职责原则;2)        优秀的扩展性;3)        灵活性。 访问者模式的缺点:1)        具体元素对访问者公布细节,违反了迪米特原则;2)        具

2016-12-11 11:47:56 279

原创 【设计模式 - 23】之模版方法模式(Template)

1      模式简介模版方法模式的定义:模版方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模版方法模式的优点:1)        封装不变部分,扩展可变部分;2)        提取公共代码,便于维护;3)        行为由父类控制,子类实现。 模版方法模式的缺点

2016-12-11 11:09:30 398

原创 【设计模式 - 22】之策略模式(Strategy)

1      模式简介在策略模式中,一个类的行为或其算法可以在运行时改变。策略模式定义了一系列算法,把它们一个个封装起来,并且使它们可以互相替换。 策略模式的优点:1)        算法可以自由切换;2)        避免使用多重条件判断;3)        扩展性良好。 策略模式的缺点:1)        算法可以自由切换;2)        避免使用

2016-12-11 11:03:00 426

原创 【设计模式 - 21】之空对象模式(Null Object)

1      模式简介在空对象模式中,一个空对象取代NULL对象的实例的检查。NULL对象不是检查空值,而是反映一个不做任何动作的关系。这样的NULL对象也可以在数据不可用的时候提供默认的行为。 在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。 空对象模式一般和策略模

2016-12-11 10:49:30 465

原创 【设计模式 - 20】之状态模式(State)

1      模式简介状态模式的定义:状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。这个模式将状态封装成独立的类,并将动作委托到代表当前状态的类的对象。 状态模式的优点:1)        封装了转换规则;2)        枚举可能的状态,在枚举状态之前需要确定状态种类;3)        将所有与某个状态有关的行为放到一个类中,并且可以方

2016-12-11 10:43:07 566

原创 【设计模式 - 19】之观察者模式(Observer)

1      模式简介观察者模式的介绍:观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象的状态发生改变时,它的所有依赖者都会收到通知并自动更新。 发布者(被观察者) + 订阅者(观察者) = 观察者模式 观察者模式的优点:1)        观察者和被观察者是抽象耦合的;2)        观察者模式建立了一套触发机制(触发联动)。 观察者模式的缺

2016-12-11 10:33:09 576

原创 【设计模式 - 18】之备忘录模式(Memento)

1      模式简介备忘录模式的定义:备忘录模式保存一个对象的某个状态,以便在适当的时候恢复对象,用作“后悔药”,即取消上次操作或返回到以前的某个版本。 备忘录模式的应用实例:1)        Windows系统中的Ctrl+Z;2)        浏览器等软件中的后退按钮功能;3)        数据库的事务管理及回滚功能;4)        游戏存档。 

2016-12-11 10:17:38 474

原创 【设计模式 - 17】之中介者模式(Mediator)

1      模式简介中介者模式的定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显式地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 中介者模式中的组成部分:1.        同事类:如果两个类对象之间可以彼此影响,则称这两个类为同事类;2.        中介者:中介者中有所有同事类的引用,定义了各个同事类之间交互的抽象方法。 中

2016-12-11 10:10:46 444

原创 【设计模式 - 16】之迭代器模式(Iterator)

1      模式简介迭代器模式是JAVA中非常常用的模式,List、Map、Set等常见集合中都封装了迭代器Iterator。 迭代器模式的介绍:迭代器模式用于顺序访问集合对象中的元素,而不需要知道集合对象的底层表示,即可以将在元素之间游走的责任交给迭代器,而不是集合对象本身。 迭代器模式的优点:1)        它支持以不同的方式遍历一个聚合对象;2)    

2016-12-11 09:57:38 552

原创 【设计模式 - 15】之解释器模式(Interpreter)

1      模式简介解释器模式允许我们自定义一种语言,并定义一个这种语言的解释器,这个解释器用来解释语言中的句子。由于这种模式主要用于编译器的编写,因此在日常应用中不是很常用。 如果一种特定类型的问题发生频率足够高,那么可能就值得将该问题的各个实例表述为一种简单语言中的一个句子,这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。 解释器模式的优点:1)   

2016-12-11 09:49:14 378

原创 【设计模式 - 14】之命令模式(Command)

1      模式简介命令模式的定义:命令模式将命令封装成对象,从而使调用一个命令变为调用一个对象的指定方法。 命令模式的优点:1)        降低了系统耦合度;2)        新的命令可以很容易的添加到系统中去。 命令模式的缺点:会导致系统中有过多的具体命令类。 2      案例在一个系统中有三种命令:点击按钮、加载图片和访问网络。 

2016-12-11 09:40:55 359

原创 【设计模式 - 13】之责任链模式(Chain Of Responsibility)

1      模式简介责任链模式的简介:1.        责任链模式为请求创建了一个接收者对象的链,每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。2.        责任链模式避免了请求的发送者和接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连成一条链,并且沿着这条链传递请求,直到有对象处理它为止。3.

2016-12-11 09:30:29 544

原创 【设计模式 - 12】之代理模式(Proxy)

1      模式简介1.1    定义为其他对象提供一种代理以控制对这个对象的访问。代理对象起到中介作用,可以去掉功能服务或增加额外服务。 1.2    常见的代理模式1)        远程代理:可以隐藏一个对象存在于不同控件的事实,也使得客户端可以访问在远程机器上的对象,远程机器可能具有更好的计算性能与处理速度,可以快速响应并处理客户端请求;2)        虚拟代

2016-12-11 09:23:12 432

原创 【设计模式 - 10】之外观模式(Facade)

1      模式简介外观模式隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。外观模式往往涉及到一个类,这个类提供了客户端请求的简化方法和对现有系统类方法的委托调用。外观模式使得系统中的子系统更加容易使用。 外观模式主要是为了降低访问复杂系统的内部子系统的复杂度,简化客户端与之的接口。 外观模式的核心是在客户端和复杂系统之间添加一层外观层,外观层将子模块的调用顺序、

2016-12-11 09:04:20 411

原创 【设计模式 - 9】之装饰者模式(Decorator)

1      模式简介装饰者模式允许向一个现有的对象添加新的功能,同时又不改变其结构。 装饰者模式的思路是用“调料”对象将原始对象进行层层包裹,同时其属性、动作层层传递,达到最终的扩展效果。因此,要求原始对象和“调料”对象继承同一个类或实现同一个接口,这样才能在装饰完成后调用原始对象的属性或动作。 装饰者模式的优点:1)        可以动态的扩展功能;2)     

2016-12-11 08:57:55 349

原创 【设计模式 - 8】之组合模式(Composite)

1      模式简介组合模式可以将对象以树形结构来表现“整体/部分”层次结构,让客户以一致的方式处理个别形象以及对象组合。 组合模式让我们能用树形方式创建对象的结构,树里面包含了组合以及个别的对象。使用组合模式,我们能把相同的操作应用在组合的个别对象上,换句话说,我们可以忽略对象组合的个别对象之间的差别。 2      案例本例是模拟电脑中文件系统的层级结构。 我

2016-12-11 08:33:02 420

原创 【设计模式 - 7】之过滤器模式(Filter)

1      模式简介过滤器模式(Filter)也叫标准模式(Criteria),这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。 2      实例需求:Person类有三个属性:姓名(Name)、性别(Gender)和婚姻情况(Marital),我们的系统中的一些功能需要对这些属性进行筛选,比如:1)        得到所有的男

2016-12-11 08:26:38 4884 1

原创 【设计模式 - 6】之桥接模式(Bridge)

1      模式简介举个例子,人、车和公路是三个维度,人开着车在公路上行驶,就是将这三个维度进行了关联。人分男人(Man)和女人(Woman),车分小轿车(Car)和公共汽车(Bus),公路分市区公路(Street)和高速公路(Speedway),那么如果我们不使用桥接模式的话,要模拟出所有情况,系统的架构应该是如下图所示的:从图中可以很容易的看出,这个系统中的类太多了,需要

2016-12-11 08:21:13 785

原创 【设计模式 - 5】之适配器模式(Adapter)

1      模式简介适配器模式解决的问题:让原本因为接口不兼容而不能一起工作的类可以一起工作。 适配器模式的UML原理图如下图所示:从上图可见,客户想要用Target接口实现Adaptee接口中的方法,但这显然是不可能的。因此,我们需要定义一个适配器类Adapter,让它在Target和Adaptee之间做一个“调停者”,进而达到Target和Adaptee的适配。

2016-12-11 08:11:56 444

原创 【设计模式 - 4】之原型模式(Prototype)

1      模式简介原型模式的定义:通过复制一个现有的对象(原型)来得到一个相似的对象。 原型模式的UML图如下图所示:从上图中可以看到,所有的对象实体类都是继承自一个Prototype的父类,而prototype类有一个可以复制对象的方法clone(),可以复制其任意子类。这样,所有Prototype类的子类在整个程序中只需要new一次,其他情况下只需要从这几个类中

2016-12-10 17:43:05 401

原创 【设计模式 - 3】之建造者模式(Builder)

1      模式简介建造者模式也叫生成器模式,和抽象工厂模式相似,也是一种构建复杂对象的模式。 建造者模式中的角色分类:l  抽象建造者Builder:接口类型,用于规范各个产品的组成部分;l  具体建造者ConcreteBuilder:实现Builder中的所有方法,并且返回一个构造好的产品实例;l  指导者Director:根据用户的需求安排产品各组件的生产顺序,然后

2016-12-10 17:03:23 372

原创 【设计模式 - 2】之单例模式(Singleton)

1      模式简介单例模式在代码中是非常常用的,如线程池、数据库连接、注册表、共享资源、一些非常消耗资源的组件,等等。 单例模式主要解决如下问题:l  确保一个特殊类的实例是独一无二的;l  确保这个类的实例非常容易访问(提供了这个类的一个全局访问指针); 也就是说,在以下情况下可以使用单例模式:l  当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时

2016-12-10 16:55:47 427

原创 【设计模式 - 1】之工厂模式(Factory)

1      模式简介1.1    工厂模式作用l  工厂模式解决的是“使用new关键字获取对象造成松耦合”的问题。l  工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 1.2    工厂模式分类1.2.1  分类工厂模式可以分为三类:l  简单工厂模式(SimpleFactory)l  工厂方法模式(Fact

2016-12-10 16:45:50 388

原创 【JAVA - SSM】之SSM入门项目的搭建

最近学习了一下SSM。SSM是 Spring + SpringMVC + MyBatis 整合框架,非常适合WEB后台开发,也是当前很多人的不二选择。这篇博客带大家来创建一个学习SSM的入门程序,从搭建框架开始,到实现一个小功能,相信新手朋友们通过这篇博客就可以基本入门开发SSM了。        首先介绍一下本博客使用的开发环境的框架版本:        开发环境:Intelli

2016-12-10 14:45:55 2684 1

原创 【Android - 进阶】之图片压缩

很多时候,如果APP需要下载和加载很多图片(尤其是大图片)的时候,就往往会报如下图所示的错误:        如上图所示,OOM(OutOfMemoryError)表示内存溢出,这是因为网络或内存中的图片被加载成Bitmap时耗费的内存超出了系统内存而造成内存溢出。解决这个问题有很多方法,这里主要介绍其中的一种方法:图片压缩。        这里贴出一个工具类:impo

2016-12-03 13:00:50 529

原创 【Android - 框架】之刷新加载框架Ultra-Pull-To-Refresh的使用

Ultra-Pull-To-Refresh框架是用来嵌套其他布局,实现下拉刷新和上拉加载的框架。它其中可以嵌套任何控件,ListView、GridView、ScrollView、RecyclerView,甚至TextView。        这个框架在GitHub上的地址:【Ultra-Pull-To-Refresh-With-Load-More】。(1)首先需要导入框架依赖:

2016-12-02 12:55:21 2159

原创 【Android - 框架】之可悬浮列表StickyHeadersRecyclerView

这是timehop的GitHub上发表的一个控件框架,大家可以去参考它的【GitHub】。        这里先贴出GitHub上提供的效果图:        要使用这个框架,我们需要首先导入它的依赖:compile 'com.timehop.stickyheadersrecyclerview:library:0.4.3'compile 'com.android.suppor

2016-12-01 13:36:42 4961 1

空空如也

空空如也

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

TA关注的人

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