自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 仿探探划卡片 -- RecyclerView的四级缓存

仿探探划卡片先实现一个这就没啥好说的。重点在于自定义LayoutManager,之前使用的是系统的LinearLayoutManager继承RecyclerView.LayoutManager自定义LayoutManager,都是需要继承这个的继承完以后发现有一个方法要实现设置默认的LayoutParams查看LinearLayoutManager是怎么做的直接复制过来就行,自己的也这样实现。

2024-05-16 15:12:04 413

原创 一个Android菜鸟入门Flutter 笔记(一)(1)

CustomPaint是用来承接自绘控件的容器,并不负责真正的绘制.画布是canvas,画笔是Paint.画成什么样子由CustomPainter来控制,将CustomPainter设置给容器CustomPaint的painter属性,我们就完成了一个自绘组件的封装Paint,其实和Android中的差不多,可以配置它的各种属性,比如颜色、样式、粗细等;

2024-05-16 04:37:45 702

原创 Glide框架解析

load方法最终做的就是进行一些初始化的操作,获得了一个DrawableTypeRequest对象,通过这个对象我们就可以获得图片请求的request,然后再接下来的into方法中使用。得到ImageViewTarget 显示图片的地方// 得到ImageViewTarget 显示图片的地方构建一个请求一般的图片加载库,都是通过内存缓存LruCache、磁盘缓存DiskLruCache中去拿数据,那么Glide也是这样么?Glide的缓存设计可以说是非常先进的,考虑的场景也很周全。

2024-05-14 01:01:25 307

原创 Flutter 流畅度优化实践总结

上述流程,必须要 16.6 ms 内完成,才能保证不掉帧。大部分情况,不需要构建新的卡片,但当新卡片进入列表区域时,整个计算量就会变得巨大,尤其是在复杂的业务场景下,如何保证在一帧 16.6ms 内完成全部计算,是一个不小的挑战。上图是一次滑动 devtool 样例,卡顿阶段都是新卡片上屏时发生,其他阶段均很流畅,因为滚动速度在衰减,所以卡顿间隔也在变大。因为大部分时候都很流畅,所以平均 FPS 不低。但新卡片构建时的产生画面停顿,给我们的卡顿体感却很明显。▐ 动态能力的挑战 - Flutter Dyna

2024-05-12 20:27:58 437

原创 Android Shape常用实例详解

<shape xmlns:android=“http://schemas.android.com/apk/res/android”android:shape=“oval”><sizeandroid:width=“5dp”android:height=“5dp” /><shape xmlns:android=“http://schemas.android.com/apk/res/android”android:shape=“line”><strokeandroid:width=“@dimen/mdp_05”a

2024-05-10 16:44:06 860

原创 隔壁老王都会了,你竟然还不知道?Redis zset底层—Skip List跳跃列表(面试超级加分项)

Node节点类主要包括如下重要属性:score -> 节点的权重,这个与Redis中的score相同,用来节点元素的排序作用value -> 节点存储的真实数据,只能存储String类型的数据prev -> 当前节点的前驱节点,同一levelnext -> 当前节点的后继节点,同一leveldown -> 当前节点的下层节点,同一节点的不同levelup -> 当前节点的上层节点,同一节点的不同level23/**4 *5 * 跳表节点元素6 *7 *10 */12。

2024-05-08 18:00:31 856

原创 金九银十到来,新鲜出炉的Android面试真题集锦我给你们整理出来了!

由于题目很多整理答案的工作量太大,所以仅限于提供知识点,详细的很多问题和参考答案我都整理成了 PDF文件《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

2024-05-08 16:54:22 925

原创 这是一份详细&清晰的-上传Android-Library到JCenter-教程:如何使得自己的代码被别人优雅引用

Maven仓库 = 中央远程仓库。

2024-05-08 15:41:49 861

原创 谈一谈Android内存优化那些事(三)Android内存分析与监控

: 不会暂停应用线程的并发垃圾回收。此垃圾回收在后台线程中运行,而且不会阻止分配。: 您的应用在堆已满时尝试分配内存引起的垃圾回收。在这种情况下分配线程中发生了垃圾回收。:由应用明确请求的垃圾回收,例如,通过调用system.gc()。与 Dalvik 相同,在 ART 中,最佳做法是您应信任垃圾回收并避免请求显式垃圾回收(如果可能)。不建议使用显式垃圾回收,因为它们会阻止分配线程并不必要地浪费 CPU 周期。如果显式垃圾回收导致其他线程被抢占,那么它们也可能会导致卡顿(应用中出现间断、抖动或暂停):原生分

2024-05-08 14:20:21 331

原创 西瓜视频稳定性治理体系建设三:Sliver 原理及实践

开发是面向对象。我们找工作应该更多是面向面试。哪怕进大厂真的只是去宁螺丝,但你要进去得先学会面试的时候造飞机不是么?作者13年java转Android开发,在小厂待过,也去过华为,OPPO等,去年四月份进了阿里一直到现在。等大厂待过也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含。

2024-05-08 13:05:09 996

原创 腾讯面试官:为什么-Android-要采用-Binder-作为-IPC-机制?

而Android 之父 Andy Rubin对于GPL显然是不能接受的,为此,Google巧妙地将GPL协议控制在内核空间,将用户空间的协议采用Apache-2.0协议(允许基于Android的开发商不向社区反馈源码),同时在GPL协议与Apache-2.0之间的Lib库中采用BSD证授权方法,有效隔断了GPL的传染性,仍有较大争议,但至少目前缓解Android,让GPL止步于内核空间,这是Google在GPL Linux下 开源与商业化共存的一个成功典范。从安全角度,Binder的安全性更高。

2024-05-08 11:49:10 630

原创 我做了五年Android应用层开发,凭什么比一个两年Framewor开发的“年轻人”工资低10k?

想要更系统的学习framework的朋友,点击这里获取!第一章: 深入解析BinderBinder机制作为进程间通信的一种手段,基本上贯穿了andorid框架层的全部。所以首先必须要搞懂的Android Binder的基本通信机制。本章知识点Binder 系列—开篇Binder Driver 初探Binder Driver 再探Binder 启动 ServiceManager获取 ServiceManager注册服务(addService)获取服务(getService)

2024-05-08 10:51:42 1062

原创 腾讯Android岗三面:EventBus-发送的消息,如何做到线程切换?(1)

*要想成为高级安卓工程师,必须掌握许多基础的知识。**在工作中,这些原理可以极大的帮助我们理解技术,在面试中,更是可以帮助我们应对大厂面试官的刁难。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取![外链图片转存中…(img-TJCGVIte-1715130640361)]《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

2024-05-08 09:11:29 408

原创 绝密档案:进军大厂的Android程序员究竟该如何准备?已吊打三个大厂的hr,附最真实资料详解。

ActivityFragmentServiceBroadcastReceiverContentProvider数据存储View进程Parcelable接口IPCWindow / WindowManagerBitmap屏幕适配ContextSharedPreferences消息机制线程异步RecyclerView 优化WebviewARTHookProguard架构JetpackNDK开发类加载器排序二叉树链表栈/队列二分哈希表堆/优先队列.二叉搜索树数组/双指针贪心字符串处理动态规划矩阵二进制/位运算其他下

2024-05-08 08:05:03 920

原创 程序性能优化之耗电优化(四)下篇

如果要模拟的不是耗时任务,那就去掉这个Handler,然后将onStartJob的返回值设置为false。因为在onStartJob里返回false代表你任务执行完成了,他会开始计时为下一次任务的执行做准备,如果返回true,代表任务还在执行,需要我们自己调用jobFinished(param,true)函数来告诉JobService任务执行完成了@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)//API需要在21及以上public class MyJobS

2024-05-08 06:46:30 618

原创 真当Flutter不能热更新?就在刚刚!QQ团队开源动态化Flutter

响应式UI框架WidgetTree:Widget 里面存储了一个视图的配置信息,可以高效的创建(build)和销毁Element 是分离 WidgetTree 和真正的渲染对象的中间层, WidgetTree 用来描述对应的Element 属性RenderObject 来执行 Diff, Hit Test 布局、绘制第一棵树有完整的UI描述信息,那么我只要JIT下通过 DartVM 创建第一棵树,其他耗时的操作都丢到AOT里去。

2024-05-08 04:55:33 663

原创 热修复学习四:AndFix详解一

一、AndFix的基本介绍=============官方介绍:alibaba/AndFix以后学习任何新技术,优先去官网查看文档,然后再考虑去看博客文章。二、AndFix执行流程及核心原理=================见官方介绍三、使用AndFix完成线上bug修复===================1、集成阶段a、gradle中添加AndFix依赖compile ‘com.alipay.euler:andfix:0.5.0@aar’b、在代码中完成AndFix的初始化封装AndFixPatchMan

2024-05-08 03:40:33 904

原创 深入探索编译插桩技术(四、ASM 探秘)

在 ASM Bytecode Outline 工具的帮助下,我们能够完成很多场景下的 ASM 插桩的需求,但是,当我们使用其处理字节码的时候还是需要考虑很多种可能出现的情况。如果想要具备这方面的深度思考能力,我们就必须对每一个操作码的特征都有较深的了解,如果还不了解的同学可以去看看《深入探索编译插桩技术(三、JVM字节码)。因此,

2024-05-08 02:32:04 1118

原创 某一线互联网大厂内部超高质量Flutter+Kotlin笔记!技术与实战篇!(2)

光有这些思路和搞懂单个知识的应用是还远远不够的,在Android开源框架设计思想中的知识点还是比较多的,想要搞懂还得学会整理和规划:我们常见的**Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,**这些都是属于Android开源框架设计思想的。如下图所示:这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想。

2024-05-08 01:20:26 1066

原创 方法对了,你做1年Android开发能顶别人做10年

本文梳理了Android 开发者进阶过程的学习思路和一些我个人的建议。要详细学习这些知识点还需自己去看书、看博客、查资料等。当然了,本文所列出的知识点还不完全,要比较系统的学习。我这边整理了一套全网最全的Android开发核心知识笔记,需要的可以去我的【GitHub】

2024-05-08 00:07:07 748

原创 持续集成CI:Jenkins使用

Jenkins最主要的作用就是:将更新、发布、编译、打包、通知这类的琐事交给Jenkins去处理吧,程序员就安心的编码。以后如果有人想让你打一个包给他,你可以不用停下手头上的工作,在本地编译一个apk,等上几分钟甚至十几分钟,反而还耽误了自己和他人的时间。你可以跟他说在xx地址上找到版本号为xx的apk下载即可。我们这里介绍下Jenkins在Android上的应用,具体的安装配置不详细介绍,主要介绍一些需要注意的地方。Jenkins 全局配置系统管理 → 系统设置 → 全局属性添加android sdk的环

2024-05-07 22:09:16 379

原创 手写代码详解Android Hook入门demo

View v = findViewById(R.id.tv);v.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, “别点啦,再点我咬你了…”, Toast.LENGTH_SHORT).show();}});这是的点击事件,了一段话,现在要求,不允许改动这个,要在之前添加日志打印 .乍一看,无从下手.看如何解决.按照上面的

2024-05-07 20:58:58 340

原创 您有一份AndroidX升级指南未领取

被修改成了:dependencies {implementation fileTree(dir: ‘libs’, include: [‘*.jar’])implementation ‘androidx.appcompat:appcompat:1.0.2’implementation ‘androidx.constraintlayout:constraintlayout:2.0.0-alpha2’testImplementation ‘junit:junit:4.12’androidTestImpl

2024-05-07 19:45:29 756

原创 开源框架之一第一篇:OKhttp解析,这些你又了解多少呢?

OkHttpClient client = new OkHttpClient();咦,怎么不见 ?莫急,且看其构造函数:public OkHttpClient() {this(new Builder());}原来是方便我们使用,提供了一个“快捷操作”,全部使用了默认的配 置。 类成员很多,后面我们再慢慢分析,这里先暂时略 过:public Builder() {dispatcher = new Dispatcher();protocols = DEFAULT_PROTOCOLS;connecti

2024-05-07 18:37:09 881

原创 巧用Android网络通信技术,在网络上直接传输对象

【Android 详细知识点思维脑图(技能树)】其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

2024-05-07 17:26:11 309

原创 从事这么久的Android 开发工作,知道自己处于什么段位嘛?

不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大。在我学习的过程中,最开始是在网上找了很多学习文档,毕竟这些文档是我们开始最快速的学习方法,在这里我放上我这些年在网上收集到的学习文档,然后再以我的工作经验给大家总结一下,让你们少走些弯路,提取一些目前互联网公司最主流的Android开发架构技术,希望能帮助到大家!Android学习PDF+架构视频+面试文档+学习笔记。

2024-05-07 15:20:02 699

原创 字节跳动面试官一招差点KO我,一共面试了3轮(5年经验),艰难拿下2-2职级offer!(1)

Android高级架构师之路很漫长,一起共勉吧!

2024-05-07 11:55:12 711

原创 字节一面:https-真的安全吗?可以抓包吗?如何防止抓包吗?(我当场去世)(1)

中间人攻击是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。HTTPS 使用了 SSL 加密协议,是一种非常安全的机制,目前并没有方法直接对这个协议进行攻击,一般都是在建立 SSL 连接时,拦截客户端的请求,利用中间人获取到 CA证书、非对称加密的公钥、对称加密的密钥;有了这些条件,就可以对请求和响应进行拦截和篡改。本地请求被劫持(如DNS劫持等),所有请求均发送到中间人的服务器。

2024-05-07 10:52:07 756

原创 太强了吧,这居然是19年双非本科开发一年的Android面经总结!开发几年的老程序员自叹不如

关于我整理的一些BAT面试题解析答案,我都放在**【 GitHub 】**了。正文–下面是一些我印象中的面试题:Java1. 反射、注解、泛型、异常了解吗?基本上都会被问到,回答的时候只是回答基本使用是不够的,可以说一下它们在 JVM 里面的实现原理。比如反射的性能损耗在哪,怎么优化?注解的信息存放在哪?注解的两种处理方式(反射和 APT )。泛型擦除怎么理解?泛型的 PECS 原则如何理解(典型的一个例子就是 Collections.copy 方法)?异常的两种方式(Exception 和 Error)分

2024-05-07 09:43:50 953

原创 基于无障碍服务实现自动跳过APP启动页广告

import android.util.Log;import android.view.accessibility.AccessibilityEvent;import android.view.accessibility.AccessibilityNodeInfo;import android.widget.Toast;import java.util.List;/**@Overridepublic void onAccessibilityEvent(AccessibilityEvent event

2024-05-07 04:36:28 723

原创 史上最强整理:多达2987页的Android面试宝典,看完才发现,做Android开发求职也没那么难

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。关于Flutter是不是未来,我没法确定告诉你,我能确定的就是你要去面试高薪岗位,你得掌握这种主流的新技术(大厂最看重的除了基础,技术水平外,就是你的学习能力。

2024-05-07 03:15:43 780

原创 华为手机刷微博体验更好?技术角度的分析和思考(1)

愿你有一天,真爱自己,善待自己。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!rtTime;愿你有一天,真爱自己,善待自己。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

2024-05-07 02:05:00 436

原创 减少代码中该死的-if-else-嵌套,让代码更简洁!(1)

String content;String imagePath;String link;}public interface ShareListener {int STATE_SUCC = 0;int STATE_FAIL = 1;void onCallback(int state, String msg);}好了,然后在定义个分享接口,对每种类型分别进行分享就ok了:public void share (ShareItem item, ShareListener listener) {if (i

2024-05-07 00:43:34 824

原创 全新的Fragment通信方式

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。下面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题全套解析,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,下面只是以图片的形式给大家展示一部分。知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

2024-05-06 23:10:01 1195

原创 作为一个Android程序员,关于音视频开发,这些你确定这些你都懂了吗?

Android学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的 原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。人生不可能一帆风顺,有高峰自然有低谷,要相信,那些打不倒我们的,终将使我们更强大,要做自己的摆渡人。资源持续更新中,欢迎大家一起学习和探讨。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

2024-05-06 21:50:00 988

原创 京东技术中台的Flutter实践之路(2)

编译发布:优化Flutter原有的编译逻辑,管理依赖Flutter原生依赖关联,打包Flutter和原生代码,实现自动化构建发布。资源管理:管理图片资源,将资源转换成Flutter类,便于资源的读取操作,类似Andorid的R类;模版代码生成:减少Flutter的代码编写,自动生成Flutter 组件的框架模板代码,提升代码编写效率;JSON转换:将JSON数据转换成Flutter code,并提供json转Flutter对象的API,减少动手编写Flutter code及解析。

2024-05-06 20:20:34 657

原创 不要放过那个装X的阿里(1)

(一)调整好心态心态是一个人能否成功的关键,如果不调整好自己的心态,是很难静下心来学习的,尤其是现在这么浮躁的社会,大部分的程序员的现状就是三点一线,感觉很累,一些大龄的程序员更多的会感到焦虑,而且随着年龄的增长,这种焦虑感会越来越强烈,那么唯一的解决办法就是调整好自己的心态,要做到自信、年轻、勤奋。这样的调整,一方面对自己学习有帮助,另一方面让自己应对面试更从容,更顺利。(二)时间挤一挤,制定好计划一旦下定决心要提升自己,那么再忙的情况下也要每天挤一挤时间,切记不可“两天打渔三天晒网”。

2024-05-06 18:42:17 922

原创 一位Android开发八年工程师他的技术分享之路

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。面试过程一定要有礼貌!

2024-05-06 16:07:49 916

原创 【干货推荐】Android市场今非昔比,Android开发者该学习哪些东西提高竞争力?

以前安卓开发找工作有多容易?只要了解四大组件、视图、网络请求,你就能拿到一份薪资丰厚的offer;当时,如果你要是精通java基础,知道如何处理OOM,组件生命周期原理,熟悉android源码、架构体系,进阿里腾讯都是很轻松。现在?Android市场确实今非昔比,但不仅是Android,互联网行业都一样。移动端招聘量变少,但中高端的职位空缺还很多,你的技术水平和能力提升就变得更加重要。最近听其他部门的同事说,招一个Java开发岗,收到了200多份简历,老大面都面不过来…这种高强度的竞争,你有信心胜出吗?移动

2024-05-06 14:56:14 855

原创 【Android】快速开发偷懒必备,一句话搞定所有ViewGroup的Adapter

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了7、8年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。不断奔跑,你就知道学习的意义所在!

2024-05-06 13:48:18 716

空空如也

空空如也

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

TA关注的人

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