- 博客(5)
- 资源 (1)
- 收藏
- 关注
原创 C语言 基础知识整理
前言 本文整理C语言基础知识,用于开发中日常查阅。 C数据类型 类型 描述 基本类型 它们是算术类型,包括两种类型:整数类型和浮点类型 枚举类型 它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量 派生类型 它们包括:指针类型、数组类型、结构类型、共用体类型和函数类型。 void类型 类型说明符 void 表明没有可用的值。 printf Code格式 描述 %c 字符 %d 带符号整数 %i 带符号整数 %e 科学计数法,使用小
2020-12-28 11:49:26 1051 1
原创 JNI原理 模仿System.loadLibrary和dlopen使用
前言 如下图所示,OpenNativeLibrary代码中使用了dlopen打开动态库,本文按照该源码中调用dlopen、dlsym来调用so里的方法,加强一下理解。 本文就是模仿源码、模仿System#LoadLibrary流程,在Java层获取到要调用so路径后,传入c层调用dlopen打开,并通过dlsym调用方法后dlclose结束。 函数说明 dlopen()函数以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程。 RTLD_LAZY Each external function
2020-12-25 19:02:32 3920 6
原创 JNI原理 System.loadLibrary源码分析
前言 本文介绍System.loadLibrary原理。 Java层源码流程 System#loadLibrary -> Runtime#loadLibrary0 –> BaseDexClassLoader#findLibrary –> DexPathList#findNativeLibrary ->Runtime#nativeLoad,走向c层源码 主要是从nativeLibraryPathElements中找到so路径,遍历所有路径找到存在的so,不存在则抛出Unsatisfi
2020-12-24 20:55:17 3358 1
原创 C语言 C内存模型
参考: C语言内存模型(内存组织方式) C语言程序的内存布局(内存模型) 程序代码区(code area) 存放函数体的二进制代码。 全局区数据区(data area) 全局数据区划分为三个区域。 初始化的全局变量和静态变量在一块区域; 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域; 常量数据存放在另一个区域里。 这些数据在程序结束后由系统释放。我们所说的BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started.
2020-12-21 13:04:03 701 1
原创 Java并发 lockInterruptibly导致IllegalMonitorStateException异常研究
前言 使用ReentrantLock过程中遇到IllegalMonitorStateException崩溃,于是研究一番。 复现 使用如下代码可以复现: public class LockTest { public static void test() { Thread thread = new Thread(new TestRunnable()); thread.start(); // 加上sleep代码不会IllegalMonitorStateE
2020-12-17 19:23:10 642 4
深入理解Android内核设计思想第一版高清完整带目录
2018-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人