java / intermediate
Snippet
Primitive Byte-Array-Stückelung und Hashing in Spring-Endpunkten
Die direkte Verarbeitung primitiver Arrays ermöglicht eine binäre Datenverarbeitung mit hohem Durchsatz. Die Iteration über feste Sub-Array-Abschnitte mittels Offset und Längenangaben berechnet Prüfsummen effizient ohne Zwischenobjekte auf dem Heap.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@RestController@RequestMapping("/api/chunks")public class ChunkProcessingController {@PostMapping("/checksum")public ResponseEntity<String> computeChecksum(@RequestBody byte[] rawPayload) {int chunkSize = 1024;int totalLength = rawPayload.length;MessageDigest digest = getSha256Digest();for (int offset = 0; offset < totalLength; offset += chunkSize) {int currentChunkLength = Math.min(chunkSize, totalLength - offset);digest.update(rawPayload, offset, currentChunkLength);}return ResponseEntity.ok(HexFormat.of().formatHex(digest.digest()));}private MessageDigest getSha256Digest() {try {return MessageDigest.getInstance("SHA-256");} catch (NoSuchAlgorithmException e) {throw new IllegalStateException("SHA-256 unavailable", e);}}}
spring
Erklärung
1
public ResponseEntity<String> computeChecksum(@RequestBody byte[] rawPayload) {
Empfängt binäre Rohdaten direkt als primitives Byte-Array ohne Wrapper-Overhead.
2
for (int offset = 0; offset < totalLength; offset += chunkSize) {
Iteriert in durch die Chunk-Größe definierten Schrittweiten durch Array-Segmente.
3
digest.update(rawPayload, offset, currentChunkLength);
Übergibt spezifische Sub-Array-Bereiche über Array-Zeiger direkt an den kryptografischen Digest.