会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
Zhaoxi Zhang
博客园
首页
新随笔
联系
订阅
管理
2023年12月1日
深入浅出 PLT/GOT Hook与原理实践
摘要: 动态链接 计算机程序链接时分两种形式:静态链接和动态链接。 静态链接在链接时将所有目标文件中的代码、数据等Section都组装到可执行文件当中,并将代码中使用到的外部符号(函数、变量)都进行了重定位。因此在执行时不需要依赖其他外部模块即可执行,并且可以获得更快的启动时间和执行速度。然而静态链接的方式
阅读全文
posted @ 2023-12-01 23:44 zxzhang
阅读(2730)
评论(0)
推荐(3)
2023年10月18日
MMKV源码解读与理解
摘要: 概述 通过 mmap 技术实现的高性能通用 key-value 组件。同时选用 protobuf 协议,进一步压缩数据存储。 标准 protobuf 不提供增量更新的能力,每次写入都必须全量写入。考虑到主要使用场景是频繁地进行写入更新,我们需要有增量更新的能力:将增量 kv 对象序列化后,直接 ap
阅读全文
posted @ 2023-10-18 00:42 zxzhang
阅读(1215)
评论(0)
推荐(0)
2023年10月7日
详解RecyclerView的预布局
摘要: 概述 RecyclerView 的预布局用于 Item 动画中,也叫做预测动画。其用于当 Item 项进行变化时执行的一次布局过程(如添加或删除 Item 项),使 ItemAnimator 体验更加友好。 考虑以下 Item 项删除场景,屏幕内的 RecyclerView 列表包含两个 Item
阅读全文
posted @ 2023-10-07 00:42 zxzhang
阅读(847)
评论(0)
推荐(1)
2023年9月8日
Drawable复用及问题
摘要: ## 概述 每个 Drawable 都有一个对应的`ConstantState`,这个 state 保存了 Drawable 所有的关键信息。由于 Drawable 的广泛使用,系统为了优化性能(节省内存占用),相同资源的 Drawable 都共享同一个`ConstantState`。这个的含义用较
阅读全文
posted @ 2023-09-08 21:40 zxzhang
阅读(443)
评论(1)
推荐(0)
2023年5月2日
Protobuf编码规则
摘要: 支持类型 该表显示了在 .proto 文件中指定的类型,以及自动生成的类中的相应类型: | .proto Type | Notes | C++ Type | Java/Kotlin Type[1] Java/Kotlin 类型 [1] | Python Type[3] | Go Type | Rub
阅读全文
posted @ 2023-05-02 21:55 zxzhang
阅读(1082)
评论(1)
推荐(0)
2023年4月30日
移位运算
摘要: 概述 这里以C语言为例描述移位运算的行为。 对于一个位表示为 $x_{w-1}$, $x_{w-2}$ ,..., $x_{0}$ 的操作数 x, C 表达式 $x << k$ 会生成一个値,其位表示为 $[$ $x_{w-k-1}$, $x_{w-k-2}$ ,..., $x_{0}$,0,...
阅读全文
posted @ 2023-04-30 21:50 zxzhang
阅读(254)
评论(0)
推荐(0)
2022年11月6日
SQLite3编译
摘要: 官方编译方式 SQLite3 源码提供了非常便捷的编译脚本,通过执行以下命令可以编译得到sqlite3.c 、sqlite3.h、sqlite3ext.h、shell.c 以及一个可执行程序 sqlite3。所有的代码都被合并到了sqlite3.c 文件中,根据官网How To Compile SQ
阅读全文
posted @ 2022-11-06 20:19 zxzhang
阅读(1529)
评论(0)
推荐(0)
2022年6月21日
SQLite数据库损坏及其修复探究
摘要: 数据库如何发生损坏 SQLite 数据库具有很强的抗损坏能力。在执行事务时如果发生应用程序崩溃、操作系统崩溃甚至电源故障,那么在下次访问数据库文件时,会自动回滚部分写入的事务。恢复过程是全自动的,不需要用户或应用程序的任何操作。尽管 SQLite 数据库具有很强的抗损坏能力,但仍有可能发生损坏。 1
阅读全文
posted @ 2022-06-21 00:45 zxzhang
阅读(5321)
评论(1)
推荐(3)
2022年3月15日
如何在Room框架下注册onUpgrade回调及自定义DatabaseErrorHandler
摘要: 在 Android 中,Room 为 SQLite 提供了高效稳定的抽象层,简化开发流程。RoomDatabase.java 是初始化数据库的重要构建组件,通过它我们可以添加RoomDatabase#Callback监听,RoomDatabase#Callback提供了以下回调接口: /** * C
阅读全文
posted @ 2022-03-15 23:35 zxzhang
阅读(529)
评论(3)
推荐(0)
2022年3月13日
Android 应用框架层 SQLite 源码分析
摘要: 概述 Android 在应用框架层为开发者提供了 SQLite 相关操作接口,其归属于android.database.sqlite包底下,主要包含SQLiteProgram, SQLiteDatabase, SQLiteSession, SQLiteConnectionPool和SQLiteCon
阅读全文
posted @ 2022-03-13 23:32 zxzhang
阅读(940)
评论(0)
推荐(0)
2021年5月15日
Android Bitmap的使用及优化
摘要: Bitmap内存模型 在 Android 2.2(API 8)及更低版本上,当发生垃圾回收时,应用的线程会停止(stop the world),这将导致卡顿。Android 2.3 添加了并发GC功能,这意味着系统不再引用位图后,很快就会回收内存。 在 Android 2.3.3(API 10)及更
阅读全文
posted @ 2021-05-15 01:43 zxzhang
阅读(2024)
评论(1)
推荐(0)
2019年7月13日
Kotlin-Note
摘要: 数字在需要一个可空的引用时,会进行装箱操作,数字装箱不一定保留同一性。 另一方面,它保留了相等性 "kotlin相等性"
阅读全文
posted @ 2019-07-13 16:46 zxzhang
阅读(235)
评论(1)
推荐(0)
2019年6月24日
Android-Note
摘要: android:installLocation "App install location" AndroidManifest "App Manifest Overview" "Merge multiple manifest files" "AndroidManifest详解之Application(
阅读全文
posted @ 2019-06-24 00:17 zxzhang
阅读(343)
评论(0)
推荐(0)
2019年6月16日
git log
摘要: git log p 显示每次提交的内容差异 git log 2 仅显示最近的两次更新 git log stat 显示简要的文件修改统计信息 git log follow stat 继续列出文件重命名前的 log 信息(只对单文件有效) git log oneline 单行显示 log 信息 git
阅读全文
posted @ 2019-06-16 00:15 zxzhang
阅读(993)
评论(0)
推荐(0)
2019年6月14日
Java-Note
摘要: Manifest "Manifest file" "Use of the MANIFEST.MF file in Java" "Working with Manifest Files: The Basics"
阅读全文
posted @ 2019-06-14 23:51 zxzhang
阅读(261)
评论(0)
推荐(0)
2019年1月12日
(转载)深入解析String#intern
摘要: 本文转载自: "深入解析String intern" 引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。 8种基本类型的常量池都是系统协调的,String
阅读全文
posted @ 2019-01-12 11:15 zxzhang
阅读(313)
评论(3)
推荐(0)
2019年1月1日
Android——LruCache源码解析
摘要: 以下针对 Android API 26 版本的源码进行分析。 在了解 之前,最好对 有初步的了解, 的实现主要借助 。`LinkedHashMap`的源码解析,可阅读 "Java——LinkedHashMap源码解析" 概述 其 Lru 是 Least Recently U
阅读全文
posted @ 2019-01-01 14:23 zxzhang
阅读(684)
评论(0)
推荐(0)
2018年12月23日
(转载)gcc编译选项总结
摘要: 转载自:https://blog.csdn.net/gatieme/article/details/21389603 常用编译选项 gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后
阅读全文
posted @ 2018-12-23 11:13 zxzhang
阅读(10416)
评论(1)
推荐(1)
2018年12月12日
Java——LinkedHashMap源码解析
摘要: 以下针对JDK 1.8版本中的 LinkedHashMap 进行分析。 对于 的源码解析,可阅读 "Java——HashMap源码解析" 概述 哈希表和链表基于 接口的实现,其具有可预测的迭代顺序。此实现与 的不同之处在于它维护了一个包括所有条目(Entry)的双向链表。相比
阅读全文
posted @ 2018-12-12 19:04 zxzhang
阅读(967)
评论(2)
推荐(3)
2018年11月7日
Java——ArrayList源码解析
摘要: 以下针对JDK 1.8版本中的 ArrayList 进行分析。 概述 基于 接口实现的大小可变的数组。其实现了所有可选的 操作,并且元素允许为任意类型,包括 元素。除了实现 接口,此类还提供了操作内部用于存储列表数组大小的方法(这个类除了没有实现同步
阅读全文
posted @ 2018-11-07 00:35 zxzhang
阅读(1006)
评论(1)
推荐(4)
下一页
公告