JAVA開(kāi)發(fā)總結(jié)資料_第1頁(yè)
JAVA開(kāi)發(fā)總結(jié)資料_第2頁(yè)
JAVA開(kāi)發(fā)總結(jié)資料_第3頁(yè)
JAVA開(kāi)發(fā)總結(jié)資料_第4頁(yè)
JAVA開(kāi)發(fā)總結(jié)資料_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目錄

Tomcat3

1.賬響系統(tǒng)日期,如果相差8個(gè)小時(shí)可以使用以下方式解決3

JAVA3

1.XStrem產(chǎn)生XML文件3

2.字符串處理去掉空格回車等(java)3

3.獲取java工程跟路徑:3

4.XFire出錯(cuò)信息3

5.XFire性能5

6.Java中double除法出現(xiàn)除不盡小數(shù)解決辦法5

7.java反射執(zhí)行指定的方法6

8.Java枚舉9

9.lis七,set,map,數(shù)組間的相互轉(zhuǎn)換10

10.Java調(diào)用C,VBdll文件等11

11.JAVA注解的使用18

12.CollectionUtils.transform()20

13.使用SQL批量執(zhí)行語(yǔ)句20

14.獲取java報(bào)縉的堆棧信息21

Eclipse21

1.時(shí)間設(shè)置:21

2.CGLIB報(bào)錯(cuò)22

3.Alt+回車->調(diào)出當(dāng)前資源的屬性22

4.MyEdipse編譯的時(shí)候內(nèi)存不足配置:22

5.指定EclipseVM在edipse.ini文件里加入22

Oracle22

1.Oracle樹(shù)結(jié)構(gòu)查詢22

2.同一張表數(shù)據(jù)copy22

3.查詢某個(gè)相對(duì)時(shí)間段內(nèi)的數(shù)據(jù)23

4.oracle執(zhí)行sql文件23

5.0rde刪除表恢復(fù)23

6.oracle連接查詢+23

7.oracle查詢實(shí)例24

8.查詢樹(shù)形結(jié)構(gòu)sql語(yǔ)句24

9.復(fù)制同一表中的數(shù)據(jù)從A字段到B字段24

10.sqlcase:語(yǔ)句24

11.oracle行列轉(zhuǎn)換wmsys.wm_concat,亂碼用tochar解決24

12.判斷函數(shù):decode(f_region,1,null,branch)25

13.oracleTNS配置25

14.Oracle雙機(jī)的配置26

15.oracle賬戶解鎖26

16.oracle用戶密碼修改,如果不記得可以修改26

17.oracle字段亂碼恢復(fù),程序跟蹤為亂碼字符,無(wú)法復(fù)制到外面進(jìn)行編輯27

18.全角半角轉(zhuǎn)換SQL27

19.oracle查詢表空間大?。蹠r(shí)間較長(zhǎng)]28

20.oracle鎖表進(jìn)程的查看和解除29

21.oracleifelse用法32

22.oracleWITHDETAIL用法33

JS34

1.Js中parseFloat()方法所產(chǎn)的精度不一致問(wèn)題34

2.21query的Ajax同步調(diào)用方式34

3.輸入框只能填寫數(shù)字35

4.js參數(shù)亂碼問(wèn)題35

5.js獲取文件擴(kuò)展名35

6.正則表達(dá)式整數(shù)判斷35

1.frame對(duì)象的處理35

2.也可以給frame加事件監(jiān)聽(tīng)文檔的加載35

3.數(shù)據(jù)不能讀可以寫readonly="readonly";36

4.frame可以添加事件:36

5.avascript設(shè)置一個(gè)變量,只允許提交一次[防止重復(fù)提交。36

6.如果刷新一個(gè)已經(jīng)提交過(guò)的頁(yè)面時(shí)系統(tǒng)總是會(huì)提示一個(gè)"重試或取消”的對(duì)話框?,

36

7..FCKeditor:使用37

8.URL亂碼轉(zhuǎn)化37

9.html的form中定義submit按鈕后無(wú)法用js提交37

10.輸入文本框長(zhǎng)度檢查37

11.頁(yè)面刷新出現(xiàn)IE瀏覽器"重試〃”取消〃的提示庵38

12.JQuery實(shí)現(xiàn)復(fù)選框多選取值38

13.JQuery下拉選取值38

14.TD文字多的時(shí)候換行CSS39

15.JS解析地址欄里的參數(shù)信息39

16.Frame使用,40

17.Frame調(diào)用其他frame的方法,點(diǎn)擊別的頁(yè)面隱藏最外層框架的彈出菜單。.…41

18.File控件設(shè)置。nchange事件,清空路徑后會(huì)再次出發(fā)解決方法。43

19.Frame模擬單擊事件43

20.通過(guò)濾鏡獲取圖片高度等43

WEB服務(wù)器46

1.weblogic編碼問(wèn)題:46

2.2.Linux下字體亂碼終極解決方案46

JSP47

1.EL取值47

2.md5加密:47

3.標(biāo)簽47

4.Struts標(biāo)簽執(zhí)行靜態(tài)類的方法47

Tomcat

1.影響系統(tǒng)日期,如果相差8個(gè)小時(shí)可以使用以下方式解決

在tomcatstalup.bat第一行添加配置setJAVA_OPTS=

-Duser.timezone=GMT+08

JAVA

1.XStrem產(chǎn)生XML文件

XStreamx=newXStream(newJettisonMappedXmlDriver());

x.alias("ms”,List.class);

x.aliasC'm",SuperBean.class);

//過(guò)濾一些不必要的字段

x.omitFieldfSuperBean.class,"className");

x.omitField(SuperBean.class,"property");

x.omitField(SuperBean.class,"panelid");

x.omitFieldfSuperBean.class,"datetime");

StringtoDoListStr=x.toXML(sbList);

2.字符串處理去掉空格回車等(java)

publicStringreplaceBlank(Strmgstrold){

Patternp=Ppile("\\s*I\t|\r|\n");

Stringstrnew=strold;

Matcherm=p.matcher(strnew);

Stringafter=m.replaceAII("");

returnafter;

)

3.獲取java工程跟路徑:

Platform.SYS_INFO.get("sys.realpath");

4.XFire出錯(cuò)信息

/

javaxfire創(chuàng)建webservice時(shí)碰到的錯(cuò)誤java相關(guān)2008-04-2516:10:21閱讀683評(píng)論4

字號(hào):大中小訂閱.

atorg.codehaus.xfire.client.Client.invoke(Client.java:336)

atorg.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)

atorg.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)

at$Proxy0.pay(UnknownSource)

解決辦法:類不能訪問(wèn),構(gòu)造函數(shù)修改為public看看。

5.XFire性能

最近項(xiàng)目需求..利用Xfire這個(gè)經(jīng)典的WebService框架,搭建了與單片機(jī)通信的橋梁…I這個(gè)

WebService不是我搭建的..我只負(fù)責(zé)調(diào)

用客戶端).目前利用Xfire客戶端并發(fā)訪問(wèn)的有30臺(tái)服務(wù)器左右,開(kāi)始每個(gè)服務(wù)器開(kāi)啟一條線

程(包括自己寫的WebService鏈接超時(shí)

機(jī)制的線程)多線程進(jìn)行對(duì)所有服務(wù)器的并發(fā)訪問(wèn),獲取反饋數(shù)據(jù).因?yàn)閃ebService創(chuàng)建鏈接

并獲取反饋數(shù)據(jù),消耗CPU最比較大.所以

.通過(guò)普通線程創(chuàng)建訪問(wèn)的方式..給CPU帶來(lái)非常大的壓力.后來(lái)改用jdk5新加入的

ThreadPoolExecutor管理線程,因?yàn)榇罅康木€程創(chuàng)

建也有非常大的資源消耗所以利用線程池進(jìn)行管理..xfire的通信是中斷式的,并不保持捱接.

所以利用hashmap把鏈接對(duì)象緩存起

來(lái).(xfire創(chuàng)建對(duì)象需要消耗500亳秒,客戶端不是我寫的..因此無(wú)法優(yōu)化).減少創(chuàng)建對(duì)象的消

耗.因此cpu的峰值從85%降低到45%.

不知道其他高手還有沒(méi)有其他較好的解決方案.

使用Stax解釋XML,性能有了質(zhì)的提高。XFire采用Woodstox作Stax實(shí)現(xiàn);

XFire是完全基于流數(shù)據(jù)處理進(jìn)行工作的系統(tǒng),這意味著XFire不是將整個(gè)SOAP文檔緩存在

內(nèi)存中,而是以管道的方

式接收SOAP流數(shù)據(jù)。這種工作方式的轉(zhuǎn)變帶來(lái)了可觀的性能回報(bào),同時(shí)節(jié)省了內(nèi)存的占用。

XFire從管道中接收一個(gè)SOAP請(qǐng)求到返回一個(gè)SOAP響應(yīng),會(huì)經(jīng)歷一系列的階段。在管

道調(diào)用的任何一個(gè)階段,

XFire都可以添加一些額外的Handler,在對(duì)消息進(jìn)行加工處理后再傳入到下一個(gè)階段中。在

SOAP請(qǐng)求消息對(duì)Web

Service發(fā)起真正調(diào)用之前,分別會(huì)經(jīng)過(guò)傳輸、預(yù)轉(zhuǎn)發(fā)、轉(zhuǎn)發(fā)、策略實(shí)施、用戶信息處理、

預(yù)調(diào)用、服務(wù)調(diào)用等階段,

6.Java中double除法出現(xiàn)除不盡小數(shù)解決辦法

主要是要算出除法運(yùn)算完成后有多少小數(shù)位數(shù)

publicstaticvoidmain(String[]args){

doubled=45.22;

inti=(d+"'*).indexOf(".");

intseal=(d+n'*).substring(i+1).length();

BigDecimalbl=newBigDecimal(d);

BigDecimalb2=newBigDecimal(1000);

System.out.printin(DoubleTest.div(d,new

Double(1000),scal+3));

)

publicstaticDoublediv(Doublevl,Doublev2,intscale){

BigDecimalbl=newBigDecimal(vl.toString());

BigDecimalb2=newBigDecimal(v2.toString());

returnnew

Double(bl.divide(b2).setScale(scale).doubleValue());

)

7.java反射執(zhí)行指定的方法

*創(chuàng)建日期:2011<br>

*Title:文件所屬模塊:對(duì)類操作封裝<br>

*Description:對(duì)本文件的詳細(xì)描述,原則上不能少于50字

*@authorxyj

*@mender:(文件的修改者,文件創(chuàng)建者之外的人)

*^version1.0

*Remark:認(rèn)為有必要的其他信息

*/

publicclassEntiyUtils{

pxiblicstaticHashMap<String,Method>mtd=new

HashMap<String,Methods();

static{

//執(zhí)行操作前先清理一下

mtd,clear();

)

*功能:此方法用于判斷兩個(gè)對(duì)象指定的方法的值是否相同

*@paramsource源對(duì)象

*@paramtarger目標(biāo)象

*?parammethods要對(duì)比值的get方法

*@return兩個(gè)對(duì)象的屬性是否相同

*@throwsInvocationTargetException

*@throwsIllegalAccessException

*@throwsIllegalArgumentException

*/

publicstaticbooleancompareProperties(Objectsource,Object

targer,String[]methods)throwsIllegalArgumentException,

IllegalAccessException,InvocationTargetException{

booleanok=true;

Class<?>cl=source.getClass();

Method[]methds=cl.getMethods();

for(Stringmethodname:methods){

if(null!=methodname){

Methodmd=getMethod(methodname,methds);//獲取當(dāng)

前方法

ObjectsVal=md.invoke(source);//獲取5原對(duì)

象的值

ObjecttVal=md.invoke(targer);//獲取目標(biāo)

對(duì)象的值

if(sVal==null&&tVal==null){

continue;

Jelseif(sVal==null||tVal==null){//如果其中一個(gè)為

空則中斷

ok=false;

break;

}else{//如果兩個(gè)對(duì)象都不是空則判斷是否相等

if(sValinstanceofDate){

Datedl=(Date)sVal;

Dated2=(Date)tVaL;

if(pareTo(d2)!=0){

ok.=false;

break;

)

}elseif(svalinstanceofString){

Stringsi=(String)sVal;

Strings2=(String)tVal;

if(!si.equals(s2)){

ok=false;

break;

)

}elseif(sValinstanceofDouble){

doubledl=(Double)sVal;

doubled2=(Double)tVal;

if(dl!=d2){

ok=false;

break;

)

Jelseif(sValinstanceofLong){

long11=(Long)sVal;

long12=(Long)tVal;

if(11!=12){

ok=false;

break;

)

}elseif(sValinstanceofInteger){

inttl=(Integer)sVal;

intt2=(Integer)tVal;

if(tl!=t2){

ok=false;

break;

)

}else(

if(sVal!=tVal){

ok=false;

break;

)

}

}

)

)

returnok;

)

/*★

*根據(jù)name獲取方法對(duì)象

*@paramname

*@parammethds

*@return

*/

publicstaticMethodgetMethod(Stringname,Method[]methds){

if(!mtd.containsKey(name)){

mtd.clear();

for(intj=0;j<methds.length;j++){

mtd.put(methds[j].getName(),methds[j]);

)

}

returnmtd.get(name);

}

pxiblicstaticvoidmain(String[]args){

TestObjtl=newTestObj();

tl.setDbb(newDouble(12.3));

tl.sets("myss^f;

tl.setlnttSs(newInteger(23));

tl.setDelete_flag("23");

TestObjt2=newTestObj();

t2.setDbb(newDouble(12.3));

t2.sets("myss天津”);

t2.setlnttSs(newInteger(23));

t2.setDelete_flag("23n);

String[]md=

nnH

{Dbb",getS,"getInttSsr"getlag"};

try(

System.out.print(compareProperties(tl,t2,md));

}catch(IllegalArgumentExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(IllegalAccessExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(InvocationTargetExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

)

})

8.Java枚舉

publicenumPEnum{

RED{

publicStringgetRED(){

return"ss";

)

},

mRiT{

publicStringgetWHRIT(){

return"ss";

}

),

BLUE{

publicStringgetBLUE(){

return"ss";

}

},

BLAK{

publicintgetBLAK(){

return5;

)

)

)

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

PEnump=PEnum.BLAK;

if(true)

p=PEnum.BL(7E;

if(PEnum.BLAK.equals(HS")){

)

for(PEnumC:PEnum.values()){

System.out.printin(C);

)

switch(p){

caseBLAK:

System.out.print(nllln+p);

caseBLUE:

System.out.print(“222"+p);

)

)

9.list,set,map,數(shù)組間的相互轉(zhuǎn)換

list,set,map,數(shù)組間的相互轉(zhuǎn)換

1.list轉(zhuǎn)set

Setset=newHashSet(newArrayList());

2.set轉(zhuǎn)list

Listlist=newArrayList(newHashSet());

3.數(shù)組轉(zhuǎn)為list

Liststooges=Arrays.asList("LarryH,"Moe","Curly");

或者

String[]arr={-1H,"2"};

Listlist=Arrays.asList(arr);

4.數(shù)組轉(zhuǎn)為set

int[]a={1,2,3};

Setset=newHashSet(Arrays.asList(a));

5.map的相關(guān)操作。

Mapmap=newHashMap();

nHH

map.put("lza);

map.put(*2*,'b*);

map.put(*3*z'c*);

System,out.printIr.(map);

//輸出所有的值

System.out.printlr.(map.keyset());

//輸出所有的鍵

System,out.printlr.(map.values());

//將map的值轉(zhuǎn)化為L(zhǎng)ist

Listlist=newArrayList(map.values());

System.out.printlr(list);

//將map的值轉(zhuǎn)化為Set

Setset=newHashSet(map.values());

System.out.printlr.(set);

6.list轉(zhuǎn)數(shù)組

Listlist=Arrays.asList(Man,Hbn);

String[]arr=(String[])list.toArray(newString[list.sizeO]);

System,out.printlr.(Arrays.toString(arr));

10.Java調(diào)用C,VBdll文件等

java調(diào)用vcdll、vbdll(Com組件)

**********************************************

**文章名稱:java調(diào)用vcdll、vbdll(Com組件)

**版權(quán)信息:可以任意轉(zhuǎn)我,但要注明出處及作者信息

**作者:隗公萬(wàn)

**時(shí)間:2009.12.04

**聯(lián)系方式:weigongwan@

***********************************************/

一、簡(jiǎn)單說(shuō)明

java調(diào)用動(dòng)態(tài)庫(kù)其實(shí)都是需要通過(guò)一些輔助的組件,java調(diào)用vc的動(dòng)態(tài)庫(kù)一般是用JNI,而java

調(diào)用vb的動(dòng)態(tài)庫(kù)更確切的說(shuō)是調(diào)用vb的Com組件則是用的jacob/。本人也是班門弄斧,想鄙

視我的就鄙視吧,呵呵

二、java調(diào)用vc動(dòng)態(tài)庫(kù)

1、首先,寫出java的調(diào)用程序,例子代碼如下(javacall.java):

publicclassjavaca.ll

static

System.loadLibrary(,,calldir,);

publicnativestaticintcallcount(inti);

publicstaticvoidmain(String[]args)

javacalljc=ncwjavacall();

intj;

j=jc.callcount(10);

System,out.println(j);

2、利用javacall.java文件生成javacall.class文件和javecall.h頭文件。

D:\AdamSoft\batool-g\java_call_dll_for_example>javac

javacall,java

D:\AdainSoft\batool-g\java_call_dll_for_example>javahjavacall

D:\AdamSoft\batool-g\java_calldllforexample)

3、下面利用生成好的頭文件來(lái)創(chuàng)建vc的動(dòng)態(tài)庫(kù),直接在visualstudio上面新建?個(gè)Win32

ApplicationWizard文件,Applicationtype選擇DLL,然后點(diǎn)擊完成即可,source如F:

//calldll.cpp:DefinestheentrypointfortheDLLapplication.

#include"stdafx.h"

tfinclude"javacall,h”

BOOLAPIENTRYDllMain(HANDLEhModule,

DWORD

ul_reason_for_ca11,

LPVOIDIpReserved

)

{

returnTRUE;

)

JNIEXPORTjintJN1CALLJava_javacall_callcount(JNlEnv*,jclass,

jintp)

(

intj=p*p;

returnj;

這時(shí)候要將javacall.h頭文件拷貝到工程目錄中,還有就是需要把jni.h和jni_md.h頭文件拷貝到工程

目錄中。jni.h和jni_md.h次文件都在jdk的include目錄里面.最重要的一點(diǎn)是如果是拷貝過(guò)來(lái)的活,

那么javacall.h的頭文件中就要將引用頭文件的地方#加(:11](10<jni.h>改成#include"jni.h",這樣就會(huì)

在本地的工程目錄中檢索頭文件了。最后編譯下就編譯出來(lái)了calldll.dll動(dòng)態(tài)庫(kù)了。將這個(gè)動(dòng)態(tài)庫(kù)拷貝到

javacall.class所在的目錄中,

4、最后到控制臺(tái)下面執(zhí)行下javacall.class看看是不是能計(jì)算出10的平方來(lái)。

D:\AdamSoft\batool-g\java_calLdll_for_exampleAjavajavacall

100

D:\AdamSoft\batool-g\jsva_calLdll_for_example>

到此java調(diào)用vc動(dòng)態(tài)庫(kù)就算是成功fo

注:貼一個(gè)java的環(huán)境配置的腳本文件env.bat,內(nèi)容如下:

color0a

cd/DD:\AdamSoft\batool-g\java_call_dll_for_example

setJAVA_HOME=D:\ProgramFiles\Java\jdkl.5.0_17

setPATH=%JAVA_HOME%\bin;%PATH%

setCLASSPATH=.;%JAVA_HOME%\lib\tools.jar

cmd.exe

三、java調(diào)用vb動(dòng)態(tài)庫(kù)(com組件)

1、首先需要準(zhǔn)備jacob.jar和jacob.dll兩個(gè)文件,我這里是1.7版本的,直接在網(wǎng)上搜索下就能找

到下載地址了,我這里就不提供了。

2、我們先來(lái)將java程序則建出來(lái),我這里創(chuàng)建的名字是javacallvb.java,內(nèi)容如卜.:

importcom.jacob.com.*;

importcom.jacob.activeX.*;

publicclassjavacal1vb

(

publicstaticStringShowMsg(Stringstr){

Stringres=

try(

ActiveXComponentpp=new

ActiveXComponent('DLLProject.VBDLI/);

DispatchmyCom=(Dispatch)

pp.gctObject();

Variantresult=Dispatch,call(myCom,

“vbShowMsg”,str);

res=result.toStrirgO;

}catch(Exceptione){

〃〃

res=;

e.printStackTraceO;

)

returnres;

publicstaticvoidmain(String[]args)

javacal1vbjcv=newjavacallvb():

StringstrRet=jcv.ShowMsg("weIconic

weigongwan!,z);

System,out.printin(strRet);

我這里是調(diào)用DLLProject:陣中的VBDLL類里面的vbShowMsg函數(shù),先向里面?zhèn)鬟f一個(gè)參數(shù),然后接

收返回來(lái)的值,最后打印在控制臺(tái)上。

3、現(xiàn)在開(kāi)始創(chuàng)建vb的動(dòng)態(tài)庫(kù),更確切的說(shuō)是現(xiàn)在開(kāi)始創(chuàng)建、/b的ActiveXdll組件。這里需要注意的

是visualstudio里面創(chuàng)建出來(lái)的ClassLibrary并不是vb中的動(dòng)態(tài)庫(kù)而是的庫(kù),我們需要用

microsoftVisualBasic軟件來(lái)編譯ActiveXdll庫(kù)。打開(kāi)軟件后點(diǎn)擊ActiveXDLL,在工程窗口中點(diǎn)擊

Classi(Classi),然后在屬性里面將名字改成VBDLL。再點(diǎn)擊工程1(工程1)將里面的名字改成

DLLProjecto這時(shí)候我們回過(guò)頭來(lái)在VBDLL的文件里面輸入進(jìn)去我們想要實(shí)現(xiàn)的函數(shù),我這里的函數(shù)內(nèi)

容如下:

PublicFunctionvbShowMsg(ByValstrAsString)AsString

MsgBoxstr

vbShowMsg="VB:"+str

EndFunction

PublicFunctionvbCount(ByVaiiAsInteger)AsInteger

vbCount=i*i

EndFunction

最后,將程序保存,在點(diǎn)擊菜單的文件。生成DLLProject.dll(。..,將動(dòng)態(tài)庫(kù)生成到j(luò)avacallvb.java

程序所在的目錄中。

4、開(kāi)始準(zhǔn)備編譯javacallvb.java程序,我們首先要確保當(dāng)前目錄中有文件DLLProject.dll,

DLLProject.exp.DLLProject.lib,jacob.dlkjacob.jar,javacallvb.java?確認(rèn)這些文件都已經(jīng)存在

了,我們打開(kāi)控制臺(tái),我這里的是些的腳本env.bat,直接雙擊就可以了。運(yùn)行執(zhí)行效果如下:

D:\AdamSoft\batool-g\j2va_call_dll_for_examplojavac-classpath

jacob.jarjavacallvb.java

D:\AdamSoft\batool-g\j5va_call_dll_for_example>java-cpjacob.jar;.javacallvb

VB:welcomeweigongwan!

D:\AdamSoft\batool-g\j5va_call_dll_for_example>

到此,我們的javamvb動(dòng)態(tài)庫(kù)就第是成功了。

四、java調(diào)用vc動(dòng)態(tài)庫(kù),再由vc動(dòng)態(tài)庫(kù)調(diào)用vb動(dòng)態(tài)庫(kù)

1、首先,創(chuàng)建java程序’我這里的就是javacall.java,內(nèi)容如下:

publicclassjavacall

(

static

(

System.loadLibrary("calldll");

)

publicnativestaticintcallcount(inti);

publicstaticvoidmain(Stringf]ergs)

(

javacalljc=newjavacall();

intj;

j=jc.calIcount(10);

System,out.printin(j);

}

);

這個(gè)文件一看就知道是java調(diào)用vc動(dòng)態(tài)庫(kù)的,關(guān)于java調(diào)用vc動(dòng)態(tài)庫(kù)的我就不多說(shuō)了,因?yàn)樽铋_(kāi)始已

經(jīng)介紹過(guò)了。

2、vb動(dòng)態(tài)庫(kù)也不多說(shuō)了,我這里就是用DLLProject.dll動(dòng)態(tài)庫(kù)。

3、vc動(dòng)態(tài)庫(kù)里面的內(nèi)容我直接貼出來(lái)如下:

//calldll.cpp:DefinestheentrypointfortheDLLapplication.

#include"stdafx.h"

^includejavacall.h,z

tfinclude<stdio.h>

//這里是引用vb的動(dòng)態(tài)庫(kù),需要用全路徑

Simport

“D:\AdamSoft\batool-g\javacalldl1for_example\DLLProject.dll”

nonamespace

BOOLAPIENTRYDllMain(HANDLEhModule,

DWORD

ul_reason_for_cal1,

LPVOTD1pReserved

)

(

returnTRUE;

)

shortCalIFun(shorti)

(

shortsRet=0;

BSTRbstrDesc;

try

Colnitialize(NULL);

_VBDLLPtrptr;

ptr.Createlnstance(_uuidof(VBDLL));

sRet=ptr->vbCount(i):

}catch(_cGm_errore)

(

bstrDesc=e.Description();

)

CoUninitializeO;

returnsRet;

)

JNIEXPORTjintJN1CALLJava_javacallcallcount(JNlEnv*,jclass,

jintp)

(

intj=(ir.t)CallFun(p);

returnj;

以上文件就是vc動(dòng)態(tài)庫(kù)中的內(nèi)容。

4、最后,將vb動(dòng)態(tài)庫(kù)、vc動(dòng)態(tài)庫(kù)以及javacall.java程序放到同意目錄中。執(zhí)行效果如下:

D:\AdamSoft\batool-g\j5va_call_dll_for_example>javacjavacall.java

D:\AdamSoft\batool-g\j2va_call_dll_for_example>javajavacall

100

D:\AdamSoft\batool-g\j2va_call_dll_for_example>

11.JAVA注解的使用

1.注解的定義:

/★*

*注解測(cè)試

*@authorAdministrator

*/

^Target(ElementType.METHOD)

(^Retention(RetentionPolicy.RUNTIME)

publiceinterfaceAnnotion{

intid();

Stringsynopsis();

Stringengineer()default"[unassigned]";

Stringdate()default"[unimplemsnted]

其中的id()、synopsis。可以認(rèn)為是該注解的元素,或者屬性,這些方法聲明不能

有任何參數(shù),或者拋出異常,可以通過(guò)default來(lái)定義它的默認(rèn)值

而且這些類型只能是原語(yǔ)類型、String、Annotation或者這些類型的數(shù)組。

最上面的?Target表面了改注解使用的范圍(是一個(gè)方法還是一個(gè)類,或者一個(gè)域),

?Retention表面了注解可以用在哪個(gè)級(jí)別上(源代碼中、類文件中、還是運(yùn)行時(shí))

這樣,便定義了一個(gè)注解

2.注解的使用和解析

publicclassAnnotionTest{

@Annotion(

id=2868724,

synopsis="Enabletime-travel",

engineer=nMr.Peabodyn,

date="4/1/3007")

publicvoidTesti(){

System,out.print("一?n);

)

publicstaticvoidmain(String[]args){

AnnotionTestt=newAnnotionTest();

Method[]ans=t.getClass().getMethods();

for(Methodan:ans){

if(an.isAnnotationPresent(Annotion.class)){//如果“1前

注解有定義類里的注解

System,out.printlr.(an.getAnnotation(Annotion.class));

Annotionns=

(Annotion)an.getAr.notation(Annotion.class);//直接訪問(wèn)Annotion自

定義注解里的屬性

System.out.print(ns.id()+"eng:H+ns.engineer());

)

}

)

)

12.CollectionUtils.transform()

該方法接收兩個(gè)參數(shù),用來(lái)通過(guò)Transformer,將制定的Collection進(jìn)行轉(zhuǎn)換,得到一個(gè)

新的經(jīng)過(guò)轉(zhuǎn)換后的Collection

CollectionUtils.transform(argaClses,newTransformer()(

publicObjecttransform(Objectelement){

Classret=(Class)element;

if(Enhancer.isEnhanced(ret)){

ret=ReflectHelper.getClass(getUnEnhancer{ret

.getName()));

}

returnret;

)

});

13.使用SQL批量執(zhí)行語(yǔ)句

*功能:批量更新計(jì)劃

*@paramobj

★/

privatevoidbatchCpdateBySQL(Stringsql,Map<StringzString>obj){

Sessionsession=null;

try{

SessionFactorysessionFact=

BeanProvider.getSessionFactory();

session=sessionFact.openSession();

Transactiontx=session.beginTransaction();//使用

Hibernate事務(wù)處理

Connectionconn=session.connection();

PreparedStatementstmt=conn.prepareStatement(sql);

Iterator<String>plans=obj.keyset().iterator();

while(plans.hasNext()){

Stringkey=plans.next();

stmt.setString(1,obj.get(key));

stmt.setString(2,key);

stmt.addBatch();

}

int[]i=stmt.executeBatch();

System,out.printin(”======>>成功更

新:”+(i==null?0:i.length)+”->條”);

tx.commit();//使用Hibernate事務(wù)處理邊界

}catch(Exceptione){

e.printStackTrace();

}finally{

session.close();

)

}

14.獲取java報(bào)錯(cuò)的堆棧信息

try(

Exceptionexception=messageErrorLog.getException;);

StringWriterwriter=newStringWriter();

exception.printStackTrace(newPrintWriter(writer));

errorLogDetaiIText.setText(writer.getBuffer0.toStringO);

}finally{

if(writer!=null)

try(

writer,close();

}catch(Exceptione){

e.printStackTrace();

)

Eclipse

i.時(shí)間設(shè)置:

在eclipse中設(shè)置

在首選項(xiàng)一>Tomcat—>JVMSettings項(xiàng),設(shè)定JRE的版本為,jrel.5.0_06T并且添加如下

幾個(gè)JVMParameters;

-Xmsl28m

-Xmx512m

-Dfile.encoding=UTF8

-Duser.timezone=GMT+38

2.CGLIB報(bào)錯(cuò)

查看/lib下面是否有重復(fù)的asm.jar包

3.Alt+回車。調(diào)出當(dāng)前資源的屬性

4.MyEdipse編譯的時(shí)候內(nèi)存不足配置:

EditLibrary

JRESystemlixary

SelectaJREtoaddtotheclasspath.

rCo,Propertiesforprogress

ly.

|typefiltertext!10buildpathentries<

SystemIbrary

f-si-Resource

L?1Source|心Proje

BeaninfoPathCWorl-spacedefaultJRE(jdkl.5,0_04)

|-Builders

lOtJARsandclassfoldersc6AlternateJRE:|)dkl,5.0-04

JavaBuildPath

1囹0xerce$Impl-2.(3

ElJavaCodeStyle

1rii…八.iiio「ExeciibonEnvironment:|cDC-lQ/Foundation*l.C(MyEdpse6.6).

1□!X|

iEs

/eoreditJREdefinitions.Bydefauft,thecheckedJRE4addedtothebuildpathofnewlycreatedJava

iEs:

|Location一

kl.5.004C:\ProgramFiles'…

/Eclipse6.6D:\Myfclipse6.6

Hnisl

DefalutVMArguments:這兒設(shè)置即可。

5.指定EclipseVM在eclipse.ini文件里加入

-vm

C:\ProgramFiles\Java\jdkl.5.0_04\bin\javaw.exe#指定路徑

Oracle

1.Oracle樹(shù)結(jié)構(gòu)查詢

SELECT*FROMt_bns_prjm_projecttwheret.delete_flag=O

CONNECTBYPRIORt.id=t.super_projectid

STARTWITHject_namelike'%北京~天津330kV送電工程%,;

2.同一張表數(shù)據(jù)copy

CREATEORREPLACETRIGGERSETOLD

BEFOREINSERTONT_3PM_FORM_TEMPLATE

FOREACHROW

BEGIN

SELECTIDS.nextvalINTO:new.idFROMdual;

END;

insertinto表(select*from表where條件)

3.查詢某個(gè)相對(duì)時(shí)間段內(nèi)的數(shù)據(jù)

SELECT*FROMT_GATHER_PROJECT_TREE

WHEREPROVINCE=REC.PROVINCE

ANDCREATE_TIME>(SELECTMAX(CREATE_TIME)-3/24/60

FROMT_GATHER_PROJECT_TREE

WHEREPROVINCE=REC.PROVINCE);

4.oracle執(zhí)行sql文件

star

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論