自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java虚拟机——垃圾收集器与内存分配策略(一)

垃圾收集需要完成的三件事情:哪些内存需要回收?什么时候回收?如何回收?Java内存运行时区域中的程序计数器、虚拟机栈和本地方法栈的生命周期和线程一致。每一个栈帧分配多少内存是在类结构确定下来是就已知的,因此这几个区域的内存分配和回收都具有确定性,当方法结束或者线程结束后,内存自然回收。

2024-06-19 19:24:30 797

原创 Java虚拟机——内存区域与内存溢出异常

的数据结构,以便在极小的空间内存存储尽量多的数据,

2024-06-09 16:54:21 1047

原创 解析EventBus

EventBus是一款针对Android优化的发布-订阅事件总线。它简化了应用程序内各组件间、组件与后台线程间的通信。优点是开销小,代码更优雅,将发送者和接收者解耦。

2024-05-27 10:08:18 872

原创 EventBus的基本使用

中。基础组件被其他所有业务组件和功能组件所依赖。MessageEvent就能被所有组件使用。

2023-12-10 18:01:14 229

原创 一步步搭建组件化项目&ARouter的使用

使用上面介绍的 接口 + ARouter的方式进行传递。自定义的类分两种请况:如果可以放在基础组件中,基本所有组件都依赖了它所在的基础组件,那么这个类就相当于全局的。它的对象也可以直接传递,通过ARouter + 接口(暴露服务)的方法,和上面没什么区别。但这种方法让数据类放在基础组件中,其他组件依赖基础组件进行配置的话,会不会让这个类重复多次加载,导致性能下降,运行缓慢?我是个初学者,我也不太懂。在官方文档中介绍了这个接口。

2023-12-10 17:55:09 272

原创 BottomSheet的使用

使用shape约束圆角。

2023-11-26 21:37:35 455

原创 CoordinatorLayout使用详解

CoordinatorLayout是 com.android.support:design 包下用来协调子视图之间位置和动作的布局,遵循Material Design风格。CoordinatorLayout是一个增强版的FrameLayout,他拓展了Framelayout的功能,使得子视图之间可以更好地进行协调和交互。通过给Coordintorlayout的子视图指定Behavior,就可以实现它们之间的交互行为,这也是Coordinator的主要作用。AppBarLayout继承于Linearlayou

2023-11-26 21:32:32 1451

原创 MotionLayout的大致使用

同样是上面的代码。如果不适用外部已经创建好的布局文件,而是使用ConstraintSet定义起始和终止的布局。​​android:text="滑动"​android:text="滑动"ConstraintSet中必须包含元素。起始布局和结束布局基本是由< Constraint>实现的。< Constraint>元素用来声明运动序列其中一个视图的位置和属性,也就是视图的约束。效果和之前是一样的。

2023-11-05 23:20:12 374

原创 ConstraintLayout约束布局的基本用法

ConstraintLayout是一个ViewGroup,它与RelativeLayout(相对布局)相似,其中所有的视图根据试图与之间的关系进行布局,但灵活性要高于RelativeLayout。它的出现主要是为了解决布局嵌套过多的问题,可以灵活地调整定位和控件。

2023-10-29 20:25:20 167 1

原创 MMKV键值对存储的基本使用

MMKV默认会把文件存放在$(FilesDir)/mmkv/目录里,这个FileDir可以根据初始化的MMKV的返回值得到。

2023-10-29 20:14:25 499 1

原创 ViewPager和ViewPager2的简单使用,TabLayout与ViewPager2联用以及轮播图的实现。

ViewPager和ViewPager2的简单使用,TabLayout和ViewPager2的联用以及轮播图的实现代码。

2023-10-29 20:07:37 1468 1

原创 《Android第一行代码 第三版》Retrofit的使用 java代码

Retrofit就是Square公司在OkHttp的基础上进一步开发出来的应用层网络通信技术,使得我们可以用更加面向对象的思维进行网络操作。

2023-09-17 22:14:21 163 1

原创 Android第一行代码第三版 第十三章读书笔记——Jetpack

2017年Google推出了一个官方的架构组件库——Architecture Components,旨在帮助开发者编写出更加符合高质量代码规范、更具有架构设计的应用程序。2018年Google推出了一个全新的开发组件工具及Jetpack,并将Architecture Components纳入其中。

2023-09-14 20:31:43 129 1

原创 Java网络编程

在网络通信协议下,不同的计算机上运行的程序,进行数据的传输。java.net包下的技术可以用来轻松的开发网络应用程序。

2023-07-30 21:50:07 63 1

原创 《Android第一行代码》第九章使用网络技术

借助WebView控件可以在自己的应用程序里嵌入一个浏览器,从而展示各种网页。WebView的()方法的返回值是一个对象。WebSettings 是用于配置 WebView 的一些属性和行为的类。可以通过这个对象来设置 WebView 的缩放、加载图片、启用 JavaScript 等。之后调用()方法来让WebView支持JavaScript脚本。接下来调用了WebView的()方法,并传入了一个的实例。

2023-07-27 21:54:21 146 1

原创 《Android-第一行代码》第二版第五章-广播机制学习笔记

在发送广播之前,先定义一个接收器用来准备接受此广播。用刚才静态注册的方法新建一个广播接收器MyBroadcastReceiver。@OverrideToast.makeText(context, "收到了", Toast.LENGTH_SHORT).show();<receiver然后在AndroidManifest.xml文件中找到receiver标签,添加intent-filter,再添加action。这里就设定一个特定的信息用来接收广播。用intent发送广播的时候要保证这两条信息一致。​。

2023-07-23 20:51:43 215

原创 异常机制Java学习笔记

如果已知Java定义好的异常类不能很好的形容出现的异常:比如上面练习的“姓名长度异常”,“年龄范围异常”。可以使用自定义的异常类。步骤:定义异常类 类名要见名知意;写继承关系 运行时异常继承RuntimeException,编译时异常直接继承Exception。写空参构造写带参构造自定义异常类的意义为了让控制台的报错信息更加的见名知意。​​/** 需求:* */​//1.创建键盘录入的对象//2.创建女朋友的对象try{

2023-06-11 14:05:15 90

原创 Queue接口初步学习,无BlockingQueue接口。ArrayList和Vect,栈推荐使用ArrayDeque。

在 Java 1.2 之后,Collections.synchronizedList() 方法提供了一种将 ArrayList 转换成线程安全的 List 的方法,因此,除非需要使用 Vector 特有的方法,否则应该使用 Collections.synchronizedList() 方法来实现线程安全的 List。Deque接口是Queue接口的子接口,他代表一个双端队列,里面定义了一些双端队列的方法,这些方法允许从两端操作队列的元素,即可以从队列两端(头部和尾部)添加、删除、查看元素。

2023-06-04 15:31:05 146 1

原创 Stream流的使用步骤,获取,中间方法,终结方法

这段代码我先将上面的集合获取到流stream中,然后调用stream的filter过滤方法得到新的流stream1;,如果传递了基本数据类型的数组作为参数,那么会把整个数组的地址作为一个元素放到Stream中。注意:使用toMap方法时,流中的数据的键不能重复,否则会直接报错。concat可以连接类型相同的流,获取到的新的流的类型不变;不同的是,获取数组的Stream流方法是类 Arrays的。concat也可以连接类型不同的流,获取到的新的流的类型。为了简化代码的书写,也为了避免流的误操作,通常采用。

2023-05-28 19:30:44 822

原创 Map系列映射及其实现类

与LinkedHashSet相同,唯一不同的是 如果将要添加的键值对的键在哈希表中已经存在,那么会覆盖该键值对,而不是舍弃新的数据。如果键不存在,那么返回在该函数中设定的默认值,返回了0,0 + 1之后将结果1 和key的键值对 通过put存入哈希表。遍历entrySet()方法生成的Set集合,用getKey()和getValue()方法得到键和值。在添加数据的时候,如果键存在,那么会把原有的键值对对象覆盖,把原来的值返回。要删除的键存在的话,就从Map集合中删除该键值对,并返回该键值对的值。

2023-05-21 17:23:10 251 1

原创 Set系列特点及其实现类

但Set系列中的add()方法要求添加的元素不能重复,所以当元素重复时,元素添加失败,返回false;-----------LinkedHashSet集合,基于哈希表和双链表,效率低于HashSet。如果没有重写hashCode() 方法,不同对象计算出的哈希值是不同的(不同的对象地址值不同)如果找到属性值相同的,不存入;如果已经重写了hashCode() 方法,不同对象只要属性值相同,计算出的哈希值就是一样的。-----------TreeSet集合,基于红黑树,后续也可以用List集合实现排序;

2023-05-21 17:13:49 125 1

原创 二叉树的顺序存储(数组转二叉树和二叉树转数组)Java实现

和可以相互转化。

2023-05-21 17:04:52 532 1

原创 二叉树(二叉查找树)的遍历(前中后序),添加,查找,删除,节点个数等基础操作,java实现及代码演示。

二叉树是一种常用的树结构。对于树,我们称每一个节点的子节点个数为度;二叉树就是任意一个度小于等于2树,也就是说,二叉树中任意节点的子节点个数小于等于2;二叉查找树是指按照一定规则次序排列的二叉树,这种二叉树左子树的任意节点的值小于当前节点,右子树的任意节点的值大于当前节点,二叉查找树中不能有重复数据。这是我通过随意数据画出的二叉查找树,之后的操作都将用这组数据作为测试;

2023-05-21 16:47:47 900 1

原创 Collection—List集合的特点,方法及遍历(Java)

解决:使用 for each (增强 for )循环遍历的时候不要修改 list 的元素个数。注:与 普通的迭代器一样,再遍历集合的时候,不能使用集合的方法进行添加和删除,会抛出 并发修改异常。List 集合继承了接口 Collection ,所以 Collection 的三种遍历方法 List集合系列都适用。注:技术指导:黑马程序员B站Java视频 、 本站作者anxin_hw的list.remove()方法的详解。普通 for:如果遍历时想要操作索引,可以用普通 for;可重复:存储的元素可以重复。

2023-04-30 12:15:02 206 1

原创 集合入门和体系结构,Collection接口和常用方法和遍历方式

Collection是单列集合的顶层接口,所有的方法被 List 和 Set 系列集合共享;常见成员方法:add clear remove contains isEmpty size三种遍历方式:迭代器:在遍历的时候需要删除元素,只能使用迭代器;增强for、Lambda表达式:仅仅想遍历集合观看黑马程序员B站 java 视频学习黑马程序员Java零基础视频教程_上部(Java入门,含斯坦福大学练习题+力扣算法题和大厂java面试题)_哔哩哔哩_bilibili。

2023-04-23 10:14:46 63 1

原创 单链表的基本操作(增查改删)及单链表的应用(合并,倒置)

单链表

2022-11-27 15:01:22 254 1

原创 函数递归的简单例题摘抄总结

递归的例题总结摘抄。正(倒)序输出一个数的各位数字;求n!;斐波那契;输出一个字符串的长度;汉诺塔

2022-11-20 17:21:34 581 1

空空如也

空空如也

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

TA关注的人

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