1.Ceph集群详细部署配置文讲解(二)
2.java调用dll
3.JNA基本意思
Ceph集群详细部署配置文讲解(二)
部署Ceph集群时,平台首先创建三台虚拟机,编译使用CentOS 7.6,平台IP网段为...2/。编译三台主机命名如下:
CENTOS7-1: IP ...,平台作为管理节点和子节点。编译测字算命源码
CENTOS7-2: IP ...,平台作为子节点。编译
CENTOS7-3: IP ...,平台作为子节点。编译
系统配置涉及修改主机名称、平台编辑hosts文件、编译确保时区正确并设置开机启动NTP同步。平台使用清华镜像源配置yum源,编译hbase指标源码并安装所需组件。平台
为实现免密码SSH登陆,创建名为ceph_user的用户,并设置密码。修改sudo权限,生成并分发SSH密钥至各机器节点,简化SSH远程连接。
开放端口,禁用防火墙,设置SELinux为禁用。创建集群配置目录,执行ceph-deploy新创建集群,并进行安装。调试hdfs源码同步管理信息至各节点,安装mgr与OSD。
安装管理后台,开启dashboard模块,生成签名,创建目录并生成密钥对。设置IP与PORT,关闭HTTPS,查看服务信息,设置管理用户与密码,访问管理界面。
创建Cephfs文件系统,执行ceph-deploy创建mds节点,javaweb源码教程并创建两个存储池。创建fs,通过ceph fs ls验证状态,必要时删除并重新创建。
采用fuse挂载方式,确保ceph-fuse命令可用,创建挂载目录,挂载cephfs,并查看磁盘挂载信息。
客户端连接验证使用Rados Java,需安装JDK、GIT和MAVEN。下载并安装rados java客户端源码,星星代码源码执行MAVEN安装,忽略测试用例。
创建软链接加入CLASSPATH,安装jna,创建JAVA测试类CephClient。运行验证确保成功与ceph建立连接。
java调用dll
在处理最近的项目时,遇到了需要通过Java调用第三方的DLL/SO库的需求。在这个过程中,我遇到了一些挑战,现在就我所遇到的问题和解决方案进行记录。
采用JNA库进行调用时,首先需要在项目中引入相应的jar包,这个版本是com.sun.jna的jna库,版本为3.0.9。
一个关键点是,DLL/SO库在不同操作系统下的加载方式有所不同。Linux/Unix系统通常使用SO文件,而Windows系统则使用DLL。Windows系统对DLL文件的加载路径有所限制,通常在JDK的安装目录下的jre/bin文件夹中,具体路径根据位或位系统有所区分,例如,如果DLL文件名为libSoName.dll,加载时只需写入"libSoName"即可。
在MacOS上,情况稍微复杂,由于其库文件与Linux不通用,需要先找到macOS的resource根目录,然后结合库文件全称,如"libSoName.so",路径应为resource.path + "libSoName.so"。需要注意的是,Mac上的库文件需要在本地进行编译。
总的来说,调用DLL/SO库需要根据目标平台的特性和规范来处理,确保正确地加载和引用这些库文件,以保证Java程序的顺利运行。
JNA基本意思
JNA(Java Native Access)是一种工具库,专为Java开发者提供动态访问本地库(如Windows的dll)的能力,无需编写任何Native/JNI代码。通过在Java接口中描述目标本地库的函数与结构,JNA自动实现Java接口与本地函数之间的映射。这意味着,开发者能够直接调用本地方法,就像调用常规的Java方法一样,而无需额外的处理或配置,也不需要特殊的引用或编码,使用起来十分便捷。
JNA简化了Java与本地代码的交互过程,通过一个较小的本地类库sub动态地调用本地代码。开发者只需定义要调用的本地代码方法的结构和基本属性,即可省去大量针对不同平台的配置和编译代码工作。所有调用均基于JNA提供的通用jar包中的接口,确保了跨平台的兼容性和一致性。
JNA的核心优势在于其能够实现Java与本地代码之间的无缝集成,使开发者能够充分利用本地库提供的高性能功能,同时保持Java程序的开发效率和易用性。无论是Windows、Linux还是Mac OS,JNA都能提供一致的访问本地库的体验,为开发者提供了极大的便利。通过简化开发过程,减少代码量和配置工作,JNA显著提高了开发效率,缩短了项目周期,同时也降低了维护成本。
总之,JNA通过提供一种简单而强大的方式,让Java开发者能够轻松访问和利用本地库资源,从而提高了开发效率、增强了应用性能,并且简化了跨平台开发的复杂性。它通过自动映射、统一接口和跨平台兼容性,为Java与本地代码的交互提供了一种高效且直观的解决方案。