5 yinhuanxu

尚未进行身份认证

我要认证

有梦想,爱学习

等级
TA的排名 0

Mac OS 编译 Android 平台 FFmpeg

工具准备FFmpeg 4.1.5 版本源码,下载链接:http://ffmpeg.org/download.htmlNDK ( android-ndk-r17c ),下载链接:https://developer.android.google.cn/ndk/downloads配置修改1、修改 configureffmpeg-4.1.5 根目录,使用 Sublime Text 可打开编...

2020-03-03 12:37:29

【译文】kotlin1.3 版本的协程

原文链接:https://antonioleiva.com/coroutines/协程是 kotlin 中最让人激动的特性之一,使用它,你可以用一种优雅的方式来简化异步任务的工作,让代码更加可读和易于理解。使用协程,你可以用同步的样式写异步代码,而不是传统的 Callback 方式来写。同步方法的返回值就是异步计算的结果。到底有什么魔力发生呢?我们马上即可学习它,在此之前,让我们了解下为什...

2019-05-28 19:20:23

对 TCP 建立连接需要 3 次握手的理解

我觉得TCP的三次握手设计是很巧妙的。而为什么TCP建立连接需要三次握手?也是我学习时的疑惑,接下来谈下自己的理解

2017-08-13 17:13:03

一种优化 ListView 初始化加载速度的方案

我在使用 ListView 的时候,有一个问题困扰我挺久:能不能控制 ListView 初始化时加载的Item数量?比如,如果我刚打开一个页面,ListView 关联 Adapter 就开始加载十几条数据,如果加载的 Item 是 TextView 还好,不会影响到速度,但如果是 Webview 呢?有些业务是需要 Webview 来作为 ListView 的 Item,这时候就卡爆了

2017-08-08 16:54:59

LruCache 源码分析

我在参加笔试的时候,有一道题是设计一个 LruCache,当时由于不理解原理而没有写出来,现在看了几遍源码,记录下笔记理清思路

2017-04-30 16:54:37

图解反转单向链表

我总觉的反转链表的过程不是那么好理解,花了点时间画图来帮助理解

2017-04-19 12:18:58

排序算法总结

查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事

2017-04-16 23:26:12

二分查找的递归和非递归实现

二分查找的递归和非递归实现

2017-04-10 17:06:01

Dagger2 原理分析

Dagger2 使用编译时注解 + APT 实现依赖注入,能带来什么好处呢?一个词:解耦。在项目越来越庞大的时候,Dagger2 就体现出强大之处了

2017-04-05 21:28:12

为什么重写了equals(),还要重写hashCode()?

hashCode 方法用于散列集合的查找,equals 方法用于判断两个对象是否相等。为什么重写了 equals 方法,还要重写 hashCode 方法?

2017-04-04 19:46:49

剑指 Offer 专项训练

Java 语言实现,用于校招复习。

2017-02-28 12:42:06

Retrofit 源码分析

我在半年前才开始接触 Retrofit,在那个时候这个框架已经很火了。现在寒假复习到这一块,也好久没写博客了,简单梳理了一下写成一篇文章。有不对的地方,望指正

2017-01-24 22:12:58

Android Binder跨进程通信原理分析

我们知道进程之间,虚拟地址不同,是不能直接通信的,这是一种保护机制。用户空间可以通过System calls(系统回调)与内核空间通信的,如果在内核空间中有一个模块,能够完成数据的转发,那么是不是两个进程就可以通信了呢?

2016-11-27 15:15:30

Java GC 机制与内存分配策略

收集算法是内存回收的方法论,垃圾收集器是内存回收的具体实现为什么我们要了解学习 GC 与内存分配呢? 在 JVM 自动内存管理机制的帮助下,不再需要为每一个new操作写配对的delete/free代码。但出现内存泄漏和溢出的问题时,如果不了解虚拟机是怎样使用内存的,那么排查错误将是一项非常艰难的工作。GC(垃圾收集器)在对堆进行回收前,会先确定哪些对象“存活”,哪些已经“死去”。

2016-11-10 00:00:07

Android RecyclerView工作原理分析(下)

在RecyclerView中存在一个叫“预布局”的阶段,当然这个是我自己作的翻译,本来叫pre layout,与之对应的还有个叫post layout的阶段,它们分别发生在真正的子控件测量&布局的前后。其中pre layout阶段的作用是记录数据集改变前的子控件信息,post layout阶段的作用是记录数据集改变后的子控件信息及触发动画。

2016-11-05 21:18:49

Android RecyclerView工作原理分析(上)

RecyclerView的基本使用并不复杂,只需要提供一个RecyclerView.Apdater的实现用于处理数据集与ItemView的绑定关系,和一个RecyclerView.LayoutManager的实现用于 测量并布局 ItemView。众所周知,android控件的绘制可以分为3个步骤:measure、layout、draw。RecyclerView的绘制自然也经这3个步骤。

2016-11-05 21:03:50

Android View的绘制流程三部曲

如果我们用面向对象的思维方式来思考,就会觉的View的绘制机制是很合理,很科学的。我们要在一张纸上画一幅画,首先我们要测量一下这幅画有多大吧,然后确定在纸的哪个地方画会显得比较美观,最后才是用画笔工具将画绘制在纸上。 在Android中也是一样的。View的绘制流程主要是指measure,layout,draw这三步,即测量,布局,绘制。首先是要测量View的宽高,然后布局确定在父容器中的位置坐标,最后才是绘制

2016-10-24 00:28:29

Android Service的绑定过程

通常我们使用Service都要和它通信,当想要与Service通信的时候,那么Service要处于绑定状态的。然后客户端可以拿到一个Binder与服务端进行通信,这个过程是很自然的。那你真的了解过Service的绑定过程吗?为什么可以是Binder和Service通信?

2016-10-18 10:10:07

Android Service的启动过程

刚开始学习Service的时候以为它是一个线程的封装,也可以执行耗时操作。其实不然,Service是运行在主线程的。直接执行耗时操作是会阻塞主线程的。长时间就直接ANR了。我们知道Service可以执行一些后台任务,是后台任务不是耗时的任务,后台和耗时是有区别的喔。 这样就很容易想到音乐播放器,天气预报这些应用是要用到Service的。当然如果要在Service中执行耗时操作的话,开个线程就可以了

2016-10-14 21:26:56

Android Context getSystemService分析

当我们希望获取到系统服务时,可以调用Context的getSystemService方法,那么getSystemService又是怎么工作的呢?Activity是一个Context,他调用getSystemService时,会调用到Context的包装类ContextWrapper的getSystemService方法,ContextWrapper又会委托ContextImpl去实现具体逻辑

2016-10-11 17:08:16
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。