|
2014年1月2日
摘要: 冒泡排序(Bubble Sort)是一種簡單的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。
冒泡排序算法的運作如下:
比較相鄰的元素。如果第一個比第二個大,就交換他們... 閱讀全文
2012年12月22日
2012年11月26日
基本介紹: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog() 方法用來創建一個顯示HTML內容的模態對話框。 window.showModelessDialog() 方法用來創建一個顯示HTML內容的非模態對話框。 使用方法: vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]) vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures]) 參數說明: sURL -- 必選參數,類型:字符串。用來指定對話框要顯示的文檔的URL。 vArguments -- 可選參數,類型:變體。用來向對話框傳遞參數。傳遞的參數類型不限,包括數組等。對話框通過
window.dialogArguments來取得傳遞進來的參數。 sFeatures -- 可選參數,類型:字符串。用來描述對話框的外觀等信息,可以使用以下的一個或幾個,用分號“;”隔開。 ---------------- 1. dialogHeight: 對話框高度,不小于100px 2. dialogWidth: 對話框寬度。 3. dialogLeft: 離屏幕左的距離。 4. dialogTop: 離屏幕上的距離。 5. center: { yes | no | 1 | 0 } : 是否居中,默認yes,但仍可以指定高度和寬度。 6. help: {yes | no | 1 | 0 }: 是否顯示幫助按鈕,默認yes。 7. resizable: {yes | no | 1 | 0 } [IE5+]: 是否可被改變大小。默認no。 8. status: {yes | no | 1 | 0 } [IE5+]: 是否顯示狀態欄。默認為yes[ Modeless]或no[Modal]。 9. scroll: { yes | no | 1 | 0 | on | off }:是否顯示滾動條。默認為yes。
下面幾個屬性是用在HTA中的,在一般的網頁中一般不使用。 10. dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印預覽時對話框是否隱藏。默認為no。 11. edge:{ sunken | raised }:指明對話框的邊框樣式。默認為raised。 12. unadorned:{ yes | no | 1 | 0 | on | off }:默認為no。
參數傳遞: 1. 要想對話框傳遞參數,是通過vArguments來進行傳遞的。類型不限制,對于字符串類型,最大為4096個字符。也可以傳遞對象,例如: ------------------------------- parent.htm <script> var obj = new Object(); obj.name="51js"; window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px"); </script> modal.htm <script> var obj = window.dialogArguments alert("您傳遞的參數為:" + obj.name) </script> ------------------------------- 2.可以通過window.returnValue向打開對話框的窗口返回信息,當然也可以是對象。例如: ------------------------------ parent.htm <script> str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px"); alert(str); </script> modal.htm <script> window.returnValue="http://homepage.yesky.com"; </script>
常見技巧:
一、怎樣才讓在showModalDialog和showModelessDialog的超連接不彈出新窗口? 在被打開的網頁里加上<base target="_self">就可以了。這句話一般是放在<head>之間的。
二、怎樣才刷新showModalDialog和showModelessDialog里的內容? 在showModalDialog和showModelessDialog里是不能按F5刷新的,又不能彈出菜單。這個只能依靠
javascript了,以下是相關代碼:
<body onkeydown="if (event.keyCode==116){reload.click()}"> <a id="reload" href="filename.htm" style="display:none">reload...</a>
將filename.htm替換成網頁的名字然后將它放到你打開的網頁里,按F5就可以刷新了,注意,這個要
配合<base target="_self">使用,不然你按下F5會彈出新窗口的。
三、如何用javascript關掉showModalDialog(或showModelessDialog)打開的窗口。 <input type="button" value="關閉" onclick="window.close()"> 也要配合<base target="_self">,不然會打開一個新的IE窗口,然后再關掉的。
四、Math.random與showModalDialog。
當你設置的彈出網頁固定時(如上面的"modal.htm"頁面),ie很可能到臨時文件區,下載上次產生的該頁面(openPage.html),而沒有重新加載,
對于動態加載的頁面來說,這樣往往產生誤會,如沒有及時更新數據,也就更不利于開發者測試。所以,你可以采用如下方式:
var strPage = “/medal.htm?random="+Math.random();
這樣每次產生的strPage是不一樣的,原因也就不言自明了。
下面舉兩個例子
一、返回一個字符串
首先是父頁面有個按鈕,用來打開Modal頁面userList.aspx
function openWin() { str =window.showModalDialog("userList.aspx",window,"status:0;help:0;edge:sunken;dialogWidth=700px;dialogHeight=400px");
if(str!=undefined && typeof(str)!=undefined && str!="undefined" && str!="") { document.getElementById("txtuserid").value=str; }else { document.getElementById("txtuserid").value=""; } }
str就是子頁面返回過來的數據,我們把它添加到父類的一個表單元素中
子頁面
function getValue() {
var selectValue=$(":radio:checked").val(); window.returnValue=selectValue; window.close(); }
在這里我們把子頁面里的值返回到父頁面里就可以了,然后關閉頁面就可以了
二、返回一個數據
父頁面
function openWin() { array =window.showModalDialog("demo2.aspx",window,"status:0;help:0;edge:sunken;dialogWidth=700px;dialogHeight=400px;scroll:no"); document.getElementById("username").value=array[0]; document.getElementById("sex").value=array[0]; }
子頁面
function getValue() { var array=new Array(); array[0]=document.getElementById("username").value; Array[1]=document.getElementById("sex").value; window.returnValue=array; window.close(); }
返回一個數組就可以了,如果用open打開的話,在搜狗或者360瀏覽器打開的是一個頁面或者阻攔什么的
前段時間在后臺使用JS的winodw.showModalDialog來查看靜態頁面內容,發現不能及時顯示更新后的頁面內容,用open打開有時也會出現這種問題
解決辦法 window.showModalDialog(getUrl+"?Rnd="+Math.random(),"","dialogWidth:600px;dialogHeight:400px;help:no;scroll:yes;center:yes;status:no;"); 這樣就不會有緩存了
多思考,多創新,才是正道!
1.判斷select選項中 是否存在Value="paraValue"的Item $("#selectid option[@value='paraValue']").length>0 2.向select選項中 加入一個Item $("#selectid").append("<option value=''>1111<option>"); 3.從select選項中 刪除一個Item $("#selectid").remove("<option value=''>1111<option>"); 4.修改select選項中 value="paraValue"的text為"paraText" $("#selectid option:selected").attr("value","paraValue").attr("text","paraText"); 5. 設置select中text="paraText"的第一個Item為選中 $("#selectid option[@text='paraText']").attr("selected","true") 6.設置select中 value="paraValue"的Item為選中 $("#selectid option[@value='paraValue']").attr("selected","true")
7.設置select中第一 個Item為選中 $("#selectid option").eq(0).attr('selected', 'true');
8. 得到select的當前選中項的value $("#selectid").val(); 9.得到select的當前選中項的text $("#selectid").text(); 10. 得到select的當前選中項的Index document.getElementById("select1").selectedIndex; $("#selectid").get(0).selectedIndex 11. 清空select的項 $("#selectid").empty();
JS版本的:
//1.判斷select選項中 是否存在Value="paraValue"的Item function jsSelectIsExitItem(objSelect,objItemValue) { var isExit = false ; for ( var i=0;i;I++) { if (objSelect.options[i].value == objItemValue) { isExit = true ; break ; } } return isExit; } //2.向select選項中 加入一個Item function jsAddItemToSelect(objSelect,objItemText,objItemValue, objItemPos) { //判斷是否存在 if (jsSelectIsExitItem(objSelect,objItemValue)) { alert( "該Item的 Value值已經存在" ); } else { var varItem = new Option(objItemText,objItemValue); // objSelect.options[objSelect.options.length] = varItem; objSelect.options.add(varItem, objItemPos); alert( "成功加入" ); } } //3.從select選項中 刪除一個Item function jsRemoveItemFromSelect(objSelect,objItemValue) { //判斷是否存在 if (jsSelectIsExitItem(objSelect,objItemValue)) { for ( var i=0;i;I++) { if (objSelect.options[i].value == objItemValue) { objSelect.options.remove(i); break ; } } alert( "成功刪除" ); } else { alert( "該 select中 不存在該項" ); } } //4.修改select選項中 value="paraValue"的text為"paraText" function jsUpdateItemToSelect(objSelect,objItemText,objItemValue) { //判斷是否存在 if (jsSelectIsExitItem(objSelect,objItemValue)) { for ( var i=0;i;I++) { if (objSelect.options[i].value == objItemValue) { objSelect.options[i].text = objItemText; break ; } } alert( "成功修改" ); } else { alert( "該 select中 不存在該項" ); } } //5.設置select中text="paraText"的第一個 Item為選中 function jsSelectItemByValue(objSelect,objItemText) { //判斷是否存在 var isExit = false ; for ( var i=0;i;I++) { if (objSelect.options[i].text == objItemText) { objSelect.options[i].selected = true ; isExit = true ; break ; } } //Show出結果 if (isExit) { alert( "成功選中" ); } else { alert( "該 select中 不存在該項" ); } } //6.設置select中value="paraValue"的Item 為選中 document.all.objSelect.value = objItemValue; //7.得到select的當前選中項的value var currSelectValue = document.all.objSelect.value; //8.得到select的當前選中項的text var currSelectText = document.all.objSelect.options[document.all.objSelect.selectedIndex].text; //9.得到select的當前選中項的Index var currSelectIndex = document.all.objSelect.selectedIndex; //10.清空select的項 document.all.objSelect.options.length = 0;
2012年11月21日
封裝 繼承 多態
面向對象的三個基本特征是:封裝、繼承、多態。
封裝
封裝最好理解了。封裝是面向對象的特征之一,是對象和類概念的主要特性。
封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。
繼承
面向對象編程 (OOP) 語言的一個主要功能就是“繼承”。繼承是指這樣一種能力:它可以使用現有類的所有功能,并在無需重新編寫原來的類的情況下對這些功能進行擴展。
通過繼承創建的新類稱為“子類”或“派生類”。
被繼承的類稱為“基類”、“父類”或“超類”。
繼承的過程,就是從一般到特殊的過程。
要實現繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實現。
在某些 OOP 語言中,一個子類可以繼承多個基類。但是一般情況下,一個子類只能有一個基類,要實現多重繼承,可以通過多級繼承來實現。
繼承概念的實現方式有三類:實現繼承、接口繼承和可視繼承。
Ø 實現繼承是指使用基類的屬性和方法而無需額外編碼的能力;
Ø 接口繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力;
Ø 可視繼承是指子窗體(類)使用基窗體(類)的外觀和實現代碼的能力。
在考慮使用繼承時,有一點需要注意,那就是兩個類之間的關系應該是“屬于”關系。例如,Employee 是一個人,Manager 也是一個人,因此這兩個類都可以繼承 Person 類。但是 Leg 類卻不能繼承 Person 類,因為腿并不是一個人。
抽象類僅定義將由子類創建的一般屬性和方法,創建抽象類時,請使用關鍵字 Interface 而不是 Class。
OO開發范式大致為:劃分對象→抽象類→將類組織成為層次化結構(繼承和合成) →用類與實例進行設計和實現幾個階段。
多態
多態性(polymorphisn)是允許你將父對象設置成為和一個或更多的他的子對象相等的技術,賦值之后,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。
實現多態,有二種方式,覆蓋,重載。
覆蓋,是指子類重新定義父類的虛函數的做法。
重載,是指允許存在多個同名函數,而這些函數的參數表不同(或許參數個數不同,或許參數類型不同,或許兩者都不同)。
其實,重載的概念并不屬于“面向對象編程”,重載的實現是:編譯器根據函數不同的參數表,對同名函數的名稱做修飾,然后這些同名函數就成了不同的函數(至少對于編譯器來說是這樣的)。如,有兩個同名函數:function func(p:integer):integer;和function func(p:string):integer;。那么編譯器做過修飾后的函數名稱可能是這樣的:int_func、str_func。對于這兩個函數的調用,在編譯器間就已經確定了,是靜態的(記住:是靜態)。也就是說,它們的地址在編譯期就綁定了(早綁定),因此,重載和多態無關!真正和多態相關的是 “覆蓋”。當子類重新定義了父類的虛函數后,父類指針根據賦給它的不同的子類指針,動態(記住:是動態!)的調用屬于子類的該函數,這樣的函數調用在編譯期間是無法確定的(調用的子類的虛函數的地址無法給出)。因此,這樣的函數地址是在運行期綁定的(晚邦定)。結論就是:重載只是一種語言特性,與多態無關,與面向對象也無關!引用一句Bruce Eckel的話:“不要犯傻,如果它不是晚邦定,它就不是多態。”
那么,多態的作用是什么呢?我們知道,封裝可以隱藏實現細節,使得代碼模塊化;繼承可以擴展已存在的代碼模塊(類);它們的目的都是為了——代碼重用。而多態則是為了實現另一個目的——接口重用!多態的作用,就是為了類在繼承和派生的時候,保證使用“家譜”中任一類的實例的某一屬性時的正確調用。
泛化(Generalization)
在上圖中,空心的三角表示繼承關系(類繼承),在UML的術語中,這種關系被稱為泛化(Generalization)。Person(人)是基類,Teacher(教師)、Student(學生)、Guest(來賓)是子類。
若在邏輯上B是A的“一種”,并且A的所有功能和屬性對B而言都有意義,則允許B繼承A的功能和屬性。
例如,教師是人,Teacher 是Person的“一種”(a kind of )。那么類Teacher可以從類Person派生(繼承)。
如果A是基類,B是A的派生類,那么B將繼承A的數據和函數。
如果類A和類B毫不相關,不可以為了使B的功能更多些而讓B繼承A的功能和屬性。
若在邏輯上B是A的“一種”(a kind of ),則允許B繼承A的功能和屬性。
聚合(組合)
若在邏輯上A是B的“一部分”(a part of),則不允許B從A派生,而是要用A和其它東西組合出B。
例如,眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是頭(Head)的一部分,所以類Head應該由類Eye、Nose、Mouth、Ear組合而成,不是派生(繼承)而成。
聚合的類型分為無、共享(聚合)、復合(組合)三類。
聚合(aggregation)
上面圖中,有一個菱形(空心)表示聚合(aggregation)(聚合類型為共享),聚合的意義表示has-a關系。聚合是一種相對松散的關系,聚合類B不需要對被聚合的類A負責。
組合(composition)
這幅圖與上面的唯一區別是菱形為實心的,它代表了一種更為堅固的關系——組合(composition)(聚合類型為復合)。組合表示的關系也是has-a,不過在這里,A的生命期受B控制。即A會隨著B的創建而創建,隨B的消亡而消亡。
依賴(Dependency)
這里B與A的關系只是一種依賴(Dependency)關系,這種關系表明,如果類A被修改,那么類B會受到影響
2012年11月20日
數列6,10,18,32,“?”,問“?”是幾?
1。什么是3G,2。3C 融合技術,3。對大唐的認識。 3G有三大制式,GSM升級后的WCDMA,CDMA升級后的CDMA2000,以及我國自主開發的TD-SCDMA。 第三代移動通信技術(3rd-generation,3G),是指支持高速數據傳輸的蜂窩移動通訊技術。3G服務能夠同時傳送聲音及數據信息,速率一般在幾百kbps以上。目前3G存在四種標準:CDMA2000,WCDMA,TD-SCDMA,WiMAX。 所謂“3C產品”,就是計算機(Computer)、通信(Communication)和消費類電子產品(ConsumerElectronics)三者結合,亦稱“信息家電”。由于3C產品的體積一般都不大,所以往往在中間加一個“小”字,故往往統稱為“3C小家電”。 3C指的是計算機(Computer)、通訊(Communication)和消費類電子產品(Consumer Electrics)。3C融合即利用數字信息技術激活其中任何一個環節,通過某種協議使3C的三個方面實現信息資源的共享和互聯互通,從而滿足人們在任何時間、任何地點通過信息關聯應用來方便自己的生活。 無線寬帶正是實現數字家庭3C融合的首要步驟。
第一部分:選擇題 1.相同碼元速率下,那種傳輸方式信息傳輸速率最高 QPSK 16QAM BPSK GMSK 2.下面哪些屬于差錯控制編碼 3.自由空間傳播環境下信號衰減與距離( )次方成比例 4.下列哪些功能屬于網絡管理的功能域5a880faf6f?應屆生求職網YingJieSheng.COM?c350ade2a4 故障管理配置管理計費管理性能管理安全管理傳輸管理路由管理 5.采用CDMA技術通信系統,擾碼的主要作用 信道估計信道區分信號白化同步 6.交織的主要作用 7.數據鏈路層的協議是 HDLC ARQ PPP ICMP RTP6fe97759aa?應屆生求職網YingJieSheng.COM?b922cfa312 8.那種ATM協議最適合應用話音業務 AAL5 AAL4 AAL3 AAL2 第二部分:填空問答 1.香農公式表達式 2.愛爾蘭含義 最大話務量和BHCA分別取決于什么5568161a8c?應屆生求職網YingJieSheng.COM?d5792c152c 3.中繼器,網橋.路由器,網關各是兩個網絡的哪層連接;路由器的功能是( )和( ) 4.解釋QPSK調制的原理 5.簡述dB,dBm的概念 6.畫出數字通信系統的模型,簡述信源編碼和信道編碼的區別,及其它們在無線通信系統中的作用 7.C語言中能否在頭文件中定義變量,并說明原因 8.在Windows系統,能否動態鏈接庫中定義變量,如果可以定義說明有效范圍4005f8da13?應屆生求職網YingJieSheng.COM?60d149af1f 9.結構化程序設計中程序= 面向對象程序設計中程序= 10.解釋return和exit的區別 11.ATM網絡信元長度是( ),所有信息在最底層以( )的方式傳送,以保持電路交換適合于傳送實時性很強的業務特點. 12.什么是TDD,什么是FDD,多址方式又指什么?列出你所了解的多址方式 13.談談對OSI或計算機網絡中”協議””實體””服務”的理解以及什么是SDU PDU和Primitive?8f07f89ddb?應屆生求職網YingJieSheng.COM?4c20a920bf 14.GSM邏輯信道及分類 15.談談你對移動通信系統組成的理解.
1. 描述一下public,protected,private,final關鍵字在Java中的用法? public表示公共的,定義類的時候工程下任何包都可以讀取到,protected是受保護的,只有在相同包內的類才能讀取到,private定義方法時候只能在類內部才能讀取到。final表示一個終態,是不可改變的。 2. Abstract class 和Interface 有什么區別? 抽象類和接口的區別如下: (1、)抽象類是類,接口是接口; (2、)抽象類只能繼承一個,接口可以多實現; (3、)抽象類定義一些靜態變量可以,接口中不行; 3. Vector 和 ArrayList 有什么區別? HashTable 和 HashMap有什么區別? vector 和 Arraylist都是繼承自集合類collection,vector是鏈表的方式實現的,讀取熟讀快,添加數據時候慢,Arraylist里面添加數據慢讀取數據快。 Hashtable和HashMap最大的區別是HashTable是同步的,HashMap是非同步的,所以性能上相對快一點,HashTable是繼承自Dictionary類,而HashMap是繼承自Map接口 4. Java集合中的Iterator起什么作用? java集合中Iterator主要作用是去除重復; 5. Java中創建一個對象有哪幾種方法,區別是什么? java中創建對象可以實例化new 6. 多線程有幾種表示方法,都是什么?同步有幾種實現方法,都是什么? 多線程可以通過實現runable接口,也可以繼承Thread類來實現。 實現同步也有兩種,一種是用同步方法,一種是用同步塊.. 同步方法就是在方法返回類型后面加上synchronized, 比如: public void synchronized add(){...} 同步塊就是直接寫:synchronized (這里寫需要同步的對象){...} wait():使一個線程處于等待狀態,并且釋放所持有的對象的lock。 sleep():使一個正在運行的線程處于睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。 notify():喚醒一個處于等待狀態的線程,注意的是在調用此方法的時候,并不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先級。 Allnotity():喚醒所有處入等待狀態的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。 7. 描述一下Java中的異常機制,什么是Checked Exception, Unchecked Exception? java中的異常機制要求你對一些存在的問題進行實現的規劃,并對相應的Exception的情況進行設定,當程序捕獲類似的情況就會拋出異常,你可以定義異常的處理方法,異常并不是致命的,它與錯誤有著區別,錯誤只要發生程序就會終止,但是異常會繼續執行下去。 java中的異常包括受檢查的異常和不受檢查的異常,(1、)受檢查的異常:這種在編譯時候被強制檢查的異常被稱作受檢查異常,即在方法中聲明的異常。(2、)不受檢查的異常:在方法得聲明中沒有聲明,但在方法的運行過程中發生的各種異常叫做不受檢查的異常,這種異常是錯誤,會被自動捕獲。一些規模較小的程序中,受檢查的異常能夠提高開發效率,但隨著項目規模的擴大,過的的受檢查的異常變得難以管理,其帶來的好處也消失殆盡。 8. 描述一下Java ClassLoader 或者 J2EE ClassLoader的工作原理?(可以畫圖) 當運行程序是首先運行java虛擬機(JVM),然后把java class加載到JVM里運行,負責加載java class的這部分就叫做java ClsssLoader, JVM本身包含一個ClassLoader成為bootstrap ClassLoader,和JVM一樣,BootstrapClassLoader使用本地代碼實現的,它負責加載核心javaClass(即所有java.*開頭的類)。另外JVM還提供兩個ClassLoader,他們都是用java語言實現的,都是由BootstrapClassLoader負責加載,其中Extention ClassLoader負責加載擴展的javaclass(例如所有以javax.*開頭的類和存放在JRE的ext目錄下的類),ApplicationClassLoader負責加載應用程序自身的類。 當運行一個程序的時候,JVM啟動,運行Bootstrapclassloader,該classloader加載核心API(ExtClassloader和AppClassloader也在此時被加載),然后調用Extclassloader加載擴展API,最后AppClassloader加載CLASSPATH目錄下定義的Class,這就是一個程序最基本的加載流程。
9. MVC的各個部分都有那些技術來實現?如何實現? MVC主要包括模型層,視圖層,控制層。 模型層主要由javabean實現,視圖層是由jsp實現,控制層主要由servlet實現。 10. 描述一下Struts的工作方式? struts1.2的工作方式主要是MVC實現,struts2是攔截器的方式實現。 11. JSP中包含哪幾個內置對象? jsp包括九個內置對象,分別為:request,response,session,cookie,out,application,pageRequest,Exception, 12. JSP中兩種跳轉方式分別是什么?有什么區別? jsp兩種跳轉方式是重定向和頁面跳轉,其中重定向方式執行,form表單提交數據會失去,網絡地址會變化,頁面跳轉不會; 13. 描述一下JSP中taglib的用法? jsp中標簽可以使java代碼嵌入到頁面上使用 14. Javascript中如何校驗數字型? 正則表達式 15. EJB2.0中包括哪些內容? 作用分別是什么? EJB2.0 16. 一個SessionBean包含哪幾個組件?各個組件作用是什么? 17. 描述一下一個EJB應用中EJB部署文件,以及你所熟悉的App Server的部署文件的作用? 18. 列舉一下你所知道的設計模式(包括EJB,J2EE的設計模式),以及他們應用的場合? 代理模式:把一個對象注入到一個類中通過這個注入的對象來完成一系列方法, 工廠模式:一個接口下的所有類的實例可以通過專門的工廠類通過傳遞不同的參數來實現; Adapter(適配器)模式:將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。適配器模式的用意是將接口不同而功能相同或者相近的兩個接口加以轉換。 單例模式:單例模式有兩種: 餓漢模式 public class Singleton { private Singleton(); priavate static Singleton singleton = new Singleton(); public staic Singleton getInstance() { return instance; } } 懶漢模式: public class Singleton { private static Singleton singleton = new Singleton(); public static synchronize Singleton() { if(instance == null) { instance = new singleton(); } return instance; } } 19. 解析XML主要方法有哪些? 各有什么區別? 1、xml有哪些解析技術?區別是什么?
2、你在項目中用到了xml技術的哪些方面?如何實現的?
3、用jdom解析xml文件時如何解決中文問題?如何解析?
4、編程用JAVA解析XML的方式.
1、xml有哪些解析技術?區別是什么? 解析XMl方法主要方法有文件流讀取,頁面XMLHttp讀取。 DOM:處理大型文件時其性能下降的非常厲害。這個問題是由DOM的樹結構所造成的,這種結構占用的內存較多,而且dom必須在解析文件之前把整個文檔裝入內存 SAX:適合對XML文件的隨機訪問,不像DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個文件。 StAX:當遇到像文件開頭,文檔結束,或者標簽開頭與標簽結束時,它會觸發一個事件,用戶通過在其回調事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問STAX:Streaming API for XML (StAX) 2、主要用到了信息存儲信息配置兩方面,在做數據交換平臺時,將不能用數據源的數據組裝成xml文件,然后將xml文件壓縮打包加密后發給接收者,接受解密解壓縮后再同xml文件中還原相關信息進行處理。在做軟件配置時候,利用xml文件可以方便的進行,軟件的各種配置都存儲在xml文件中。 3、 20. 您了解Open Source的項目嗎? 如果了解請描述幾個,并講述一下他們的作用? apchetomcat就是一個比較好的開源項目,主要作為服務器來使用。 struts是一個主要用于作為控制層的開源框架項目, spring是一個輕量級的開源項目,通過控制反轉和代理模式實現 Hibernate是個持久層框架,用來建立與數據庫的持久層 21. 您看過哪些JAVA方面的書籍,能列舉一下嗎? think in java ,core java,jquery in action, struts,spring ,hibernate等等方面的書都有涉獵。
2012年8月23日
<%@ page pageEncoding="utf-8" %>
<%@ page language="java" contentType="text/html; charset=GBK" %><%@ page import="java.util.*" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="jxl.Workbook" %>
<%@ page import="jxl.write.WritableCellFormat" %>
<%@ page import="jxl.write.WritableSheet" %>
<%@ page import="jxl.write.WritableWorkbook" %>
<%@ page import="jxl.write.WriteException" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "filename=Member.xls");//attachment// WritableWorkbook是JexcelApi的一個類。
// 以下可以理解為創建一個excel文件,然后在excel里面創建一個表
OutputStream os = response.getOutputStream();//取得輸出流
WritableWorkbook workbook = Workbook.createWorkbook(os);
WritableSheet sheet = workbook.createSheet("First Sheet", 0);// 組織excel文件的內容
jxl.write.Label label = null;
int excelCol = 0;
int row = 0;
try {
label = new jxl.write.Label(excelCol++, row, "帳號");
sheet.addCell(label);
label = new jxl.write.Label(excelCol++, row, "姓名");
sheet.addCell(label);
label = new jxl.write.Label(excelCol++, row, "身份證");
sheet.addCell(label);
label = new jxl.write.Label(excelCol++, row, "聯系電話");
sheet.addCell(label);
label = new jxl.write.Label(excelCol++, row, "生日");
sheet.addCell(label);
label = new jxl.write.Label(excelCol++, row, "城市");
sheet.addCell(label);
label = new jxl.write.Label(excelCol++, row, "職業");
sheet.addCell(label);
label = new jxl.write.Label(excelCol++, row, "已購音箱型號");
sheet.addCell(label);
label = new jxl.write.Label(excelCol++, row, "試聽與否");
sheet.addCell(label);
label = new jxl.write.Label(excelCol++, row, "郵箱");
sheet.addCell(label);
label = new jxl.write.Label(excelCol, row, "注冊時間");
sheet.addCell(label);
//jxl.write.Number number = null;
jxl.write.DateTime dateTime;
jxl.write.DateFormat customDateFormat = new jxl.write.DateFormat("yyyy-MM-dd");//時間格式
WritableCellFormat dateFormat = new WritableCellFormat(customDateFormat); for(int i=0;i<10;i++){
excelCol = 0;
row = i + 1; SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
sheet.addCell(label); label = new jxl.write.Label(excelCol++, row, "100");
sheet.addCell(label); label = new jxl.write.Label(excelCol++, row, "100");
sheet.addCell(label); label = new jxl.write.Label(excelCol++, row, "100");
sheet.addCell(label); /*字串格式*/
try{
label = new jxl.write.Label(excelCol++, row, formatDate.format("100"));
sheet.addCell(label);
}catch (Exception e){
//Maybe somebody fogot to input his birthday ,I need do nothing here!
} label = new jxl.write.Label(excelCol++, row, "100");
sheet.addCell(label); label = new jxl.write.Label(excelCol++, row, "100");
sheet.addCell(label); label = new jxl.write.Label(excelCol++, row, "100");
sheet.addCell(label); label = new jxl.write.Label(excelCol++, row, "100");
sheet.addCell(label); label = new jxl.write.Label(excelCol++, row, "100");
sheet.addCell(label); /*時間格式*/
//label = new jxl.write.Label(excelCol, row, formatDate.format(rr.getCreateTime()));
//sheet.addCell(label);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
// 生成excel文件
workbook.write();
workbook.close();
os.close();
}
%>
2012年5月25日
網上的 Jquery ajax Demo 大多都是基于php 很少 有java的 今天就把自己的Demo貼出來 和大家共同學習 現在就 Jquery ajax 的 $.ajax(),$.post(),$.get();
首先是 服務端的Servlet 演示這三個函數的用法對都是用的同一個 服務端 Java代碼 package com.june.servlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; public class jqueryAjaxServer extends HttpServlet { public jqueryAjaxServer(){ super(); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException ,ServletException { response.setContentType("text/html;charset=utf-8"); PrintWriter out=response.getWriter(); String account=request.getParameter("account"); if("iamcrzay".equals(account)){ out.print("Sorry,the user is exist"); } else{ out.print("Congratulation,this accont you can use!!!!"); } out.close(); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException ,ServletException { this.doGet(request, response); } }
package com.june.servlet;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException;
public class jqueryAjaxServer extends HttpServlet { public jqueryAjaxServer(){ super(); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException ,ServletException { response.setContentType("text/html;charset=utf-8"); PrintWriter out=response.getWriter(); String account=request.getParameter("account"); if("iamcrzay".equals(account)){ out.print("Sorry,the user is exist"); } else{ out.print("Congratulation,this accont you can use!!!!"); } out.close(); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException ,ServletException { this.doGet(request, response); } }
下面是WEB.XML Xml代碼 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns=" xmlns:xsi=" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee <servlet> <servlet-name>jqueryAjaxServer</servlet-name> <servlet-class>com.june.servlet.jqueryAjaxServer</servlet-class> </servlet> <servlet-mapping> <servlet-name>jqueryAjaxServer</servlet-name> <url-pattern>/jqueryAjax</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns=" xmlns:xsi=" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee <servlet> <servlet-name>jqueryAjaxServer</servlet-name> <servlet-class>com.june.servlet.jqueryAjaxServer</servlet-class> </servlet> <servlet-mapping> <servlet-name>jqueryAjaxServer</servlet-name> <url-pattern>/jqueryAjax</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
下面是Jsp頁面 第一個是 jqueryAjax.jsp 本頁使用的是$.ajax() Html代碼 <%@ page language="java" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>jquery ajax</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script src="js/jquery-1.2.6.js" type="text/javascript"></script> <script language="javascript"> $(function(){ $('.sumbit').click(function(){ if($('#account').val().length==0){ $('.hint').text("用戶名不能位空").css({"background-color":"green"}); } else{ $.ajax({ url:'jqueryAjax', data:{account:$('#account').val()}, error:function(){ alert("error occured!!!"); }, success:function(data){ $('body').append("<div>"+data+"</div>").css("color","red"); } });} }); }); </script> </head> <body> <h3 align="center">jquery AjaX</h3> <hr> <label>請輸入用戶名 :</label> <input id="account" name="account" type="text"> <input class="sumbit" type="button" value="檢測"> <div class="hint"> </div> </body> </html>
<%@ page language="java" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>jquery ajax</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script src="js/jquery-1.2.6.js" type="text/javascript"></script> <script language="javascript"> $(function(){ $('.sumbit').click(function(){ if($('#account').val().length==0){ $('.hint').text("用戶名不能位空").css({"background-color":"green"}); } else{ $.ajax({ url:'jqueryAjax', data:{account:$('#account').val()}, error:function(){ alert("error occured!!!"); }, success:function(data){ $('body').append("<div>"+data+"</div>").css("color","red"); } });} }); }); </script> </head> <body> <h3 align="center">jquery AjaX</h3> <hr> <label>請輸入用戶名 :</label> <input id="account" name="account" type="text"> <input class="sumbit" type="button" value="檢測"> <div class="hint"> </div> </body> </html>
第二個用的是 $.post()
Html代碼 <%@ page language="java" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>jquery ajax</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script src="js/jquery-1.2.6.js" type="text/javascript"></script> <script language="javascript"> $(function(){ $('.sumbit').click( function(){ if($('#account').val().length==0){ $('.hint').text("The account is cant't be null").css({"color":"red","background-color":"yellow"}); } else{ $.post("jqueryAjax","account="+$('#account').val(),function(data){ $('.hint').text(data).css({"color":"red","background-color":"yellow"}); }) } }); }); </script> </head> <body> <h3 align="center">jquery Ajax</h3> <hr> <label>請輸入用戶名 :</label> <input id="account" name="account" type="text"> <input class="sumbit" type="button" value="檢測"> <div class="hint"> </div> </body> </html>
<%@ page language="java" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>jquery ajax</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script src="js/jquery-1.2.6.js" type="text/javascript"></script> <script language="javascript"> $(function(){ $('.sumbit').click( function(){ if($('#account').val().length==0){ $('.hint').text("The account is cant't be null").css({"color":"red","background-color":"yellow"}); } else{ $.post("jqueryAjax","account="+$('#account').val(),function(data){ $('.hint').text(data).css({"color":"red","background-color":"yellow"}); }) } }); }); </script> </head> <body> <h3 align="center">jquery Ajax</h3> <hr> <label>請輸入用戶名 :</label> <input id="account" name="account" type="text"> <input class="sumbit" type="button" value="檢測"> <div class="hint"> </div> </body> </html>
第三個是用的$.get()
Html代碼 <%@ page pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>jquery get</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script src="js/jquery-1.2.6.js" type="text/javascript"></script> <script type="text/javascript"> $(function(){ $('.sumbit').click(function(){ if($('#account').val().length==0){ $('.hint').html("用戶名不能位空!!!").css({"color":"#ffoo11","background":"blue"}); } else{ $.get("jqueryAjax","account="+$('#account').val(), function(data){ $('.hint').html(data).css({"color":"#ffoo11","background":"green"}); }); } }); }); </script> </head> <body> <h3 align="center">jquery AjaX</h3> <hr> <label>請輸入用戶名 :</label> <input id="account" name="account" type="text"> <input class="sumbit" type="button" value="檢測"> <div class="hint"> </div> </body> </html>
2012年3月14日
div#loadPic { width: 10%; height:40px; position:absolute; z-index:4; margin-top: 50px; margin-bottom: 50px; margin-left: auto; margin-right: auto; padding: 0px; top:30%; }
|