11 Giới thiệu thực tế về OptimalGrid -Part V

(Đăng ngày 05/09/2006) Hệ thống OptimalGrid sau đó xử lý tất cả các chi tiết của việc ánh xạ điều này thành một vấn đề với hàng nghìn hoặc hàng triệu ô và chạy nó trên một Lưới điện toán bao gồm hàng trăm máy tính …

Mục 7. Phụ lục (tt)

Danh sách mã cho lớp EntityEden

Sau đây là mã hoàn chỉnh cho lớp EntityEden .

// 
Gói EntityEden.java com.ibm.almaden.smartgrid.apps.eden; 
/ * 
** Tài liệu được cấp phép - Tài sản của IBM 
** 
** (C) BẢN QUYỀN IBM Corp. 2002 Mọi quyền được bảo lưu 
** 
** Người dùng của Chính phủ Hoa Kỳ Quyền bị hạn chế - Việc sử dụng, sao chép hoặc 
** tiết lộ bị hạn chế bởi Hợp đồng Lịch trình GSA ADP với IBM Corp. 
** 
* / 
import java.awt.Color; 
nhập org.jdom.Element; 
nhập com.ibm.almaden.smartgrid.EntityAbstract; 
nhập com.ibm.almaden.smartgrid.util.Debug; 
// |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||| 
// || Class EntityEden || 
// ||||||||||||||||||| 
/ ** 
**
** EntityEden là một lớp thực thể được sử dụng trong mô hình Eden 
** về sự phát triển của vi khuẩn. EntityEden mở rộng EntityAbstract 
** 
* Một thực thể là bất kỳ đối tượng hoặc đặc tính OPC nào có khả năng 
** lan truyền hoặc lưu chuyển từ OPC này sang OPC khác. 
** Đặc điểm của các OPC điều chỉnh luồng này phải là 
** các triển khai lớp của PropertyAbstract. Các thực thể có thể là 
** chất lỏng, mật độ điện tử hoặc điện tử, 
** ứng suất cục bộ, vi khuẩn, nhiệt, nhiệt độ, v.v. 
** Thuộc tính có thể là hằng số đàn hồi cục bộ, độ cứng cục bộ, 
** độ dẫn điện cục bộ, độ dẫn nhiệt, nhiệt dung, v.v. . 
** 
** 
* Đối với mô hình Eden, một cá thể EntityEden đại diện cho
** một loại vi khuẩn thuộc loại cụ thể TYPE_A, TYPE_B 
** hoặc TYPE_C. Nó có thuộc tính "food" đại diện cho 
** loại vi khuẩn mà nó sẽ ăn. 
* Với ví dụ này, A ăn B; B ăn C và C ăn A. 
* 
* EntityEden cũng có xác suất lan truyền được chỉ định. 
* 
* 
** @author ames Kaufman 
** @version $ Bản sửa đổi: 1.3 $ $ Ngày: 2003/05/22 15:19:32 $ 
** 
* / 
// ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||| 
public class EntityEden mở rộng EntityAbstract { 
public static final String FOOD_ID = "food"; 
public static final String PROBABILITY = "prob"; 
/ ** 
* Cho biết thực thể này còn sống hay đã chết
* Điều này chỉ được sử dụng để chuyển thông tin trong nội bộ và không cần thiết 
* ra bên ngoài. 
* Bởi vì nó là tạm thời, nó sẽ luôn bắt đầu là false, do đó 
* giá trị mặc định phải là false. Giá trị này cũng không được ghi vào XML 
* / 
private transient boolean _dead = false; 
/ ** 
* xác suất lan truyền cho thực thể này. 
* 
* / 
private double _propagationProb; 
/ **
* Loại vi khuẩn mà thực thể này sẽ tiêu thụ. 
* / 
private int _foodID = 0; 
/ ** 
* Các loại vi khuẩn là TYPE_A, TYPE_B và TYPE_C 
* 
* A ăn B; B ăn C và C ăn A 
* / 
public static final int TYPE_A = 5; 
public static final int TYPE_B = 3; 
public static final int TYPE_C = 2; 
/ ** 
* ENTITY_A là một EntityEden được xác định trước có ID là TYPE_A 
* và ăn TYPE_B và lan truyền với xác suất 0,4 
* / 
public static final EntityEden ENTITY_A = \ 
new EntityEden (TYPE_A, TYPE_B, 0,4); 
/ ** 
* ENTITY_B là một EntityEden được xác định trước có ID là TYPE_B 
* và ăn TYPE_C và lan truyền với xác suất là 0,4
* / 
public static final EntityEden ENTITY_B = \ 
new EntityEden (TYPE_B, TYPE_C, 0.4); 
/ ** 
* ENTITY_C là một EntityEden được xác định trước có 
* ID là TYPE_C 
* và ăn TYPE_A và lan truyền với xác suất 
* là 0,4 
* / 
public static Final EntityEden ENTITY_C = \ 
new EntityEden (TYPE_C, TYPE_A, 0,4); 
/ ** 
* public EntityEden () 
* 
* Tạo một EntityEden với màu mặc định và không có yêu cầu 
* Cần có hàm tạo công khai này để hỗ trợ XML 
* có thể tự động xây dựng từ một tệp XML. 
* / 
public EntityEden () { 
} 
/ ** 
* Tạo một đối tượng thực thể Eden mô tả một
* vi khuẩn, loại vi khuẩn mà nó ăn và 
* xác suất lây lan của vi khuẩn này. 
* 
* 
* @param entityID_ Loại vi khuẩn TYPE_A, TYPE_B hoặc TYPE_C 
* @param foodID_ Food: Loại vi khuẩn mà con này ăn 
* @param double lây truyềnProb_ Xác suất lan truyền 
* 
* / 
public EntityEden (int entityID_, int foodID_, double lan truyềnProb_ ) { 
_propagationProb = tuyên truyềnProb_; 
_entityID = entityID_; 
_foodID = foodID_; 
// xác định màu dựa trên kiểu 
if (_entityID == TYPE_A) { 
_rgbColor = Color.red.getRGB (); 
} else if (_entityID == TYPE_B) { 
_rgbColor = Color.green.getRGB ();
} else if (_entityID == TYPE_C) { 
_rgbColor = Color.blue.getRGB (); 
} else { 
Debug.error ("EntityEden:", "Thực thể không hợp lệ. entityID =" + _ entityID); 
} 
} 
/ **
* getChild () trả về một bản sao mới của thực thể khi thực thể 
* chuyển từ một ô lân cận. 
* Nếu thực thể là bất biến, chúng ta chỉ có thể trả về 
* một tham chiếu đến cùng một EntityEden nhưng vì chúng ta sẽ 
* sửa đổi động _isAlive, chúng ta phải trả về một 
bản sao * của thực thể. 
* Nếu một phương thức không được cung cấp, thì một bản sao sẽ được 
trả về *, đó là những gì phương thức này thực hiện. 
* Nhưng điều này ở đây để cho thấy rằng phương thức tồn tại. 
* 
* Triển khai @return EntityAbstract EntityEden 
* / 
public EntityAbstract getChild () { 
EntityEden e = null; 
thử { 
e = (EntityEden) this.clone (); 
} catch (CloneNotSupportedException cnse) {
Debug.error ("EntityEden.getChild", "Lỗi", cnse); 
} 
trả lại e; 
} 
/ ** 
* Trả về giá trị boolean _alive. 
* @return boolean 
* / 
boolean cuối cùng isAlive () { 
return! _đã chết; 
} 
/ ** 
* getPropProb () () 
* trả về xác suất lan truyền cho trường hợp này 
* @return double 
* / 
public double getPropProb () { 
return _propagationProb; 
} 
/ ** 
* Trả về foodID. 
* @return int 
* / 
public int getFoodID () { 
return _foodID; 
} 
/ ** 
* Đặt ID thức ăn. 
* @param foodID ID thức ăn cần đặt 
* /
public void setFoodID (int foodID) { 
_foodID = foodID; 
} 
/ ** 
* Đặt _propagationProb. 
* @param propProb The statementationProb để thiết lập 
* / 
public final void setPropProb (double tuyên truyềnProb) { 
_propagationProb = inheritationProb; 
} 
/ ** 
* Đặt sống động. 
* @param còn sống true nếu còn sống, false nếu đã chết. 
* / 
cuối cùng void setAlive (boolean còn sống) { 
_dead =! sống sót; 
}
/ ************************************************* *************** 
** getXML () ** 
******************* / 
/ ** 
* 
* Tạo XML đại diện của một đối tượng thực thể. 
* Nó sẽ được thêm vào EntityElement bởi XMLOPCCollectionWriter 
* Các phần tử này chứa bất kỳ dữ liệu nào duy nhất cho một lớp 
* mở rộng EntityAbstract (lớp này). 
* 
* Hỗ trợ XML sẽ tạo ra một cái gì đó giống như sau cho 
* đối tượng EntityAbstract. Lưu ý rằng mã trong phương thức này đã 
* thêm "food =" 3 "vào các thuộc tính. 
* 
* 
*prob = "0.4" food = "3"> 
*
* 
* 
* 
* 
* Phần tử này phải chứa tất cả dữ liệu duy nhất cho một lớp 
* mở rộng entityAbstract. Điều đầu tiên mà việc 
triển khai phương thức getXML () \ 
* nên làm trong bất kỳ lớp nào mở rộng entityAbstract là gọi 
* phương thức getXmlElement () từ lớp cha của nó để lấy 
* xml cơ bản cho một thực thể trừu tượng. 
* 
* Sử dụng thư viện xác định Phần tử được định nghĩa trong org.jdom 
* 
* @see com.ibm.almaden.smartgrid.EntityAbstract 
* 
* 
* @return Phần tử Trả về biểu diễn XML cho một thực thể OPC 
* 
* 
********* ************************************************** ****** 
* / 
public Element getXML () {
// Đầu tiên nó phải gọi getXMLElement cho entityAbstract 
Element entityElement = super.getXmlElement (); 
// bây giờ hãy thêm thuộc tính foodID vào XML. 
entityElement.setAttribute (PROBABILITY, "" + this._propagationProb); 
entityElement.setAttribute (FOOD_ID, "" + this._foodID); 
return entityElement; 
} // getXML () 
/ ******************************************* ****************** 
** initFromXML () ** 
******************* / 
/ ** 
** Điều này tạo ra một thực thể EntityEden mới từ 
* một biểu diễn XML của thực thể. 
* 
* Phương thức này khởi tạo một đối tượng EntityEden dựa trên 
* XML được tạo bởi phương thức getXML ().
* Sử dụng dòng XML sau, cá thể EntityEden 
* sẽ được tạo lại bao gồm "giá trị foodID mà lớp này 
* xác định. 
* 
* 
*
* 
* 
* 
* 
** Tạo một thể hiện EntityEden mới từ một phần tử XML 
* Điều đầu tiên mà bất kỳ phương thức entity.initFromXML () nào phải làm 
* là gọi super. initCommonSubsetFromXML () để khởi tạo
* các thực thể đó đặc trưng của bất kỳ lớp nào mở rộng 
* entityAbstract. 
* 
* Sử dụng các thư viện 
* org.jdom.Element; 
* 
* @see com.ibm.almaden.smartgrid.EntityAbstract 
* 
* @param entityElement_ đại diện xml của một đối tượng thực thể 
* 
* 
* 
********************** ************************************* 
* / 
public void initFromXML (Element entityElement_) { 
super.initCommonSubsetFromXML (entityElement_); 
this._propagationProb = getDoubleAttribute (entityElement_, PROBABILITY); 
this._foodID = getIntAttribute (entityElement_, FOOD_ID); 
} // initFromXMLL () 
} // Lớp entityEden

Danh sách mã cho lớp PropertyEden

Sau đây là mã hoàn chỉnh cho lớp PropertyEden .

// 
Gói PropertyEden.java com.ibm.almaden.smartgrid.apps.eden; 
/ * 
** Tài liệu được cấp phép - Tài sản của IBM 
** 
** (C) BẢN QUYỀN IBM Corp. 2002 Mọi quyền được bảo lưu 
** 
** Người dùng của Chính phủ Hoa Kỳ Quyền bị hạn chế - Việc sử dụng, sao chép hoặc 
** tiết lộ bị hạn chế bởi Hợp đồng Lịch trình GSA ADP với IBM Corp. 
** 
* / 
import org.jdom.Element; 
nhập com.ibm.almaden.smartgrid.entityAbstract; 
nhập com.ibm.almaden.smartgrid.PropertyAbstract; 
// |||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| 
// || Thuộc tính lớpEden || 
// ||||||||||||||||||| 
/ ** 
* Lớp Thuộc tính xác định bất kỳ thuộc tính nào có thể áp dụng cho
* OPC hoặc các thực thể của nó. 
* Trong trường hợp của mô hình Eden, lớp propertyEden 
* được sử dụng trong việc truyền 
* của các đối tượng entityEden. 
* Nếu PropertyId khớp với ID mục nhập thì 
xác suất lan truyền * được tăng lên bởi giá trị xác suất. 
* Nếu không, nó bị giảm. 
* @see PropertyAbstract 
* @see entityAbstract 
* @see EntityEden 
** 
** @author James Kaufman 
** @version $ Bản sửa đổi: 1,3 $ $ Ngày: 2003/05/22 15:19:32 $ 
** 
* /
public class PropertyEden mở rộng PropertyAbstract { 
/ ** 
* Xác suất điều chỉnh lan truyền 
* / 
private double _probability = 0.0; 
/ ** 
* hàm tạo rỗng. 
* Cần thiết để hỗ trợ XML. 
* / 
public PropertyEden () { 
super.setPropertyID (0); 
super.setPropertyColor (255); 
this.setProbability (0.0); 
} 
/ ** 
* constructor 
* 
* @param propertyID_ Id duy nhất được liên kết với thuộc tính này 
* @param precision_ Điều chỉnh đối với xác suất ngẫu nhiên 
* được sử dụng khi xác định sự lan truyền của 
* EntityEden với cùng một giá trị ID. 
* 
* /
public PropertyEden (int propertyID_, double 
precision_ ) { super.setPropertyID (propertyID_); 
super.setPropertyColor (255); 
this.setProbability (xác suất_); 
} 
/ ** 
* Trả về Xác suất. 
* @return double 
* / 
public final double getProbability () { 
return _probability; 
} 
/ ** 
* Đặt xác suất. 
* Xác suất @param Xác suất để đặt 
* / 
public Final void setProbability (double 
precision_ ) { _probability = precision_; 
} 
/ ************************************************ ****** 
** getXML () ** 
******************* / 
/ **
* Tạo một Phần tử với thông tin cơ bản cần thiết 
* để xác định thuộc tính trong mô hình Eden 
* Điều đầu tiên mà việc triển khai phương thức getXML () 
* nên làm trong bất kỳ lớp nào mở rộng thuộc tính trừu tượng là gọi 
* phương thức getXmlElement () từ lớp cha của nó tới lấy 
* xml cơ bản cho một thuộc tính trừu tượng. 
* 
* Sử dụng các thư viện 
* org.jdom.Document; 
* org.jdom.Element;
* 
* @see com.ibm.almaden.smartgrid.PropertyAbstract 
* 
* thuộc tính @return Bổ sung biểu diễn XML của 
* một thuộc tính trừu tượng 
* 
* 
********************** ********************************* 
* / 
public Element getXML () { 
Element propertyElement = super.getXmlElement (); 
propertyElement.setAttribute (PROBABILITY, "" + this._probability); 
trả lại tài sảnElement; 
} // getXML () 
/ ******************************************* *********** 
** initFromXML () ** 
******************* / 
/ ** 
** Phương thức bắt buộc. Tạo một phiên bản PropertyEden mới từ 
* một biểu diễn XML của thuộc tính.
* Điều đầu tiên mà bất kỳ phương thức property.initFromXML () nào phải làm 
* là gọi super. initCommonSubsetFromXML () để khởi tạo 
* những thuộc tính đặc trưng của bất kỳ lớp nào mở rộng 
* propertyAbstract. 
* 
* Sử dụng các thư viện 
* org.jdom.Element; 
* 
* @see com.ibm.almaden.smartgrid.PropertyAbstract 
* 
* @param propertyElement_ đại diện xml của một đối tượng thuộc tính 
* 
************************ ******************************* 
* / 
public void initFromXML (Element propertyElement_) { 
super.initCommonSubsetFromXML (propertyElement_); 
this._probability = \ 
getDoubleAttribute (propertyElement_, PROBABILITY); 
} // initFromXMLL ()
} // Thuộc tính lớp

Danh sách mã cho lớp VppEdenInitializer

Sau đây là mã hoàn chỉnh cho lớp VppEdenInitializer .


// 
Gói VppEdenInitializer3D.java com.ibm.almaden.smartgrid.apps.eden; 
/ * 
** Tài liệu được cấp phép - Tài sản của IBM 
** 
** (C) BẢN QUYỀN IBM Corp. 2002 Mọi quyền được bảo lưu 
** 
** Quyền hạn chế của người dùng thuộc Chính phủ Hoa Kỳ - Sử dụng,
** bị hạn chế sao chép hoặc tiết lộ 
** bởi Hợp đồng lịch biểu GSA ADP với IBM Corp. 
** 
* / 
import java.util.Random; 
nhập java.util.Vector; 
nhập com.ibm.almaden.smartgrid.Constants; 
nhập com.ibm.almaden.smartgrid.EntityAbstract; 
nhập com.ibm.almaden.smartgrid.OPCAbstract;
nhập com.ibm.almaden.smartgrid.OP Bộ sưu tập; 
nhập com.ibm.almaden.smartgrid.SmartGrid; 
nhập com.ibm.almaden.smartgrid.VppDataInitializerAbstract; 
nhập com.ibm.almaden.smartgrid.SGSystemConfig; 
nhập com.ibm.almaden.smartgrid.VppInfo; 
nhập com.ibm.almaden.smartgrid.util.ConfigFile; 
nhập com.ibm.almaden.smartgrid.util.Debug; 
// |||||||||||||||||||||||||||||||||||||||||||||||||| || 
// || Class VppEdenInitializer || 
// ||||||||||||||||||||||||||| 
/ ** 
** 
** VppEdenInitializer chịu trách nhiệm thiết lập 
trạng thái ** ban đầu của Phiên bản Vpp được tạo bởi ProblemBuilder. 
* 
* Lớp này mở rộng VPPDataInitializerAbstract để thực hiện bất kỳ quá trình khởi tạo nào
* đó là duy nhất cho vấn đề của chúng tôi. Trong trường hợp này, nó sẽ thêm một trong mỗi loại 
* vi khuẩn vào bộ sưu tập trong VPP đầu tiên. 
* Nó sẽ kiểm tra tệp eden.cfg để biết các cài đặt được chỉ định và nếu không tìm thấy 
* thì nó sẽ chọn ngẫu nhiên các OPC sẽ được khởi tạo. 
* 
** 
** @see com.ibm.almaden.smartgrid.pb.ProblemAutoBuilder 
** @see com.ibm.almaden.smartgrid.SmartGrid 
** @see com.ibm.almaden.smartgrid.OPCCollection 
** @author James Kaufman 
** @author Toby Lehman 
** @version $ Bản sửa đổi: 1.3 $ $ Ngày: 2003/05/22 15:19:32 $ 
* / 
// ||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||| 
lớp công khai VppEdenInitializer mở rộng VppDataInitializerAbstract { 
/ **
*** Tên lớp để truy tìm và gỡ lỗi 
** / 
public static final String _className = "VppEdenInitializer"; 
/ ** 
** Chúng tôi cần điều này cho các số ngẫu nhiên khác nhau. 
** 
** tạo số ngẫu nhiên 
** / 
public Random _rnd = new Random (Constants.RANDOM_NUMBER_SEED); 
/ ** 
* Một số trường hợp thực thể mẫu. 
* 
* / 
public EntityEden _eA = EntityEden.ENTITY_A; 
public EntityEden _eB = EntityEden.ENTITY_B; 
public EntityEden _eC = EntityEden.ENTITY_C; 
/ * 
************************************************ ************* 
** VppEdenInitializer ** 
**************** 
* / 
/ **
** Khối mã lệnh với thông tin cấu hình Sự cố 
* 
* @param config_ Tham chiếu đến thông tin cấu hình 
* 
******************************* ****************************** 
* / 
public VppEdenInitializer (SGSystemConfig config_) { 
super (config_); 
} // Constructor()
/ ************************************************* *********** 
** khởi tạo ** 
******************** / 
/ ** 
*** Thêm các thực thể ban đầu. 
* Điều này được gọi cho mỗi VPP được tạo bởi 
* Trình tạo sự cố . 
* 
* @param vppInfo_ Đối tượng VppInfo mô tả VPP 
* đang được khởi tạo. 
*** @param collectionVect_ Vector của các đối tượng OPCCollection. 
*** 
******************************** 
** / 
public void khởi tạo (VppInfo vppInfo_, Vector collectionVect_) { 
String methodName = _className + ".initialize:"; 
// Chỉ khởi tạo VPP đầu tiên 
if (vppInfo _._ vppNumber == 0) {
// kiểm tra xem chỉ mục để khởi tạo có được đặt trong mục cấu hình 
ConfigFile problemCfg = _config.getProblemConfigFile (); 
// 
// tìm cài đặt trong tệp eden.cfg 
// Stanza: [problem] Thuộc tính: SetA 
// mặc định là -1 nếu không tìm thấy. 
int setA = problemCfg.getInt ("problem", "SetA", - 1); 
int setB = problemCfg.getInt ("problem", "SetB", - 1); 
int setC = problemCfg.getInt ("problem", "SetC", - 1); 
this.seedVPP (collectionVect_, _eA, setA); 
this.seedVPP (collectionVect_, _eB, setB); 
this.seedVPP (collectionVect_, _eC, setC);






* Giống VPP với một số thực thể ban đầu. 
* 
* Mã này chọn một Bộ sưu tập OPCC giữa 
* (số / 2) và thêm 
* thực thể được chỉ định vào một OPC ngẫu nhiên trong 
* Bộ sưu tập OPCC đó. 
* 
* Trong tương lai, chúng tôi muốn thêm một số điều khiển 
* vào vị trí ngẫu nhiên của các tọa độ. 
* 
* @param collectionVect_ Vector của OPCCollection 
* các đối tượng @param e_ Đối tượng Entity chúng ta sẽ thêm vào 
* OPC ngẫu nhiên trong một trong các OPCCollections 
*** 
*** @return void 
************* ************************************************ 
** / 
private void seedVPP (Vector \ 
collectionVect_, EntityEden e_, int index_) {
String methodName = _className + ".seedVPP:"; 
// lặp qua các tập hợp 
int numCollections = collectionVect_.size (); 
int middle = numCollections / 2; 
// tìm cái giữa 
OPCCollection OPCCollection = \ 
(OPCCollection) collectionVect_.elementAt (giữa); 
int numOPC = OPCCollection._collectionArray.length; 
int index = index_; 
if (index <0 || index> = numOPC) { 
// sử dụng 
chỉ mục OPC ngẫu nhiên = _rnd.nextInt (numOPC); 
} 
OPCAbstract OPC = (OPCAbstract) \ 
OPCCollection._collectionArray [chỉ mục]; 
Debug.msg (methodName, "***** Seeding collection" + \ 
middle + "tại OPC # =" + index + "********");
super.addOccupants (OPC, e_); 
trở về; 
} // seedVPP () 
} // kết thúc lớp VppEdenInitializer

Danh sách mã cho lớp AppUtilsGeneric

Sau đây là mã hoàn chỉnh cho lớp AppUtilsGeneric .

// 
Gói AppUtilsGeneric.java com.ibm.almaden.smartgrid; 
/ * 
** Tài liệu được cấp phép - Tài sản của IBM 
** 
** (C) BẢN QUYỀN IBM Corp. 2002 Mọi quyền được bảo lưu 
** 
** Người dùng của Chính phủ Hoa Kỳ Quyền bị hạn chế - Việc sử dụng, sao chép hoặc 
** tiết lộ bị hạn chế bởi Hợp đồng Lịch trình GSA ADP với IBM Corp. 
** 
* / 
import java.io.Serializable; 
nhập com.ibm.almaden.smartgrid.util.ConfigFile; 
// |||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| 
// || Class AppUtilsGeneric || 
// ||||||||||||||||||||||| 
/ ** 
* Lớp này được cung cấp để chứa các phương thức tiện ích và dữ liệu được chia sẻ
* bởi tất cả các OPC. Lớp cụ thể này chỉ là một trình giữ chỗ 
* và ví dụ. Một lập trình viên ứng dụng sẽ viết bản 
triển khai * AppUtilsAbstract của riêng họ . Các phương thức OPC có thể 
tham chiếu đến phương thức * và dữ liệu trong lớp này như một tham chiếu tĩnh 
trong OPCAbstract. 
* 
* Ví dụ 
* 
* AppUtilsGeneric utils = \ 
(AppUtilsGeneric) OPCAbstract.getAppUtils (); 
* long x = utils.example (10,5); 
* 
* @see AppUtilsAbstract để biết thêm chi tiết. 
* @author James Kaufman 
* @author John Thomas 
* 
** 
** 
** / 
// |||||||||||||||||||||||||||||| ||||||||||||||||||||||||||| 
lớp công khai AppUtilsGeneric
mở rộng AppUtilsAbstract triển khai Serializable { 
static final long serialVersionUID = -5934169214775107543L; 
thời gian chạy dàiValue = 0; 
/ ************************************************* ********* 
** AppUtilsGeneric ** (hàm tạo) 
************** / 
/ ** 
* Hàm tạo để triển khai lớp AppUtilAbstract 
* 
* @param sysConfigFile_ Tham khảo vào nội dung grid.cfg
* @param problemConfigFile_ Tham chiếu đến nội dung problem.cfg 
*************************************** ******************** 
* / 
public AppUtilsGeneric (ConfigFile \ 
sysConfigFile_, ConfigFile problemConfigFile_) { 
super (sysConfigFile_, problemConfigFile_); // \ 
thiết lập cấu hình hệ thống File 
runtimeValue = problemConfigFile_.getLong \ 
("Sự cố", "Giá trị thời gian chạy", 0); 
} 
/ ************************************************ ********** 
** ví dụ ** 
************** / 
/ ** 
* Ví dụ về phương thức tiện ích sử dụng giá trị ban đầu 
* lấy được từ tệp cấu hình 
* 
* @param arg1_ đối số 1 
* @param arg2 đối số 2 
* Giá trị @return
************************************************** ********* 
* / 
public final long example (long arg1_, long arg2_) { 
return (arg1_ + arg2 _) * runtimeValue; 
} 
} // Lớp AppUtilsGeneric

Tài nguyên

Giới thiệu về tác giả

Glenn Deen

Glenn Deen là một kỹ sư phần mềm cao cấp và là thành viên của nhóm nghiên cứu OptimalGrid tại Trung tâm Nghiên cứu Almaden của IBM. Kể từ khi gia nhập IBM vào năm 1989, ông đã tham gia vào lĩnh vực kiến ​​trúc bảo mật và máy tính phân tán. Sở thích của anh ấy bao gồm XML và điện toán lưới.

James Kaufman

James Kaufman là một nhân viên nghiên cứu tại Phòng Hệ thống Phân tán và Cụm tại Trung tâm Nghiên cứu Almaden của IBM. Ông nhận bằng cử nhân vật lý tại Đại học Cornell và bằng tiến sĩ vật lý tại UCSB. Ông đã có những đóng góp cho một số lĩnh vực nghiên cứu tại IBM. Ông là thành viên của Hiệp hội Vật lý Hoa Kỳ. Mối quan tâm nghiên cứu của anh ấy bao gồm tính toán phân tán, mô phỏng và mô hình hóa, và phần mềm trung gian lưới.

Tobin Lehman

Tobin (Toby) Lehman gia nhập Trung tâm Nghiên cứu Almaden của IBM vào năm 1986, ngay sau khi hoàn thành bằng tiến sĩ tại Đại học Wisconsin-Madison. Các mối quan tâm nghiên cứu của ông bao gồm hệ thống sao lưu dựa trên máy chủ, hệ thống cơ sở dữ liệu quan hệ đối tượng, quản lý đối tượng lớn, hệ thống cơ sở dữ liệu thường trú trong bộ nhớ, hệ thống Tuplespace và lưới điện toán. Anh ấy đang làm việc trên một cơ sở hạ tầng điện toán lưới tự động để giải quyết các vấn đề kết nối lớn trên một tập hợp các máy Internet không đồng nhất.

John Thomas

John Thomas là một nhà phát triển Java cho IBM. Trước đây, ông là một trong những lập trình viên chính cho dự án IBM Almaden TSpaces. Anh ấy là thành viên của dự án OptimalGrid tại Trung tâm Nghiên cứu Almaden, làm việc tại nhà của anh ấy ở Santa Cruz, California.

(Bản quyền Tập đoàn IBM)

FPT Aptech – Hệ Thống Đào Tạo Lập Trình Viên Quốc Tế

FPT Aptech trực thuộc Tổ chức Giáo dục FPT có hơn 25 năm kinh nghiệm đào tạo lập trình viên quốc tế tại Việt Nam, và luôn là sự lựa chọn ưu tiên của các sinh viên và nhà tuyển dụng.
0981578920
icons8-exercise-96