T
- Type of the cached data.
public class GenericTimeStampedCache<T extends TimeStamped> extends Object implements TimeStampedCache<T>
时间戳数据
的通用线程安全缓存。
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_CACHED_SLOTS_NUMBER
独立缓存时间槽的默认数量。
|
Constructor and Description |
---|
GenericTimeStampedCache(int maxNeighborsSize, int maxSlots, double maxSpan, double newSlotInterval, TimeStampedGenerator<T> generator)
简单构造函数。
|
GenericTimeStampedCache(int maxNeighborsSize, int maxSlots, double maxSpan, double newSlotInterval, TimeStampedGenerator<T> generator, double overridingMeanStep)
具有覆盖最小步长的简单构造函数。
|
Modifier and Type | Method and Description |
---|---|
T |
getEarliest()
获取此缓存中的最早条目。
|
int |
getEntries()
获取缓存的总条目数。
|
int |
getGenerateCalls()
获取调用生成方法的次数。
|
TimeStampedGenerator<T> |
getGenerator()
获取生成器。
|
int |
getGetNeighborsCalls()
|
T |
getLatest()
获取此缓存中的最新条目。
|
int |
getMaxNeighborsSize()
获取由 TimeStampedCache.getNeighbors(AbsoluteDate, int) 返回的列表的最大大小。
|
int |
getMaxSlots()
获取独立缓存时间槽的最大数量。
|
double |
getMaxSpan()
获取一个时间槽的最大持续时间跨度(以秒为单位)。
|
Stream<T> |
getNeighbors(AbsoluteDate central, int n)
获取围绕中心日期的条目。
|
double |
getNewSlotQuantumGap()
获取新建时间槽而不是扩展现有时间槽的量子间隙。
|
int |
getSlots()
获取正在使用的时间槽数。
|
int |
getSlotsEvictions()
获取时间槽驱逐次数。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getNeighbors
public static final int DEFAULT_CACHED_SLOTS_NUMBER
public GenericTimeStampedCache(int maxNeighborsSize, int maxSlots, double maxSpan, double newSlotInterval, TimeStampedGenerator<T> generator)
maxNeighborsSize
- 要由getNeighbors(AbsoluteDate, int)
返回的数组的最大大小,必须至少为2
maxSlots
- 独立缓存时间槽的最大数量
maxSpan
- 一个时间槽的最大持续时间跨度(以秒为单位)(如果需要,可以设置为Double.POSITIVE_INFINITY
)
newSlotInterval
- 超过此时间间隔将创建一个新的时间槽,而不是扩展现有时间槽
generator
- 用于尚不存在数据的生成器
public GenericTimeStampedCache(int maxNeighborsSize, int maxSlots, double maxSpan, double newSlotInterval, TimeStampedGenerator<T> generator, double overridingMeanStep)
maxNeighborsSize
- 要由getNeighbors(AbsoluteDate, int)
返回的数组的最大大小,必须至少为2
maxSlots
- 独立缓存时间槽的最大数量
maxSpan
- 一个时间槽的最大持续时间跨度(以秒为单位)(如果需要,可以设置为Double.POSITIVE_INFINITY
)
newSlotInterval
- 超过此时间间隔将创建一个新的时间槽,而不是扩展现有时间槽
generator
- 用于尚不存在数据的生成器
overridingMeanStep
- 用于非均匀表格化值的覆盖平均步长。例如,在缓存月度表格化值时使用。否则使用Double.NaN
。
OrekitIllegalArgumentException
- 如果:
public TimeStampedGenerator<T> getGenerator()
public int getMaxSlots()
public double getMaxSpan()
public double getNewSlotQuantumGap()
量子间隙是在构造时提供的newSlotInterval
值,四舍五入到缓存内部使用的最近量子步长。
public int getGetNeighborsCalls()
TimeStampedCache.getNeighbors(AbsoluteDate)
方法的次数。
此调用次数用作解释getGenerateCalls()
的参考。
TimeStampedCache.getNeighbors(AbsoluteDate)
方法的次数
getGenerateCalls()
public int getGenerateCalls()
此调用次数与缓存未命中的次数相关,并可用于调整缓存配置。每次缓存未命中都会执行至少一次调用,但如果新日期与现有缓存远偏移,则可能需要多次调用,具体取决于生成器返回的数组中的元素数量和步长之间的差异。
getGetNeighborsCalls()
public int getSlotsEvictions()
当最大时间槽数量足够满足对缓存的并发请求时,此数字应保持较小。如果增加太多,则缓存配置可能不佳,缓存实际上并没有改善情况(在这种情况下,调用生成方法的次数
可能会增加)。
public int getSlots()
public int getEntries()
public T getEarliest() throws IllegalStateException
getEarliest
在接口 TimeStampedCache<T extends TimeStamped>
中
IllegalStateException
- 如果此缓存为空
public T getLatest() throws IllegalStateException
getLatest
在接口 TimeStampedCache<T extends TimeStamped>
中
IllegalStateException
- 如果此缓存为空
public int getMaxNeighborsSize()
TimeStampedCache.getNeighbors(AbsoluteDate, int)
返回的列表的最大大小。
getMaxNeighborsSize
在接口 TimeStampedCache<T extends TimeStamped>
中
public Stream<T> getNeighbors(AbsoluteDate central, int n)
如果中心日期在覆盖范围内,返回的数组将平衡,中心日期之前的点占一半,中心日期之后的点占一半(当然取决于n的奇偶性)。如果中心日期接近边界,则返回的数组将不平衡,并且将仅包含n个最早(或最新)的条目。典型的后一种情况是闰秒缓存,因为闰秒的数量不能任意增加。
此方法可安全地供多个线程同时执行。
getNeighbors
在接口 TimeStampedCache<T 扩展 TimeStamped>
central
- 中心日期
n
- 邻居数量(不能超过TimeStampedCache.getMaxNeighborsSize()
)
Copyright © 2002-2023 CS GROUP. All rights reserved.