自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

PdKingLiu

这是一个不该停留太久的地方。

  • 博客(92)
  • 收藏
  • 关注

原创 Android实习面经汇总+总结——百度+字节跳动+创业公司(字节跳动+创业公司offer)

我的一些感悟在做算法题时一定不要慌,尽量先暴力写,写的过程中思考思考怎么优化,最后面试官肯定会问你还有优化的方法没对于不熟悉的领域,不要直接说不会,尽量先扯一扯相关自己了解的,说不定就扯到自己熟悉的领域了对面试官的态度一定要好,根据面试官的性格,适度表现个人性格吧另外,对于复习,一定要扎实,不是说看一两遍写一两遍就ok的,如果拿到自己的文章目录,能做到流畅的将一系列知识讲下来,这样才能保...

2020-11-23 21:12:06 2594 2

原创 TCP可靠传输再回顾

文章目录概述数据校验数据分片回顾滑动窗口超时重传流量控制拥塞控制慢启动拥塞避免快重传快恢复概述总体来说TCP通过以下方式保证数据的可靠传输:确认重传数据校验数据分片和排序流量控制拥塞控制数据校验TCP校验和是一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢...

2019-11-17 18:52:37 511

原创 LeetCode——第163场周赛

文章目录5263. 二维网格迁移5264. 在受污染的二叉树中查找元素5265. 可被三整除的最大和5266. 推箱子5263. 二维网格迁移题目很简单,看下面代码 public List<List<Integer>> shiftGrid(int[][] grid, int k) { List<List<Integer>> list...

2019-11-17 13:38:00 328

原创 操作系统笔记——死锁

文章目录死锁必要条件死锁处理方法鸵鸟策略死锁检测与死锁恢复每种类型一个资源的死锁情况每个类型多个资源的死锁检测死锁恢复死锁预防破坏互斥条件破坏占有和等待条件破坏不可抢占条件破坏环路死锁避免安全状态单个资源的银行家算法多个资源的银行家算法操作系统中的死锁是指多个进程在运行过程中因为争夺资源造成的一种相互等待的情况。死锁必要条件如果一个系统中下面四个条件同时满足,那么会引起引起死锁。互斥:至...

2019-11-12 21:09:58 696

原创 操作系统笔记——进程同步、进程通信

文章目录进程同步临界资源临界区同步和互斥信号量互斥量经典进程同步问题生产者消费者问题读者写者问题进程通信匿名管道通信命名管道通信(FIFO)信号信号量共享存储套接字消息队列进程同步临界资源一次仅允许一个进程使用的资源称为临界资源。临界区对临界资源进行访问的那段代码称为临界区。同步和互斥同步: 多个进程因为合作产生的直接制约关系,使得进程有一定的先后执行关系。互斥: 多个进程在同一时...

2019-11-12 14:00:44 761

原创 操作系统笔记——进程、线程、进程调度

文章目录进程和线程进程线程进程和线程的区别进程状态进程调度算法批处理系统先来先服务短作业优先最短剩余时间优先交互式系统时间片轮转优先级调度多级反馈队列进程和线程进程进程是资源分配的基本单位。进程控制块(PCB)描述进程基本信息和运行状态,创建进程和撤销进程。线程线程是独立调度的基本单位。一个进程可以有多个线程。他们共享进程资源。QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例...

2019-11-11 23:06:40 833

原创 LeetCode——第162场周赛

文章目录5255. 奇数值单元格的数目5256. 重构 2 行二进制矩阵5257. 统计封闭岛屿的数目5258. 得分最高的单词集合今天周赛时间没赶上,有高中学生参观实验室,我代表安卓组给他们介绍我们的项目。忙完都11:40了,原本都不想做了,一看第一题很简单,然后一做就停不下来了···5255. 奇数值单元格的数目5255. 奇数值单元格的数目 显示英文描述 用户通过次数948...

2019-11-10 16:22:30 631 2

原创 热更新原理总结

文章目录Instant Run概述Gradle TransformInstant Run修复原理ClassLoader 修复代码Instant Run概述Instant Run 是 Android Studio2.0 之后新增的一个运行机制,能够减少开发人员第二次及以后的构建时间。在没有Instant run之前,编译部署应用程序的流程如下图:传统的编译部署,需要重新安装APP和重启 A...

2019-11-09 22:04:43 2058

原创 Android个人项目插件化总结——插件apk资源加载

文章目录为什么加载不了资源如何加载资源为什么加载不了资源我们知道获取资源时实际都是使用了Resource。mResource这个变量在Activity父类ContextThemeWrapper中。ContextThemeWrapper的mResource的获得是通过Context的实现类得到的。Context实现类ContextImpl中获得Resources 是通过 Resource...

2019-11-09 16:20:05 575

原创 Android个人项目插件化总结——方式二(Hook Instrumentation)

文章目录概述代码补充概述第二种方式思路非常清晰,直接Hook Instrumentation。由activity启动流程知道,startActivity会交给Activity的mInstrumentation.execStartActivity()来处理。最终会调用ActivityThread里面的performLaunchActivity()方法。performLaunchActivit...

2019-11-09 12:33:09 1004 5

原创 Android个人项目插件化总结——方式一(Hook IActivityManager)

文章目录整体流程实现整体流程本篇主要基于Hook代理对象IActivityManager,Activity启动流程不清楚的可以看看我分析Activity流程的文章。public ActivityResult execStartActivity( Context who, IBinder contextThread, IBinder token, Activity ta...

2019-11-08 12:10:43 856 7

原创 Java虚拟机学习笔记(六)——GC机制补充(安全点、OopMap、触发条件、收集器)

文章目录GC触发条件OopMap安全点新生代收集器Serial(串行)收集器ParNew 收集器Parallel Scavenge 收集器老年代收集器Serial Old收集器Parallel Old收集器CMS收集器G1收集器GC触发条件Minor GC触发条件当Eden区满时,触发Minor GC。Full GC触发条件调用System.gc时,系统建议执行Full GC,但是...

2019-11-08 00:43:01 965

原创 Activity启动流程总结

学习插件化首先要清楚Activity启动流程。此篇文章对Activity整体的启动流程做一个总结。SDK版本基于25,项目的插件化适配也只做了API 25的。通常使用startActivity来启动一个Activity@Overridepublic void startActivity(Intent intent) { this.startActivity(intent, null)...

2019-11-08 00:39:23 569

原创 关于AIDL和Binder

文章目录BinderAIDL机制使用服务端客户端继承Binder实现继承间通信服务端客户端AIDL是一种跨进程通信的方式,通信基于Binder。直接继承Binder也可以实现跨进程通信。BinderBinder是一个类,它实现了IBinder接口,而IBinder接口定义了与远程对象的交互协议。通常在进行跨进程通信时,不需要实现IBinder接口,直接从Binder派生即可。除了实现IB...

2019-11-07 21:56:21 576

原创 Android四大组件之Service、ContentProvider、BroadcastReceiver

文章目录Service生命周期IntentService关于startService和bindServiceAndroidManifest.xml本地Service和远程Service关于bindService的特点Content ProviderBroadcast Receiver分类注册ServiceService 是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。生命周期...

2019-11-06 15:01:03 796

原创 Android——ANR

文章目录概述场景如何避免概述ANR(Application Not Responding)是指应用无响应。Android系统对于一些事件都在在一定时间内完成,如果超过预订时间没有得到相应就会在成ANR。ANR机制是对应用程序主线程的限制,要求主线程在限定的时间内处理完一些最常见的操作(启动服务、处理广播、处理输入), 如果处理超时,则认为主线程已经失去了响应其他操作的能力。场景导致AN...

2019-11-05 11:31:09 488

原创 Java知识回顾(二)

文章目录泛型是什么泛型如何工作泛型中的限定通配符和非限定通配符编写泛型方法异常异常关键字异常的层次结构throw和throwsOutOfMemoryError注解注解分类反射动态代理泛型是什么集合存储对象并在使用先进行类型转换很不方便,泛型是为了那种情况的发生。他提供了编译器的类型安全,确保你只能把正确类型的对象放入集合中,避免了在运行时出现ClassCastException。泛型如何工作...

2019-11-05 09:32:05 479

原创 Java知识回顾(一)

文章目录面向对象和面向过程的区别Java语言有哪些特点JVM JDK 和 JREJava和C++的区别字符型常量和字符串常量的区别构造器是否可以被override重载和重写的区别封装 继承 多态String StringBuffer StringBuilder自动装箱与拆箱接口和抽象类的区别== 与 equalshashCode 与 equals线程的基本状态final 关键字Java异常有些字段...

2019-11-04 22:37:39 473

原创 LeetCode——第161场周赛

文章目录5247. 交换字符使得字符串相同5248. 统计「优美子数组」5249. 移除无效的括号5250. 检查「好数组」5247. 交换字符使得字符串相同5247. 交换字符使得字符串相同 用户通过次数583 用户尝试次数721 通过次数597 提交次数1363 题目难度Easy 有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 "x" 和 "y",你需...

2019-11-03 14:03:09 854

原创 我的LeetCode

文章目录关于我的LeetCodeLeetCode 个人主页LeetCode 周赛的代码LeetCode 题目的代码笔试题的代码数据结构与算法相关的代码其他来源的一些题目关于我的LeetCode平时也挺喜欢做题,但是做题得牺牲不少时间,所以经常学习其他内容一忙就把做题给忘求了。周赛基本上每周都会参加,水平一般,到点时能做三个,如果题难的话也就做两个。第四题也会写写,但在规定时间内是做不出来了,...

2019-11-01 14:02:36 511

原创 Android——Fragment生命周期总结

文章目录概述各个生命周期概述Fragment的主要功能就是创建一个View,并且有一个生命周期来管理这个View。Fragment的生命周期和Activity的生命周期类似,都有一些回调方法。各个生命周期左侧是Activity的生命周期,右侧对应这个状态下执行Fragment的生命周期方法。Fragment有的生命周期与Activity生命周期名字都是一样的,对应的功能也类似。只不...

2019-11-01 12:34:37 526

原创 Android——Activity启动模式总结

文章目录概述standardsingleTopsingleTasksingleInstance概述在默认情况下,当我们多次启动同一个Activity 的时候,系统会创建多个实例并把它们一一放入任务栈中, 当我们单击back键,会发现这些Activity会一一回退。我们可能会发现一个问题多次启动同一个Activity,系统会重复创建多个实例。Android在设计的时候不可能不考虑到这个问题,...

2019-11-01 11:30:25 387 1

原创 Android——Activity生命周期总结

文章目录各个生命周期情景分析两个问题异常情况下的周期情况1情况2各个生命周期onCreate——表示Activity正在创建,是生命周期的第一个方法,我们可以在这个方法中做一些初始化工作。onRestart——表示Activity正在重新启动,一般情况下,当当前的Activity从不可见变为可见状态时,onRestart就会被调用。这种行为一般是用户行为所导致的,比如用户点击home键切换...

2019-10-31 22:43:55 454

原创 Android 屏幕刷新原理笔记

文章目录概述源码ViewRootImpl 与 DecorView 的绑定ViewRootImpl # scheduleTraversalsChoreographer过滤一帧内重复的刷新请求同步屏障消息postSyncBarrier()刷新控制者 ViewRootImpl总结常见问题概述屏幕刷新包括三个步骤:CPU计算屏幕数据,,把计算好数据交给GPU。GPU会对图形数据进行渲染,渲染好后...

2019-10-30 13:25:42 643

原创 WebSocket——OKHttp实现

文章目录WebSocket协议概述OKHttp实现连接握手数据发送数据接收连接保活连接关闭生命周期概括WebSocket协议概述Webscoket是Web浏览器和服务器之间的一种全双工通信协议。比如说,服务器可以在任意时刻发送消息给浏览器。WebSocket并不是全新的协议,而是利用了HTTP协议来建立连接。WebSocket连接由浏览器发起,请求协议是一个标准的HTTP请求,...

2019-10-29 21:09:42 1395 1

原创 OKHttp——拦截器源码分析整理

文章目录getResponseWithInterceptorChain()Interceptor责任链RetryAndFollowUpInterceptorBridgeInterceptorCacheInterceptorConnectInterceptorCallServerInterceptor总结getResponseWithInterceptorChain() Response ge...

2019-10-29 15:44:36 465

原创 Android——AsyncTask源码分析整理

文章目录概述源码3.0前的AsyncTask3.0后的AsyncTask小结概述AsyncTask类内部封装了Handler和线程池。可以简化其他线程对UI的操作。AsyncTask是一个抽象类,我们需要创建子类去继承它,并且重组一些方法。参数Params:指定传给任务执行时的参数的类型Progress:指定后台任务执行时将任务进度返回给UI线程的参数类型Result:指...

2019-10-28 23:04:50 262

原创 Android——内存泄漏及OOM整理

文章目录内存泄漏静态变量引用Activitystatic间接修饰Activity单例引用Context匿名内部类执行耗时任务非静态内部类Handler引起的内存泄漏资源对象没有关闭OOM内存泄漏静态变量引用Activity静态变量引用Activty对象时,会导致Activty对象所占内存内漏。原因:静态变量是驻扎在JVM的方法区,因此,静态变量引用的对象是不会被GC回收的,因为它们所引用的...

2019-10-28 22:02:35 377

原创 ARouter——原理分析整理

文章目录单向依赖的module互不依赖的moduleARouter概述apt & javapoet路由映射文件生成原理定义注解使用注解注解处理器使用javapoet生成java类路由跳转单向依赖的module组件化中两个单向依赖的module之间需要互相启动对方的Activity时,因为没有相互引用,startActivity()是实现不了的,必须需要一个协定的通信方式,此时类似ARo...

2019-10-26 23:01:22 2868

原创 Glide——缓存分析整理

文章目录LruCache概述原理DiskLruCache概述Glide缓存概述资源分类缓存设计Glide 缓存源码分析1、生成key2、创建缓存对象LruResourceCache3、获取内存缓存中的图片4、开启加载图片线程5、获取磁盘缓存6、写入磁盘7、写入内存缓存写入弱引用缓存写入LruCacheLruCache概述LruCache是Android 3.1所提供的一个缓存类,所以在And...

2019-10-26 17:15:54 1514 1

原创 LeakCanary原理分析整理

文章目录Reference概述ReferenceReferenceQueueLeakCanary原理检测泄漏的步骤LeakCanary源码第一步——监听第二步——检测泄漏(核心)第三步——泄漏分析Reference概述ReferenceReference主要负责内存的一个状态,Reference类把内存分为四种状态:Active:内存一开始分配的都是ActivePending:快要放进...

2019-10-25 21:38:49 592

原创 设计模式——行为型模式

文章目录设计模式——行为型模式策略模式简单实现使用场景和优缺点观察者模式简单实现使用场景及优缺点责任链模式设计模式——行为型模式策略模式当我们写代码时总会遇到一种情况,就是我们会有很多的选择,由此衍生出很多的if…else,或者 case。如果每个条件语句中包含了一个简单的逻辑,那还比较容易处理;但如果在一个条件语句中又包含了多个条件语句,就会使得代码变得臃肿,维护的成本也会加大,这显然违背...

2019-10-24 23:48:14 489

原创 设计模式——结构型模式

文章目录设计模式——结构型设计模式代理模式简单实现动态代理实现类型和优点装饰模式简单实现使用场景及优缺点外观模式简单实现使用场景及优缺点享元模式简单实现使用场景设计模式——结构型设计模式代理模式定义:为其他对象提供一种代理以控制对这个对象的访问简单实现我多年没有回过哈尔滨了,很是想念哈尔滨秋林红肠的味道。但是本人工作一直很忙抽不开身,不能够亲自回哈尔滨购买,于是就托在哈尔滨的朋友帮我购买...

2019-10-24 21:06:05 445

原创 设计模式——创建型模式

文章目录设计模式——创建型模式单例模式设计模式——创建型模式单例模式

2019-10-24 14:40:40 387

原创 Android——自定义View

文章目录Android之自定义View继承特定View控件继承View处理padding处理wrap_content属性自定义属性View滑动冲突常见的滑动冲突处理规则Android之自定义View继承特定View控件这种自定义 View 在系统控件的基础上进行拓展,一般是添加新的功能或者修改显示的效果,一般情况下在onDraw()方法中进行处理。我们写一个自定义View,继承自TextV...

2019-10-21 18:37:16 258

原创 Android——View的工作流程

文章目录View的工作流程View的工作流程入口DecorView被加载到Window中MeasureSpecView的measure流程View的measure流程ViewGroup的measure流程View的layout流程View的draw流程步骤1:绘制背景步骤3:绘制View的内容步骤4:绘制子View步骤6:绘制装饰View的工作流程View的工作流程,指的就是measure、l...

2019-10-20 20:21:24 505

原创 Android——View的事件分发

文章目录View的事件分发机制解析Activity构成源码解析View的事件分发机制概述分发机制View的事件分发机制参考《Android进阶之光》解析Activity构成点击事件用MotionEvent表示。当一个点击事件产生后,事件最先传递个Activity。首先看一下setContentView()方法。调用了getWindow()对应的方法在Activity的at...

2019-10-20 17:16:00 364

原创 Java虚拟机学习笔记(五)——委派模型、ClassLoader

文章目录类加载器类加载器总结双亲委派模型双亲委派模型实现源码分析双亲委派模型的好处自定义类加载器补充:Android中的ClassLoaderAndroid中的dexBaseDexClassLoader 及其子类PathClassLoaderDexClassLoaderBaseDexClassLoader类加载器JVM 中内置了三个重要的 ClassLoader,除了 BootstrapCla...

2019-10-19 10:22:04 275

原创 Java虚拟机学习笔记(四)——类加载

文章目录类加载过程概述加载连接验证准备解析初始化类加载过程概述Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?系统加载 Class 类型的文件主要三步:加载 => 连接 => 初始化。连接过程又可分为三步:验证 => 准备 => 解析。加载类加载过程的第一步,主要完成下面3件事情:通过全类名获取定义此类的...

2019-10-17 20:22:26 354

原创 Java——锁相关整理

文章目录悲观锁与乐观锁乐观锁常见的两种实现方式版本号机制CAS自旋锁synchronized对于synchronized 关键字的了解synchronized的使用synchronized底层原理通过代码块修饰方法synchronized和ReentrantLock 的区别volatileJava内存模型原子性、可见性和有序性悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展...

2019-10-17 16:08:15 475

空空如也

空空如也

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

TA关注的人

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