版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣西百色市平果市政協(xié)辦公益性崗位人員招聘1人考試備考試題及答案解析
- 2026河北保定雄安人才集團(tuán)誠(chéng)聘現(xiàn)場(chǎng)教學(xué)導(dǎo)師考試備考題庫(kù)及答案解析
- 2026湖北宜昌市長(zhǎng)陽(yáng)土家族自治縣事業(yè)單位急需緊缺人才引進(jìn)招聘42人(華中科技大學(xué)站)筆試模擬試題及答案解析
- 2026新疆烏魯木齊市翰林高級(jí)中學(xué)招聘15人考試備考試題及答案解析
- 2026新疆圖木舒克團(tuán)結(jié)醫(yī)院招聘16人考試備考試題及答案解析
- 2025浙江省旅游投資集團(tuán)招聘25人(第八批)考試參考試題及答案解析
- 2026廣東廣州醫(yī)科大學(xué)附屬第五醫(yī)院人才招聘54人(一)考試備考題庫(kù)及答案解析
- 2026年月綜合4k-8k上不封頂江西這家國(guó)企大量招聘30人備考題庫(kù)及參考答案詳解
- 2026年濟(jì)南市歷城區(qū)教育和體育局所屬學(xué)校計(jì)劃赴部分高校招聘90人備考題庫(kù)及完整答案詳解一套
- 2026年梅河口市阜康酒精有限責(zé)任公司招聘?jìng)淇碱}庫(kù)帶答案詳解
- 《公輸》課文文言知識(shí)點(diǎn)歸納
- 內(nèi)鏡中心年終總結(jié)
- 碎石技術(shù)供應(yīng)保障方案
- 園林苗木容器育苗技術(shù)
- 23秋國(guó)家開(kāi)放大學(xué)《機(jī)電一體化系統(tǒng)設(shè)計(jì)基礎(chǔ)》形考作業(yè)1-3+專題報(bào)告參考答案
- 2023年工裝夾具設(shè)計(jì)工程師年終總結(jié)及下一年計(jì)劃
- 第七章腭裂課件
- 兒科學(xué)熱性驚厥課件
- 嗶哩嗶哩認(rèn)證公函
- GB/T 985.1-2008氣焊、焊條電弧焊、氣體保護(hù)焊和高能束焊的推薦坡口
- GB/T 26480-2011閥門的檢驗(yàn)和試驗(yàn)
評(píng)論
0/150
提交評(píng)論