2013年8月21日 星期三

[C/C++] 近期學習C/C++的一點心得

Pointer
@意義: value/address是每個variable的兩個屬性, variable name代表取value, &取address
@功用: 在pass by value的language中, 可以在function內改變function外變數的值, 類似Java中的呼叫instance method其實已隱含this
@重點: 在於address跟value的變換, 1.透過address(pointer)得到value, 2.透過value得到address
int a=5;
int *ptr=&a;  // init ptr, 指到a

// pointer的操作
*ptr;  //  取a的value
*ptr=7; //  改變a的value

@double pointer:可在function中改變function外pointer的value
int **pp

C/C++的struct跟class
@C struct: 可定義新的type, 但在function call時, 參數傳遞仍為pass by value, 故得傳入pointer才能改變function外面變數的value
@C++ class: 跟C struct相似, 主差別為可讓function成為member及member的access scope; 相同點是在function call時, 預設為pass by value, 所以要改變function外變數的value仍得用pointer,這方面的概念及基礎跟C是相同的

C/C++動態配置memory
@C: 用的是malloc/free
@C++:用的是new/delete
故以下為class variable的動態配置變數obj, 並呼叫其default constructor
Class1 obj =  new Class1();

@constructor為一個function, 意義在於幫剛配置的memory initialize, 概念相同於C中變數宣告時得初始化

結論:
1. C++中pointer的概念及基礎設定與 C 相同
2. 參數傳遞方式基礎相同, struct/class的預設為pass by value
3. struct/class概念相似, 同為新增一個type

2013年1月18日 星期五

[Eclipse]attach Javadoc in Eclipse

1. Download Javadoc from oracle.com
2. Open eclipse->Window->Preferences
3. Select Java->Installed JREs
4. Select your installed JDK/JRE, and click enabled "Edit"
5. Select "......\rt.jar" and click enabled "Javadoc Location"
6. Select "Javadoc in archive" and click "Browse" to set your "Archive path".
7. click "Browse" to set your "Path within archive", select the "api" node.
8. click OK and Finish!!

2012年12月25日 星期二

[Tomcat]org.apache.tomcat.jdbc.pool.ConnectionPool abandon

起因: 使用connection pool用完後一定要close, 否則pool中會殘留idle connection在server未清除, 而導致超過db server 的 max connections限制而得到此訊息

2012年11月11日 星期日