- 博客(5)
- 资源 (1)
- 收藏
- 关注
原创 C语言 基础知识整理
前言本文整理C语言基础知识,用于开发中日常查阅。C数据类型类型描述基本类型它们是算术类型,包括两种类型:整数类型和浮点类型枚举类型它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量派生类型它们包括:指针类型、数组类型、结构类型、共用体类型和函数类型。void类型类型说明符 void 表明没有可用的值。printfCode格式描述%c字符%d带符号整数%i带符号整数%e科学计数法,使用小
2020-12-28 11:49:26 1047 1
原创 JNI原理 模仿System.loadLibrary和dlopen使用
前言如下图所示,OpenNativeLibrary代码中使用了dlopen打开动态库,本文按照该源码中调用dlopen、dlsym来调用so里的方法,加强一下理解。本文就是模仿源码、模仿System#LoadLibrary流程,在Java层获取到要调用so路径后,传入c层调用dlopen打开,并通过dlsym调用方法后dlclose结束。函数说明dlopen()函数以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程。RTLD_LAZYEach external function
2020-12-25 19:02:32 3919 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 641 4
深入理解Android内核设计思想第一版高清完整带目录
2018-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人