- 博客(21)
- 收藏
- 关注
原创 03. 对象的创建,存储和访问原理
下面用一张图总结Java对象创建的过程**掘金:https://juejin.im/user/499639464759898简书:http://www.jianshu.com/u/92a2412be53e邮箱:[934137388@qq.com]
2025-03-06 15:03:14
868
原创 02. JVM内存模型
程序计数器就是用于记录当前 Java 线程执行到的字节码位置。每个线程创建时都会有属于自己的程序计数器。程序执行流的控制:我们可以通过改变程序计数器来实现字节码跳转,从而去控制代码流,常见的循环等就依赖于这个。字节码位置的保存:程序计数器记录了当前线程执行的字节码的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪儿。程序计数器会OOM吗?注意:程序计数器是唯一一个不会出现OutOfMemoryError的内存区域,因为它要存储的数据量很小,就是一个地址而已。cpu不是有硬件pc吗?
2025-03-06 14:59:33
1013
原创 01. 类加载机制
先看一下java程序的执行流程图有三个关键的器:Java编译器,类装载器,解释器。.java源文件通过编译器编译后形成符合JVM标准的字节码文件。加载器将将字节码文件从外部加载进JVM中,并转化为JVM中类的运行时数据结构。然后是解释器:当执行程序时,我们找到方法区中的字节码文件,通过解释器转化为对应硬件平台的机器语言进行执行。好了,类加载就是Java程序执行的一个阶段。在某些场景下,开发者可能需要自定义类加载器,那么它要继承并重写方法来实现类的加载逻辑。
2025-03-06 14:50:58
1010
原创 01. 消息机制介绍
要理解消息机制,我们首先要理解进程和线程间的通信的差异。对于进程,他们之间通信相对困难,因为进程彼此之间隔离。所以他们的关键点是解决隔离问题,通常借助系统调用将用户空间数据复制到内核空间,再通过内核来传递数据,以此来消除隔离。对于线程,他们之间通信相对简单,因为他们都属于同一个进程,拥有相同的地址空间,理论上它们可以直接访问彼此的数据。那么线程间通信困难点是什么?
2025-03-06 14:38:45
677
原创 04. 滑动冲突处理
什么是滑动冲突?滑动冲突指的是:当父容器和子 View都可以响应滑动手势时,系统无法判断应该让哪一个控件处理滑动事件,导致滑动行为出现异常。掘金:https://juejin.im/user/499639464759898简书:http://www.jianshu.com/u/92a2412be53e邮箱:[934137388@qq.com]
2025-03-06 14:30:12
920
原创 01. View事件分发基础介绍
View有两个重要的功能,一个是显示UI,一个是响应用户操作。显示UI借助绘制过程实现。而响应用户操作借助事件分发实现。当用户进行点击操作后,系统需要将这个点击事件传递给一个具体的View去响应处理。掘金:https://juejin.im/user/499639464759898简书:http://www.jianshu.com/u/92a2412be53e邮箱:[934137388@qq.com]
2025-03-06 14:27:05
730
原创 04. 垃圾回收机制
什么是垃圾回收?垃圾:对于一个对象,其占据内存空间,对象引用持有其内存空间地址,通过引用可以正确访问到该内存空间,如果该对象无对象引用,那么虽然它有内存空间,但是我们没有它的地址,无法正常访问到它,这就是垃圾。(怎么通过算法找到这些对象呢?这是简要的不可达,实际上更为复杂,要从GC Roots出发,如果无法通过引用链访问到,那就是不可达。回收:清理“垃圾”占用的内存空间(怎么通过算法实现回收呢?
2025-03-05 20:00:20
911
原创 01. Binder机制
Binder 是一种进程间通信机制,从字面上来解释 Binder 有胶水、粘合剂的意思,顾名思义就是粘和不同的进程,使之实现通信。掘金:https://juejin.im/user/499639464759898简书:http://www.jianshu.com/u/92a2412be53e邮箱:[934137388@qq.com]
2025-03-05 08:55:08
743
原创 06. View工作原理
扁平化视图层级:每个视图层级都会增加measure和layout的复杂度。扁平化视图层级可以减少measure和layout的调用自定义 ViewGroup 优化布局逻辑:默认的ViewGroup测量逻辑会遍历所有子视图,可能造成性能浪费。我们可以 通过自定义ViewGroup的测量逻辑来优化性能避免在onDraw中分配对象:这会导致频繁的内存分配和垃圾回收(GC)。优化invalidate:调用会触发onDraw,过于频繁的调用会增加 CPU 和 GPU 的负担。避免不必要的调用。
2025-03-05 08:46:56
1214
原创 05. onDraw介绍
绘制背景:背景通常是设置在视图上的background,如纯色背景、渐变、图片等。<TextView这里就是一个蓝色背景 android:background=“#0000FF”绘制自己:绘制视图的内容,例如文本、图形等。@Override// TextView 的默认实现会绘制文本内容// 白色文字// 18sp这里就是绘制白色的Hello world文本ViewGroup是容器,不显示内容,因此无需重写该方法绘制子视图:在该方法中,ViewGroup会遍历所有子视图,并调用它们的。
2025-03-05 08:43:25
549
原创 04. onLayout介绍
掘金:https://juejin.im/user/499639464759898简书:http://www.jianshu.com/u/92a2412be53e邮箱:[934137388@qq.com]
2025-03-05 08:39:51
746
原创 03. onMeasure介绍
简书:http://www.jianshu.com/u/92a2412be53e邮箱:934137388@qq.com掘金:https://juejin.im/user/499639464759898泡在网上的日子:http://www.jcodecraeer.com/member/content_list.php?
2025-02-18 16:38:20
818
原创 02. View绘制基础
掘金:https://juejin.im/user/499639464759898简书:http://www.jianshu.com/u/92a2412be53e邮箱:934137388@qq.com。
2025-02-16 19:18:21
979
原创 01. View基础概念
View代表了一个矩形区域,可以用来显示内容或响应用户的交互。掘金:https://juejin.im/user/499639464759898简书:http://www.jianshu.com/u/92a2412be53e邮箱:934137388@qq.com。
2025-02-16 19:12:37
1071
原创 04. ContentProvider基础介绍
它是应用程序间通信组件,他用于在不同应用间共享数据(也即:IPC跨进程通信),借助ContentProvider提供的接口,应用可以将内部的数据暴露给外部应用,或者从其它应用中读取共享的数据。Broadcast和这个也是通信的,他们两者有什么区别呢?Broadcast更像是发送一个任务,让你去处理和完成。ContentProvider更像是把自己当作数据库暴露出去。:用于简化对URI的ID添加和解析操作UriMatcher。
2025-02-15 22:16:16
610
原创 03. BroadcastReceiver基础介绍
在 Android 系统中,广播(Broadcast)是一种用于Android系统不同组件间的通信机制。当其为全局广播时,进行跨进程组件通信时,依赖于Activity Manager Service(AMS)来管理广播的发送和接收,底层通信机制使用Binder。当其为本地广播时,进行进程内部组件通信时,依赖于通过一个局部的广播管理器在应用进程内部直接传递广播,避免了跨进程的开销。则是对发送出来的Broadcast进行过滤、接受和响应的组件。
2025-02-15 22:12:41
848
原创 02. Service基础介绍
什么是 ServiceService是一个不需要和用户交互,运行在后台的 Android 组件。负责执行与用户界面无关的任务。比如后台播放音乐和后台下载。如何理解“不与用户交互”和“后台运行”不与用户交互:指服务无需显示 UI 界面,也不需要直接响应用户的点击或输入事件。后台运行:指服务在后台任务栈中运行,优先级较低,可能被系统回收。Service默认运行在应用的主线程中,因此如果你在Service。
2025-02-13 15:27:11
866
原创 01. Activity基础介绍
Activity是一个为用户提供应用界面的组件,用户借助其和应用完成交互。每个Activity一般对应一个屏幕。购物应用中的商城列表和购物车可能是不同的 Activity,也可能是同一 Activity 中的多个 Fragment。怎么理解上面的提供界面和与用户进行交互?显示界面Activity是一个界面容器,负责容纳view对象(如按钮、文本框、图片等)来构成用户界面,具体的界面绘制由View层完成。响应用户操作:用户的交互事件(如点击、输入、滑动等)首先由具体的View对象捕获,Activity。
2025-02-12 23:51:41
825
原创 01. Throwable异常体系
父类Object,子类Throwable,往后是Error错误和Exception异常。错误有virtualMachineError和另一个。异常分为内部异常和外部异常,也就是IOException和RuntimeException。Error(错误):很严重的,程序无法处理的错误,大多数错误都不是由程序本身产生的,而表示代码运行时 JVM(Java 虚拟机)出现的问题。
2024-10-24 23:24:33
1722
原创 02. String类型
简书:http://www.jianshu.com/u/92a2412be53e掘金:https://juejin.im/user/499639464759898。
2024-10-20 23:49:04
1708
原创 01. Object根类
简书:http://www.jianshu.com/u/92a2412be53e掘金:https://juejin.im/user/499639464759898。
2024-10-17 22:44:24
1806
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人