Java 本地调用(jni)编程基础
首先说明一下,根据经验来看,得益于高性能的 Java 虚拟机,使用纯 Java 实现的代码不一定就比 c 语言的慢。但是在大量的 c 语言库中还藏有不少珍宝,或许是没必要重复造轮子,或许是没有信心写出比那些经过多年考验的代码更健壮的程序,使用 Java 代码调用 C/C++ 仍然具有很高的价值。
一个 hello world 例子
本地方法的定义类似于接口函数,因为都还没实现嘛,不同的地方在于需要在返回值前面加上 native 关键字,例如下面的 Hello 类定义了 本地方法 say()
//Hello.java
public class Hello{
public native void say(String something);
}
这段程序需要 c 语言实现,首先...
点我阅读更多...
AUTODYN 并行计算(单机)
使用多核 CPU 来加速 AUTODYN 计算是一个行之有效的方法,而且设置也相当简单,这里稍微记录一下。
首先是 MPI 路径,在安装 ANSYS 的时候就已经装上了 MPI,可以在 ANSYS 主目录下的 commonfiles 文件夹下找到 ,这里要做的是将其路径加入系统环境变量,在 cmd 中运行 mpirun 命令应该能出现一系列提示。
然后是编写脚本 ,在任一文件夹下创建 applfile 文件(无扩展名),加入一段参数
-e MPI_FLAGS=y0 -e ANSYS_EXD_MPI_TYPE=pcmpi -h machine1 -np 1 "G:\Program Files\ANSYS Inc\v162\aisol\AUTODYN\winx64\autodyn.e...
点我阅读更多...C语言编译与 intel MKL 连接
C语言编译过程
一段c语言源码最终编译成可执行程序要经历多个阶段,包括预处理阶段、编译阶段、汇编阶段以及链接阶段。比如将 hello.c 代码编译成可执行文件将经历如下图所示的过程:
//hello.c
#include <stdio.h>
int main() {
printf("Hello world");
}
其中,预处理阶段将源程序使用符号 # 依赖的内容直接复制到代码中,并生成以 .i 为后缀的新文件。对应的 gcc 命令为
gcc -E hello.c -o hello.i
编译阶段将文本文件 hello.i 翻译成汇编语言程序 hello.s ,这也是一个文本文件,其中的内容是汇编代码。
gcc -S hello.i -o hello.s...
点我阅读更多...Jigsaw 项目--模块系统快速导引(中文翻译)
原文地址:Project Jigsaw: Module System Quick-Start Guide。
本文为了开发者快速入门 Java 模块化而介绍几个简单的例子。
在例子中,文件路径使用斜杠,且用冒号分隔不同的路径。对于 Windows 开发者,应该使用反斜杠标志文件路径,使用分号作为文件分隔符。
Greeting
Greeting world
多模块编译
打包
缺失 requires 或者缺失 exports
服务
链接器
Greeting
第一个例子是一个打印出 “Greetings!” 的简单模块,这里命名为 com.greetings. 模块包含两个源文件,即模块声明(module-info.java)和主类。
根据惯例,源码...
点我阅读更多...笔记--Java Logger
使用日志,首先就是要拿到日志对象,然后再指定日志文件存储路径嘛。不知道怎地,搞半天没在网上找到一篇关于怎么通过配置文件指定日志存储目录的文章。最后发现这篇博文 Java Logging: Handlers 才搞定这个问题。
首先获取 Logger 实例对象
Logger logger = Logger.getLogger("myLog");
这里的参数为日志名称,在其他地方如果需要此日志对象,可以通过名称来获取。然后使用 LogManager 来读取配置文件
try {
LogManager.getLogManager()
.readConfiguration(new FileInputStream(new File("path/to/lo...
点我阅读更多...