作者归档:aotxland

aotxland

2022年6月26日

最近连续加了一个月班,所以上次雄心勃勃制定的更新计划又鸽了

另一件事是租了个主卧,从公司宿舍里搬出来了

Linux IO多路复用分析(Select、Poll和Epoll)

前段时间被迫把一坨没人维护代码中的Select机制换成了Epoll,借此机会梳理一下Select、Poll和Epoll的原理。

I/O多路复用:

I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。

继续阅读

居家的五一

今年五一还挺特别,调休调出五天假结果不能回家,然后有不能去景区玩,后来又进一步变成了不能堂食。只好窝在家里研究厨艺
不得不说,程序员各个都是人才,连《程序员做饭指南》都出了,不再有少许等模糊的词,真是讲究。
howtocook

换了个主题

又换了个主题,其实就是官方的2012自己魔改了一下。

主要的改动

  1. 改为单栏主题
  2. 扩大文字部分宽度,更适应宽屏显示效果
  3. 更换部分字体
  4. 借助插件改为markdown

主题后续计划:

  1. 归档页
  2. 悬浮目录
  3. 返回顶部

博客后续计划:

  • 把一部分以前写的中二文章隐藏
  • 后续主要写一下生活、旅游和一丢丢技术文章
  • 争取每月至少更新一篇
  • 做一个special的网页记录生活

争取不打脸:stuck_out_tongue_winking_eye:

Java使用JNA访问本地库

JNA(Java Native Access )是一个基于JNI的开源库,能有效提高Java访问调用本地库的效率。

官方介绍

JNA 为 Java 程序提供了对本机共享库的轻松访问,而无需编写除 Java 代码之外的任何内容 - 不需要 JNI 或本机代码。此功能可与Windows的Platform /Invoke和Python的ctype相媲美。

JNA 允许您使用自然 Java 方法调用直接调用本机函数。Java 调用看起来就像本机代码中的调用一样。大多数呼叫不需要特殊处理或配置;不需要样板或生成的代码。

JNA 使用一个小型 JNI 库存根来动态调用本机代码。开发人员使用 Java 接口来描述目标本机库中的函数和结构。这使得利用本机平台功能变得非常容易,而不会产生为多个平台配置和构建 JNI 代码的高开销。阅读此更深入的描述。

使用方法

import com.sun.jna.Library;
import com.sun.jna.Native;
public interface JnaDemo extends Library {
    JnaDemo INSTANCE = (JnaDemo) Native.loadLibrary("demo",JnaDemo.class);
    //demo处写需要调用的动态库名字,不写.so或.dll
    ...
    //此处写需要调用的库函数,注意不同类型的对应关系
}

注意事项:

  • 如果同时加载多个动态库,不要出现同名的函数,否则可能会出现致命错误。
  • C++与Java类型的对应关系一定要写对,否则也会出现致命错误。

待续