cuốn sách gpt4 ai đã làm

Java: Tìm ra sự khác biệt giữa ByteBuffer được tạo qua kênh.map và phân bổDirect

In lại Tác giả: Vũ trụ không gian 更新时间:2023-11-04 08:11:46 27 4
mua khóa gpt4 Nike

Có cách lập trình nào để triển khai phương thức "isFileMapped" đáp ứng các điều kiện sau:

 ByteBuffer aa = ByteBuffer.allocateDirect(12);
khẳng địnhFalse(isFileMapped(aa));
FileChannel fc = new RandomAccessFile(File.createTempFile("mmap", "test"), "rw").getChannel();
ByteBuffer bb = fc.map(FileChannel.MapMode.READ_WRITE, 0, 10);
khẳng địnhTrue(isFileMapped(bb));
fc.close();
// và tất nhiên:
khẳng địnhFalse(isFileMapped(ByteBuffer.allocate(12)));

Cả hai phiên bản đều thuộc loại MappedByteBuffer và rất đơn giản.

câu trả lời hay nhất

sử dụngMappedByteBuffer.isLoaded(). Nó trả về đúng hoặc sai đối với các bộ đệm được ánh xạ thực sự và ném ra ngoại lệ UnsupportedOperationException đối với các bộ đệm được trả về bởi ByteBuffer.allocateDirect().

Nhưng tôi không chắc liệu UnsupportedOperationException có bị ném ra sau khi tham gia vào thao tác I/O hay không.

Về Java: Để tìm ra sự khác biệt giữa ByteBuffer được tạo qua kênh.map và phân bổDirect, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/11072802/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress