自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Room数据库学习记录

Room数据库使用Room数据库简介:优点Room的三个主要组件Room的相关依赖使用Room数据库使用@Entity创建表使用@Dao,创建操作数据库的接口使用@Database,创建数据库使用:数据库升级1.简单粗暴式2.优雅友好式3.跳跃式升级Room数据库简介:Room是Google官方推出的Architecture Components中的一个持久性数据库,提供了基于SQLite的抽象层,可以在充分利用SQLite功能的前提下流畅的访问数据库。Room是google官方开发的对象关

2022-02-16 12:25:01 1439 1

原创 Intent传输序列化对象(Parcelable)

Parcelable序列化对象简介:鉴于Serializable在内存序列化上开销比较大,而内存资源属于android系统中的稀有资源(android系统分配给每个应用的内存开销都是有限的),为此android中提供了Parcelable接口来实现序列化操作,Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable使用:1.实现Parcelable接口,重写其两个方法: //对对当前对象的内容描述,一般不用管,返回0即可。

2022-02-08 23:32:40 1673

原创 Retrofit2讲解

Retrofit2学习分析详解,附接口,附遇见问题分析

2021-12-07 22:18:32 4072

原创 ConstraintLayout简单使用

ConstraintLayout一:位置约束基本方向约束常用的控件属性:<!-- 基本方向约束 --><!-- 我的什么位置在谁的什么位置 --> app:layout_constraintTop_toTopOf 我的顶部和谁的顶部对齐 app:layout_constraintTop_toBottomOf 我的顶部和谁的底部对齐 app:layout_constraintBottom_toTopOf="" 我的底部和谁的顶部对齐 ap

2021-10-31 17:47:19 1712

原创 TabLayout-简单使用

TabLayout一:简介TabLayout提供了一个水平布局用于展示tabs,继承自HorizontalScrollView。一般与Viewpager结合使用实现页面和标签联动的效果,是时下APP中非常常用的一个控件二:基本用法xml中添加tab:<com.google.android.material.tabs.TabItem //在XML中添加item的控件,此控件是TabLayout的子控件<com.google.android.material.tabs.TabLa

2021-10-18 22:57:30 2175

原创 java_线程

线程:一: 多线程的三大特性原子性:一个操作或者多个操作要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 同步操作即保证多线程的原子性一个很经典的例子就是银行账户转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。这2个操作必须要具备原子性才能保证不出现一些意外的问题。我们操作数据也是如此,比如 i = i+1;其中就包括,读取i的值,计算i,写入i。这行代码在Java中是不具备原子性的,则多线程运行肯定会出问题,所以

2021-10-18 11:03:12 113

原创 Android学习笔记(6)——详解持久化技术

第六章 数据存储权方案——详解持久化技术6.1 持久化技术简介概述:Android 系统中主要提供了3种方式用于简单地实现数据持久化功能,即文件存储、SharedPreference存储以及数据库存储。当然,除了这3种方式之外,你还可以将数据保存在手机的SD卡中,不过使用文件、SharedPreference 或数据库来保存数据会相对更简单一些,而且比起将数据保存在SD卡中会更加地安全。6.2 文件存储6.2.1 将文件存储到文件中Context类中提供了一个openFileOu

2021-09-12 21:42:51 232

原创 Android学习笔记(5)——详解广播机制

全集大喇叭——详解广播机制第五章 全集大喇叭——详解广播机制5.1 广播机制简介5.2 接收系统广播5.2.1 动态注册监听网络变化5.2.2 静态注册实现开机启动5.3 发送自定义广播5.3.1 发送标准广播5.3.2 发送有序广播5.4 使用本地广播5.5 广播的最佳实践——实现强制下线功能第五章 全集大喇叭——详解广播机制5.1 广播机制简介概述:Android中的每个应用程序都可以对自己感兴趣的广播进行注册, 这样该程序就只会接收到自己所关心的广播内容,这些广播可能

2021-08-09 09:44:25 163

原创 Android学习笔记(4)——探究碎片

第四章 手机平板要兼顾——探究碎片第四章4.1 碎片是什么4.2 碎片的使用方式4.2.1 碎片的简单实用4.2.2 动态添加碎片4.2.3 在碎片中模拟回收栈4.2.4 碎片和活动之间进行通信4.3 碎片的生命周期4.3.1 碎片的状态和回调4.3.2 体验碎片的生命周期4.4 动态加载布局的技巧4.4.1 使用限定符4.4.2 使用最小宽度限定符4.5 碎片的最佳实践——一个简易版的新闻应用第四章补充:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2021-08-01 21:50:32 266

原创 Android学习笔记——第一章

第一章目录:Java:放置所有的Java代码,创建的活动文件就放在这里res:图片放置drawable,布局放在layout,字符串放在valuesmipmap:存放应用图标layout:存放布局文件drawable:存放程序会用到的图片values:存放字符串,样式,颜色等配置详解build.gradle文件gradle是一个非常先进的项目构建工具安卓第一行代码——24页自己看builder.gradle分内层和外层,内层在app目录下,外层除非想添加一些全局.

2021-08-01 21:47:47 134

原创 Android学习笔记(3)——UI开发的点点滴滴

第三章 UI开发的点点滴滴3.1 常用控件的使用方法3.1.1 TextView3.1.2 Button3.1.3 EditText3.1.4 ImageView3.1.5 ProgressBar3.1.6 AlertDialog3.1.7 ProgressDialog3.2 详解四种布局3.2.1 线性布局3.2.2 相对布局3.2.3 帧布局3.2.4 百分比布局(被弃用,改用约束布局)3.3 创建自定义布局3.3.1 引入布局3.3.2 自定义控件3.4 最常用和

2021-08-01 21:44:40 410

原创 Android学习笔记(2)——探究活动

Andorid学习笔记——第二章第二章 探究活动补充:活动(Activity),可以包含用户界面的组件,主要用于和用户进行交互2.1 活动的基本用法2.1.1 手动创建活动操作:在app/src/main/java/com.example.activitytest 下右击com.example.activitytest包-→New-→Activity- →Empty Activity 创建活动,创建活动时如若勾选Launcher Activity会自动将将当前活动设置为主活动,勾选G

2021-07-26 21:59:59 1078

原创 java学习笔记

文章目录第一章 Java概述1.1 什么是Java语言1.2 Java语言发展史1.3 JVM1.4 JRE和JDK第二章 HolleWorld入门程序2.1 程序开发步骤说明2.2 标识符第三章 常量3.1 常量的分类:第四章 变量和数据类型4.1 变量概述4.1.1 变量:常量是固定不变的数据,那么在程序中**可以变化的量称为变量**。4.1.2 注意事项:4.2 数据类型的分类Java的数据类型分为两大类:第五章 数据类型转换5.1 自动转换5.2 强制转换5.3 运算符

2021-05-20 15:25:37 995 1

原创 浅谈深搜广搜

深搜广搜深度优先搜索 Depth First Search(DFS)简介:基本思想:回溯法:深搜优缺点优点缺点分析算法的实际实现流程:算法举例例一:深度优先搜索 Depth First Search(DFS)简介:深度优先搜索所遵循的搜索策略是尽可能“深”地搜索树。基本思想:为了求得问题的解,会将每一结点所有可能路径都走一遍,先选择某一种可能情况向前(子结点)探索,在探索过程中,一旦发现原来的选择不符合要求,就回溯至父亲结点(可认为是上一结点)重新选择另一结点,继续向前探索,如此反复进行,直

2021-05-06 22:04:25 2087 4

原创 学生管理系统小结

学生管理系统基本功能:实现思路:文件操作介绍:文件类型指针:文件的打开与关闭文件的打开:文件的关闭完整代码:基本功能:0.添加学生信息1.删除学生信息(按学号)2.修改学生信息(按学号)3.修改学生信息(按名字)4.查询学生信息(按名字)5.排序:按学号排序按名字排序6.显示所有学生信息及统计信息7.退出软件实现思路:1.基本功能实现依靠对链表的各种操作实现(增删改查,链表排序)2.功能选择依靠switch选择实现3.退出程序后再次进入数据的保存依靠对文件的简单操作实现,只

2021-05-04 17:34:33 256

原创 链表总结(单链表和双链表)

数据结构——链表的基本操作目录标题一.链表的基本概念二.链表的建立1.含头结点:对于含头结点链表的所有操作头指针一直不变,一直指向头结点头结点的创建新结点的创建将新结点插到第一结点前将新节点插到尾之后头插法创建链表(重复将新结点插到第一结点前过程即可)尾插法创建链表(重复将新结点插到尾之过程即可)寻找结点(寻找第几结点前一结点,为了方便后续操作)在第几结点位置增添结点,超出链表范围则不进行增添操作将第几结点修改为val ,超出链表范围则不进行增添操作删除第几结点查找第几结点并返回 (若查找失败则返回-1)链

2021-04-24 16:54:58 1432 1

原创 岛屿数量

200. 岛屿数量难度中等1104给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:

2021-04-17 16:52:00 162

原创 删除字符串中的所有相邻重复项

1047. 删除字符串中的所有相邻重复项难度简单251给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca"输出:"ca"解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,

2021-04-16 20:30:17 564

原创 删除最外层括号

1021. 删除最外层的括号难度简单167有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括号字符串。如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。给出一个非空有效字符串 S,考虑将其进行原语化分解,使得:S = P_1 + P_2 +

2021-04-15 20:52:12 234

原创 逆波兰表达式求值

150. 逆波兰表达式求值根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入:tokens = ["4","13","5"

2021-04-13 20:03:52 391

原创 有效的括号

20. 有效的括号难度简单2319给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:输入:s = "([)]"输出:false示例 5:输入:s = "{[]}"输出:tr

2021-04-11 21:14:45 67

原创 最小栈

最小栈(返回栈最小元素)push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,null,-3,null,0,-2]解释:MinStack minStac

2021-04-10 23:07:59 74

原创 环形链表判断 2021-4-7

标题 :环形链表的判断题目:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。例:输入:head = [3,2,0,-4]输出:返回索引为 1 的链表节点(链表节点从0算起)解释:链表中有一个环,其尾部连接到第二个节点解题思路:先定义三个指针,俩个慢指针,一个快指针,快指针一次前移两个节点, 慢指针针一次前移一个节点,先让三个指针都指向头节点,用快指针和一个慢指针线性遍历链表,最终如若快指针指向NULL,则表示链表无环,如若快慢指针相遇,则表示有环。判断链表是否有

2021-04-07 20:36:33 73

空空如也

空空如也

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

TA关注的人

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