- 博客(43)
- 资源 (5)
- 收藏
- 关注
原创 leetcode 算法 学习
2019算法 leetcode 学习之路Java双亲委派模型详细聊聊Java的动态代理Android中bitmap的详细总结跳跃游戏你要来试试吗40亿个非负整数中找到没有出现的数40亿个非负整数中找到没有出现的数进阶获取数组中最长的连续序列你理解这些算法吗?一起来温故下这些算法了吧?删除无序单链表中重复出现的节点最详细的判断一个点是否在矩形内部详细的...
2019-08-05 21:45:24 257
原创 子数组的最大累加和问题
1:题目给定一个数组array,返回子数组的最大的累加和。举例说明:若array=[1,3,-6,5,7,-4],所有的子数组中,[5,7]可以累加出最大的和是12,所以返回122:要求a:时间复杂度为O(n),空间复杂度为O(1)3:解答1):如果array全是负数,那么产生的最大累加和一定是数组中的最大的那个值。2):如果array全是正数,那么产生...
2019-07-30 20:02:26 1753 1
原创 你会兑换零钱吗?
1:题目给定不同面额的硬币 coins 和一个总金额 amount,编写一个函数来计算可以凑成总金额所需的最少的硬币个数,如果没有任何一种硬币组合能组成总金额,返回-1。例如:coins=[2, 5, 1], 总额amount = 11因为5,5,1是最少的数量,所以返回32:要求要求空间的复杂度为O(M*N),时间复杂度O(M*N)3:解答...
2019-07-09 16:00:37 161
原创 打印出出现奇数次的整数
1:题目给定一个整数数组aar,其中只有两个数出现了奇数次,其他的数都出现了偶数次,找出这个数。例如:aar=[1,5,1,5,2,6,4,6],返回2,42:要求 要求时间的复杂度为O(n),额外的空间复杂度为O(1)3:解答1:首先可以知道整数k和0异或的结果为k,整数k和k异或的结果为0,这是异或的规律。2:如果只有一个数出现奇数次,比如ar...
2019-07-03 15:46:10 306
原创 反转部分单向链表
1:题目给定一个单向链表的头节点head,以及两个整数from和to,在单项链表上把第from个节点到to个节点的这一部分进行反转。例如:1->2->3->4->5->null from=2,to=4调整结果为1->4->3->2->5->null再如1->2->3->null from=1,to...
2019-06-18 15:14:09 1265
原创 包体积优化小计
1:不要过度Proguard,组件也可以Produard,但是要排除export的组件,同时需要替换变量(比如activity-->a,在变量中定义了次activity)的情况。2:去掉debug信息或者行号,Proguard会通过这个信息保存行号 -keepattribute SourceFile, LineNumberTable3:dex分包,跨dex会有调用的详细的信...
2019-05-14 18:42:38 215
原创 插桩场景和几种方式
编译插桩学习小计1:编译插桩的场景 编译插桩的技术很好玩,同时学会这项操作,可以随心所欲的控制代码,满足不同场景的需求,比如butterKnife,Dagger这些注解生成的框架,代码隔离了复杂的内部实现,让开发可以更加简单和搞笑,减少手工重复工作的劳动力,同时降低了出错的可能性。a:代码监控:我们可以通过插桩技术实现各种各样的性能监控,比如trace的监控b:代码修改:我...
2019-05-09 18:01:01 3974
原创 android 创建 plugin
Android studio 创建 Android plugin 小记1:首先创建一个Android项目2:创建了一个module,我这边创建的是library,取名叫做plugins,删除了里面所有的内容,只剩下build.gradle,还是就是gitignore和imi文件,3:新建了src/main下面的文件,最后新建了一个Myplugin文件,刚开始时候Androidstu...
2019-05-09 13:48:49 1079
原创 Java注解
1: 注解是JDK1.5以后引入的新特征,它的引入意义很大,有非常有名的框架,比如说Spring,Hibernate等框架中都大量的用到了注解,注解作为程序的元数据嵌入到程序中,它可以被解析工具或者编译 工具解析。 Annotation能被用来为程序的元素(类,方法,成员变量)设置元数据,它的执行并不影响程序代码的执行,无论删除还是增加注解,代码都始终如一的执行,如果...
2019-01-15 15:16:47 116
原创 Java 动态代理学习小结
最近由于闲来无事,看了一下动态代理的Java实现,现在在这边记录一下首先我常见了一个demo类class MyInvocationHandler implements InvocationHandler{ // 目标对象 private Object target; /** * 构造方法 * @param target 目标对象 *...
2019-01-13 15:02:17 163
原创 android与js的交互
最近比较忙,同时也一直都在做关于android与js分享的准备,今天这篇文章主要是为了记录这段时间,对android与js的交互做的研究。 1:讲讲为什么要有js与android之间的交互随着科技的快速发展,很多公司都会对移动产品进行快速的迭代开发,降低开发的成本,来适应市场的需求。有人说js会替代android原生的应用,因为js的跨平台,前端只要通...
2018-11-18 14:00:41 6773
原创 偏向锁,轻量级,重量级锁的理解
1:对象头 首先了解下32bit的Java对象头如下: 通过上面的表格,我们可以看出,synchronized用的锁是锁在Java对象头中的,Java的每个对象都可以作为锁,具体表现为下面三种方式: a:对于普通的方法,锁是当前的实例 b:对于静态方法,锁是当前类的Class对象 c:对于同步方法块,锁是Synchronized括号中配置的对象从JVM规范中看出,同步代码块
2017-06-21 11:34:41 971
原创 虚拟机加载时机
1:类加载的时机。 类从加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括: 从这个图中可以看出,虚拟机的加载顺序,其中加载,验证,准备,初始化和卸载的顺序的确定的,类的加载过程必须按照这个顺序开始,而解析就不一定。他可能在初始化阶段之后再开始,这是为了支持Java语言的运行时动态绑定设计的。那什么情况下需要进行类的加载呢?Java虚拟机并没有进行强制的规定。在虚拟机规范中
2017-06-01 16:03:31 389
原创 垃圾收集器
1.Serial收集器: Serial收集器是最基本,发展历史最久的收集器,这个收集器是单线程的收集器,但是他的单线程的意义并不仅仅说明他只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是他进行垃圾收集时,必须暂停所有的工作线程,直到他收集结束,“stop the world”就是这个意思,他是由虚拟机在后台自动发起并自动完成的,在用户不可见的情况下,把用户的全部线程停掉,这对很多应用
2017-03-28 21:56:15 261
原创 垃圾收集算法
1:标记清除算法. 这个收集算法是最基础的算法,如同他的名字一样,算法分为“标记”和“清除”两个阶段,首先标记所有需要回收的对象,在标记完成之后,统一回收被标记的对象。之所以说他是最基础的算法,是因为后续的算法都是基于这种思路并对其不足进行改进。他的不足主要有两个方面,一个是效率的问题,标记和清除这两个过程的效率都不高,另一个方面是空间问题,标记清除之后会产生大量的不连续的内存碎片,空间碎片太多可
2017-03-25 18:17:42 307
原创 http握手详解
现在这个社会,我们都离不开网络,那么网络的工作流程是怎么样的呢?从http发起请求到完成请求,网络到底给我们做了什么事情? 今天我们主要来分析下http请求的过程: 在Http工作之前,Web浏览器通过网络和Web服务器建立链连接,该连接是通过Tcp来完成的,该协议和Ip共同组成了Internet,即著名的Tcp/Ip协议族,因此Internet也被称为Tcp/Ip网络,Http是比Tcp更高的
2017-02-17 18:16:15 8098
原创 andoroid多进程模式
IPC,含义为进程间通信或者是跨进程通信,是指两个进程之间进行数据交换的过程,那么线程和进程之间有什么区别呢? 其实线程与进程是两个截然不同的概念,按照操作系统的概念,线程是CPU调度最小的单元,一个进程可以包含多个线程,因此进程和线程之间是包含和被包含的关系。 IPC不是android所独有的,任何一个操作系统都有不同的IPC机制,比如Windows中的剪切板,linux中的管道等等,对于an
2017-02-15 17:58:40 369
原创 android组件化思考
android发展到今天,虽然说很多的业务逻辑都会放在服务端处理,但是随着功能的增加,app的体积还是会越来越大,有时候连自己都觉得各个模块间的相互依赖太多,比如说我们有订单模块,购物车模块,门店模块,个人中心模块等等,相互之间都会有依赖。 以前我们的模块是这样的: 上面这个图是做过androd的程序员最熟悉不过的工程了,所有的java文件都写在同一个app模块下。 那么下面我们再来看下现
2017-02-11 16:20:52 3802 1
原创 Android源码之ArrayList
今天是上班后的第一天,由于项目正在测试阶段,比较空闲,所以研究了一下Android中的ArrayList源码,先说明本篇文章是基于android-23进行的分析,因为我看到网上很多的arrayList源码和我看到的android源码不一样。首先我们看下Java集合框架中的继承图。 由于今天主要讲的是ArrayList,以后的类我会在以后一一分析。那现在就开始我们今天的源码阅读。1:我们都知道arr
2017-02-06 19:10:43 658
原创 android studio常用快捷键
以下的快捷键都是在android studio default场景下Ctrl+方向箭,单词间跳 最近操作 Ctrl + E 最近修改 Ctrl+shift+E 查找类文件 Ctrl+n 查找文件 Ctrl+shift+n 移动行 alt+shift+方向 查找一个方法使用处 alt+F7 快速赋值行Ctrl+D 多行操作 alt+鼠标 方法体大括号增加,尾号分号增加,自动格式化换行
2017-01-24 15:30:08 227
原创 Java 基本类型的长度
bit:位,一个二进制数据0或1,是1bitbyte:字节,存储空间的基本的单元,1byte=8bit一个英文占一个字节,1字母=1byte=8bit一个中文占两个字节,1汉字=2byte=16bitbyte:一个字节(8位)(-128~127)(-2的7次方到2的7次方-1)short:两个字节(16位)(-32768~32767)(-2的15次方到2的15次方-1)int:四个字节(32位)(一
2017-01-24 14:20:00 9871
原创 android support_v4遇到的问题
support-v4包问题总结转至元数据结尾Created and last modified by 竺欢焕 on 十一月 10, 2016转至元数据起始原因:接到测试的通知,B端的“增值资质”界面内选取图片后,图片不显示。 排查经过:本地打包,测试是正常的;安装线上包,问题复现
2017-01-22 10:46:09 350
原创 文章标题
今天遇到的picasso的坑,在这里记录一下,首先说明我用的是android5.0以上的版本 首先来呈现下遇到的bug 这是recyclerView,但是部分图片就是显示不出来,代码是这样子的: 你那边可能因为图片太大也会显示不出来。但是如果把resize去掉,那么picasso就会去load一整个图片,这么多张的图片,每张图片又那么大,势必会load很慢,的确,事实真的是这样的。 那么
2016-12-30 21:53:38 242
转载 oom
OOM(内存溢出)情况一处理bitmap资源不得当造成(压缩或者变换得到新bitmap)解决方案采用try catch处理方式,若出现异常再做压缩,期间采用弱引用方式处理。 example: WeakReferenceBitmap> bitmapWeakReference; // First decode with inJust
2016-12-09 13:42:14 261
原创 RxJava源码之merge
今天我们主要讲的是RxJava之merge,首先我们来看一个demo,如下图大家先可以想一下,当运行以上代码的时候,最后打印出来的内容是什么?????有些人会情不自禁的说,一个bookList,一个111,两个Oncomplete,哈哈,如果真的是这样的话,我就不问大家了。那我们来看下打印的结果,如下图:有人可能会有疑问,为什么就打印了一个O
2016-12-05 20:19:42 992
原创 aar打包和用aar打apk包的混淆问题
一下混淆都已百度定位的aar为例 1:首先我们看下打成aar包后的混淆的文件 在这里除了@keep的之外,可以看到全部都被混淆 接下来看打成apk反编译出来的文件通过对比,可以看到 1:打包生成的apk的文件进行了第二次混淆 2:第一次的类名可能和第二次的类名不相同 3:内部类都会被抽取出来 4:资源文件的引用也被打包进来 5:局部变量也会命名改变接下来我们来分析下百度的类的混淆情况
2016-12-02 13:42:51 5995 2
原创 内存泄漏检查
首先我们看下在多次进入门店详情之后退出到门店列表,导出hprof文件可以看到StoreDetailActivity_v3有14个对象,自身的堆大小是8288,引用其他的总的大小是112976,,那为什么在退出之后还会存在14个实例,肯定是其他的对象有对其的引用,导致其不能回收,我们选中StoreDetailActivity_v3,右击选择 得到了如下的结果
2016-12-01 11:51:03 221
原创 listener之内存泄漏
之所以写这个,是因为最近公司的app老报oom,所以为了解决这个问题,专门研究了Mat以下这种情况,可能会导致oom刚开始我在QccrLocation这个类中定义了一个接口,在其他的地方实现了这个接口,当需要定位的时候,我把实现了这个接口的对象传了进来然后定位完成后把经纬度返回,这样返回,一切看似正常,但是我再去查看Mat的时候,是这样的就是说退出之后还有对QccrLocation的引用,这可能会导
2016-11-30 22:49:16 2800
原创 如何打aar包
最近一直很忙,又过了好长的时间,感觉好久没有来写博客了,今天主要讲的是如何打aar包 首先来看下项目的结构: 1:我们定义了QccrLocation这样一个工程,依赖与qccr_baidu_maps这样一个model,2:因为我们只要使用百度定位和导航,所以我这里只用了BaiduLBS_Android.jar和armeabi包首先讲下我遇到的问题,当时在配置好之后,死活都出不来百度地图,key也
2016-11-30 20:01:46 2673 1
原创 OOM
在android测试的时候,老发生oom,原来是头部的图片太多的缘故, 我们的头部由50张小图片组成的gif,所以刷几次就会oom,解决的办法: 请在destory中消除对图片的引用。
2016-11-20 20:36:40 318
原创 RxJava之map源码解析
最近由于比较忙,同时需要分享RxJava的内容,所有看了好久的RxJava的源码,今天我们主要讲的是RxJava之map的源码的分享。 首先我们还是老规矩,先上一个demo在这个demo中,我们只是简单的把字符串的12345转换成了Integer的12345,这只是一个简单的demo,但是要了解他真正的转换的过程,其实是一件不容易的事情。 下面我们来仔细的分享下他具体的实现的原理。1:Obser
2016-11-19 13:07:18 625
原创 TextView selector
今天上来是想记录一下我的开发中遇到的问题,我经常遇到这样的问题,就是不知道为什么,所以在这里总结下, 直接上遇到的问题,刚开始是这样的, 可以看出在没有enable的时候是灰色边框和文本,在enable的时候是红色边框和文本, 但是在enable的时候红的边框就是显示不出来,一直显示的是灰色。 最后selector换成了这样, 就正常了,我遇到这样的问题好几次,以后就在这边总结下,看看
2016-11-04 18:15:06 273
原创 RxJava之map源码解析
上次主要讲了最基本的from与just源码,今天我们主要讲的是RxJava中转换符map的使用与实现的原理。 首先我们先上一段超级简单的方法。看下图: 这个函数,我们可以很清楚的知道最后打印出来的内容是“圆圆”,“袁斌”,再来看一个简单的函数: 这个函数,我们通过观察可以知道打印出来的是5和5。 那么RxJava是怎么实现把一个对象通过map函数转换成一个name字符串的,hello转换
2016-10-31 23:39:37 355
原创 OnGlobalLayoutListener layout疑问
今天在写业务的时候,遇到这样一个需求, 其实这个需求很常见,就是1,2,3这三块是连在一块移动的,当2到达屏幕顶部的时候,让他悬浮在最顶部,刚开始的思路就是写两个相同的2的布局,当2到达顶部的时候,当另外一块显示出来,这样就达到了看起来悬浮在顶部的效果,但这样的缺点就是2的有好多个点击事件,这些点击事件都要重复设置两次,比较麻烦,而我想到的一种方法是 1:当没有到达顶部的时候,我把2这块地方布局
2016-10-21 05:54:14 4261
原创 RxJava之just源码解读
上一节我们主要讲了from的实现的原理,这讲我们主要分析的是just的源码 废话不多说,直接进入主题。我们主要分析的是just的实现原理,subscribe的方法,我在这里不多解析,因为在前两章中,都对这个方法有详细的解释,如有不懂的,可以参见前一章,或是在底部留言,谢谢。我们说过just方法,是对create的方法的一个封装,就像是create的简化版,首先我们上一张有关just的图:这是一个最
2016-10-21 05:25:00 755
原创 RxJava之just与from源码解读
上一节我们主要讲的是RxJava的入门之create的源码解读,让我们对RxJava有了初步的认识,本来这篇文章应该前些天写的,但是由于最近工作比较忙,今天晚上,不知道怎么的失眠睡不着,于是乎想起来做点什么,便有了现在的这篇文章。好,废话不多说,我们现在开始进入正题。 首先我们来看下下面这些代码:public static void just() { List<Integer> i
2016-10-21 03:52:18 609
原创 RxJava中create源码
第一次接触RxJava,就感觉它的链式调用非常好用。以前我们都用AsyncTask,handler来进行异步切换,相当麻烦,经常是既难写也难被读懂,而RxJava,它是一个实现异步操作的库,异步操作很关键的一点是程序的简洁性,而RxJava正是实现了这一点。 以后我会不定期的总结我在学习RxJava中的心得和大家分享,期待你们的光临, 哈哈,废话不多说,今天我们来看下create的具体的实现过程
2016-10-13 17:36:04 379
原创 ProgressBar自定义图片拉伸的问题
今天在公司写一个下拉刷新的控件时,遇到的问题,在这里记录一下, 当时的想要的效果是这样的 刷新控件里面的跳动图片刚好是图片的宽度,但是在写好测试过的过程中,测试时的结果是这样的,他会把一行都用图片沾满,因为我当时的布局是这样子的, 和 如果这样子写的话,我原来的图片就被拉伸了 ,拉伸的结果就是在宽度上沾满了整个屏幕, 后来百思也不知道原因,看了源码之后,才有点感悟,我们来看下
2016-05-14 19:59:55 1203
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人