Java Core
Basic Java
- Tổng quan về ngôn ngữ lập trình java
- Phân biệt JVM, JRE, JDK
- Chương trình Java đầu tiên
- Tạo chương trình Java đầu tiên sử dụng Eclipse IDE
- Biến trong java
- Các kiểu dữ liệu trong java
- Một số ký tự đặc biệt trong Java
- Toán tử trong java
- Một số từ khóa trong Java
- Ép kiểu trong Java (Type casting)
- Tiêu chuẩn coding trong Java (Coding Standards)
- Autoboxing và Unboxing trong Java
- Mệnh đề if-else trong java
- Mệnh đề Switch-case trong java
- Vòng lặp for, while, do-while trong Java
- Câu lệnh điều khiển vòng lặp trong Java (break, continue)
- Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
- Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
- Quản lý bộ nhớ trong Java với Heap Space vs Stack
- Mảng (Array) trong Java
- Kiểu dữ liệu Ngày Giờ (Date Time) trong java
- Chuyển đổi giữa các kiểu dữ liệu trong Java
- Lấy ngày giờ hiện tại trong Java
- Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
- Truyền giá trị (pass by value) trong java
- Hướng dẫn sử dụng String Format trong Java
- Enum trong java
- Sao chép các phần tử của một mảng sang mảng khác như thế nào?
- Hướng dẫn sử dụng Java Annotation
- Integer Constant Pool trong Java
- Tránh lỗi NullPointerException trong Java như thế nào?
- Tránh lỗi ConcurrentModificationException trong Java như thế nào?
- Tạo số và chuỗi ngẫu nhiên trong Java
- Marker Interface trong Java
Lập trình hướng đối tượng - OOP
- Lập trình hướng đối tượng (OOPs) trong java
- Từ khóa this và super trong Java
- Từ khóa static và final trong java
- Toán tử instanceof trong java
- Object cloning trong java
- Tính đóng gói (Encapsulation) trong java
- Tính kế thừa (Inheritance) trong java
- Tính đa hình (Polymorphism) trong Java
- Tính trừu tượng (Abstraction) trong Java
- Cơ chế Upcasting và Downcasting trong java
- Lớp lồng nhau trong java (Java inner class)
- Abstract class và Interface trong Java
- 4 tính chất của lập trình hướng đối tượng trong Java
- Các nguyên lý thiết kế hướng đối tượng – SOLID
- Một số nguyên tắc, định luật trong lập trình
Exception Handling
- Xử lý ngoại lệ trong Java (Exception Handling)
- Từ khóa throw và throws trong Java
- Custom Exception trong Java
- Xử lý ngoại lệ đối với trường hợp ghi đè phương thức trong java
- Một số tính năng mới về xử lý ngoại lệ trong Java 7
- Tránh lỗi NullPointerException trong Java như thế nào?
- Tránh lỗi ConcurrentModificationException trong Java như thế nào?
Multi-thread
- Lập trình đa luồng trong Java (Java Multi-threading)
- Luồng Daemon (Daemon Thread) trong Java
- Đồng bộ hóa các luồng trong Java
- Hướng dẫn tạo và sử dụng ThreadPool trong Java
- Lập trình đa luồng với Callable và Future trong Java
- Sử dụng Fork/Join Framework với ForkJoinPool trong Java
- Sử dụng CountDownLatch trong Java
- Sử dụng CyclicBarrier trong Java
- Lập trình đa luồng với CompletableFuture trong Java 8
- Thực thi nhiều tác vụ cùng lúc như thế nào trong Java?
- Semaphore trong Java
- Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Java I/O
- Serialization và Deserialization trong java
- Giới thiệu luồng vào ra (I/O) trong Java
- Hướng dẫn sử dụng luồng vào ra nhị phân trong Java
- Hướng dẫn sử dụng luồng vào ra ký tự trong Java
- Thao tác với tập tin và thư mục trong Java
- Hướng dẫn sử dụng lớp Console trong java
- Hướng dẫn sử dụng Lớp FilePermission trong java
- Giới thiệu java.io.tmpdir
- Hướng dẫn sử dụng Printing Service trong Java
- Đọc ghi file CSV trong Java
- Hướng dẫn nén và giải nén trong java
- Hướng dẫn đọc và ghi file excel trong Java sử dụng thư viện Apache POI
- Hướng dẫn xuất dữ liệu lớn ra file excel với thư viện Apache POI
- Hướng dẫn xuất dữ liệu ra file word, pdf với xDocReport
- Hướng dẫn chuyển đổi Java Object sang XML và XML sang Java Object sử dụng Java JAXB
- Hướng dẫn phân tích nội dung HTML sử dụng thư viện Jsoup
- Giới thiệu WatchService API trong Java
Reflection
Collection
- Collection trong java
- ArrayList trong java
- LinkedList trong java
- So sánh ArrayList và LinkedList trong Java
- List Interface trong Java
- So sánh Array và ArrayList trong Java
- Set Interface trong Java
- HashSet trong java
- LinkedHashSet trong java
- TreeSet và sử dụng Comparable, Comparator trong java
- So sánh HashSet, LinkedHashSet và TreeSet trong Java
- Map Interface trong java
- Lớp HashMap trong Java
- HashMap trong Java hoạt động như thế nào?
- Lớp LinkedHashMap trong Java
- Lớp TreeMap trong Java
- So sánh HashMap và HashSet trong Java
- LinkedHashSet trong Java hoạt động như thế nào?
- HashSet trong Java hoạt động như thế nào?
- Hashtable trong java
- So sánh HashMap và Hashtable trong Java
- Lớp Properties trong java
- Vector trong Java
- So sánh ArrayList và Vector trong Java
- Queue và PriorityQueue trong Java
- Deque và ArrayDeque trong Java
- Lớp Collections trong Java (Collections Utility Class)
- Lớp Arrarys trong Java (Arrays Utility Class)
- Loại bỏ các phần tử trùng trong một ArrayList như thế nào?
- Chuyển đổi từ HashMap sang ArrayList
- Chuyển đổi Array sang ArrayList và ngược lại
- Hướng dẫn sử dụng Java Generics
- Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
JDBC
Java 8
- Giới thiệu Java 8
- Interface trong Java 8 – Default method và Static method
- Functional Interface trong Java 8
- Phương thức tham chiếu trong Java 8 – Method References
- Biểu thức Lambda trong Java 8 – Lambda Expressions
- Phương thức forEach() trong java 8
- Giới thiệu về Stream API trong Java 8
- Optional trong Java 8
- Predicate trong Java 8
- Consumer trong Java 8
- Supplier trong Java 8
- Function trong Java 8
- Lớp Collectors trong Java 8
- Sắp xếp trong Java 8
- Date Time trong Java 8
- Annotation trong Java 8
- Lập trình đa luồng với CompletableFuture trong Java 8
- String Joiner trong Java 8
- Base64 encoding và decoding trong Java 8
- Thực thi nhiều tác vụ cùng lúc như thế nào trong Java?
- Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
- Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
- Refactoring Design Pattern với tính năng mới trong Java 8
Design Pattern
Creational Pattern
- Hướng dẫn Java Design Pattern – Singleton
- Hướng dẫn Java Design Pattern – Factory Method
- Hướng dẫn Java Design Pattern – Abstract Factory
- Hướng dẫn Java Design Pattern – Prototype
- Hướng dẫn Java Design Pattern – Builder
- Hướng dẫn Java Design Pattern – Object Pool
- Hướng dẫn Java Design Pattern – Service Locator
- Hướng dẫn Java Design Pattern – Dependency Injection
- Giới thiệu Google Guice – Dependency injection (DI) framework
- Giới thiệu Google Guice – Binding
- Giới thiệu Google Guice – Injection, Scope
- Giới thiệu Google Guice – Aspect Oriented Programming (AOP)
Structuaral Pattern
- Hướng dẫn Java Design Pattern – Adapter
- Hướng dẫn Java Design Pattern – Bridge
- Hướng dẫn Java Design Pattern – Composite
- Hướng dẫn Java Design Pattern – Decorator
- Hướng dẫn Java Design Pattern – Facade
- Hướng dẫn Java Design Pattern – Flyweight
- Hướng dẫn Java Design Pattern – Proxy
- Hướng dẫn Java Design Pattern – DAO
Behavior Pattern
- Hướng dẫn Java Design Pattern – Chain of Responsibility
- Hướng dẫn Java Design Pattern – Command
- Hướng dẫn Java Design Pattern – Interpreter
- Hướng dẫn Java Design Pattern – Iterator
- Hướng dẫn Java Design Pattern – Mediator
- Hướng dẫn Java Design Pattern – Memento
- Hướng dẫn Java Design Pattern – Observer
- Hướng dẫn Java Design Pattern – State
- Hướng dẫn Java Design Pattern – Strategy
- Hướng dẫn Java Design Pattern – Template Method
- Hướng dẫn Java Design Pattern – Visitor
- Hướng dẫn Java Design Pattern – Null Object
Web Service
SOAP
REST
- Tìm hiểu về Web Service
- Java Web Services – Jersey JAX-RS – REST và sử dụng REST API testing tools với Postman
- REST Web service: Tạo ứng dụng Java RESTful Client với Jersey Client 2.x
- REST Web service: Upload và Download file với Jersey 2.x
- REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x
- Rest Web service: Filter và Interceptor với Jersey 2.x (P1)
- Rest Web service: Filter và Interceptor với Jersey 2.x (P2)
- Tìm hiểu về xác thực và phân quyền trong ứng dụng
- REST Web service: Basic Authentication trong Jersey 2.x
- Giới thiệu Json Web Token (JWT)
- REST Web service: JWT – Token-based Authentication trong Jersey 2.x
- Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
- Tạo ứng dụng Java RESTful Client với thư viện OkHttp
- Tạo ứng dụng Java RESTful Client với thư viện Retrofit
- Giới thiệu Feign – Tạo ứng dụng Java RESTful Client không thể đơn giản hơn
- Giới thiệu HATEOAS
- Giới thiệu Swagger – Công cụ document cho RESTfull APIs
- Cài đặt và sử dụng Swagger UI
- Sử dụng Swagger UI trong jersey REST WS project
- Làm thế nào để Test Jersey Rest API với JUnit?
- Test REST Web Service đơn giản hơn với REST Assured
- Triển khai ứng dụng Jersey REST Web service lên Tomcat Server
- Giới thiệu Castle Mock – Mock REST APIs và SOAP web-services
Java Library
Report
JSON
- Giới thiệu Json
- Hướng dẫn sử dụng thư viện Gson
- Hướng dẫn Gson Streaming API để đọc và ghi JSON
- Hướng dẫn sử dụng Gson Annotations
- Hướng dẫn sử dụng Gson ExclusionStrategy
- Gson Custom Serialization và Deserialization
- Hướng dẫn sử dụng Gson TypeAdapter
- Hướng dẫn sử dụng thư viện Jackson
- Hướng dẫn sử dụng Jackson Json Annotations
- Hướng dẫn Jackson Streaming API để đọc và ghi JSON
Logging
Unit Test
- Tìm hiểu về kiểm thử (Tesing) trong phát triển phần mềm
- Unit Testing trong phát triển phần mềm hiện đại
- Giới thiệu JUnit
- Một số Annotation cơ bản của JUnit
- Một số API của JUnit – Assert, Assume, Test Runner
- Làm thế nào để thực thi một nhóm các class test trong JUnit?
- JUnit – Parameterized Test
- Đơn giản hóa Unit Test với JUnit Rule
- JUnit – Hamcrest Matchers
- JUnit – Custom Hamcrest Matchers
- Làm thế nào để chạy lại một failed Test trong JUnit?
- Làm thế nào để lắng nghe các sự kiện mỗi khi một test được thực thi trong JUnit?
- JUnit – HTML Report với Surefire maven plugin
- Giới thiệu Mockito
- Mockito – Annotations
- Mockito – Control mock’s behavior
- Mockito – Verifying Behavior
- Giới thiệu Powermock
- PowerMockito – Suppressing Unwanted Behavior
- Làm sao test một Abstract Class trong Java?
- Tổng hợp các bài viết về Unit Test trong Java
- Làm thế nào để Test Jersey Rest API với JUnit?
- Test REST Web Service đơn giản hơn với REST Assured
- Giới thiệu Castle Mock – Mock REST APIs và SOAP web-services
Chủ đề khác
Message Queue
- Giới thiệu JMS – Java Message Services
- Cài đặt ActiveMQ
- Kết nối JMS Client với ActiveMQ
- Giới thiệu RabbitMQ
- Cài đặt RabbitMQ
- Giới thiệu RabbitMQ Management Interface
- Kết nối AMQP Client với RabbitMQ Server
- Work Queues trong RabbitMQ
- Sử dụng Direct Exchange trong RabbitMQ
- Sử dụng Fanout Exchange trong RabbitMQ
- Sử dụng Topic Exchange (Publish/Subscribe) trong RabbitMQ
- Sử dụng Headers Exchange trong RabbitMQ
- Sử dụng binding Exchange to Exchange trong RabbitMQ
- Sử dụng Alternate Exchange trong RabbitMQ
- Sử dụng Dead Letter Exchange trong RabbitMQ
- Sử dụng publisher confirm trong RabbitMQ
- Kết nối RabbitMQ sử dụng Web STOMP Plugin
- Giới thiệu CloudAMQP – Một RabbitMQ server trên Cloud
JPA
- Tổng quan về JPA (Java Persistence API)
- Giới thiệu về Hibernate
- Cài đặt và sử dụng Hibernate
- Hibernate mapping type
- Các Annotation của Hibernate
- Sử dụng Hibernate Tool tạo các Hibernate Entity một cách tự động từ các table
- Tạo database table tự động từ Hibernate Entity
- Hibernate reverse engineering – Customize code generation sử dụng custom strategy class
- Sử dụng Hibernate Tools tạo các Entity và DAO class
- Hibernate Query Language (HQL)
- Hibernate Criteria Query Language (HCQL)
- Hibernate Native SQL Queries
- Hibernate Lifecycle
- Hibernate Cache
- Hibernate Logging
- Hibernate Batch processing
- Hibernate Interceptor & StatementInspector