自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 组件化技巧——跨进程共享View

前言在字节学到一招。刚来字节,发现字节内部的技术真的很牛逼,一后会不定期更新博客,记录一下自己在头条这边的学习历程。跨模块View通信我们都知道,当某块A想使用模块B里面的View时,有两种方式抽象出接口,通过依赖接口IView和管理类ServerManager,动态添加view,缺点是只能动态添加,不能在xml里面直接使用,也无法预览。(注意,这里的IView和ServerManager需要统一在common模块)把模块B里面的View直接下沉到更底层去。前面这两个是最通用的方法,一般第二

2020-09-21 00:50:08 594

原创 深入源码系列——为什么LiveData可以监听生命周期

前言LiveData的一系列源码很是蛮复杂的,涉及到support库,viewmodel,lifecyclerowner,lifeccyleRigsty等等。今天咱们简单说下其中一个方面。正文大家都知道,在刚开始学习LiveData的时候,都会提到一个监控生命周期,并且,在生命周期消失的时候,主动移除监听者,那么,他是怎么做到的呢。下面我们就来看看这个问题。源码分析没办法,要想弄清楚问题,源码是少不了的,因为单纯的语言或者文字描述太乏味了,很容易让人误解或者产生歧义。为了保证能看下去,而不是填鸭子

2020-07-26 03:22:30 1606

原创 深入源码系列:聊聊android属性动画执行线程问题(invalidate(false))

前言这篇博文是为了解决一个问题,在之前的博客已经提过了,就是属性动画的执行结束的回调,不是在主线程。首先,阅读这篇文章,大家一定要有一个基础,就是,android不一定只能在主线程才能更新UI。这方面我不多说,想多了解的同学大家自己去查阅博客。下面回到我们这个问题,在探究源码前,我们先来验证一下 (多说一句,android动画相当在计算位置坐标的时候相当蛋疼,所以楼主一直不愿意做涉及到ui的动画,但是ConstraintLayout给了一个直接通过xml可以执行的动画,相当爽,晚点咱们再聊聊)代码

2020-07-20 04:01:59 1857

原创 由线上问题引发的思考——View.post到底何时执行

前言今天遇到一个很莫名其妙的问题,就是一个view有两个状态,状态A与状态B,在Activity的onCreate的时候先显示状态A,并在onCreate里面请求接口,接口回来后显示B。断点的时候,这个逻辑没问题,但是放开断点,很大几率显示的是view的状态A,原因就在于View.post()执行的时机不定,今天这篇文章就来追溯一下View.post()执行的时机。使用场景相信大家都知道,我们如果想在Activity.onCreate()里面计算宽高,就可以使用View.post()的方法,并且,.

2020-05-29 00:00:01 451

原创 从RecyclerView的子View创建来聊聊View.inflate和LayoutInflat.from(context).inflate的区别

前言聊聊RecyclerView子View的生成为什么需要使用LayoutInflat.from(context).inflate而不是View.inflate();最近,用RecyclerView的时候,发现一个很奇怪的现象,就是使用View.inflate()生成的View有问题。但是换成LayoutInflate.from(context)却可以,详细的可以看下这篇博客RecyclerView的item无法充满父布局的问题这篇文章就来看看,两个到底有什么区别。源码分析View.inflat

2020-05-22 16:58:49 285

原创 聊聊线上崩溃

前言大改版上线,这一周累的跟孙子似的,几乎天天2,3点睡觉,最要命的是,出现了一些及其诡异的bug,有一些现在仍然没有找到任何原有,并且我估计也不可能找到原因了,下面简单说一说其中遇到的一个问题。这篇文章也是开篇吧,用来记录以后工作中遇到的一些奇葩的,比较容易拿出来探讨的一些问题。问题汇总noSuchMethodError复现复现场景如下:A模块调用B模块的x方法,x方法返回值为w1,...

2020-04-25 16:52:06 211 1

原创 面试算法总结系列——和为K的算法

这里引入几个面试中常见的算法题目,都不难1从一串有序数组中找到和为K的连续子数组。比如[1,2,2,3,5,6,7,8,9],k=5,那么答案就是[1,2,2],[2,3],[5]思路这个题目咋一看是没有任何思路的,只能暴力,两重for循环,这个代码贴一下 private List<List<Integer>> caTsum(int[] num, int lev)...

2020-04-15 15:21:11 1070

原创 总结系列——聊聊android里面的事件分发

前言android 中的事件分发,已经是老生常谈的问题了,一般都是从Activity开始聊,但是真的是这样吗?hongyang大神之前一篇纠错,解决了我一个很大的困惑,也算是扫盲吧,这篇文章,是从头到尾来梳理一遍,android事件分发。流程我自信不会比网上的很多大神写的博客更好,所以这一篇相当于组合,把相关代码组合在一起。这里我不会贴过多代码,但会给出相关参考连接。其实很多东西不需要一行...

2020-04-15 15:20:21 564

原创 Rxjava(2.x版本)源码解析——带着问题读源码

前言Rxjava已经过了顶峰期,现在已经很少有人愿意去主动学习Rxjava了,(我所在的项目组,20多个人只有我会Rxjava),但是里面的设计内容和思想我们还是不得不学的,rxjava的代码设计其实不难,网上也有很多很优秀的讲解RXjava的文章,我就不螳臂当车了,只是很多时候,分析完代码,依然不知道可以学到什么,所以我们这次,根据Rxjava的一些问题,来读源码。阅读这篇文章,需要你有一定的...

2020-04-02 18:10:02 151

原创 动态规划——能否合成字符串

前言为什么写这篇博文我相信每一个程序猿都梦想过gg这种大厂,所以,算法都是必不可少的。目前刷的所有题目里面,其中动态规划是最难的一种了。想运用好动态规划,不是一件简单的事,动态规划有两个点很重要:1.结果能否拆分成子项,或者说,结果是否有前一个过程完全决定。2.动态转移方程。下面看几个实际的例子。题目题意这个题目是这样的,给定两个字符串s1和s2,再给定一个字符串s3,问由前两个...

2020-03-31 19:48:50 272

原创 Android性能排查常用命令

前言android基于Linux,所以android一些常用的命令还是需要掌握的,可以方便我们更好的理解android系统。楼主也经常忘记这些命令的意义,趁这次机会,比较全面的总结一下。1.ps首先,第一个是ps命令,这个命令不多说,大家应该都清楚,这里只强调一个不经常使用的命令。ps -t [pid]这个命令可以打印出当前进程的所有线程。java线程映射在原生的linux系统之上。...

2020-03-31 16:55:25 588

原创 Android漫谈——Handler原理(一):死磕代码,postDelay()实现原理。

疫情严重,在家闲的无聊,看了不少博客。随着看的博客越多,发现自己不会的越多,同时,忘得也越多,迷迷糊糊的也就越多,之前好多已经记住的,或者已经理解的,现在又变得记不住了,不理解了,所以这次重新翻了一遍源码,仔细读了一边,就诞生了这篇文章。另外,之前看源码,大多是跟着各大博客走的,他们分析完了,我也就觉得自己看懂了,其实远远不是这样,况且,我们一般看源码,都带有很强的目的性,所以会忽略掉很多东西,但...

2020-02-17 01:42:46 603

原创 面试算法总结:动态规划3

这里再来两个动态规划的经典题目。 题目一:一维数组的最大连续子序列。 这哥可以说是动态规划入门了,主要就是运用了‘0’,这个不多说,直接上代码。int max = Integer.MIN_VALUE;dp[0] = a[0]; for(int i=1;i&lt;n;i++){ if(dp[i-1]&lt;0){ dp[i] = a[i]; }else...

2018-04-18 00:37:25 137

原创 面试算法总结——单调栈的应用

笔试面试中,单调栈用的也特别多,属于数据结构类的,在这里先总结下,免得以后忘了。这里只讲应用,不太设计原理。 首先来个经典例题: 求矩形的最大面积。 这个题目就是典型的单调栈。 运用单点栈的时候,首先想到的,应该是,建立一个单调递增还是单调递减的单调栈。这里维护一个单调递增的单调栈。每次遇到一个小于当前栈顶的数时(假设这个数为tn),把当前栈中所有比tn大的数,全部弹出栈。弹出栈的过程中,...

2018-04-15 23:37:42 449

原创 面试算法题总结——动态规划小结2

动态规划是是我目前觉得遇见的最难的题目了。说起来到处都有他,但是真正用的时候,如果变个形状,又很难想到动态方程。所以,目前的动态规划,还是要多总结,找到思路。 抛砖迎玉,先来说个简单的:上台阶问题。现在有一层楼梯,共n层台阶。每次上台阶,可以上1层或者2层,问一共有多少层走完楼梯的方案。 这个题应该都很熟悉,很明显这个是斐波那契数列。怎么推算出来,这是个斐波那契数列的呢? 假设我站在第...

2018-04-15 21:24:07 188

原创 java 泛型 extends 和 super快速记忆。

java 泛型 extends 和 super快速记忆。 为了方便总结的更全面一点,Demo如下:public class A {}public class B extends A {}public class C extends B {}这里全部以B为临街,看看上下界到底是什么情况第一种情况,不带任何通配符,extends 和 super Array...

2017-12-02 15:13:27 393

原创 安卓面经之未解决问题

这是安卓面试的时候遇见的问题,至今我仍然没有找到答案 1.binder加密的原理 2.binder怎么实现进程间通信的(这里不是指发送了一个带有关键字的命令来实现进程间通信,具体问题我也忘了,等到日后有时间再好好研究下) 3.为什么需要实现序列化? 4.jni的实现方式,一般都是通过包名+类名+方法名来实现,还有别的方式吗? 5.为什么要发明intent,有什么用? 6.jni:c调用j

2017-10-30 22:58:44 207

原创 ubuntu16.04安裝Django

按照现在的行情,光会安卓已经找不到工作了,所以必须去学一下后台,正好最近大数据和人工智能这么火,是时候去学一下python中注明的Django框架了。 ubuntu中的python运行环境是自带的,所以不需要我们去额外下载,我们需要下载的,只是python中的安装包,方便去下载其他框架。 首先,在下载东西前,需要先保证东西都是最新的,所以先执行sudo apt-get updatesudo a

2017-10-21 15:37:42 555

原创 小米面经

小米面试已经有一段时间了,好多问题都不记得了,只能把记得的一些问题写下来。一面:线程间通信方式。线程安全类,hashmap的fail-fast原因,采用volatile  可见性,原子性,AtomicInteger。还有handler传递原理,ThreadHandler,IntentServer的原理。涉及到ThreadLocal。算法题很简单,翻转链表,3个3个翻转。

2017-10-13 15:28:02 1014

原创 头条面经

先来波面经,等这段时间秋招有空闲了再来好好总结。首先第一个,手写堆排快排。第二个,intent的作用,为什么采用intent去连接四大组件(因为在各大组件将要回收的时候,可以将其保留)。第三个,事件滑动机制,cancel原理,viewpager里面嵌套listview是怎么实现的,为什么没有滑动冲突。第四个,线程池原理。如果让我去设计线程池,怎么设计,http怎么设计线程池,bit

2017-09-28 00:18:47 1154

原创 位的巧妙应用

前言 前几天做了一个笔试题目,当时没多想,今天翻看博客才发现,原来每个笔试题都藏的很深啊。原文链接:http://blog.csdn.net/u010429424/article/details/77856133。 先说题目 面试题:8个试剂,其中一个有毒,最少多少只小白鼠能检测出有毒试剂。方法一:二分这个题目,第一反应就是二分,44分,两个老鼠各喝四瓶,活下来的接着用。22分,再拿一只新

2017-09-16 20:08:57 390 2

原创 丑数的思想

前言这同样是算法思想的一篇总结篇,由面试问题得来。在leetcode上有这样一道题目:求取第n个丑数。质因子只有2,3,5的数称为丑数,比如4(2*2),9(4*2),10(2*5),14(2*7),18(2*9)…….题目连接即解法戳这里解法1: 暴力就不说了。解法2: 仔细想一想,这里面所有的丑数都是由前面旧的丑数和(2或3或5)构成的。假设之前有...

2017-09-15 11:44:49 236

原创 算法总结系列——数组的巧妙运用+动态规划

做完今天美团的912笔试编程题。感觉这个题目很巧,让我深刻领略了数组的巧妙运用。决定记录下,下次再遇到相关数组的巧妙运用时更新下。平时经常用数组来进行一些巧妙的事情,比如,用数组存储a-z所有字符在这个字符串中出现的次数。我们经常会把需要用到的值直接当做数组下表来用,这样就不需要再去遍历数组来得到想要的值。比如将要讲述的题目: 题目大意如下,有n个数(2<=n<=10^5),从中选取任意两个数,

2017-09-15 02:33:38 363

原创 面试总结系列——单例模式静态内部类

前言: 仔细思考了一下这个模式,往里面深挖了一下,发现关于静态内部类未知的太多。尤其是java虚拟机classloader加载机制一脸迷茫,所以决定记录一下。下面相关问题的解答我都会给出推荐的博客,因为我自己再写不敢保证比他们写的更好。再次膜拜大神。今天看单例模式,仔细思考了下静态内部类的单例。 关于单例模式的讲解,推荐一篇博文,可以说单例模式是多线程入门的教程。 博文地址 博文上面讲解

2017-09-13 16:15:04 471

原创 面试算法理解篇——堆排序的应用

前言 这篇仍然是面试笔试中的一篇小总结。再次申明:不足之处请各位不吝赐教。堆排序算法首先说说什么叫堆,以及和BST(二叉查找树,二叉排序树),AVL(平衡二叉树)的区别。 堆在内存中很常见,一般内存中分配都是以堆栈分配的(这里原谅渣渣我对jvm虚拟机还没有足够深的认识,这里不敢瞎说)。堆考的最多的有两种,最大堆和最小堆。简单来说:最大堆:树的父亲节点比它的子结点大,即...

2017-09-12 01:14:57 401

原创 动态规划小结1

经典二维动态规划二维动态规划很常见,笔试中最经常考。特点是随机选取一系列位置,即不连续。LCS(最长公共子序列问题,O(n^2))题目描述:给两个字符串L和S,求出其中最长的公共子序列(可以不连续) 思路:这是典型的动态规划,有好几种变形。 毋庸置疑,当前状态肯定可以由上一状态得出。 楼主喜欢在动态规划中先确定i,j,dp[i][j]表示的含义 在这里是i表示使用L中到第i...

2017-09-10 12:44:10 345

原创 笔试中背包问题的应用

写在前面: 这是小菜鸟我自己的一点小总结,为了在面试中更加得心应手。后面遇到的相关问题不定期更新到这篇博文中,如果有什么错误请各位大神不吝赐教,如果有什么问题请各位多包涵。更多背包相关问题参考:ACM背包小总结笔试题中,经常会遇到相关背包问题的变形,今天总结一下,下次遇到相关变形,及时更新,大家如果有什么比较好的相关变形,可以在下面留言,大家一起进步。01背包讲讲01背包的应用,01背包的主要

2017-09-09 23:30:26 750

原创 面试算法总结系列——尺取法的应用,滑动窗口

最近准备笔试的过程中,发现好多算法题,有点套路的感觉,只怪自己平时积累不多,现在只能亡羊补牢了。 关于尺取法的概念我就不介绍了,网上这方面讲解很多,主要说一些应用的方面,积累下目前遇到的一些可以用尺取法可以来解决的题目,不定期更新下。 尺取法参考博客在此说明,我的梦想是进入网易,校招进入网易已经不可能了,我就在这里立一个誓言,将来一定会进网易尺取法的应用简单可以理解为,所有求连续的一段区

2017-09-09 14:12:49 390

原创 2017网易笔试矩阵快速幂

昨天网易笔试,竟然除了矩阵快速幂的题目,日了狗了,离开acm好久了,忘得差不多了,囫囵吞枣补一下吧,哎,太菜了!题目如下小易拥有一个拥有魔力的手环上面有n个数字(构成一个环),当这个魔力手环每次使用魔力的时候就会发生一种奇特的变化:每个数字会变成自己跟后面一个数字的和(最后一个数字的后面一个数字是第一个),一旦某个位置的数字大于等于100就马上对100取模(比如某个位置变为103,就会自动

2017-03-26 13:55:29 618

原创 android studio failed to open zip file .Android Studio Error:Connection timed out: connect.

 第一次打开安卓长时间处于下载界面,除了网速太慢,还有可能(有可能,不一定)是gradle配置问题。最近帮同学装android studio(简称AS)时候,第一次打开AS的时候一直停留在加载页面,无法进入,显示一直在下载,想起来了gradle配置,所以更改了下这篇博文。AS很多时候下载东西失败,除了网速问题,就是gradle未完成,类似问题都可以查看下gradle是否配置完成,比如查看很久以...

2017-03-16 16:30:06 16320 8

原创 给python安装扩展包(不断更正)

重装了个系统,以前所有的东西都丢了,也好,正好把所有东西全部重新学一遍。python中很多扩展的安装包都没有,这就需要我们自己去搞了。不多说,进入python官网,下载setuptools,百度了一下,中间有些回答的有些坑。我就说说我自己的做法吧。首先进入python官网,网址:https://pypi.python.org/pypi/setuptools.    进入之后,图片如

2016-03-10 12:45:49 842

原创 重装win8.1搜索不到 wifi

这几天一直忙着研究装系统,毕竟自己是个小白,经常搞到深夜4点钟,今天终于算是有点眉目了。    重新装完win8.1,电脑竟然搜索不到wifi,点开右下角那个图标,只有宽带连接这一个选项。于是到网上搜索,怎么解决,网上给了很多答案,基本都差不多,我试着按他们所说,按win+c,点击右下角的  "设置"。再点击右下角"更改电脑设置",然后点击"网络",点击"飞行模式",看飞行

2016-02-24 21:05:00 1857

空空如也

空空如也

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

TA关注的人

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