團(tuán)隊(duì)作業(yè)(五):沖刺總結(jié)(二)
1. 今日任務(wù)安排
- 各組員根據(jù)昨天認(rèn)領(lǐng)的任務(wù),學(xué)習(xí)自己的負(fù)責(zé)的模塊的相關(guān)知識,自己上網(wǎng)查詢或兩兩交流學(xué)習(xí),主要學(xué)習(xí)數(shù)據(jù)庫相關(guān)、Java后端設(shè)計、WEB前端設(shè)計如CSS樣表語法、JS語法、Jackrabbit等。
- 明確功能實(shí)現(xiàn),主要學(xué)習(xí)相關(guān)功能的實(shí)現(xiàn)與應(yīng)用,主要是JAVA接口的學(xué)習(xí)。
遇到的問題
1.java連接MySql數(shù)據(jù)庫的方法。參考博客:Java 通過JDBC連接Mysql數(shù)據(jù)庫的方法和實(shí)例【圖文說明】
2.出現(xiàn)錯誤java.sql.SQLException: Can not issue data manipulation statements with executeQuery()。
解決:注意sql語句如果是查詢,用executeQuery(),要對表產(chǎn)生修改的話則使用executeUpdate();
3.選取前N條數(shù)據(jù)時,sqlserver數(shù)據(jù)庫用select top n from table order by class desc,而mysql數(shù)據(jù)庫使用select * from table order by class desc limit n;
4.將一張大表分割成幾個小表:CREATE TABLE weibo1 SELECT * FROM weibo ORDER BY mid LIMIT 1,3000000;
5.向量的定義。向量初始化不能使用Vector orimid =null,會導(dǎo)致在像該向量添加元素時發(fā)生空指針錯誤。
正確方法:Vector orimid =new Vector();
6.ArrayList和Vector的區(qū)別:Vector是同步的, 而ArrayList不是,因?yàn)閂ector是同步的, 所以它是線程安全的。同樣, 因?yàn)閂ecotr是同步的, 所以他需要額外的開銷來維持同步鎖, 所以它要比ArrayList要慢(理論上來說);
Vector允許用戶設(shè)置capacityIncrement這樣在每次需要擴(kuò)充數(shù)組的size的時候, Vector會嘗試按照預(yù)先設(shè)置的capacityIncrement作為增量來設(shè)置, 而ArrayList則會把數(shù)組的大小擴(kuò)大一倍;如果capacityIncrement設(shè)為0或者負(fù)值, Vector就會做和ArrayList一樣, 每次都將數(shù)組大小擴(kuò)大一倍;
7.execute、executeUpdate、executeQuery三者的區(qū)別:
execute是executeQuery和executeUpdate的綜合。executeUpdate() 這是 PreparedStatement 接口中的方法,
executeUpdate(String sql) 這是 PreparedStatement 從父接口 Statement 中繼承過來的方法executeUpdate() 中執(zhí)行 SQL 語句需要在創(chuàng)建 PerparedStatement 時通過 Connection 的 prepareStatement(String sql) 方法中寫出,因?yàn)?PerparedStatement 中的 SQL 語句數(shù)據(jù)庫需要進(jìn)行預(yù)編譯和緩存,因此要在創(chuàng)建 PerparedStatement 對象時給出 SQL 語句。
而 executeUpdate(String sql) 是 Statement 中的方法,參數(shù)中的 SQL 語句只是提交給數(shù)據(jù)庫去執(zhí)行,并不需要預(yù)編譯;
如果 SQL 語句中有 ? 占位符,那么在設(shè)置好占位符中的值后,必須使用 executeUpdate() 執(zhí)行。而 executeUpdate(String sql) 只是提交一個 SQL 語句,且這個語句中不能帶有 ? 占位符。
3.今日心得
Jackrabbit
- JackRabbit就是一種面向文檔的數(shù)據(jù)庫,它和MongoDB,CouchDB的功能十分接近,優(yōu)勢在于JackRabbit遵從JCR標(biāo)準(zhǔn),日后可以遷移到其他同樣兼容JCR的性能更好的商業(yè)解決方案上。
- Jackrabbit(內(nèi)容倉庫)是一個高級的信息管理系統(tǒng),該系統(tǒng)是傳統(tǒng)的數(shù)據(jù)倉庫的擴(kuò)展,它提供了諸如版本控制、全文檢索、訪問控制、內(nèi)容分類、內(nèi)容事件監(jiān)視等內(nèi)容服務(wù)。Jackrabbit里面有一個DataStore類,該類有兩個實(shí)現(xiàn),DbDataStore和FileDataStore,可以保存元數(shù)據(jù)和二進(jìn)制數(shù)據(jù)。
用于實(shí)現(xiàn)傳輸文件、存儲文件等功能
Servlet 表單數(shù)據(jù)
瀏覽器使用兩種方法可將這些信息傳遞到 Web 服務(wù)器,分別為 GET 方法和 POST 方法。
GET 方法
GET 方法向頁面請求發(fā)送已編碼的用戶信息。頁面和已編碼的信息中間用 ? 字符分隔,如下所示:http://www.test.com/hello?key1=value1&key2=value2
GET 方法是默認(rèn)的從瀏覽器向 Web 服務(wù)器傳遞信息的方法,它會產(chǎn)生一個很長的字符串,出現(xiàn)在瀏覽器的地址欄中。如果您要向服務(wù)器傳遞的是密碼或其他的敏感信息,請不要使用 GET 方法。GET 方法有大小限制:請求字符串中最多只能有 1024 個字符。
這些信息使用 QUERY_STRING 頭傳遞,并可以通過 QUERY_STRING 環(huán)境變量訪問,Servlet 使用 doGet() 方法處理這種類型的請求。
POST 方法
另一個向后臺程序傳遞信息的比較可靠的方法是 POST 方法。POST 方法打包信息的方式與 GET 方法基本相同,但是 POST 方法不是把信息作為 URL 中 ? 字符后的文本字符串進(jìn)行發(fā)送,而是把這些信息作為一個單獨(dú)的消息。消息以標(biāo)準(zhǔn)輸出的形式傳到后臺程序,您可以解析和使用這些標(biāo)準(zhǔn)輸出。Servlet 使用 doPost() 方法處理這種類型的請求。
使用 Servlet 讀取表單數(shù)據(jù)
Servlet 處理表單數(shù)據(jù),這些數(shù)據(jù)會根據(jù)不同的情況使用不同的方法自動解析:
-
getParameter():您可以調(diào)用 request.getParameter() 方法來獲取表單參數(shù)的值。
-
getParameterValues():如果參數(shù)出現(xiàn)一次以上,則調(diào)用該方法,并返回多個值,例如復(fù)選框。
-
getParameterNames():如果您想要得到當(dāng)前請求中的所有參數(shù)的完整列表,則調(diào)用該方法。
JavaScript
JavaScript中的數(shù)據(jù)類型其實(shí)都是一個個js對象,比如String、Data、Array等等,對象只是帶有屬性值和方法的數(shù)據(jù)類型。訪問對象的屬性值或者方法都只需要用這樣的語句即可:var_name.memberName; 下面給出一些對象中的一些屬性及其方法:
字符串對象:
字符串(String)使用長度屬性length來計算字符串的長度。
字符串使用 indexOf() 來定位字符串中某一個指定的字符首次出現(xiàn)的位置,如果沒找到對應(yīng)的字符函數(shù)返回-1;
match()函數(shù)用來查找字符串中特定的字符,并且如果找到的話,則返回這個字符,如果沒有找到則返回null。
replace() 方法在字符串中用某些字符替換另一些字符。
字符串大小寫轉(zhuǎn)換使用函數(shù) toUpperCase() / toLowerCase()。
4.燃盡圖

5.小組合照

6.今日工作量

浙公網(wǎng)安備 33010602011771號