Bilinen Dolaylı Alt Sınıflar |
Belirli bir türdeki verileri içeren bir kapsayıcı.
DataBuffer
örnekleri, yerel veya yığın bellek bölümlerini aşağıdakileri destekleyen doğrusal bir görünüme eşler:
- 64 bit indeksleme, 2 31 bayttan daha büyük arabellekle çalışmaya olanak tanır
- Yalnızca ilkellerin değil, her türden nesnenin depolanması
- Genel türler, standart JDK arabelleklerinde olduğu gibi açık arabellek türleri gerektirmeyen kutulu türlerle de doğrudan çalışmaya olanak tanır.
DataBuffer
tarafından yönetilen belleğin, özellikle ilkel olmayan türlerle veya büyük arabelleklerle çalışırken doğrusal olduğunun garantisinin bulunmadığına dikkat etmek önemlidir. Genel Yöntemler
özet <R> R | |
özet DataBuffer <T> | copyTo ( DataBuffer <T> dst, uzun boyut) Kaynak dizideki nesnelerin referanslarını bu ara belleğe yazın. |
soyut boole | eşittir (Nesne nesnesi) Veri arabellekleri arasındaki eşitliği kontrol eder. |
soyut T | getObject (uzun dizin) Verilen indeksteki değeri okur. |
soyut boole | Salt Okunur () Bu arabelleğin erişilebilir bir dizi tarafından desteklenip desteklenmediğini belirtir. |
özet DataBuffer <T> | dar (uzun boy) İçeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan ve boyutu verilen değere ayarlanmış yeni bir arabellek oluşturur. |
özet DataBuffer <T> | ofset (uzun indeks) Verilen dizinden başlayarak, içeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan yeni bir arabellek oluşturur. |
özet DataBuffer <T> | oku (T[] dst) Bu arabellekteki nesnelerin referanslarını hedef diziye okuyun. |
özet DataBuffer <T> | okuma (T[] dst, int ofset, int uzunluk) Bu arabellekteki nesnelerin referanslarını hedef diziye okuyun. |
özet DataBuffer <T> | setObject (T değeri, uzun dizin) Verilen değeri, verilen dizindeki bu arabelleğe yazar. |
soyut uzun | boyut () Öğeler cinsinden arabelleğin boyutu. |
özet DataBuffer <T> | dilim (uzun dizin, uzun boyut) Verilen dizinden ve verilen boyuttan başlayarak, içeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan yeni bir arabellek oluşturur. |
özet DataBufferWindow <? DataBuffer'ı genişletir <T>> | pencere (uzun boy) Bu arabelleğin kısmi görünümünü sağlayan bir DataBufferWindow oluşturur. |
özet DataBuffer <T> | yaz (T[] kaynak) Kaynak dizideki nesnelerin referanslarını bu ara belleğe yazın. |
özet DataBuffer <T> | yaz (T[] kaynak, int ofset, int uzunluk) İnt dizilerini kullanan toplu koyma yöntemi. |
Genel Yöntemler
genel özet R kabul et ( DataStorageVisitor <R> ziyaretçisi)
Bu arabelleğin yedekleme deposunu ziyaret eder.
Tampon uygulaması, sağlanan ziyaretçiye gerçek veri depolamaya ilişkin bir referansı geri iletmekten sorumludur. Ziyaretçinin olası tüm veri depolama türlerini yönetmesi gerekmez ve yalnızca gerçekten ilgilendiği depolama yöntemlerini geçersiz kılabilir. Diğer herhangi bir depolama türü için bu çağrı, fallback()
işlevine geri dönecektir, böylece ziyaretçi aşağıdaki durumlarda bazı genel rutinleri yürütebilir: ihtiyaç vardı.
Parametreler
ziyaretçi | bu arabelleğin veri deposunu ziyaret eder |
---|
İade
- ziyaretçinin döndürdüğü değerin aynısı
genel özet DataBuffer <T> copyTo ( DataBuffer <T> dst, uzun boyut)
Kaynak dizideki nesnelerin referanslarını bu ara belleğe yazın.
Kopyalanacak hedef arabellek boyutundan daha fazla değer varsa, yani size > dst.size()
, o zaman hiçbir değer aktarılmaz ve bir BufferOverflowException oluşturulur. Öte yandan, kaynak arabellek boyutundan daha fazla kopyalanacak değer varsa, örneğin > src.size()
, bu durumda bir BufferUnderfloatException oluşturulur.
Aksi takdirde, bu yöntem n = size
değerlerini bu arabellekten hedef arabelleğe kopyalar.
Parametreler
dst | değerlerin kopyalandığı hedef arabellek; bu arabellek olmamalı |
---|---|
boyut | hedef ara belleğe kopyalanacak değer sayısı |
İade
- bu tampon
Atar
YasadışıTartışmaİstisna | hedef arabellek bu arabellekse |
---|---|
ReadOnlyBufferException | hedef arabellek salt okunursa |
BufferOverflowException | hedef arabelleğinde yeterli alan yoksa |
TamponUnderflowException | kaynak arabelleğinde yeterli değer yoksa |
genel soyut boole eşittir (Object obj)
Veri arabellekleri arasındaki eşitliği kontrol eder.
Bir veri arabelleği, bu nesne aynı boyutta, türde başka bir DataBuffer
ise ve öğeler eşit ve aynı sıradaysa, başka bir nesneye eşittir. Örneğin:
IntDataBuffer buffer = DataBuffers.of(1, 2, 3);
assertEquals(buffer, DataBuffers.of(1, 2, 3)); // true
assertEquals(buffer, DataBuffers.ofObjects(1, 2, 3)); // true, as Integers are equal to ints
assertNotEquals(buffer, DataBuffers.of(1, 2, 3, 0)); // false, different sizes
assertNotEquals(buffer, DataBuffers.of(1, 3, 2)); // false, different order
assertNotEquals(buffer, DataBuffers.of(1L, 2L, 3L)); // false, different types
İki arabellek arasındaki eşitliği doğrulamak için gereken hesaplamanın bazı durumlarda pahalı olabileceğini ve bu nedenle performansın önemli olduğu kritik bir yolda bu yöntemin kullanılmaması önerildiğini unutmayın.
Parametreler
obj | bu tamponun karşılaştırılacağı nesne |
---|
İade
- true bu arabellek sağlanan nesneye eşitse
genel özet T getObject (uzun dizin)
Verilen indeksteki değeri okur. Önemli: Bu yöntemin kullanımı, ilkel olmayan türlerdeki arabelleklerle veya veri türünün arayan tarafından belirleyici olarak bilinmediği durumlarda sınırlı olmalıdır. Diğer durumlarda, performansı önemli ölçüde artıracak ilkel varyantının kullanımını tercih edin (örn. IntDataBuffer.getInt(idx)
Parametreler
indeks | kayan noktanın okunacağı dizin |
---|
İade
- verilen endeksteki değer
Atar
IndexOutOfBoundsException | indeks negatifse veya arabellek boyutundan küçük değilse |
---|
genel soyut boolean isReadOnly ()
Bu arabelleğin erişilebilir bir dizi tarafından desteklenip desteklenmediğini belirtir.
İade
- ancak ve ancak bu arabellek salt okunursa doğrudur
genel özet DataBuffer <T> dar (uzun boyutlu)
İçeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan ve boyutu verilen değere ayarlanmış yeni bir arabellek oluşturur.
Yeni boyut bu arabellek boyutundan büyük olmamalıdır. Bu arabelleğin içeriğinde yapılan değişiklikler yeni arabellekte görünür olacaktır ve bunun tersi de geçerlidir. Yeni arabellek, yalnızca ve yalnızca bu arabellek salt okunursa salt okunur olacaktır.
Bu çağrı slice(0, size)
eşdeğerdir
Parametreler
boyut | bu yeni arabelleğin boyutu |
---|
İade
- yeni tampon
Atar
YasadışıTartışmaİstisna | indeks ve/veya boyut değerleri doğrulama kontrollerini geçemezse |
---|
genel özet DataBuffer <T> ofseti (uzun dizin)
Verilen dizinden başlayarak, içeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan yeni bir arabellek oluşturur.
Dizin bu arabellek boyutundan büyük olmamalıdır. Bu arabelleğin içeriğinde yapılan değişiklikler yeni arabellekte görünür olacaktır ve bunun tersi de geçerlidir. Yeni arabellek, yalnızca ve yalnızca bu arabellek salt okunursa salt okunur olacaktır.
Bu çağrı slice(index, size() - index)
ile eşdeğerdir.
Parametreler
indeks | oluşturulan yeni arabelleğin ilk değerinin dizini, size() değerinden büyük olmamalıdır |
---|
İade
- yeni tampon
Atar
YasadışıTartışmaİstisna | dizin doğrulama kontrollerini geçemezse |
---|
genel özet DataBuffer <T> okuma (T[] dst)
Bu arabellekteki nesnelerin referanslarını hedef diziye okuyun.
Bu yöntem, değerleri bu arabellekten verilen hedef diziye aktarır. Arabellekte isteği karşılamak için gerekenden daha az değer varsa, yani dst.length > size()
ise hiçbir değer aktarılmaz ve bir BufferUnderflowException oluşturulur.
Aksi takdirde, bu yöntem n = dst.length
değerlerini bu arabellekten verilen diziye kopyalar.
Parametreler
dst | değerlerin yazılacağı dizi |
---|
İade
- bu tampon
Atar
TamponUnderflowException | bu arabellekten kopyalanacak yeterli değer yoksa |
---|
genel özet DataBuffer <T> okuma (T[] dst, int ofset, int uzunluk)
Bu arabellekteki nesnelerin referanslarını hedef diziye okuyun.
Bu yöntem, değerleri bu arabellekten verilen hedef diziye aktarır. Arabellekte isteği karşılamak için gerekenden daha az değer varsa, yani length > size()
ise hiçbir değer aktarılmaz ve bir BufferUnderflowException oluşturulur.
Aksi takdirde, bu yöntem n = length
değerlerini bu arabellekten, verilen uzaklıktan başlayarak verilen diziye kopyalar.
Parametreler
dst | değerlerin yazılacağı dizi |
---|---|
telafi etmek | yazılacak ilk değerin dizisi içindeki uzaklık; negatif olmamalı ve dst.length büyük olmamalıdır |
uzunluk | verilen diziye yazılacak maksimum değer sayısı; negatif olmamalı ve dst.length - offset değerinden büyük olmamalıdır |
İade
- bu tampon
Atar
TamponUnderflowException | bu arabellekte uzunluk değerlerinden daha az değer kaldıysa |
---|---|
IndexOutOfBoundsException | ofset ve uzunluk parametrelerindeki ön koşullar karşılanmıyorsa |
genel özet DataBuffer <T> setObject (T değeri, uzun dizin)
Verilen değeri, verilen dizindeki bu arabelleğe yazar. Önemli: Bu yöntemin kullanımı, ilkel olmayan türlerdeki arabelleklerle veya veri türünün arayan tarafından belirleyici olarak bilinmediği durumlarda sınırlı olmalıdır. Diğer durumlarda, performansı önemli ölçüde artıracak ilkel varyantının kullanımını tercih edin (örn. IntDataBuffer.setInt(idx)
Parametreler
değer | yazılacak değer |
---|---|
indeks | değerin yazılacağı dizin |
İade
- bu tampon
Atar
IndexOutOfBoundsException | indeks negatifse veya arabellek boyutundan küçük değilse |
---|---|
ReadOnlyBufferException | bu arabellek salt okunursa |
genel özet uzun boy ()
Öğeler cinsinden arabelleğin boyutu.
Örneğin, bir bayt arabelleği durumunda, bu değer, bu arabelleğin tutabileceği bayt sayısına eşittir. Bir tamsayı arabelleği için, tam sayıların sayısına eşittir, dolayısıyla bu arabelleğin bayt cinsinden boyutu size() * Integer.BYTES
olur.
İade
- arabellek boyutu
genel özet DataBuffer <T> dilimi (uzun dizin, uzun boyut)
Verilen dizinden ve verilen boyuttan başlayarak, içeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan yeni bir arabellek oluşturur.
Dizin artı yeni boyut bu arabellek boyutundan büyük olmamalıdır. Bu arabelleğin içeriğinde yapılan değişiklikler yeni arabellekte görünür olacaktır ve bunun tersi de geçerlidir. Yeni arabellek, yalnızca ve yalnızca bu arabellek salt okunursa salt okunur olacaktır.
Parametreler
indeks | oluşturulan yeni arabelleğin ilk değerinin dizini |
---|---|
boyut | bu yeni arabelleğin boyutu size() büyük olmamalıdır |
İade
- yeni tampon
Atar
YasadışıTartışmaİstisna | boyut değeri doğrulama kontrollerini geçemezse |
---|
genel özet DataBufferWindow <? DataBuffer <T>> penceresini genişletir (uzun boyutlu)
Bu arabelleğin kısmi görünümünü sağlayan bir DataBufferWindow
oluşturur.
Oluşturulan pencerenin sabit bir boyutu vardır ve offset(long)
yaptığı gibi, yeni bir arabellek örneği tahsis etmeden verilerin farklı görünümlerini sağlamak için bu arabellek boyunca "slide"
. Bu işlem sık sık tekrarlandığında genel performansı artırır. Örneğin:
IntDataBuffer bufferA = DataBuffers.ofInts(1024);
// ... init buffer data
IntDataBuffer bufferB = DataBuffers.ofInts(1, 2, 3, 4);
// Return the index of the first occurrence of bufferB in bufferA using a sliding window
DataBufferWindow<IntDataBuffer> windowA = bufferA.window(4);
for (int i = 0; i < bufferA.size() - bufferB.size(); ++i) {
if (windowA.slideTo(i).buffer().equals(bufferB)) {
return i;
}
}
Döndürülen nesne durum bilgilidir ve iş parçacığı açısından güvenli değildir.
Parametreler
boyut | pencerenin boyutu |
---|
İade
- bu arabelleğin 0 dizininde başlayan yeni bir pencere
Atar
DesteklenmeyenOperationException | bu tür arabellek arabellek pencerelerini desteklemiyorsa |
---|
genel özet DataBuffer <T> yazma (T[] src)
Kaynak dizideki nesnelerin referanslarını bu ara belleğe yazın.
Bu yöntem, verilen kaynak dizideki değerleri bu ara belleğe aktarır. Kaynak dizide bu arabellektekinden daha fazla değer varsa, yani src.length > size()
ise hiçbir değer aktarılmaz ve bir BufferOverflowException oluşturulur.
Aksi takdirde, bu yöntem verilen diziden n = src.length
değerlerini kopyalar.
Parametreler
kaynak | değerlerin okunacağı kaynak dizisi |
---|
İade
- bu tampon
Atar
BufferOverflowException | kaynak dizideki değerler için bu arabellekte yeterli alan yoksa |
---|---|
ReadOnlyBufferException | bu arabellek salt okunursa |
genel özet DataBuffer <T> yazma (T[] kaynak, int ofset, int uzunluk)
İnt dizilerini kullanan toplu koyma yöntemi.
Bu yöntem, verilen kaynak dizideki değerleri bu ara belleğe aktarır. Kaynak dizide bu arabellektekinden daha fazla değer varsa, yani length > size()
ise hiçbir değer aktarılmaz ve bir BufferOverflowException oluşturulur.
Aksi takdirde, bu yöntem, verilen diziden n = length
değerlerini, verilen konumdan başlayarak bu ara belleğe kopyalar.
Parametreler
kaynak | değerlerin okunacağı kaynak dizisi |
---|---|
telafi etmek | okunacak ilk değerin dizisi içindeki uzaklık; negatif olmamalı ve src.length büyük olmamalıdır |
uzunluk | verilen diziden okunacak değerlerin sayısı; negatif olmamalı ve src.length - offset değerinden büyük olmamalıdır |
İade
- bu tampon
Atar
BufferOverflowException | kaynak dizideki değerler için bu arabellekte yeterli alan yoksa |
---|---|
IndexOutOfBoundsException | ofset ve uzunluk parametrelerindeki ön koşullar karşılanmıyorsa |
ReadOnlyBufferException | bu arabellek salt okunursa |