Please enable JavaScript.
Coggle requires JavaScript to display documents.
JAVA, JAVA - Coggle Diagram
JAVA
Java là gì
- Ngôn ngữ lập trình hướng đối tượng
- Có khả năng thực thi ở nhiều loại thiết bị (nhờ byte code)
-
- Có tính độc lập trên nhiều nền tảng
- có thể chạy tển các nền tảng khác nhau mà không cần biên dịch lại
- Nhược điểm: Trừu tượng, phức tạp
-
-
-
Map
BinaryTree
- Lưu trữ dữ liệu vào các node
- Node có quan hệ cha con, trên cùng là root
- 2 cây con gọi là left sub tree và right sub tree
- Giá trị các node trên phải lớn hơn root
- Giá trị các node bên trái nhỏ hơn root
-
HashMap
- Lưu trữ và truy suất thông qua key và value
- Chứa key duy nhất ( không trùng)
- Có thể có 1 key là null nhưng có thể có nhiều giá trị null
- Không đảm bảo thứ tự chèn vào
-
TreeMap
- Giống Map nhưng
- Không cho key null
- Duy trì các phần từ theo giảm dần ( sắp xếp theo key)
- Key là kiểu Object do dev định nghĩa thì implement comprable khi sử dụng treeMap (không dùn comparator)
- Sử dụng để lưu trữ, truy suất dữ liệu theo các cặp key và value
- Map không thuộc colleciton
- Mỗi cặp key, value là entry
- 1 key tương ứng 1 value
- Value có thể bằng và giống nhau
- 3 lớp triển khai là hashMap, LinkedHashMap,TreeMap
Collection
-
Generis
- Cơ chế cho phép sử dụng kiểu dữ liệu như tham số
- Cho phép chúng ta tạo class, method, interface hoạt động dựa trên nhiều kiểu dữ liệu khác nhau
Ưu điểm
- Phát hiện lỗi ở thời điểm biên dịch
- Không cần ép kiểu
- Xây dựng các thuật toán tổng quat, tái sử dụng mã nguồn
Nhược điểm
- Kiểu dữ liệu Object, không có nguyên thủy (wrapper class)
- Không thể sử dụng static
- Không thể ép kiểu và sử dụng instance of
- Không thể overload các hàm trong 1 lớp
-
-
Thuật toán tìm kiếm
LinearSearch
- Tất cả các phần tử đều được kiểm tra nếu tìm thấy phần tử thì trả về index. Không tìm thấy trả về -1
- Độ phức tạp tối ưu là O(1), tồi tệ O(n) --> độ phực tạp O(n)
BinarySearch
- So sánh phần tử cần tìm với phẩn tử ở giữa mảng
- Nếu đúng trả về index
- Phần tử cần tìm lớn hơn phần từ ở giữa --> phần tử cần tìm ở mảng còn phải
- Ngược lại bước 3, với phẩn tử cần tìm nhỏ hơn phẩn tử ở giữa
- Lặp lại bước 1
Độ phức tạp tối ưu O(1), tồi tê O(log2n) --> độ phức tạp O(log2n)
-
Thuật toán sắp xếp
Bubble Sort
So sánh các cặp phần tử liền kề nhau và trao đổi thứ tự nếu chúng không đảm bảo được sắp xếp tăng/ giảm
Độ phực tạp tối ưu O(n), tồi tệ O(n2) --> O (n2)
Selection Sort
Chọn phần tử nhỏ nhất, lớn nhất trong n phần tử ban đầu, đưa phần tử này về vị trí đầu mảng, loại bỏ phần tử đó ra khỏi danh sách cần sắp xếp, tiếp theo xem mảng ban đầu chỉ còn lại n-1 phần tử của mảng bàn đầu, bắt đầu từ vị trí thứ 2m lặp lại quá trình
-
Insert Sort
Tạo 1 dánh sách con luông luôn được duy trì dưới dạng đã qua sắp xếp. Thêm 1 phần tử vào danh sách con đã qua sắp xếp phần tử đó đưuọc chèn vào vị trí thích hợp sao cho vẫn đảm bảo rằng danh sách đóvẫn được sắp xếp theo thứ tự
Độ phức tạp tối ưu O(n), tồi tệ O(n2) --> O(n2)
-
-
Cách đặt tên
- Không quá dài, không viết tắt, mã hóa
- Có ý nghĩa
- Phát âm được
- Phân biệt rõ ràng ý nghĩa giữa các tên
- Sử dụng đúng ý nghĩa
- Tên lớp: Bắt đầu từ chữ cài in hoa ( Pascal Case) và là 1 danh từ
- Tên phương thức : Tuân theo Camel Case và là động từ + danh từ ( có thể chỉ là 1 động từ)
JAVA
Exception
Unchecked Exception
Xảy ra trong quá trình runtime, không bắt buộc xử lí
Checked Exception
Xảy ra trong quá trình compile, bắt buộc phải xử lí
Là 1 sự kiện bất thường xảy ra trong quá trình thực thi 1 chương trình, phá hỏng luồng thực thi, có thể gây chết chương trình
-
IO: Text Files
-
-
Byte Stream
-
Serialiation
-
Class cần implement serializable. Nó sẽ đánh dấu cho Java đó có thể chuyển đổi Object thành byteStream mà không cần override bất kì method nào
String and Regex
String
-
Gán trực tiếp biến String ( Java sẽ dò trong vùng nhớ đặc biệt String trong Heap ( String pool). Nếu đã có chuỗi thì biến đó chỉ t ham chiếu đến vùng nhớ đó. Nếu không thì tạo ra chuỗi mới trong String Pool
Thông qua từ khóa new ( lúc này sẽ tạo ra 1 object ở vùng nhớ heap và 1 object ở vùng nhớ String Pool
String là kiểu dữ liệu đặc biệt ( vừa nguyên thủy, vừa đối tượng
-
-
-
SOLID
là 1 trong những nguyên tắc, chỉ dẫn để Dev xây dựng các ứng dụng OOP hiệu quả.
Giúp Dev viết ra những đoạn code dễ đọc, dễ hiểu, dễ maintain
S- Single responsibility
-
-
Lí do:
- Dễ quản lí mã nguồn
- Các lớp tập trung vào nhiệm vụ chính của mình
- Giảm tính phụ thuộc các thành phần
- Có thể phát triển đồng thời các lớp độc lập với nhau
- Dễ mở rộng, bảo trì
-
-
-
-