自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Room 使用及初步分析

一、概述  Room是对SQLite数据库的抽象,它提供了很多便利的API和注解等,让使用者对数据库的访问更加方便,同时可以减少很多的模板代码。另外 Room提供的单元测试相关方法,本文也会着重介绍一下。二、基本用法1.主要组件DataBase:实际数据库的访问入口@Database( entities = { User.class }, version = 1)public abstract class A.

2022-04-18 22:36:09 3490

原创 Android EventBus 源码分析

参考:EventBus3.0源码分析一、概述经典的发布-订阅框架了,观察者模式的典型应用,本次分析基于 EventBus3.1,主要参考了 EventBus3.0源码分析二、使用方式整体来说是非常容易使用的,3.x版本用注解的方式,替换了2.x版本用不同方法来发送和接收不同事件的方式,更加简洁public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle

2022-04-18 22:31:10 2339

原创 Android View层级的事件分发体系——源码探究

“View 层级的事件分发,只是应用整体的事件分发的一小部分”参考:《Android 开发艺术探索》反思 | Android 事件分发机制的设计与实现 【掘金】ConstraintLayout详解【简书】(本文没参考,列一下,方便后续复习)1. Scrollerscroller 本身无法实现滑动,它实际是一个保存滑动配置数据的类。1.5 OverScroller(Scroller太旧了)OverScroller 和 Scroller 没有继承或者组合关系,它们是独立的两个类,只是OverScr

2022-04-13 21:43:11 228

原创 Android 应用整体的事件分发体系——源码探究

参考:反思 | Android 事件分发机制的设计与实现 【掘金】(本文其实相当于是对它的读后感)Android 全面解析之window机制【掘金】(主要是讲window的)Android 之window机制token验证 (wms和token相关)Android 系统源码分析 - 事件分发(这里对Native层整个过程讲的比较细)输入系统:进程间双向通信(socketpair+binder) (这个对事件分发Native层用的原理讲的很清楚)一、概述反思 | Android 事件分发机制的设计与实现

2022-04-11 23:07:50 1257

原创 Android Binder 初步探究(基本原理)

前言本文可以视为 Binder 学习指南 和 为什么Android 要采用 BInder 作为 IPC 机制 两篇文章的学习笔记,因此文章仅为笔者个人复习使用 ,同时希望能给 对以上两篇文章有所了解的朋友 提供参考。一、概述1.Binder的含义binder 是 Android 系统实现IPC(跨进程通信)的机制,它沟通和联系了各个组件,是Android系统最为重要的成员之一。2.进程隔离进程:进程是操作系统中的一个重要概念,基本的 CS 课程都会讲到,不同进程之间的数据是不共享的(内.

2022-04-11 22:54:10 2235

原创 Android Activity的生命周期和启动模式

参考:《Android开发艺术探索》1. Activity 的正常生命周期完整的activity生命周期如下所示生命周期的几点注意事项:Activity 第一次启动:onCreate->onStart->onResume。Activity 切换到后台( 用户打开新的 Activity 或者切换到桌面) ,onPause->onStop(如果新 Activity 采用了透明主题,则当前 Activity 不会回调 onstop)。Activity 从后台到前台,重新可见,o

2022-04-11 22:32:53 2015

原创 【安卓学习笔记】Android Handler 消息机制探究

一、概述1.android消息机制的含义:Android消息机制,其实指的就是 Handler 的运行机制而 Handler 要正常运作,又需要底层的 MessageQueue , Looper , ThreadLocal 共同配合因此所谓的消息机制,其实主要讲的就是 Handler ,MessageQueue ,Looper ,ThreadLocal 四者的关系2.概述Handler工作流程:首先是构造 Handler ,这时候会通过 ThreadLocal 找到当前线程的 Looper

2022-01-09 00:48:55 1346

原创 【JAVA 学习笔记】java并发-线程安全与锁优化

前言文章仅是笔者个人的学习笔记,存在一些只有笔者个人能看到的用词或者描述,如果有不明确的地方,欢迎留言,理性讨论。一、概述面向过程编程:以算法为核心的,程序员会把数据和过程分别作为独立的部分来考虑,数据代表问题空间中的客体,程序代码则用于处理这些数据,这种思维方式直接站在计算 机的角度去抽象问题和解决问题面向对象编程:在现实世界的角度去抽象和解决问题,它把数据和行为都看作对象的一部分,这样可以让程序员能以 符合现实世界的思维方式来编写和组织程序。想极大地提升了现代软件开发的效率

2021-12-24 15:28:53 101

原创 【JAVA学习笔记】java并发-内存模型及线程 探究

前言文章仅是笔者个人的学习笔记,存在一些只有笔者个人能看到的用词或者描述,如果有不明确的地方,欢迎留言,理性讨论。一、概述多任务处理在现代计算机操作系统中几乎已是一项必备的功能了对于计算量相同的任务,程序线程并发协调得越有条不紊,效率自然就会越 高;反之,线程之间频繁争用数据,互相阻塞甚至死锁,将会大大降低程序的并发能力。二、硬件的效率与一致性1.物理机对并发的处理方案绝大多数运算任务不能只靠处理器“计算”来完成。处理器至少要与内存交互,无法仅靠寄存器来完成所有运算任务。存储

2021-12-24 15:26:45 238

原创 【JAVA 学习笔记】java垃圾回收机制 探究

前言文章仅是笔者个人的学习笔记,存在一些只有笔者个人能看到的用词或者描述,如果有不明确的地方,欢迎留言,理性讨论。一、概述为什么要了解垃圾回收?当需要排查各种内存 溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就必须对这些“自动 化”的技术实施必要的监控和调节垃圾回收主要关注的内存区域?程序计数器、虚拟机栈、本地方法栈:3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。因此这几个区域的内存分配和回收都具备确定性

2021-12-24 15:24:56 223

原创 【JAVA 学习基础】java内存区域 探究

前言文章仅是笔者个人的学习笔记,存在一些只有笔者个人能看到的用词或者描述,如果有不明确的地方,欢迎留言,理性讨论。一、概述Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。(这个比喻真是绝了java开发不必亲自管理每个new出来的对象的生命周期好处是大大方便了开发。坏处是一旦出现问题,如果不够熟悉虚拟机的机制,排查难度会大大增加。二、运行时数据区域1.内存区域划分内存区域划分大致如下:![image.png](h

2021-12-24 15:22:43 698

原创 【JAVA 学习笔记】java类文件及类加载 探究

前言文章仅是笔者个人的学习笔记,存在一些只有笔者个人能看到的用词或者描述,如果有不明确的地方,欢迎留言,理性讨论。一、类文件结构说实话这东西真的非常枯燥,就像一个字典一样。类文件结构(.class文件)是java平台无关性的基石。“.class文件”也并非特指某个存在于 具体磁盘中的文件,而应当是一串二进制字节流,就是它可以不是一个确切的文件。从定义好 .class 文件的结构开始(97年,和笔者差不多大了),这么多年它的结构一直没有大的重构过,这确实是很不容易的一件事。不过了解了它的实现

2021-12-24 15:19:16 273

原创 【JAVA 学习笔记】HashMap 探究

前言文章仅是笔者个人的学习笔记,存在一些只有笔者个人能看到的用词或者描述,如果有不明确的地方,欢迎留言,理性讨论。一、概述HashMap是Map的一种,它的继承结构如下:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable{...}Map是一种多对多的结构,Java里面的Map是Key-valu

2021-12-24 15:16:22 455

原创 【JAVA学习笔记】TreeMap 探究

前言文章仅是笔者个人的学习笔记,存在一些只有笔者个人能看到的用词或者描述,如果有不明确的地方,欢迎留言,理性讨论。一、红黑树虽然谈红色变,但是对于 TreeMap 确实是不谈不行,因为 TreeMap 的底层实现就是 红黑树。这里贴一段对红黑树的介绍吧,实际上主要是要了解红黑树的性质,至于具体的实现,还是不要花太多时间了。红黑树顾名思义就是节点是红色或者黑色的平衡二叉树。它通过颜色的约束来维持着二叉树的平衡。对于一棵有效的红黑树二叉树而言我们必须增加如下规则:1. 每个节点都只能是红

2021-12-24 15:14:20 111

原创 【JAVA 学习笔记】ArrayList 探究

前言文章仅是笔者个人的学习笔记,存在一些只有笔者个人能看到的用词或者描述,如果有不明确的地方,欢迎留言理性讨论。一、概述Arraylist不是线程安全的,但是java有提供同步创建的方法:Collections.synchronizedList(new ArrayList(...));,关键点看起来是 RandomAccess 这个接口,默认初始容量是10,在添加大容易之前,可以使用 ensureCapacity 来提前确定需要的容量及扩容,避免递增式的扩容和拷贝,(从1直接到N,避免1、2、3

2021-12-24 15:11:31 81

原创 数据结构之图的最短路径(Dijkstra & Floyd)【1】

前言计算图的最短路径,比较常见的算法有两种,一种是计算单源最短路径的Dijkstra算法,一种是计算任意两个点对最短路径的Floyd算法。这篇文章中主要的内容是Dijkstra算法的原理和实现。一、原理1.算法特点:       个人认为,Dijkstra算法的原理其实就是广度优先搜索,即逐步查找整张图,不管输入节点的位置情况,最后得到的也是所有点到源点的最小路径情况。2.算法描述:       ...

2018-03-01 17:00:17 2525 3

原创 数据结构之图的最小生成树【2】

这篇文章接上一篇最小生成树的文章,上一篇的代码是Kruskal算法,这一篇是Prim算法,顺便复习了一下优先级队列。只要记住树是一种1对多的结构,储存的最好方法是储存每个节点的父节点(用数组的储存的话)就行。参考文章:http://blog.csdn.net/tham_/article/details/46048907代码:struct Matrix{ int iVexNum; int iE...

2018-03-01 11:29:33 222

原创 数据结构之图的最小生成树【1】

这篇文章的内容,是看了一篇讲最小生成树两种经典算法的文章后,我自己敲的代码和感想。主要的内容在注释上,写成博客方便之后查看,或者是利用。参考文章:http://blog.csdn.net/qjzl2008/article/details/8008077代码:#include "stdafx.h"#include &lt;iostream&gt;using namespace std;str...

2018-02-28 16:01:02 358

转载 【算法复习】图的最小生成树(Prim&amp;Kruskal)

前言图的最小生成树算法主要有两种,Prim算法和Kruskal算法。实质上,这两种算法的思想都不难理解,但是在实际编程中,很容易将数据结构弄的过于复杂,增加无谓的开销。下面的文章是我这次回过头来整理的时候,看见的构造算是比较巧妙的一篇(主要是kruskal算法的实现部分),虽然有些地方我感觉有点冗余,但总体来说是值得学习的。原文地址http://blog.csdn.net/qjzl2008/art...

2018-02-28 15:53:39 959

原创 数据结构之图的遍历【1】

前言:图和树一样都是一种非线性结构。和前面的另外两种数据结构线性表和树相比,图是一种更加灵活,更加多变(可以具有的统一性质更少了)的数据结构。线性表是一对一的线性结构,树是一对多的非线性结构,而图则是任意数据节点间,多对多的非线性结构,它的每一个节点都可以与其他任意多个节点相关联。灵活性使得图可以用来描述、求解我们实际生活中的问题,同时也使得我们使用它的难度加大了。一、图的存储表示方法1. 以邻接...

2018-02-27 17:35:44 249

转载 数据结构之二叉树【2】【转载】

前言:二叉树搜索树是二叉树的一个重要应用,但是当二叉树的左右高度差很大时,那么无论是查找、插入还是删除二叉树中的节点,最坏情况的时间复杂度都会大大增加,所以就有了平衡二叉树(AVL树)的概念。但是维持树的完美平衡,代价又太高了,因此就又有了红黑树。红黑树的概念相对比较复杂,而且插入或者删除某个节点时,要考虑的情况也比较多。下面这篇文章是写得比较好的。原文地址:http://blog.c

2018-01-28 15:31:37 159

原创 数据结构之二叉树【1】

前言: 二叉树是一种特别的树结构,它的每个节点只能有两个孩子节点(最多),分别称作它的左子树和右子树(次序不能颠倒)。二叉树是最基本的数据结构之一,本篇主要讲的是它的基础应用:分别用递归和非递归实现3种遍历,哈夫曼树。 1.二叉树的储存结构 (1)使用顺序存储结构(数组)实现。这种方式就是将二叉树的节点储存在一个一维数组中。但是又不能随意存储,必须要保 留二叉树的逻辑结构,...

2018-01-27 12:09:12 244

原创 数据结构之栈(中缀转后缀计算四则运算)

前面转载了一篇有关栈的基础讲解的文章,所以这篇文章就不再说有关栈的概念性内容了。这篇文章主要的内容,就是用学到的栈的基础操作,来实现一个输入中缀四则运算表达式(+ - * /),转换成后缀表达式,然后计算结果并输出的小程序。表达式中可以有括号,操作数可以是多位整数(不支持小数,不过要修改也很容易)。中缀转后缀方法:1.遇到操作数,直接输出;2.栈为空时,遇到运算符,入栈;3.遇到左括号,将其入...

2018-01-26 12:02:22 721

转载 数据结构之栈【转载】

前言:这一系列文章都只是我记录再次回顾数据结构时的收获而写。栈这一篇本来打算写一篇基础,一篇栈计算四则运算的应用,但是之前学栈的时候,看过下面这篇文章,写得很好很详细,图文结合,一目了然。所以栈的基础介绍我就直接转载了他的。原文地址:http://www.cnblogs.com/QG-whz/p/5170418.html1. 栈的简介1.1栈的特点栈(Stack)是

2018-01-26 09:47:39 167

原创 数据结构之线性表【2】

线性表一般分为顺序表和链表,本篇是对链表的回顾,以C++创建简单(带头结点)递增单链表,实现插入和逆置功能为例。链表的形式有很多种,其中最简单、最基础的是单链表 。其他诸如循环链表、双向链表、双向循环链表等,应该算是基于单链表的变形,个人认为其本质也还是单链表。单链表用来表示线性表时,其定义是:一个存储节点分为数据域(data)和指针域(link)两部分,数据域用于储存线性表的一个数据元素(其实也...

2018-01-25 14:05:52 159

原创 数据结构之线性表【1】

线性表一般分为顺序表和链表,本篇是对顺序表的回顾,以C++创建简单学生健康管理系统为例。顺序表是线性表基于数组的存储表示。其定义是:将线性表中的所有项,根据其逻辑顺序(有序或无序皆可),依次存储到一片连续的空间里面,空间的开始位置会被指定好(一般实际起始位置在运行时分配)。1.顺序表节点的结构体定义:struct student{public: int node; string

2018-01-25 10:58:41 273 1

空空如也

空空如也

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

TA关注的人

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