本文整理了Java中com.yahoo.memory.WritableMemory
类的一些代码示例,展示了WritableMemory
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。WritableMemory
类的具体详情如下:
包路径:com.yahoo.memory.WritableMemory
类名称:WritableMemory
[英]Provides read and write primitive and primitive array access to any of the four resources mentioned at the package level.
[中]提供对包级别提到的四种资源中任何一种的读写原语和原语数组访问。
代码示例来源:origin: apache/incubator-druid
@SuppressWarnings("ResultOfObjectAllocationIgnored")
@Override
public void init(final ByteBuffer buf, final int position)
{
final WritableMemory mem = WritableMemory.wrap(buf, ByteOrder.LITTLE_ENDIAN).writableRegion(position, size);
// Not necessary to keep the constructed object since it is cheap to reconstruct by wrapping the memory.
// The objects are not cached as in BuildBufferAggregator since they never exceed the max size and never move.
// So it is easier to reconstruct them by wrapping memory then to keep position-to-object mappings.
new Union(lgK, mem);
}
代码示例来源:origin: DataSketches/sketches-core
final byte[] byteArrOut = new byte[preBytes + dataBytes];
if (mem_ != null) {
mem_.getByteArray(0, byteArrOut, 0, preBytes + dataBytes);
final WritableMemory memOut = WritableMemory.wrap(byteArrOut);
memOut.putByte(PREAMBLE_LONGS_BYTE, (byte) CONST_PREAMBLE_LONGS); //RF not used = 0
memOut.putByte(SER_VER_BYTE, (byte) SER_VER);
memOut.putByte(FAMILY_BYTE, (byte) Family.INTERSECTION.getID());
memOut.putByte(LG_NOM_LONGS_BYTE, (byte) 0); //not used
memOut.putByte(LG_ARR_LONGS_BYTE, (byte) lgArrLongs_);
if (empty_) {
memOut.setBits(FLAGS_BYTE, (byte) EMPTY_FLAG_MASK);
memOut.clearBits(FLAGS_BYTE, (byte) EMPTY_FLAG_MASK);
memOut.putShort(SEED_HASH_SHORT, seedHash_);
memOut.putInt(RETAINED_ENTRIES_INT, curCount_);
memOut.putFloat(P_FLOAT, (float) 1.0);
memOut.putLong(THETA_LONG, thetaLong_);
memOut.putLongArray(preBytes, hashTable_, 0, 1 << lgArrLongs_);
代码示例来源:origin: DataSketches/sketches-core
@Override
public byte[] toByteArray() { //MY_FAMILY is stored in mem_
final byte lgArrLongs = mem_.getByte(LG_ARR_LONGS_BYTE);
final int preambleLongs = mem_.getByte(PREAMBLE_LONGS_BYTE) & 0X3F;
final int lengthBytes = (preambleLongs + (1 << lgArrLongs)) << 3;
final byte[] byteArray = new byte[lengthBytes];
final WritableMemory mem = WritableMemory.wrap(byteArray);
mem_.copyTo(0, mem, 0, lengthBytes);
return byteArray;
}
代码示例来源:origin: DataSketches/sketches-core
WritableMemory mem = WritableMemory.wrap(bytearray1);
long pre0 = mem.getLong(0);
mem.putLong(0, pre0); //restore
mem.putLong(0, pre0); //restore
mem.putLong(0, pre0); //restore
mem.putLong(0, pre0); //restore
final long origThetaLong = mem.getLong(THETA_LONG);
try {
mem.putLong(THETA_LONG, Long.MAX_VALUE / 2); //Corrupt the theta value
HeapAlphaSketch.heapifyInstance(mem, DEFAULT_UPDATE_SEED);
fail();
mem.putLong(THETA_LONG, origThetaLong); //restore theta
byte[] byteArray2 = new byte[bytearray1.length -1];
WritableMemory mem2 = WritableMemory.wrap(byteArray2);
mem.copyTo(0, mem2, 0, mem2.getCapacity());
try {
HeapAlphaSketch.heapifyInstance(mem2, DEFAULT_UPDATE_SEED);
代码示例来源:origin: apache/incubator-druid
private WritableMemory getMemory(ByteBuffer buffer)
{
WritableMemory mem = memCache.get(buffer);
if (mem == null) {
mem = WritableMemory.wrap(buffer, ByteOrder.LITTLE_ENDIAN);
memCache.put(buffer, mem);
}
return mem;
}
代码示例来源:origin: DataSketches/sketches-core
@Override
public void reset() {
//clear hash table
//hash table size and hashTableThreshold stays the same
//lgArrLongs stays the same
//thetaLongs resets to p
final int arrLongs = 1 << getLgArrLongs();
final int preambleLongs = mem_.getByte(PREAMBLE_LONGS_BYTE) & 0X3F;
final int preBytes = preambleLongs << 3;
mem_.clear(preBytes, arrLongs * 8L); //clear data array
//flags: bigEndian = readOnly = compact = ordered = false; empty = true.
mem_.putByte(FLAGS_BYTE, (byte) EMPTY_FLAG_MASK);
mem_.putInt(RETAINED_ENTRIES_INT, 0);
final float p = mem_.getFloat(P_FLOAT);
final long thetaLong = (long) (p * MAX_THETA_LONG_AS_DOUBLE);
mem_.putLong(THETA_LONG, thetaLong);
}
代码示例来源:origin: DataSketches/sketches-core
@Test(expectedExceptions = SketchesArgumentException.class)
public void compactNotSupported() {
ArrayOfDoublesSerDe serDe = new ArrayOfDoublesSerDe();
ItemsSketch<Double> sketch = ItemsSketch.getInstance(Comparator.naturalOrder());
byte[] byteArr = sketch.toByteArray(serDe);
WritableMemory mem = WritableMemory.wrap(byteArr);
mem.clearBits(PreambleUtil.FLAGS_BYTE, (byte) PreambleUtil.COMPACT_FLAG_MASK);
println(PreambleUtil.toString(mem, false));
ItemsSketch.getInstance(mem, Comparator.naturalOrder(), serDe);
}
代码示例来源:origin: DataSketches/sketches-core
private static void toFrom2(int lgConfigK, TgtHllType tgtHllType, int n) {
int bytes = HllSketch.getMaxUpdatableSerializationBytes(lgConfigK, tgtHllType);
byte[] byteArray = new byte[bytes];
WritableMemory wmem = WritableMemory.wrap(byteArray);
HllSketch src = new HllSketch(lgConfigK, tgtHllType, wmem);
for (int i = 0; i < n; i++) {
WritableMemory wmem2 = WritableMemory.wrap(updatableByteArr);
WritableMemory wmem3 = WritableMemory.allocate(bytes);
wmem2.copyTo(0, wmem3, 0, wmem2.getCapacity());
HllSketch dst3 = HllSketch.writableWrap(wmem3);
代码示例来源:origin: DataSketches/sketches-core
private static final void grow(final DirectHllArray host, final int oldLgAuxArrInts) {
final int oldAuxArrInts = 1 << oldLgAuxArrInts;
final int[] oldIntArray = new int[oldAuxArrInts]; //buffer old aux data
host.wmem.getIntArray(host.auxStart, oldIntArray, 0, oldAuxArrInts);
insertLgArr(host.wmem, oldLgAuxArrInts + 1); //update LgArr field
final long newAuxBytes = oldAuxArrInts << 3;
final long requestBytes = host.auxStart + newAuxBytes;
final long oldCapBytes = host.wmem.getCapacity();
if (requestBytes > oldCapBytes) {
final MemoryRequestServer svr = host.wmem.getMemoryRequestServer();
final WritableMemory newWmem = svr.request(requestBytes);
host.wmem.copyTo(0, newWmem, 0, host.auxStart);
newWmem.clear(host.auxStart, newAuxBytes); //clear space for new aux data
svr.requestClose(host.wmem, newWmem); //old host.wmem is now invalid
host.updateMemory(newWmem);
}
//rehash into larger aux array
final int configKmask = (1 << host.lgConfigK) - 1;
for (int i = 0; i < oldAuxArrInts; i++) {
final int fetched = oldIntArray[i];
if (fetched != EMPTY) {
//find empty in new array
final int index = find(host, fetched & configKmask);
host.wmem.putInt(host.auxStart + (~index << 2), fetched);
}
}
}
代码示例来源:origin: DataSketches/sketches-core
@Test(expectedExceptions = SketchesArgumentException.class)
public void checkSizeTooSmall() {
int k = 16;
WritableMemory mem = WritableMemory.wrap(new byte[(k*16) +32]); //initialized
SetOperation setOp = new SetOperationBuilder().setNominalEntries(k).build(Family.UNION, mem);
println(setOp.toString());
WritableMemory mem2 = WritableMemory.wrap(new byte[32]); //for just preamble
mem.copyTo(0, mem2, 0, 32); //too small
DirectQuickSelectSketch.writableWrap(mem2, Util.DEFAULT_UPDATE_SEED);
}
代码示例来源:origin: DataSketches/sketches-core
@Override
protected void rebuild(final int newCapacity) {
final int numValues = getNumValues();
checkIfEnoughMemory(mem_, newCapacity, numValues);
final int currCapacity = getCurrentCapacity();
final long[] keys = new long[currCapacity];
final double[] values = new double[currCapacity * numValues];
mem_.getLongArray(keysOffset_, keys, 0, currCapacity);
mem_.getDoubleArray(valuesOffset_, values, 0, currCapacity * numValues);
mem_.clear(keysOffset_,
((long) SIZE_OF_KEY_BYTES * newCapacity) + ((long) SIZE_OF_VALUE_BYTES * newCapacity * numValues));
mem_.putInt(RETAINED_ENTRIES_INT, 0);
mem_.putByte(LG_CUR_CAPACITY_BYTE, (byte)Integer.numberOfTrailingZeros(newCapacity));
valuesOffset_ = keysOffset_ + (SIZE_OF_KEY_BYTES * newCapacity);
lgCurrentCapacity_ = Integer.numberOfTrailingZeros(newCapacity);
for (int i = 0; i < keys.length; i++) {
if ((keys[i] != 0) && (keys[i] < theta_)) {
insert(keys[i], Arrays.copyOfRange(values, i * numValues, (i + 1) * numValues));
}
}
setRebuildThreshold();
}
代码示例来源:origin: DataSketches/sketches-core
@Test
public void checkStreamErrors2() {
WritableMemory wmem = WritableMemory.allocate(4 * 10);
int[] svStream = { 1 };
int[] wStream = { 2 };
try {
putPinnedSlidingMerged(wmem, 4, 0, 1, 1, 1, 0, (short) 0, svStream, wStream);
fail();
} catch (SketchesStateException e) { }
assertTrue(PreambleUtil.isCompressed(wmem));
}
代码示例来源:origin: DataSketches/sketches-core
final void updateMemory(final WritableMemory newWmem) {
wmem = newWmem;
mem = newWmem;
memObj = wmem.getArray();
memAdd = wmem.getCumulativeOffset(0L);
}
代码示例来源:origin: DataSketches/sketches-core
@Test
public void checkGrowFromWrappedEmptySketch() {
final int k = 16;
final int n = 0;
final int initBytes = DoublesSketch.getUpdatableStorageBytes(k, n); //8 bytes
final UpdateDoublesSketch usk1 = DoublesSketch.builder().setK(k).build();
final Memory origSketchMem = Memory.wrap(usk1.toByteArray());
try (WritableDirectHandle memHandle = WritableMemory.allocateDirect(initBytes)) {
WritableMemory mem = memHandle.get();
origSketchMem.copyTo(0, mem, 0, initBytes);
UpdateDoublesSketch usk2 = DirectUpdateDoublesSketch.wrapInstance(mem);
assertTrue(mem.isSameResource(usk2.getMemory()));
assertEquals(mem.getCapacity(), initBytes);
assertTrue(mem.isDirect());
assertTrue(usk2.isEmpty());
//update the sketch forcing it to grow on-heap
for (int i = 1; i <= 5; i++) { usk2.update(i); }
assertEquals(usk2.getN(), 5);
WritableMemory mem2 = usk2.getMemory();
assertFalse(mem.isSameResource(mem2));
assertFalse(mem2.isDirect()); //should now be on-heap
final int expectedSize = COMBINED_BUFFER + ((2 * k) << 3);
assertEquals(mem2.getCapacity(), expectedSize);
}
}
代码示例来源:origin: DataSketches/sketches-core
@SuppressWarnings("unused")
@Test
public void checkExtractFlags() {
int bytes = HllSketch.getMaxUpdatableSerializationBytes(4, TgtHllType.HLL_4);
WritableMemory wmem = WritableMemory.allocate(bytes);
Object memObj = wmem.getArray();
long memAdd = wmem.getCumulativeOffset(0L);
HllSketch sk = new HllSketch(4, TgtHllType.HLL_4, wmem);
int flags = extractFlags(wmem);
assertEquals(flags, EMPTY_FLAG_MASK);
}
代码示例来源:origin: DataSketches/sketches-core
private static void putFirst8(final WritableMemory wmem, final byte preInts, final byte lgK,
final byte fiCol, final byte flags, final short seedHash) {
wmem.clear(0L, 4L * preInts);
wmem.putByte(getLoFieldOffset(LoField.PRE_INTS), preInts);
wmem.putByte(getLoFieldOffset(LoField.SER_VERSION), SER_VER);
wmem.putByte(getLoFieldOffset(LoField.FAMILY), (byte) Family.CPC.getID());
wmem.putByte(getLoFieldOffset(LoField.LG_K), lgK);
wmem.putByte(getLoFieldOffset(LoField.FI_COL), fiCol);
wmem.putByte(getLoFieldOffset(LoField.FLAGS), flags);
wmem.putShort(getLoFieldOffset(LoField.SEED_HASH), seedHash);
}
代码示例来源:origin: apache/incubator-druid
@Override
public void init(final ByteBuffer buf, final int position)
{
final WritableMemory mem = getMemory(buf).writableRegion(position, size);
putSketchIntoCache(buf, position, new HllSketch(lgK, tgtHllType, mem));
}
代码示例来源:origin: DataSketches/sketches-core
/**
* Return this sketch as a compressed byte array.
* @return this sketch as a compressed byte array.
*/
public byte[] toByteArray() {
final CompressedState state = CompressedState.compress(this);
final long cap = state.getRequiredSerializedBytes();
final WritableMemory wmem = WritableMemory.allocate((int) cap);
state.exportToMemory(wmem);
return (byte[]) wmem.getArray();
}
代码示例来源:origin: DataSketches/sketches-core
@Test
public void checkEmptyMemory() {
WritableMemory wmem = WritableMemory.allocate(4 * 10);
wmem.putByte(2, (byte) 16); //legal Family
wmem.putByte(5, (byte) (1 << 2)); //select NONE
println(CpcSketch.toString(wmem, false));
}
代码示例来源:origin: DataSketches/sketches-core
private WritableMemory growCombinedMemBuffer(final int itemSpaceNeeded) {
final long memBytes = mem_.getCapacity();
final int needBytes = (itemSpaceNeeded << 3) + COMBINED_BUFFER; //+ preamble + min & max
assert needBytes > memBytes;
memReqSvr = (memReqSvr == null) ? mem_.getMemoryRequestServer() : memReqSvr;
final WritableMemory newMem = memReqSvr.request(needBytes);
mem_.copyTo(0, newMem, 0, memBytes);
memReqSvr.requestClose(mem_, newMem);
return newMem;
}
}
内容来源于网络,如有侵权,请联系作者删除!