Sơ Đồ Tư Duy Tuần 4(Module 2)(1)

Sorting Algorithms

Bubble Sort

Xử lí ngoại lệ & Debug

Insertion Sort

Selection 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)

Ý 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)

Ý 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.

String & Regex

IO: Text File

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.

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

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.

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

Abstract class

Read

Write

Class triển khai hay dùng

FileReader

FileWriter

Class tạo bộ nhớ đệm

BufferedReader

BufferedWriter

IO: Binary File & Serialization

Cơ chế Serialization

Những class triển khai đọc ghi byte stream

Một số lưu ý khi triển khai Serialization trong Java.

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

  1. Class cha implement interface Serializable thì lớp con không cần implement nữa.
  2. Thuộc tính áp dụng từ khóa static, transient thì sẽ không được serialization
  3. Thuộc tính của đối tượng phải implement Serializable

Abstract class

InputStream

OutputStream

Class hay dùng

FileInputStream

FileOutputStream

Class đọc ghi Object

ObjectInputStream

ObjectOutputStream

BufferedOutputStream

BufferedInputStream

Class tạo bộ nhớ đệm

Nếu muốn xử dụng byte serialization thì phải có implement serializable