首页 > 基础资料 博客日记

leveldb-java:SnapshotImpl.java

2023-07-24 19:51:49基础资料围观222

这篇文章介绍了leveldb-java:SnapshotImpl.java,分享给大家做个参考,收藏Java资料网收获更多编程知识

实现leveldb-api的snapshot接口:

public class SnapshotImpl
        implements Snapshot

在leveldb快照中每次都是用一个序列号保存当前插入的这一条记录,因此当插入多条相同的记录时,通过序列号来确定那一条是最新的记录,在leveldb的快照中,在调用一个快照时,只要获取在当前快照序列号以下的记录,就可以读取到这个快照之前的数据。

    private final AtomicBoolean closed = new AtomicBoolean();
    private final Version version;
    private final long lastSequence;
SnapshotImpl(Version version, long lastSequence)
    {
        this.version = version;
        this.lastSequence = lastSequence;
        this.version.retain();
   }

获取version和lastSequence

public long getLastSequence()
    {
        return lastSequence;
    }

    public Version getVersion()
    {
        return version;
    }

把lastSequence转化为String

@Override
    public String toString()
    {
        return Long.toString(lastSequence);
    }

判断snapshot和version是否一致:

public boolean equals(Object o)
    {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        SnapshotImpl snapshot = (SnapshotImpl) o;

        if (lastSequence != snapshot.lastSequence) {
            return false;
        }
        if (!version.equals(snapshot.version)) {
            return false;
        }

        return true;
    }

转换为hash编码:

@Override
    public int hashCode()
    {
        int result = version.hashCode();
        result = 31 * result + (int) (lastSequence ^ (lastSequence >>> 32));
        return result;
    }
}

 


文章来源:https://www.cnblogs.com/yunqihao/p/16497394.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云