对原生 JDBC 程序中的问题总结

jdbc编程步骤

  1. 加载数据库驱动
  2. 创建并获取数据库链接
  3. 创建jdbc statement对象
  4. 设置sql语句
  5. 设置sql语句中的参数(使用preparedStatement)
  6. 通过statement执行sql并获取结果
  7. 对sql执行结果进行解析处理
  8. 释放资源(resultSet、preparedstatement、connection)

问题总结

1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。

阅读更多

Android EventBus 源码分析

01.EventBus注册源码解析

1.1 EventBus.getDefault()获取对象

  • 先看源码,单例模式,使用了双重判断的方式,防止并发的问题,还能极大的提高效率

阅读更多

Android EventBus 基础用法

01.EventBus简介

  • 1.1 EventBus的三要素
    • Event:事件
      可以是任意类型的对象。
    • Subscriber:事件订阅者
      在EventBus3.0之前,消息处理的方法只能限定于onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync,他们分别代表四种线程模型。
      在EventBus3.0之后,事件处理的方法可以随便取名,但是需要添加一个注解@Subscribe,并且要指定线程模型(默认为POSTING),四种线程模型下面会讲到。
阅读更多

Android Gson基础使用

1.基本使用

1.1 Gson对象创建

  • 1.1.1 直接通过new来创建对象
1
2
3
4
//通过构造函数来获取
Gson gson = new Gson();
//通过 GsonBuilder 来获取,可以进行多项特殊配置
Gson gson = new GsonBuilder().create();
阅读更多

Android Glide 对象池

01.对象池Pools优化频繁创建和销毁类

  • 优化点

    • 对开销较大的 Bitmap 进行了复用,就连为了复用Bitmap时重复申请的Key对象都进行了复用,尽可能的减少了对象的创建开销,保证了应用的流畅性。
  • 对象池作用

    • 在某些时候,我们需要频繁使用一些临时对象,如果每次使用的时候都申请新的资源,很有可能会引发频繁的 gc 而影响应用的流畅性。这个时候如果对象有明确的生命周期,那么就可以通过定义一个对象池来高效的完成复用对象。
阅读更多

Android Glide 源码分析

01.一般图片加载过程

1.1 加载图片场景

  • 在使用App的时候,会经常需要加载一些网络图片,一般的操作步骤大概是这样的:
    • 第一步从网络加载图片:一般都是通过网络拉取的方式去服务器端获取到图片的文件流后,再通过BitmapFactory.decodeStream(InputStreamin)来加载图片Bitmap。
阅读更多

Android Glide基础介绍

01.平时基础使用

  • 常用api如下所示
    • thumbnail(float sizeMultiplier)——请求给定系数的缩略图。如果缩略图比全尺寸图先加载完,就显示缩略图,否则就不显示。系数sizeMultiplier必须在(0,1)之间,可以递归调用该方法。
    • sizeMultiplier(float sizeMultiplier)——在加载资源之前给Target大小设置系数。
    • diskCacheStrategy(DiskCacheStrategy strategy)——设置缓存策略。默认采用DiskCacheStrategy.RESULT策略,对于download only操作要使用DiskCacheStrategy.SOURCE。
阅读更多

Android Rx 源码分析

01.observable创建过程

  • 看下创建被观察者(Observable)的过程,直接使用Observable.create()来创建Observable,看下源码

    • 首先对创建的对象source进行非空判断,创建一个ObservableCreate对象出来,然后把自定义的ObservableOnSubscribe作为参数传到ObservableCreate中去,最后就是调用 RxJavaPlugins.onAssembly()方法。
阅读更多