即使在dd命令中输错哪怕一个字符,都会立即永久地清除整个驱动器的宝贵数据。是的,确保输入无误很重要。 切记:在按下回车键调用dd之前,务必要考虑清楚!...你已插入了空的驱动器(理想情况下容量与/dev/sda系统一样大)。...你还可以专注于驱动器中的单个分区。下一个例子执行该操作,还使用bs设置一次复制的字节数(本例中是4096个字节)。...在本文中,if=对应你想要恢复的镜像,of=对应你想要写入镜像的目标驱动器: # dd if=sdadisk.img of=/dev/sdb 还可以在一个命令中同时执行创建操作和复制操作。...他曾告诉我,他监管的每个大使馆都配有政府发放的一把锤子。为什么?万一大使馆遇到什么危险,可以使用这把锤子砸烂所有硬盘。 那为什么不删除数据呢?你不是在开玩笑吧?
整体包括Java、Android、算法、网络等,并且我也在相应知识点下推荐了与该知识点相关的书籍与博客。希望大家阅读之后,能帮助大家完善与整理自己的知识体系。...》 第二章 IPC基础概念介绍 IPC相关 在Android中什么样的情况下会使用多进程模式,如何开启多进程 Android为什么采用Binder做为IPC机制 IPC常用方式 使用Bundle、使用文件共享...OkHttp相关 OkHttp的优点 OkHttp执行请求的整个流程 OkHttp中的拦截器 OkHttp中的同步请求与异步请求的理解及其源码 OkHttp中涉及到的设计模式 OkHttp底层网络请求实现...RxJava实际开发中的使用:网络请求轮询、网络请求嵌套回调、从磁盘 / 内存缓存中 获取缓存数据等 推荐阅读: Android Rxjava:这是一篇 清晰 & 易懂的Rxjava 入门教程 Glide...(Android移动架构师七大专题学习资源) 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO Android高级UI
3. glide的缓存策略 --> 内存缓存(正在使用的用弱引用,不在使用的用LRUCache)+磁盘缓存(可设置缓存类型) 3. 项目相关 1. 项目中的亮点和难点?工作中对自己感觉提高最大的?...部分面试题知识点总结 1.性能优化相关例子: Android性能优化之UI卡顿优化实例分析 2.设计模式相关:利用设计模式封装网络请求框架 , Retrofit中的设计模式 3.计算机网络https相关...无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这份资料中有所一些收获。...(Android移动架构师七大专题学习资源) 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO Android高级UI...与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化 解读开源框架设计思想:
IO相关 IO相关面试问题-Socket IO相关面试问题-BIO/NIO Android基础知识点 Activity相关 典型状况下的生命周期 异常情况下的生命周期 异常情况下的数据保存 各种情况下跳转到某个...FragmentPagerAdapter与FragmentStatePagerAdapter的区别 为什么不建议直接通过使用new Fragment的方式传入数据 序列化相关 序列化与反序列化的定义及区别...Serializable中serialVersionUID及transient关键字的作用 序列化:Parcelable和Serializable差异 IPC相关 在Android中什么样的情况下会使用多进程模式...OkHttp中的拦截器 OkHttp中的同步请求与异步请求的理解及其源码 OkHttp中涉及到的设计模式 OkHttp底层网络请求实现,socket还是URLConnection Retrofit相关...RxJava实际开发中的使用:网络请求轮询、网络请求嵌套回调、从磁盘 / 内存缓存中 获取缓存数据等 Glide相关 Glide的执行流程 Glide的缓存机制 Glide图片转换 Glide带进度的图片加载功能
CacheInterceptor,这里主要是处理cache相关处理,会根据OkHttpClient对象的配置以及缓存策略对请求值进行缓存,而且如果本地有了可⽤的Cache,就可以在没有网络交互的情况下就返回缓存结果...这个位置添加的拦截器可以看到请求和响应的数据了,所以可以做一些网络调试。...存储和管理界面相关的数据。 ViewModel层的根本职责,就是负责维护界面上UI的状态,其实就是维护对应的数据,因为数据会最终体现到UI界面上。...系统学习方向: 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO Android高级UI与FrameWork源码:高级...UI晋升+Framework内核解析+Android组件内核+数据持久化 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化 解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计
()创建并开启拦截器链 Okhttp中的拦截器,默认的分为5种 RetryAndFollowUpInterceptor 做网络失败重连,但是并不是所有的请求都需要重连,根据响应码。...发起真正的网络请求,解析返回的数据 http写入网络IO流,从网络IO流中读取返回给客户端的数据。...通过网络请求适配器将网络请求对象进行平台适配 通过网络请求执行器,发送网络请求(call) 通过数据解析器解析数据 通过回调执行器,切换线程 用户在主线程处理返回结果 代理 为其他对象提供一种代理,用以控制对这个对象的访问...系统学习方向: 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO Android高级UI与FrameWork源码:高级...UI晋升+Framework内核解析+Android组件内核+数据持久化 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化 解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计
调用类的方法」 「INVOKESPECIAL 调用父类」 「INVOKESTATIC 调用静态方法」 数据结构 聊聊红黑树 聊聊哈希桶 网络 https 流程以及原理 tcp 三次握手 gradle相关...当然这边更多是想问安卓虚拟机相关的,反正答的稀烂 okhttp 的拦截器机制 如果让你监控网络请求的耗时你会怎么写 把责任链说了,写了关键字得分了,面试官也没继续往下问,其实还是可以聊聊dispatcher...无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这份资料中有所一些收获。...(Android移动架构师七大专题学习资源) 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO Android高级UI...与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化 解读开源框架设计思想:
我们知道在使用okhttp的时候可以使用同步请求,也可以使用异步请求,所以肯定不同的请求,在分发的时候有不同的处理。...okhttp帮我们把简单的参数输入,然后通过一系列的添加封装,然后变成一个完整的网络请求包出去,然后我们在使用okhttp的时候,拿到返回的数据也已经是我们可以直接用的对象,说明接受的时候,已经帮我们把拿到的返回网络包...所以在一系列帮我们发送的时候添加参数变成完整网络请求包,收到时候帮我们解析返回请求包的过程,是Okhttp的一个个拦截器们所处理,它拦截到我们的数据,然后进行处理,比如添加一些数据,变成完整的网络请求包等操作...这里我们懂了以后,我们再去看Okhttp前面提到的拦截器添加,拦截链的相关代码,是不是简单的一比,它的链接链的操作跟我们的基本架构一致,然后各自的拦截器无非就是处理各自的逻辑,对参数进行更改,发起请求等....build(); 复制代码 我们知道网络请求中间一定要经过一系列的拦截器,我们也可以自己写拦截器,然后对里面的参数做处理,比如我们对Request在拦截器中做某个写参数变更,然后再交给下一个拦截器。
APP项目上线后,在用户真实使用中遇到一些各种各样的问题,有些问题处理时也比较棘手(如弱网情况),这次主要复盘APP在实际场景中的弱网(或网络不稳定)相关的问题。...APP时会有功能异常,表现为: 拍照录音相关功能,图片/录音等文件上传失败 APP中定时上传、同步任务请求,弱网情况下接口超时,页面操作流程走一波后弹出一堆"网络异常" 部分页面数据在操作后无法正常显示...弱网情况下APP渲染引擎执行,JS引擎在执行的等待请求响应,JS控制显示数据的代码还未执行,长时间(部分页面超过60s)等待后数据可以正常显示 在Charles工具中手动设置离线、有网、弱网,在三种网络情况切换下..."网络异常"提示弹出, "网络异常"由前端的请求拦截器中控制弹出 离线数据操作,有网后数据同步,APP 中使用 mmkv 存储操作数据,有网后根据操作步骤,按顺序调用后端对应的操作接口,后端接口实现有一部分走的队列...,虽然有相关技术负责人和架构组,项目从架构搭建进入开发阶段后就不参与了 (作为前端开发开发人员,没有话语权,日常工作最心塞的事情之一) 测试,UI是单独的部门不按业务线划分,属于公共资源,有需要调配形式
AMS在Android起到什么作用? AMS有哪些应用场景?我们是如何应用AMS核心原理的? WMS的工作原理说说? JVM的核心原理你懂多少? 我们的代码是如何在栈区中运行的?...对于一些不知道学习什么,没有一个系统路线的程序员,这里给大家提供一个大概的思路: 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理...+高效IO Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化...1.2020大厂面试高频知识点 图片 网络和安全机制 数据库 插件化、模块化、组件化、热修复、增量更新、Gradle 架构设计和设计模式 性能优化 Android Framework Android优秀三方库源码...比如,你只是使用了网络库 OkHttp,你在简历上面写熟悉/掌握 Okhttp。恭喜你,兄弟,你给自己埋下了一颗定时炸弹。
有些情况下,可以用硬件加速方式来提供流畅度。 耗电优化 在移动设备中,电池的重要性不言而喻,没有电什么都干不成。...返回数据的body也可以做gzip压缩,body数据体积可以缩小到原来的30%左右。 异常拦截优化 在获取数据的流程中,访问接口和解析数据时都有可能会出错,我们可以通过拦截器在这两层拦截错误。...在解析数据时,我们设置一个拦截器,判断Result里面的code是否为成功,如果不成功,则要根据与服务器约定好的错误码来抛出对应的异常。...APK瘦身 应用安装包大小对应用使用没有影响,但应用的安装包越大,用户下载的门槛越高,特别是在移动网络情况下,用户在下载应用时,对安装包大小的要求更高,因此,减小安装包大小可以让更多用户愿意下载和体验产品...Dalvik 字节码程序,让 Dalvik 虚拟机可执行,一般情况下,Android 应用在打包时通过Android SDK 中的 dx 工具将 Java 字节码转换为 Dalvik 字节码。
由于网络拦截器处于倒数第二层,在 RetryAndFollowUpInterceptor 失败或者 CacheInterceptor 返回缓存的情况下,网络拦截器无法被执行。...--- CallServerInterceptor 链中的最后一个拦截器,也即与服务器进行通信的拦截器,利用 HttpCodec 进行数据请求、响应数据的读写。...在具体的请求过程中,网络请求依次会经过下列拦截器组成的责任链,最后发送到服务器。...例如使用网络拦截器添加请求头、修改请求内容、检查响应码等。 在相应的执行顺序上,网络拦截器是 先进先出(FIFO) ,应用拦截器是 先进后出(FILO) 的方式执行。...结语 本篇中,我们从网络库的迭代历史,一直到 OkHttp 的使用方式、设计思想、源码探索,最后又聊了聊常见的一些问题,从而较系统的了解了 OkHttp 的方方面面,也解释了 OkHttp应用层 的相关问题
native code的部分,大多数情况下只需要支持armabi与x86的架构即可。如果非必须,可以考虑拿掉x86的部分。 资源 使用Lint工具查找没有使用到的资源。...1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 2、设置Activity的android:configChanges...15、Android开发中何时使用多进程?使用多进程的好处是什么? 要想知道如何使用多进程,先要知道Android里的多进程概念。一般情况下,一个应用程序就是一个进程,这个进程名称就是应用程序包名。...UI线程尽量只做跟UI相关的工作,耗时的工作(数据库操作,I/O,连接网络或者其他可能阻碍UI线程的操作)放入单独的线程处理,尽量用Handler来处理UI thread和thread之间的交互。...+反射与类加载+动态代理+高效IO Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化 360°全方面性能调优:设计思想与代码质量优化
讲下OkHttp的实现。拦截器的顺序,网络拦截器和普通拦截器有什么区别?它的线程池是怎样的?如何管理的? glide的三级缓存如何做的? rxjava的原理。rxjava的线程切换如何实现的?...3、Android性能优化 启动速度优化。冷启动、温启动、热启动了解么。 内存优化 卡顿优化 网络优化 数据库优化 内存泄漏优化 包体积优化 4、http相关 描述一个完整的网络请求流程。...系统学习方向: 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO Android高级UI与FrameWork源码:高级...UI晋升+Framework内核解析+Android组件内核+数据持久化 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化 解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计...+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack NDK模块开发:NDK基础知识体系+底层图片处理+音视频开发 微信小程序:小程序介绍
前言 OkHttp可以说是Android开发中最常见的网络请求框架,OkHttp使用方便,扩展性强,功能强大,OKHttp源码与原理也是面试中的常客 但是OKHttp的源码内容比较多,想要学习它的源码往往千头万绪...所有网络请求的逻辑大部分集中在拦截器中,但是在进入拦截器之前还需要依靠分发器来调配请求任务。...64,同时同一Host的请求不超过5个,则会添加到正在执行队列,同时提交给线程池。...每个任务完成后,都会调用分发器的finished方法,这里面会取出等待队列中的任务继续执行 3. OKHttp拦截器是怎样工作的?...最后,从使用场景看,应用拦截器因为只会调用一次,通常用于统计客户端的网络请求发起情况;而网络拦截器一次调用代表了一定会发起一次网络通信,因此通常可用于统计网络链路上传输的数据。 5.
引言 在 Android 开发的世界中,有一些组件,无论应用层技术再怎么迭代,作为基础支持,它们依然在那里。 比如当我们提到网络库时,总会下意识想到一个名字,即 OkHttp 。...由于网络拦截器处于倒数第二层,在 RetryAndFollowUpInterceptor 失败或者 CacheInterceptor 返回缓存的情况下,网络拦截器无法被执行。...---- CallServerInterceptor 链中的最后一个拦截器,也即与服务器进行通信的拦截器,利用 HttpCodec 进行数据请求、响应数据的读写。...例如使用网络拦截器添加请求头、修改请求内容、检查响应码等。 在相应的执行顺序上,网络拦截器是 先进先出(FIFO) ,应用拦截器是 先进后出(FILO) 的方式执行。...结语 本篇中,我们从网络库的迭代历史,一直到 OkHttp 的使用方式、设计思想、源码探索,最后又聊了聊常见的一些问题,从而较系统的了解了 OkHttp 的方方面面,也解释了 OkHttp应用层 的相关问题
它的使用场景包括但不限于: 单一活动多Fragment架构: 通过将所有Fragment集中在一个活动中,简化了导航的管理和传递数据的复杂性。...出发点: 在解答这个问题时,不仅要强调ViewModel的用途,还要深入讨论其在Android架构中的角色和优势。...参考简答: ViewModel的作用在于解决Android应用中活动和碎片(Fragment)的生命周期问题。它允许数据在屏幕旋转等配置更改时存活,并确保数据在不同组件之间共享而不丢失。...主要优势包括: 生命周期感知:ViewModel能够感知与UI相关的生命周期变化,确保数据存活时间比短暂的UI组件更长。...问题: 请对比LiveData和Observable,分析它们在Android应用中的应用场景,以及在何种情况下选择使用哪种。
UI想怎么处理数据都由UI自己决定,ViewModel不涉及任何和UI相关的事,也不持有UI控件的引用。...更新UI 在MVVM中,数据发生变化后,我们在工作线程直接修改(在数据是线程安全的情况下)ViewModel的数据即可,不用再考虑要切到主线程更新UI了,这些事情相关框架都帮我们做了。...在MVVM中数据是直接绑定到UI控件上的(部分数据是可以直接反映出UI上的内容),那么我们就可以直接通过修改绑定的数据源来间接做一些Android UI上的测试。...View View层做的就是和UI相关的工作,我们只在XML、Activity和Fragment写View层的代码,View层不做和业务相关的事,也就是我们在Activity不写业务逻辑和业务数据相关的代码...ViewModel不处理和UI相关的事也不操作控件,更不更新UI,那为什么要有Context呢?原因主要有以下两点: 通过图1中,然后得到一个Observable,其实这就是网络请求部分。
本面试题集只应对于Android求职者,有7个模块: 1.Java部分 2.Android部分 3.数据结构与算法部分 4.常用的开源库部分 5.计算机网络认识 BAT面试题详细答案解析: 一、Java...(校招&实习) 5.能否给我说说Android中至少3个用到设计模式的栗子?(校招&实习) JVM相关 1.什么是class文件? 2.Java代码执行流程? 3.Java内存结构 & 内存模型。...说给我听听 11.什么情况下Activity不走onDestory? 12.什么情况下Activity会单独执行onPause?...4.简述Android中的加固和使用平台? 5.谈谈你对Apk瘦身的经验? 6.为什么子线程不能更新UI? 7.你知道如何定位内存泄漏吗?...给我谈谈它 8.OkHttp的应用拦截器和网络拦截器是什么?分别说说它们的作用 9.OkHttp如何实现WebSocket? 10.Retrofit网络请求层用的什么?
这时,View的引用可能会被破坏,也可能是一个不再可见的旧Activity,产生内存泄漏,并可能导致崩溃。 ❌ 避免在ViewModels中对View进行引用。...ViewModel在配置变化时被持久化,所以当重新请求发生时,不需要重新查询外部数据源(如数据库或网络)。 当长期运行的操作结束时,ViewModel中的观察变量会被更新。数据是否被观察并不重要。...远程:网络或云 本地:数据库或文件 内存中的缓存 在你的应用程序中设置一个数据层是个好主意,完全不知道你的表现层。让缓存和数据库与网络保持同步的算法并非易事。...ViewModels暴露了数据,但事件呢?例如,导航事件或显示Snackbar信息是只应执行一次的动作。 事件的概念与LiveData存储和恢复数据的方式并不完全相符。...Leaking ViewModels 反应式范式在Android中运行良好,因为它允许在UI和你的应用程序的其他层之间建立一个方便的连接。
领取专属 10元无门槛券
手把手带您无忧上云