自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

杨殿生的博客

Android开发的小学生

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

原创

https://juejin.im/post/5ab7a9cd6fb9a028c812d24b#heading-2源码分析面试需要明确的问题数据库更新性能优化都有什么主要分为以下几部分:(0)Android编程注意事项以及优化(1)java面试题Java基础知识总结(2)Android面试题Activity + Fragment知识点总结Service知...

2018-03-20 13:13:03 374

原创 多线程知识点总结

原文地址https://www.jianshu.com/p/2f1c94551038多线程一直都是面试高级的必问高发区,并且很难掌握。特别是对于客户端的同学,因为我们在写客户端时,虽然会使用多线程场景,但不会有后端那种强要求高并发的场景。但这并不应该成为掌握不好多线程的借口,以下是我总结的思维导图,通过这个思维导图我们能更加清晰的理解多线程的知识框架...

2019-04-19 11:24:42 310

原创 适配器模式

原文地址:https://www.jianshu.com/p/fd417a917ed4适配器模式就是把一个类或接口转换成其他的接口或类类图如下 适配器模式类图适配器模式分成两种一种是类适配,通过继承的方式,一种是对象适配,通过组合的方式类适配假设我们现在有自己的一个运行系统,由用户信息接口public interface UserInfo { Stri...

2019-01-22 15:50:48 313

原创 策略模式

原文地址:https://www.jianshu.com/p/b2ab047ea687定义一组算法,将算法都封装起来,并且是他们之间可以互换的简单的说就是把方法封装在方法中,调用不同对象的相同方法实现的算法是不同的类图如下 策略模式类图Strategy是策略的抽象类ConcreteStrategy是策略的具体实现类Context是策略的管理类假设一种场景我们可以用...

2019-01-22 14:36:42 237

原创 装饰者模式

原文地址:https://www.jianshu.com/p/2fe021a2a9df为现有的类增加功能,是继承的一种替代方式类图如下 装饰者模式类图假设一个场景我们在学校要考试,然后要给家长签字,说分数之前你要先汇报一下班级最好成绩,然后说出你的分数之后,在说出你在班级的排名1,建立一个抽象的报告接口public interface SchoolReport {...

2019-01-21 22:46:17 181

原创 责任链模式

原文地址:https://www.jianshu.com/p/86c531761d05责任链模式重在一个链上,处理一件事要经过层层审批才能执行,或者在我请求某件事之前要有很多对象需要给我的请求添加更多参数类图如下 责任链模式类图假设一种场景,古代妇女的地位比较低,做什么事情都要请求男人,也就是父亲,丈夫,儿子其中有一个处理了这个请求才能去做1,妇女的抽象类public...

2019-01-21 22:45:27 211

原创 命令模式

原文地址:https://www.jianshu.com/p/95690a7e549b命名、命令就是我下一个命令你就要来执行,我不关心谁来实现的,我只关心我的命令执没执行。命令模式就是将命令和执行封装在一起,并且高层组件是接触不到底层组件的,实现了调用者和执行者解耦合看一下类图 命令模式类图Command:定义了命令的抽象ConcreteCommand:是具体的命令实现类...

2019-01-17 18:25:51 158

原创 中介模式

原文地址:https://www.jianshu.com/p/298ef103b484中介模式是用来解决多个对象显示相互调用造成的耦合,使用一个中介来使耦合松散,减少类之间的依赖看一下类图 中介模式类图联系一个场景。角色有采购,销售,和库房。采购在采购的时候要依赖销售的状态,销售在销售的时候要依据库房的库存,并且销售后要修改库存。清空库存时要让采购停止采购,销售打折销售...

2019-01-17 14:53:12 316

原创 原型模式

原文地址:https://www.jianshu.com/p/47297cc49919原型模式就是通过原型创建多个对象,简单来说就是通过一个对象去复制多个对象类图如下 原型模式类图 需要实现Cloneable接口,复写clone()方法具体代码如下public class Mail implements Cloneable{ private String ...

2019-01-16 15:44:59 131

原创 动态代理

原文地址:https://www.jianshu.com/p/46d5c64e0459代理代理,就是找个人代替你做你该做的事,分为静态代理和动态代理,一个一个说准备工作我们先假设一种场景,打游戏,我们创建一个游戏人物去打游戏,让一个代理帮我们打游戏1,建立一个游戏人物的抽象类public interface GamePlayer { void login(String ...

2019-01-16 14:44:54 117

原创 建造者模式

原文地址:https://www.jianshu.com/p/91c650a590e31,建造者模式是一个创建对象的模式2,与工厂模式很像,建造者模式主要思考的方向是零件的顺序不同创建对象不同,工厂方法不会关注创建零件时的顺序3,建造者模式经常和模板方法一起使用看一下类图 建造者模式类图 1,需要有产品的抽象类定义产品生成规则2,产品实现类实现产品具体行为(这里就...

2019-01-15 14:47:16 144

原创 模板方法模式

原味地址:https://www.jianshu.com/p/5aa0b7f5815e首先来看一下类图 模板方法模式类图 原理就是,通过抽象的父类来控制子类的行为,具体的行为由子类定义1,定义一个抽象的父类将公共执行部分抽取到父类中public abstract class AbstractClass { //基本方法 protected abstr...

2019-01-15 11:27:16 221

原创 抽象工厂

原文地址 https://www.jianshu.com/p/38c99d5e11a3先来看一下抽象工厂的类图 抽象工厂类图 这里抽象工厂和工厂模式很相似,抽象工厂是产生产品族的,产品族就是一系列产品比如我们之前说创建人,人分黑种人,黄种人,白种人,那现在我在加入一个性别,我需要如何设计呢,这就需要抽象工厂模式了1,人类的接口public interface Hu...

2019-01-14 14:15:31 168

原创 工厂模式

原文地址 https://www.jianshu.com/p/ec991512f83b生产对象的一种模式,通过增加一个工厂类使创建产品的时候延迟到子类工厂模式是理解依赖倒置的法宝,依赖倒置1,高层组件不依赖底层组件2,他们都依赖于抽象工厂模式里的工厂是高级组件,产品是低级组件,要想建立产品你就需要实现工厂的产品接口,也就是高层组件不依赖底层组件工厂类和产品类都是依赖,抽象工...

2019-01-14 11:17:01 188

原创 单例模式

原文地址 https://www.jianshu.com/p/9f88630d9667 这可能是我们遇上的最简单的模式了,不过他真的简单么?面试的时候如果真的细问你,你可能真的会被问的哑口无言。什么你不信,那我们来一起思考一下下面几个问题1,单例模式定义2,写一下你知道的所有单例模式3,写一个饿汉式单例模式4,写一个懒汉式单例模式5,写出你知道的能保证线程安全的单例模式,以及说一...

2019-01-10 17:27:40 195

原创 Apk签名,安装校验过程

原文地址 https://www.jianshu.com/p/1e8cfea539e6首先要了解是整个应用生成的过程 编译过程 .png 再来看一下最后生成的apk解压后的文件结构 Apk结构.png这里主要关注未签名和签名的apk的区别未签名的apk是没有MEAT-INF文件夹的,只有签名的apk才有这个文件夹。分别来看一下这个文件夹下的文件的含义...

2018-12-20 09:58:29 2304 1

原创 Client请求ServiceManager的交互过程

原文链接https://www.jianshu.com/p/8924a84b6aea首先要了解一下Binder使用的各个实体对象和代理对象,这个在Android智能指针中有体现,链接地址https://www.jianshu.com/p/e4379961ad74那么具体在Client请求ServiceManager的时候都是实现了什么操作呢?这里牵扯到两个进程Client和Servic...

2018-11-26 10:45:26 518

原创 ServiceManger注册过程

原文链接https://www.jianshu.com/p/ef6359f63305ServiceManager他是单独跑在一个叫system_manager进程中的,是用来管理服务和查询服务的,类似网络中的DNS他自己本身也是一个服务,使用的是binder机制,那客户端如果要检索服务如何找到ServiceManager呢?ServiceManager有自己固定的handle值是0,客户端沟...

2018-11-21 10:15:27 274

原创 Binder驱动

原文链接https://www.jianshu.com/p/5dd4c5a8333a要学习Android进程间通信那么第一步要掌握的就是Binder驱动,Binder驱动提供很多命令其中最常用的三个命令是open,mmap,ioctl,分别看一下这三个命令都是干啥的binder_open上层需要访问binder驱动时,首先需要打开/dev/binder结点。实现是在binder_ope...

2018-11-20 11:07:19 451

原创 Android中智能指针

原文链接 https://www.jianshu.com/p/e4379961ad74首先智能指针是应用在C++层面的,java中是把指针这个东西隐藏了的,回收对象使用GC不需要程序员自己去处理为什么要引入智能指针C++中使用对象会存在几个问题1,对象创建后的初始化问题2,new和delete不成对出现问题3,野指针问题什么是野指针,比如ptr指向一个对象,这个对象使用...

2018-11-19 11:32:27 231

原创 Java高手要会的小知识

1,在重写equals的时候需要注意哪几点?并说说这些点的含义?自反性 x.equals(x)为true对称性 x.equeals(y)为true那么y.equals(x)也为true传递性 x.equeals(y)为true,y.equeals(c)为true。那么x.equeals(c)为true一致性 当两个对象都未作修改反复调用x.equeals(y)为true非空性 x.equeals(...

2018-07-13 10:01:22 171

原创 算法读书笔记

1,二分查找public class BinarySearch { //二分查找,查找的数组必须有序 public static int rank(int[] a,int key) { int lo = 0; int hi = a.length - 1; while(lo <= hi){ int mid ...

2018-07-10 09:39:11 385

原创 PackageManagerService解析

1,startService PackageManagerService2,建立Socket处理安装请求3,建立uid gid与上层permission的关系4,启动 AppDirObserver 线程监测/system/framework,/system/app,/data/app,/data/app-private 目录的事件,主要监听 add 和 remove 事件5,扫描以上的目录将解析的...

2018-06-24 16:19:28 304

原创 ListView源码解析

ListView使用是适配器模式,让ListView和数据源解耦,中间使用Adapter类做为缓冲实现与数据源的解耦使用的是RecycleBin机制,ListView父类AbsListView的一个内部类这个是ReccleBin的类注释,说的大概就是: RecyclerBin有利于view的重新利用, RecyclerBin有两种存储模式,一种是ActiveViews,一种是ScrapViews。...

2018-06-23 18:02:02 200

原创 Lru算法

最近最少使用1,最新插入的数据,或者最近被访问的数据,要在链表头部2,如果链表满了那么清除最末端数据java内部使用LinkedHashMap存储了存储元素的顺序只需重写removeEldestEntry用于移除最不常用的数据参考 http://flychao88.iteye.com/blog/1977653参考 https://blog.csdn.net/elricboa/article/det...

2018-06-23 15:55:47 199

原创 HashCode的算法

HashCode是什么(散列算法)提供类似指纹的识别标识,使用较短的信息来标识文件的唯一性,这个标识与每一个字节都有关,并且不可逆java 提供的String hashCode 算法如下 乘加迭代运算public int hashCode() { int h = hash; final int len = length(); if (h == 0 &...

2018-06-23 12:17:41 2356

原创 注解的原理是什么?

注解就是继承自Annotation的接口,他没有行为只有数据,让其实现行为必须有实现对象(代理对象),在使用反射技术实现行为注解就是一种标记,为他要标记的对象赋值,然后通过静态解析(继承AbstractProcessor),使用动态解析(反射机制)jvm内部实现也是通过动态代理TestAnnotation然后通过反射赋值来实现的自定义注解有四个关键字@Documented@Retention 作用...

2018-06-23 11:42:16 1954

原创 Android 5.0 6.0 7.0 8.0 9.0新特性总结

Android 5.01,扁平化的开始2,Dvk被Art替换Android 6.01,动态权限管理2,指纹识别3,电源管理4,移除了了httpClientAndroid 7.01,分屏多任务2,Android有popupwindow显示bugAndroid 8.01,画中画2,通知3,自适应图标4,后台进程限制5,特殊访问权限Android 9.01,刘海平支持https://blog.csdn....

2018-06-20 20:16:11 4495 3

原创 apk包中包含的是什么?签名的机制是什么?

Manifest.xml配置文件dex文件META签名加密文件三方包res资源文件 resources.arsc参考  https://www.cnblogs.com/jenson138/p/4220668.html

2018-06-19 19:27:22 1164

原创 Android安全

Android主要有一下几个角度来提供保障性1,Linux层各种安全机制,DAC、SELinux2,所有的应用程序都强制运行在自己的sandbox3,严格的进程间通信安全控制4,应用程序签名5,Permission机制设备root 程序加固 程序注入1,DAC(Discretionary Access Control)任意的、自主的,客体的属主可以自主的决定是否将全部的或部分的访问权限授予其他主体...

2018-06-18 20:57:47 187

原创 Android build构建流程

1,application resources 通过aapt执行成R.java2,aidl文件通过aidl生成aidl.java3,R.java + aidl.java + 源代码 通过java执行成class4,第三方库class + 执行生成的classes 通过dex生成dex文件5,dex文件 + 自己的资源 + 第三方的资源 通过apk build生成apk6,生成的apk通过jarsi...

2018-06-17 20:41:36 529

原创 Android架构

MVC MVP https://blog.csdn.net/u010072711/article/details/77132403MVVM  https://blog.csdn.net/u010072711/article/details/78633151

2018-06-17 20:21:27 197

原创 ART虚拟机

ART执行的字节码所以速度会很快,使用AOT(AHead of Time)相对于JIT(Just In Time)会在应用创建的时候将dex编译成字节码时时间会比较长占用空间会比较大之所以会无缝的替换是因为他实现了虚拟机的接口内存回收机制对象的是否被引用 引用链清除算法 标记-清除参考文章 https://blog.csdn.net/luoshengyang/article/details/392...

2018-06-17 19:35:22 921

原创 DVK虚拟机

1,基于寄存器,他与基于堆栈的有什么区别?基于寄存器的执行速度会更快,但依赖底层硬件,只适用于ARM移动设备指令码会比堆栈的少编译文件不同,dvk编译的是dex文件他是特殊处理过的class文件,不在是以一个类class去区分,而是以方法,变量来区分,会比class文件更节省空间2,内存回收标记对象是不是被引用的方式是引用链清除的算法使用的是标记-清除 然后使用底层机制去整理内存参考博客 http...

2018-06-17 17:37:20 375

原创 对于HTTPS的理解

https = http + ssl/tls   http端口为80  https端口为443 使用https服务端必须要申请数字证书两种用途:1,建立通道保证数据的安全,2,确认网站的真实性数字证书:数字证书是由第三方签发的,以数字证书为核心可以进行信息加密,解密,数字签名,签名验证数字证书的持有人有一对公匙,私匙。公匙是公开的,私匙要持有人本地妥善保管的https通讯原理传输数据之前要跟服务器...

2018-06-17 11:53:53 228

原创 Java集合 && Android提供的集合

LinkedList 底层结构是双重链表,线程不安全,可存储null,存储数据可重复,并且可用作堆栈,队列,双端队列同步方式可以使用List list = Collections.synchronizedList(new LinkedList(...));增删要比ArrayList高效ArrayList 底层是结构为可变数组,线程不安全,可以存储null,存储数据可重复同步方式 List list...

2018-06-16 21:54:41 387

原创 热修复选型和原理

微信的Tinker基于QQ空间的NumaAndroid ClassLoaderPathClassLoader 应用启动后加载 data/app/...DexClassLoader 应用启动前加载 热修复使用Numa原理,基于Android分包的基础上的,应用启动时加载主dex文件,启动后在加载其他的dex文件,多个dex文件排成有序数组,虚拟机加载类的时候会逐个加载dex文件,把热修复的代码插入到...

2018-06-14 09:50:27 393

原创 JVM虚拟机

JVM虚拟机:类加载子系统,执行引擎,垃圾回收子系统,运行时一,类加载子系统当new或者调用静态变量的时候虚拟机就会去校验是否加载过使用的类,加载一个类的过程为加载类的要使用的类加载器ClassLoader,它使用的是双亲委派模型(如下图)为什么使用双亲委派模型?防止类的重复加载,类的唯一性确定是靠的是同一个类加载器加载和同一个class文件二 执行引擎执行加载完成的class字节码,使他们变成机...

2018-06-05 21:57:23 239

原创 网络的五层划分是什么?TCP和UDP的区别是什么?简述TCP的三次握手过程

网络的五层划分是什么?从下往上数,物理层,数据链路层,网络成(IP),传输成(TCP/UDP),应用层(HTTP)TCP和UDP的区别是什么?TCP是安全的链接,有三次握手四次挥手保证数据准确传输,这么安全那肯定会消耗一些性能,存储一下额外的数据用于保证数据的安全,适用于下载UCP是尽量交付,他可能会丢包,优点就是因为不需要很多校验所以传输的数据会比TCP少,适用于视频一类的数据要求没那么严格的场...

2018-06-03 17:18:09 551

原创 Android线程池有哪些?他们的区别是什么?为什么要使用线程池?

Android线程池有哪些?他们的区别?Android线程池都是机遇ThreadPoolExecutor实现的分为以下四种,都是通过Executors静态工厂创建出来的FixedThreadPool 可以设置固定核心线程数,没有非核心线程 底层实现是LinkedBlockingQueue CashedThreadPool 没有核心线程数,可以创建非核心线程,有超时限制 底层实现是Synchrono...

2018-05-27 10:05:53 568

空空如也

空空如也

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

TA关注的人

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