欢迎来到杨逸的技术博客
通过letsencrypt实现永久免费的SSL证书续订
- 2026-04-11
- 7
- 0
- 0
- 24.7℃
通过letsencrypt实现永久免费的SSL证书续订 letsencrypt是一个CA机构,提供免费的SSL证书,通过certbot向letsenctypt申请证书,结合corn定时任务可以实现自动更新证书,并且永久免费 letsencrypt官网 参考文章 cerbot官网文档 通过snap安装
JNI第三期:JNI中的三种引用类型
- 2026-03-06
- 12
- 0
- 0
- 25.2℃
本文详细介绍了 JNI(Java Native Interface)中的三种引用类型:局部引用(Local Reference)、全局引用(Global Reference)和弱全局引用(Weak Global Reference)。通过对比表格清晰展示了它们在生命周期、跨线程能力、对垃圾回收的影响、创建与释放方式及主要用途上的区别。文章结合具体代码案例,演示了每种引用的使用方法、跨线程访问的可行性,并验证了其在 JVM 中的行为,如局部引用自动回收、全局引用需手动释放且不会被 GC、弱引用在内存紧张时会被回收等特点。
JNI第二期:JNI(Java Native Interface)的参数传递和返回
- 2026-02-21
- 15
- 0
- 2
- 29.5℃
JNI(Java Native Interface)是Java与本地代码(C/C++)交互的桥梁,支持参数传递和返回值处理。其核心包括数据类型映射、类型签名表示以及基本类型与对象类型的操作方法。
Java基本数据类型在JNI中通过添加前缀“j”映射到对应的本地类型,如`int`映射为`jint`,`boolean`映射为`jboolean`。对象类型统一用`jobject`表示。JNI使用类型签名来标识Java数据类型,例如`int`的签名是`I`,`java.lang.String`的签名是`Ljava/lang/String;`,方法的签名则结合参数和返回类型,如`int sum(int, int)`的签名为`(II)I`。
基本类型可以直接在Java和本地代码间传递和转换。对象类型的操作则类似于Java反射机制,需要获取类、方法或字段的句柄(如`jclass`、`jmethodID`),并通过JNI函数创建、访问或修改对象。对于在本地代码中创建的对象,若需在Java中持续使用,应通过`NewGlobalRef`创建全局引用,并在使用后通过`DeleteGlobalRef`释放,以避免内存泄漏。
通过具体案例展示了基本类型(如整数求和、布尔值转换)和对象类型(如创建`Student`对象并设置属性)的交互实现,包括本地方法的编写、编译为动态链接库及在Java中调用的完整流程。
JNI第一期:Java的JNI入门HelloWorld
- 2026-02-20
- 14
- 2
- 29.4℃
本文档介绍了 Java JNI (Java Native Interface) 的入门教程,通过一个 HelloWorld 示例演示了如何在 Java 中调用 C/C++ 本地方法。核心流程包括:用 native 关键字声明本地方法并加载动态链接库;通过 javac -h 命令生成 JNI 头文件;实现头文件中定义的 C 函数;最后编译为共享库并运行。文档还详细说明了头文件和方法命名的转换规则,以及静态方法和实例方法在 JNI 函数签名中的参数区别(分别为 jclass 和 jobject)。
JAVA新一代NIO模型学习记录
- 2026-02-01
- 7
- 0
- 0
- 24.7℃
JAVA新一代NIO模型学习记录 NIO的三大组件是:Buffer、Channel、Seclector 缓冲区buffer 在NIO中数据的读写是按块进行读写,每一个buffer代表一个数据块 基本使用 Java的八大数据类型中,除了boolean类型外,都有对应的Buffer类型,例如:int类型