- 博客(41)
- 收藏
- 关注
原创 Android 使用parcel进行持久化序列化
将对象序列化到文件,然后从文件中反序列化出对象是一个常见的场景。常见的有json序列化,但是json 反序列化使用反射,性能较差,所以在此我们使用 Android 中Parcel 进行本地序列化并保存到文件,并从文件中读取并反序列化。这样就可以通过序列化并保存到文件,然后从文件中读取并反序列化对象了。需要注意的是,在调用 Parcel.marshall() 方法和 Parcel.unmarshall() 方法时,需要保证两次调用之间数据的顺序和类型一致。
2023-05-13 00:47:29 865
原创 android 监听文件变化
Android 监听文件变化可以做很多事情,比如夸进程通信等等。可以监听目录下的: 文件创建,文件删除,文件修改等.Android中实现的简单代码如下。
2023-05-06 22:13:28 1061
原创 数据结构-树
AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。只有最下面两层的节点,度可以小于2的二叉树。除了叶子节点,所有节点的度都是2.每个节点最多有两个子节点的树。左子树小于根,右子树大于根。中序遍历是递增序列。
2023-05-04 21:42:50 118
原创 块存储、文件存储、对象存储的区别
在网络存储中,服务器把本地的一个逻辑块设备——底层可能是一个物理块设备的一部分,也可能是多个物理块设备的组合,又或者多个物理块设备的组合中的一部分,甚至是一个本地文件系统上的一个文件——通过某种协议模拟成一个块设备,远程的客户端(可以是一台物理主机,也可以是虚拟机,某个回答所说的块设备是给虚拟机用是错误的)使用相同的协议把这个逻辑块设备作为一个本地存储介质来使用,划分分区,格式化自己的文件系统等等。块存储的数据结构是数组,而文件存储是二叉树(B,B-,B+,B*各种树),对象存储基本上都是哈希表。
2023-03-29 20:43:06 280
原创 Android gradle编译时字节码处理
android app的构建是使用gradle 工具,它提供给了开发者自定义编译期行为的能力。一般情况下,我们在transform阶段进行字节码的修改,插入,删除等操作。通过字节码处理,我们可以完成很多cool的事情,比如根据编译时注解,完成一些特定的操作等。ASM ( 如库’com.android.tools.build:gradle:3.6.4’)在app module中的build.gradle中,使用上面开发的插件。修改字节码的时候,我们可以使用javassist或者ASM。
2023-03-04 21:09:51 203
原创 贪心算法相关
要求: 时间复杂度为 O(n)O(n) 空间复杂度为 O(n)O(n)给定一个数组 arrarr 代表得分数组,请返回最少需要多少糖果。先每人分一颗,然后从前往后,如果后一个比前一个分数高,则+1;如果后一个比前一个少,并不是减一,因为1 才是最小的。然后从后往前遍历,之前递减的就是递增了,加一就行了。
2023-01-08 18:13:42 67
原创 找出数组中三个数之和等于0的所有组合
由于结果中的数据需要有序,所以我们需要先将数组排序,然后循环,将每个数字作为target时,看看能否找到匹配的,由于有序,我们就可以用滑动窗口来实现匹配搜索。例如,给定的数组 S = {-10 0 10 20 -10 -40},解集为(-10, -10, 20),(-10, 0, 10)给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?还需要注意的点是需要去重,由于已经排序了,所以相等的值肯定是相邻的,直接找三个数之和等于0比较麻烦,直接找替代方案,b+c = -a;
2023-01-01 22:11:37 780
原创 把数字翻译成字符串
有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, …, ‘z->26’。现在给一串数字,返回有多少种可能的译码结果。2种可能的译码结果(”ab” 或”l”)
2023-01-01 20:58:33 187
原创 两个栈实现队列
栈的特点是先进后出,而队列是先进先出。我们有两个栈s1, s2, 可以s1专门用于接收push,pop的时候,将s1 中的元素 全部pop到s2 中,这样s2的栈顶就是s1 的栈底,也就是最先入栈的元素,从而整体上就是先进先出。用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。
2022-12-30 13:21:31 52
原创 有效的括号序列
细节上,右括号时需要先检查堆栈是否为空,如果空的话,一定是非法括号。不为空,出栈时,栈顶和当前括号必须是匹配的,因为只有成对的才能消除,不成对的话,肯定不是合法的,比如([{]}) 这样。给出一个仅包含字符’(‘,’)‘,’{‘,’}‘,’[‘和’]',的字符串,判断给出的字符串是否是合法的括号序列。括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。总体思路:左括号入栈,右括号出栈,最终看堆栈是否为空。
2022-12-30 13:04:13 69
原创 Android 基础组件能力
Android四大组件: Activity,Service,BroadCast,ContentProviderAndroid 的一些基础组件的小结
2022-11-28 23:27:35 347
原创 Android activity的四种启动模式
Android 四种启动模式: standard, singleTop, singleTask, singleInstance 的区别
2022-11-27 18:44:00 934
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人