自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式---代理模式

定义:也成为委托模式。为其他的对象提供代理,以控制对这个对象的访问。使用场景:当无法或是不想直接访问某个对象时,可以通过一个代理对象来间接的访问。并且为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。也就是代理类和具体的对象类实现相同的接口,具有相同的方法。然后让代理类持有具体的对象类的引用,用代理类进行控制具体类的方法的调用。区别:使用代理模式,发现和builder模式的代码...

2018-09-30 14:19:02 138

原创 设计模式---中介者模式

定义:也称调解者模式或调停者模式。它包裹了一系列的对象之间的相互作用的方式。将多对多的相互作用转化成一对多的相互作用。使用场景:对象很多,并且每个对象都相互依赖彼此,这样为防止修改一个对象的时候,也会牵扯到其他对象的修改,就使用中介者模式。中介者模式将系统从网状结构变成以调停者为中心的星状结构。这样降低系统的复杂性,提高扩展性的目的。角色:mediator:中介者,这里主要是处理各个coll...

2018-09-30 11:12:37 140

原创 设计模式---访问者模式

定义:访问者模式是一种将数据结构和数据操作分离的操作,封装一些作用在某中数据结构的各个元素的操作,可以在不改变这个数据结构的情况下定义作用这个数据的新操作。使用场景:对象元素比较稳定,但经常在对象结构上定义新的操作。优点:符合单一职责,能很好的进行扩展,能在操作和数据上进行解耦。缺点:①违反依赖倒置原则。②具体元素对访问者公布细节,违反迪米特原则。③改动代价比价大角色:visitor: ...

2018-09-29 11:35:42 108

原创 源码分析---线程池ThreadPoolExecutor源码分析

1.使用2.构造器,这里需要传递一个线程的制作工厂DefaultThreadFactory。在DefaultThreadFactory类中,封装了newThread()方法,在这里,会创建线程。这个方法会在下面进行调用。3.接着调用execute()方法。这里重要的是调用addWorker()方法。4.在addWorker()方法中。在这里创建线程,并且启动线程。其中在Wor...

2018-09-28 14:38:19 195

原创 源码分析---Thread源码分析

1.线程的使用2.线程初始化,这里的第三个参数就是线程的名字,也就是我们打印后的线程名。3.调用start()方法。,这里最重要的就是调用native方法nativeCreate()。在这里进行创建线程,并且调用run()方法。这样Runnable中的run()方法也就被调用了4.调用nativeCreate()方法后调用run()方法。这里的target就是Runnable对象。...

2018-09-28 11:25:03 190

原创 设计模式---模板方法模式和AsyncTask的源码分析

定义:定义一个操作中的方法的框架,将这些方法的具体的实现延迟到子类中实现, 使得子类能够不改变算法的结构就能重新定义算法的内容。也就是流程封装。使用场景:代码执行的流程是固定的,也就是我们常用的将各个方法抽取的到父类中,然后通过钩子函数进行约束子类中的行为。我们常用的BaseActivity,BaseFragment等都是使用这种设计模式。优点:封装不变的部分,扩展可变的部分。提取公共的方法,...

2018-09-27 11:14:49 162

原创 设计模式--备忘录模式

定义:要保证被保存的对象不能被对象从外部访问,目的是保护好被保存的这些对象的状态的完整性以及内部实现不向外面暴露。使用场景:①需要保存一个对象在某个时刻的状态或部分状态。②一个对象不希望外界直接访问内部状态,通过中间对象可以直接访问其内部状态。//这一点和builder模式的理念相同。优点:能够进行状态的恢复 , 用户不用关心保存的细节。缺点:类成员增多。角色:originator...

2018-09-25 10:08:42 86

原创 源码分析---onSaveInstanceState()方法分析

①在Activity的onSaveInstanceState()方法中,调用super()方法,里面最终就是调用这里的方法。主要是保存activity的状态,fragment的状态,最终调用application进行存储状态。②首先是Activity的状态。上面的mWindow其实就是PhoneWindow,然后调用saveHierarchyState()方法。这里会使用mContentPar...

2018-09-21 13:54:49 1663

原创 android源码--androidEventBus分析

观察者:1.首先是订阅者进行订阅在activity中使用注解来确定订阅的方法,tag相当于广播的action,在方法中只能填一个参数。参数类型不限制。2.在EventBus类中进行注册,使用mMethodHunter类,主要是负责维护事件和订阅者之间的map关系3.在SubscribeMethodHunter类中,将通过订阅的类获取里面加入注解的方法,因为支持一个参数,因此进行过滤...

2018-09-20 14:08:44 275

原创 android源码---ListView的notifyDataSetChanged()源码

1.调用2.在BaseAdapter中很明显发现是订阅者模式在这里创建了被观察者者对象3.具体的被观察者类,当有变化的时候就通过notifyChanged()方法通知注册的观察者。4.抽象的被观察者类.这里完全是正规的观察者模式的写法,包含了观察者的注册,解注册。并且里面也是利用了ArrayList进行观察者的存储。5.在BaseAdapter中进行暴露观察者的注册和解注册的...

2018-09-18 14:24:42 558

原创 设计模式--观察者模式

定义:定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于他的对象都会得到通知并自动的更新。也称为订阅模式。使用场景:①事件的多级触发场景②跨系统的消息交换场景,如消息队列,事件总线的处理机制。角色:①Subject (Obervable): 被观察者角色。抽象主题将所有的观察者对象的引用保存在一个集合中,每个主题都有任意数量的观察者,抽象主题提供一个接口,能增加和删除...

2018-09-18 11:34:54 112

原创 设计模式--命令模式

定义:将一系列的方法调用封装,用户只需要调用一个方法就能将其他的方法依次调用。具有操作日志记录,可撤销操作等功能。可以将复杂的操作封装在操作类中,将行为的调用者和实现者进行解耦。组成:操作类,命令类,调用类等三级嵌套。使用场景:①支持取消操作②支持日志记录③支持事务功能操作:1.具体的执行命令的类2.抽象的命令类具体的命令类3.命令的调用者4.使用...

2018-09-18 10:31:24 131

原创 设计模式--解释器模式

定义:定义个文法,并且定义一个解释器, 使用解释器来表示这个文法。文法就是一个中规律规则。 使用场景:①将某个简单的语言需要解释执行并将语言中语句表示为一个抽象的语法树。②在某个特定的领域出现不断重复的问题的时候,可以将该领域的问题转化为一个文法,然后进行解释。 好处:当我们要进行文法的延伸的时候,只需要增加响应的非终结符解释器,并且在构建抽象语法树的时候进行具体的解释即可。 坏处:会导致类...

2018-09-17 11:43:43 118

原创 android源码---ViewGroup的dispatchTouchEvent()的源码分析

貌似在LinearLayout RelativeLayout的dispatchTouchEvent()方法都在ViewGroup中。对于TextView的也是在View中。 ①当调用方法的时候,如果是ACTION_DOWN时,要清除原有的触摸的事件。 ②对于cancelAndClearTouchTargets()方法,参数event不可能为null,因此重要的是for循环。然后调用d...

2018-09-14 17:57:00 1191

原创 设计模式--责任链模式

定义:将每个节点为每个对象,每个对象拥有不同的处理逻辑,讲一个请求从链的首端出发,沿着链的路径传递到每个节点对象,知道具有对象处理这个请求为止。 对于每个请求来说,具有两种情况①被处理②没被处理 对于每个处理的节点来说,也具有两种情况①处理请求②将请求发给下一个节点使用场景:多个对象处理同一个请求,但是具体哪个对象进行处理,按照运行时候的逻辑进行判断。 优点:责任链模式很好的将请求的发起...

2018-09-14 11:12:48 141

原创 设计模式--状态模式

定义:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了行为。也就是在不同的状态下有不同的响应。 特点:在写法上类似策略模式,但是策略模式各个具体类是可以替换的,因为各个具体类的行为是彼此独立的,意义是相同的。而状态模式的各个具体类是意义各自不同,不能相互替换,不同的状态代表着不同的行为。 使用场景: 1.一个对象的行为取决于它的状态,并且在运行时根据状态改变行为。 2....

2018-09-14 10:09:41 129

原创 android源码--activity启动源码分析

1.app应用的真正入口是ActivityThread类中的main()方法。 2.调用Looper.prepareMainLooper()方法。 3.调用prepare(false)方法,这里的threadLocal其实就是一个map集合。这样新创建了一个Looper对象,添加到集合中。 在Looper的构造器中,初始化了消息队列并且获取当前的线程 4.调用myLoope...

2018-09-10 16:51:13 532

原创 设计模式--工厂方法模式和简单工厂模式和抽象工厂模式

定义:父类负责定义创建对象的公共接口,而子类负责生成具体的对象,目的是将类的实例化操作延迟到子类中完成,即由子类决定究竟应该实例化哪个类。 使用场景:复杂类的创建。优点: 1.能够封装复杂类创建。 2.能够隐藏创建类的具体信息。 3.具有很好的扩展性,如果需要添加新的功能的时候,只需要添加新的工厂和具体的产品类即可。缺点:如果需要创建多个对象,那么就需要多个具体的工厂的子类,这样就...

2018-09-10 11:16:01 157

原创 java--泛型的使用

一、泛型类 就是在类名的后面添加这样的形式,然后在整个类中都能用这个T类型 二、泛型方法 就是在方法的返回值类型的前面添加 ,这样在整个的方法中,都能使用T类型 三、有界类型参数(就是限制参数的类型是一致) 如果在一个方法中传递的多个参数,并且保证参数的类型一直,那么就需要Comparable,这样就限定了传递的参数必须是T类型。如果不是就会报错。 四、类型通配符 ①...

2018-09-10 11:00:34 125

原创 android--开源项目总结

1提升布局加载速度:X2C 这是掌阅ireader 对外开源的一个库,可以自动化的提升加载布局的效率。 原理我简单说一下大家肯定都懂,我们在编写布局文件的时候,绝大多数情况下都是写xml 文件,然后通过setContentView或者 inflate 加载,大多数同学可能也知道,对于 xml 文件在 LayoutInflater 中需要解析,并且在首次加载的部分控件还需要通过反射去生成对象。 ...

2018-09-07 16:24:37 414

原创 android---布局ConstraintLayout学习笔记

1.基本的约束条件 这个意思是: 约束当前的view的左边,在某个view的左边 layout_constraintLeft_toLeftOflayout_constraintLeft_toRightOflayout_constraintRight_toLeftOflayout_constraintRight_toRightOflayout_constraintTop_toTo...

2018-09-07 14:53:50 321

原创 android Studio使用离线的gradle

gradle下载地址: https://services.gradle.org/distributions/ 进入.gradle文件夹 查看gradle的版本,注意,你的是哪个版本就下载哪个版本,比如我的是3.3,那就下载3.3. 将下载好的gradle-3.3-all.zip放到.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9...

2018-09-07 10:44:57 1274

原创 设计模式--原型模式

原型模式是表明该模式有一个样板实例, 用户在这个对象中复制出一个内部属性一致的对象。也就是说的克隆,被复制的实例就是“原型”。也就是通过拷贝这些原型创建新的对象。 用途: ①多用于创建复杂的或者构造耗时的实例。 ②进行保护性拷贝 ③使用时候并不一定效率比new高,只有在复杂的对象的克隆上才会有效率的提升。 1.实现cloneable接口,然后重写clone()方法,其实clone方法并不...

2018-09-06 13:59:12 119

原创 android自定义view---横向的柱状图

知识点: 1.计算基线 在基线的上面为负值,基线的下面为正值。 需要借助 Paint.FontMetricsInt fm = paint.getFontMetricsInt(); FontMetricsInt 类 有 top 、bottom 两个成员, top表示基线到文字最上面的位置的距离 是个负值 bottom为基线到最下面的距离,为正值 如果想要基于一个位置竖直居中,...

2018-09-05 17:54:13 3187 1

原创 android设计模式---builder设计模式

builder模式是创建一个复杂对象的创建型模型,允许用户在不知道复杂对象的内部细节的情况下进行精细化的控制,是将构建复杂对象的过程和控制对象的过程进行分隔开,从而达到解耦的目的。( 1.实现方法: 在复杂的对象的外面创建一个控制对象builder,并且在使用方式上一般使用链式调用,也就是每个方法中return this。 2.目的:我们每次通过控制对象达到对复杂对象操作的,并且在此过程中,减...

2018-09-03 18:28:41 159

原创 android源码---AlertDialog源码分析

AlertDialog的流程图 1.基本使用 2.创建AlertParams对象。 3.在builder的方法中进行给AlertParams对象进行赋值。并且返回this,这样达到链式调用的效果。 4.调用show()方法 5.在这里才创建了AlsertDialog()的对象 6.在AlertDialog的构造器中创建AlertController的对象。 ...

2018-09-03 16:53:23 283

学习spring所需要的jars

学习spring所需要的jars c3p0-0.9.1.jar com.springsource.net.sf.cglib-2.2.0.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar commons-logging-1.1.1.jar mysql-connector-java-5.1.7-bin.jar spring-aop-4.0.0.RELEASE.jar spring-aspects-4.0.0.RELEASE.jar spring-beans-4.0.0.RELEASE.jar spring-context-4.0.0.RELEASE.jar spring-core-4.0.0.RELEASE.jar spring-expression-4.0.0.RELEASE.jar spring-jdbc-4.0.0.RELEASE.jar spring-orm-4.0.0.RELEASE.jar spring-tx-4.0.0.REL

2019-11-21

空空如也

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

TA关注的人

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