自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 30秒学会UML-功能类图

强依赖,Bird主体消失,强引用Wing必须同时或提前消失。单个对象关联,只有mWing一个成员变量作为关联Wing。弱依赖,因为一个集合都是该依赖对象,多一个少一个无所谓。childA和B是继承于对象类Parent。语法:空心三角+实线,指向父类。一个集合都是关联的对象。

2024-07-16 19:31:55 723

原创 SQLite数据库与ROOM数据库

Entity@Dao@Insert@Delete带有@Database注解,注解相关联 数据实体该类为抽象类,继承并扩展RoomDatabase定义获取Dao类的抽象方法。

2024-07-15 10:27:14 680

原创 Kotlin标准函数(语法糖)let with run also apply快速讲解

语法糖,标准函数

2024-07-14 19:54:58 569

原创 Android开发中架构模式--MVC/MVP/MVVM

View中调用Controller中的方法,把方法具体操作逻辑交给Controller实现。Controller中调用Model中的方法,把数据传给Model,让Model去处理数据。Model中调用View中的方法,把数据处理结果,由方法调用来更新UI界面。ViewModel中调用Model中方法,让Model处理数据。Presenter中调用Model中方法,获取处理后的返回值。View中调用ViewModel中的方法处理业务逻辑。View中调用Presenter中方法处理业务逻辑。

2024-07-12 19:39:11 1914

原创 Android数据库基础

原理底层是采用Binder机制为存储和获取数据提供统一接口,实现应用程序间数据共享通过URI可操作不同ContentProvider中数据外部进程可通过ContentResolver类与ContentProvider进行交互进程间数据交互与共享,实现跨进程通信ContentProvider相当于搬运工,真正数据源还是数据库、文件、XML、网络。

2024-07-11 19:18:29 761

原创 UML时序图的绘制

一分钟学会绘制时序图。

2024-07-10 16:49:34 989

原创 Kotlin构造函数

class BAT private constructor(){ companion object{ //单例对象创建 } }构造器 constructor关键字前 无注解或修饰符作用,可直接省略。//在构造器声明,在init初始化程序块 初始化。// 在构造器声明,在类内部初始化。使外部无法通过主构造创建对象。

2024-07-09 17:54:29 809

原创 Android常用设计模式(小白必看)

Java/Kotlin的五大最常用设计模式,通俗易懂

2024-07-09 17:45:32 763

原创 三大消息传递机制区别与联系

属于安卓全局监听机制,接收系统或应用发出的消息(应用级)EventBus:应用内各组件间的解耦和消息传递(组件级,如Activity向Service传递信息):向用户通知消息(UI界面展示)1、定义区别:EventBus1、发布/订阅事件总线库 - 》“发布-订阅模式”2、异步分发3、应用组件间的解耦(不会直接相互引用)与消息传递4、EventBus适用于任何组件之间的通信,包括Activity、Fragment、Service等5、实现“一发多收”功能,发送后,多组件都能接受此事件。

2024-05-11 20:36:08 830

原创 力扣82-链表、迭代 的思考

力扣82-利用链表存储结构、迭代方法 的思考总结运用

2024-04-30 17:51:37 282 1

原创 二叉树的遍历算法

(3)每一层是检索 上一层更新的队列,但队列可能会在本层有新增结点——检索前先记录上一层队列数量,按此数量,一个个弹出队头并检索。(1)队列(先进先出)来迭代一层内的结点——更新队列,加入存在的左右子结点。当前结点-》左子结点1-》左子结点2-》右子结点2-》右子节点1。(2)直到下一层无结点,循环再停止——该层队列为空。下例:在记录本层数据后,无需返回上一层值,直到有结点为空停止。Java构造树结构——其实是 自定义树结点类型。原理 :(1)从上到下分层。(2)给上一层返回什么。(1)哪里进入下一层。

2024-04-29 21:05:52 411

原创 Java自带的栈和队列(使用巨方便)

栈——“后进先出”原则。

2024-04-25 00:33:45 466

原创 30s搞懂HashSet基本原理与方法

HashSet是个存数据的集合,在HashSet中只能输入一个值。所以允许(默认null)的(hashMap也不安全)

2024-04-22 21:31:14 237

原创 两张图搞定哈希表基础

1.hashmap数据结构2.数据插入原理3.扩容机制

2024-04-22 20:45:32 132

原创 一篇文章搞懂-线程与携程

线程(Thread)是操作系统的资源,资源调度和执行的最小单位,创建、切换等操作消耗资源协程(Coroutine):无需操作系统,为编程语言自带。称为用户态线程,轻量级线程。

2024-04-15 14:52:27 337 1

原创 Java进阶篇——线程通信

Monitor——同步监视器,对象可以是任何类型,因此定义在Object类Condition——Lock对象创建,并依赖于Lock。

2024-04-15 14:09:24 259

原创 Java基础之注解

什么是注解?注解(Annotation):是对代码的的描述,以代码形式保存注解的本质: 特殊的声明注解: 创建了一个特殊接口使用注解: @注解名(创建注解的一个对象)

2024-04-15 12:02:44 318

原创 JAVA基础之反射

JAVA反射机制是在中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种的功能称为java语言的反射机制。

2024-04-15 11:25:12 242

原创 简述AQS理解

AQS名为队列监视器,用来构建锁的基础框架,Lock实现类都是基于AQS实现的。

2024-04-14 15:22:21 236

原创 从零全面认识 多线程

多线程环境下,对共享资源的访问不会导致数据出错。因此和单线程执行相同的操作,结果相同多个线程相互等待对方释放资源,导致无法继续执行。

2024-04-14 14:57:05 897

原创 从零开始HashMap

从JAVA1.8开始,当链表长度达到8 && 数组容量达到64,则链表转化为红黑树:存储key经过hashcode()计算出的hash值:通过线性结构或树状结构存储hash值相同的value。

2024-04-13 15:01:16 688

原创 Java内存泄漏&内存溢出

OOM内存溢出是指应用程序尝试使用更多内存资源,而系统无足够的内存,导致程序崩溃。内存泄漏是指应用程序中分配的内存未能被正确释放,导致系统中的可用内存逐渐减少。

2024-04-12 20:08:40 344

原创 MVVM架构模式

: 数据劫持和发布-订阅模式:gettersetterObserver——》数据监听器。对数据对象属性进行监听,变化后通知订阅者Compiler——》指令解析器。扫描模板,指令解析,绑定事件Watcher——》订阅者。关联Observer和Compile,能够订阅并收到属性变动的通知,通过执行Update()执行指令绑定的相应操作,更新视图。

2024-04-12 19:00:32 490

原创 Java多线程开发——基础篇

多线程环境下,对共享资源的访问不会导致数据出错。因此和单线程执行相同的操作,结果相同多个线程相互等待对方释放资源,导致无法继续执行4.25.线程池的掌握。

2024-04-12 10:15:04 704

原创 Handler——小白能懂的原理,老鸟需要的面经

Handler内部通过与Looper和MessageQueue的配合,实现了消息处理和线程间通信的功能。子线程中不能直接new一个Handler,因为子线程默认没有Looper,而Handler的构造函数中需要传入一个Looper对象。主线程可以是因为主线程默认有与之关联的Looper。主线程的Looper第一次调用loop方法是在ActivityThread类的main方法中。

2024-04-12 00:37:50 992

原创 RecyclerView与ListView区别

ListView是”一锅端”,将所有的mActiveViews都移入了二级缓存mScrapViews RecyclerView是灵活地对每个View修改标志位,区分是否重新bindView。其实ListView也可以局部刷新,不过要手动去Adapter中,实现一个onItemChanged()方法,在方法里面获取到这个item的position。但是ListView并没有实现动画效果,但我们可以在Adapter自己实现item的动画效果;

2024-04-11 13:58:22 620

原创 RecyclerView的复用与回收

目录0.前言:推荐初学者阅读RecyclerView机制1.复用与回收的关系1.1复用流程1.2回收流程1.3复用与回收的先后关系2.刷新机制

2024-04-11 13:19:13 1952

原创 RecyclerView机制详解

作用:已添加item与被删除item的场景:RecyclerView滚动时、删除Item后用notifyItemRemoved通知更新作用:存放范围的Item场景:1、可见范围内的Item有更新,并且使用notifyItemChanged方法通知更新时;2、播放动画(播放完viewholder会交给RecycledViewPool)

2024-04-10 21:21:52 710

原创 Activity两种切换方式

首先创建一个Intent对象,指定当前Activity(CurrentActivity.this)和要启动的目标Activity(NextActivity.class);要将一个Activity入栈(即启动一个新的Activity并将其添加到Activity堆栈中),可以使用Intent和startActivity()方法。然后使用startActivity()方法启动目标Activity,将其添加到Activity堆栈中。

2024-04-10 14:52:13 186

原创 onSaveInstanceState()与onRestoreInstanceState()

Android为我们提供了onSaveInstanceState(Bundle outState)和 onRestoreInstanceState(Bundle savedInstanceState)用于“保存和恢复”数据。而调用了onSaveInstance()不一定,需要activity重建,才能调用onRestoreInstance()调用onRestoreInstance() 一定 在上个Activity调用了onSaveInstance()为了避免系统回收activity导致数据丢失。

2024-04-10 14:42:12 960

原创 安卓四大组件——ContentProvider

管理 结构化数据集的访问 ,封装数据,应用间数据共享。

2024-04-10 00:41:52 241

原创 安卓四大组件——Service篇

长时间位于后台(无界面)完成用户指定操作。

2024-04-09 22:16:10 524

原创 安卓四大组件—BroadCast广播篇

在标签里面设置优先级,android:priority越高的接收器越先收到,同等优先级情况下,谁先启动的快谁先收到广播。发送有序广播:sendOrderedBroadcast(intent,null)依赖于注册的Activity,只要此Activity关闭,广播也失效。使用intentFilter过滤器,然后添加一个action值,发送标准广播:sendBoardcast(intent)与APP的进程无关,只要系统开启,广播接收器一直打开。实例化一个broadcastReceiver对象;

2024-04-09 20:27:26 502

原创 力扣19 链表 删除倒数N结点

单向链表 由value + next 组成 ,value包括此结点的各基础属性,next存储下一个结点地址curr.next 代表curr结点指向的下一个结点,为2;pre.next = curr.next 代表赋值 将curr下一个结点,作为pre的下一个结点。

2024-03-26 16:29:47 399

原创 力扣-20 有效的括号详解 Java

为了对比都是从内而外,一个个匹配,全部匹配成功即为有效字符。

2024-03-24 20:26:17 282

原创 一篇文章搞懂并设计循环队列

队满 isFull() 只需 (rear+1)%max_size == front。rear: 一个“为指针” ,其实就是个索引值,代表(队尾+1)的位置。先判断非空,再通过(rear-1+max_size)%size 找到。front :一个“头指针”,其实就是个索引值,代表队头的位置。“假溢出”——》 出队列会空出存储空间,无法再次利用。先判断队列非空,再更新front索引。先判断非空,再通过front直接找到。先判断队列非满,再更新rear索引。如图: 索引为0和1的空间被浪费。

2024-03-24 16:11:00 376

原创 10s用递归实现反转链表(JAVA)

当反转A->B的链接时,当B改成指向A(B->A), 就找不到C了;:当当前节点为null,不用再改变节点链接了;利用递归,再找到下一个节点和它之前的节点 重复上述步骤;所以需要一个变量临时保存下一个节点C;最后记得 把最后的结点当作头结点传出。记得原来头结点 的指向改为null。反转 A->B->C。

2024-03-02 15:21:38 168

原创 一篇文章速通static关键字(JAVA)

name,age未用static修饰 属于对象属性,在堆空间分别占不同空间,堆空间有对象即存在nation 属于类属性 ,直接存放在静态区,单例,类加载时即存在(关键)静态属性或方法,只加载一次,且在类加载 ,保存单例到方法区的静态域,类和对象在其他类都可通过不同方式调用,且数据和操作全部共享。

2024-03-02 14:53:34 398

原创 一分钟快速过安卓四大组件——Activity篇

应用场景:实例代码:2.启动模式 LaunchMode 说明 standard 系统在启动它的任务中创建 activity 的新实例 singleTop 如果activity的实例已存在于当前任务的顶部,则系统通过调用其onNewIntent(),否则会创建新实例 singleTask 系统创建新 task 并在 task 的根目录下实例化 activity。但如果 activity 的实例已存在

2024-02-28 00:05:10 732

原创 本地数据库Room——study_1

Room 持久性库在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库2.组成。

2024-02-27 23:46:12 404

空空如也

空空如也

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

TA关注的人

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