Please enable JavaScript.
Coggle requires JavaScript to display documents.
Sơ Đồ Tư Duy Tuần 4(Module 2)(1), Abstract class, Class tạo bộ nhớ đệm,…
Sơ Đồ Tư Duy Tuần 4(Module 2)(1)
Sorting Algorithms
Bubble Sort
Ý tưởng:
So sánh cặp phần tử liên kết liền kề nhau và tráo đổi thứ tự nếu chúng không đảm bảo đang được sắp xếp tăng/giảm.
Độ phức tạp:
Tối ưu: O(n)
Tệ nhất: O(n^2)
Insertion Sort
Ý tưởng:
Tạo danh sachs con luôn luôn được duy trì dưới dạng đã qua sắp xếp.
Sắp xếp chèn thêm một phần tử được chèn vào vị trí thích hợp sao cho vẫn đảm bảo danh sách con đó vẫn còn duy trì theo thứ tự sắp xếp ban đầu.
Độ phức tạp:
Tối ưu: O(n)
Tệ nhất: O(n^2)
Selection Sort
Ý tưởng:
Chọn phần tử nhỏ/lớn nhất trong k phần tử ban đầu, đưa ra phần tử này vào vị trí đầu tiên của dãy hiện hành sau đó loại bỏ ra khỏi danh sách cần sắp xếp tiếp theo.
Xử lí ngoại lệ & Debug
Exception là gì?
Là một sự kiện bất thường xảy ra trong quá trình thực thi chương trình java, nó phá vở flow(luồng xử lí) bình thường của chương trình, thậm chí gây chết chương trình.
Phân loại exception
Checked exception: là loại exception xảy ra trong lúc compile time, không thể bỏ qua lúc compile, bắt buộc lập trình lúc buộc lập trình viên
Ví dụ:
IOException
FileNotFoundException
DatabaseException
…
Uncheck Exception: Loại exception xảy ra thời điểm xảy ra tại thời điểm thực thi chương trình, lỗi này không chắc chắn xảy ra, có thể bỏ qua trong quá trình compile, lập trình viên không cần bắt buộc phải handle.
Ex: Những lớp con của RuntimeException: NullpointerException, NumberFromatException, ArrayIndexOfBoundException.
Error: là những lỗi nghiêm trọng, liên quan đến môi trường thực thi(JVM) của ứng dụng hệ thống mà lập trình viên không thể xử lí nó, có thể gây chết cả chương trình.
Ex: OutOfMemoryError, StackOverFlowError,…
Các cách xử lí ngoại lệ
Try-catch-(finaly): xử lí ngoại lệ ngay đoạn mã bị lỗi.
Dùng throw/throws dùng để ném ngoại lệ cho method/logic khác xử.
Lưu ý về dùng try-catch:
Khối try có thể không có catch hoặc có nhiều khối catch, nhưng chỉ có 1 khối finaly
Tại mỗi thời điểm thì chỉ xảy ra một ngoại lệ, và tại một thời điểm chỉ có 1 catch được thực thi
Khối lệnh catch phải được sắp xếp từ cụ thể đến chung nhất (từ exception con đến exception cha).
Khối lệnh finally luôn được thực thi dù cho chương trình có xảy ra ngoại lệ hay không.
String & Regex
String và các đặc điểm của String
String là dùng để lưu trữ/làm việc với chuỗi/văn bản trong java
Khai báo biến String có 2 cách :
Gán trực tiếp thông qua toán tử gán “=”.(Giống khai báo biến kiểu nguyên thủy)
Thông qua từ khóa new(giống kiểu Object)
=> String là kiểu dữ liệu đặc biệt, vừa có tính nguyên thủy vừa có tính đối tượng.
String là không thay đổi(immutable)
Những method hay dùng: length(), concat, substring,split trim().
StringBuilder StringBuffer
StringBuilder/StringBuffer là thay đổi(mutable)
Điểm khác nhau giữa StringBuilder và StringBuffer
StringBuilder không hỗ trợ đồng bộ.
StringBuffer có hỗ trợ đồng bộ đa luồng.
Phương thức:
append()
, toString(), reverse(), delete().
=>Rule trong coding: nối chuỗi trong vòng lặp thì nên dùng StringBuilder và StringBuffer
Reguxla exception
Biểu thử chính quy là một chuỗi được sử dụng để tìm kiếm định dạng cho một chuỗi khác => thông thường được dùng để validate, tìm kiếm.
IO: Text File
Khái niệm Stream và phân loại stream
Các hoạt động nhập/xuất dữ liệu thì được gọi là stream(dòng/luồng).
Phân loại:
Character stream: được liên kết để hỗ trợ việc nhập xuất dữ liệu kí tự Unicode. (Đọc ghi kí tự Unicode)
Byte stream: hỗ trợ nhập xuất dữ liệu theo dạng file. (Đọc ghi kí tự dạng nhị phân)
Các lớp triển khai hay dùng của Character stream
Class triển khai hay dùng
FileReader
FileWriter
IO: Binary File & Serialization
Cơ chế Serialization
Là cơ chế tuần tự xhóa, cho phép chuyển trạng thái của một đối tượng vào một byte stream. Ngược lại, chuyển đổi từ byte stream về Object được gọi là Desrialization
Những class triển khai đọc ghi byte stream
Một số lưu ý khi triển khai Serialization trong Java.
Class cha implement interface Serializable thì lớp con không cần implement nữa.
Thuộc tính áp dụng từ khóa static, transient thì sẽ không được serialization
Thuộc tính của đối tượng phải implement Serializable
Nếu muốn xử dụng byte serialization thì phải có implement serializable
Abstract class
Read
Write
Class tạo bộ nhớ đệm
BufferedReader
BufferedWriter
Abstract class
InputStream
OutputStream
Class hay dùng
FileInputStream
FileOutputStream
Class đọc ghi Object
ObjectInputStream
ObjectOutputStream
BufferedOutputStream
BufferedInputStream
Class tạo bộ nhớ đệm
Throw
Throws
Từ khóa throw trong java dùng để ném ra 1 ngoại lệ rõ ràng.
Từ khóa throws trong java được dùng để khai báo 1 ngoại lệ.
Ngoại lệ checked không được truyền ra nếu chỉ sử dụng từ khóa throw.
Sau 1 throw là một instance.
Throw được sử dụng trong phương thức.
Ngoại lệ checked được truyền ra ngay cả khi chỉ sử dụng từ khóa throws.
Sau một throws là một hoặc nhiều class.
Throw được khai báo ngay sau dấu đóng ngoặc đơn của phương thức.
Không thể throw nhiều exception
Có thể throws nhiều exception