摘要:最近做的一个需求和文件存储有关系。由于之前没有系统梳理过,对文件存储方面的知识一直很懵懂。趁着周末有时间,赶紧梳理一波。 这首从网上找到的一张图,很好的概括了外部存储和内部存储。 下面我们再来具体介绍相关知识和内容。 内部存储 内部存储,位于data/data/包名/路径下 是否需要用户权限:否 是 阅读全文
posted @ 2020-07-26 15:25 huansky 阅读(81) 评论(0) 推荐(1) 编辑
摘要:CmProcess 是 github 上的一个解决跨进程通信的开源项目,整体代码清晰简洁,可以通过分析其源码可以了解跨进程通信的本质。 阅读全文
posted @ 2020-07-19 10:08 huansky 阅读(103) 评论(0) 推荐(1) 编辑
摘要:Android 平台目前提供了两大类动画,在 Android 3.0 之前,一大类是 View Animation,包括 Tween animation(补间动画),Frame animation(帧动画),在 Android 3.0 中又引入了一个新的动画系统:Property Animation 阅读全文
posted @ 2020-07-18 18:24 huansky 阅读(70) 评论(0) 推荐(0) 编辑
摘要:概述 一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了 Linux 环境下的几种主要进程间通信手段。 进程隔离 进程隔离是为保护操作系统中进程互不干扰而设计的一组不同硬件和软件的技术。这个技术是为了避免进程A写入进程B的情况发生。 进 阅读全文
posted @ 2020-06-20 19:55 huansky 阅读(180) 评论(0) 推荐(1) 编辑
摘要:本文是 http 入门文章,主要是介绍了http概念,发展史,以及和 http 相关的各种协议(tcp/ip, https等)和概念(CDN,浏览器) 阅读全文
posted @ 2020-06-14 17:39 huansky 阅读(43) 评论(0) 推荐(0) 编辑
摘要:NestedScrollView 是用于替代 ScrollView 来解决嵌套滑动过程中的滑动事件的冲突。作为开发者,你会发现很多地方会用到嵌套滑动的逻辑,比如下拉刷新页面,京东或者淘宝的各种商品页面。 那为什么要去了解 NestedScrollView 的源码呢?那是因为 NestedScroll 阅读全文
posted @ 2020-05-31 20:04 huansky 阅读(199) 评论(0) 推荐(0) 编辑
摘要:Gradle 的插件有三种打包方式: 构建脚本:插件逻辑写在 build.gradle 中,适用于逻辑简单的任务,但是该方式实现的插件在该构建脚本之外是不可见的,只能用于当前脚本。 buildSrc项目:根据语言插件代码放在 rootProjectDir/buildSrc/src/main/groo 阅读全文
posted @ 2020-05-23 14:05 huansky 阅读(203) 评论(0) 推荐(0) 编辑
摘要:概论 在 深度优先搜索原理与实践(java)文章介绍了深度优先搜索算法的理论和实践。本文将介绍与其原理类似的广度优先搜索算法。 广度优先搜索(也称宽度优先搜索,缩写 BFS,以下采用广度来描述)是连通图的一种遍历算法这一算法也是很多重要的图的算法的原型。Dijkstra 单源最短路径算法和 Prim 阅读全文
posted @ 2020-05-04 22:49 huansky 阅读(373) 评论(1) 推荐(1) 编辑
摘要:本文首先通过一个例子讲解了深度优先搜索的原理,然后给出了算法的通用框架,接着根据通用框架总结了算法的实现一般规则,使用者按照该规则即可写出深度优先搜索代码。最后通过三个题目,结合文章总结的规则指导你如何应用到实践中。 阅读全文
posted @ 2020-05-03 23:47 huansky 阅读(245) 评论(0) 推荐(0) 编辑
摘要:概论 线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决 阅读全文
posted @ 2020-04-07 23:49 huansky 阅读(996) 评论(2) 推荐(1) 编辑
摘要:本文基于 ReentrantLock 非公平锁的独占锁源码来分析了 AQS 的内部实现原理。在获得同步锁时,同步器维护一个同步队列,获取状态失败的线程都会被加入到队列中并在队列中进行自旋;移出队列(或停止自旋)的条件是前驱节点为头节点且成功获取了同步状态。在释放同步状态时,同步器调用 tryRelease(int arg) 方法释放同步状态,然后唤醒头节点的后继节点。 阅读全文
posted @ 2020-04-06 22:26 huansky 阅读(177) 评论(0) 推荐(0) 编辑
摘要:本文主要介绍了线程的基础知识,主要知识点包括:线程和进程的异同点,线程的五种生命周期,创建线程方式,线程中断机制和其常用的方法。 阅读全文
posted @ 2020-03-04 15:17 huansky 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-02-14 20:39 huansky 阅读(73) 评论(0) 推荐(0) 编辑
摘要:通过本文知道什么是GC,哪些对象需要进行回收,如何进行GC,GC 回收机制的变化等 阅读全文
posted @ 2020-02-05 16:37 huansky 阅读(68) 评论(0) 推荐(0) 编辑
摘要:Java 虚拟机中定义的 Class 文件格式。每一个 Class 文件都对应着唯一一个类 或接口的定义信息,但是相对地,类或接口并不一定都得定义在文件里(譬如类或接口也可以通过 类加载器直接生成)。本章中,我们只是通俗地将任意一个有效的类或接口所应当满足的格式称为 “Class 文件格式”,即使它 阅读全文
posted @ 2020-01-31 20:50 huansky 阅读(89) 评论(0) 推荐(0) 编辑