private void writeTrailer() throws IOException {
        try {
            trailer.order(ByteOrder.LITTLE_ENDIAN)
                    .putInt((int) crc.getValue())
                    .putInt(deflater.getTotalIn())
                    .flip();
            channel.write(trailer);
        } finally {
            trailer.clear();
        }
    }
This class has a better performance than {@link GZIPOutputStream} because the class: 1. uses
(direct) ByteBuffer instead of byte[] 2. caches and reuse data 3. no synchronized on our own
methods

@author James Chen
@see java.util.zip.DeflaterOutputStream
@see java.util.zip.GZIPOutputStream
turms-server-common/src/main/java/im/turms/server/common/infra/logging/core/compression/FastGzipOutputStream.java