2、FlashTsDB时序数据库-SDT算法(Java)实现

本文介绍了FlashTsDB时序数据库中SDT算法的Java实现,包括SDT原理、压缩算法(Point对象和SdtPeriod对象)及解压算法的详细内容。
摘要由CSDN通过智能技术生成

 

FlashTsDB时序数据库-SDT算法(Java)实现

FLashDB基于开源模式开发,地址:https://github.com/amon1991/flashdb

1、SDT原理

在这里插入图片描述

2、压缩算法

Point对象

public class Point implements Comparable<Point> {
   

    private long x;     // 时间戳
    private double y; // 测点值

    // ... 此处省略set,get方法
}

SdtPeriod对象

public class SdtPeriod {
   

    private long bgTime;     // 压缩段开始时间
    private double bgValue; // 压缩段开始值
    private long endTime;    // 压缩段结束时间
    private double endValue;// 压缩段结束值
    private double gradient; // 梯度
    
    // ... 此处省略set,get方法
    
}

压缩算法

/**
 * SDT algorithm compress function
 *
 * @param originPoints 待压缩的点集
 * @param accuracyE    旋转门大小
 * @return
 */
public List<SdtPeriod> sdtCompress(List<Point> originPoints, double accuracyE) {
   
    List<SdtPeriod> sdtPeriodList = new ArrayList<>();

    if (null != originPoints && originPoints.size() > 0) {
   
        SdtPoints sdtPoints = new SdtPoints();

        double upGate = -Double.MAX_VALUE;
        double downGate = Double.MAX_VALUE;
        for (int i = 0, size = originPoints.size(); i < size; i++
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值