Thứ Ba, 24 tháng 7, 2018

WEB-INF bảo mật

Những tập tin jsp trong thư mục WEB-INF không thể truy cập trực tiếp bằng cách gõ vào thanh địa chỉ trình duyệt được mà chỉ có thể truy cập bằng cách response.sendRedirect hoặc Dispatcher.foward

Java static method, khi nào nên sử dụng?

Phương thức static:

Nên tự hỏi: "Liệu việc tạo phương thức này có ý nghĩa gì không nếu obj chưa được xây dựng?". Nếu có, phương thức đó nên được xác định là static.
Ví dụ:
Bạn có lớp Car, và bạn có method "double convertKmphToMps(double kmph)" (Chuyển đổi từ km/h sang m/s) nên là static. Bởi vì ai đó chỉ muốn biết 1 km/h sang m/s là bao nhiêu, chứ họ không quan tâm đến việc xây dựng hay khởi tạo một chiếc xe.
Tuy nhiên "void setColor(String color)" (phương thức set màu sắc cho chiếc xe cho một chiếc xe cụ thể) không thể là static được bởi vì ta không thể gọi phương thức này khi chưa có một chiếc xe cụ thể nào được xây dựng (it's inconceivable to call the method before any Car has been constructed).

Thứ Ba, 10 tháng 7, 2018

Giải một số dạng bài tập memory mỳ ăn liền


Dạng 1: Tìm bit luận lý, tìm bit vật lý

Cho biết không gian địa chỉ logic có 8 trang (Page) và mỗi trang có 2048 từ nhớ (byte) được ánh xạ vào bộ nhớ vật lý 32 khung trang (Frame).
a.     Cho biết cần bao nhiêu bit trong địa chỉ logic(luận lý)?
b.     Cho biết cần bao nhiêu bit trong địa chỉ vật lý?

Cách làm:

Tính bit page, bit byte (đề cho đơn vị gì thì cũng phải chuyển về byte), bit frame
8 Page = 23 =>bit page = 3 bit
2048 byte = 210 => bit byte = 11 bit
32 frame = 25 => bit frame = 5 bit
Ta được bit page = 3, bit byte = 11, bit frame = 5
a.     Bit logic = byte + page = 11 + 3 = 14 bit
b.     Bit vật lý = byte + frame = 11 +5 = 16 bit

Dạng 1 mở rộng: Một máy tính cung cấp cho người dùng không gian địa chỉ logic là 20 bit, nếu kích thước trang bộ nhớ là 2KB (Kilobyte) thì bảng trang (page table) của máy tính này có bao nhiêu trang.

Cơ bản bài này có thể  từ bài trên mà suy ra được cách giải.
Ta có bit logic = 20 bit (đề cho)
B1: Tính bit byte
2KB = 2*1024 byte = 2048 byte = 211 => bit byte = 11 bit
B2: Tính bit page
Từ bài trên, ta đã có : bit logic = bit byte + bit page
                                        => bit page = bit logic – bit byte = 20 – 11 = 9 bit
           B3: bit page = 9 bit => page = 2bit page = 29 = 512 page

Dạng 2: Tính địa chỉ vật lý từ địa chỉ logic, cho biết địa chỉ logic có hợp lệ hay không.

Thứ Bảy, 7 tháng 7, 2018

Tìm tất cả khoá của một lược đồ quan hệ

Cho tập thuộc tính U và phụ thuộc hàm R
1. Tìm tập thuộc tính bên trái (L) và tập thuộc tính bên phải (R)
2. Tìm tập thuộc tính trung gian TG = L ^ R (giao)
3. Tìm tập đích TD = U - R
4. Hợp tập đích TD với từng phần tử của tập trung gian TG
5. Tính bao đóng ở bước 4, nếu bao đóng = U => thuộc tính khoá và ngược lại.

Thứ Sáu, 6 tháng 7, 2018

Vô hiệu hoá chỉnh sửa với thuộc tính disabled và readonly trong HTML

Hôm nay đang làm phần gửi danh sách sản phẩm order lên servlet. Ở đây danh sách sản phẩm là một cái table, và mình chọn cách gửi những cột cần thiết của table đó lên server để xử lý, thay vì phải gửi từng phẩn tử một (cách từng cái một thật ra mình cũng mới nghĩ tới à, cũng chơi tìm hiểu thử), nhưng gửi cả bảng tất nhiên nó sẽ bao gồm cả từng phần tử một.
Ở những cột mình muốn gửi lên server, mình sẽ sử dụng input trong form. Để hiển thị cho người dùng thì type của nó sẽ là text và để không thể sửa được mình sẽ chọn attribute là disable. Test đi test lại thì biến trên server luôn trả về null!?? Quái lạ, lúc sau google search thì mới hiểu disable nó sẽ ngăn không cho gửi lên servlet luôn. Giải pháp ở đây sẽ sử dụng readonly thay vì disable, nó đều có tác dụng ngăn người dùng không được chỉnh sửa dữ liệu nhưng readonly thì cho phép gửi dữ liệu đó qua form. Thế là, well, i'm done this problem.
Đây là link mình đã tham khảo, stackoverflow - the dev' life resource LOL
https://stackoverflow.com/questions/7730695/whats-the-difference-between-disabled-disabled-and-readonly-readonly-for-ht