自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 资源 (3)
  • 收藏
  • 关注

原创 开发中好用的工具集合

参考:https://www.jianshu.com/p/3cc4e861b3db (亲测好用)

2025-11-14 15:09:36 264

原创 invalidate(),postInvalidate()和requestLayout()区别

这三个方法都是用于触发视图更新的,但它们的应用场景和触发的“更新级别”完全不同。

2025-11-11 21:11:51 883

原创 分糖果算法题

分糖果,圣诞节到了,城堡里有k个小朋友,圣诞老人魔力袋里带了n件无差别的小礼物,请圣诞老人处理,将n个无差别的礼物分给k个小朋友的分法问题,给定n和k,输出总分法总数,并枚举所有的分法。其中 | 作为分隔符,每个小朋友的糖果用星号表示。示例:3个糖果分给2个小朋友。

2025-11-08 21:25:25 363 1

原创 合并两个排序的链表

int val;

2025-10-29 15:44:49 157

原创 kotlin学习笔记

kotlin提供了一种可以延迟初始化的方案,使用。非空属性必须在定义的时候初始化。

2025-10-16 10:44:48 209

原创 SharedPreferences存储的数据类型有哪些?

只能存储以下truefalse。

2025-10-15 14:06:13 450

原创 Room持久化库中,@Transaction注解的正确使用场景是?

场景目的示例原子性操作确保多个写操作(增、删、改)全部成功或全部失败。银行转账、批量数据替换、关联数据更新。复杂查询确保在读取多个关联表时,获得一个一致的数据视图。使用@Relation或复杂 JOIN 查询一次性获取嵌套数据。关键要点:默认行为:默认情况下,Room 中的每个@Query@Insert等方法都在一个独立的事务中运行。让你能将多个方法调用捆绑在一个事务中。自动处理:你不需要手动调用或,Room 会为你处理所有样板代码。挂起函数:在方法内,你可以自由调用其他挂起的 DAO 方法。

2025-10-10 16:44:54 836

原创 如何优化Android app耗电量

优化 Android 应用的耗电量是一个非常重要且常见的挑战。耗电优化不仅能提升用户体验,延长设备使用时间,也是应用高质量的表现。以下是一份从的完整耗电优化指南,涵盖了原则、工具、具体策略和最佳实践。

2025-09-26 12:52:37 821

原创 爬楼梯算法java实现

假设你正在爬楼梯,需要n阶才能到达楼顶。每次你可以爬1或2个台阶。有多少种不同的方法可以爬到楼顶?

2025-09-25 11:20:27 311

原创 单链表逆序java

在Java中实现单链表的逆序,可以通过迭代或递归两种方式。

2025-09-06 17:55:35 151

原创 android事件分发机制

android事件分发顺序可以概括为:Activity -> Window -> DecorView -> 顶级 ViewGroup -> … -> 子 View。

2025-09-01 16:01:24 726

原创 数据结构-树

(2)若n>1,则除根结点外,其余结点被分成了m(m>0)个互不相交的集合T1,T2,…Tm,其中每一个集合Ti(1<=i<=m)本身又是一棵树。,Tm称为这棵树的子树。树是n(n>=0)个具有相同类型的数据元素的有限集合。树中的数据元素叫作结点。n=0的树称为空树;(1)有且仅有一个特殊的结点称为树的根结点,根没有前驱结点。

2025-08-29 10:53:10 222

原创 Socket编程

Socket 编程是网络通信的核心,下面阐述TCP 协议下服务端和客户端的编程步骤。

2025-08-28 17:53:27 915

原创 Android线程同步机制

机制核心思想适用场景优点缺点互斥同步,基于JVM内置锁简单的同步块或方法简单自动,不易出错功能单一,不够灵活互斥同步,显式锁需要高级功能(超时、可中断、公平性)功能丰富,灵活需手动释放,易忘记volatile禁用缓存和重排序状态标志,单一变量的可见性轻量级,无阻塞不保证原子性原子类 (Atomic)CAS无锁编程对单个变量的高性能原子操作性能极高,无阻塞只能用于单一变量线程安全集合内部实现优化(分段锁/CAS/写时复制)替代旧的同步集合,生产者-消费者。

2025-08-27 15:47:27 1024

原创 android多线程与线程间通信

机制特点适用场景现代性底层基础,灵活但稍显繁琐需要精细控制消息、自定义后台循环传统,但必不可少自带Looper的Thread需要一个常驻的、有消息循环的后台线程传统LiveData生命周期感知,与ViewModel搭配基于生命周期的UI数据更新现代 (推荐)代码简洁,结构化并发,易于管理几乎所有异步场景的首选最现代 (强烈推荐)RxJava功能强大,流操作符丰富复杂的异步事件流处理现代,但复杂度高。

2025-08-26 16:12:46 838

原创 常用排序算法

冒泡排序是一种典型的排序方法,其基本思想是通过两两比较相邻记录的关键字,使关键字较大的记录如气泡一般逐渐往上“漂浮”。:重新排列数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面。:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。原理:每次从未排序部分中找到最小(或最大)元素,将其放到已排序序列的末尾。:递归地将小于基准值元素的子数列和大于基准值元素的子数列排序。:在保持元素顺序的同时将上一步得到的子序列合并到一起。

2025-08-25 16:42:21 405

原创 Android UI界面绘制

Android UI绘制从的方法开始,按照的顺序,并从顶级View(DecorView)开始,递归地遍历整个View树,从而完成界面的测量、布局和最终绘制。

2025-08-22 13:41:48 864

原创 HashMap工作原理

HashMap 是 Java 集合框架中最重要且最常用的数据结构之一,它基于哈希表实现了 Map 接口,提供了高效的键值对存储和检索能力。Java 8 之后的 HashMap 采用。

2025-08-19 16:23:49 568

原创 二分查找(Binary Search)

二分查找是一种在有序数组中快速查找目标元素的高效算法,时间复杂度为 O(log n),比线性查找的 O(n) 快得多。

2025-08-17 22:21:23 229

原创 Activity和Fragment生命周期

Activity 类提供7个核心回调集: onCreate(), onStart(), onRestart(),onResume(), onPause(), onStop()和 onDestroy()。(最新版本已废弃)->onStart()->onResume()->onPause()->onStop()->onDestroyView()->onDestroy()->onDetach()再次打开页面调用onRestart()->onStart()->onResume();

2025-08-13 14:47:44 185

原创 OOM内存溢出产生原因和避免方法

OOM(Out Of Memory 内存溢出) 是指应用程序申请内存时,系统无法提供足够的内存空间来满足需求,导致程序崩溃的现象。在Android中通常表现为java.lang.OutOfMemoryError。

2025-08-10 21:30:31 295

原创 斐波那契数非递归实现

F(n)=F(n−1)+F(n−2) (当 n≥2 时)思路:用数组存储所有中间结果,适合需要多次查询的场景。思路:用变量缓存前两个数,逐步计算后续值。方法 2:动态规划(带缓存)时间复杂度: O(n)空间复杂度: O(1)时间复杂度: O(n)空间复杂度: O(n)

2025-08-10 13:36:33 241

原创 Activity四种启动模式

【代码】Activity四种启动模式。

2025-08-09 10:24:50 150

原创 java基础知识

override(重写)和overload(重载) 是面向对象编程中两个重要的概念,它们的主要区别:关键区别:

2025-08-07 19:24:24 245

原创 Mac电脑基本功能快捷键

若要添加指纹,请前往“系统设置”,点按“触控ID与密码”,然后点按“添加指纹”。若要创建新文件夹,请点按菜单栏中的“文件”,然后选取“新建文件夹”。前往“系统设置”,然后点按边栏中的“墙纸”。点按“添加照片”,然后从文件或“照片”App选取一张照片。若要开始,请在两台设备上登录Apple账户,然后在Mac上打开“iPhone镜像”。若要自定义App设置,请点按App名称,然后选取“设置”。若要开始使用,请打开“系统设置”并点按“屏幕使用时间”。若要打开“控制中心”,请点按菜单栏中的 。

2025-08-04 07:32:30 457

原创 Flutter基础知识

显示定义int a = 0;隐式定义使用var关键字定义的变量,不指定类型,通过系统自动判断,赋值后确定类型,不能再次改变。var aa = 0;使用const关键字定义的编译时常量,它必须是一个字面常量。使用final关键字**定义的是运行时常量,也就是它的值可以是一个变量。普通函数在这里插入代码片return a+b;可选参数匿名函数return a+b;箭头函数匿名函数和箭头函数组合起来使用,具体用法如下:Dart使用class关键字定义类,这一点和java类似。

2025-08-02 18:00:21 400

原创 结构型设计模式

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

2025-07-30 18:02:31 295

原创 创建型设计模式-Builder

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在以下情况使用Builder模式。

2025-07-30 15:36:45 193

原创 创建型设计模式-单例模式

问题出在 instance = new Singleton();JVM 可能会进行指令重排序,将步骤 2 和 3 调换顺序。即:先分配内存并让 instance 指向它,然后再初始化。确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。Java中单例模式是一种广泛使用的设计模式。

2025-07-30 10:47:39 297

原创 创建型设计模式-工厂方法模式和抽象工厂方法模式

工厂方法模式是创建型设计模式之一。

2025-07-29 22:05:57 409

原创 面向对象设计原则和设计模式分类

设计模式依据其目的可分为。

2025-07-28 16:24:39 530

原创 无障碍开发原理与实践

一、无障碍开发原理与实践android无障碍开发是帮忙视障人士也能便捷地使用APP。Android本身提供了标准的无障碍服务,本文主要是搜索模块在开发无障碍服务的一些实践总结。大部分手机系统已支持无障碍,首先用户需要开启无障碍,选择Android设备 “设置->无障碍”,打开TalkBack开关。浏览方式,开启TalkBack后,可以通过触摸功能浏览屏幕,也可以线性方式滑动浏览屏幕上的各项内容。比如RecyclerView控件自带手指线性导航模式要按照一次查看一项内容的方式浏览屏.

2025-06-25 15:22:19 944

原创 CoordinatorLayout学习笔记

记录协同布局学习之路这篇文章讲的特别好,看了那么多文章后,觉得这篇文章看完有一种豁然开朗的感觉。https://blog.youkuaiyun.com/briblue/article/details/73076458嵌套滑动:CoordinateLayoutView嵌套滑动文章地址:https://blog.youkuaiyun.com/weixin_37077539/article/details/54429646onStartNestedScroll方法:该方法的返回值决定是否执行嵌套滑动onNestedPr

2021-01-07 10:48:33 248

原创 java反射笔记

java反射通过反射的方式调用,分为3个步骤class Student {public String name;public int age;public void setAge(int age){this.age = age;}public void setName(String name){}}通过反射获得类Class cls = Class.forName(“com.demo.bean.Student”);得到调用类方法Method m = cls.getDeclared

2020-10-26 17:57:30 215

原创 Flutter学习笔记(持续更新)

Flutter学习笔记首先打开Flutter官网https://flutter.dev/,开始学习,按照官网的指引搭建Flutter开发环境。(此处略过)Flutter基础在创建UI时在网上查了一些资料,整理下来,方便以后开发中使用。包含不同style的文本组成: RichText( text: TextSpan( text:'', children: ...

2019-03-14 11:41:20 286

原创 工作中遇到的问题(持续更新)

1 在三星手机上出现这个问题,其他手机没发现问题。java.lang.IllegalStateException: Call CookieSyncManager::createInstance() or create a webview before using this class清除Cookie或者获取Cookie前,首先同步。报错代码:public String getCookies......

2018-09-20 10:35:07 434

原创 Git学习笔记

git学习笔记之前使用Git,都是使用SourceTree。因为SourceTree升级到一个版本,提交代码更新代码都非常慢。 后来尝试使用命令行,记录一下学习内容。Git命令总结 初始化一个Git仓库[git init命令] git新建一个空的仓库,当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库。 将文件添加到仓库[git add命...

2018-05-04 20:35:31 609

原创 如何外部修改AndroidManifest.xml中android:scheme的值

公司有个小需求,需要动态配置AndroidManifest.xml中android:scheme的值。 这就转化成通过一个外部java工程修改xml节点值的问题。其中AndroidManifest.xml需要约定一个规则:activity android:name=".MainActivity"> intent-filter>

2018-01-07 12:27:32 7750 1

转载 工作记录-mysql数据库表增加字段(从000001开始递增)

mysql数据库的student表结构如下:idnameage1zhangsan162alice203lanlan304haha25如果新增一个字段no,规则是:六位数,从000001开始依次递增。idnameageno1

2017-11-14 14:44:06 3987

原创 android基础知识

Application Not Response应用程序无响应。在Service后台执行耗时操作。BroadcastReceiver的onReceiver方法中执行耗时操作。应用程序可以接收输入事件(按键、触屏、轨迹球等),当5秒内没有处理完毕时,则会引发ANR。ANR机制以及问题分析https://duanqz.github.io/2015-10-12-ANR-Analysis。

2017-08-11 22:01:34 654

SwipeRefreshLayout实例

SwipeRefreshLayout实例

2016-05-27

使用SwipeRefreshLayout和RecyclerView实现下拉刷新列表数据的效果

使用SwipeRefreshLayout和RecyclerView实现下拉刷新列表数据的效果

2016-05-26

ActiveAndroid Demo

ActiveAndroid Demo

2016-06-12

空空如也

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

TA关注的人

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