Java嵌入式数据库-MapDB
MapDB可以直接将Java的数据类型存储至直接内存而非JVM的堆中,也可以将数据持久化到磁盘。
今天和大家介绍一个Java的第三方库,MapDB,它是用Kotlin写的,据说代码质量还不错,有兴趣的可以阅读其源码。
MapDB是一个内嵌的纯Java的数据库,提供了并发的HashMap、TreeMap、Queue,可以基于堆外或者磁盘来存储数据。用户可以通过配置选择不同的机制来提高性能,比如可以配置多种不同的cache来减少反序列化的开销,提高读取性能;可以开启异步写引擎,使用后台线程来进行序列化和存储更新,来提高插入性能,减少rt。它支持ACID事务、MVCC隔离。它的代码精简,只有一个jar包,无其他依赖,总共才200kb。并且高度模块化,用户可以很容易的扩展,添加新特性。
用法简介
MapDB的用法非常简单,看接下来的步骤直接就可以用了。
- 添加Maven依赖
<dependency> <groupId>org.mapdb</groupId> <artifactId>mapdb</artifactId> <version>VERSION</version> </dependency> <repositories> <repository> <id>sonatype-snapshots</id> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </repository> </repositories>
- 使用
DB db = DBMaker.memoryDB().make(); //DB db = DBMaker.fileDB("file.db").make(); ConcurrentMap map = db.hashMap("map") .createOrOpen(); //createOrOpen如果不存在那么就创建,如果已经存在了就直接打开。 map.put("something", "here");
-
额外知识
MapDB提供了很多数据分配位置的方案。
类结构
DB也提供了很多集合的存储类型:
- HashMap
- HashSet
- TreeMap
- TreeSet
等,感兴趣的可以直接查阅文档
MapDB文档地址:https://jankotek.gitbooks.io/mapdb/content/db/
使用感受
如果在Java开发的时候想持久化一些类型,又不想依赖第三方软件,比如Redis,那么就选用MapDB,上手也简单,用起来也方便。
MapDB默认不允许多个进程同时访问一个文件,这种情况限制了其在分布式或集群的场景。只能用单机来存储一些简单的东西。
MapDB既然是嵌入式数据库,那么其使用场景还是业务比较简单的时候。如果确保业务不会复杂,可以使用它。
最后
最近在使用MapDB,拿出来和大家分享下。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
实验吧---忘记密码了
今天做实验吧的题目遇到了这个问题,一步一步的走出来, 现在我把解题过程写一下,希望能够帮助到那些需要帮助的人 写的比较详细,希望你们不要嫌弃!!!永远爱你们的———新宝宝 忘记密码了分值:20 来源:Justatest 难度:中 参与人数:10531人 Get Flag:3167人 答题人数:3389人 解题通过率:93% 找回密码 格式:SimCTF{ } 解题链接:http://www.shiyanbar.com/ctf/1808 解题思路: 首先查看源代码: 这个是需要我们查看step2.php的,我们按照要求照做就可以了,但是神奇的事情是网页直接跳转到step1.php中间出现了一个网页但是没有看到,一闪而过的。 怎么办呢?使用burp试试: 使用burp的forward键直到出现: 这个时候,就需要我们自己随便输入email以及token了就会得到: you are not an admin 这个时候就需要,我们自己想办法了(QAQ) 这个时候我们再重新看一下源代码就会发现: 其中关于vim这个东东(一开始也是不明白的,搜集了一下下资料)我共享一下下: http...
- 下一篇
Java并发编程笔记之Unsafe类和LockSupport类源码分析
一.Unsafe类的源码分析 JDK的rt.jar包中的Unsafe类提供了硬件级别的原子操作,Unsafe里面的方法都是native方法,通过使用JNI的方式来访问本地C++实现库。 rt.jar 中 Unsafe 类主要函数讲解, Unsafe 类提供了硬件级别的原子操作,可以安全的直接操作内存变量,其在 JUC 源码中被广泛的使用,了解其原理为研究 JUC 源码奠定了基础。 首先我们先了解Unsafe类中主要方法的使用,如下: 1.long objectFieldOffset(Field field) 方法:返回指定的变量在所属类的内存偏移地址,偏移地址仅仅在该Unsafe函数中访问指定字段时使用。如下代码使用unsafe获取AtomicLong中变量value在AtomicLong对象中的内存偏移,代码如下: static { try { valueOffset = unsafe.objectFieldOffset(AtomicLong.class.getDeclaredField("value")); } catch (Exception ex) { throw new ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境