如果調用notify,多個線程中只會有一個線程從休眠轉入阻塞狀態,這個線程會參與爭奪那個被synchronized的資源,而如果調用notifyAll,那麼所有休眠的線程都會轉入阻塞狀態去爭奪資源。
2. java事務代碼的書寫
Class.forName("com.mysql.jdbc.Driver");
try{
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbtest", "root", "root");
Statement stmt=con.createStatement();
System.out.println("開啓事務");
con.setAutoCommit(false); //關閉自動提交開啓事務
stmt.executeUpdate("insert into student values (’sw1’,’事務1’,’男’)");
stmt.executeUpdate("insert into student values (’sw2’,’事務2’,’女’)");
con.rollback();
stmt.executeUpdate("insert into student values (’sw3’,’事務3’,’男’)");
stmt.executeUpdate("insert into student values (’sw4’,’事務4’,’女’)");
con.commit(); //如果你不提交那麼本次操作不會對數據庫造成任何
System.out.println("事務提交");
}catch(SQLException e){
System.out.println("數據庫操作出現異常");
}
3.自己用java實現觀察者模式
可參考:http://www.cnblogs.com/mengdd/archive/2013/02/07/2908929.html
java中Observable、Observer使用方法可參考
http://blog.csdn.net/hfhwfw/article/details/38044381
4. java中的SHA的使用
try{
String msg = "hello world";
System.out.println("明文是:" + msg);
MessageDigest md5 = MessageDigest.getInstance("SHA");
byte[] srcBytes = msg.getBytes();
md5.update(srcBytes);
byte[] resultBytes=md5.digest();
String result = new String(resultBytes);
System.out.println("密文是:" + result);
String result1 = new String(Hex.encode(resultBytes));
System.out.println("16進制密文是:" + result1);
} catch(NoSuchAlgorithmException e){
e.printStackTrace();
}
5. 業務數據每天有2tb解決方案
6. 結構化數據庫與非結構化數據庫
在信息社會,信息可以劃分爲兩大類。一類信息能夠用數據或統一的結構加以表示,我們稱之爲結構化數據,如數字、符號;而另一類信息無法用數字或統一的結構表示,如文本、圖像、聲音、網頁等,我們稱之爲非結構化數據。結構化數據屬於非結構化數據,是非結構化數據的特例。
隨着網絡技術的發展,特別是Internet和Intranet技術的飛快發展,使得非結構化數據的數量日趨增大。這時,主要用於管理結構化數據的關係數據庫的侷限性暴露地越來越明顯。因而,數據庫技術相應地進入了“後關係數據庫時代”,發展進入基於網絡應用的非結構化數據庫時代。所謂非結構化數據庫,是指數據庫的變長紀錄由若干不可重複和可重複的字段組成,而每個字段又可由若干不可重複和可重複的子字段組成。簡單地說,非結構化數據庫就是字段可變的數據庫。