什么時候使用CallableStatement道川?用來準備CallableStatement的方法是什么部翘?
CallableStatement用來執(zhí)行存儲過程串稀。準備一個CallableStatement的方法是CallableStatement Connection.prepareCall()劫灶。
為什么要使用存儲過程?
存儲過程說白了就是一堆 SQL 的合并幕屹。中間加了點邏輯控制满葛。 但是存儲過程處理比較復雜的業(yè)務時比較實用昌罩。 比如說阱穗,一個復雜的數據操作怖糊。如果你在前臺處理的話帅容。可能會涉及到多次數據庫連接伍伤。但如果你用存儲過程的話。就只有一次遣钳。從響應時間上來說有優(yōu)勢扰魂。 也就是說存儲過程可以給我們帶來運行效率提高的好處。 另外蕴茴,程序容易出現(xiàn) BUG 數據量小的劝评,或者和錢沒關系的項目不用存儲過程也可以正常運作。mysql 的存儲過程還有待實際測試倦淀。如果是正式項目蒋畜,建議你用 sql server 或 oracle 的存儲過程。數據與數據之間打交道的話撞叽,過程會比程序來的快的多姻成。面試官問有沒有用存儲,實際上就是想知道前來面試的程序員到底做過數據量大的項目沒愿棋。如果是培訓出來的科展,或者小項目小公司出來的,對存儲肯定接觸的少了糠雨。 所以才睹,要想進大公司,沒有豐富存儲過程經驗甘邀,是不行的琅攘。 錯。存儲過程不僅僅適用于大型項目松邪,對于中小型項目坞琴,使用存儲過程也是非常有必要的。其威力和優(yōu)勢主要體現(xiàn)在: 1.存儲過程只在創(chuàng)造時進行編譯测摔,以后每次執(zhí)行存儲過程都不需再重新編譯置济,而一般 SQL 語句每執(zhí)行一次就編譯一次,所以使用存儲過程可提高數據庫執(zhí)行速度。 2.當對數據庫進行復雜操作時(如對多個表進行 Update,Insert,Query,Delete 時)锋八,可將此復雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用浙于。這些操作,如果用程序來完成挟纱,就變成了一條條的 SQL 語句羞酗,可能要多次連接數據庫。而換成存儲紊服,只需要連接一次數據庫就可以了檀轨。 3.存儲過程可以重復使用,可減少數據庫開發(fā)人員的工作量胸竞。 4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權〔翁眩 存儲過程的缺點 1:調試麻煩卫枝,但是用 PL/SQL Developer 調試很方便!彌補這個缺點讹挎。 2:移植問題校赤,數據庫端代碼當然是與數據庫相關的。但是如果是做工程型項目筒溃,基本不存在移植問題马篮。 3:重新編譯問題,因為后端代碼是運行前編譯的怜奖,如果帶有引用關系的對象發(fā)生改變時浑测,受影響的存儲過程、包將需要重新編譯(不過也可以設置成運行時刻自動編譯)歪玲。 4:如果在一個程序系統(tǒng)中大量的使用存儲過程迁央,到程序交付使用的時候隨著用戶需求的增加會導致數據結構的變化,接著就是系統(tǒng)的相關問題了读慎,最后如果用戶想維護該系統(tǒng)可以說是很難很難漱贱、而且代價是空前的。維護起來更加麻煩夭委!
什么是RMI?
Java RMI是Java API對遠程過程調用(RPC)提供的面向對象的等價形式幅狮,支持直接傳輸的序列化的Java對象和分布式垃圾回收。遠程方法調用可以看做是激活遠程正在運行的對象上的方法的步驟株灸。RMI對調用者是位置透明的崇摄,因為調用者感覺方法是執(zhí)行在本地運行的對象上的。
RMI體系結構的基本原則是什么慌烧?
行為定義和行為實現(xiàn)相分離的原則逐抑。
RMI體系結構分哪幾層?
存根與骨架層(stub and skeleton layer)
遠程引用層(remote reference layer):解析客戶端對服務端遠程對象的引用屹蚊。
傳輸層(Transport layer):這一層負責連接參與服務的兩個JVM.
RMI中的遠程接口(remote interface)扮演了什么樣的的角色厕氨?
java.rmi.naming類扮演什么樣的角色?
RMI的綁定(binding)是什么意思汹粤?
Naming類的bind()和rebind()方法有什么區(qū)別命斧?
什么是分布式垃圾回收(DGC),它是如何工作的?
解釋一下marshalling和unmarshalling
應用程序內存對象跨網絡傳輸到另一臺主機或者持久化到存儲的時候嘱兼,就必須把對象在內存里面的表示轉化成合適的格式国葬,這個過程就是marshalling,反之就是unmarshalling.
什么是SSI(服務端包含)?
一種簡單的解釋型服務端腳本語言。
什么是cookie汇四,session和cookie有什么區(qū)別接奈?
cookie是服務器給瀏覽器發(fā)送的一塊信息,瀏覽器會在本地文件中給每一個web服務器存儲cookie通孽,以后瀏覽器再給特定的web服務器發(fā)送請求時序宦,同時會發(fā)送為該服務器存儲的cookie。
session存儲在服務器端利虫,cookie存儲在瀏覽器客戶端挨厚。
session可以存儲任意類型的java對象,cookie只能存儲Sting類型的對象糠惫。
什么是HTTP隧道
利用HTTP或者HTTPS把多種網絡協(xié)議封裝起來進行通信的技術。
sendRedirect()和forward()方法有什么區(qū)別
forward是服務器內部跳轉钉疫,瀏覽器的地址欄不會發(fā)生變化硼讽,可以同時把request和response傳遞給后一個請求。sendRedirect是瀏覽器方面的跳轉牲阁,瀏覽器的地址欄會發(fā)生變化固阁,之前請求作用域范圍內的對象就失效了,因為產生了一個新的請求城菊。
什么是url編碼和url解碼
url編碼就是把url里面的空格或者特殊字符替換成對應的十六進制表示备燃,反之就是解碼。
面向對象軟件開發(fā)的優(yōu)點有哪些凌唬?
代碼開發(fā)模塊化并齐,更易維護和修改。
代碼復用
增強代碼的可靠性和靈活性
增加代碼的可理解性
面向對象有很多重要的特性客税,比如繼承况褪,封裝,多態(tài)和抽象更耻。
多態(tài)的定義
相同類型的引用變量测垛,調用同一個方法時呈現(xiàn)出多種不同的的行為特征。
java引用變量有兩種類型秧均,編譯時類型和運行時類型食侮,如果編譯時類型和運行時類型不一致就可能會出現(xiàn)多態(tài)。