自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

錦小白的博客

摸著石頭過河的小年輕

  • 博客(105)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android内存优化的知识梳理

随着对性能优化的理解,发现优化的方法并不是重难点,关键是在于去主动、及时的发现问题所在。要想实现主动和及时,代码采用优化--埋坑--优化--埋坑的方式并不能帮我们做到。发力点应该在于去建立一套合理的框架与监控体系,能及时的发现诸如bitmap过大、像素浪费、内存占用过大、应用OOM等问题。...

2022-08-08 22:16:20 772 1

原创 把把Android事件分发机制的脉络

开始的开始当我手指触摸到手机屏幕后,给我所见即所得的触控体验,它的背后发生了什么?出于对它的好奇,就有了这篇文章。因为本人不喜欢大段大段的源码分析,所以本文尽量从设计的角度去把把事件分发机制的脉络,少贴源码是我的目标之一,虽然这么说,但当我把文章写完后最后发现依然贴了不少代码,想删减却没法减少,都是很核心的部分。本博客的主要内容如下:事件分发的整体设计ViewRootImpl的创建应用层级的事件分发流程为了后面更容易的理解事件分发机制,在介绍核心内容前,准备了一些前置知识。前置知识:View

2020-12-27 21:22:40 514

原创 Drawable和Bitamp

Bitmap、Drawable是什么?Bitmap: 一个个位图像素映射到内存的数据存储器Drawable:可以自带绘制规则的绘制类,通过 Canvas来进⾏绘制的上层⼯具它们的对象互转实现是怎样的?kotlin的ktx为我们提供了很便利的方式,不像之前我们还需要自己写(其实是从网上拷贝)一大串实现代码//drawable -> bitmapdrawable.toBitmap()//bitmap -> drawablebitmap.toDrawable()它背后实现其实和我们

2020-10-25 15:50:31 190

原创 重学泛型

前言不知道读者们平时使用泛型多不多,自认为对泛型了解多少呢?本文笔者带你重学一下泛型,不只从语法的角度,尽可能从本质的角度上去理解它,并用实例代码去解释,主要内容如下:泛型的声明和实例化extends 和 super 的使用泛型的协变和逆变泛型的类型擦除泛型方法和类型推断泛型的嵌套和重复Kotlin泛型如果你对以上有不是很清楚的知识点,建议看完以下内容,相信你会有所收获!泛...

2020-10-16 19:05:54 598 1

原创 Binder系列之Service Manager

在笔者的上一篇博客中主要分享了 Binder的通信过程是如何实现的,大致内容就是下面这张图:笔者也提到Binder机制主要对象有Binder Client、Binder Server、Binder Driver、Service Manager ,它的完整过程是这样的:(此处是从Gityuan大佬的博客copy过来的一张图)对比两者或者说仔细看了笔者的上篇博客,会发现介绍通信过程忽略了Service Manager这个角色,所以本篇的目的就是介绍它了。ServerManager和Binder的关系

2020-08-01 14:54:41 589

原创 Kotlin带参单例模式的优雅实现

kotlin经典单例实现我们都知道 Kotlin 为我们实现单例提供了很方便的实现,一个关键词就可以搞定:那就是 objectobject SomeSingleton反编译成 Java 代码:public final class SomeSingleton { public static final SomeSingleton INSTANCE; private SomeSingleton() { INSTANCE = (SomeSingleton)this; }

2020-06-22 08:43:30 355

原创 是时候学一下Binder了(一)

Binder是一片大森林,涉及的东西很多,很容易学着学着就迷失了方向。笔者也曾经看过这部分内容,但半途而废,只留下一声感叹:太难了吧。但现在发现,还是得静下心来去啃这个骨头,因为Binder确实太重要了。作为一名新手,刚入新手村,先从宏观的角度看Binder会更好一点吧:Binder是什么?Binder由哪些元素组成?Binder的这些组成元素是怎么建立联系的?Binder的通信过程是...

2020-04-30 20:04:10 181

原创 初探Android 热修复

本篇博客是笔者第一次接触热修复的学习笔记,主要分享内容:1. 什么是android的热修复?2. 如何实现热修复?目前有什么方案?3. 热修复背后的原理?Android热修复是啥?常见的使用场景刚发布的应用出现闪退、ANR等bug,及时修复 。及时推送一些小的功能给用户使用。优势所在无需重新发布,实时高效修复bug用户无需操作,无需下载新的应用修复成功率高,降低损失...

2020-01-10 19:56:56 262

原创 《设计模式之美》学习笔记(二)

第二章主题是设计原则1.对于单一职责原则,如何判定某个类的职责是否够“单一”?SOLID 原则并非单纯的 1 个原则,而是由 5 个设计原则组成的,它们分别是:单一职责原则、开闭原则、里式替换原则、接口隔离原则和依赖反转原则,依次对应 SOLID 中的 S、O、L、I、D 这 5 个英文字母。单一职责原则的英文是 Single Responsibility Principle,缩写为 S...

2020-01-03 13:37:18 408

原创 《设计模式之美》学习笔记(一)

01.当谈论面向对象的时候,我们到底在谈论什么?面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming面向对象编程都是通过使用面向对象编程语言来进行的,但是,不用面向对象编程语言,我们照样可以进行面向对象编程。反过来讲,即便我们使用面向对象编程语言,写出来的代码也不一定是面向对象编程风格的,也有可能是面向过程编程风格的我们没必要纠...

2019-11-26 14:01:49 283

原创 一篇文章认识Gradle的使命

谈谈为什么要写这样一篇博客Gradle对于我们大多数Android开发者可以说是熟悉又陌生。但这个理由并不足以让我有动力写下这篇文章,其主要因为是这样的:最近参与项目开发,发现项目工程里的的build.gradle比之前接触的的复杂了许多,虽然大部分内容通过表面英文也勉强能看懂,但还是有些内容会让人懵逼。尤其是gradle出错的时候,我第一时间会运用一个非常熟练的技能,ctrl+c问题,ctrl...

2019-09-11 14:54:45 273

原创 Kotlin艺术探索之扩展方法和属性代理

扩展方法Kotlin支持扩展方法,扩展方法是个很有意思的东西还是举个栗子比较直观比如我们想打印10次“abc”的字符串,最容想到的是使用循环。那么单独抽出来成方法,就是这样fun String.copyContent(times: Int): String{ var string = StringBuilder() for (i ...

2019-06-06 18:56:00 130

原创 Kotlin艺术探索之单例和伴生对象

单例Kotlin中的单例写法相比较于Java要简单许多,只需用到一个关键字就可以实现,那就是object关键字比如下面DataProviderManager就是一个单例类object DataProviderManager { fun registerDataProvider(provider: DataProvider) { ...

2019-06-05 17:25:00 325

原创 Kotlin艺术探索之类和接口

类1.基本用法Kotlin的类的普通写法和Java一样class Invoice { ... }如果类里面内容是空的,可以把括号省略class Empty2.类的构造方法构造方法的参数可以直接写在类名之后class InitOrderDemo(name: String) { var firstProperty = "First...

2019-06-05 17:23:00 122

原创 Kotlin艺术探索之参数和异常

参数传递默认参数的使用可以在方法的参数中设置值作为它的默认参数值fun reformat(str: String = "11",isTrue: Boolean = false){ println(str) println(isTrue)}使用默认参数在调用的时候就可以不传递参数//使用默认参数reformat()具名参数...

2019-06-03 11:39:00 115

原创 入坑Kotlin之流程控制和运算符

if的使用fun ifExpression(): Int{ //1.最普通的写法 var max: Int if (a < b) { max = b } else{ max = a } return max}val max = if(a > b) a...

2019-06-02 13:51:00 127

原创 易于理解的Dagger2入门篇

Dagger2是什么Dagger2是一款基于Java注解来实现的完全在编译阶段完成依赖注入的开源库,主要用于模块间解耦、提高代码的健壮性和可维护性。Dagger2在编译阶段通过apt利用Java注解自动生成Java代码,然后结合手写的代码来自动帮我们完成依赖注入的工作。Dagger 2 is the first to implement the fu...

2019-05-04 15:39:00 159

原创 一个Android渣渣终于拿到了一个offer

今年的春招好像比之前来的早一点,本想提前准备准备,没想到准备没多久,在牛客上有些公司已开始内推了,我匹配了岗位投了以下几家,CVTE、多益以及招银。在之后的一个月内,陆陆续续也投了几家,但很多都是笔试没通过,或者笔试后没有消息......其中包括多益和招银,总之[有点惭愧],我只通过CVTE的笔试,并接收到了该公司的面试。作为一个普通高校的应届毕业生,想...

2019-03-21 16:26:00 267

原创 妥妥的去面试之Android基础(六)

笔者由于在近期需要找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想得到的机会才可能有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下Android面试大纲.png妥妥的去面试之Android基础(一)妥妥的去面试之And...

2019-03-06 22:58:00 192

原创 妥妥的去面试之Android基础(五)

笔者由于在近期需要找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想得到的机会才可能有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下Android面试大纲.png妥妥的去面试之Android基础(一)妥妥的去面试之And...

2019-03-01 22:24:00 144

原创 妥妥的去面试之计算机网络

1、HTTP和HTTPS有什么区别?HTTPS简单的说就是HTTP的安全版。HTTP协议传输的数据都是未加密的,也就是明文,这对于传输一些私密的信息来说是不安全的,于是就出现了HTTPS,HTTPS是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP安全。它们的主要区别:HTTPS需要到ca申请证书,一般免费证书很少,需要交...

2019-02-23 19:48:00 112

原创 妥妥的去面试之数据结构与算法(二)

笔者由于在找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想要的机会才有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下Android面试大纲.png妥妥的去面试之数据结构与算法(一)下面是本篇博客的正菜部分:倒数第K个...

2019-02-22 22:19:00 108

原创 妥妥的去面试之Android基础(四)

笔者由于在近期需要找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想得到的机会才可能有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下Android面试大纲.png妥妥的去面试之Android基础(一)妥妥的去面试之And...

2019-02-21 21:53:00 156

原创 妥妥的去面试之Android基础(三)

笔者由于在近期需要找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想得到的机会才可能有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下妥妥的去面试之Android基础(一)妥妥的去面试之Android基础(二)接下来开始本篇博客的正菜:1.Android中怎么加速启动Ac...

2019-02-15 21:22:16 137

原创 妥妥的去面试之Android基础(三)

笔者由于在近期需要找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想得到的机会才可能有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下Android面试大纲.png妥妥的去面试之Android基础(一)妥妥的去面试之And...

2019-02-15 21:09:00 128

原创 妥妥的去面试之Android基础(二)

笔者由于在找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想要的机会才有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下妥妥的去面试之Android基础(一)接下来开始本篇博客的正菜1.AsyncTask的缺陷?使用时有什么需要注意的点?(1)通过AsyncTask可以更...

2019-02-14 19:01:04 124

原创 妥妥的去面试之Android基础(二)

笔者由于在找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想要的机会才有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下Android面试大纲.png妥妥的去面试之Android基础(一)接下来开始本篇博客的正菜1.As...

2019-02-14 18:48:00 112

原创 妥妥的去面试之数据结构与算法(一)

笔者由于在找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想要的机会才有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下下面是数据结构与算法的正菜部分一、找出数组中重复的数字在一个长度为n的数组里的所有数字都在0~n-1的范围内。找出数组中任意一个重复的数字。注意:如...

2019-02-13 21:43:39 157

原创 妥妥的去面试之数据结构与算法(一)

笔者由于在找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想要的机会才有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下Android面试大纲.png妥妥的去面试之数据结构与算法(一)下面是本篇博客的正菜部分:一、找出数...

2019-02-13 21:32:00 122

原创 妥妥的去面试之Android基础(一)

笔者由于在找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想要的机会才有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下那么先上个正菜预热一下QAQ1.什么是ANR?出现的原因是什么?实际开发中如何解决?ANR在Android中表示应用程序无响应。对于一些事件都需要在一定...

2019-02-12 22:58:03 150

原创 妥妥的去面试之Android基础(一)

笔者由于在找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想要的机会才有机会入你怀中。笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下Android面试大纲.png那么先上个正菜预热一下QAQ1.什么是ANR?出现的原因是什么?实际开发...

2019-02-12 22:38:00 138

原创 上车RxJava2(二)

笔者在上一篇博客介绍了 RxJava 的基本使用和它的线程控制,这篇博客介绍RxJava一个很核心、很牛逼的功能-操作符。RxJava的操作符有很多,主要分为以下几大类:创建操作符、变换操作符、过滤操作符、组合操作符、错误处理符、辅助操作符、条件和布尔操作符等等。每一种类型操作符下又有很多个具体的操作符,笔者在这篇博客介绍其中几个操作符的使用,如果还想学习其他操作符的使用,文章末尾有传送门哦上...

2019-01-23 15:22:06 220

原创 上车RxJava2(二)

笔者在上一篇博客介绍了 RxJava 的基本使用和它的线程控制,这篇博客介绍RxJava一个很核心、很牛逼的功能-操作符。RxJava的操作符有很多,主要分为以下几大类:创建操作符、变换操作符、过滤操作符、组合操作符、错误处理符、辅助操作符、条件和布尔操作符等等。每一种类型操作符下又有很多个具体的操作符,笔者在这篇博客介绍其中几个操作符。上一篇博客的实...

2019-01-23 15:19:00 303

原创 上车RxJava2(一)

RxJava 是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。RxJava的观察者模式如果不知道观察者设计模式的话,建议先传送到这里:观察者设计模式RxJava它有四个概念Observer(观察者)Observable(被观察者)subscribe(订阅)事件以上的几个概念和普通观察者模式基本一样,但是RxJava 的事件回调方法除了普通事件 o...

2019-01-21 17:06:23 160

原创 上车RxJava2(一)

RxJava 是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。RxJava的观察者模式如果不知道观察者设计模式的话,建议先传送到这里:观察者设计模式RxJava它有四个概念Observer(观察者)Observable(被观察者)subscribe(订阅)事件以上的几个概念和普通观察者模式基本一样,但是R...

2019-01-21 17:01:00 115

原创 设计模式之抽象工厂模式

一、抽象工厂模式抽象工厂模式(Abstract Factor Pattern)是创建型设计模式之一。它和之前的工厂设计模式很像。之前的工厂设计模式中如果一个工厂只能生产一种它具体的产品。而抽象工厂设计模式可以用一个工厂类生产一系列相关的产品。为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定它们的具体类二、UML类图三、实例解读下面笔者用一个手机生产商生产手机配件的示例来解读上...

2019-01-17 15:01:11 147

原创 设计模式之抽象工厂模式

一、抽象工厂模式抽象工厂模式(Abstract Factor Pattern)是创建型设计模式之一。它和之前的工厂设计模式很像。之前的工厂设计模式中如果一个工厂只能生产一种它具体的产品。而抽象工厂设计模式可以用一个工厂类生产一系列相关的产品。为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定它们的具体类二、UML类图抽象工厂模式u...

2019-01-17 14:51:00 158

原创 带你Flutter带你Fly之构建布局

实现一个App的页面主要由两部分组成,一个是UI页面的构建,一个是与UI的交互。本次笔者通过实现一个页面来介绍如何实现Flutter布局的构建。这个页面长这个模样在正式内容看之前,请记住一句话Flutter一切皆组件(Widget)很可能你已经听过了,但不是很理解,相信看(-跟着做-)完这篇文章,你会对这句话深有体会的。解剖布局整体来看的话,分为四个部分,也就是按行来分,图片、ti...

2019-01-13 22:32:20 217

原创 带你Flutter带你Fly之构建布局

实现一个App的页面主要由两部分组成,一个是UI页面的构建,一个是与UI的交互。本次笔者通过实现一个页面来介绍如何实现Flutter布局的构建。这个页面长这个模样布局构建.png在正式内容看之前,请记住一句话Flutter一切皆组件(Widget)很可能你已经听过了,但不是很理解,相信看(-跟着做-)完这篇文章,你会对这句话深有体会的...

2019-01-13 22:23:00 248

原创 带你Flutter带你Fly之单词收藏

本次笔者将实现这样一个效果:收藏列表的单词。并可点击页面右上角按钮展示收藏的单词准备工作打开Vs Code编辑器,快捷键 Crtl+Shift+P 打开 Commadn Palette命令板,输入 &amp;amp;gt;Flutter:New Project 新建一个Flutter应用输入应用名后,保存文件后,项目会自动进行创建,创建完毕之后,main.dart 文件会被自动打开。接下来,我们就对这个 ...

2019-01-05 18:47:02 463

Java面试宝典2017版

这本java葵花宝典,里面有很多经典的java题目和详细的题目解析。能够让你对java有个更深层次的理解。让你在java面试下能更得心应手。

2018-01-07

空空如也

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

TA关注的人

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