<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    巷尾的酒吧

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      64 Posts :: 0 Stories :: 5 Comments :: 0 Trackbacks

    2014年5月22日 #

    返回上次訪問目錄,在命令行輸入:
    cd -
    posted @ 2014-05-22 16:21 abing 閱讀(212) | 評(píng)論 (0)編輯 收藏

    2013年12月20日 #

    一、Java基礎(chǔ)知識(shí)
    1.Java有那些基本數(shù)據(jù)類型,String是不是基本數(shù)據(jù)類型,他們有何區(qū)別。
    2.字符串的操作:
      寫一個(gè)方法,實(shí)現(xiàn)字符串的反轉(zhuǎn),如:輸入abc,輸出cba
      寫一個(gè)方法,實(shí)現(xiàn)字符串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。
    3.數(shù)據(jù)類型之間的轉(zhuǎn)換
      如何將數(shù)值型字符轉(zhuǎn)換為數(shù)字(Integer,Double)
      如何將數(shù)字轉(zhuǎn)換為字符
      如何取小數(shù)點(diǎn)前兩位,并四舍五入。
    4.日期和時(shí)間
      如何取得年月日,小時(shí)分秒
      如何取得從1970年到現(xiàn)在的毫秒數(shù)
      如何獲取某個(gè)日期是當(dāng)月的最后一天
      如何格式化日期
    5.數(shù)組和集合
    6.文件和目錄(I/O)操作
      如何列出某個(gè)目錄下的所有文件
      如何列出某個(gè)目錄下的所有子目錄
      判斷一個(gè)文件或目錄是否存在
      如何讀寫文件
    7.Java多態(tài)的實(shí)現(xiàn)(繼承、重載、覆蓋)
    8.編碼轉(zhuǎn)換,怎樣實(shí)現(xiàn)將GB2312編碼的字符串轉(zhuǎn)換為ISO-8859-1編碼的字符串。
    9.Java中訪問數(shù)據(jù)庫(kù)的步驟,Statement和PreparedStatement之間的區(qū)別。
    10.找出下列代碼可能存在的錯(cuò)誤,并說明原因:



    一、問答題

    1、面向?qū)ο蟮奶卣饔心男┓矫妫?/span>
    2、abstract class和interface有什么區(qū)別?
    3、short s1 = 1; s1 = s1 + 1;有什么錯(cuò)? short s1 = 1; s1 += 1;有什么錯(cuò)?
    4、JSP的內(nèi)置對(duì)象有哪些?
    5、MVC模式的工作原理?
    6、HashMap和Hashtable的區(qū)別?
    7、String 和StringBuffer的區(qū)別?
    8、說出Servlet的生命周期,并說出Servlet和CGI的區(qū)別
    9、簡(jiǎn)述SSH概念及原理?
    10、概述存儲(chǔ)過程的優(yōu)點(diǎn)和缺點(diǎn)及怎么優(yōu)化存儲(chǔ)過程?
    二、查錯(cuò)題
    1、abstract class Name {
    private String name;
    public abstract boolean isStupidName(String name) {}
    }
    2、public class Something {
    void doSomething () {
    private String s = “”;
    int l = s.length();
    }}
    3.、abstract class Something {
    private abstract String doSomething ();
    }
    4、public class Something {
    public int addOne(final int x) {
    return ++x;
    } }

    5、public class Something {
    public static void main(String[] args) {
    Something s = new Something();
    System.out.println(“s.doSomething() returns ” +doSomething());
    }

    public String doSomething() {
    return “Do something …”;
    }
    }
    三、設(shè)計(jì)題
    1、設(shè)計(jì)4個(gè)線程,其中兩個(gè)線程每次對(duì)j增加1,另外兩個(gè)線程對(duì)j每次減少1。寫出程序
    2、現(xiàn)在輸入n個(gè)數(shù)字,以逗號(hào),分開;然后可選擇升或者降序排序;按提交鍵就在另一頁面顯示按什么排序,結(jié)果為,提供reset
    四、編程題
    1、寫一個(gè)Singleton出來
    2、字符串的操作:
    寫一個(gè)方法,實(shí)現(xiàn)字符串的反轉(zhuǎn),如:輸入abc,輸出cba
    寫一個(gè)方法,實(shí)現(xiàn)字符串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。
    五、邏輯思維分析題
    1、一個(gè)小偷被警察發(fā)現(xiàn)。警察就追小偷,小偷就跑,跑著跑著,前面出現(xiàn)一條河,這河寬12米,河在小偷和警察這面有棵樹,樹高12米,書上葉子都光了。小偷圍著個(gè)圍脖長(zhǎng)6米,請(qǐng)問小偷如何過河跑?
    2、燒一根不均勻的繩子要用一個(gè)小時(shí),如何用它來判斷半個(gè)小時(shí)?燒一根不均勻的繩,從頭燒到尾總共要一個(gè)小時(shí),現(xiàn)在有若干條材質(zhì)相同的繩子,問如何用燒繩子的方法計(jì)時(shí)一個(gè)小時(shí)十五分鐘呢?
    六、綜合題
    1、請(qǐng)用不超過30個(gè)字給出一個(gè)最能讓我們錄用你的理由
    2、如果我們錄用你,你將怎樣去開展工作
    3、當(dāng)你與上級(jí)意見不一致的時(shí),你將怎么辦
    4、你對(duì)于開發(fā)這一職位加班有什么看法









    posted @ 2013-12-20 14:35 abing 閱讀(189) | 評(píng)論 (0)編輯 收藏

    2013年11月25日 #

    二叉樹算法資料收集:
    http://blog.sina.com.cn/s/blog_ba46b52b0101i6mj.html

    http://blog.sina.com.cn/s/blog_70600f720100ujnp.html

    http://blog.csdn.net/kiritor/article/details/8892648 
     
    http://iask.sina.com.cn/b/9950186.html
    http://blog.csdn.net/kangojian/article/details/3990212

    http://blog.csdn.net/kangojian/article/details/3990206

    http://wenwen.soso.com/z/q69052983.htm
    http://justsee.iteye.com/blog/1097176


    平衡二叉樹:
    http://blog.csdn.net/zxman660/article/details/7940190



    二叉樹的深度:
    http://blog.163.com/xiaopengyan_109/blog/static/14983217320108168618624/


    二叉樹刪除:
    http://www.cnblogs.com/xunmengyoufeng/archive/2012/10/01/BityTree.html
    http://marcospring.iteye.com/blog/1623571
    http://www.cnblogs.com/KeenLeung/archive/2012/11/03/2750545.html


    二叉樹查找節(jié)點(diǎn):
    http://www.cnblogs.com/KeenLeung/archive/2012/11/03/2750545.html
















    posted @ 2013-11-25 21:28 abing 閱讀(198) | 評(píng)論 (0)編輯 收藏

    2013年11月9日 #

    原文地址:http://apmblog.compuware.com/2011/05/11/how-garbage-collection-differs-in-the-three-big-jvms/

    ========================================================================================

     

    Hotspot JVM使用和 IBM Websphere OracleWeblogic不同的垃圾回收機(jī)制,但是垃圾回收的概念和算法是相通的。

     

    HotSpotJVM

     

    1HotSpotJVM使用內(nèi)存分區(qū)(如永久perm區(qū)和分代Generation Heap區(qū)),分代區(qū)(Generation Heap區(qū))又包括新生Yong區(qū)老生Old/Tenured區(qū),Yong區(qū)中又分為Eden區(qū) Survior區(qū)(2塊);


    2Yong區(qū) GC:對(duì)象先在Yong區(qū)的Eden中得到分配,任何時(shí)候Eden區(qū)滿了就會(huì)觸發(fā)Yong區(qū)GC (Minor GC?),會(huì)把Yong區(qū)Eden中仍存活的Live對(duì)象拷貝到空的那個(gè)Survior區(qū),除此之外,另外一個(gè)Survior區(qū)中的對(duì)象也會(huì)被檢查和拷貝(在2個(gè)Survior區(qū)之間拷貝對(duì)象的頻率是可配置的),其結(jié)果就是對(duì)象僅存在于一個(gè)Survior區(qū)中,而Eden區(qū)和另一塊Survior區(qū)是空的。這種形式的GC叫“拷貝收集(Copy Collection)”。Yong區(qū)中多次GC后仍存活的對(duì)象會(huì)被提升/拷貝到Old區(qū)。

     

    3 Old區(qū) GC:標(biāo)記和打掃(Mark & Sweep)算法是老生區(qū)(OldHeap)使用的GC算法,與新生代Yong區(qū)算法不同的地方在于它不拷貝對(duì)象。對(duì)象越多GC消耗時(shí)間越長(zhǎng),因此老生區(qū)GC代價(jià)很高并盡量避免,因此我們需要保證對(duì)象僅僅從Yong區(qū)拷貝到Old區(qū)并保證Old區(qū)不被填滿,因此,代區(qū)的大小是Hotspot JVM中單一的一個(gè)最重要的優(yōu)化參數(shù)。如果我們不能阻止對(duì)象從Yong區(qū)拷貝到Old區(qū),我們可以使用“并發(fā)標(biāo)記和打掃算法”(CMS -Concurrent Mark and Sweep),此算法可以并行的進(jìn)行收集操作。(停頓時(shí)間:串行(Serial) <平行(Parallel) <并發(fā)(Concurrent))。

     

    Old區(qū)GC還有其他問題,比如“碎片問題”會(huì)導(dǎo)致“慢分配”,更長(zhǎng)的打掃時(shí)間并最終會(huì)導(dǎo)致OOM(當(dāng)分配大對(duì)象而遇到的全是小空間時(shí)).

     

    碎片問題可通過被稱為“壓縮”的方法來解決。“串行和平行算法(Serialand Parallel)”會(huì)在每次Old區(qū)進(jìn)行GC時(shí)進(jìn)行壓縮,它不對(duì)整個(gè)Old區(qū)壓縮而只對(duì)Old區(qū)中碎片程度達(dá)到一定Level的區(qū)域區(qū)進(jìn)行。相比之下,“并發(fā)標(biāo)記和打掃算法CMS”根本就不會(huì)進(jìn)行壓縮。當(dāng)對(duì)象不能再被分配時(shí),一個(gè)串行的“主要MajorGC”會(huì)被觸發(fā)。

     

    因此,HotSpot 的第二個(gè)調(diào)整參數(shù)是選擇正確的GC策略,GC策略的選擇會(huì)影響應(yīng)用的性能,HotSpot中的大部分GC策略調(diào)整選項(xiàng)參數(shù)是是關(guān)于分片和壓縮的, HotspotJVM沒有提供太多調(diào)整參數(shù),因此,唯一的方法是優(yōu)化代碼減少申請(qǐng)對(duì)象的次數(shù)。

     

    4) Permanent Generation 永久區(qū):保存屬于類的(靜態(tài)的)屬性和字符串常量等,永久區(qū)的GC只會(huì)發(fā)生在“主要Major GC”時(shí)(Major GC很少發(fā)生),因此很多人認(rèn)為Hotspot JVM在永久區(qū)根本不會(huì)GC

     

    Major GC - Stops the world andcost much time, e.g. Full GC.

     

    OracleJRockit

     

    1) Oracle WebLogic使用的JVM,將來會(huì)和Hotspot合并

     

    2) Heap策略 -也使用“分代Heap”,而且支持一個(gè)所謂的“連續(xù)Heap”。分代Heap分為:老生區(qū)(Old/Tenured)和苗圃/新生區(qū)(Nursery),當(dāng)對(duì)象被申請(qǐng)時(shí),他們被放在一個(gè)新生區(qū)中稱為Keep Area的地方,GC時(shí),Keep Area不會(huì)被考慮而其它仍然存活的對(duì)象會(huì)被馬上移到老生區(qū)。因此,新生區(qū)的大小是JRockit很重要的參數(shù)。JRockit在第二次新生代GC時(shí)就會(huì)拷貝那些對(duì)象到Old區(qū)。

     

    JRockit的“連續(xù)Heap”不區(qū)分“新”和“老”的對(duì)象,常常在特定的情況下比如以大吞吐量下的批量任務(wù)會(huì)產(chǎn)生很好的性能,它是JRockit Server JVM模式下的默認(rèn)設(shè)置,而且往往不是正確的選擇,因?yàn)榈湫偷?/span>Web應(yīng)用不是面向吞吐量而是面向響應(yīng)時(shí)間,因此人們往往會(huì)選擇低停頓時(shí)間模式和分代GC策略。

     

    3) CMS -

    大部分的CMS標(biāo)記階段可分為4個(gè)部分

        1. 初始標(biāo)記 -標(biāo)記生成Live對(duì)象的Root集合 - Java Thread會(huì)被paused

        2 并發(fā)標(biāo)記 -根據(jù)root集合中的對(duì)象查找并標(biāo)記其引用的Live對(duì)象 -- Java Thread正常運(yùn)行

        3 預(yù)清理 -找出“并發(fā)標(biāo)記”發(fā)現(xiàn)的需要修改的地方并發(fā)現(xiàn)和標(biāo)記其它額外的Live對(duì)象-- Java Thread正常運(yùn)行
        4 
    最終標(biāo)記-找出在預(yù)清理階段發(fā)現(xiàn)的需要改變的地方并發(fā)現(xiàn)和標(biāo)記其它額外的Live對(duì)象 -- Java Thread會(huì)被Paused

     

    CMS 打掃階段也和 Application并發(fā)執(zhí)行,  但和Hotspot JVM的分2個(gè)階段相比,JRockit會(huì)先清掃Heap的第一半部分,在此階段,線程會(huì)被允許在Heap的第二半部分進(jìn)行對(duì)象申請(qǐng)。在一個(gè)短暫的同步停頓后,會(huì)打掃第二半部分然后會(huì)有一個(gè)短暫的最后的停頓期。

    因此,JRockit的算法比HotSpot的算法停頓更多,但是標(biāo)記階段會(huì)短一些。而且它不像HotSpot JVM那樣可以通過調(diào)整未用內(nèi)存的百分比來觸發(fā)GC

     

    4) 壓縮

    JRockit 在所有的Old老生區(qū)GC進(jìn)行壓縮,包括CMS它通過一種按Heap中分區(qū)增量的模式進(jìn)行的,這些各類參數(shù)可以調(diào)整,比如按堆百分比壓縮,或最大多少對(duì)象會(huì)被壓縮,而且你可以完全把壓縮關(guān)掉或者在GC時(shí)進(jìn)行“完全壓縮”。因此可配置性比HotSpot更強(qiáng)。

     

    5) 線程本地分配TLAThread Local Allocation)

    JRockit默認(rèn)使用線程本地分配TLA,這允許線程不需要同步即可分配對(duì)象,這將有利于分配速度,TLA的大小而且可以配置,大的TLA可以優(yōu)化使用大量線程本地分配對(duì)象的應(yīng)用,另一方面,太大的TLA會(huì)導(dǎo)致更多的碎片,因?yàn)?/span>TLA是被線程以排斥的方式獨(dú)有的,因此受限于線程數(shù)并依賴于應(yīng)用的架構(gòu)。

     

    6) 大對(duì)象和小對(duì)象

    JRockit在分配大對(duì)象和小對(duì)象時(shí)區(qū)別對(duì)待,大小的定義在JVM的版本不同而不同,常常2-128Kb之間,大對(duì)象在線程本地意外的Old區(qū)分配,而新生Yong區(qū)使用“拷貝收集-Copy Collection (見Hotspot Yong區(qū)GC)”,在某些點(diǎn),拷貝一個(gè)對(duì)象變得比它被GC更消耗。

     

    7) 沒有永久區(qū) -- JRockit JVM沒有永久區(qū)所有類的屬性和字符串常量放在通常的Heap區(qū)域,因此如果它不再被使用,會(huì)被馬上回收。

     

    IBM JVM

     

    IBM JVM IBMWebsphere使用,它和JRockit有很多相同地方,它默認(rèn)的使用一個(gè)“連續(xù)的Heap”,特別是在Websphere安裝過程中,這往往是導(dǎo)致最初的低性能的原因。它和JRockit一樣區(qū)分大小對(duì)象,并默認(rèn)使用線程本地分配TLA它也沒有“永久區(qū)”,但是IBM JVM也支持分代模型并且看起來更像HotSpot JVM比如它的分代模型包括“新生區(qū)”“老生區(qū)”,新生區(qū)又分為“分配區(qū)(Allocate)”Survior區(qū)”,新對(duì)象在Allocate區(qū)分配并在GC時(shí)拷貝到Survior區(qū),這意味著一個(gè)對(duì)象在被移動(dòng)到Old區(qū)時(shí)會(huì)被在2個(gè)區(qū)之間多次拷貝.JRockit一樣,IBM JVM有多個(gè)選項(xiàng)可以配置“壓縮”階段,可以配置為“關(guān)閉”或“每次GC都進(jìn)行壓縮”,JRockit相比,默認(rèn)的觸發(fā)條件是由于一系列的觸發(fā)而不是導(dǎo)致“完全”壓縮,而且這個(gè)可以被配置選項(xiàng)更改。

     

     

    Java 7會(huì)宣稱“G1 - Production Ready,而且G1是不同的。

    posted @ 2013-11-09 11:32 abing 閱讀(5498) | 評(píng)論 (0)編輯 收藏

    2013年9月8日 #

    數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)的ACID原則是什么啊??
    事務(wù)的原子性、一致性、獨(dú)立性及持久性
    事務(wù)的原子性是指一個(gè)事務(wù)要么全部執(zhí)行,要么不執(zhí)行.也就是說一個(gè)事務(wù)不可能只執(zhí)行了一半就停止了.比如你從取款機(jī)取錢,這個(gè)事務(wù)可以分成兩個(gè)步驟:1劃卡,2出錢.不可能劃了卡,而錢卻沒出來.這兩步必須同時(shí)完成.要么就不完成.
    事務(wù)的一致性是指事務(wù)的運(yùn)行并不改變數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致性.例如,完整性約束了a+b=10,一個(gè)事務(wù)改變了a,那么b也應(yīng)該隨之改變.
    事務(wù)的獨(dú)立性是指兩個(gè)以上的事務(wù)不會(huì)出現(xiàn)交錯(cuò)執(zhí)行的狀態(tài).因?yàn)檫@樣可能會(huì)導(dǎo)致數(shù)據(jù)不一致.
    事務(wù)的持久性是指事務(wù)運(yùn)行成功以后,就系統(tǒng)的更新是永久的.不會(huì)無緣無故的回滾.

    spring事務(wù)傳播屬性和隔離級(jí)別
    1 事務(wù)的傳播屬性(Propagation) 

    1) REQUIRED ,這個(gè)是默認(rèn)的屬性 
    Support a current transaction, create a new one if none exists. 
    如果存在一個(gè)事務(wù),則支持當(dāng)前事務(wù)。如果沒有事務(wù)則開啟一個(gè)新的事務(wù)。 
    被設(shè)置成這個(gè)級(jí)別時(shí),會(huì)為每一個(gè)被調(diào)用的方法創(chuàng)建一個(gè)邏輯事務(wù)域。如果前面的方法已經(jīng)創(chuàng)建了事務(wù),那么后面的方法支持當(dāng)前的事務(wù),如果當(dāng)前沒有事務(wù)會(huì)重新建立事務(wù)。 
    如圖所示: 

    2) MANDATORY 
    Support a current transaction, throw an exception if none exists.支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就拋出異常。 

    3) NEVER 
    Execute non-transactionally, throw an exception if a transaction exists. 
    以非事務(wù)方式執(zhí)行,如果當(dāng)前存在事務(wù),則拋出異常。 

    4) NOT_SUPPORTED 
    Execute non-transactionally, suspend the current transaction if one exists. 
    以非事務(wù)方式執(zhí)行操作,如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起。 

    5) REQUIRES_NEW 
    Create a new transaction, suspend the current transaction if one exists. 
    新建事務(wù),如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起。 
    如圖所示: 

    6) SUPPORTS 
    Support a current transaction, execute non-transactionally if none exists. 
    支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就以非事務(wù)方式執(zhí)行。 

    7) NESTED 
    Execute within a nested transaction if a current transaction exists, behave like PROPAGATION_REQUIRED else. 
    支持當(dāng)前事務(wù),新增Savepoint點(diǎn),與當(dāng)前事務(wù)同步提交或回滾。 
    嵌套事務(wù)一個(gè)非常重要的概念就是內(nèi)層事務(wù)依賴于外層事務(wù)。外層事務(wù)失敗時(shí),會(huì)回滾內(nèi)層事務(wù)所做的動(dòng)作。而內(nèi)層事務(wù)操作失敗并不會(huì)引起外層事務(wù)的回滾。 

    8) PROPAGATION_NESTED 與PROPAGATION_REQUIRES_NEW的區(qū)別 
    它們非常 類似,都像一個(gè)嵌套事務(wù),如果不存在一個(gè)活動(dòng)的事務(wù),都會(huì)開啟一個(gè)新的事務(wù)。使用PROPAGATION_REQUIRES_NEW時(shí),內(nèi)層事務(wù)與外層事務(wù)就像兩個(gè)獨(dú)立的事務(wù)一樣,一旦內(nèi)層事務(wù)進(jìn)行了提交后,外層事務(wù)不能對(duì)其進(jìn)行回滾。兩個(gè)事務(wù)互不影響。兩個(gè)事務(wù)不是一個(gè)真正的嵌套事務(wù)。同時(shí)它需要JTA 事務(wù)管理器的支持。 
    使用PROPAGATION_NESTED時(shí),外層事務(wù)的回滾可以引起內(nèi)層事務(wù)的回滾。而內(nèi)層事務(wù)的異常并不會(huì)導(dǎo)致外層事務(wù)的回滾,它是一個(gè)真正的嵌套事務(wù)。 

    2 事務(wù)的隔離級(jí)別(Isolation Level) 

    1) 首先說明一下事務(wù)并發(fā)引起的三種情況 

    i. Dirty Reads 臟讀 
    一個(gè)事務(wù)正在對(duì)數(shù)據(jù)進(jìn)行更新操作,但是更新還未提交,另一個(gè)事務(wù)這時(shí)也來操作這組數(shù)據(jù),并且讀取了前一個(gè)事務(wù)還未提交的數(shù)據(jù),而前一個(gè)事務(wù)如果操作失敗進(jìn)行了回滾,后一個(gè)事務(wù)讀取的就是錯(cuò)誤數(shù)據(jù),這樣就造成了臟讀。

    ii. Non-Repeatable Reads 不可重復(fù)讀 
    一個(gè)事務(wù)多次讀取同一數(shù)據(jù),在該事務(wù)還未結(jié)束時(shí),另一個(gè)事務(wù)也對(duì)該數(shù)據(jù)進(jìn)行了操作,而且在第一個(gè)事務(wù)兩次次讀取之間,第二個(gè)事務(wù)對(duì)數(shù)據(jù)進(jìn)行了更新,那么第一個(gè)事務(wù)前后兩次讀取到的數(shù)據(jù)是不同的,這樣就造成了不可重復(fù)讀。

    iii. Phantom Reads 幻像讀 
    第一個(gè)數(shù)據(jù)正在查詢符合某一條件的數(shù)據(jù),這時(shí),另一個(gè)事務(wù)又插入了一條符合條件的數(shù)據(jù),第一個(gè)事務(wù)在第二次查詢符合同一條件的數(shù)據(jù)時(shí),發(fā)現(xiàn)多了一條前一次查詢時(shí)沒有的數(shù)據(jù),仿佛幻覺一樣,這就是幻像讀。

    iv. 非重復(fù)度和幻像讀的區(qū)別 
    非重復(fù)讀是指同一查詢?cè)谕皇聞?wù)中多次進(jìn)行,由于其他提交事務(wù)所做的修改或刪除,每次返回不同的結(jié)果集,此時(shí)發(fā)生非重復(fù)讀。(A transaction rereads data it has previously read and finds that another committed transaction has modified or deleted the data. )

    幻像讀是指同一查詢?cè)谕皇聞?wù)中多次進(jìn)行,由于其他提交事務(wù)所做的插入操作,每次返回不同的結(jié)果集,此時(shí)發(fā)生幻像讀。(A transaction reexecutes a query returning a set of rows that satisfies a search condition and finds that another committed transaction has inserted additional rows that satisfy the condition. )

    表面上看,區(qū)別就在于非重復(fù)讀能看見其他事務(wù)提交的修改和刪除,而幻像能看見其他事務(wù)提交的插入。 

    2) DEFAULT (默認(rèn)) 
    這是一個(gè)PlatfromTransactionManager默認(rèn)的隔離級(jí)別,使用數(shù)據(jù)庫(kù)默認(rèn)的事務(wù)隔離級(jí)別.另外四個(gè)與JDBC的隔離級(jí)別相對(duì)應(yīng) 

    3) READ_UNCOMMITTED (讀未提交) 
    這是事務(wù)最低的隔離級(jí)別,它允許另外一個(gè)事務(wù)可以看到這個(gè)事務(wù)未提交的數(shù)據(jù)。這種隔離級(jí)別會(huì)產(chǎn)生臟讀,不可重復(fù)讀和幻像讀。 

    4) READ_COMMITTED (讀已提交) 
    保證一個(gè)事務(wù)修改的數(shù)據(jù)提交后才能被另外一個(gè)事務(wù)讀取。另外一個(gè)事務(wù)不能讀取該事務(wù)未提交的數(shù)據(jù)。這種事務(wù)隔離級(jí)別可以避免臟讀出現(xiàn),但是可能會(huì)出現(xiàn)不可重復(fù)讀和幻像讀。 

    5) REPEATABLE_READ (可重復(fù)讀) 
    這種事務(wù)隔離級(jí)別可以防止臟讀,不可重復(fù)讀。但是可能出現(xiàn)幻像讀。它除了保證一個(gè)事務(wù)不能讀取另一個(gè)事務(wù)未提交的數(shù)據(jù)外,還保證了不可重復(fù)讀 

    6) SERIALIZABLE(串行化) 
    這是花費(fèi)最高代價(jià)但是最可靠的事務(wù)隔離級(jí)別。事務(wù)被處理為順序執(zhí)行。除了防止臟讀,不可重復(fù)讀外,還避免了幻像讀。 

    7) 隔離級(jí)別解決事務(wù)并行引起的問題 
    Dirty reads non-repeatable reads phantom reads 
    Serializable 不會(huì) 不會(huì) 不會(huì) 
    REPEATABLE READ 不會(huì) 不會(huì) 會(huì) 
    READ COMMITTED 不會(huì) 會(huì) 會(huì) 
    Read Uncommitted 會(huì) 會(huì) 會(huì)





    事務(wù)的隔離級(jí)別

    注:Spring中事務(wù)的隔離級(jí)別是由數(shù)據(jù)庫(kù)實(shí)現(xiàn)的


    ISOLATION_DEFAULT
        這是一個(gè)PlatfromTransactionManager默認(rèn)的隔離級(jí)別,使用數(shù)據(jù)庫(kù)默認(rèn)的事務(wù)隔離級(jí)別.另外四個(gè)與JDBC的隔離級(jí)別相對(duì)應(yīng)
    ISOLATION_READ_UNCOMMITTED 這是事務(wù)最低的隔離級(jí)別,它充許別外一個(gè)事務(wù)可以看到這個(gè)事務(wù)未提交的數(shù)據(jù)。這種隔離級(jí)別會(huì)產(chǎn)生臟讀,不可重復(fù)讀和幻像讀

    ISOLATION_READ_COMMITTED
        保證一個(gè)事務(wù)修改的數(shù)據(jù)提交后才能被另外一個(gè)事務(wù)讀取。另外一個(gè)事務(wù)不能讀取該事務(wù)未提交的數(shù)據(jù)。這種事務(wù)隔離級(jí)別可以避免臟讀出現(xiàn),但是可能會(huì)出現(xiàn)不可重復(fù)讀和幻像讀。

    ISOLATION_REPEATABLE_READ
        這種事務(wù)隔離級(jí)別可以防止臟讀,不可重復(fù)讀。但是可能出現(xiàn)幻像讀。它除了保證一個(gè)事務(wù)不能讀取另一個(gè)事務(wù)未提交的數(shù)據(jù)外,還保證了避免下面的情況產(chǎn)生(不可重復(fù)讀)。

    ISOLATION_SERIALIZABLE
        這是花費(fèi)最高代價(jià)但是最可靠的事務(wù)隔離級(jí)別。事務(wù)被處理為順序執(zhí)行。除了防止臟讀,不可重復(fù)讀外,還避免了幻像讀。

    臟讀:
        一個(gè)事務(wù)讀取到另一個(gè)事務(wù)未提交的更新數(shù)據(jù)。
    不可重復(fù)讀:
        在同一事務(wù)中,多次讀取同一數(shù)據(jù)返回的結(jié)果有所不同,即后續(xù)讀取可以讀取到另一事務(wù)已提交的更新數(shù)據(jù);相反,"可重復(fù)讀"是指在同一事務(wù)中多次讀取數(shù)據(jù)時(shí),能夠保證所讀取的數(shù)據(jù)是一樣,即后續(xù)讀取不能讀到另一事務(wù)已提交的數(shù)據(jù)。
    幻讀:
        一個(gè)事務(wù)讀取到另一事務(wù)已提交的insert數(shù)據(jù)。 

    posted @ 2013-09-08 17:00 abing 閱讀(200) | 評(píng)論 (0)編輯 收藏

    2013年9月3日 #

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Javascript RegExp</title>
    </head>
    <script type="text/javascript">
    function judge(){
     try {
      var parameter;
      var regex='^([0-9]+)$';
      var pp;
      var flag=false;
      parameter=document.getElementById("parameter").value;
      pp=new RegExp(regex,'gi');
      flag=pp.test(parameter);
      document.getElementById("spanId").innerHTML=flag;
     } catch (e) {
      document.write('e.name='+e.name+',e.message='+e.message);
     }
     
    }
    </script>
    <body>
     <div id="div1">
      INPUT:<br/>
      <input id="parameter" type="text" /><br/>
      <input id="button" type="button" onclick="javascript:judge();" value="猛擊我"/><br/>
     </div>
     <span id="spanId"></span>
    </body>
    </html>

    2013年8月30日 #

    下面是目前本人知道的幾種jQuery的ready ()的寫法.如果還有其他的寫法,望告知
    1.最常用也是最標(biāo)準(zhǔn)的 
    $(document).ready(){ 
    }); 
    2.是上面的簡(jiǎn)寫: 
    $(function(){ 
    }) 
    3.這個(gè)方式:
    jQuery(document).ready(function(){ 
    }); 
    4. 這個(gè)方式:
    jQuery(function($){ 
    alert($("#ready1").html()); 
    }); 


    posted @ 2013-08-30 14:39 abing 閱讀(186) | 評(píng)論 (0)編輯 收藏

    2013年8月29日 #

    使用jquery真的很方便,比如要控制div的顯示與隱藏,一句話就搞定了,請(qǐng)看下面使用說明。

    $("#id").show()表示display:block,

    $("#id").hide()表示display:none;

    $("#id").toggle()切換元素的可見狀態(tài)。如果元素是可見的,切換為隱藏的;如果元素是隱藏的,切換為可見的。

    $("#id").css('display','none'); 
    $("#id").css('display','block'); 
    或 
    $("#id")[0].style.display = 'none';

    posted @ 2013-08-29 23:47 abing 閱讀(361) | 評(píng)論 (0)編輯 收藏

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charsetUTF-8">
    <title>Jquery Test</title>
    <style type="text/css">
    .class1 {left: 0px;top: 0px;height: 180px;width: 240px;display: block;background-color: blue;color: black;}
    .class2 {left: 0px;top: 300px;height: 100px;width: 240px;display: none;background-color: blue;color: black;}
    .spans {left: 0px;top: 300px;height: 100px;width: 240px;display: none;background-color: blue;color: black;}
    </style>
    </head>
    <script type="text/javascript" src="../js/jquery/jquery-1.7.2.js"></script>
    <script type="text/javascript">
    $(function(){
    $("#buttonId").click(function(){
    var userName=$("input[name='userName']").val();
    var passWord=$("input[name='passWord']").val();
    if(userName=='abin'&&passWord=='lee'){
    $("#div1").hide();
    $("#div2").show();
    $("#spanId").show();
    $("#spanId").html('userName='+userName+",passWord="+passWord);
    }else{
    $("#div1").toggle();
    $("#div2").toggle();
    $("#spanId").show();
    $("#spanId").html('userName='+userName);
    }
    });
    });
    </script>
    <body>
    <div id="div1" class="class1">
    UserName:<br/>
    <input id="userId" name="userName" type="text"/><br/>
    PassWord:<br/>
    <input id="passId" name="passWord" type="text"/><br/>
    <input id="buttonId" name="buttonName" type="button" value="猛擊我"/>
    </div>
    <div id="div2" class="class2">
    <span id="spanId" class="spans"></span>
    </div>
    </body>
    </html>
    posted @ 2013-08-29 23:45 abing 閱讀(238) | 評(píng)論 (0)編輯 收藏

    2013年8月26日 #

    【搭建環(huán)境】Linux (Fedora 16)

    【基本實(shí)現(xiàn)】在自己的電腦上搭建ftp,實(shí)現(xiàn)同一網(wǎng)段匿名登錄,并能上傳下載文件。

    【涉及技術(shù)】vsftpd,iptables

    【方法】

    1. 先查看自己的機(jī)子上是否已安裝vsftpd (very secure FTP Daemon),這是linux上常用的ftpd技術(shù),配置方法比較類似配置Apache。命令行輸入:

    #rpm -qa | grep vsftp

    若出現(xiàn)內(nèi)容,則表示已安裝;若無,則手動(dòng)抓包下載:

    # sudo yum install vsftpd

     

    2 .啟動(dòng)vsftpd服務(wù)。很多教程寫的是/etc/init.d/vsftpd start,但是我試了下后發(fā)現(xiàn)不行,應(yīng)該如下輸入:

    # sudo service vsftpd start

    相應(yīng)的,start 可換成stop,restart等,從字面意思就知道其意思。

    查看是否有啟動(dòng)vsftpd:

    # pstree | grep vsftpd

    若有則表示啟動(dòng)成功。至此,可通過#ftp 主機(jī)名/localhost/127.0.0.1 來測(cè)試ftp是否正常工作。

     

    3. 配置 相關(guān)文件。vsftpd.conf 全局配置文件放在/etc/vsftpd/下。為了防止配置錯(cuò)了,先拷貝一份副本,之后進(jìn)入文檔進(jìn)行編輯。完成后重啟ftp即可。

    #cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd1.conf

    #sudo vim /etc/vsftpd/vsftpd.conf

    為了允許匿名登錄,則anonymous_enable必須等于YES,其他相應(yīng)的配置屬性簡(jiǎn)單列表如下:

    anonymous_enable=YES              允許匿名登錄
    Local_enable=YES                       允許本地用戶登錄
    write_enable=YES                        開放本地用戶的寫權(quán)限
    dirmessage_enable=YES              當(dāng)切換到目錄時(shí),顯示該目錄下的.message隱含文件的內(nèi)容
    xferlog_enab1e =YES                   激活上傳和下載日志
    connect_from_port_20 = YES      啟用FTP數(shù)據(jù)端口的連接請(qǐng)求
    xferlog_std_format =YES            使用標(biāo)準(zhǔn)的ftpd xferlog日志格式
    pam_service_name=vsftpd           設(shè)置認(rèn)證服務(wù)的配置文件名稱,該文件存放在/etc/pam.d/
    userlist_enable=Y(jié)ES                   激活vsftpd檢查userlist_file指定用戶是否可以訪問vsftpd服務(wù)器

     

    4. 本機(jī)進(jìn)行測(cè)試。在瀏覽器上輸入ftp://localhost或者ftp://127.0.0.1,若搭建成功,則會(huì)有相應(yīng)的文件夾,而這文件夾是默認(rèn)在/var/ftp/下,當(dāng)然以后你還可以進(jìn)行修改。另一個(gè)方法是可以直接在命令行輸入:

    #ftp 127.0.0.1

    因?yàn)槟涿卿洠^輸入用戶名和密碼后輸入:

    ftp>user anonymous

    再次跳過輸入密碼,此時(shí)會(huì)顯示登錄成功的字樣。

     

    5. 關(guān)閉防火墻。此時(shí)去同一網(wǎng)段的主機(jī)訪問ftp,會(huì)發(fā)現(xiàn)一直鏈接不上。暫時(shí)了解到的是現(xiàn)在的linux系統(tǒng)為了更好地控制 IP 信息包過濾和防火墻配置,使用了iptables的東西。首先得關(guān)閉SElinux,該配置文件在/etc/selinux/下:

    #vim /etc/selinux/config

    找到相應(yīng)語句,將其改成:SELINUX=disabled

    重啟之后,如果發(fā)現(xiàn)還不行,則暫時(shí)的辦法可以關(guān)閉整個(gè)防火墻(不推薦):

    #sudo service iptables stop

    到了此步則肯定能從別的主機(jī)訪問自己搭建的ftp的,只是可能還需要涉及文件夾權(quán)限問題,修改之后就能實(shí)現(xiàn)文件上傳下載了。

    完畢。

     

    【補(bǔ)充】

    若出現(xiàn)vsftpd: refusing to run with writable anonymous root的錯(cuò)誤,大概是ftp目錄權(quán)限問題,修正方法:

    chown root:root /var/ftp
    chmod 755 /var/ftp

    posted @ 2013-08-26 22:31 abing 閱讀(276) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 嘿嘿嘿视频免费网站在线观看| 亚洲人成伊人成综合网久久久| 亚洲综合免费视频| 久久精品成人免费看| 中文字幕的电影免费网站| 一区二区视频免费观看| 无码 免费 国产在线观看91| 欧美日韩亚洲精品| 亚洲av无码专区亚洲av不卡| 亚洲国产aⅴ成人精品无吗| 亚洲看片无码在线视频| 亚洲欧美熟妇综合久久久久| 亚洲av无码一区二区三区在线播放| 中文字幕亚洲综合久久综合 | 91免费播放人人爽人人快乐| 国产精品视频免费观看| 97国产免费全部免费观看| 男人的好免费观看在线视频| 最近高清中文字幕免费| 在线视频免费观看高清| 四虎影视免费在线| va亚洲va日韩不卡在线观看| 国产精品亚洲αv天堂无码| 亚洲无av在线中文字幕| 亚洲AV成人无码久久精品老人| 亚洲精品无码成人AAA片| 在免费jizzjizz在线播| 日本免费中文字幕| 中国国语毛片免费观看视频| 边摸边吃奶边做爽免费视频99| 男人天堂2018亚洲男人天堂| 亚洲欧洲综合在线| 亚洲综合久久综合激情久久| 亚洲精品无码久久久久| 亚洲高清国产拍精品26U| 亚洲国产精彩中文乱码AV| a级亚洲片精品久久久久久久 | 亚洲AV无码专区亚洲AV伊甸园| 亚洲人成色7777在线观看不卡| 免费国内精品久久久久影院| 国产免费小视频在线观看|