自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Activity的生命周期分析

关于这个问题,我们的确不大可能把所有版本的源码都分析一遍,但是作为Android运行过程的基本机制,随着版本的更新并不会有大的调整,因为Android系统也需要兼容性,不能说在不同版本上同一个运行机制有着截然不同的表现。根据上面的分析,我们知道,这两个配对的回调分别表示不同的意义,onStart和onStop是从Activity是否可见这个角度来回调的,而onResume和onPause是从Activity是否位于前台这个角度来回调的,除了这种区别,在实际使用中没有其他明显区别。

2024-09-29 23:03:55 783

原创 【Android】 IconFont的使用

IconFont虽然看起来是图标,实际原理跟字体的实现方式是一样的,所以我们把每个Icon当作一个特殊的文字来理解和处理。:SVG 使用基于路径的矢量图形,这意味着图形可以无限放大而不失真,非常适合需要多种分辨率的应用。:SVG 文件是文本格式,可以使用任何文本编辑器创建和编辑。:SVG 可以包含交互性,如事件处理器,允许用户与图形进行交互。:SVG 文件的大小通常比位图小,这使得它们在网页上加载更快。:SVG 支持 CSS 样式,可以方便地改变图形的外观。前几步如之前的,在平台获取字体文件压缩包。

2024-09-22 22:10:07 560

原创 【Android】ViewPager

ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view,用于允许用户在几个页面(或称为碎片)之间左右滑动切换。它通常用于创建像画廊或轮播图那样的用户体验。1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类。2)ViewPager类需要一个PagerAdapter适配器类给它提供数据。

2024-09-13 23:43:05 1419

原创 【Android】Mvp架构初探

作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。有一点还需要注意,presenter是双向绑定的关系,因此,在设计的时候就要注意接口和抽象的使用,尽可能的降低代码的耦合度,这也是mvp的宗旨。对未变化数据的不必要的频繁访问,也将损害操作性能。

2024-09-08 20:54:51 783

原创 【Android】最好用的网络库:Retrofit

Retrofit是一款由Square公司开发的网络库,但是它和OkHttp的定位完全不同。OkHttp侧重的是底层通信的实现,而Retrofit侧重的是上层接口的封装。事实上,Retrofit就是Square公司在OkHttp的基础上进一步开发出来的应用层网络通信库,使得我们可以用更加面向对象的思维进行网络操作。Retrofit的项目主页地址是:https://github.com/square/retrofit。Retrofit的设计基于以下几个事实。

2024-08-30 22:08:13 1894

原创 【Android】通知的使用

通知(notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容。

2024-08-04 16:46:39 1348

原创 【Android】多媒体使用

xml文件main首先这里创建了一个File对象,用于存放摄像头拍下的图片,这里我们把图片命名为output_image.jpg,并存放在手机SD卡的应用关联缓存目录下。什么叫作应用关联缓存目录呢?就是指SD卡中专门用于存放当前应用缓存数据的位置,调用getExternalCacheDir()方法可以得到这个目录,具体的路径是/sdcard/Android/data//cache。那么为什么要使用应用关联缓存目录来存放图片呢?

2024-08-04 16:42:41 975

原创 【Android】ContentProvider基本概念

这是之前所学的东西,应用这个防止系统阻止我们监听开机广播其实用户主要在两个方面得到了保护。一方面,如果用户在低于Android 6.0系统的设备上安装该程序,会在安装界面给出提醒。这样用户就可以清楚地知晓该程序一共申请了哪些权限,从而决定是否要安装这个程序。另一方面,用户可以随时在应用程序管理界面查看任意一个程序的权限申请情况,这样该程序申请的所有权限就尽收眼底,什么都瞒不过用户的眼睛,以此保证应用程序不会出现各种滥用权限的情况。在Android 6.0系统中加入了运行时权限功能。

2024-08-04 16:36:09 919

原创 【Android】持久化技术简介

数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或计算机关机的情况下,这些数据仍然不会丢失。保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的。持久化技术提供了一种机制,可以让数据在瞬时状态和持久状态之间进行转换。持久化技术被广泛应用于各种程序设计领域,而本节要探讨的自然是Android中的数据持久化技术。

2024-07-28 18:52:41 1053

原创 【Android】系统广播

这是因为Android中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他应用程序的。Android提供了一套完整的API,允许应用程序自由地发送和接收广播。发送广播的方法其实之前稍微提到过,如果你记性好的话,可能还会有印象,就是借助我们第3章学过的Intent。而接收广播的方法则需要引入一个新的概念——BroadcastReceiver。

2024-07-28 14:09:44 841

原创 【Android】Fragment基本使用

Fragment是一种可以嵌入在Activity当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用得非常广泛。

2024-07-28 13:59:05 1050

原创 【Android】Activity的生命周期

Activity的生命周期1.返回栈其实Android是使用任务(task)来管理Activity的,一个任务就是一组存放在栈里的Activity的集合,这个栈也被称作返回栈(back stack)。栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的Activity,它就会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或调用finish()方法去销毁一个Activity时,处于栈顶的Activity就会出栈,前一个入栈的Activity就会重新处于栈顶的位置。系统总是会显示处于

2024-07-20 17:05:18 1160

原创 【Android】系统框架-第一行代码启程!

Google为Android平台专门设计的一套虚拟机来运行Android应用程序,那就是Dalvik虚拟机(Dalvik Virtual Machine,DVM)。注意:尽管Android应用程序是通过Java语言来开发的,但其并不是运行在标准的Java虚拟机上。DalVik虚拟机作为Android平台的核心组件,拥有如下特点: 1. 体积小,占用内存空间小;2. 执行专有的DEX(Dalvik Executable)文件格式,体积更小,执行速度更快;

2024-07-20 16:03:20 1048

原创 【Android】 dp与sp,加冕为王

DPI 是一个物理度量,表示每英寸长度内可以显示的像素点数。一个较高的 DPI 值意味着屏幕每英寸可以显示更多的像素,从而提供更清晰、更细腻的显示效果。DPI 的单位通常是像素/英寸(PPI,即 Pixels Per Inch)。在Android中,DPI 用于区分不同屏幕密度的设备。Android系统根据设备的DPI值将屏幕分为几个不同的类别,以便为不同的屏幕提供适当的资源和布局。

2024-07-19 22:06:15 1278 1

原创 均衡!均衡!二叉搜索树!!

我偷偷拿走金色的砝码,为激起的涟漪洋洋得意;祂总能看穿我的诡计,星星又将游码归零。——阿德里安•斯宾塞—史密斯,《有关星空的寓言集》

2024-06-16 16:59:11 828

原创 反射学习记

动态代理:当想要给实现了某个接口的类中的方法,加⼀些额外的处理。创建⼀个代理,故名思议就是创建⼀个新的类,这个类不仅包含原来类方法的功能,而且还在原来的基础上添加了。3)内部暴露:由于反射允许代码执行⼀些在正常情况下不被允许的操作(⽐如:访问私有的属性和⽅法),所。这个代理类并不是定义好的,是动态生成的。反射可以提供运⾏时的类信息,并且这个类可以在运⾏时才加载进来,甚至在编译时期该类的。应⽤举例:⼯⼚模式,使用反射机制,根据全限定类名获得某个类的 Class。对象的加载,类在第⼀次使用时才动态加载到。

2024-06-10 16:34:34 270

原创 泛型aaaaa

有很多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类。泛型的思想很早就存在,如C++中的模板(Templates)。参数化类型泛型的本质就是"参数化类型"。一提到参数,最熟悉的就是定义方法的时候需要形参,调用方法的时候,需要传递实参。那"参数化类型"就是将原来具体的类型参数化泛型的出现避免了强转的操作,在编译器完成类型转化,也就避免了运行的错误。

2024-05-30 22:58:22 953 3

原创 集合框框框地架

CollectionSetSetTreeSet:基于红⿊树实现,⽀持有序性操作,例如:根据⼀个范围查找元素的操作。但是查找效率不如HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。HashSet:基于哈希表实现,⽀持快速查找,但不⽀持有序性操作。并且失去了元素的插⼊顺序信息,也就是说使⽤ Iterator 遍历 HashSet 得到的结果是不确定的。LinkedHashSet:具有 HashSet 的查找效率,且内部使⽤双向链表维护元素的插⼊顺序。

2024-05-24 22:51:15 747

原创 重生之多线程修炼法则

主线程:CPU和内存之间开辟的转门为main方法服务的线程。

2024-05-17 17:45:15 912

原创 单单单单单身の刁队列

单调队列是一种强大的数据结构,它在处理与窗口相关的算法问题时特别有用。通过维护队列的单调性,我们可以有效地减少不必要的计算,提高算法的效率。希望这篇博客能够帮助您更好地理解单调队列以及如何在Java中实现和应用它。如果您有任何问题或想要了解更多信息,请在评论区告诉我。

2024-05-09 22:18:30 1074

原创 super和this使用方法

如果父类中定义了有参构造器但没有显示写出无参构造器,那么必须通过super调用父类的有参构造函数,如果父类中定义了多个有参构造区,那么用super调用其中一个有参构造器即可。父类如果重写了无参构造器或者父类中没有有参构造器,那么子类的构造方法第一行就是super(),可以省略。this概述:代表的是当前对象(哪个对象调用的this所在的方法,this就代表哪个对象)如果一个类没有基础任何父类super相当于调用的是Object中的方法。子类重写父类的方法后可以通过super调用到父类的方法。

2024-05-05 14:50:38 504

原创 并并并并·病查坤

引用自百度百科:并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题。常常在使用中以森林来表示。简单来说,并查集是一种以树形结构来表示不同种类数据的集合。一般当我们需要用到数据的连通性时会用到它。

2024-04-26 22:29:18 1056 2

原创 大一考核题解

在本篇中,将尽力使用多种解法,来达到一题多练的效果。

2024-04-21 18:28:13 760 1

原创 单调栈和单调队列所学的一些问题

单调栈中的元素要求从栈底到栈顶单调递增遍历数组,如果元素入栈后符合单调要求则顺利入栈不符合要求则弹出栈顶元素,元素出栈时得出结果右侧结果:待入栈元素左侧结果:出栈后的栈顶元素单调栈主要用来求每一个当前数左右最近的比他小/大的数,复杂度O(N),单调栈分为:单调递增栈:从栈底(封闭端)到栈顶(开口端)元素从大到小(递减)单调递减栈:从栈底(封闭端)到栈顶(开口端)元素从小到大(递增)

2024-04-14 18:52:12 711 1

原创 小小总结之二分查找三种情况

那么当右边界收缩的时候,mid的结果大于目标,所以就保证了这个数据一定大于等于我们目标值,插入的时候就需要插入到这里。我们在这里,返回的是平方根,所以我们直接让mid的积

2024-04-06 19:23:08 994 1

原创 单例设计模式

单例模式( Singleton Pattern )是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。单例模式在现实生活中应用也非常广泛,例如,总统,班主任等。J2EE标准中的ServletContext 、ServletContextConfig 等、Spring框架应用中的。特点:构造方法私有,提供一个全局访问点。实现方式:有很多,1.饿汉式 2.懒汉式 3.注册式 4.ThreadLocal优点:内存中只有一个实例,减少内存开销;避免对资源多重占用;

2024-03-30 21:37:48 919 1

原创 初步java学习的几个问题

面向对象是一种基于面向过程的编程思想,是向现实世界模型的自然延伸,这是一种"万物皆对象"的编程思想。由执行者变为指挥者,在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例。面向对象的编程是以对象为中心,以消息为驱动。区别:(1)编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能。(2)封装性: 都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。

2024-03-24 17:25:58 930 1

原创 git从底层逻辑开始的探索之路

git 操作指令本身并不复杂,翻来覆去就是几个常用指令,我们反复使用做到孰能生巧就可以了,为什么还要去深究其底层实现原理呢?放到 git 的学习使用上来说,如果我们不了解 git 底层存储原理,只是死记硬背操作指令的话,其实只能形成一些表层的肌肉记忆并不能做到融会贯通,容易出现了学了又忘,忘了又学,学了又忘的问题.但是倘若掌握了原理就完全不同了,哪怕一个知识点对应结论忘了也完全不慌,大不了我们基于原理机制,从起点出发重新推导一轮即可理工科的魅力不就在此吗?文科。

2024-03-15 22:09:23 1172 1

原创 git 初次探索

暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。前面已经提到了我们的工作区是用来存放代码的,所以新增的文件也是在工作区生成,此时在工作区新增一个111.txt文件。1.git reset --hard [commit Id](修改工作区,修改暂存区)2.git reset --soft [commit Id](保留工作区,保留暂存区)工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码。工作目录(工作区),暂存区,版本库。

2024-03-10 19:09:17 768

原创 再修传奇之转圈圈——循环链表

将单链表中终端结点的指针端由空指针改为头结点,就使整个单链表形成了一个环,这种头尾相接的单链表称为循环链表。简单理解就是形成一个闭合的环,在环内寻找自己需要的结点。在循环单链表中附设尾指针有时比附设头指针会使操作变得更简单。int data;} Node;

2023-12-10 18:01:59 855 2

原创 DFS算法入门之排列组合

本文用于帮助初学者入门dfs算法,碍于笔者本人实力,对更深的无涉及,请原谅。

2023-12-02 21:43:11 1261 2

原创 反转链表的四种方法

此处贴上题目链接力扣206题给你单链表的头节点 head ,请你反转链表,并返回反转后的链表(我能怎么办,你要不把我办了吧)

2023-11-29 23:01:54 1491 1

原创 文件操作函数

此为个人学习笔记。

2023-11-26 19:21:38 827 1

原创 文件基本概念

FILE *指针变量标识符1.FILE为大写,需要包含.2.FILE是系统使用typedef定义出来的有关文件信息的一种结构体类型3.FILE结构体中含有文件名、文件状态和文件当前位置等信息4.一般情况下,我们操作文件前必须定义一个文件指针指向我们将要操作的文件实际编程中使用库函数操作文件,无需关心FILE结构体的细节在缓冲文件系统中,每个被使用的文件都要在内存中开辟一块FILE类型的区域,存放与操作文件相关的信息不必关心FILE的细节,只需要会用FILE定义指针变量。

2023-11-23 22:00:51 928 1

原创 二分查找红蓝分区法

二分法:二分查找算法是一种在有序数组中查找某一特定元素的搜索算法,其思想就是不断地将有序查找表“一分为二”,逐渐缩小搜索区域,进而找到目标元素。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。

2023-11-19 02:30:03 144

原创 C语言实现归并排序(递归法)

分解:将数组分割成两个数组,再分别将两个数组又细分成2个数组,直到,最后每个数组都是一个元素,这时将该单元素数组看为有序数组。此时我们再把这些小小小数组(数字)给合并,根据我们上面的艰苦奋斗,发现合并出来肯定有序,直到合并得就剩一个,那不就完成了吗!合并:将分割的有序数组进行排序,排成有序数组后继续为上一个分割它的数组合并,直到数组被合并成原来的数组,此时已经排好序了。上方我们合并的时候用的是有序数组来排,但是通常我们要的是给乱序数组排序。哎,那我就把小数组都再次分成两半,分成小小数组,再去归并排序;

2023-11-12 17:32:13 1321 1

原创 C语言中输入函数的基础用法

你是否在为scanf输入字符串不能输入一段英文诗句而苦恼?你是否是在为gets不够安全而担忧?你是否还在为缓冲区的空白字符而厌烦?敬请收看本文---C语言中输入函数的进阶用法!

2023-11-06 18:58:42 148 3

原创 2023移动应用开发实验室二面题解

人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。

2023-11-05 18:55:04 180

原创 2023 移动应用开发实验室纳新面试题

int型:4;short int型:2;float型:4;double型:8;long int:8;

2023-11-04 21:25:32 152

原创 弗洛伊德判圈算法(快慢指针法)解决问题之洛谷287

弗洛伊德判圈

2023-11-03 21:07:31 534

空空如也

空空如也

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

TA关注的人

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