自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashMap解析

开门见山,直接开始HashMap解决了什么问题?HashMap解决了插入与查找的效率问题,近似O(1)级别,内部实现是通过数组和链表组合实现HashMap如何确定数组大小结论,根据传入的size大小,计算下一个最接近传入size大小的2的n次方(可能是size本身),例如,传入size为15,真实size为2的四次方16,代码如下: /** * Returns a power of two size for the given target capacity. */

2021-05-09 14:57:24 155

原创 Android各版本适配点(6.0-1.0)

Android 6.0主要是动态权限申请Android 7.01.使用FileProvider将file:/// Uri替换为content:// Uri,将本应用路径暴露给第三方应用2. 签名需要v23. 限制部分广播,可以前台注册,也可以使用JobScheduler ,ContentObserver代替4. 禁止直接获取mac地址Android 8.0后台服务限制,启动服务使用startForegroundService,直接启动前台服务定位也需要前台服务悬浮窗类型改为TYPE_A

2020-07-22 16:26:31 722

原创 Framework binder驱动(一)MediaPlayerService 启动

通过MediaPlayerService启动作为了解binder驱动的入口.MediaPlayerService是init进程启动的进程,开机时候显示开机动画等.入口源码为freamwork 目录下main_mediaserver.cpp文件启动MediaPlayerServicemain_mediaserver.cpp文件下只有一个main()函数,我们根据mediaService的启动流程来观察binder驱动如何进行进程间通信int main(int argc __unused, char**

2020-07-15 20:06:22 338

原创 Android Framework--启动流程

FreamWorkinit进程init进程是Android系统的第一个进程,是所以Android进程的祖先,主要完成两件事解析配置文件init.rc维护一个属性服务property.serverinit进程源码在system/core/init目录下,入口为init.cpp的main()函数,init进程启动service进程init进程通过解析init.rc文件(遵守Android Init Language规范);获得需要启动的服务所在路径,启动服务所需要的参数,名称等,并将信息添加至

2020-07-15 17:46:50 217

原创 JVM StringTab

StringTab 和intern()根据几个实例来帮助我们理解StringTab在JVM中的运行方法//JDK1.8String s1 = "a";String s2 = "b";String s3 = "a" + "b";String s4 = s1 + s2;String s5 = "ab";String s6 = s4.intern();System.out.prin...

2020-03-12 20:43:32 144

原创 JVM(一)Java虚拟机内存结构(元空间,堆,栈)

1.程序计数器(PC)程序计数器是线程私有的,为了记住下一条JVM指令的地址,并且是java虚拟机规范中唯一没有规定任何OOM(Out Of Memery Error)的内存区域程序计数器指定了下一条需要指定的指令,每个线程都有一个程序计数器,程序计数器保证了程序的有序执行.2. 栈与程序计数器一样,栈也是线程私有的,栈的生命周期和线程是绑定的,并不需要垃圾回收器的介入,线程结束,相应的...

2020-02-24 00:54:40 1210

原创 HTTP(一)什么是HTTP

什么是HTTP?HTTP(HyperText Transfer Protocol) 超文本传输协议:字面解释1.协议: HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式。2.传输:HTTP 是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。传输是双向的,传输之间可以存在任意多的"中间人"3...

2020-02-11 23:03:14 453

原创 一行代码实现加载动画,自动绑定解绑activity生命周期

Android 加载动画框架,一行代码,任意地方可用,自动解绑使用project中添加maven路径maven { url 'https://jitpack.io' }依赖activity生命周期管理implementation 'com.github.WGHCWC:activitylifecycle:1.1.0'依赖加载框架implementation 'com.github.WG...

2020-02-08 14:42:19 255

原创 opencv_卷积

Opencv卷积操作OpenCv卷积操作:通过矩阵运算,给图像的每个像素重新赋值,选择不同的矩阵(kernel,卷积核),可以实现不同的效果.锐化[0,-1,0][-1,5,-1][0,-1,0]锐化运算int cols = src.cols * src.channels();int offset = src.channels();int rows = src.rows;Mat...

2019-12-17 11:10:41 267

原创 OkHttp3源码解析(二)OkHttp基本流程

首先使用Okhttp发起一个异步请求,以此先简单分析OkHttp的大致流程。okHttp使用:OkHttpClient client=new OkHttpClient(); Request request=new Request.Builder() .url("http://www.baidu.com") .build(); Ca...

2019-04-28 17:21:20 161

原创 OkHttp3源码解析(一)Scoket实现HTTP请求

OkHttp是基于Scoket和okio实现的,先了解一下基础实现一 HTTPHTTP协议是基于TCP/IP的应用层的传输协议:具有以下特点HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTT...

2019-04-28 13:43:18 351

原创 Java设计模式,行为型(六)()

保留

2019-04-24 16:05:01 104

原创 Java设计模式,行为型(五)()

保留

2019-04-24 16:04:32 132

原创 Java设计模式,行为型(四)()

保留

2019-04-24 16:04:06 116

原创 Java设计模式,行为型(三)(迭代器模式,备忘录模式)

迭代器模式(Iterator)迭代器模式提供一种统一的方法顺序的访问内部数据,使得不同的数据类型也可以使用统一付方法进行遍历。声明接口public interface Iterator { Boolean hasNext(); Object next();}内部类public class News<T> { List<T> list;...

2019-04-24 15:09:18 125

原创 Java设计模式,行为型(二)(模板方法模式,状态模式)

模板方法模式利用创建抽象类,比如Android中的BaseActivity,可以将initView(),initData()放在onCreate()中;BaseActivity;public abstract class BaseMvpActivity extends AppCompatActivity implements BaseView { @Override publ...

2019-04-19 17:27:28 218

原创 Java设计模式,行为型(一)(策略模式,命令模式)

策略模式(Strategy)策略模式用来分离算法的实现,类比与if-else;通过上下文对实现进行管理。约束接口:public interface IPay { void pay(Context ctx);}上下文:public class Context implements IPay { private IPay pay; protected String...

2019-04-19 14:42:36 356

原创 Java设计模式,结构型(四)(代理模式)

代理模式(Proxy)代理模式是使用代理对象对目标对象进行操作的模式。类比于去银行办卡,办卡时候将办卡的业务交给工作人员,工作人员会帮你办卡,还会给你开通手机银行之类的,代理模式可以通过对原有功能进行代理,并且可以对功能进行扩展。静态代理接口功能;public interface IBank { void aply();}代理目标public class Bank impl...

2019-04-19 10:55:13 190

原创 Java设计模式,结构型(三)(享元模式,组合模式)

享元模式当需要多个对象但是每个对象仅有部分数据不同时可以使用享元模式,本质上就是使用一个容器将对象储存起来,使用的时候从中获取,常用的容器时HashMap。棋接口:public interface Chess { void setNum(int num);}围棋实现类:public class WeiQi implements Chess { private String ...

2019-04-18 17:18:12 160

原创 Java设计模式,结构型(二)(外观模式,桥接模式)

外观模式(Facade)外观模式本质上是将细节封装起来,使用者只需要调用”门面“即可定义接口:public interface Operate { void eat();}被操作对象,实现接口和方法:public class Stu2 implements Operate { @Override public void eat() { Syst...

2019-04-17 17:23:01 124

原创 Java设计模式,结构型(一)(装饰者模式,适配器模式)

装饰者模式装饰者模式可以在不修改原来类的基础上灵活的对他的功能进行扩展。首先创建公共接口。被装饰对象以及装饰者都要实现它。public interface Component { void operate();}被装饰对象:public class Car implements Component { @Override public void operat...

2019-04-17 14:53:15 106

原创 Java设计模式,创建型模式(二)(建造者模式,原型模式)

建造者模式建造者模式是使用多个简单对象一步一步创建出一个复杂对象,属于创建型模型,常用链式调用的方式进行对象的创建。本文只介绍使用静态内部类的Builder模式。public class People { private String eye; private String hand; private String mouth; private String ...

2019-04-16 16:05:54 107

原创 Java设计模式,创建型模式(一)(单例模式,工厂模式)

单例模式

2019-04-08 16:40:46 110

空空如也

空空如也

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

TA关注的人

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