Tag: java17

22 รายการ

Blog

นากกายต้นฉบับกำลังปิดฝากล่องช่องคู่หลายช่องหลังคัดของจากสายพาน โดยมีชิ้นซ้ำรอการตัดสินใจด้านข้าง
javajava17streams

Java Collectors.toUnmodifiableMap: ปิดการแก้โครงสร้างหลัง stream

ใช้ toUnmodifiableMap สร้างผลลัพธ์ที่เพิ่มหรือลบไม่ได้ พร้อมทดสอบ duplicate key, null และ mutable value

พี่โชว์
นากกายต้นฉบับกำลังให้ลูกบาศก์ผ่านช่องตรวจรูปทรงก่อนลงตะกร้าบนโต๊ะสีมิ้นต์
javajava17collections

Java Collections.checkedList: กันชน type ตอนรับ List จาก legacy boundary

ใช้ checkedList ตรวจ element ตอนเขียนเข้าคอลเล็กชัน พร้อมทดสอบ raw alias และอธิบายว่ามันไม่แทน validation ของข้อมูลเดิม

พี่โชว์
นากกายต้นฉบับกำลังตรึงเข็มนาฬิกาไม้ไว้เพื่อทดสอบสายพานบัตรหมดอายุบนโต๊ะสว่าง
javajava17time

Java Clock.fixed: หยุดเวลาใน test โดยไม่แตะนาฬิการะบบ

ฉีด Clock เข้า business logic แล้วใช้ Clock.fixed ทดสอบวันหมดอายุแบบ deterministic พร้อมแยก wall clock จาก elapsed time

พี่โชว์
นากกายต้นฉบับปิดวาล์วทรัพยากรด้วยมือ ขณะที่สายสำรองต่อเข้ากลไกปิดอัตโนมัติ
javacleanerresources

Java Cleaner: มี fallback cleanup แต่ยังต้องปิด resource แบบ explicit

ใช้ java.lang.ref.Cleaner เป็น safety net โดยไม่จับ owner ค้าง พร้อม Java 17 assertions และขอบเขตที่ห้ามพึ่งเวลาของ GC

พี่โชว์
นากกายต้นฉบับกำลังลองแผ่นรูปทรงไฟล์ผ่านแม่แบบช่องรับบนโต๊ะสว่าง
javaniopath

Java PathMatcher: คอมไพล์ glob ครั้งเดียวแล้วตรวจ path ตาม filesystem

ใช้ FileSystem.getPathMatcher กับ glob ตรวจไฟล์หลายเส้น พร้อมแยก matching จาก path containment และทดสอบ Java 17 จริง

พี่โชว์
นากกายต้นฉบับกำลังวางหมุดตามทางทีละจุดจนถึงประตูกั้นบนโต๊ะมิ้นต์
javastreamsiteration

Java Stream.iterate แบบมี hasNext: สร้างลำดับมีขอบเขตโดยไม่พึ่ง limit เดา ๆ

ใช้ Stream.iterate(seed, hasNext, next) สร้างช่วงตามเงื่อนไข พร้อม Java 17 assertions และขอบเขต overflow กับ non-progressing step

พี่โชว์
นากกายกำลังแขวนกุญแจหน้าตาเหมือนกันสองดอกบนตะขอคนละอัน
javaidentityhashmapcollections

Java IdentityHashMap: เมื่อ key ต้องเป็น object เดิม ไม่ใช่ object ที่ equals กัน

ใช้ IdentityHashMap เฉพาะงาน topology และ graph traversal พร้อมทดสอบความต่างจาก HashMap และข้อห้ามใน business data

พี่โชว์
นากกายกำลังเลื่อนตัวชี้ข้ามแถวกระเบื้องไปยังหมุดที่ถูกยกขึ้นถัดไป
javabitsetcollections

Java BitSet.nextSetBit: เดินเฉพาะตำแหน่งที่เปิดโดยไม่สแกนทุกช่อง

ใช้ BitSet.nextSetBit วน sparse flags พร้อมหลีกเลี่ยง off-by-one และแยก index set จาก business identity

พี่โชว์
นากกายกำลังติดลิ้นชักข้อมูลเฉพาะให้แม่พิมพ์แต่ละชิ้นโดยไม่ปะปนกัน
javaclassvaluereflection

Java ClassValue: ผูก cache กับ Class โดยไม่สร้าง static map ถือ class loader ไว้

ใช้ ClassValue คำนวณ metadata ต่อ Class แบบ lazy พร้อม remove, concurrency contract และ Java 17 assertions

พี่โชว์
นากแม่น้ำต้นฉบับกำลังคัดบัตรงานซ้ำจากสายพานหลายเส้นลงตะกร้ากลางเพียงใบเดียว
javaconcurrencyconcurrenthashmap

Java ConcurrentHashMap.newKeySet: ทำ concurrent set โดยไม่ใส่ Boolean หลอก

ใช้ key set สำหรับ dedup ข้ามหลาย thread พร้อมทดสอบ add semantics และแยกจาก map ที่ต้องเก็บ metadata

พี่โชว์
นากแม่น้ำต้นฉบับกำลังเลื่อนกรอบหน้าต่างเหนือแถวบัตรคีย์ที่เรียงจากซ้ายไปขวาบนโต๊ะสีมิ้นต์
javanavigablemaptreemap

Java NavigableMap.subMap: เปิดหน้าต่างช่วงคีย์แบบ live view

เลือกข้อมูลตามขอบเขต inclusive/exclusive โดยไม่ copy พร้อมทดสอบการแก้ผ่าน view และการปฏิเสธคีย์นอกช่วง

พี่โชว์
นากแม่น้ำต้นฉบับกำลังสอดบัตรรหัสผ่านกรอบตรวจที่ต้องพอดีทั้งใบ ไม่ใช่เพียงมีบางส่วนตรงกัน
javaregexpattern

Java Pattern.asMatchPredicate: ใช้ regex แบบตรงทั้งข้อความใน Stream

แยก full match จาก find semantics ให้ชัด พร้อมทดสอบ filter ของรหัสงานและกรณีมีข้อความเกิน

พี่โชว์
นากแม่น้ำต้นฉบับยืนที่แท่นกลางแลกตะกร้าสองใบซึ่งมาจากคนละสายพาน
javaconcurrencyexchanger

Java Exchanger: นัดแลกข้อมูลระหว่างสองงานแบบเจอกันพอดี

ใช้ Exchanger ทำ two-party handoff พร้อม timeout และแยกจาก queue ที่รองรับหลาย producer/consumer

พี่โชว์
นากแม่น้ำต้นฉบับกำลังส่งกล่องข้ามช่องว่างตรงถึงมืออีกฝั่งโดยไม่มีชั้นพักกลาง
javaconcurrencyblockingqueue

Java SynchronousQueue: ส่งต่อแบบไม่มีชั้นวางพัก

เข้าใจ zero-capacity handoff, fairness และ timeout สำหรับ producer-consumer ที่ต้องเจอกันจริง

พี่โชว์
นากแม่น้ำต้นฉบับกำลังเปิดประตูให้ลูกปัดตัวเลขที่มีค่าไหลเข้าสายพาน และปิดช่องที่ว่าง
javaoptionalintstreams

Java OptionalInt.stream: ต่อค่าที่อาจไม่มีเข้ากับ IntStream

แปลงผล parse แบบ zero-or-one ให้เข้ากับ primitive stream โดยไม่ใช้ sentinel หรือ boxing เกินจำเป็น

พี่โชว์
นากมิ้นต์ต้นฉบับวางนาฬิกาทรายสีอำพันข้างกล่องงาน ถ้าหมดเวลาจะสลับใส่กล่องสำรองแทน
javaconcurrencycompletablefuture

Java completeOnTimeout: ใส่ค่าสำรองเมื่องานช้าเกินเวลา

ใช้ CompletableFuture.completeOnTimeout กันอนาคตค้าง พร้อมทดสอบว่าค่าสำรองเข้าเมื่อหมดเวลาและค่าจริงชนะถ้าเสร็จก่อน

น้องกาย
นากมิ้นต์สามตัวต้นฉบับยืนรอที่เส้นสตาร์ทสีอำพันบนโต๊ะมิ้นต์ จนครบจำนวนแล้วค่อยวิ่งพร้อมกัน
javaconcurrencycyclicbarrier

Java CyclicBarrier: นัดพบครบจำนวนแล้วค่อยไปต่อด้วยกัน

ใช้ CyclicBarrier ให้หลาย thread รอจนครบ parties แล้วผ่านเฟสร่วม พร้อมทดสอบว่า barrier รีเซ็ตใช้ซ้ำได้

น้องกาย
นากมิ้นต์ต้นฉบับลองแตะกุญแจประตูห้องแล็บ ถ้ายึดไม่ได้ก็หันไปทำงานกองอื่นบนโต๊ะครีม
javaconcurrencylock

Java ReentrantLock.tryLock: ลองคว้ากุญแจ ถ้าไม่ได้ก็ไม่ยืนรอ

ใช้ tryLock และ tryLock(timeout) ลดการค้างรอเมื่อต้องแย่งทรัพยากร พร้อมทดสอบว่า thread ที่พลาดล็อกเดินต่อได้

น้องกาย
นากแม่น้ำสีมิ้นต์ต้นฉบับกำลังพลิกป้ายกรองเชิงภาพเพื่อแยกตะกร้าว่างออกจากตะกร้าที่มีของ
javapredicatestreams

Java Predicate.not: ปฏิเสธเงื่อนไขโดยยังอ่านเป็นประโยค

ใช้ Predicate.not กับ method reference ใน stream พร้อมแยก null policy ให้เห็นชัด

พี่โชว์
นากแม่น้ำสีมิ้นต์ต้นฉบับกำลังรวมเมล็ดจากหลายรางลงเครื่องชั่งเดียวโดยไม่ให้รางชนกัน
javaconcurrencyatomic

Java LongAccumulator: รวมสถิติที่มีคนอัปเดตพร้อมกัน

ใช้ accumulator แบบ associative ลด contention พร้อมเข้าใจว่า get ไม่ใช่ snapshot สำหรับ coordination

พี่โชว์
นากแม่น้ำสีมิ้นต์ต้นฉบับกำลังรับตะกร้างานจากสายพานตามลำดับที่เสร็จแทนลำดับที่ส่ง
javaconcurrencyexecutor

Java ExecutorCompletionService: รับผลตามงานที่เสร็จก่อน

แยกคิวส่งงานจากคิวผลลัพธ์ เพื่อไม่ให้งานช้าตัวแรกบังผลที่เสร็จแล้ว

พี่โชว์
วงแหวนปิดรอบชิ้นส่วนสามรูปบนโต๊ะมิ้นต์ จุดอำพันตรงกลาง และนากกายยืนข้างวง
javasealedjava17

Sealed interface ใน Java 17: ปิดชุดชนิดย่อยและบังคับพฤติกรรมร่วม

ใช้ sealed interface กับ permits ใน Java 17 และวาง method contract ให้ชนิดย่อยทุกแบบอธิบายผลลัพธ์ได้

น้องกาย