自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

摸鱼小小虫的博客

在Android学习中摸爬滚打

  • 博客(74)
  • 收藏
  • 关注

原创 JVM—虚拟机类加载器

是一种软件设计模式,它通过将系统中的相关组件(类、函数、变量等)封装到一个独立的容器中,实现组件之间的逻辑隔离。这个容器可以被动态地配置和修改,实现不同的功能需求。

2024-08-03 23:43:37 1232

原创 JVM—虚拟机类加载时机与过程

一个类型从被加载到虚拟机内存开始,到卸载出内存为止,它的生命周期会经历加载、验证、准备、解析、初始化、使用、卸载七个阶段,其中验证、准备、解析统称为链接。除了初始化外,其他阶段的顺序是,注意是开始而不是执行,因为这些阶段都是混合交叉的进行。关于什么阶段加载、JVM规范没有强制约束,而是交给虚拟机自由把握,但是JVM规范严格规定了六种情况必须立即对类进行初始化(加载、验证、准备、解析自然在此之前)接口中定义JDK8加入的默认方法(被Default方法修饰的接口方法),这个接口类必须在实现类之前初始化。

2024-08-03 23:31:23 1048

原创 JVM—类文件结构

Class文件是一组以字节为基础单位的二进制流,各个数据项目严格按照顺序排列紧凑的在文件中,中间没有任何分隔符。Class文件采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构只有“无符号数”和“表”两种数据类型无符号数:属于基本数据类型,以u1、u2、u4、u8分别表示1个字节,2个字节...这样。可以用来描述索引引用、数字、数量值等。表:是由多个无符号数或者其他表作为数据项构成的有层次关系的复合数据类型,一般以_info结尾,整个Class本质上也可以视作一张表。

2024-08-02 17:53:44 986

原创 JVM—CMS收集器

CMS基于标记-清除算法,会产生大量的内存碎片,内存碎片过多会导致大对象的分配出现问题,严重的话会出现OOM。(Floating Garbage):由于GC线程和用户线程并发,在GC线程运行过程中产生的垃圾就叫浮动垃圾。CMS收集器(Concurrent Mark Sweep)是一种以获取最短回收停顿时间为目标的收集器。重新标记则是为了修正并发标记期间,用户程序继续运作,导致标记变动的那一部分对象的标记记录。清理标记阶段判断已经死亡的对象,由于不需要移动存活对象,所以该过程也是与用户线程并发的。

2024-08-02 17:43:22 356

原创 JVM—垃圾收集算法和HotSpot算法实现细节

分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。分代垃圾回收采用分治的思想,进行代的划分,把不同生命周期放在不同代上,不同代采用最适合它的垃圾回收方法进行回收。

2024-08-01 19:26:15 1811

原创 JVM—对象已死?

在堆里面存放着 Java 世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”。

2024-08-01 19:17:49 969

原创 JVM—HotSpot虚拟机对象探秘

对象只是普通对象,不包括数组和Class对象:当虚拟机遇到字节码New指令时,先检查这个指令的参数是否可以在常量池定位到一个类的符号引用,并且加载这个符号引用代表的类是否被加载、解析、验证、初始化过。对象所需内存在类加载完成后就可以完全确定下来,实际上是在Java堆中划分一块定量大小的内存。:假设Java堆中使用过的内存在一边,未使用过的内存在一边,中间有一个指针作为分界点指示器,。Serial、ParNew带压缩整理的的收集器就是采用这种算法。

2024-07-29 17:18:18 1038

原创 JVM—运行时数据区域

主要介绍了运行时数据区的几个关键部分。首先,程序计数器、虚拟机栈、本地方法栈均为线程私有区域。其次,Java堆是线程共享的,用于存储对象和数组;常量池也是堆的一部分。方法区同样是线程共享的,包含运行时常量池和类信息。此外,还介绍了直接内存的使用。最后,列举了常见的内存溢出问题,包括Java堆内存溢出、Java方法区内存溢出以及虚拟机栈溢出等问题。这些概念是理解Java内存管理的重要基础。

2024-07-29 17:11:57 861

原创 【Android】Room数据库的简单使用方法

简单介绍了Room数据库的基本用法,以及Room数据库配合RXjava的用法

2024-05-08 21:11:51 3507

原创 【Android】源码解析Activity的结构分析

简单介绍了Activity的结构,以及Activity,Window,View之间的管理。

2024-05-08 21:09:52 1565 2

原创 【设计模式】六大原则详解,每个原则提供代码示例

设计模式的六大原则是面向对象设计中的基本准则,它们有助于编写灵活、可维护、可扩展的代码。这六大原则分别是:单一职责原则(Single Responsibility Principle,SRP)、开放封闭原则(Open/Closed Principle,OCP)、里氏替换原则(Liskov Substitution Principle,LSP)、依赖倒置原则(Dependency Inversion Principle,DIP)、接口隔离原则(Interface Segregation Principle)

2024-02-01 22:04:58 1333 1

原创 【Android】在Android上使用mlKit构建人脸检测程序

在Android上构建人脸检测程序

2023-12-15 23:37:42 3083 6

原创 【Android】MVC与MVP的区别,MVP网络请求实践

文章介绍了MVP和MVC的区别,使用OKHttp实现MVP模式的网络请求并且尝试使用Rxjava和Retrofit2代替OKHttp。

2023-12-15 16:17:41 1756

原创 【JavaPoet】浅析JavaPoet的APT代码生成功能

简单介绍了APT技术、分析了JavaPoet在路由框架的作用和使用方法

2023-12-12 23:57:52 1587 1

原创 【EventBus】EventBus源码浅析

简单分析了Eventbus的构造方法,订阅事件、取消订阅,发送Post的源码

2023-12-12 23:54:32 1796 3

原创 【EventBus】EventBus的基本用法

EventBus是一款针对于Android优化的发布-订阅事件总线。它优化了各组件、组件与后台之间的通信,可以用于代替广播实现通信。文章介绍了EventBus的基本使用方法

2023-12-11 23:37:22 2586

原创 【Android】保姆级教程一步步教你完成组件化搭建过程

保姆级教程教你一步步完成组件化的搭建

2023-12-11 23:33:08 1556

原创 【Android】使用ViewPager2实现轮播图效果,手动/自动轮播图

使用ViewPager2实现一个简单的轮播图效果,实现手动/自动轮播图

2023-11-14 20:49:55 4928 1

原创 【Android】ViewPager2和TabLayout协同使用,实现多Fragment页面切换类似于QQ音乐,bilibili效果

ViewPager2和TabLayout协同使用,实现多Fragment页面切换类似于QQ音乐,bilibili效果,实现滑动切换界面的效果

2023-11-14 20:37:45 6734 1

原创 【MMKV】一篇文章带你使用(MMKV--基于 mmap 的高性能通用 key-value 组件)

MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。也是腾讯微信团队使用的技术。本文带你了解MMKV的基本使用方法。

2023-11-08 21:40:01 9534 1

原创 【RxJava】RxJava/RxAndroid的操作符使用(二)

介绍了RxJava中常用的操作符功能和使用方法

2023-11-08 20:14:14 530

原创 【RxJava】RxJava/RxAndroid的基本使用方法(一)

介绍了RxJava的基本用法,相关概念,事件调度器,Observable、Flowable、Single、Completable、Maybe和Scheduler——调度者、以及基本的操作符

2023-11-06 22:59:58 2137 1

原创 【Ubuntu】ubuntu22.04使用VNC链接服务器远程桌面

本地主要需要一个VNC客户端,用来远程连接服务器端的VNC(在不安装Web版本VNC情况下)。

2023-11-06 11:46:21 7070

原创 【Retrofit2】的基本用法

Retrofit 是一个用于在 Android 应用程序中进行网络请求的开源库。它是由 Square 公司开发的,提供了一种方便的方式来处理 HTTP 请求和响应。Retrofit 可以帮助开发者将 HTTP 请求映射到 Java 接口,并将服务器的响应映射到 Java 对象,从而简化了网络通信的过程。本质还是OkHttp。

2023-11-06 11:43:58 942

原创 【Android】开发中关于Ui的语法糖

介绍了一些Ui的简单语法糖,有时候还是非常有用的。

2023-10-27 19:03:24 554 3

原创 【数据结构与算法】递归为什么这么难?一篇文章带你了解递归

美国计算机科学家——彼得·多伊奇(L Peter Deutsch)在《程序员修炼之道》(The Pragmatic Programmer)一书中提到“To Iterate is Human, to Recurse, Divine”——我理解的这句话为:人理解迭代,神理解递归。文章列举了一些递归的经典操作包括:斐波纳契数列、汉诺塔、冒泡排序的递归写法。以及力扣的一些链表的练习题使用递归去完成

2023-10-27 19:00:39 1427

原创 【Kotlin】面向对象基础使用方法(继承、接口、Lambda、空指针检查机制等)

Kotlin面向对象基础使用方法(继承、接口、Lambda、空指针检查机制、数据类、单例类等)

2023-09-11 21:27:57 723

原创 Material Design的基本使用方法、Tollbar、菜单等

Toolbar、DrawerLayout——抽屉布局、悬浮按钮与可交互提示、监听布局、卡片式布局

2023-09-11 14:10:19 1130

原创 【Kotlin】函数的基本用法以及函数类型

函数的基本公司、函数的缺省值、unit函数、Noting函数、匿名函数等

2023-09-11 14:05:41 569

原创 【Kotlin】变量与控制条件的基本用法

介绍Kotlin的基本变量和控制条件

2023-09-11 14:02:41 512

原创 【Typora】常用快捷键

Typora的常用快捷键总结

2023-09-11 13:55:35 4471

原创 【Android】探究Server——Service的基本用法、服务与活动间的通信、服务的生命周期、使用前台服务以及《第一行代码》中后台下载实例的补充(基于android 13)

Service的基本用法、服务的开始与销毁、服务与活动间的通信、服务的生命周期、使用前台服务以及《第一行代码》中后台下载实例的补充(基于android 13)

2023-08-04 10:55:28 1186

原创 【Android】最新版Android13使用Notification,Notification的基本使用和进阶使用

创建一个通知、注册一个渠道、为消息设置点击事件、设置闪烁灯、设置震动、 设置声音、创建富文本通知内容

2023-08-02 21:21:48 8133 11

原创 【Android】多线程编程、异步消息处理机制以及new Handler()被标记为过时的解决办法,解决Handler内存泄漏问题和AsyncTask的基本用法

Android多线程编程、异步消息处理机制以及new Handler()被标记为过时的解决办法,解决Handler内存泄漏问(当Activity被销毁时,如果其中使用的Handler被持有,并且在外部引用它的对象的生命周期之外保持活动状态,这就可能导致内存泄漏。)、AsyncTask的基本用法

2023-08-02 14:49:04 2124

原创 【Android】使用网络技术、WebView的用法、OkHttp的用法、解析XML格式数据(Pull,SAX)、解析JSON格式数据(JSONObject、GSON)

Android使用网络技术、WebView的用法、OkHttp的用法、解析XML格式数据(Pull,SAX)、解析JSON格式数据(JSONObject、GSON)

2023-08-01 09:32:48 471

原创 【Java】回调机制、同步/异步调用

同步调用、异步调用、同步回调、异步回调,流程图和例子帮助理解同步和异步是什么。

2023-07-31 21:08:39 1650

原创 【Android】《第一行代码》中实现跨程序数据共享中两个应用无法正常交互的权限问题、java.lang.IllegalArgumentException: Unknown URL 异常问题

解决两个应用之间的java.lang.IllegalArgumentException: Unknown URL 异常问题,实现跨应用权限的三种方式。

2023-07-28 10:40:58 289

原创 【Android】探究ContentProvider、运行时申请权限的做法、访问其他程序中的数据、创建自己的ContentProvider、实现跨程序数据共享并且解决存在的权限问题导致无法访问。

探究ContentProvider、运行时申请权限的做法、访问其他程序中的数据、ContentResolver的基本用法、创建自己的ContentProvider、实现跨程序数据共享并且解决存在的权限问题导致无法访问。解决第一行代码中实现跨数据共享的应用。无法访问应用1的问题。

2023-07-28 10:33:46 2429

原创 【android】数据的储存——SharedPreferences储存、SQLite的基本用法

android数据的储存、文件的储存、SharedPreferences储存、获取SharedPreferences对象的两种方式、SQLite的基本用法增删改查

2023-07-26 20:13:46 1921

原创 【Git】常用命令总结

总结了git的常用命令,创建仓库和初始化、添加和提交更改、分支管理、查看状态和历史、撤销更改、远程仓库

2023-07-25 18:53:54 580

空空如也

空空如也

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

TA关注的人

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