Proguard学习及App混淆

proguard-android.txt与proguard-android-optimize.txt 当我们打Release的时候,Google会默认对我们的release包进行优化,这个优化是通过在modeule中build.gradle中的minifyEnabled来开启的。 android ...

2019-07-21 14:49:12

阅读数 12

评论数 0

常见排序算法汇总及Java中默认实现

基本排序算法的分类及比较 首先,上一张各种排序算法比较的图 排序方法 平均时间复杂度 最好情况下的时间复杂度 最坏情况下的时间复杂度 空间复杂度(辅助存储) 稳定性 直接插入排序 O(n^2) O(n) O(n^2) O(1) 稳定 ...

2018-09-16 13:09:32

阅读数 180

评论数 0

OkHttp中拦截器流程解析

OkHttp中,我们对请求报文和返回报文的处理都是在拦截器中进行的,所以熟悉OkHttp中的各个拦截器以及它们是怎样的处理流程是理解OkHttp的重点 拦截器链 首先,我们所最后得到的Response是通过这个函数得到的。 Response result = getRespo...

2018-09-11 18:53:17

阅读数 217

评论数 0

LeetCode:01矩阵

题目如下: 给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入: 0 0 0 0 1 0 0 0 0 输出: 0 0 0 0 1 0 0 0 0 示例 2: 输入: 0 0 0 0 1 0...

2018-08-30 11:11:52

阅读数 452

评论数 0

Android绘制流程总结

我们在自定义实现一个自定义view的时候,往往需要重写它的onDraw()方法,在这个方法中,我们可以获取到它的Canvas对象,那么,这个Canvas对象是怎么得到的呢? 首先我们知道Activity的视图是由一个Window来进行显示的,具体来说是一个Phone Window对象,而每个窗口...

2018-08-25 17:56:00

阅读数 83

评论数 0

再探synchronized关键字

Synchronized关键字实现了两个线程对同一个Monitor的互斥,可以用这个例子看出来: private static final Object lock1 = new Object(); private int i = 0; pub...

2018-08-19 16:35:45

阅读数 82

评论数 0

LeetCode:根据身高重建队列

题目如下: 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意:总人数少于1100人。 示例 输入: [[7,0], [4,4], [7,1], [...

2018-08-19 16:34:51

阅读数 220

评论数 0

Lock接口实现解析:到底什么是非重入锁和可重入锁

Java中接口的实现只给了ReentrantLock这一个默认的实现,也就是重入锁,它的概念是在获得锁后可以重复获得该资源的锁,但是这是一个听起来很绕的概念,重复获得该资源的锁是什么意思?如果不能获得,也就是这个锁是不可重入的,又会是怎么样的呢?请看下文 重入锁与不可重入锁的区别 先给出结论:...

2018-08-12 15:06:28

阅读数 644

评论数 0

synchronized关键字与volatile原理浅析

synchronized关键字与volatile关键字可以说是Java多线程的基础,无论是各种同步锁,还是我们所遇到的线程安全问题,都与这两个关键字有联系。 Synchronized Synchronized关键字我们经常用来执行线程间的互斥操作,使用示例如下: int x;...

2018-08-11 11:25:56

阅读数 240

评论数 0

Android事件分发机制总结

Android中的事件分发机制是我们实现触摸反馈、拦截等等的基础,了解了事件分发机制,对于触摸反馈事件失灵、多点触控等等的实现和疑难解决,都有一个敏感的认知。 一切的开始: Activity的处理 当我们的Android手机接收到手指的触摸动作的时候,手机会把这个动作包装成 Mot...

2018-07-30 23:09:28

阅读数 36

评论数 0

Https连接建立过程

Https的全称是Http over SSL,而SSL是在TCP协议之上的保密层,但是它也是属于传输层的,如果直接传输Http,报文的信息安全是无法被保障的,因为它在应用层的信息传输是明文传输的。 过程 Https传输建立的过程可以分为两个过程,信任建立的过程和连接建立的过程,如果再细...

2018-07-14 16:19:43

阅读数 1161

评论数 1

同步器-倒计时门闩

Java中虽然提供了synchronized关键字对临界区进行线程同步访问,但是基于synchronized很难正确地编写同步代码,而倒计时门闩可以让一条或多条线程在“门口”一直等待,直到门闩的计数变量为0,线程才可以继续执行。 组成 类java.util.concurrent.CountDo...

2018-07-08 15:31:13

阅读数 114

评论数 0

类与实例的初始化顺序

在Java中,static修饰符一直都是很重要的知识点,特别是当它修饰为一个静态代码块的时候,还有它被用来修饰变量的时候,当发生继承关系或者是内部类关系的时候,我们这里分几种情况进行讨论 当发生继承关系的时候 如: public class SuperClass { ...

2018-06-30 15:58:01

阅读数 101

评论数 0

锁、重入锁与条件

Java中的锁框架指的是java.util.concurrent.locks这个包里的,不同于对象的内置加锁同步以及java.lang.Object的等待/通知机制,包含锁框架的并发工具通过轮询锁、限时等待及其他方式改善了这种机制。 锁 这里的锁指的是接口Lock 方法 包...

2018-06-30 15:56:46

阅读数 984

评论数 0

Android NDK调用不符合jni规范的so文件

我们在使用Android静态加载so库的时候,一般都需要这个so库是符合jni命名规范的,像这样: Java_全类名_方法名 但是可能会遇到一些比较特殊的情况,同事只给了你一个so库,这个so库并不是用的jni命名,除此之外,他还给了你一个so库中函数的头文件,这时候我们就需要自己再次...

2018-06-30 15:55:57

阅读数 816

评论数 0

Java中的正则表达式(一)

Java中应用正则表达式必须依靠Pattern与Matcher类,常用的正则规范一般如下: 序号 规范 描述 1 \ 表示反斜线(\)字符 2 \t 表示制表符 3 \n 表示换行 4 [abc] 字符a、b或c...

2018-04-05 15:40:50

阅读数 60

评论数 0

Android编译时注解

这个寒假用空闲时间做了一个基于编译时注解的RxBus,目前还没有做工程化处理,但是基本的功能已经写好,欢迎大家star和fork RxEventBus 趁着寒假最后一天来写一下开发过程。 编译时注解总结 注解分为源码级注解、编译时注解与运行时注解,编译时注解和运行时注解时被经常...

2018-02-23 15:07:14

阅读数 109

评论数 0

Git高级命令

汇总 git中比较复杂的命令如下表所示: 命令 作用 git rebase 在新位置重新提交 git revert 撤销commit git reset 丢弃提交 git stash 临时存放工作目录的改动 git...

2018-02-15 15:07:56

阅读数 367

评论数 0

AsyncTask解析

在Android AsyncTask中有以下几个主要的函数: onPreExecute() doInBackground(Params…) onProgressUpdate(Progress…) onPostExecute(Result) 函数的作用及解析 onPreExecut...

2018-02-15 15:07:05

阅读数 80

评论数 0

Git基础命令汇总

汇总表如下所示 命令 作用 注意事项 git clone 把远程仓库取到本地 可能会需要输入GitHub的帐户名和密码,其中密码时不显示输入的 git log 查看历史记录 加上后缀-p查看详细历史,–stat查看简要统计,查看完按q键...

2018-02-14 21:10:19

阅读数 80

评论数 0

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