An introductory exploration of Doubly Linked Lists in Java, covering the node structure with prev and next references, advantages over Singly Linked Lists (bidirectional traversal), limitations (extra memory, two-pointer updates), and time/space complexity. Written as a learning journal entry by a beginner studying DSA.
Nguồn: https://medium.com/@payalmehra3522/day-149-of-learning-java-dsa-understanding-doubly-linked-lists-df0bebc97eb7. 8sync News chỉ tóm tắt và dẫn link; bản quyền nội dung thuộc tác giả và nguồn gốc.
Một tác vụ bulk-import xử lý 15.000 template giao dịch đã khiến hệ thống crash do lỗi Cartesian product của Hibernate. JPQL query dùng JOIN FETCH trên hai collection cùng lúc khiến Hibernate cross-join chúng, biến ~11.000 bản ghi thành 50 triệu dòng trong bộ nhớ. Lỗi này không lộ ra trong test nhỏ vì các collection được mapping dưới dạng Set thay vì List (lẽ ra phải ném MultipleBagFetchException khi khởi động). Giải pháp là tách query thành hai lần fetch riêng biệt, dùng @BatchSize để tải batch, và flush/clear session Hibernate định kỳ trong quá trình import lâu dài, giúp giảm 9 lần số dòng và cải thiện tốc độ xử lý lên 15 lần.
Lập trình viên nên đọc bài này để tránh rủi ro như biến vấn đề JOIN FETCH thành Cartesian product khổng lồ, gây sập ứng dụng do quá tải bộ nhớ trong các dự án bulk import lớn.

Một chuyên gia công nghệ với 20 năm kinh nghiệm lập luận rằng danh xưng "Full-Stack Developer" đang trở nên hạn chế, thay vào đó đề xuất khái niệm "Feature Expert" (Chuyên gia Tính năng). Giá trị cốt lõi không nằm ở ngôn ngữ hay framework mà ở khả năng nhận diện các mẫu vấn đề lặp đi lặp lại (tính toán giá, tối ưu tìm kiếm, caching) và giải quyết chúng bất kể tech stack. Bài viết khuyên các lập trình viên trình độ trung cấp nên tập trung vào cấu trúc dữ liệu và xây dựng kho kiến thức các vấn đề đã giải quyết thay vì tích lũy ngôn ngữ.
Là người muốn nâng cao hiệu quả làm việc và chuyên sâu trong các vấn đề thực tế như tính toán giá, tối ưu tìm kiếm hay quản lý bộ nhớ, bài viết này giúp bạn chuyển từ kiến thức kỹ thuật sang tư duy giải quyết vấn đề xuyên suốt các ngôn ngữ và công nghệ.
Java 26 bổ sung nhiều cải tiến về hiệu năng, bảo mật và tính năng ngôn ngữ. Đáng chú ý gồm: hạn chế sửa đổi phản chiếu (reflective) đối với trường final; loại bỏ API Applet lỗi thời; hỗ trợ AOT object caching cho mọi bộ thu gom rác (kể cả ZGC); bổ sung HTTP/3 qua QUIC trong HTTP Client API; cải thiện throughput cho G1 GC; phiên bản preview thứ hai của PEM encoding APIs; phiên bản preview thứ sáu của Structured Concurrency; phiên bản preview thứ hai của Lazy Constants; phiên bản incubator thứ mười một của Vector API; và phiên bản preview thứ tư mở rộng pattern matching cho kiểu nguyên thủy trong instanceof và switch.
Những cải tiến trong Java 26 giúp nâng cao hiệu suất thực hiện và bảo mật cho ứng dụng của bạn, từ đó tối ưu hóa hiệu suất công việc và giảm rủi ro khi phát triển.

Báo cáo benchmark thực tế từ đội thanh toán quốc tế của Trendyol cho thấy việc nâng cấp từ Java 21 lên Java 25 (LTS) giúp tăng 22,7% throughput (RPS), giảm 20,1% độ trễ trung bình, tiết kiệm 63–120MB RAM và giảm 50% overhead dữ liệu mạng. Để tối ưu, cần bật -XX:+UseCompactObjectHeaders, nâng cấp Gradle lên v9.1+ và xây dựng lại image runtime thay vì chỉ thay đổi runtime.
Lập trình viên nên đọc bài này để tìm hiểu cách tối ưu hóa hiệu suất ứng dụng Java thông qua các phiên bản mới nhất, từ đó tiết kiệm tài nguyên và cải thiện trải nghiệm người dùng hiệu quả.
Cuốn sách "Java Programming for Raspberry Pi" giờ đây có thêm phiên bản bìa mềm và bìa cứng trên Amazon ngoài các định dạng ebook Kindle và Leanpub. Ấn bản in đã được cập nhật lớn cho Java 25 và Pi4J V4, trong khi phiên bản Leanpub vẫn được duy trì thường xuyên hơn.
Nếu bạn là lập trình viên Java muốn kết hợp với IoT và điện tử thực tế, sách này cung cấp hướng dẫn thực hành cụ thể về cách lập trình Raspberry Pi với Java 25, giúp bạn nhanh chóng chuyển từ lý thuyết sang xây dựng dự án thực tế.
Bản tin Java tuần này ghi nhận JEP 539 (Strict Field Initialization) lên trạng thái Candidate, yêu cầu khởi tạo trường trước khi đọc; các bản JDK 27 Build 29 và JDK 28 Build 5; GlassFish 7.1.1 vá hai lỗ hổng RCE; GraalVM 25.1 giảm 3% kích thước native image và hỗ trợ G1 GC trên macOS AArch64; cùng nhiều cập nhật khác như Micronaut 5.0.3, Open Liberty 26.0.0.7 beta, JReleaser 1.25.0, Apache Grails 8.0.0-M2, RefactorFirst 0.9.0 và Java Operator SDK 5.4.0.
Nếu bạn đang phát triển ứng dụng Java và quan tâm đến tính bảo mật, hiệu suất hoặc tương thích tương lai, bài này sẽ giúp bạn cập nhật những thay đổi quan trọng như JEP 539 (cập nhật quy tắc khởi tạo biến) và các tính năng mới trong JDK 27/28, từ đó tối ưu hóa mã và tránh rủi ro trong tương lai.
Trong tuần qua, Foojay.io đã tiến hành bảo trì toàn diện với việc tái cấu trúc menu điều hướng, cập nhật nội dung và bổ sung bài viết mới. Menu trên cùng được sắp xếp lại thành ba mục chính: News, Resources và Java Basics, đồng thời giới thiệu mục Featured Authors, cập nhật trang team, xây dựng trang landing cho Java Almanac với các liên kết nhanh LTS, nâng cấp Java Quick Start lên phiên bản Java 25, và đặc biệt mở rộng Pedia (giải thích thuật ngữ Java) với 13 bài viết mới về Virtual Threads, GraalVM, Project Leyden, Structured Concurrency cùng nhiều cải tiến khác.
Lập trình viên Java nên đọc bài này để cập nhật những thay đổi mới nhất về kiến thức cơ bản, công cụ hỗ trợ và các tính năng tiến bộ trong thế hệ mới của Java như Virtual Threads và Project Leyden, giúp nâng cao hiệu suất và kiến thức thực tế trong công việc.
Bài viết hướng dẫn từng bước triển khai mô hình LLM-as-a-Judge trong Spring AI bằng cách sử dụng recursive advisors, nơi LLM thứ hai đánh giá và cho điểm phản hồi của LLM sinh ra dựa trên tiêu chí rubric, sau đó phản hồi phê bình được đưa trở lại prompt để tinh chỉnh. Quá trình lặp lại cho đến khi đạt ngưỡng chất lượng hoặc giới hạn số lần thử tối đa.
Làm việc với LLM-as-a-Judge trong Spring AI giúp tối ưu hóa chất lượng phản hồi của AI bằng cách kết hợp đánh giá tự động và phản hồi lặp đi lặp lại, giảm thiểu sai sót và tăng hiệu suất cho các ứng dụng tự động hóa.