#first blood# XML的解析方式
sax解析(不事先加載整個文檔,占用資源少匕坯,非持久性)
SAXParserFactory?saxfac?=?SAXParserFactory.newInstance();
SAXParser?saxparser?=?saxfac.newSAXParser();
InputStream?is?=?new?FileInputStream(fileName);
saxparser.parse(is,?new?MySAXHandler());
dom解析(需要加載整個文檔酵使,構(gòu)造層次結(jié)構(gòu),樹在內(nèi)存中持久)
DocumentBuilderFactory?dbf?=?DocumentBuilderFactory.newInstance();
DocumentBuilder?db?=?dbf.newDocumentBuilder();
Document?document?=?db.parse(fileName);
dom4j解析(性能最好,常用)
File?f?=?new?File(fileName);
SAXReader?reader?=?new?SAXReader();
Document?doc?=?reader.read(f);
Element?root?=?doc.getRootElement();
#double kill# 如何控制并發(fā)
synchronized? (一直等待鎖被釋放,不會被中斷;JVM會自動釋放鎖定)
ReentrantLock? (手動釋放鎖,unLock()放到finally{},資源競爭激烈痹筛,Synchronized的性能會下降幾十倍,但是ReetrantLock的性能能維持常態(tài))
lock(), 如果獲取了鎖立即返回廓鞠,如果別的線程持有鎖帚稠,當前線程則一直處于休眠狀態(tài),直到獲取鎖
tryLock(), 如果獲取了鎖立即返回true床佳,如果別的線程正持有鎖滋早,立即返回false;
tryLock(long timeout,TimeUnit unit)砌们, 如果獲取了鎖定立即返回true杆麸,如果別的線程正持有鎖,會等待參數(shù)給定的時間浪感,在等待的過程中昔头,如果獲取了鎖定,就返回true影兽,如果等待超時揭斧,返回false;
lockInterruptibly:如果獲取了鎖定立即返回峻堰,如果沒有獲取鎖定讹开,當前線程處于休眠狀態(tài),直到或者鎖定捐名,或者當前線程被別的線程中斷
#triple kill# 何種情況不走索引
何種情況不走索引(就是說數(shù)據(jù)庫在何種情況下索引失效具體可見:?數(shù)據(jù)庫索引失效)
#Ultra? Kill# 如何防止重復提交
使用利用session結(jié)合UUID解決表單的重復提交旦万。在jsp頁面增加一個隱藏域,利用uuid生成一個唯一的標識號,賦給隱藏域,把唯一的標識號 放置到session中一份,
<input type="hidden" name="html.uuid" value='<%=UuidToken.getUuidToken().getUUIDAsStr(request)%>'>