前言 最近,工作需要在PC上实现一些图像显示功能。由于一直使用JetBrains的开发工具,所以并不想使用Visual Studio进行开发。与Visual Studio相比...
前言 最近,工作需要在PC上实现一些图像显示功能。由于一直使用JetBrains的开发工具,所以并不想使用Visual Studio进行开发。与Visual Studio相比...
在JVM中表示两个class对象是否为同一个类存在两个必要条件: 类的完整类名必须一致,包括包名。加载这个类的ClassLoader(指ClassLoader实例对象)必须相...
缘起 在Android开发中,我们经常会见到下面的代码,比如: 你曾经有没有想过这两者到底有什么区别?我该使用哪种呢? 常见的Handler.post揭秘 Handler的工...
一旦重写了equals方法,就一定要重写hashCode方法。 hashCode方法的约定: 一个对象多次调用它的hashCode方法,应当返回相同的integer(哈希值)...
缘起 在Android开发中,我们经常会见到下面的代码,比如: 你曾经有没有想过这两者到底有什么区别?我该使用哪种呢? 常见的Handler.post揭秘 Handler的工...
从android系统源码中拷贝gif-lib的.h以及.c文件到NDK项目中。 调用gif-lib打开gif文件,可以读取到总帧数、每帧之间的时间间隔信息,这些信息可以封装在...
OkHttp 1.Okhttp 基本实现原理 OkHttp 主要是通过 5 个[拦截器]和 3 个双端队列(2 个异步队列,1 个同步队列)工作。内部实现通过一个责任链模式完...
详细介绍:http://gityuan.com/2019/01/13/arraymap/[http://gityuan.com/2019/01/13/arraymap/] S...
android7.0之前,Bitmap.compress不支持哈夫曼压缩算法,压缩效率不高,因此引入libTurboJpeg库来改善压缩效率。安卓底层使用Skia作为它的图片...
glide中对bitmap的复用逻辑: Bitmap开启了misMutable,支持复用bitmap的内存空间。 1.LruCache,在内存复用最近常用的Bitmap对象。...
人脸识别追踪 OpenCV是一个开源发行的跨平台计算机视觉库。 人脸识别使用到了OpenCV里面的Objdetect模块,目标检测模块,如:人脸检测等。 人脸检测原理:LBP...
使用工具bsdiff和bspatch。 使用bsdiff工具制作差分包,下发给APP使用。 APP引入bspatch.c,通过getApplication().getAppl...
设计模式分为三种类型,共23类。 (1)创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。 (2)结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观...
Feature module structure Each feature module contains non-layer components and 3 layers...
Android中用到ioc,可以实现视图、组件绑定 ,事件绑定等。在我的另一篇文章butterKnife中提到了apt实现编译期生成注入代码,我们这里仿XUtils的注入模块...
Http 分层模型 应用层传输层网络层网络接口层 Https android端加载https链接有两种信任的方案,一种是通过信任所有的网站,此外还有一种方式就是通过校验的方式...
RxJava subscribeOn()和observeOn()的区别 subscribeOn()和observeOn()都是用来切换线程用的 subscribeOn()改变...
Andfix andfix从native入手修改ArtMethod的字节码地址实现错误方法块的修复。修复的粒度是方法块字节码引用。 Java的内存分布 JVM读取class文...
Java层的native方法和C/C++层的函数建立对应关系有两种方式: 静态注册Java 层的 native 方法与 native 层的方法在名称上具有一一对应的关系 动态...
ViewRoot对应ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。 Decor...