預編譯題
A. jsp預編譯問題
這個方法是到目前為止進行JSP預編譯最方便的途徑( flick a switch 途徑) 他有許多指出來毫無意義的缺點 如果一個錯誤在JSP的編譯期間或在部署(或重新部署) 的時候發生 Web 應用程序的預編譯將會在例外處暫停 另外 如果在一個特定的Web應用程序裡面有許多JSP文件的情況 declarative預編譯顯著的影響著部署時間 阻斷部署直到所有的文件都被編譯 對於大型的應用程序 當出現數以百計的JSP 文件以declarative預編譯被執行的時候 這種部署時間趨向以分鍾來計算 (在某些情況 到 分鍾 其他情況可能更長時間) 設想開始一個伺服器實例 在一個特定的Web應用程序周期內進入部署狀態用declarative 預編譯激活李模坦 如果在應用內有很多的JSP文件以及部署 接近完成時就已經花費了大量的時間 在編譯期間由於拋出一個例外而突然失敗 當然會引起挫折感 雖然起先看起來比較方便 但declarative 編譯對生產系統管理造成重大的風險 因此應該在經過慎重的考慮後再使用它
程序方式的預編譯
在WLS下最可靠的預編譯JSP的方法是使用java命令行 weblogic jspc 它位於WLS安裝的lib目錄之下的weblogic jar文件中 這個工具允許開發者在發展階段和在部署前解決編譯時間問題的時候編譯需要的JSP文件 它也為生產系統提供一個有能力實現JSP預編譯的管理員 這種用法的主要好處是
● 文件可以被預編譯一次然後可以被多次部署 (這不被伺服器實例的重復利用所影響)
● 編譯時的例外可以被預先解決而不影響部署
● 類可以通過集群部署
使用weblogic jspc的缺點是需要人工干涉 並且它在開發時並當在JSP文件變得過時的時候必須被重新運行 然而 考慮到前面的兩個方法的討論 我們幾乎不能將這種不方便當成該方法的一個缺點 因此推薦它作為碼數最可靠和最靈活的機制來實現JSP預編譯
執行weblogic jspc
為了更有效的使用weblogic jspc 你必須首先了解它的用法和語法 這篇文章我們將利用WLS SP 的工具的功能 注意 下面給出的語法和最好的慣例應該應用於WLS 的所有版本以及新的WLS
為了調用命令行JSP編譯器(weblogic jspc) 你必須確定下面的內容
● PATH環境變數必須包含你機器上安裝的J SE 包的二進制目錄(例如 /opt/j se/ /sdk/bin 或者c:sunsoftj se sdkin) 以獲得JVM運行時的支持 如果你打算使用javac作為你的JSP編譯的Java編譯器 要確定PATH包含全部Java 的軟體開發工具包(SDK)的二進制目錄 並且不僅僅是JRE(Java Runtime Engine Java運行時間引擎) 因為沒有編譯器和JRE關聯 如果你打算使用一個編譯器而不是javac(例如 Jikes) 也要為那個編譯器確定在PATH中包含正確的目錄
● 設置Java系統類路徑用來包含來自WLS SP 安裝目錄的weblogic jar文件 通過在產品庫目錄下默認建立(例如 /opt/bea/wlserver /lib/weblogic jar或者c:eawlserv er libweblogic jar) 此外 請確定在JSP編譯階段中你可哪桐能需要的參考類(JAR或類文件)也在你的類路徑中
在第一次執行weblogic jspc之前 你需要測試你的命令行配置是否是按上述配置 它可以通過簡單運行一個WLS版本檢查來完成 使用命令 java weblogic version 這個命令應該返回下面的內容
which should return the following:
WebLogic Server SP / / : :
#
WebLogic XML Mole SP / /
: : #
如果你的輸出和上面的不相似(和你運行的版本相對應) 在進行JSP預編譯前 要重新訪問PATH和類路徑變數將其設置成你的當前命令行環境
一般的weblogic jspc的語法如下面給出的
java weblogic jspc [options] …
在一個編譯器的單一調用中默認情況下JSP編譯器可以編譯一個JSP文件或一組JSP文件 並且可以通過設置命令行選項 編譯器可以以不同的方法工作 下面給出一個例子
java
weblogic jspc
webapp mywebapp
piler javac
pileFlags g
classpath /u/apps/dist/src/lib jar
d
package slackwerks mywebapp jsp
mentary
keepgenerated
k
mywebappindex jsp
這篇文章只列舉了一個例子 如果你要想更加了解weblogic jspc如何能在你的環境中使用和管理的話 請參閱/wldj 我們提供了對整套的工作選項 使用的含義以及相關聯問題的討論
結論
lishixin/Article/program/Java/hx/201311/25749
B. 關於SPRING的預編譯問題
String str="select * from ff where rownum=?"
Connection con = null;
PreparedStatement ps = null;
try
{
con = getConnection();
ps = con.prepareStatement(str);
ps.setString(1, n);
ps.executeQuery();
}
C. C語言預編譯填空題
正確結果是var=19
D. java預編譯的問題,其中sql語句執行不了,其他插入什麼的都正常,望指點~
pstmt.setString(1,user.getId()+"");
pstmt.setString(2,user.getName());
pstmt.setString(3,user.getPwd());
這是以佔位符方式設置 sql的參數值。
你的sql語句String sql = "select id,name,pwd from userinfo where id=10007";
沒有用到,所以這幾句刪了就行了。或者改為:
String sql = "select id,name,pwd from userinfo where id=?";
pstmt.setString(1,user.getId()+"");
E. KEIL 中關於預編譯的問題(重復包含)
「兩個源文件file1.c和file2.c都會將file.h插入進去嗎?」
不會,只插入一次。
「這樣寫不就是為了不重復包含嗎?」
對呀,你不是很明白嗎。
「如果只在兩個當中的一個插入file.h,假設file1.c,那我file2.c中用到了file.h中的函數,不是會出現未定義的錯誤嗎?」
怎麼會呢,此時這個函數對於工程而言已經被定義了呀。
用你的例子給你講解一下。開始編譯以後,假設先編譯file2.c,則file2.c會包含file.h並載入其中的所有聲明以及宏定義,包括#define _FILE_H_;編譯完file2.c後開始編譯file1.c,此時從file2.c會再次包含file.c,但因為_FILE_H_已經定義過,就不會執行判斷條件之後的頭文件內容。通過這樣的方式就能避免重復定義。
F. 新手求解一道關於【宏定義/預編譯】的很簡單的問題!!!
宏定義是直接代換的
T(a++,a*++b,a+b+c)
被代換成
a++*a+b+c*a*++b/4
即
(a++)*a+b+c*a*(++b)/4
其中b要先自增一
所以,表達式的值為
3*3+4+5*3*4/4=28
a++自增的值是要在本行語句全部執行完後才增加1的
G. c++ 預編譯問題 關於頭文件
預編譯不能這么寫吧?你想達到的目的是不讓ElemType不重復定義?
這樣試試
#ifndef HEADER_ELEM_TYPE_H
#define HEADER_ELEM_TYPE_H
struct ElemType{
int number; //物品編號
int weight;
};
#endif
int main(){
ElemType a;
}
用這個宏HEADER_ELEM_TYPE_H來判斷當前文件是否被包含
如果你用vs2008的話應該可以用另外一個宏指令達到你上面的目的
#pragma once
struct ElemType{
int number; //物品編號
int weight;
};
這樣多簡單
H. C語言預編譯處理的問題
#define MIN(x,y) (x)>(y)?(x):(y)
這句是定義了一個求兩個數之間較大一個的宏函數(用MAX(x,y)好些)
a=b是把b的值(3)賦給a,此表達式的值即為b的值,即3
此時a==3,b==3,b-a==0
從而s1的值為3
I. 關於java 的prepareStatement預編譯問題,以下兩種形式為什麼前者可以後者不可以呢
LIMIT關鍵字後面要接2個數字,語法是limit <offset>, <step>,所以你要通過preparedstatement設置limit的後面的參數,首先SQL語句就要改成LIMIT ?,? 然後用setInt去綁定。 按照你的程序,應該是:
pre.setInt(3, 0);
pre.setInt(4, 2);