Tuesday, January 7, 2014

Khái niệm về RMI trong Java

Lập trình đối tượng phân tán là một trong những vấn đề nóng bỗng của công nghệ phân tán phần mềm ngày nay. Java là ngôn ngữ đi tiên phong với RMI (Remote Method Invocation) – một kĩ thuật cài đặt các đối tượng phân tán vô cùng hiệu quả và linh động.
Thông thường các chương trình của chúng ta được viết dưới dạng thủ tục hoặc hàm và việc các hàm gọi lẫn nhau, truyền tham số hay kết quả cho nhau chỉ xảy ra ở máy cục bộ. Kỷ thuật RMI (Remote Method Invoke) – mang ý nghĩa triệu gọi phương thức từ xa – là cách thức giao tiếp giữa các đối tượng trong Java có mã lệnh cài đặt nằm trên các máy khác nhau có thể triệu gọi lẫn nhau.
rmi 1 [Java] Khái niệm về RMI trong Java
Để giải quyết một số vấn đề trong việc truyền thông giữa Client/Server. RMI không gọi trực tiếp mà thông qua lớp trung gian. Lớp này tồn tại ở cả hai phía Client và Server. Lớp ở máy Client gọi là Stub, lớp ở máy Server gọi là Skel (Skeletion).

CÁC ĐẶT TÍNH CỦA RMI

- RMI là mô hình đối tượng phân tán của Java, nó giúp cho việc truyền thông giữa các đối tượng phân tán được dễ dàng hơn.
- RMI là API bậc cao được xây dựng dựa trên lập trình Socket.
- RMI không những cho phép chúng ta truyền dữ liệu giữa các đối tượng trên các hệ thống máy tính khác nhau, mà còn triệu gọi các phương thức trong các đối tượng ở xa (Remote Object).
- Việc truyền dữ liệu giữa các máy khác nhau được xử lý một cách trong suốt bởi máy ảo Java (Java virtual machine).
- Tương tự như mô hình Client/Server, RMI vẫn lấy/duy trì khái niệm của Client và Server, tuy nhiên cách tiếp cận (approach) của RMI linh hoạt hơn, mềm dẻo hơn so với môt hình Client/Server.
- Một điều thuận lợi quan trong nhất của RMI là nó cung cấp cớ chế callbacks, nó cho phép Server triệu gọi các phương thức ở Client.

KIẾN TRÚC CƠ BẢN CỦA RMI

Remote interface: Nên extend từ java.rmi.remote.Nó khai báo tất cả các phương thức mà Client có thể triệu gọi. Tất cả các method trong interface này nên throw RemoteException
Remote implementation: Được thực thi từ Remote interface và mở rộng từ UnicastRemoteObject. Triển khai các method được khai báo trong Interface tại đây. Nó là một Remote Object thực sự. Phát sinh hai lớp trung gian Stub và Skel.
 Server class bao gồm:
- RMI registry: Bộ đăng kí này sẽ đăng kí một Remote object với Naming Registry. Giúp các Remote object được chấp nhận khi gọi các method từ xa.
- Các class thực thi trên server.
Client class: Truy vấn trên tên Remote object trên RMI registry, thông qua stub để gọi các phương thức trên server.
cach hoat dong cua rmi [Java] Khái niệm về RMI trong Java

CÁCH LÀM VIỆC CỦA RMI

- Các Đối tượng ở phía Server đăng kí với bộ đăng kí RMI registry.
- Client kiểm tra các đối tượng ở xa trong RMI Registry.
- Vị trí của một đối tượng ở xa được xác định trong RMI Registry. Một stub được trả về cho Client.
- Remote object có thể được sử dụng tương tự như Local object để truy xuất đến toàn bộ tài nguyên. Việc truyền thông giữa Client và Server được xử lý bởi Stub và Skel.
Tìm hiểu thêm về RMI tại Overview of RMI

Thursday, December 12, 2013

Error 711: Cannot load the Remote Access Connection Manager

Mã lỗi 701 đưa ra là do các services tương tác bị lỗi.

Cách sửa:

Bước 1: Vào Run gõ services.msc (hoặc Windows+R và gõ lệnh tương ứng)
Bước 2: Ghi nhớ các tên này vào notepad hoặc ... (tùy ở bạn)

· Telephony (cái này trước nhé)

· Plug and Play

· Remote Access Auto Connection Manager

· Remote Access Connection Manager

Bước 3: Chọn tiếp chọn từng cái 1 trong các tên nêu trên ==> Chuột phải chọn Properties ==> Dòng Startup type chọn Manual ==> Dòng Services status chọn Start và nhấn ok (enter). Xong roài.

Tuesday, December 10, 2013

Hiển thị ngày giờ hiện tại trong Java

1. Date() + SimpleDateFormat()

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));

2. Calender() + SimpleDateFormat()

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));

Thursday, November 21, 2013

Cách chỉnh Full Màn hình Win 8, win 7 khi chơi game dota, aoe, warcraft

Chỉnh full màn hình với win 7, win 8, Cách chỉnh Full Màn hình Win 8, win 7 khi chơi game, full màn hình game dota, aoe, warcraft toàn màn hình khi chơi game


Sau khi cài đặt win 7, win 8 xong thì mặc định khi chơi game các bạn sẽ không thể chơi được game với màn hình full.
Trong bài viết này mình sẽ hướng dẫn các bạn chỉnh sửa để có thể chơi game full màn hình.

Các bạn vào Start sau đó gõ: “regedit” vào ô Run hoặc nhấn tôt hợp cửa sổ Window + R rồi gõ “regedit”
Sau đó bắt đầu chỉnh sửa như sau:



Hướng dẫn chơi game full màn hình với win 7 & win 8

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Gr aphicsDrivers\Configuration\xxxx\00\00 . Nhìn sang cột bên phải phần Scaling chỉnh lại giá trị 3 (nhắp đúp vào scaling rồi đổi số 4 thành số 3)

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Gr aphicsDrivers\Configuration\xxxx\00\00 Cũng nhìn sang cột bên phải phần scaling chỉnh lại giá trị 3 nhé. (nhắp đúp vào scaling rồi đổi số 4 thành số 3)

Với xxx : Chú ý đính chính lại là chỉ chỉnh phần xxx mà là dòng đầu tiên trong 4 dòng thôi (nếu ai mà 2 và 6 dòng cũng chọn dòng đầu thôi) tức là của mình là cái đầu tiên ấy. Nếu vẫn không được thì thử hết cả 4 cái xem, nó chỉ căng màn hình ra đúng tỉ lệ chứ không gây hại gì cho máy đâu mà lo.

Tuesday, November 19, 2013

gluPerspective()

Tên gọi

gluPerspective — cài đặt một ma trận chiếu phối cảnh

C Specification

void gluPerspective(GLdouble  fovy,
GLdouble  aspect,
GLdouble  zNear,
GLdouble  zFar);

Thông số

fovy
Xác định góc nhìn, đơn bị độ, theo phương y
aspect
Xác định tỉ lệ khung hình theo chiều x, đây là tỉ lệ x(width)/y(height)
zNear
Xác định khoảng cách từ người xem đến mặt phẳng cắt gần nhất, luôn dương.
zFar
Xác định khoảng cách từ người xem đến mặt phẳng cắt xa nhất, luôn dương.

Lưu ý

DepthBuffer bị ảnh hưởng bởi zNear zFar.
zNear không bao giờ là 0