自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字节跳动-阿里巴巴,二本学渣考研失败

4.PackageManagerService源码解析及其apk安装原理5. ActivityManagerService架设计和 Activity夸进程跳转6.App启动流程源 Android码全解析 Ap应用本质揭秘Android事件总线框架设计(手写可跨进程的 EventBus架构)EventBus33.0源码详解与架构分析2.手写实现 EventBus33.0事件总线框架(跨进程调用)3.手写饿了么进程通信框架 Hermes(单例跨进程调用)fastjson打造对象在多进程共享桥梁(

2021-09-08 21:42:17 188

原创 字节离你一步之遥:如何自学Android,大佬整理

9. Search · android – GithubGithub是一个基于Git的代码托管工具,几乎所有知名的开源软件都选择Github来托管,而很多Android开发者也都选择Github,几乎常见的Demo在Github都能找到类似的。10. Android Archives | Java Code GeeksJava Code Geeks主要是一个Java教程的网站,而它提供的Android教程,一步一步,还有配图,使初学者没有太大压力。书籍推荐一,中级进阶推荐看一下以下这几本书:中级

2021-09-08 21:40:35 202

原创 字节Android岗面试必问:Glide的缓存机制,金三银四旗开得胜

} if (decodeFormat == null) { decodeFormat = DecodeFormat.DEFAULT; } return new Glide(engine, memoryCache, bitmapPool, context, decodeFormat);}}这里也就是构建Glide对象的地方了。那么观察第22行,你会发现这里new出了一个LruResourceCache,并把它赋值到了memoryCache这个对象上面...

2021-09-08 21:37:11 739

原创 RecyclerView实现吸顶效果项目实战(三,真是恍然大悟啊

LinearLayoutManager 是线性布局管理器,使用频率是最高的,展示的样式跟listview一模一样。 该类有3个构造方法:LinearLayoutManager(Context context) LinearLayoutManager(Context context,int orientation,boolean reverseLayout) LinearLayoutManager(Context context, AttributeSet attrs, int defSt

2021-09-06 22:37:39 411

原创 RecyclerView 局部刷新的坑,阿里内部核心Android进阶手册

传入“null”就是更新全部!那我们调用的时候是传入什么呢!看下: public final void notifyItemChanged(int position) { mObservable.notifyItemRangeChanged(position, 1); }继而调用: public void notifyItemRangeChanged(int positionStart, int itemCount) { notifyI

2021-09-06 22:36:01 249

原创 RecyclerView 局部刷新的坑,在阿里工作5年了

* Notify any registered observers that the item at <code>position</code> has changed with an * optional payload object. * * <p>This is an item change event, not a structural change event. It indicates that any * ...

2021-09-06 22:34:12 152

原创 QMUI 2 终于来了,被大佬问到自闭

首先要说的是,这个版本与 1.x 版本并不完全兼容,有很多资源的增删改和组件接口与实现的变更,所以升级到 2.x 版本可能需要稍费一点时间,特别是资源配置的变更,可能导致虽然编译没问题,但是UI显示却不正确的现象。 (特别是在文档还没有完善的情况下,这个锅我背了,但还是不可能那么快完善)引入 QMUI 2def qmui_version = '2.0.0-alpha02'implementation "com.qmuiteam:qmui:$qmui_version"implementation "c

2021-09-06 22:32:37 539

原创 Peter-别看是Java基础,很多人已入坑!,字节跳动Android岗面试题

接下来,我们将扩展此程序以通过键盘从用户请求数据。要从键盘读取输入,我们将使用标准java类。我们需要使用包中的IOException类java.io。要使用此类,我们必须将java.io包导入此类。这可以通过以下方式完成:import java.io.* ;您可以以类似的方式导入许多其他包。第一步是创建InputStreamReader。格式如下:InputStreamReader varName = new InputStreamReader(System.in) ;这将创建阅读器并将

2021-09-06 22:30:55 114

原创 OpenCV之身份证识别(三,精选Android面试真题集锦

下图为身份证识别系统的系统框图。四、图像二值化处理再打开一副图片,也即获取一副彩色身份证图片后,为使得身份证号码颜色与背景色呈现较大差别,故选取R分量作为彩色图像的灰度化,接着对图像进行二值化处理。这里需要获取图像的全局阈值和局部阈值。首先由Otsu算法(opencv已实现)获得整幅图像的全局阈值T,再由Beresen方法计算得当前像素的领域窗口内的灰度均值Tbn,再利用整个图像的最大灰度值和最小灰度值计算得到一个矫正因素b,则二值化公式可由下式子确定。其中T为Ostu全局阈值,Tbn由下式确定

2021-09-06 22:29:12 305

原创 OpenCV On Android最佳环境配置指南(Eclipse篇),实战篇

布局内容:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:

2021-09-06 22:27:24 241

原创 HashMap重写(4,上海大厂Android面试经历

@author zhangyan@date 2019/1/29 17:33*/public class YanHashMap02<K,V> {/** * 位桶数组。bucket array */Node3[] table;/** * 存放的键值对的个数 */int size;/** * 定义构造函数 */public YanHashMap02() { //长度一般定义成2的整数幂 table = new..

2021-09-05 21:08:05 76

原创 HashMap 如何解决冲突,Android并发原理解析

static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}解决冲突的核心逻辑代码:Node<K,V> e; K k; if (p.hash == hash && ((k = p.key) == key || (key != n.

2021-09-05 21:06:18 192

原创 Handler系列面试题:如何深挖原理进大厂,张口就来

从代码中可以看到将Runnable赋值给了Message.callback了。最终sendXXX和postXXX都会调用到sendMessageAtTime,代码如下:public boolean sendMessageAtTime(Message msg, long uptimeMillis) { MessageQueue queue = mQueue; if (queue == null) { RuntimeException e = new Runt...

2021-09-05 21:04:37 111

原创 Glide加载Gif的卡顿优化思路分析,从基础到源码统统帮你搞定

// clear all pixels when meet first frame and drop prev image from last loopif (previousFrame == null) {if (previousImage != null) {// 回收上一帧的BitmapbitmapProvider.release(previousImage);}previousImage = null;// 并且将Bitmap的像素填充黑色Arrays.fill(dest, COLO

2021-09-05 21:02:56 639

原创 Git在AndroidStudio中的使用,跳槽薪资翻倍

.gradle.idea/gradlew/gradlew.bat/local.properties/.idea/workspace.xml/.idea/libraries.DS_Store/build/captures.externalNativeBuild### []( )二、创建本地版本库1.点击工具栏中的VCS,依次点击Import into Version Control --> Create Git Repository… ![这里写图片描述](ht

2021-09-05 21:01:06 85

原创 GitHub标星8,app架构图

WanAndroid APP 组件化项目实战附demo版本更新效果图主要功能项目目录结构主要开源框架……第三章 架构演化(大厂篇)从智行 Android 项目看组件化架构实践组件化调整的原因和目标组件化架构调整的整体规划组件化架构调整中遇到的一些问题得到 AppAndroid彻底组件化demo发布JIMU使用指南组件化拆分的感悟……微信 App微信Android模块化架构重构实践微信Android架构历史为何再次重构微信……蘑菇街

2021-09-05 20:59:32 369

原创 Okhttp链接池的使用,看完这一篇你就懂了

并向connection持有的allocations中增加了一条新的流的弱引用也就是往这条连接中增加了一条流。 ```而其中的条件为isEligible,跟踪进去可以看到,具体的条件为1. 当前这次连接的最大并发数没有达到上限2. 两个address的其他参数相同3. 两个address的url的host相同若满足以上条件,则说明host是相同的可以直接复用,如果不满足以上条件的话,仍旧有机会使用连接(将连接合并):1. 首先这个连接需要使用HTTP/22. 要与复用前.

2021-09-03 20:44:08 1579

原创 OkHttp3源码详解之Okhttp任务队列工作原理(三,事件分发流程图

final class AsyncCall extends NamedRunnable {}所以Call本质就是一个`Runable`线程操作元肯定是放进excutorService中直接启动的。**2 线程池的复用和管理**2.1 图解为了完成调度和复用,定义了两个队列分别用作等待队列和执行任务的队列。这两个队列都是`Dispatcher` 成员变量。Dispatcher是一个控制执行,控制所有Call的分发和任务的调度、通信、清理等操作。这里只介绍异步调度任务。.

2021-09-03 20:40:48 159

原创 OkHttp3-只会用是不够的,还得懂这些,成长路线图

this.retryOnConnectionFailure = builder.retryOnConnectionFailure;    this.callTimeout = builder.callTimeout;    this.connectTimeout = builder.connectTimeout;    th

2021-09-03 20:39:05 122

原创 NestScrollView原理解析,做了三年Android

目前已实现改接口的类包括: CoordinatorLayout, NestedScrollView, SwipeRefreshLayout。它通常是配合 NestedScrollingChild 进行嵌套滑动的。boolean onStartNestedScroll(View child, View target, int nestedScrollAxes)在 Scrolling Child 开始滑动的时候会调用这个方法当 Scrolling Child 调用 onStartNestedScrol

2021-09-03 20:37:09 307

原创 NestedScrollView,字节跳动算法工程师总结

<!-- 功能菜单 --> <LinearLayout android:id="@+id/ll_home_menu" android:layout_width="match_parent" android:layout_height="90dp" android:layout_marginHorizontal="16dp" a...

2021-09-03 20:35:32 85

原创 Rxjava2最全面的解析,阿里Android研发岗二面

result += "onError: " + e + "\n"; }​@Overridepublic void onComplete() {Log.i(TAG, "onComplete: ");result += "onComplete: " + “\n”;}};其中onSubscribe、onNext、onError和onComplete是必要的实现方法,其含义如下:* onSubscribe:它会在事件还未发送之前被调用,可以用来做...

2021-09-02 20:31:25 193

原创 RxJava-2-0还没熟悉,RxJava-3-0说来就来了!,面试阿里巴巴

作为尝鲜,赶紧品尝吧。主要变化主要特点单一依赖:Reactive-Streams继续支持Java 6+和Android 2.3+修复了API错误和RxJava 2的许多限制旨在替代RxJava 2,具有相对较少的二进制不兼容更改提供Java 8 lambda友好的API关于并发源的不同意见异步或同步执行参数化并发的虚拟时间和调度程序为测试schedulers,consumers和plugin hooks提供测试和诊断支持与RxJava 2的主要区别是:将eagerTrunc

2021-09-02 20:29:48 373

原创 RxHttp-一条链发送请求,新一代Http请求神器,flutter面试题

Disposable disposable = HttpSender.from(param).subscribe(s -> { //这里的s为String类型,即Http请求的返回结果//成功回调}, throwable -> {//失败回调});`疑问:说好的一条链发送请求呢?别着急,还没到放大招的时候` 到这,我可以告诉大家,`Param`承担的是一个请求体的一个角色,我们通过`Param`可以确定请求方式(如:Get、Post、Put、Delete等请求方式)、添加请求参数、

2021-09-02 20:28:11 274

原创 RxHttp ,比Retrofit 更优雅的协程体验 ,面试复盘

.await()if (response.code == 200) {//拿到data字段(Student)刷新UI} else {//拿到msg字段给出错误提示}试想一下,一个项目少说也有30+个这样的接口,如果每个接口读取这么判断,就显得不够优雅,也可以说是灾难,相信也没有人会这么干。而且对于UI来说,只需要data字段即可,错误提示啥的我管不着。那有没有什么办法,能直接拿到data字段,并且对code做出统一判断呢?有的,直接上代码val student = RxHttp..

2021-09-02 20:26:41 473

原创 Router_一款单品、组件化、插件化全支持的路由框架,自定义View必备知识

注册成功之后。则通过以下方式进行启动:Router.create(url).open(context); 以上是最简单的路由配置及用法。下面将一步步的更深入的介绍更多用法一对多对于同一个页面。可以配置多个不重复的路由链接:@RouterRule({url1, url2, url3})public class ExampleActivity extends Activity { ...} 页面内获取启动的uri所有的路由启动事件,都会将启动的url链接,存入bundle中进行传递。可通

2021-09-02 20:25:02 269

原创 Retrofit是如何创建的?为什么要用动态代理,转疯了

mOkHttpClient = new OkHttpClient.Builder().cache(cache) .addInterceptor(logInterceptor)//日志拦截器,按照需要添加 .connectTimeout(10, TimeUnit.SECONDS).build();//连接超时时间}向外提供一个方法,用于获取刚才的API接口private volatile stati.

2021-09-02 20:23:21 149

原创 Android 中的,Android程序员秋招三面蚂蚁金服

放大每一个 doFrame 来看,Choreographer 中的 input 和 traversal 都没有触发,只有 animation 的回调一直在执行我们把这份 Trace 上的 cpu 部分全选,然后下面按照 Wall Duration 排序,可以发现网易新闻后台动画执行时间最长。应用已经在后台且不可见的时候,还在这么频繁地工作,占用 CPU 资源,消耗电量,实在是不应该。抓对应的 MethodTrace 来看,就是在做动画,没有进行关闭 ,动画依旧在每一帧进行 onAnimat

2021-09-01 11:46:26 156

原创 Android OpenCV(三十七,太赞了

this.x = x; this.y = y; this.width = width; this.height = height;}……}public class RotatedRect { public Point center; public Size size; public double angle; public RotatedRect() { this.center = new Point(); this.size = new Size();..

2021-09-01 11:44:54 255

空空如也

空空如也

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

TA关注的人

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