A. java持久化對象時需要注意什麼
你問的這個問題范圍有點大,簡單寫幾條供你參考。
①資料庫的選擇,依據數據量大小、熟悉程度、成本等因素選定資料庫,一旦選擇並開發了,很難變更了。
②送擇合適的持久層開發框架,如ibatis、spring等,這些框架各有優缺點。
③具體實現時,則要注意注入漏洞,操作返回值讓用戶知道等。
B. java持久化類為什麼要實現序列化
序列化可以將一個復雜的對象轉化為一維的數據,而這為持久化提供了很大的方便,因為文件就是一維的,將一維的東西寫入文件自然比較方便。
不過持久化是個很寬泛的概念,可以是寫入文件,也可以是存入資料庫,寫入注冊表等多種方式。其本意是延長對象或數據的生命周期,讓其可以超越程序的生命周期,程序關閉了,甚至伺服器關機了,下次運行程序時又可以讓對象或數據恢復到原來的狀態。
而序列化也不一定是用來持久化的,可以是用來傳遞使用,如從計算機A傳遞到計算機B;也可以用來進行深拷貝;總之序列化主要解決從復雜的數據結構轉化為一維結構,或者從一維結構從新構建復雜的數據結構。
C. 請問JAVA三層架構,持久層,業務層,表現層,都該怎麼理解和MVC三層模型有什麼
這個嘛,有一定的聯系啦,也並不是完全是一樣的啦,你首先把mvc理解清楚吧,M是MODEL(模型),V是view(視圖), C是Controller(控制器),而java三層架構,持久層即是數據的持久化操作,就是數據層啦,即是資料庫啦,業務層主要是業務邏輯的處理,負責表示層與數據層(持久層)的數據的傳遞和邏輯處理,就當很接近控制器的功能啦,就可以理解為控制器啦,表示層即是對數據的展示與用戶的輸入,所以呢?就是視圖層啦 1. 用戶看到view2. view ——————————》 controller用戶操作(點擊按鈕等)3. controller——————》model調用model中方法3. model ——————》 controller返回數據到controller5. controller——————————》 view傳數據到view,更新view6.用戶看到更新後的view M——模型層,V——視圖層,C——控制層,持久層——通常用於封裝資料庫連接、數據查詢等操作,
D. java消息隊列是怎麼實現數據持久化的
java中的消息隊列消息隊列是線程間通訊的手段:import java.util.*public class MsgQueue{ private Vector queue = null; public MsgQueue(){ queue = new Vector(); } public synchronized void send(Object o) { queue.addElement(o); } public synchronized Object recv(){ if(queue.size()==0) return null; Object o = queue.firstElement(); queue.removeElementAt(0);//or queue[0] = null can also work return o;}}因為java中是locked by object的所以添加synchronized 就可以用於線程同步鎖定對象可以作為多線程處理多任務的存放task的隊列。他的client包括封裝好的task類以及thread類Java的多線程-線程間的通信2009-08-25 21:581. 線程的幾種狀態線程有四種狀態,任何一個線程肯定處於這四種狀態中的一種:1) 產生(New):線程對象已經產生,但尚未被啟動,所以無法執行。如通過new產生了一個線程對象後沒對它調用start()函數之前。2) 可執行(Runnable):每個支持多線程的系統都有一個排程器,排程器會從線程池中選擇一個線程並啟動它。當一個線程處於可執行狀態時,表示它可能正處於線程池中等待排排程器啟動它;也可能它已正在執行。如執行了一個線程對象的start()方法後,線程就處於可執行狀態,但顯而易見的是此時線程不一定正在執行中。3) 死亡(Dead):當一個線程正常結束,它便處於死亡狀態。如一個線程的run()函數執行完畢後線程就進入死亡狀態。4) 停滯(Blocked):當一個線程處於停滯狀態時,系統排程器就會忽略它,不對它進行排程。當處於停滯狀態的線程重新回到可執行狀態時,它有可能重新執行。如通過對一個線程調用wait()函數後,線程就進入停滯狀態,只有當兩次對該線程調用notify或notifyAll後它才能兩次回到可執行狀態。2. classThread下的常用函數函數2.1 suspend()、resume()1) 通過suspend()函數,可使線程進入停滯狀態。通過suspend()使線程進入停滯狀態後,除非收到resume()消息,否則該線程不會變回可執行狀態。2) 當調用suspend()函數後,線程不會釋放它的「鎖標志」。例11:class TestThreadMethod extends Thread{public static int shareVar = 0;public TestThreadMethod(String name){super(name);}public synchronized void run(){if(shareVar==0){for(int i=0; i<5; i ){shareVar ;if(shareVar==5){this.suspend();//(1)}}}else{System.out.print(Thread.currentThread()