摘要:在上一次【https://www.cnblogs.com/webor2006/p/9096412.html】对okhttp的拦截器有了一个初步的认识,接下来则对具体的拦截器一个个进行了解。 RetryAndFollowUpInterceptor: 按照添加拦截器的顺序来分析,首当其冲的就是这个重试拦
阅读全文
摘要:在上一次【https://i.cnblogs.com/posts?categoryid=1154466】分析自定义类加载器的核心方法中还差一个,如下: 所以点进去瞅一下官网的说明: 下面仔细读一下这个方法的javadoc: 这个findClass()也就是咱们在自定义类加载器时所覆写的。 如下: 另
阅读全文
摘要:在上次【https://www.cnblogs.com/webor2006/p/9095985.html】自定义了第一个类加载器,回顾一下: 其中涉及到ClassLoader的三个比较重要的方法,如标红处,所以这里对其进行进一步了解: findClass(): 如源码实现: 所以说此方法在自定义类加
阅读全文
摘要:拦截器流程: 简单回顾同步 / 异步: 同步请求就是执行请求的操作是阻塞式,直到HTTP响应返回。 异步请求就类似于非阻塞式的请求,它的执行结果一般都是通过接口回调的方式告知调用者。 okHttp拦截器: 来自官网的解释:拦截器是OkHttp中提供一种强大的机制,它可以实现网络监听、请求以及响应重写
阅读全文
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9061868.html】已经阅读了ClassLoader类的官方doc,不过只阅读了一部分,这次继续往下去读: 上面这句话是非常之重要,需要好好读一读。 至此!一字不落的将ClassLoader的官方说明给看完了,里
阅读全文
摘要:在之前已经对okhttp的同步和异步请求的流程进行了详细的分析,其中任务调度是由dispatcher来实现的,非常重要,所以这次专门来对它进行一个了解,带着问题去进行探究: Q1:okhttp如何实现同步异步请求? 发送的同步 / 异步请求都会在dispatcher中管理状态。 Q2:到底什么是di
阅读全文
摘要:在上一次【http://www.cnblogs.com/webor2006/p/8023967.html】中对同步请求进行了详细分析,这次来分析一下异步请求,而关于异步请求和同步请求其使用方式基本上差不多,下面来回顾一下: 其异步请求的步骤如下: 1、创建一个OkHttpClient对象。【跟同步请
阅读全文
摘要:在之前已经对类加载器做了不少实验了,这次主要是来分析一下ClassLoader的源码,当然主要是先从理解官方给它的注释开始,为之后自定义类加载器打好坚石的基础,下面开始: 而从类的层次结构来看也能感受到,如下: 其中该类的javadoc篇幅比较长,但是这文档是最据有权威性的,逐字逐句的去阅读它有助于
阅读全文
摘要:拋出synchronized问题: 对于一个方法上了同锁如果被一个线程占有了,而假如该线程长时间工作,那其它线程不就只能傻傻的等着,而且是无限的等这线程工作完成了才能执行自己的任务,这里来演示一下这种场景: 上面代码就是开启了两个线程,执行顺序有先后,分别执行这个同步方法,看下结果: 对于线程的中止
阅读全文
摘要:先来看一下最终要实验的效果: 是不是跟国外的一款Path的菜单效果类似,这里的动画采用补间动画去实现,正而操练一下补间动画。 布局和子视图的测量处理: 新建一自定义View继承ViewGroup: 然后在布局中进行声明: 然后在ViewGroup中需要准备子菜单元素,这里直接在布局文件中的ArcMe
阅读全文
摘要:在之前【http://www.cnblogs.com/webor2006/p/8905978.html】理论上的介绍了一下关于类加载的一个层次体系,回顾一下: 那如何来验证上图的这种关系呢?下面用代码来验证,如下: 实验一: 那先来看一下这个方法的一个官方说明: 关于这句话的含义其实可以从如下图中可
阅读全文
摘要:之前已经对类初始化相关的东东进行了非常细致的学习,另外也对类加载器进行了初始的了解,其中对于类的主动方式会有七种,这里再来回顾一下: 这次做一些实验来进一步巩固关于类初始化相关的知识点,下面开始: 实验一: 为什么?如果彻底搞清楚了之前关于类初始化的知识点,那这个不难解释,原因是由于:FinalTe
阅读全文
摘要:基于上一次【http://www.cnblogs.com/webor2006/p/8909558.html】学习的多个生产者与多个消费者模型,此次用另外一个案例来进一步巩固线程之间的调度处理,这里还是以之前【http://www.cnblogs.com/webor2006/p/7895410.htm
阅读全文
摘要:理论了解: 关于类加载器的双亲委托机制基本上都听说过,面试时可能偶尔也会被问到,但是可能都是网上去找了一个理论性的答案临时了解了一下,并未对它到底是个什么样的机制有深入的了解,所以接下来准备深入了解它,在了解之前当然得有理论做为支撑。 在之前【http://www.cnblogs.com/webor
阅读全文
摘要:java网络编译: 基础知识:①、ip地址和端口号:ip地址是用来识别网络中的一个实体,而这个实体可以理解为一个主机,而端口号则是用来区分具体的通讯程序的。②、tcp / udp协议:tcp是一个可靠数据传输:http和ftp都是采用的它;而udp是一个无连接的协议。如qq聊天。③、URL:统一资源
阅读全文
摘要:butterknife使用简介: 它的出现主要是为了解决咱们在android开发中会写大量的findViewById()、setOnClickListener()这样的索然无味的代码,其实它就是一个依托Java的注解机制来实现辅助代码生成的框架,下面来看一下它的简单使用: 1、绑定一个View: 相
阅读全文
摘要:retrofit使用简介: 在retrofit中通过一个接口作为Http请求的api接口。注意:@GET("url")中的url只是一个路径,不包含主机号的。 创建一个retrofit实例。 调用api接口。 retrofit源码剖析: 首先通过Builder模式来创建Retrofit对象,如下:
阅读全文
摘要:OkHttp使用简介: ①、准备OkHttpClient对象: 一般app中使用网络可以全部用它,可以将它弄为全局变量,这样就可以共用它的缓存和线程池了。 ②、准备Request对象: 很显然它是采用Builder模式来构造成,它封装了请求地址、请求方法、请求头、请求体和标志位信息: ③、发起请求:
阅读全文
摘要:HashSet源码分析: 先来看一下它的构造方法: 呃~~居然它的底层是用HashMap来实现的,颠覆三观,那它究竟是如何来用的呢?继续来往下跟: 对于HashSet而言是没有key->value的结构的,那它是怎么跟HashMap关联到一块的呢?接着得查看add方法了: 也就是将我们往HashSe
阅读全文
摘要:Stack: 代码实现: 编译运行: Queue: 其具体实现: 编译运行:
阅读全文
摘要:源码分析: 我们知道LinkedList的底层是采用双向链表来实现的,所以下面来从源码角度来分析一下,先来看一下它的类结构: 然后看一下它的构造: 而这个header又是什么东东呢? 是一个Entry类型,好眼熟,对于HashMap遍历的时候不就用过Entry么,那看一眼它长啥样? 好,接着咱们会往
阅读全文
摘要:源码分析: 对于ArrayList应该是开发当中每天都会与之打交道的,都知道它底层是由数组来实现的,但对于它底层的具体实现细节说实话却道不出一二来,所以打开它的源代码一探究竟,先来看一下应用代码: 先查看一下它的类继承体系: 比较复杂,接着根据咱们调用的是它的默认构造方法来初始化ArrayList的
阅读全文
摘要:对于wait和sleep貌似都会阻塞线程,但是它们确实是很大的区别的,所以下面一点点来探讨: 区别一、Sleep()是线程里面的方法,而Wait()是Object类的方法。这个比较简单,直接看代码便知: 区别二、sleep()方法不需要被notify唤醒,而wait()则需要【当然wait(10)这
阅读全文
摘要:模板方法模式详解: 概念模板方法是通过定义一个算法骨架,而将算法中的步骤延迟到子类,这样子类就可以复写这些步骤的实现来实现特定的算法。 使用场景1、多个子类有公有的方法,并且逻辑基本相同时。2、重复,复杂的算法,可以把核心算法设计为模板方法。3、重构时,模板方法模式是一个经常使用的模式。 UML结构
阅读全文
摘要:adapter模式详解: 适配器模式定义将一个接口转换成客户端希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。 类适配器①、类适配器定义:类适配器模式把适配的类的API转换成目标类的API。②、UML结构图解析:③、code详解:先定义Target接口
阅读全文
摘要:java的builder模式详解: 概念:建造者模式是较为复杂的创建型模式,它将客户端与多含多个组成部分(或部件)的复杂对象的创建过程分离。 使用场景:当构造一个对象需要很多参数的时候,并且参数的个数或者类型不固定的时候。 UML结构图分析:下面具体介绍一下角色:Builder:它为创建一个产品Pr
阅读全文
摘要:单例的介绍: 单例的概念:单例模式是一种对象创建模式,它用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例。 好处:1、对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销。2、由于new操作的次数减少,因而对系统内存的使用频率也会降低,
阅读全文
摘要:什么是ListView: ListView就是一个能数据集合以动态滚动的方式显示在用户界面上的View。 ListView适配器模式: 有了Adapter可以将数据源与view进行分离~ ListView的recycleBin机制: 对于列表可能会有成千上万条数据,那ListView是如何可以做到不
阅读全文
摘要:为什么会有事件分发机制: 安卓上面的View是树形结构的,View可能会重叠在一起,当我们点击的地方有多个View都可以响应的时候,这个点击事件应该给谁呢?为了解决这一问题,就有了事件分发机制。用图来说明: 如图,当点击View1时,其它下面的ViewGroupA和RootView也是能响应的,为了
阅读全文
摘要:Linux内核的基础知识: 进程隔离/虚拟地址空间:在操作系统中为了保护某个进程互不干扰就设计了一个叫“进程隔离”的技术,防止进程A可以操作进程B的数据。而进程隔离技术用到了虚拟地址空间,进程A的虚拟地址空间跟进程B的虚拟地址空间其实是不同的,而如果进程与进程之间要进行通知则需要某种通信机制才能完成
阅读全文
摘要:Android不用静态变量存储数据: 静态变量等数据由于进程已经被杀死而被初始化。在Android中应用进程不是安全的,因为它会有系统给kill掉,但是在实际中可能会有这样的一个假象:当app被杀掉之后会重新再开的,其实这个再打开是重新创建了一个进程,启动上一次打开的Activity,由于此时的静态
阅读全文
摘要:什么是冷启动: 冷启动的定义:冷启动就是在启动应用前,系统中没有该应用的任何进程信息。实际也就是要执行Application.onCreate()方法的那次启动。 冷启动 / 热启动的区别:热启动:用户使用返回键退出应用,然后马上又重新启动应用。实际上也就是Application.onCreate(
阅读全文
摘要:内存管理机制概述: 分配机制:操作系统会为每一个进程分配一个合理的内存大小,从而保证每一个进程能够正常的运行,不至于内存不够使用,或者某个进程占用过多的内存。 回收机制:在系统内存不足的时候,系统有一个合理再分配资源的一个机制,从而保证新的进程能够正常运行,回收的时候就要杀死那些正在占用内存的进程,
阅读全文
摘要:Java内存泄漏基础知识: Java的内存的分配策略 a、静态存储区:也叫方法区,主要是存放一些静态数据及全局变量等,在程序编译时就已经分配好了,并且在静态存储区中存放的变量在整个程序运行期间都存在。b、栈区:执行方法时,方法中的局部变量会在栈上创建内在空间,并在方法执行结束之后这些变量及所持有的内
阅读全文
摘要:UI卡顿原理: “60fps(Frames Per Second每秒传输帧数) > 16ms” 针对上面标红的数字,下面具体说明一下:最主要的根源在于渲染性,Android会每隔16ms会发出信号,触发对UI进行渲染,如果每一次都渲染成功,则就达到流畅画面所需要的60fps,也就是每秒60针,为了能
阅读全文
摘要:密钥: 密钥是一种参数,它是在使用密码cipher算法过程中输入的参数,同一个明文在相同的密码算法和不同的密钥计算下会产生不同的密文。所以说算法既使公开了但是密钥参数不同其结果也是不同的,其中关于明文和密文下面用一张图来描述一下: 而密钥又分为对称与不对称两种,下面具体来看一下: 密钥:对称 又称为
阅读全文
摘要:对于网络上的大部通讯都是基于TCP/IP协议的, 其中最重要的是IP协议,它是基于IP地址的,而计算机通讯只能识别IP地址,如192.168.0.1,而不能识别像咱们在浏览器敲得见名之义的"www.baidu.com"这样的域名,但是呢有一个DNS服务器的计算机会自动把咱们输入的域名翻译成了网络通讯
阅读全文
摘要:互联网应用的实现主要是通过分层来实现的,每一层有自己相应的功能,上层依赖于下层,具体层次如下图: 下面具体一层层来了解: 物理层 / 实体层: 也就是将电脑通过物理的手段连接起来,其实也就是01电子信号的传输,这层有个了解既可,对于应用开发来说根据接触不到这么底层。 链接层: 链接层的协议它位于物理
阅读全文
摘要:HTTPS是什么? HTTPS并不是一个单独的协议,而是对工作在一加密连接(SSL / TLS)上的常规HTTP协议。通过在TCP和HTTP之间加入TLS(Transport Layer Security)来加密。 SSL / TLS协议: SSL协议,是一种安全传输协议,TLS是SSL v3.0的
阅读全文