自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 nio学习

Nio

2022-05-17 10:58:05 132

转载 快速下载 Android framework 源码

github:https://github.com/android/platform_frameworks_basegoogle 官方:https://android.googlesource.com/platform/frameworks/base.gitgit clone -b android10-d4-s1-release https://github.com/aosp-mirror/platform_frameworks_base.git --depth 1选择android10的..

2021-10-13 10:03:08 693

原创 AutoDispose源码分析(2.如何根据生命周期的completableSource解订阅)

上一篇文章我们介绍,AndroidLifecycleScopeProvider提供了一个CompletableSource,这次我们看如何根据这个CompletableSource解订阅 public static <T> AutoDisposeConverter<T> autoDisposable(final CompletableSource scope) { checkNotNull(scope, "scope == null"); return new

2021-02-01 10:18:59 241

原创 AutoDispose源码分析(1.生命周期的监控)

在介绍生命周期的监控处理之前。我介绍一下AutoDispose如何实现生命周期绑定:....as(AutoDispose.autoDisposable(AndroidLifecycleScopeProvider.from(XXActivity.this, Lifecycle.Event.ON_DESTROY))...我们可以看到AutoDispose.autoDisposable方法提供一个converter,AndroidLifecycleScopeProvider.from(XXActivi

2021-02-01 10:18:41 341

原创 Rxjava线程切换源码分析

 首先我提出来两个问题:1.Rxjava是如何做到线程切换的2.线程切换我多次调用subscribeOn和多次调用observeOn,对数据流由什么影响对Rxjava的数据处理流程不是很清楚的,可以看我上一篇文章数据处理及订阅流程分析下面这段代码相信很多人都写过 upstream.subscribeOn(SchedulerProvider.net()) .observeOn(AndroidSchedulers.mainThread());上游的Observable进行线

2020-10-14 19:14:03 344 3

原创 Rxjava数据处理到订阅流程分析

 分析一个Observable从创建到map到被订阅的流程,以此来明白Rxjava,是如何封住数据如何变换数据的,从而对Rxjava有个宏观的数据改变方式的认识。以下是我们要分析的代码流程 Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subscribe(ObservableEmitter<Integer> e

2020-10-14 16:55:20 240

原创 CAS记录

  首先介绍一下什么是CAS,CAS是乐观锁的一种,用于JAVA并发编程。CAS解读为compareAndSet,比较并设值。例如有一个AtomicBoolean a; public final boolean compareAndSet(boolean expect, boolean update) a.compareAndSet(boolean expect,boolean update) expect指得是期望值,update表示要更新为的值,当且仅当expect与此刻变量a的值是一样的时候才去

2020-10-13 16:38:57 109

原创 Rxjava 源码分析Zip与combinelatest区别

实验 public static void main(String[] args) { testZip(); testComb(); } public static void testZip() { Observable<Integer> obs1 = Observable.just(1, 2, 3, 4, 5, 6, 7); Observable<Integer> obs2 = Observable

2020-08-31 19:40:50 495

原创 静态代码块、构造代码块、构造函数以及Java类初始化顺序

静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行。执行顺序优先级:静态块,main(),构造块,构造方法。构造函数关于构造函数,以下几点要注意:1.对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的。2.构造函数的作用是用于给对象进行初始化。3.一个对象建立,构造函数只运行一次,而一...

2019-05-30 11:33:17 122

原创 AndroidStudio查找依赖包

最近引入支付宝支付的时候,编译gradle报错,说是一个aop的包gradle Task 出错了。我就在整个项目里找这个包,去除之后发现External Libraries仓库里还有,然后不知道项目里哪里引用了,找了半天,就想怎么去方便的定位呢。Google了一下发现可以通过命令查找。在android studio termial 下 win10环境:gradlew 模块名:depend...

2019-05-09 16:31:48 2277

原创 如何培养自己的爱好兴趣

兴趣,爱好,就是我们喜欢干的事情。为什么喜欢干呢,因为做的时候很享受,做完了很快乐。1.记得我之前经常写日记,那时候好像是自己想记录自己的一天。我发现写日记的时候其实就跟自己的内心对话,写日记的时候自己是清醒的,告诉自己今天发生了什么,我有哪些不好的,哪些好的,哪些需要总结与感悟记录下来让自己变得更好的。这大概就是之前我经常写日记的原因吧。2.今天我发现自己处于一种迷茫的状态,因为自己的工...

2019-04-29 17:05:23 2750

原创 时间复杂度图形

   

2019-02-21 15:06:38 1730

原创 leetCode 两数之和

题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]读...

2019-02-21 14:48:14 156

原创 为什么方法内部的私有变量不存在线程安全问题

    大家都知道,非线程安全问题存在于“实例变量”中,方法内部的私有变量,则不存在线程安全问题,这是为什么呢?     因为Java运行时数据区,虚拟机栈或者本地方法栈(执行方法所在的内存区域)是线程私有的,每个线程都有自己的虚拟机栈存储区和本地方法栈,所以线程在执行方法时,方法内部的变量不会牵扯到共享这一原则。只有共享内存才会牵扯到非线程安全问题,实例变量内存,在堆...

2018-07-10 11:06:57 2852

原创 应用卸载后依然存在的文件目录

       现在我们的手机基本都有外部存储,基本所有的厂家都会把外部存储内置到手机,跟以前的SD卡外部存储类似。当应用卸载时,默认会删除掉我们内部存储包名下的所有文件,和外部存储Android/data/包名 里的所有文件。其实这个外部存储,也就是我们平常用户所使用的文件管理里管理的所有文件夹,都是外部存储,如果你打开,你会发现有个Android文件夹,里面有data/各种包名文件夹,默认情况下...

2018-04-27 16:54:45 3598

原创 架构师成长之路-思想的开拓一面向接口编程

接下来的几篇我会一直总结我在学习架构方面的一点体会,和思想。       首先我今天看到了一个人对面向对象的解释,有人说万物皆对象,我觉得这句话对于一个入门级对象编程的人来说,就是云里雾里,因为它真的太抽象了。而在面向对象编程一年多,我今天也是重新再认识了一下它。我认为作为一个架构师,学会解耦,是必要不充分条件。解耦即下层代码不直接为上层代码提供服务(不是直接实例化在上层中),而是通过定义一个接口...

2018-03-21 15:15:40 178

原创 不一样解释的装饰者模式

       先说一下为什么写这篇文章,因为装饰者模式有很多了,为什么还要重复地写呢?写它主要是因为它不一样,不一样在对定义的解释,与见解。这里建议你已经知道装饰者的基本写法了。首先看一下维基百科对装饰者的解释:通过使用修饰模式,可以在运行时扩充一个类的功能。原理是:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功...

2018-03-08 16:19:15 203

原创 CmakeList的常见配置

1.想生成多个so库# 设置构建本地库所需的最小版本的cbuild。cmake_minimum_required(VERSION 3.4.1)# 创建并命名一个库,将其设置为静态# 或者共享,并提供其源代码的相对路径。# 您可以定义多个库,而cbuild为您构建它们。# Gradle自动将共享库与你的APK打包。add_library( hello-lib #设置库的名称...

2018-02-12 17:06:13 959

原创 Android安全系列之数据存储(一)

1.内部存储空间       默认情况下,保存到内部存储的文件是应用的私有文件,其他应用(和用户)不能访问这些文件。 当用户卸载您的应用时,这些文件也会被移除。 内部存储,用户如果不root手机是看不到的内部存储的。通常用户看到的都是外部存储,用户可以操控的也只是外部存储,我们可以通过程序来访问内部存储getFileDir()官方关于内部存储。2.外部存储空间        每个兼容 Androi...

2018-02-09 15:44:38 315

原创 Android 在native层存储秘钥

1.引发问题   最近公司考虑到APk安全,因为内部业务需要,我们不得不在本地获取用户的密码,这时密码存储问题就来了。不可能明文存储吧,而且我们的网络请求路径也做了des加密,然后秘钥也在本地,被人反编译后一览无余。2.思路分析思路1:把APK加固,然而大家都知道,加固可能得用第三方的,有些第三方吧,在其他平台发布应用的时候还通不过,这就算了,如果是Google市场,根本就不允许加固,直接打回。思

2018-01-18 17:38:46 986

原创 2-Lambda(一)

定义Lambda 它来自于学术界开发出来的一套用来描述计算的λ演算法.  匿名——我们说匿名,是因为它不像普通的方法那样有一个明确的名称:写得少而想 得多!  函数——我们说它是函数,是因为Lambda函数不像方法那样属于某个特定的类。但和方 法一样,Lambda有参数列表、函数主体、返回类型,还可能有可以抛出的异常列表。  传递——Lambda表达式可以作为参数传递给方法或存储在变

2017-12-28 14:16:10 182

原创 1-行为参数化

1.介绍比如你有一个方法A,这个方法里面要处理一段的逻辑代码块m。这时又需要一个方法B,但是B方法去掉逻辑代码m不一样,其他与A方法完全相同,这时你需要把这段逻辑行为,当做参数来传递给一个综合方法C,用C方法来代替A,B方法。例如这样把苹果的筛选条件抽出来public interface ApplePredicate{ boolean test (Apple apple);}publ

2017-12-27 17:58:13 289

原创 Android IntDef与StringDef注解

这篇文章只是想让自己记住这两个注解,之前见过几次,不用就忘了,再看到又有些陌生,用这篇博客来记住它吧。想说一下这两个注解,大家都清楚在Android中,官方并不推荐使用enum因为它占用的内存相对较大,对于比较吃内存的应用我们可能会选择静态常亮,但是有些地方我们只想让它赋予指定的一个范围的值,这个时候静态常量就没有办法用来检查了我们需要用的地方是不是自己想要的值,这个时候可以使用这两个注解来完成,它

2017-12-19 09:21:17 1969

原创 动态代理(一)

代理是基本的设计模式之一,说一说它的一个定义:她是你为了提供额外的不同操作,而插入的用来代替“实际”对象的的对象。首先面向接口编程是我们代理的开始,接口一般我们用来做方法回调,和搭架子用。public interface Interface { void doSomthing(); void doSomethingElse(Object proxied);} 再写一个实

2017-10-09 21:59:11 405

空空如也

空空如也

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

TA关注的人

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