自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王智博

think and code

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

原创 Java ThreadPoolExecutor线程池学习笔记(使用、原理、常见问题总结)-这一篇就够了

简介线程池的由来:线程资源十分有限,开启线程需要系统开销,所以我们可以换成一定数量的线程,然后取管理和复用这些线程,统一分配和控制线程的最大并发数,提供拒绝机制。优点降低创建、销毁线程的开销(重用线程池的线程)有效控制线程池的最大并发数,避免大量的线程之间因互相抢占系统资源而导致阻塞现象;提高线程响应速度提高对线程的管理,提供定时/循环间隔执行等功能工作原理实际上通过 T...

2019-03-07 14:45:07 1237

原创 2019最全Android面试题总结(持续更新中。。。)

视图相关系统View组件ListViewQ:ListView为什么可以加载1000个条目不崩?Q:什么是RecycleBin,它是怎么和ListView回收和复用的?Q:你知道notifyDataSetChanged方法干了啥吗?调用之后为啥ListView就刷新了?Q:你知道ListView的跟手滑动和fling是怎么实现的吗?ScrollViewQ:ScrollV...

2019-02-27 23:23:03 2031 3

原创 Android面试---ListView原理及fling分析

为了节约你的时间,上面的图是整个文章的最终图,包括了以下部分问题的答案。目录1.为什么需要使用Adapter?RecycleBin是什么?2.ListView的绘制过程是怎样的?3.ListView的回收机制是怎么样的?为什么可以显示100个View而不崩呢?4.ListView里面的观察者模式是什么?5.惯性滑动(fling)是怎么实现的?0.基本使用获...

2019-02-15 17:19:57 1688

原创 在Android中你用过动态代理吗?Java动态代理原理解析(附github源码)

前言如果我们是做SDK开发,最常用的架构就是MVC。在MVC中,我们经常会提供给外部C,用于让外部调用我们SDK暴露的功能。如果我们的V,要添加一个按钮,或者V的视图滑动事件,要提供给C去暴露出去,V和C基本要同时写2个方法,比如addButton(Button btn)。这个时候我们发现问题了,每次我们要去提供V、M的功能暴露出去,就要同时去C里面实现一个方法。那有没有一个方法能够让V、...

2019-01-28 14:43:32 1029

原创 基于AIDL的 Activity、Service跨进程观察者模式实现与源码解读(附github源码)

前言上篇文章最简单的Activity、Service使用、通信指南二(AIDL进程间通信)(附github源码),介绍了怎么使用AIDL文件,实现在跨进程环境下,Activity获取Service中每秒递增的num并展示的过程,并简单讲解了下AIDL文件的构成(Stub,Proxy),并留下了3个问题。1.这个Stub.Proxy何许人也?为啥能够和远端Binder通信?2.为啥同进程...

2019-01-27 17:56:25 992 2

原创 5分钟告诉你,Activity的视图绘制流程(onMeasure、onLayout、onDraw的调用和参数解释)

本篇主要面对有一定Android基础的同学,但是Android初学者的话,也不要急。在网上可以看到很多文章,会告诉你onMeaure是什么?里面的参数是什么意思?会教你怎么获取MeaSpec的size和mode(Unspecified、Exactly、AtMost)。也会告诉你怎么重写 onLayout,怎么使用layout方法去布局子元素,怎么实现流式布局,自动换行。还有会告诉你重写onDraw...

2019-01-26 13:58:18 2418

原创 我的Android学习之旅(持续更新中...)

为什么写这个博客?楼主写这个博客是为了把平时学习中、开发中遇到的一些重要的问题记录下来,然后可以分享给其他人,大家一起学习。楼主也是从初学者开始学习Android,博客中文章从初学者到进阶原理的讲解都有涵盖,同时为了摆脱枯燥的代码讲解,楼主把代码统一提交到了github:https://github.com/samwangzhibo/LoveStudy(不会使用github导入代码的同学...

2019-01-25 16:36:08 1184

原创 从源码角度分析Activity的生命周期时序怎么触发的(onCreate onStart onResume onPause onStop onDestroy)(附测试代码)

【转载请注明出处:5分钟告诉你,Activity的生命周期怎么触发的(onCreate onStart onResume onPause onStop onDestroy)(附测试代码) CSDN 王智博】前言试想一下,如果从Activity A 跳转到Activity B,A和B的生命周期分别是怎么过的?我们初学Android时候都接触过声明周期,当时给的解释是,onCreate是A...

2019-01-25 16:00:25 2678

原创 走进源码pipe、epoll,Android面试最常见Handler、Looper、Message问题总结与解答

【转载请注明出处:走进源码,Android面试最常见Handler、Looper、Message问题总结与解答CSDN王智博】今天楼主以面试的角度,走进源码,去探索Handler、Handler、Looper、Message的奥秘。随着各种网络框架的普及,线程之间的通信再也不需要我们手动的创建Handler,然后handleMessage了,但是当我们想要创建一个主线程延时任务的时候,...

2019-01-16 22:25:20 3405 5

原创 go使用笔记

取整math.Round(10.5) = 11

2019-04-01 11:43:37 247

原创 我的草稿书

1.注解首先注解我们使用的时候是这样声明的,java中常见的注解有@Override、@Deprecated,@Retention 修饰运行时机 编译 运行时@Target 修饰类型 比如方法 类 成员变量@interface Path{ String value() defalut "&

2019-03-22 03:22:14 784

原创 markdown如何实现锚点功能

前言前言之前看了很多文章,一直都没有发现怎么在 markdown 里面去设置锚点,所以写一篇博客来记录下方法。

2019-03-22 03:17:37 32890 2

原创 Scroller startScroll() fling() 参数详解

fling()/** * Start scrolling based on a fling gesture. The distance travelled will * depend on the initial velocity of the fling. * * @param startX Starting point of the scroll (...

2019-03-20 15:46:48 1261

原创 常用工具解释

Node.jsNode.js平台是在后端运行JavaScript代码npmnpm其实是Node.js的包管理工具(package manager安装Node.js和npm

2019-03-15 12:32:41 211

原创 Java中锁学习笔记(Synchronized、ReentrantLock、Lock)

前言学习锁之前我们肯定要学习下线程,线程是CPU调度的最小单元。public class ThreadTest { public static int num = 0; public static void main(String[] args) { //1.开启10个线程去修改num的值 可以看到每次执行的结果不同 for (int i=0; ...

2019-03-14 01:10:32 223

原创 常用Java工具指令 JavaP

javap一个能够将class文件反汇编成人类可读的格式的工具。可以方便的查阅Java的字节码javap -p -v从一个基本的类的反编译说起让你读懂Java字节码文件...

2019-03-14 00:45:41 315

原创 Glide源码阅读随笔md

图片加载最重要的是几点,1.图片的缓存 2.网络请求模型和生命周期的联动Glide如何实现Activity和Application生命周期的联动的?参考:Glide官方文档Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程...

2019-03-13 11:53:17 120

原创 JVM、Dalvik以及ART的区别

简介JVMjava虚拟机,解析并运行字节码。DalvikAndroid平台的虚拟机,支持运行dex文件。.dex格式是专为Dalvik应用设计的一种压缩格式,适合内存和处理器速度有限的系统ARTART代表AndroidRuntime,在应用安装的时候就预编译字节码到机器语言,这一机制叫Ahead-Of-Time(AOT)预编译。在移除解释代码这一过程后,应用程序执行将更有效率,启...

2019-03-10 14:59:33 397

原创 Java学习笔记-transient关键字

简介java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。使用流程工作与原理总结1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。2)transient关键字只能修饰变量,而不能修饰...

2019-03-08 11:44:58 124

原创 Java wait notify notifyAll-生产者消费者问题

参考如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例

2019-03-07 16:42:57 308

转载 谈谈Java中的语法糖

语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言本身功能来说没有什么影响,只是为了方便程序员的开发,提高开发效率。说白了,语法糖就是对现有语法的一个封装。Java作为一种与平台无关的高级语言,当然也含有语法糖,这些语法糖并不被虚拟机所支持,在编译成字节码阶段就自动转换成简单常用语法。一般来说Java中的语法糖主要有以下几种:泛型与类型...

2019-03-04 23:37:25 133

原创 Kotlin学习笔记、思维导图

2019-03-01 17:53:26 593

原创 Android MVP架构理解与主流框架

前言引用sanji2020的话读了很多MVC MVP MVVP的文章,觉得最好的一篇还是这一篇,读完之后理解的很透彻,后有根据Github上GeekNew项目。Material Design + MVP + RxJava2 + Retrofit + Dagger2 + Realm + Glide 基本涵盖了当前Android端开发最常用的主流框架,之后根据自己的思路整理了一份思维导图(仅限参...

2019-03-01 17:33:03 239

原创 Android下图片清晰度识别

Android下图片清晰度识别核心思想:使用opencv的拉普拉斯算法检测图片的边缘数,越模糊的图片边缘数越少

2019-02-28 16:27:55 3494

原创 设计模式学习笔记-IOC(控制反转)和DI(依赖注入)

前言定义参考Android主流IOC框架浅析Android IOC框架实现

2019-02-27 23:59:15 191

原创 MarkDown相关

MarkDown页内跳转实现1. 先定义一个锚(id) <span id="jump">Hello World</span> 2. 然后使用markdown的语法: [XXXX](#jump)

2019-02-27 23:25:19 131

原创 Android----EventBus原理及封装-开发利器

1. 前言1.1 什么是EventBus?github地址 : https://github.com/greenrobot/EventBus1.2 怎么使用?可以看到官网已经给了解释。定义一个Event类准备一个订阅者(声明并且注解一个方法),指定一下线程模型在生命周期中注册和解绑订阅者发送第1步定义的事件2. EventBus原理剖析这是官网的流程图,从左往右看可...

2019-02-27 23:12:52 705

原创 Android面试和知识点文章mark

Android面试Android 校招面试指南 春招收获阿里腾讯实习offer,学习、面试经验分享18年底Android面经分享(已获头条、顺丰、OPPO等大厂offer)Android 面试指南AndroidInterview-Q-AAndroid LearningNotes Android 面试 https://www.jianshu.com/p/089861329c1a...

2019-02-27 01:49:43 238

原创 Android面试---通过ScrollView滑动讲解OverScroller、Scroller原理

前言试想一下,我们希望 ScrollView 平滑滚动的操作时候,是怎么实现的呢?我们可以猜想下,当我们的调用 smoothScrollBy(int dx, int dy) 的时候,ScrollView 是怎么就能实现平滑移动的呢?smoothScrollBy执行过程在MotionEvent.ACTION_UP事件触发时调用startScroll()方法,该方法并没有进行实际的滑动操作,而...

2019-02-27 00:48:31 1206 1

原创 Android架构学习之google sample android-architecture

前言Android的架构,MVC、MVP、MVVM这些你一定听说过。网上的文章也有很多讲解MVC、MVP、MVVM的,但是还是很晦涩。这里我们可以看Google官网的应用架构指南,然后还有Google团队出的 Android架构样例 googlesamples/android-architecture。...

2019-02-26 18:35:03 441

原创 RxJava学习笔记、思维导图

前言什么是RxJava?RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.这是github地址的解释,RxJava是使用观察者队列的异步事件流链...

2019-02-26 17:38:38 361

原创 Java学习笔记(二)之对象创建、内存模型、访问

参考JVM:Java对象的创建、内存布局 & 访问定位 全过程解析

2019-02-26 15:34:03 257

原创 学习笔记之IPC跨进程通信binder原理

前言:我们在多篇文章(AIDL进程间通信 Service主动修改Activity视图之回调传递 三(附github源码))[]、(最简单的Activity、Service进程间 AIDL通信指南二(附github源码))[]都讲到了binder,服务器端实现binder,客户端连接接收到binderProxy,那么binder底层的原理到底是什么?它是怎么实现跨进程通信的?ioctl()函数的...

2019-02-26 15:25:04 183

原创 Android源码 Linux系统调用poll、select、epoll学习笔记

参考:(源码解读poll/select内核机制)[http://gityuan.com/2019/01/05/linux-poll-select/](源码解读epoll内核机制)[http://gityuan.com/2019/01/06/linux-epoll/]

2019-02-26 11:50:05 782

原创 Android性能优化总结

启动优化区分进程,子线程异步初始化资源,服务懒加载(按需加载)sharepreference commit是阻塞的api,用applysp如果过大,做拆分操作asset读取资源异步化service初始化后延绘制优化参考:Android性能优化:那些不可忽略的绘制优化...

2019-02-26 03:01:52 118

转载 Mac下查看Git的安装目录

which git解释:查看 git 程序地址示例localhost:~ wangzhibo$ which git/usr/local/bin/gitMac下查看Git的安装目录

2019-02-25 12:02:04 12774 1

原创 什么是SurfaceView?和View有什么区别?Android里面什么地方用到了SurfaceView?

参考:SurfaceView学习笔记->什么是SurfaceViewAndroid SurfaceView入门学习

2019-02-25 11:56:58 435

原创 2019最全Android面试题总结-答案解读(持续更新中。。。)

设计模式依赖注入代理模式与动态代理参考厘米姑娘的 文章汇总|学习Android的一点一滴

2019-02-22 15:32:29 3519

原创 Android四大组件之Service的启动过程

过程概述1.客户端请求bindService,先会请求ActivityManagerService;2.ActvityManagerService再去找到对应的Service,让Service所在进程创建并启动Service;3.Service调用AMS.publishService()将Binder对象传递给AMS;4.AMS拿到的Binder对象同样为BinderProxy对象,然后...

2019-02-21 19:23:57 283

转载 一篇文章看明白 Android 图形系统 Surface 与 SurfaceFlinger 之间的关系

Android - SurfaceFlinger 图形系统相关系列一篇文章看明白 Android 系统启动时都干了什么一篇文章了解相见恨晚的 Android Binder 进程间通讯机制 一篇文章看明白 Android 从点击应用图标到界面显示的过程 一篇文章看明白 Activity 与 Window 与 View 之间的关系 一篇文章看明白 Android 图形系统 Surfac...

2019-02-21 17:28:37 719

空空如也

空空如也

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

TA关注的人

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