com.yahoo.memory.WritableMemory类的使用及代码示例

x33g5p2x  于2022-02-03 转载在 其他  
字(11.2k)|赞(0)|评价(0)|浏览(116)

本文整理了Java中com.yahoo.memory.WritableMemory类的一些代码示例,展示了WritableMemory类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。WritableMemory类的具体详情如下:
包路径:com.yahoo.memory.WritableMemory
类名称: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;
 }
}

相关文章