Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPTMasterCode.vn
Tìm hiểu 3 cấu trúc dữ liệu đặc biệt: Ngăn xếp (Stack),
Hàng đợi (Queue) và Cây (Tree):
Khái niệm
Cách cài đặt trong VB.Net
Các thao tác cơ bản trên các cấu trúc dữ liệu
Bài 7: Danh sách liên kết (LINKED LIST) và tập hợp (SET) - Giáo trình FPTMasterCode.vn
Tìm hiểu về danh sách liên kết (Linked List):
Khái niệm danh sách liên kết
Các thao tác trên danh sách liên kết
Tìm hiểu về Set (tập hợp):
Định nghĩa Set
Các đặc trưng
Cách cài đặt Set bằng VB.Net
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPTMasterCode.vn
Tìm hiểu 3 cấu trúc dữ liệu đặc biệt: Ngăn xếp (Stack),
Hàng đợi (Queue) và Cây (Tree):
Khái niệm
Cách cài đặt trong VB.Net
Các thao tác cơ bản trên các cấu trúc dữ liệu
Bài 7: Danh sách liên kết (LINKED LIST) và tập hợp (SET) - Giáo trình FPTMasterCode.vn
Tìm hiểu về danh sách liên kết (Linked List):
Khái niệm danh sách liên kết
Các thao tác trên danh sách liên kết
Tìm hiểu về Set (tập hợp):
Định nghĩa Set
Các đặc trưng
Cách cài đặt Set bằng VB.Net
This document discusses man-in-the-middle attacks against cryptographic protocols. It describes two classes of man-in-the-middle attacks - passive attacks where the attacker can only monitor communications, and active attacks where the attacker can modify messages. It then gives an example of how a man-in-the-middle attack works against key exchange protocols by replacing one party's public key. Finally, it provides an example of how the Diffie-Hellman key exchange protocol allows two parties to securely generate a shared secret key to prevent such man-in-the-middle attacks.
Bài 4: Bảo mật máy chủ, ứng dụng, dữ liệu và mạng - Giáo trình FPTMasterCode.vn
Liệt kê các bước để bảo mật cho máy chủ
Định nghĩa bảo mật cho ứng dụng
Giải thích phương thức bảo mật cho dữ liệu bằng cách ngăn chặn thất
thoát dữ liệu (DLP)
Bài 4-Bảo mật máy chủ, ứng dụng, dữ liệu và mạng 3
Giải thích phương thức bảo mật cho dữ liệu bằng cách ngăn chặn thất
thoát dữ liệu (DLP)
Liệt kê các loại thiết bị bảo mật mạng khác nhau và giải thích cách sử
dụng những thiết bị đó
Định nghĩa quá trình chuyển đổi địa chỉ và điều khiển truy cập mạng
Giải thích phương thức tăng cường bảo mật thông qua thiết kế mạng
Biết tạo tài khoản với những quyền khác nhau
Quản lý được tài khoản người dùng
Thiết lập được tường lửa để ngăn chặn những kết nối ngoài ý
muốn
Thiết lập chế độ tự động update của Windows
Biết các chế độ bảo mật của mạng không dây và cấu hình
được trên access point.
Bài 5: Quản trị một mạng an toàn và Bảo mật các mạng không dây - Giáo trình FPTMasterCode.vn
Quản trị một mạng bảo mật
Các giao thức mạng phổ biến
Các nguyên tắc quản trị mạng
Bảo mật cho các ứng dụng mạng (SV tự đọc)
Bảo mật mạng không dây
Tấn công vào mạng không dây
Các điểm yếu trong bảo mật 802.1x
Các giải pháp bảo mật mạng không dây
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPTMasterCode.vn
Mô tả ba kiểu xác thực thông tin
Giải thích những gì mà mô hình đăng nhập đơn nhất có
thể thực hiện
3
Liệt kê các thủ tục quản lý tài khoản để bảo mật mật
khẩu
Định nghĩa các hệ điều hành được tin cậy
Bài 3: Tấn công vào ứng dụng và mạng, đánh giá khả năng thiệt hại và làm giảm...MasterCode.vn
Liệt kê và giải thích các dạng tấn công vào ứng dụng
Liệt kê và giải thích các dạng tấn công vào mạng
Định nghĩa đánh giá khả năng thiệt hại và tầm quan trọng
của nó
Bài 3 - Tấn công vào ứng dụng và mạng, đánh giá các điểm yếu và làm giảm các cuộc tấn
công
3
Định nghĩa đánh giá khả năng thiệt hại và tầm quan trọng
của nó
Phân biệt giữa quét tìm lỗ hổng và kiểm tra sự thâm nhập
Liệt kê các kỹ thuật làm giảm và ngăn chặn các cuộc tấn công
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...MasterCode.vn
Mô tả sự khác nhau giữa vi rút và sâu máy tính
Liệt kê các kiểu phần mềm độc hại giấu mình
Nhận dạng các loại phần mềm độc hại nhằm kiếm lợi
Bài 2 - Phần mềm độc hại và các dạng tấn công dùng kỹ nghệ xã hội 3
Nhận dạng các loại phần mềm độc hại nhằm kiếm lợi
Mô tả các kiểu tấn công tâm lý sử dụng kỹ nghệ xã hội
Giải thích các vụ tấn công vật lý sử dụng kỹ nghệ xã
hội
Smartbiz_He thong MES nganh may mac_2024juneSmartBiz
Cách Hệ thống MES giúp tối ưu Quản lý Sản xuất trong ngành May mặc như thế nào?
Ngành may mặc, với đặc thù luôn thay đổi theo xu hướng thị trường và đòi hỏi cao về chất lượng, đang ngày càng cần những giải pháp công nghệ tiên tiến để duy trì sự cạnh tranh. Bạn đã bao giờ tự hỏi làm thế nào mà những thương hiệu hàng đầu có thể sản xuất hàng triệu sản phẩm với độ chính xác gần như tuyệt đối và thời gian giao hàng nhanh chóng? Bí mật nằm ở hệ thống Quản lý Sản xuất (MES - Manufacturing Execution System).
Hãy cùng khám phá cách hệ thống MES đang cách mạng hóa ngành may mặc và mang lại những lợi ích vượt trội như thế nào.
11. Thiết kế cây liên kết template < class Entry> struct Binary_node { // data members: Entry data ; Binary_node<Entry> *left, *right ; // constructors: Binary_node( ) ; Binary_node( const Entry &x) ; } ; template < class Entry> class Binary_tree { public: // Add methods here. protected: // Add auxiliary function prototypes here. Binary_node<Entry> *root ; } ;
12. Khởi tạo và kiểm tra rỗng template < class Entry> Binary_tree<Entry>::Binary_tree() { root = NULL; } ; template < class Entry> bool Binary_tree<Entry>::empty() { return root == NULL; } ;
13. Thiết kế các phép duyệt cây template < class Entry> void Binary_tree<Entry> :: inorder( void (*visit)(Entry &)) { recursive_inorder(root , visit) ; } template < class Entry> void Binary_tree<Entry> :: preorder( void (*visit)(Entry &)) { recursive_preorder(root , visit) ; } template < class Entry> void Binary_tree<Entry> :: postorder( void (*visit)(Entry &)) { recursive_postorder(root , visit) ; }
14. Giải thuật duyệt cây inorder Algorithm recursive_inorder Input: subroot là con trỏ node gốc và hàm visit Output: kết quả phép duyệt 1. if (cây con không rỗng) 1.1. Call recursive_inorder với nhánh trái của subroot 1.2. Duyệt node subroot bằng hàm visit 1.3. Call recursive_inorder với nhánh phải của subroot End recursive_inorder
20. Thiết kế BST template < class Record> class Search_tree : public Binary_tree<Record> { public: //Viết lại phương thức chèn vào, loại bỏ để đảm bảo vẫn là BST Error_code insert( const Record &new_data) ; Error_code remove( const Record &old_data) ; //Thêm phương thức tìm kiếm dựa vào một khóa Error_code tree_search(Record &target) const; private: // Add auxiliary function prototypes here. } ;
21.
22. Giải thuật tìm kiếm trên BST Algorithm BST_search Input: subroot là node gốc và target là khóa cần tìm Output: node tìm thấy 1. if (cây rỗng) 1.1. return not_found 2. if (target trùng khóa với subroot) 2.1. return subroot 3. if (target có khóa nhỏ hơn khóa của subroot) 3.1. Tìm bên nhánh trái của subroot 4. else 4.1. Tìm bên nhánh phải của subroot End BST_search
23. Mã C++ tìm kiếm trên BST template < class Record> Binary_node<Record> *Search_tree<Record> :: search_for_node (Binary_node<Record>* sub_root , const Record &target) const { if (sub_root == NULL || sub_root->data == target) return sub_root ; else if (sub_root->data < target) return search_for_node(sub_root->right , target) ; else return search_for_node(sub_root->left , target) ; }
24. Mã C++ tìm kiếm trên BST (không đệ qui) template < class Record> Binary_node<Record> *Search_tree<Record> :: search_for_node (Binary_node<Record>* sub_root , const Record &target) const { while (sub_root != NULL && sub_root->data != target) if (sub_root->data < target) sub_root = sub_root->right ; else sub_root = sub_root->left ; return sub_root ; }
25. Phương thức tree_search template < class Record> Error_code Search_tree<Record> :: tree_search(Record &target) const { Error_code result = success ; Binary_node<Record> *found = search_for_node(root , target) ; if (found == NULL) result = not_present ; else target = found->data ; return result ; }
26. Ví dụ tìm kiếm trên BST 25 10 3 1 6 5 18 12 20 13 37 29 35 32 50 41 Tìm kiếm 13 Khác nhau Giống nhau Node gốc nhỏ hơn Node gốc lớn hơn Tìm thấy Số node duyệt: 5 Số lần so sánh: 9
27. Ví dụ tìm kiếm trên BST 25 10 3 1 6 5 18 12 20 13 37 29 35 32 50 41 Tìm kiếm 14 Khác nhau Node gốc nhỏ hơn Node gốc lớn hơn Không tìm thấy Số node duyệt: 5 Số lần so sánh: 10
29. Giải thuật thêm vào BST Algorithm BST_insert Input: subroot là node gốc và new_data là dữ liệu cần thêm vào Output: BST sau khi thêm vào 1. if (cây rỗng) 1.1. Thêm vào tại vị trí này 2. if (target trùng khóa với subroot) 2.1. return duplicate_error 3. if (new_data có khóa nhỏ hơn khóa của subroot) 3.1. Thêm vào bên nhánh trái của subroot 4. else 4.1. Thêm vào bên nhánh phải của subroot End BST_insert
30. Mã C++ thêm vào BST template < class Record> Error_code Search_tree<Record> :: search_and_insert (Binary_node<Record> * &sub_root , const Record &new_data) { if (sub_root == NULL) { sub_root = new Binary_node<Record>(new_data) ; return success ; } else if (new_data < sub_root->data) return search_and_insert(sub_root->left , new_data) ; else if (new_data > sub_root->data) return search_and_insert(sub_root->right , new_data) ; else return duplicate_error ; }
31.
32. Xóa một node lá khỏi BST 1. Xóa node này 2. Gán liên kết từ cha của nó thành rỗng
33. Xóa một node chỉ có một con 1. Gán liên kết từ cha của nó xuống con duy nhất của nó 2. Xóa node này A. Đường dẫn đến các node của cây con v có dạng: … u x v … B. Không còn node nào trong cây có đường đẫn có dạng như vậy. C. Sau khi xóa node x, đường dẫn đến các node của cây con v có dạng: … u v … D. Đường dẫn của các node khác trong cây không đổi. E. Trước đó, các node của cây con v nằm trong nhánh con của x là bên trái (bên phải) của u và bây giờ cũng nằm bên trái (bên phải) của u nên vẫn thỏa mãn BST u x v u v
34. Xóa một node có đủ 2 nhánh con A. Đường dẫn đến các node của cây con v và z có dạng: … u x v … … u x z … B. Nếu xóa node x thì đường dẫn đến các node của cây con v và z có dạng: … u v … … u z … D. Điều này chỉ xảy ra khi cây con u và v nằm về 2 phía của u => không còn là BST. E. Giải pháp là thay giá trị x bằng giá trị w thuộc cây này sao cho: w lớn hơn tất cả khóa của các node của cây con v w nhỏ hơn tất cả khóa của các node của cây con z u v z
35. Xóa một node có đủ 2 nhánh con (tt.) 1. Tìm w là node trước node x trên phép duyệt cây inorder (chính là node cực phải của cây con bên trái của x) 2. Thay x bằng w 3. Xóa node w cũ (giống trường hợp 1 hoặc 2 đã xét)
36. Giải thuật xóa một node Algorithm BST_remove_root Input: subroot là node gốc cần phải xóa Output: BST sau khi xóa xong subroot 1. if (trường hợp 1 hoặc 2) //subroot là node lá hoặc có một con 1.1. Gán liên kết cha đến rỗng hoặc nhánh con duy nhất của subroot 1.2. Xóa subroot 2. else //trường hợp 3: có 2 nhánh con //Tìm node cực phải của cây con trái 2.1. to_delete là node con trái của subroot 2.2. while (nhánh phải của to_delete không rỗng) 2.2.1. di chuyển to_delete sang node con phải 2.2. Thay dữ liệu của subroot bằng dữ liệu của to_delete 2.4. Call BST_remove_root với to_delete End BST_remove_root
42. Ví dụ 2 thêm vào cây AVL (1) – – – m k t p u v
43. Ví dụ 2 thêm vào cây AVL (tt.) Viết gọn – – – m k t p u v (2)
44. Các trạng thái khi thêm vào Chiều cao cây tăng Chiều cao cây không đổi Thêm vào bên phải và làm bên phải cao lên Thêm vào bên phải và làm bên phải cao lên Mất cân bằng bên phải Thêm vào bên phải và làm bên phải cao lên – / –