- 博客(15)
- 收藏
- 关注
原创 C语言实现 给定一个数组,找出其中出现次数最多的元素
对数组进行排序:初始化变量:遍历已排序数组:处理最后一个连续子序列:返回结果:时间复杂度和空间复杂度 时间复杂度:O(n log n) 排序操作占用了主要时间复杂度,即 O(n log n)。之后的一次线性扫描是 O(n),所以总时间复杂度为 O(n log n)。空间复杂度:O(1) 除了输入数据本身,我们只使用了常数级别额外空间(不考虑递归调用栈)。
2025-03-17 19:12:12
144
原创 C语言实现 数组中有一个数字出现的次数超过数组长度的一半
摩尔投票法是一种用于在线性时间内找到多数元素(即出现次数超过一半的元素)的算法。的数组,其中有一个数字出现的次数超过了数组长度的一半(即至少出现。
2025-03-17 17:47:47
139
原创 java 接口与抽象类区别对比
适用于存在共同代码逻辑的类族,如动物类中的 eat()方法可以通用实现。接口:新增方法会破会所有实现类,除非使用default方法。定义跨继承体系的通用能力。通过继承实现垂直扩展。通过实现实现水平扩展。抽象类:新增方法不会影响子类。1.代码复用vs行为规范。
2025-03-17 09:33:59
299
原创 如何优化自定义View
Android系统的GC会暂停主线程(STW, Stop-The-World),造成UI绘制卡顿。////设置消息屏障, 保证 mTraversalRunnable 的消息能够最优先处理。//检查主线程,这里就是为什么主线程才能绘制UI了。//继续绘制, 调用 度量 窗口 绘制。//移除消息屏障,保证UI刷新不卡顿。//消息屏障的原理是什么?中执行耗时操作(如对象创建),可能导致帧超时(>16ms),引发掉帧(Jank)。:Android的UI渲染依赖VSync信号(16ms/帧)。
2025-03-16 20:12:08
754
原创 postRunnable底层实现全解析
涉及知识内容:activity启动流程,以及activity 与 window view 的关系,同步可以延申到View的整个绘制流程。JNI方法:base/core/jni/android_os_MessageQueue.cpp ->源码位置:base/core/java/android/view/ViewRootImpl.java。是Handler类提供的核心方法,用于跨线程执行任务。,通过消息队列实现线程间通信。消息队列的核心操作依赖Native方法(在Android系统中,
2025-03-10 23:23:41
698
1
原创 Java 到 Native 的完整 JNI 链路实现模板,适用于 Android 系统源码开发场景(系统框架层注册)
以下是在 Android 系统源码系统框架层注册(如)中开发 JNI 的完整流程,涵盖从 Java 层到 Native 层的关键步骤及最佳实践。publicALOGEALOGIprintflogcatlibutils(在块中添加)在系统初始化代码中调用注册函数(如解释为什么在initinit.rczygote。
2025-03-04 19:29:55
749
原创 Java 到 Native 的完整 JNI 链路实现模板,适用于 Android 系统源码开发场景(标准动态注册)
以下是一个从 Java 到 Native 的完整 JNI 链路实现模板,适用于 Android 系统源码开发场景(如修改。
2025-03-04 16:03:57
308
原创 深入解析 Linux 内存管理:/proc/sys/vm/drop_caches 的作用与使用指南
是一个虚拟文件,用于控制 Linux 内核中缓存(Cache)的释放行为。通过向该文件写入特定值,可以触发不同类型缓存的清理操作。这一功能通常用于调试、性能测试或紧急内存回收场景。在 Linux 系统中,内存管理是一个复杂而高效的过程。内核通过缓存机制(如页缓存、目录项缓存等)优化磁盘 I/O 性能,但某些场景下,手动释放缓存可能成为必要操作。是 Linux 提供的一个关键接口,允许用户主动清理内存缓存。日常使用中,Linux 内核会自动管理缓存,手动释放可能反而降低性能(需重新加载数据到缓存)
2025-03-01 15:50:36
918
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人