1、 JDBC 4javascript
1、 Java中訪問數據庫的步驟 4css
2、 Statement,PreparedStatement,CallableStatement的功能、特色。 4html
3、 如何利用JDBC的API得到插入數據的主鍵值 4前端
4、 Tomcat鏈接池如何配置 4java
2、 JSP 4mysql
5、 JSP中動態INCLUDE與靜態INCLUDE的寫法是什麼,區別是什麼 4jquery
6、 9大隱式對象 4程序員
7、 EL和JSTL分別是什麼 4web
8、 post和get有什麼異同,實現文件上傳要用哪一種方式 4ajax
9、 Request、Response對象的主要方法 4
10、 jsp和html註釋有什麼區別 4
11、 常見EL表達式的用法 5
12、 JSP的內置對象有那些及經常使用方法 5
13、 Session與Cookie的區別 5
3、 Servlet 5
14、 Servlet的生命週期 5
15、 Servlet的基本架構 5
16、 JSP和Servlet有哪些相同點和不一樣點,他們之間的聯繫是什麼? 5
17、 簡述Model1,Model2 5
18、 重定向和轉發的區別,對應的方法是什麼? 5
19、 servletconfig和servletcontext 5
20、 簡述開發一個servlet的步驟(非工具生成) 5
21、 getAttribute() 5
22、 過濾器的原理,責任鏈設計模式的應用 6
23、 請寫出在你在web程序設計時,處理中文字符編碼問題的一些經驗 6
24、 forward 和redirect 的區別? 6
25、 JSP 中動態INCLUDE 與靜態INCLUDE 的區別?【基礎】 6
26、 JSP 的經常使用指令?【基礎】 6
27、 jsp 有哪些動做?做用分別是什麼? 【基礎】 6
28、 jsp 有哪些內置對象?做用分別是什麼? 【基礎】 6
29、 get 和post 的區別?【基礎】 7
30、 什麼狀況下調用doGet()和doPost()?【基礎】 7
31、 如何從form 表單中得取checkbox 的值;【基礎】 7
32、 JSP 和Servlet 有哪些相同點和不一樣點,他們之間的聯繫是什麼?【基礎】 7
33、 jsp 的四種範圍?【基礎】 7
34、 Request 對象的主要方法? 【基礎】 7
35、 如何實現servlet 的單線程模式?【基礎】 8
36、 頁面間對象傳遞的方法。【基礎】 8
37、 詳細描述MVC。【基礎】 8
38、 MVC 的各個部分都有那些技術來實現?如何實現? 【基礎】 8
39、 BS 與CS 的聯繫與區別?【基礎】 8
40、 幾種會話跟蹤技術?【基礎】 9
41、 過濾器有哪些做用?【基礎】 9
42、 介紹在JSP 中如何使用JavaBeans?【基礎】 9
43、 JSP 和Servlet 中的請求轉發分別如何實現?【基礎】 9
44、 Web.Xml 的做用?【基礎】 9
45、 寫出熟悉的JSTL 標籤。【基礎】 9
46、 JSP 內置對象做用,如何取Cookie 的方法 9
47、 經過部署描述文件(web.xml)能夠配置哪些功能? 10
48、 JSP 有哪些的動做?分別有什麼做用? 10
49、 JSP 與SERVLET 區別 10
50、 Tomcat 的class 加載的優先順序一覽 10
51、 Servlet 與CGI 的區別 10
52、 Servlet 中的init()方法何時被調用? 10
53、 用什麼方法使服務器關閉以後,session 所保存的信息不會丟失? 10
54、 Servlet 的生命週期分爲3 個階段? 和CGI 的區別? 11
55、 描述Cookie 和Session 的做用?區別和各自的應用範圍?Session 工做原理 11
56、 dao 是什麼及做用 11
57、 解釋一下什麼是servlet 11
58、 HTTP 請求的GET 與POST 方式的區別 11
59、 什麼狀況下調用doGet()和doPost()? 11
60、 request 對象的主要方法 11
61、 request.getAttribute() 和request.getParameter() 有何區別? 12
62、 jsp 有哪些內置對象?做用分別是什麼? 分別有什麼方法? 12
63、 JSP 的經常使用指令 12
64、 頁面間對象傳遞的方法 12
65、 MVC 的各個部分都有那些技術來實現?如何實現? 12
66、 Web 系統安全因素有哪些? 12
67、 咱們在web 應用開發過程當中常常遇到輸出某種編碼的字符,如iso8859-1 等,如何輸出一個某種編碼的字符串? 13
68、 web 運用程序的穩定、安全須要考慮哪些? 13
69、 介紹幾種WEB 服務器,問Tomcat 裏面的文件組成? 13
70、 將ISO8859-1 字符串轉成GB2312 編碼,語句爲? 13
71、 <jsp:include>與<%@include>的區別 13
72、 說出數據鏈接池的工做機制是什麼? 13
73、 如何實現Servlet 單線程 13
74、 哪些方法能夠提升JDBC 性能? 13
75、 Web 容器裏面的對象存活週期? 13
76、 瀏覽器頁面與Tomcat 的交互過程? 14
4、 數據庫 14
77、 SQL 有哪三種注入方式?SQL 安全 14
78、 數據庫事務及隔離級別bbvrbtg 14
79、 事務四大屬性 14
80、 說說存儲過程定義,並描述一下優勢和缺點? 14
82、 SqlServer 的完整性約束? 14
83、 一張學生表student,有字段班級classid,學號id,成績grade 15
84、 寫一條SQL 語句,查詢姓張學生中平均成績大於75 的學生信息 15
85、 查一下每門課程都大於80 的學生姓名 15
86、 truncate 與delete 的區別?(delete from table 和truncate table 的區別!) 15
87、 一學生表!有班及id,學號!成績!一求平均成績!二求比平均成績高的學生的全部信息 15
88、 查詢出M 頁的N 行數據(分頁的實現,求第M 也的記錄數) 15
89、 數據庫三範式是什麼? 15
90、 join 與left join 的區別: 16
91、 用sql 語句分頁: 16
92、 oracle 中row_id 理解 16
93、 嵌入式數據庫和傳統數據庫的區別 16
94、 Inserted 和deleted 的含義? 16
95、 函數和過程的區別? 16
96、 數據庫優化的方案 16
97、 Oracle 中有哪幾種索引 16
98、 數據庫索引的優勢和缺點 17
99、 觸發器有幾種? 17
100、 oracle 中除了數據庫備份,還有什麼方法備份? 17
101、 寫出刪除表中重複記錄的語句oracle 17
102、 數據庫裏面遊標,索引是怎麼用的? 17
103、 在Oracle 中數據庫中的一個表中,這個表沒有主鍵id 也沒有特定標示來查數據,怎麼查? 17
104、 大數據量下的分頁解決方法 17
105、 寫一個用jdbc 鏈接並訪問oracle 數據的程序代碼 18
106、 JavaScript 有哪幾種數據類型 18
107、 在js 編碼中innerHTML,outhtml,innertext 區別 18
108、 寫一個簡單的json 對象? 18
109、 什麼是json ,jquery? 18
110、 jQuery 中有id 爲foo 的對象有att 屬性,如何獲取att 屬性的值? 18
1十一、 jQuery 中添加文本怎麼寫在div 中 18
112、 你爲何要使用jquery? 18
113、 你使用jquery 遇到過哪些問題,你是怎麼解決的? 18
114、 你知道jquery 中的選擇器嗎,請講一下有哪些選擇器? 19
115、 jquery 中的選擇器和css 中的選擇器有區別嗎? 19
116、 你以爲jquery 中的選擇器有什麼優點? 19
117、 你在使用選擇器的時候有有沒有什麼以爲要注意的地方? 19
118、 jquery 對象和dom 對象是怎樣轉換的? 19
11九、 你是如何使用jquery 中的ajax 的? 19
120、 你以爲jquery 中的ajax 好用嗎,爲何? 19
12一、 jquery 中$.get()提交和$.post()提交有區別嗎? 19
12二、 jquery 中的load 方法通常怎麼用的? 19
123、 在jquery 中你是如何去操做樣式的? 19
124、 簡單的講敘一下jquery 是怎麼處理事件的,你用過哪些事件? 19
125、 你使用過jquery 中的動畫嗎,是怎樣用的? 19
126、 你使用過jquery 中的插件嗎? 20
127、 你通常用什麼去提交數據,爲何? 20
12八、 在jquery 中引入css 有幾種方式? 20
129、 你在jquery 中使用過哪些插入節點的方法,它們的區別是什麼? 20
130、 你使用過包裹節點的方法嗎,包裹節點有方法有什麼好處? 20
131、 jquery 中如何來獲取或和設置屬性? 20
132、 如何來設置和獲取HTML 和文本的值? 20
133、 你jquery 中有哪些方法能夠遍歷節點? 20
134、 子元素選擇器和後代選擇器元素有什麼區別? 20
135、 在jquery 中能夠替換節點嗎? 20
136、 你以爲beforeSend 方法有什麼用? 20
13七、 siblings() 方法和$('prev~div')選擇器是同樣的嘛? 20
138、 你在ajax 中使用過JSON 嗎,你是如何用的? 21
139、 有哪些查詢節點的選擇器? 21
140、 nextAll() 能替代$('prev~siblindgs')選擇器嗎? 21
141、 jQuery 中有幾種方法能夠來設置和獲取樣式 21
142、 $(document).ready()方法和window.onload 有什麼區別? 21
143、 jQuery 是如何處理緩存的? 21
144、 $.getScript()方法和$.getJson() 方法有什麼區別? 21
145、 你讀過哪些有關於jQuery 的書嗎? 21
146、 $("#msg").text(); 和$("#msg").text("<b>new content</b>");有什麼區別? 21
147、 radio 單選組的第二個元素爲當前選中值,該怎麼去取? 21
148、 選擇器中id,class 有什麼區別? 21
149、 你使用過哪些數據格式,它們各有什麼特色? 21
150、 jQuery 能作什麼? 22
151、 在ajax 中data 主要有幾種方式? 22
152、 jQuery 中的hover()和toggle()有什麼區別? 22
153、 你知道jQuery 中的事件冒泡嗎,它是怎麼執行的,何如來中止冒泡事件? 22
15四、 例如單擊超連接後會自動跳轉,單擊"提交"按鈕後表單會提交等,有時候我想阻止這些默認的行爲,該怎麼辦? 22
155、 jquery 表單提交前有幾種校驗方法?分別爲?? 22
15六、 在jquery 中你有沒有編寫過插件,插件有什麼好處?你編寫過那些插件?它應該注意那些? 22
157、 怎樣給jquery 動態附加新的元素?那麼怎樣給新生成的元素綁定事件呢? 22
158、 IE 與FireFox 腳本兼容性問題 22
159、 css+div 的優點 23
160、 DIV 和Span 的區別? 23
161、 css 是什麼層疊樣式表 23
162、 xml 有哪些解析技術,有什麼區別? 23
163、 ajax 的工做原理? 23
164、 在javascript 中設置定時調用myfun()函數(週期爲1 秒)的代碼是? 23
165、 XML 文檔定義有幾種形式?它們之間有何本質區別?解析XML 文檔有哪幾種方式? 23
166、 HTTP 請求返回的狀態碼有哪些?分別有什麼含義? 24
167、 二叉樹遍歷有幾種方法 24
168、 JSON 和XML 的優缺點 24
導入驅動包、得到鏈接、獲取語句對象、得到結果集、關閉結果集、語句對象、鏈接。
Statement,用於執行靜態 SQL 語句並返回它所生成結果的對象;(只執行一次的語句用這個)
PreparedStatement,表示預編譯的 SQL 語句的對象,執行前能夠進行賦值操做;(反覆使用的語句用這個,有效的防止sql注入)
CallableStatement執行存儲過程,預編譯的,帶參數的; 經過Sql=」{call 存儲過程的名稱(參數)}」;
PreparedStatement pstmt = con.prepareStatement(「asdfsdf」,Statement.RETURN_GENERAT_KEYS);
pstmt.executeUpdate();
ResultSet rs = pstmt.getGeneratedKeys();
6以上:在MATE-INF下配置context.xml;
5.5:conf/server.xml配置,在conf/context.xml加入連接;並在WEB-INF/web.xml下配置數據源
解析方式 能否傳參數
動態include:<jsp:include page=」test.jsp」 flush=」true」/> 能夠傳參,適合包含動態頁面,能夠動態刷新;
靜態include:<%@include file=」test.html」 %> 只包含頁面代碼,不能傳參數。
將對象的做用一塊兒說出來
輸入、輸出對象:request、response、out
做用域對象:pageContext、session、application
servlet對象:page(表明servlet對象)、config(servlet配置)
錯誤對象:Exception isErrorPage=」true」
EL: Expression Language 表達式語言 ${}幫助咱們方便的使用表達式寫法
JSTL: java Standard tag Library java標準標籤庫;把java代碼從頁面中分離出來,簡化開發,相似與html風格
post:傳遞的參數隱藏了,長度更長,更安全;文件上傳只能用post
get:傳遞的參數在url後面;長度有限:255
按三個方面:設置編碼格式. 獲取參數內容 (getAttribute().....). 頁面跳轉方式
request:getAttribute()、setAttribute()、getParameter()、getParameterValues()、setCharaterEncoding()
response:setCharaterEcoding()、得到其餘對象的方法。。。
Html看的到、jsp看不到
${}
Session和cookie都是 跟蹤回話的技術
Session:會話跟蹤,服務器端維護
Cookie:存儲用戶臨時數據,客戶端維護;javax.servlet.http.Cookie
初始化、實例化、服務、銷燬
服務器加載servlet、服務器建立servlet實例、調用servlet實例的init方法、收到請求、調用service方法、調用doXxx方法處理請求並將輸出結果返回客戶端、等待下一個請求或由服務器卸載、調用destroy方法後被卸載。
javax.servlet
javax.servlet.http
Servlet接口》》GenericServlet抽象類》》HttpServlet抽象列》》用戶自定義Servlet;
容器提供實現;
init()、service()、doXxx()、destroy()
都是實現javaWEB的手段,JSP側重試圖,Servlet主要用於控制邏輯;
jsp:servlet的簡易方式,由java和html組合成一個.jsp文件,編譯後是一個「類servlet」
都是MVC設計模式
Model1:jsp+javabeans,M由javabeans實現;V、C放在jsp中
Model2:jsp+servlet+javabeans,M:javabeans,V:jsp,C:servlet
響應次數. 地址欄的改變與否 是否帶參數 , 說明他們都是跳轉頁面的方法
重定向:redirect,告訴瀏覽器請求另外一個地址,地址欄url改變
轉 發:forward,請求不中斷,轉發到另外一個資源,請求另外一個地址後再把返回類容返回給客戶端,地址欄url不改變
servletconfig:servlet的配置,init方法傳入的參數。
servletcontext:容器維護的一塊存儲空間,存放當前環境的一些信息和servlet相關信息,表示一個做用域。
繼承HttpServlet抽象類,能夠實現:init、destroy、doXxx,在web.xml中配置servlet、servlet-mapping
得到屬性,取出數據
向web應用程序的請求和響應處理添加功能的web服務組件,處在用戶和web資源中間。
過濾器鏈FilterChain接口,調用過濾器鏈中的一系列過濾器。
<%@ page pageEcoding=」utf-8」 %>表示由jsp頁面轉譯成servlet使用的編碼形式
<%@ page contentType=」text/html; charset=utf-8」 %>請求發送的信息和響應消息的編碼
工程的屬性也使用UTF-8
答:forward 是容器中控制權的轉向,是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL 的響應內容讀取過來,而後把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,因此它的地址欄中仍是原來的地址。redirect 就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器從新去請求那個地址,通常來講瀏覽器會用剛纔請求的全部參數從新請求,因此session,request 參數均可以獲取,而且從瀏覽器的地址欄中能夠看到跳轉後的連接地址。前者更加高效,在前者能夠知足須要時,儘可能使用forward()方法,而且,這樣也有助於隱藏實際的連接;在有些狀況下,好比,須要跳轉到一個其它服務器上的資源,則必須使用sendRedirect()方法。
答:動態INCLUDE 用jsp:include 動做實現<jsp:include page="included.jsp"flush="true" />它老是會檢查所含文件中的變化,適合用於包含動態頁面,而且能夠帶參數;靜態INCLUDE 用include 僞碼實現,它不會檢查所含文件的變化,適用於包含靜態頁面<%@ include file="included.htm" %>
答:JSP 共有如下6 種基本動做:
jsp:include:在頁面被請求的時候引入一個文件;
jsp:useBean:尋找或者實例化一個JavaBean。;
jsp:setProperty:設置JavaBean 的屬性。;
jsp:getProperty:輸出某個JavaBean 的屬性;
jsp:forward:把請求轉到一個新的頁面;
Jsp:param
jsp:plugin:根據瀏覽器類型爲Java 插件生成OBJECT 或EMBED 標記。
答:JSP 共有如下9 種基本內置組件(可與ASP 的6 種內部組件相對應):
request:用戶端請求,此請求會包含來自GET/POST 請求的參數;
response:網頁傳回用戶端的迴應;
pageContext:網頁的屬性是在這裏管理;
session:與請求有關的會話期;
application:servlet 正在執行的內容;
out:用來傳送回應的輸出;
config:servlet 的構架部件;
page:JSP 網頁自己;
exception:針對錯誤網頁,未捕捉的例外。
答:Form 中的get 和post 方法,在數據傳輸過程當中分別對應了HTTP 協議中的GET 和POST 方法。兩者主要區別以下:+
1)Get 是用來從服務器上得到數據,而Post 是用來向服務器上傳遞數據;
2)Get 將表單中數據按照variable=value 的形式,添加到action 所指向的URL 後面,而且二者使用「?」鏈接,而各個變量之間使用「&」鏈接;Post 是將表單中的數據放在form 的數據體中,按照變量和值相對應的方式,傳遞到action所指向URL;
3)Get 是不安全的,由於在傳輸過程,數據被放在請求的URL 中;Post 的全部操做對用戶來講都是不可見的;
4)Get 傳輸的數據量小,這主要是由於受URL 長度限制;而Post 能夠傳輸大量的數據,因此在上傳文件只能使用Post;
5)Get 限制Form 表單的數據集必須爲ASCII 字符,而Post 支持整個ISO10646字符集;
6)Get 是Form 的默認方法
答:Jsp 頁面中的form 標籤裏的method 屬性爲get 時調用doGet(),爲post時調用doPost()。
答:可在頁面把checkbox 的name 屬性取同一個,value 屬性取每一個條目的id,後臺用getParamter(「name」)能取到checkbox 的一組值。
答:JSP 是Servlet 技術的擴展,本質上是Servlet 的簡易方式,更強調應用的外表表達。JSP 編譯後是"類servlet"。Servlet 和JSP 最主要的不一樣點在於,Servlet 的應用邏輯是在Java 文件中,而且徹底從表示層中的HTML 裏分離開來。而JSP 的狀況是Java 和HTML 能夠組合成一個擴展名爲.jsp 的文件。JSP 側重於視圖,Servlet 主要用於控制邏輯。
答:a.page 是表明與一個頁面相關的對象和屬性。一個頁面由一個編譯好的Java servlet 類(能夠帶有任何的include 指令,可是沒有include 動做)表示。這既包括servlet 又包括被編譯成servlet 的JSP 頁面 b.request 是表明與Web 客戶機發出的一個請求相關的對象和屬性。一個請求可能跨越多個頁面,涉及多個Web 組件(因爲forward 指令和include 動做的關係) c.session 是表明與用於某個Web 客戶機的一個用戶體驗相關的對象和屬性。一個Web 會話能夠也常常會跨越多個客戶機請求 d.application 是表明與整個Web 應用程序相關的對象和屬性。這實質上是跨越整個Web 應用程序,包括多個頁面、請求和會話的一個全局做用域。
答:setAttribute(String name,Object):設置名字爲name 的屬性值
getAttribute(String name):返回由name 指定的屬性值
getAttributeNames():返回request 對象全部屬性的名字集合(枚舉)
getCookies():返回客戶端的全部Cookie 對象,結果是一個Cookie 數組
getCharacterEncoding():返回請求中的字符編碼方式
getContentLength():返回請求的Body 的長度
getHeader(String name):得到HTTP 協議定義的文件頭信息
getHeaders(String name):返回指定名的request Header 的全部值(枚舉)
getHeaderNames():返回全部request Header 的名字(枚舉)
getInputStream():返回請求的輸入流,用於得到請求中的數據
getMethod():得到客戶端向服務器端傳送數據的方法
getParameter(String name):得到客戶端請求中傳送的name 指定的參數值
getParameterNames():得到客戶端傳送給服務器端的全部參數的名字(枚舉)
getParameterValues(String name):得到有name 指定的參數的全部值
getProtocol():獲取客戶端向服務器端傳送數據所依據的協議名稱
getQueryString():得到查詢字符串
getRequestURI():獲取發出請求字符串的客戶端地址
getRemoteAddr():獲取客戶端的IP 地址
getRemoteHost():獲取客戶端的名字
getSession([Boolean create]):返回和請求相關Session
getServerName():獲取服務器的名字`
getServletPath():獲取客戶端所請求的腳本文件的路徑
getServerPort():獲取服務器的端口號
removeAttribute(String name):刪除請求中的一個屬性
答:<%@page isThreadSafe=」false」%>
答:request,session,application,cookie 等。
答:基於Java 的Web 應用系統採用MVC 架構模式,即model(模型)、view(視圖)、control(控制)分離設計;這是目前WEB 應用服務系統的主流設計方向。
Model:即處理業務邏輯的模塊,每一種處理一個模塊;
View:負責頁面顯示,顯示MODEL 處理結果給用戶,主要實現數據到頁面轉換過程;
Control:負責每一個請求的分發,把FORM 數據傳遞給MODEL 處理,把處理結果的數據傳遞給VIEW 顯示。
答:MVC 是Model-View-Controller 的簡寫。"Model" 表明的是應用的業務邏輯(經過JavaBean,EJB 組件實現), "View" 是應用的表示面(由JSP 頁面產生),"Controller" 是提供應用的處理過程控制(通常是一個Servlet),經過這種設計模型把 應用邏輯,處理過程和顯示邏輯分紅不一樣的組件實現。這些組件能夠進行交互和重用
答:C/S 是Client/Server 的縮寫,是客戶機與服務器結構的應用程序,服務器一般採用高性能的PC、工做站或小型機,並採用大型數據庫系統,如Oracle、Sybase、Informix 或SQL Server。客戶端須要安裝專用的客戶端軟件。B/S是Brower/Server 的縮寫,是瀏覽器和服務器結構的應用程序,即Web 應用程序,客戶機上只要安裝一個瀏覽器(Browser),如Netscape Navigator 或InternetExplorer,服務器安裝Oracle、Sybase、Informix 或SQL Server 等數據庫。在這種結構下,用戶界面徹底經過WWW 瀏覽器實現,一部分事務邏輯在前端實現,可是主要事務邏輯在服務器端實現。瀏覽器經過Web Server 同數據庫進行數據交互。
C/S 與B/S 區別:
1)硬件環境不一樣:
C/S 通常創建在專用的網絡上, 小範圍裏的網絡環境, 局域網之間再經過專門服務器提供鏈接和數據交換服務;B/S 創建在廣域網之上的, 沒必要是專門的網絡硬件環境,例與電話上網, 租用設備. 信息本身管理. 有比C/S 更強的適應範圍, 通常只要有操做系統和瀏覽器就行;
2)對安全要求不一樣:
C/S 通常面向相對固定的用戶羣, 對信息安全的控制能力很強. 通常高度機密的信息系統採用C/S 結構適宜. 能夠經過B/S 發佈部分可公開信息;B/S 創建在廣域網之上, 對安全的控制能力相對弱, 可能面向不可知的用戶;
3)對程序架構不一樣:
C/S 程序能夠更加註重流程, 能夠對權限多層次校驗, 對系統運行速度能夠較少考慮;B/S 對安全以及訪問速度的多重的考慮, 創建在須要更加優化的基礎之上.比C/S 有更高的要求B/S 結構的程序架構是發展的趨勢, 從MS 的.Net 系列的BizTalk 2000 Exchange 2000 等, 全面支持網絡的構件搭建的系統. SUN 和IBM 推的JavaBean 構件技術等,使B/S 更加成熟;
4)軟件重用不一樣:
C/S 程序能夠不可避免的總體性考慮, 構件的重用性不如在B/S 要求下的構件的重用性好;B/S 對的多重結構,要求構件相對獨立的功能. 可以相對較好的重用.就入買來的餐桌能夠再利用,而不是作在牆上的石頭桌子;
5)系統維護不一樣:
C/S 程序因爲總體性, 必須總體考察, 處理出現的問題以及系統升級. 升級難. 多是再作一個全新的系統;B/S 構件組成,方面構件個別的更換,實現系統的無縫升級. 系統維護開銷減到最小.用戶從網上本身下載安裝就能夠實現升級;
6)處理問題不一樣:
C/S 程序能夠處理用戶面固定, 而且在相同區域, 安全要求高需求, 與操做系統相關. 應該都是相同的系統;B/S 創建在廣域網上, 面向不一樣的用戶羣, 分散地域, 這是C/S 沒法做到的. 與操做系統平臺關係最小;
7)用戶接口不一樣:
C/S 可能是創建的Window 平臺上,表現方法有限,對程序員廣泛要求較高;B/S 創建在瀏覽器上, 有更加豐富和生動的表現方式與用戶交流. 而且大部分難度減低,減低開發成本;
8)信息流不一樣:
C/S 程序通常是典型的中央集權的機械式處理, 交互性相對低;B/S 信息流向可變化, B-B B-C B-G 等信息、流向的變化, 更像交易中心。
Session Cookie URL重寫 隱藏域表單
答:能夠驗證客戶是否來自可信的網絡,能夠對客戶提交的數據進行從新編碼,能夠從系統裏得到配置的信息,能夠過濾掉客戶的某些不該該出現的詞彙,能夠驗證用戶是否登陸,能夠驗證客戶的瀏覽器是否支持當前的應用,能夠記錄系統的日誌等等。
答:在JSP 中使用JavaBean 經常使用的動做有:
1)<jsp:useBean />:用來建立和查找bean 對象;
2)<jsp:setProperty />:用來設置bean 的屬性,即調用其setXxx()方法;
3)<jsp:getProperty />:用來得到bean 的屬性,即調用其getXxx()方法。
答:JSP 中的請求轉發可利用forward 動做實現:<jsp:forward />;Serlvet 中實現請求轉發的方式爲:
getServletContext().getRequestDispatcher(path).forward(req,res)。
答:用於配置web 應用的信息;如listener、filter 及servlet 的配置信息等。
答:<c:if>、<c:choose>、<c: when>、<c: otherwise>、<c:forEach>、<c:set>。
使用request 對象的getCookies()方法取到全部客戶端cookies 信息。
(1) HttpServletRequest 類的request 對象
做用:表明請求對象,主要用於接受客戶端經過HTTP 協議鏈接傳輸到服務器端的數據。
(2) HttpServletResponse 類的respone 對象
做用:表明響應對象,主要用於向客戶端發送數據
(3) JspWriter 類的out 對象
做用:主要用於向客戶端輸出數據;Out 的基類是JspWriter
(4) HttpSession 類的session 對象
做用:主要用於來分別保存每一個用戶信息,與請求關聯的會話;會話狀態維持是Web 應用開發者必須面對的問題。
(5) ServletContext 類的application 對象
做用:主要用於保存用戶信息,代碼片斷的運行環境;它是一個共享的內置對象,即一個容器中的多個用戶共享一個application 對象,
故其保存的信息被全部用戶所共享.
(6) PageContext 類的pageContext 對象
做用:管理網頁屬性,爲JSP 頁面包裝頁面的上下文,管理對屬於JSP 中特殊可見部分中已命名對象的訪問,它的建立和初始化都是由容器來完成的。
(7) ServletConfig 類的config 對象
做用:代碼片斷配置對象,表示Servlet 的配置。
(8) Object 類的Page(至關於this)對象
做用:處理JSP 網頁,是Object 類的一個實例,指的是JSP 實現類的實例,即它也是JSP自己,只有在JSP 頁面範圍以內纔是合法的。
(9)Exception
做用:處理JSP 文件執行時發生的錯誤和異常
一、配置項目的歡迎頁面。
二、配置Servlet 訪問URL
三、配置Web 容器、Servlet 的初始化參數
四、配置錯誤頁面,能夠經過異常編號進行錯誤頁面跳轉。
五、Servlet 加載優先級。
六、Web 容器監聽器。
七、Web 請求過濾器。
八、設置會話的過時時間。
<jsp:include>:在頁面被請求的時候引入一個文件。
<jsp:useBean>:尋找或者實例化一個JavaBean。
<jsp:setProperty>:設置JavaBean 的屬性。
<jsp:getProperty>:輸出某個JavaBean 的屬性。
<jsp:forward>:把請求轉到一個新的頁面。
<jsp:param>:在請求轉發與include 中進行頁面傳參。
<jsp:plugin>:根據瀏覽器類型爲Java 插件生成OBJECT 或EMBED 標記。
JSP 在本質上就是SERVLET,可是二者的建立方式不同.Servlet 徹底是JAVA 程序代碼構成,擅長於流程控制;而.JSP 由HTML 代碼和JSP 標籤構成,能夠方便地編寫動態網頁.所以在實際應用中採用Servlet 來控制業務流程,而採用JSP 來生成動態網頁,同時在MVC設計模式中JSP 充當視圖層,而Servlet 位於控制層。另外JSP 也是Servlet 技術的擴展,本質上就是Servlet,就是JSP 的另外一種簡易體現形式,由於JSP 編譯後就是一個「類servlet」,再經由JVM 編譯生成Java 類文件來執行。
第一步:加載JVM 類庫。通常是加載由虛擬機提供的基本的運行時類和系統擴展目錄($JAVA_HOME/jre/lib/ext)下的JAR 包。
第二步:加載系統環境變量的類庫。這個加載器用來加載CLASSPATH 環境變量中指定的類。
第三步:加載Tomcat 下面common 文件夾下面的公共類庫。
第四步:加載本身須要的catalina 類庫。
第五步:webapps 下面本身應用的類庫,包括webapp一、webapp1......等。
Servlet 主要是運行在服務器端的一個組件,基於Java 語法構建,延用Java 的傳統優點——可移植、穩健、易開發。CGI 不可移植,爲某一特定平臺編寫的CGI 應用只能運行於這一環境中。每個CGI 應用存在於一個由客戶端請求激活的進程中,而且在請求被服務後被卸載。這種模式將引發很高的內存、CPU 開銷,並且在同一進程中不能服務多個客戶。
CGI(Common Gateway Interface)是HTTP服務器與你的或其它機器 上的程序進行「交談」的一種工具,其程序須運行在網絡服務器上。
Servlet 對CGI 的最主要優點在於一個Servlet 被客戶端發送的第一個請求激活,而後它將繼續運行於後臺,等待後續請求。每一個請求將生成一個新的線程,而不是一個完整的進程,多個客戶可以在同一個進程中同時獲得服務,也就是說它是基於多線程模式。而CGI對每一個請求都產生新的進程,服務完成後就銷燬,因此效率上低於servlet。
當客戶端第一次請求該Servlet 時,由容器調用該Servlet 類的init()方法對該Servlet進行初始化,該初始始化方法只被調用一次。
使用cookie 實現,服務器端將須要保存的信息,經過Cookie 並寫入客戶端磁盤中,下次訪問時,客戶端瀏覽器攜帶寫入的信息提交至服務器,這樣能夠使信息不會因服務器關閉而丟失。
Servlet 的生命週期主要由3 個過程組成。
(1)init()方法:服務器初始化servlet。
(2)service()方法:初始化完畢,servlet 對象調用該方法響應客戶的請求。
(3)destroy()方法:調用該方法消滅servlet 對象。
其中,init()方法只在servlet 第一次被請求加載的時候被調用一次,當有客戶再請求servlet 服務時,web 服務器將啓動一個新的線程,在該線程中,調用service
方法響應客戶的請求。
Cookie 和Session 都是用來服務器端和客戶端進行會話跟蹤的一種技術。區別:Cookie 只能傳輸字符數據,字符是經過加密後寫到客戶端,下次請求時協帶至
服務器端,Cookie 協帶的數據大小爲4KB,對數據量超出4KB 的數據,沒法處理,Cookie數據通常是經過加密後存儲在客戶端,而Session 在服務器端和瀏覽器緩存中都保存在ID的值,經過此ID 來識別惟一的客戶端。Session 對數據存儲的大小沒有限制,但存儲的信息加劇服務器的負載,另外Session 在分佈式服務器的使用上也有限制,Session 沒法跨域,也就是多臺服務器沒法共享會話。 Session 原理:當客戶端用戶訪問時,服務器都爲每一個用戶分配一個惟一的會話ID(Session ID) 保存在服務器內存中,服務器響應客戶端時,將Session ID 寫入瀏覽器緩存中,當下次客戶端請求時,就會將該Session ID 攜帶至服務器,服務器再根據ID 比對,識別不一樣客戶端請求,以此方式來不斷維持服務器和客戶端狀態跟蹤。
DAO 是數據庫訪問接口,負責管理與數據庫打交道操做對象,將對數據維護與操做的方法經過DAO 封裝起來,使得這些操做能夠從系統的業務邏輯中獨立出來,從而使系統中的數據庫操做變得統一和簡單化,方便開發人員對組件職責進行劃分。
Servlet 是用Java 編寫的服務器端程序,由服務器端調用和執行的Java 類。是使用JavaServlet 應用程序設計接口(API)及相關類和方法來構建的,而Java Servlet API 定義了servlet和Java 使能的服務器之間的一個標準接口,這使得Servlets 具備跨服務器平臺的特性,當客戶機發送請求至服務器時,服務器能夠將請求信息發送給Servlet,並讓Servlet 創建起服務器返回給客戶機的響應。Servlet 的功能很普遍,例如能夠建立響應至客戶端的全部HTML元素內容和動態數據內容,與其它組件通信等等。
GET 和 POST.是HTTP 定義的與服務器交互的不一樣方法,是使用HTTP 的標準協議動詞,用於編碼和傳送變量名/變量值對參數,而且使用相關的請求語義。
一、Get 方式在經過URL 提交數據,數據在URL 中能夠看到; POST 方式,數據放置在HTML HEADER內提交,沒法在地址欄看到。
二、GET 方式提交的數據最多隻能有1024 字節,而POST 則沒有此限制。
三、GET 通常用做小數據量的請求,POST 通常用做大數據量的請求,如:附件。
根據客戶端的請求的方式來決定調用哪一個方法處理請求,若是客戶端採用GET 方式發送請求,服務器端則採用doGET()來處理,若是採用post 方式,服務器端則採用doPOST()
setAttribute(String name,Object):設置名字爲name 的request 的參數值
getAttribute(String name):返回由name 指定的屬性值
getAttributeNames():返回request 對象全部屬性的名字集合,結果是一個枚舉的實例
getCookies():返回客戶端的全部Cookie 對象,結果是一個Cookie 數組
getCharacterEncoding():返回請求中的字符編碼方式
getContentLength():返回請求的Body 的長度
getHeader(String name):得到HTTP 協議定義的文件頭信息
getHeaders(String name):返回指定名字的request Header 的全部值,結果是一個枚舉的實例
getHeaderNames():返回因此request Header 的名字,結果是一個枚舉的實例
getInputStream():返回請求的輸入流,用於得到請求中的數據
getMethod():得到客戶端向服務器端傳送數據的方法
getParameter(String name):得到客戶端傳送給服務器端的有name 指定的參數值
getParameterNames():得到客戶端傳送給服務器端的全部參數的名字,結果是一個枚舉的實例
getParametervalues(String name):得到有name 指定的參數的全部值
getProtocol():獲取客戶端向服務器端傳送數據所依據的協議名稱
getQueryString():得到查詢字符串
getRequestURI():獲取發出請求字符串的客戶端地址
getRemoteAddr():獲取客戶端的IP 地址
getRemoteHost():獲取客戶端的名字
getSession([Boolean create]):返回和請求相關Session
getServerName():獲取服務器的名字
getServletPath():獲取客戶端所請求的腳本文件的路徑
getServerPort():獲取服務器的端口號
removeAttribute(String name):刪除請求中的一個屬性
request.getAttribute()獲取在請求對象中設置的屬性,該方法返回對象爲Object 類型,而getParameter()方法是獲取指定的請求參數值,返回值爲String 類型的字符串。
答:JSP 共有如下9 個內置的對象:
1) request 用戶端請求,此請求會包含來自GET/POST 請求的參數
2) response 網頁傳回用戶端的迴應
3) pageContext 網頁的屬性是在這裏管理
4) session 與請求有關的會話期
5) application servlet 正在執行的內容
6) out 用來傳送回應的輸出
7) config servlet 的構架部件
8) page JSP 網頁自己
9) exception 針對錯誤網頁,未捕捉的例外
具體說明以下:
request 表示HttpServletRequest 對象。它包含了有關瀏覽器請求的信息,而且提供了幾個用於獲取cookie, header, 和session 數據的有用的方法。
response 表示HttpServletResponse 對象,並提供了幾個用於設置送回瀏覽器的響應的方法(如cookies,頭信息等)
out 對象是javax.jsp.JspWriter 的一個實例,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。
pageContext 表示一個javax.servlet.jsp.PageContext 對象。它是用於方便存取各類範圍的名字空間、servlet 相關的對象的API,而且包裝了通用的servlet 相關功能的方法。
session 表示一個請求的javax.servlet.http.HttpSession 對象。Session 能夠存貯用戶的狀態信息
applicaton 表示一個javax.servle.ServletContext 對象。這有助於查找有關servlet引擎和servlet 環境的信息
config 表示一個javax.servlet.ServletConfig 對象。該對象用於存取servlet 實例的初始化參數。
page 表示從該頁面產生的一個servlet 實例
1) <%@include >用來在JSP 頁面包含靜態資源
2) <%@taglib >用來指定JSP 頁面標籤類型
3) <%@page >用來指定頁面相關屬性
request、session、application、Cookie 等,其中比較經常使用的像request、Session。request主要是應用在同一請求週期內,可能進行對象或參數的共享傳遞。而Session 主要能夠應用於同一客戶端會話週期內進行參數屬性的共享。
MVC 是Model-View-Controller 的簡寫。Model 表明的是應用的業務邏輯(經過JavaBean,EJB 組件實現), View 是應用的表示面(由JSP 頁面產生),Controller 是提供應用的處理過程控制(通常是一個Servlet),經過這種設計模型把應用邏輯,處理過程和顯示邏輯分紅不一樣的組件實現。這些組件能夠進行交互和重用。
1)操做系統、後臺數據庫的安全問題:這裏指操做系統和後臺數據庫的漏洞,配置不當,如弱口令等等,致使黑客、病毒能夠利用這些缺陷對網站進行攻擊。
2)Web 發佈系統的漏洞:Web 業務經常使用的發佈系統(即Web 服務器),如IIS、Apache等,這些系統存在的安全漏洞,會給入侵者可乘之機。
3)Web 應用程序的漏洞:主要指Web 應用程序的編寫人員,在編程的過程當中沒有考慮到安全的因素,使得黑客可以利用這些漏洞發起對網站的攻擊,好比SQL 注入、跨站腳本攻擊等等。
4)自身網絡的安全情況:網站服務器所處的網絡安全情況也影響着網站的安全,好比網絡中存在的DoS 攻擊等,也會影響到網站的正常運營。
Web 服務器的性能考慮主要有:併發用戶數、事務安全、負載均衡、時段流量、網絡帶寬網格安全等。
網絡安全方面:
(1) 關鍵數據的保護,例如用戶數據等
(2) 功能服務的正常提供。
(3) 網站的防攻擊能力。
(4) 對異常災害的恢復能力。
程序性能:
(1) 響應請求並運行得出結果的時間。
(2) 錯誤的檢測和攔截。
(3) 擴展性。
Apache、Tomcat、Jetty、Jboss、Websphere、WebLogic
String s=new String(text.getBytes(「iso8859-1」),」gb2312」)
上面兩種都是在當前頁面加載或包含另外一頁面內容,而使用<jsp:include>動做標籤實現時它老是會檢查所含文件中的變化,適合用於包含動態頁面,而且包含的頁頁要符合web容器語法要求,由於被包含的頁面會被web 引擎進行編譯和加載,同時包含時會發送http請求,因此能夠攜帶參數。而<%@include>是用僞碼實現,定不會檢查所含文件的變化,只是簡單的將被加載的資源拷貝到了當前,而這種包含更多的是一種重用,不能實現參數共享。
web 服務器啓動時會創建必定數量的池鏈接,並一直維持很多於此數目的池鏈接。客戶端程序須要鏈接時,池驅動程序會返回一個未使用的池鏈接並將其表記爲忙。若是當前沒有空閒鏈接,池驅動程序就新建必定數量的鏈接,新建鏈接的數量有配置參數決定。當使用的池鏈接調用完成後,池驅動程序將此鏈接表記爲空閒,其餘調用就能夠使用這個鏈接。實現方式,返回的Connection 是原始Connection 的代理,代理Connection 的close 方法不是真正關鏈接,而是把它代理的Connection 對象還回到鏈接池中。
<%@ page isThreadSafe="false"%>
固然由web 容器進行建立管理的對象主要有application,session,request,page 這四個級別的對象,而這4 種級別的對象,根據它們自身的特色來管理所持的對象,如:request中的對象的生命週期就是在請求範圍內,Session 在是會話週期內,page 是在當前JSP Page內,Application 是在服務器啓、停的週期內。
當一個JSP 頁面第一次被訪問的時候,JSP 引擎將執行如下步驟:
(1)將JSP 頁面翻譯成一個Servlet,這個Servlet 是一個java 文件,同時也是一個完整的java 程序,第一次運行將java文件轉換爲二進制碼
(2)再由java 編譯器對這個二進制碼 進行編譯,獲得可執行class 文件
(3)再由JVM 解釋器來解釋執行class 文件,生成向客戶端發送的應答,而後發送給客戶端
以上三個步驟僅僅在JSP 頁面第一次被訪問時纔會執行,之後的訪問速度會由於class文件已經生成而大大提升。
動態SQL 拼裝注入、SQL 溢出漏洞、獲取管理員權限、
讀未提交 讀提交 重複讀 序列化
據可是第二個事務卻中途失敗退
出致使對數據兩個修改都失效了這是系統沒有執行任何鎖操做所以併發事務並無被隔離開來
2. 髒讀(Dirty Reads):一個事務開始讀取了某行數據可是另一個事務已經更新了此數據但沒有可以及時提交。這是至關危險極可能全部操做都被回滾
3. 不可重複讀(Non-repeatable Reads):一個事務對同一行數據重複讀取兩次可是卻獲得了不一樣結果。例如在兩次讀取中途有另一個事務對該行數據進行了修改並提交
4. 兩次更新問題(Second lost updates problem):沒法重複讀取特例,有兩個併發事務同時讀取同一行數據而後其中一個對它進行修改提交而另外一個也進行了修改提交這就會形成第一次寫操做失效
5. 幻讀(Phantom Reads):也稱爲幻像(幻影)。事務在操做過程當中進行兩次查詢,第二次查詢結果包含了第一次查詢中未出現的數據(這裏並不要求兩次查詢SQL 語句相同)這是由於在兩次查詢過程當中有另一個事務插入數據形成的
數據庫事務的屬性包括四大類,即ACID。ACID分別是四個英文單詞的首寫字母,這四個英文單詞是Atomicity(原子性)、 Consistency(一致性)、Isolation(隔離性)、Durability(持久性)。
一、原子性 Atomicity
事務的原子性指的是,事務中包含的程序做爲數據庫的邏輯工做單位,它所作的對數據修改操做要麼所有執行,要麼徹底不執行。這種特性稱爲原子性。
二、一致性 Consistency
事務的一致性指的是在一個事務執行以前和執行以後數據庫都必須處於一致性狀態。這種特性稱爲事務的一致性。假如數據庫的狀態知足全部的完整性約束,就說該數據庫是一致的。
三、隔離性 Isolation
隔離性指併發的事務是相互隔離的。即一個事務內部的操做及正在操做的數據必須封鎖起來,不被其它企圖進行修改的事務看到。
四、持久性 Durability
持久性意味着當系統或介質發生故障時,確保已提交事務的更新不能丟失。即一旦一個事務提交,DBMS保證它對數據庫中數據的改變應該是永久性的,耐得住任何數據庫系統故障。持久性經過數據庫備份和恢復來保證。
嚴格來講數據庫事務屬性(ACID)都是由數據庫管理系統來進行保證的,在整個應用程序運行過程當中應用無需去考慮數據庫的ACID實現。
CREATE PROCEDURE getUserInfo_PROC (存儲過程名)
AS
begin
//過程體
end
GO
優勢:
(1) 減輕網絡流量
(2) 可被做爲一種安全機制來使用
(3) 容許標準組件式編程
(4) 可以實現較快的執行速度
缺點:
(1) 可移值性差
(2) 重構複雜
主外鍵:保持數據完整性。數據庫事務是指做爲單個邏輯工做單元執行的一系列操做。事務能夠確保除非事務性單元內的全部操做都成功完成,不然不會永久更新面向數據的資源。事務內相關操做組合爲一個要麼所有成功要麼所有失敗,能夠簡化錯誤恢復並使應用程序更加可靠。一個邏輯工做單元要成爲事務,必須知足所謂的ACID(原子性、一致性、隔離性和持久性)屬性。
(1) 主鍵約束(Primary Key Constraint):要求主鍵列數據惟一,而且不容許爲空
(2) 惟一約束(Unique Constraint):要求該列惟一,容許爲空,但只能出現一個空值。
(3) 檢查約束(Check Constraint):某列取值範圍限制、格式限制等,若有關年齡的約束
(4) 默認約束(Default Constraint):某列的默認值,如咱們的男性學員較多,性別默認爲「男」
(5) 外鍵約束(Foreign Key Constraint):用於兩表間創建關係,須要指定引用主表的那列
(1)求各個班的平均成績
Select classid,avg(grade) from student group by classid
(2)查詢出比該班平均成績高的學生的全部信息
select w.id,w. grade,b.avg_ grade from student w,(select classid,avg(grade) avg_grade from student group by classid) b where w. classid =b. classid and w.grade >b.avg_grade;
select * from student where name in (select name from student where name like '張%' group by name having avg(score) > 75)
學生表student 分數表grade
select s.name from student s where s.id not in(select g.studentid from grade g where g.marks<=80)
或者
select s.name from student s where not exists(select 1 from grade g where g.studentid=s.id and g.marks<=80)
truncate 是DDL 語言.delete 是DML 語言DDL 語言是自動提交的.命令完成就不可回滾.truncate 的速度也比delete 要快得多.
相同點:truncate 和不帶where 子句的delete, 以及drop 都會刪除表內的數據
不一樣點:
1. truncate 和delete 只刪除數據不刪除表的結構(定義)drop 語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index);
依賴於該表的存儲過程/函數將保留,可是變爲invalid 狀態.
2.delete 語句是dml,這個操做會放到rollback segement 中,事務提交以後才生效;若是有相應的trigger,執行的時候將被觸發.truncate,drop 是ddl, 操做當即生效,原數據不放到rollback segment 中,不能回滾.操做不觸發trigger.
3.delete 語句不影響表所佔用的extent, 高水線(high watermark)保持原位置不動顯然drop 語句將表所佔用的空間所有釋放truncate 語句缺省狀況下見空間釋放到minextents 個extent,除非使用reusestorage; truncate 會將高水線復位(回到最開始).
4.速度,通常來講: drop> truncate > delete
5.安全性:當心使用drop 和truncate,尤爲沒有備份的時候.不然哭都來不及使用上,想刪除部分數據行用delete,注意帶上where 子句. 回滾段要足夠大.
想刪除表,固然用drop想保留表而
select id,avg(成績) from table group by id select * from table where 成績> (select 成績from (select id,avg(成績) 成績from table group by id)as a )
Select top N from table where id not in (select top (M-1)*N id from table )
第一範式(1NF):
字段具備原子性,不可再分。全部關係型數據庫系統都知足第一範式)數據庫表中的字段都是單一屬性的,不可再分。例如,姓名字段,其中的姓和名必須做
爲一個總體,沒法區分哪部分是姓,哪部分是名,若是要區分出姓和名,必須設計成兩個獨立的字段。
第二範式(2NF):
第二範式(2NF)是在第一範式(1NF)的基礎上創建起來的,即知足第二範式(2NF)必須先知足第一範式(1NF)。要求數據庫表中的每一個實例或行必須能夠被唯一地區分。一般須要爲表加上一個列,以存儲各個實例的唯一標識。這個唯一屬性列被稱爲主關鍵字或主鍵。第二範式(2NF)要求實體的屬性徹底依賴於主關鍵字。所謂徹底依賴是指不能存在僅依賴主關鍵字一部分的屬性,若是存在,那麼這個屬性和主關鍵字的這一部分應該分離出來造成一個新的實體,新實體與原實體之間是一對多的關係。爲實現區分一般須要爲表加上一個列,以存儲各個實例的唯一標識。簡而言之,第二範式就是非主屬性非部分依賴於主關鍵字。
第三範式(3NF):
知足第三範式(3NF)必須先知足第二範式(2NF)。簡而言之,第三範式(3NF)要求一個數據庫表中不包含已在其它表中已包含的非主關鍵字信息。
因此第三範式具備以下特徵:
1,每一列只有一個值
2,每一行都能區分。
3,每個表都不包含其餘表已經包含的非主關鍵字信息。
例如,帖子表中只能出現發帖人的id,而不能出現發帖人的id,還同時出現發帖人姓名,不然,只要出現同一發帖人id 的全部記錄,它們中的姓名部分都必須嚴格保持一致,這就是數據冗餘。
inner join(等值鏈接) 只返回兩個表中聯結字段相等的行
left join(左聯接) 返回包括左表中的全部記錄和右表中聯結字段相等的記錄
right join(右聯接) 返回包括右表中的全部記錄和左表中聯結字段相等的記錄
Mysql 數據庫:
SELECT TOP 頁大小* FROM table1 WHERE id NOT IN (
SELECT TOP 頁大小*(頁數-1) id FROM table1 ORDER BY id
) ORDER BY id
Oracle 數據庫:
在ORACLE 大數據量下的分頁解決方法。通常用截取ID 方法,還有是三層嵌套方法。
截取ID 的方法
select * from emp a, (select empno,rownum as num from emp)b where a.empno=b.empno and b.num between 5 and 7;
三層嵌套
SELECT * FROM ( SELECT A.*, rownum r FROM ( SELECT * FROM emp ) A WHERE rownum <=7 ) B WHERE r >5;
ORACLE 的row_id 是一個僞列,其個是爲18 個字節可將這18 個字節用6363 來劃分,分別表示段編號,數據文件編號,數據塊
嵌入式數據庫主要像:SQLite、
傳統數據庫服務器:SQL Server 、Oracle、MySQL
嵌入式數據庫,SQLite 的主要特色:
1. 支持事件,不須要配置,不須要安裝,也不須要管理員;
2. 支持大部分SQL92;
3.一個完整的數據庫保存在磁盤上面一個文件,同一個數據庫文件能夠在不一樣機器上面使用,最大支持數據庫到2T,字符和BLOB 的支持僅限制於可用內存;
4.整個系統少於3 萬行代碼,少於250KB 的內存佔用(gcc),大部分應用比目前常見的客戶端/服務端的數據庫快,沒有其它依賴
5. 源代碼開放,代碼95%有較好的註釋,簡單易用的API。官方帶有TCL 的編譯版本。
關係數據庫特色:
一、更好的安全性、多用戶管理
二、強大的數據管理能力,如索引、視圖等關係對象
三、強大的數據庫編程式的設計,像T-SQL、存儲過程、遊標
四、豐富的數據類型
inserted 表反映插入或更新操做時插入的記錄
deleted 表反映刪除或更新操做時刪除的記錄
返回類型 sql調用
1) 通常用於在數據庫中完成特定的業務 任務的
2) 能夠定義返回類型,也能夠不定義返回類型
3) SQL 語句中不能夠調用
1) 通常用於特定的數據查詢或數據轉換處理
2) 申請時必需要定義返回類型,且程序體中必須定義return 語句。
3) 不能獨立執行,必須做爲表達式的一部分調用
4) SQL 語句中能夠調用。
創建主鍵,爲數據庫建立索引,創建存儲過程,觸發器,可提升查詢速度。
1.單列索引與複合索引
一個索引能夠由一個或多個列組成,用來建立索引的列被稱爲「索引列」。單列索引是基於單列所建立的索引,複合索引是基於兩列或者多列所建立的索引。
2.惟一索引與非惟一索引
惟一索引是索引列值不能重複的索引,非惟一索引是索引列能夠重複的索引。不管是惟一索引仍是非惟一索引,索引列都容許取NULL 值。默認狀況下,Oracle 建立的
索引是不惟一索引。
3.B 樹索引
B 樹索引是按B 樹算法組織並存放索引數據的,因此B 樹索引主要依賴其組織並存放索引數據的算法來實現快速檢索功能。
4.位圖索引
位圖索引在多列查詢時,能夠對兩個列上的位圖進行AND 和OR 操做,達到更好的查詢效果。
5.函數索引
Oracle 中不只可以直接對錶中的列建立索引,還能夠對包含列的函數或表達式建立索引,這種索引稱爲「位圖索引
優勢:
一、經過建立惟一性索引,能夠保證數據庫表中每一行數據的惟一性。
二、能夠大大加快數據的檢索速度,這也是建立索引的最主要的緣由。
三、能夠加速表和表之間的鏈接,特別是在實現數據的參考完整性方面特別有意義。
四、在使用分組和排序子句進行數據檢索時,一樣能夠顯著減小查詢中分組和排序的時間。
五、經過使用索引,能夠在查詢的過程當中,使用優化隱藏器,提升系統的性能。
缺點:
一、建立索引和維護索引要耗費時間,這種時間隨着數據量的增長而增長。
二、索引須要佔物理空間,除了數據表佔數據空間以外,每個索引還要佔必定的物理空間,若是要創建聚簇索引,那麼須要的空間就會更大。
三、當對錶中的數據進行增長、刪除和修改的時候,索引也要動態的維護,這樣就下降了數據的維護速
共2 種,一種DML 觸發,就是遇到DML 事件時觸發執行,像insert\update\delete。一種DDL 觸發,遇到DDL 事件時觸發,像Login Datatabase、更改數據庫狀態、create 語句等
Oracle 數據庫有三種標準的備份方法,它們分別是導出/導入(EXP/IMP)、熱備份和冷備份。導出備份是一種邏輯備份,冷備份和熱備份是物理備份。
10G 有幾種新功能進行備份,像數據磅
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by
declare cur cursor keyset for get 返回null,load classnotfoundException
利用僞列標識進行查詢。
答:最好的辦法是利用sql 語句進行分頁,這樣每次查詢出的結果集中就只包含某頁的數據
內容。再sql 語句沒法實現分頁的狀況下,能夠考慮對大的結果集經過遊標定位方式來獲取
某頁的數據。
sql 語句分頁,不一樣的數據庫下的分頁方案各不同,下面是主流的三種數據庫的分頁sql:
sql server:
String sql =
"select top " + pageSize + " * from students where id not in" +
"(select top " + pageSize * (pageNumber-1) + " id from students order by id)" +
"order by id";
mysql:
String sql =
"select * from students order by id limit " + pageSize*(pageNumber-1) + "," +
pageSize;
oracle:
String sql =
"select * from " +
(select *,rownum rid from (select * from students order by postime desc) where
rid<=" + pagesize*pagenumber + ") as t" +
"where t>" + pageSize*(pageNumber-1);
簡單:Number,Boolean,String,Null,Undefined
複合:Object,Array,Function
(1) innerHTML 設置或獲取位於對象起始和結束標籤內的HTML
(2) outerHTML 設置或獲取對象及其內容的HTML 形式
(3) innerText 設置或獲取位於對象起始和結束標籤內的文本
(4) outerText 設置(包括標籤)或獲取(不包括標籤)對象的文本
var json_ =
{
stuId : 2012002,
stuName:‘李華明’,
stuAge:20,
stuSex:’男’
}
若是一個JavsScript 對象轉JSON 能夠經過eval()函數轉換成JSON 對象進行訪問。
JSON: (javaScript Object Notation)是一種輕量級的數據交換格式。
JSON 兩種結構:
名稱/值對的集合,不一樣的語言中,它被理解爲對象,記錄,結構,字典,哈希表,有鍵列表,關聯數組。值的有序列表,數組
jQuery:
jQuery 由美國人John Resig 建立是一個優秀的javascript 框架使用戶可以方便的處理HTML documents events 實現動畫效果,而且方便地爲網站提供AJAX 交互。
$(‘foo’).att(‘attr’).val()
能夠經過jQuery 提供的元素選擇器或ID 選擇器爲實現,如:
$(‘div’).append(‘Hello ’);要求只能有一個div 不然$(‘div’)返回的是數組$(‘#ID 名稱’).append(「hello」);
由於jQuery 是輕量級的框架,大小不到30kb,它有強大的選擇器,出色的DOM 操做的封裝,有可靠的事件處理機制(jQuery 在處理事件綁定的時候至關的可靠),完善的ajax(它的ajax 封裝的很是的好,不須要考慮複雜瀏覽器的兼容性和XMLHttpRequest 對象的建立和使用的問題。) 出色的瀏覽器的兼容性。並且支持鏈式操做,隱式迭代。行爲層和結構層的分離,還支持豐富的插件,jquery 的文檔也很是的豐富。
答:這個答案是開發的,看你是否有相關的項目經驗。例前臺拿不到值,JSON 但是出現的錯誤(多了一個空格等)這編譯是不會報錯的jquery 庫與其餘庫衝突:
1>若是其餘庫在jquery 庫以前導入的話
1 咱們能夠經過jquery.noconflict()將變量的$的控制權過分給其餘庫
2 自定義快捷鍵,用一個變量接住jquery.noconflict()
3 經過函數傳參
2>若是jquery 庫在其餘庫以前導入就直接使用jquery 今天在處理一個數據問題時,發現jQuery.ajax()方法返回的值一直有問題,清除緩存後數據無誤,屢次測試後發現返回的值都是以前的值,而且一直未執行url(後臺爲JAVA,設置斷點一直未進入)。在網上查找下,發現是未設置type 的緣由。若是沒設置jQuery.ajax 的type="Post",那麼ajax 就會默認type="Get",這就會致使以前數據被緩存起來。加上type="Post",問題解決!
jQuery 中的選擇器大體分爲:基本選擇器,層次選擇器,過濾選擇器,表單選擇器
jQuery 選擇器支持CSS 裏的選擇器,jQuery 選擇器可用來添加樣式和添加相應的行爲CSS中的選擇器是隻能添加相應的樣式
簡單的寫法$('ID') 來代替document.getElementById()函數支持CSS1 到CSS3 選擇器完善的處理機制(就算寫錯了id 也不會報錯)
1) 選擇器中含有".","#","[" 等特殊字符的時候須要進行轉譯
2) 屬性選擇器的引號問題
3) 選擇器中含有空格的注意事項
jquery 轉DOM 對象:jQuery 對象是一個數組對象,能夠經過[index]的豐富獲得相應的DOM 對象還能夠經過get[index]去獲得相應的DOM 對象。DOM 對象轉jQuery 對象:$(DOM對象)
若是是一些常規的ajax 程序的話,使用load(),$.get(),$.post(),就能夠搞定了, 通常我會使用的是$.post() 方法。若是須要設定beforeSend(提交前回調函數),error(失敗後處理),success
答: 好用的。由於jQuery 提供了一些平常開發中夙瑤的快捷操做,例load,ajax,get,post等等,因此使用jQuery 開發ajax 將變得極其簡單,咱們就能夠集中精力在業務和用戶的體驗上,不須要去理會那些繁瑣的XMLHttpRequest 對象了。
1) $.get() 方法使用GET 方法來進行異步請求的。$.post() 方法使用POST 方法來進行異步請求的。
2) get 請求會將參數跟在URL 後進行傳遞,而POST 請求則是做爲HTTP 消息的實體內容發送給Web 服務器的,這種傳遞是對用戶不可見的。
3) get 方式傳輸的數據大小不能超過2KB 而POST 要大的多
4) GET 方式請求的數據會被瀏覽器緩存起來,所以有安全問題。
答:load 方法通常在載入遠程HTML 代碼並插入到DOM 中的時候用一般用來從Web 服務器上獲取靜態的數據文件。若是要傳遞參數的話,能夠使用$.get() 或$.post()
addClass() 來追加樣式
removeClass() 來刪除樣式
toggle() 來切換樣式
答: 首先去裝載文檔,在頁面家在完畢後,瀏覽器會經過javascript 爲DOM 元素添加事件。
【參考】答:使用過。hide() 和show() 同時修改多個樣式屬性。像高度,寬度,不透明度。fadeIn()和fadeOut() fadeTo() 只改變不透明度slideUp() 和slideDown() slideToggle() 只改變高度animate() 屬於自定義動畫的方法。
【參考】答:看我的的實力和經驗來回答了。
【參考】答:通常我會使用的是$.post() 方法。若是須要設定beforeSend(提交前回調函數),error(失敗後處理),success(成功後處理)及complete(請求完成後處理)回調函數等,這個時候我會使用$.ajax()
【參考】答:四種行內式,內嵌式,導入式,連接式
【參考】append(),appendTo(),prepend(),prependTo(),after(),insertAfter()before(),insertBefore() 大體能夠分爲內部追加和外部追加
append() 表式向每一個元素內部追加內容。appendTo() 表示講全部的元素追加到指定的元素中。例$(A)appendTo(B) 是將A 追加到B
中下面的方法解釋相似
【參考】 wrapAll(),wrap(), wrapInner() 須要在文檔中插入額外的結構化標記的時候能夠使用這些包裹的方法應爲它不會帛畫原始文檔的語義
【參考】jQuery 中能夠用attr()方法來獲取和設置元素屬性removeAttr() 方法來刪除元素屬性
【參考】html()方法相似於innerHTML 屬性能夠用來讀取或者設置某個元素中的HTML 內容注意:html() 能夠用於xhtml 文檔不能用於xml 文檔text() 相似於innerText 屬性能夠用來讀取或設置某個元素中文本內容。val() 能夠用來設置和獲取元素的值
children() 取得匹配元素的子元素集合,只考慮子元素不考慮後代元素
next() 取得匹配元素後面緊鄰的同輩元素
prev() 取得匹配元素前面緊鄰的同輩元素
siblings() 取得匹配元素先後的全部同輩元素
closest() 取得最近的匹配元素find() 取得匹配元素中的元素集合包括子代和後代
【參考】答:子代元素是找子節點下的全部元素,後代元素是找子節點或子節點的子節點中的元素
【參考】能夠在jQuery 中有二者替換節點的方式replaceWith() 和replaceAll() 例如在<ptitle="hao are you">hao are you</p>替換成<strong>I am fine<strong>$('p').replaceWith('<strong>I am fine</strong>'); replaceAll 與replaceWith 的用法先後調換一下便可。
【參考】發送請求前能夠修改XMLHttpRequest 對象的函數,在beforeSend 中若是返回false能夠取消本次的Ajax 請求。XMLHttpRequest 對象是惟一的參數因此在這個方法裏能夠作驗證
【參考】 $('prev~div') 只能選擇'#prev'元素後面的同輩<div>元素而siblings()方法與先後的文職無關,只要是同輩節點就都能匹配。
【參考】使用過,在$.getJSON() 方法的時候就是。由於$.getJSON() 就是用於加載JSON 文件的
【參考】我在公司使用過:first 查詢第一個,:last 查詢最後一個,:odd 查詢奇數可是索引從0 開始:even 查詢偶數, eq(index)查詢相等的,:gt(index)查詢大於index 的,:lt 查詢小於index:header 選取全部的標題等
【參考】能。使用nextAll() 和使用$('prev~siblindgs') 是同樣的
答:addClass() 方法,attr() 方法
【參考】 兩個方法有類似的功能,可是在實行時機方面是有區別的。
1) window.onload 方法是在網頁中全部的元素(包括元素的全部關聯文件)徹底加載到瀏覽器後才執行的。
2) $(document).ready() 方法能夠在DOM 載入就緒時就對其進行操縱,並調用執行綁定的函數。
【參考】要處理緩存就是禁用緩存.
1) 經過$.post() 方法來獲取數據,那麼默認就是禁用緩存的。
2) 經過$.get()方法來獲取數據,能夠經過設置時間戳來避免緩存。能夠在URL 後面加上+(+new Date)例$.get('ajax.xml?'+(+new Date),function () { //內容
});
3) 經過$.ajax 方法來獲取數據,只要設置cache:false 便可。
【參考】
1) $.getScript() 方法能夠直接加載.js 文件,而且不須要對javascript 文件進行處理,javascript 文件會自動執行。
2) $.getJson() 是用於加載JSON 文件的,用法和$.getScript()
【參考】
《jquery 基礎教程》《jquery 實戰》《鋒利的jquery 》《巧用jquery 》
《jQuery 用戶界面庫學習指南》等
【參考】
1 $("#msg").text() 是返回id 爲msg 的元素節點的文本內容
2 $("#msg").text("<b>new content</b>"); 是將「<b>new content</b>」 做爲普通文本串寫入id 爲msg 的元素節點內容中, 頁面顯示粗體的<b>new content</b>
【參考】 $('input[name=items]').get(1).checked = true;
【參考】在網頁中每一個id 名稱只能用一次,class 能夠容許重複使用
【參考】HTML 格式,JSON 格式,javascript 格式,XML 格式
1) HTML 片斷提供外部數據通常來講是最簡單的。
2) 若是數據須要重用,並且其餘應用程序也可能一次受到影響,那麼在性能和文件大小方面具備優點的JSON 一般是不錯的選擇。
3) 而當遠程應用程序未知時,XML 則可以爲良好的互操做性提供最可靠的保證。
【參考】
1) 獲取頁面的元素
2) 修改頁面的外觀
3) 改變頁面大的內容
4) 響應用戶的頁面操做
5) 爲頁面添加動態效果
6) 無需刷新頁面,便可以從服務器獲取信息
7) 簡化常見的javascript 任務
【參考】三種,html 拼接的,json 數組,form 表單經serialize()序列化的。
【參考】
hover()和toggle()都是jQuery 中兩個合成事件。hover()方法用於模擬光標懸停事件。toggle()方法是連續點擊事件。
【參考】 知道,事件冒泡是從裏面的往外面開始觸發。在jQuery 中提供了stopPropagation()方法能夠中止冒泡。
【參考】能夠用event.preventDefault()或在事件處理函數中返回false,即return false;
【參考】
formData:返回一個數組,能夠經過循環調用來校驗
jaForm:返回一個jQuery 對象,全部須要先轉換成dom 對象
fieldValue:返回一個數組beforeSend()
【參考】
插件的好處:對已有的一系列方法或函數的封裝,以便在其餘地方從新利用,方便後期維護和提升開發效率插件的分類:封裝對象方法插件、封裝全局函數插件、選擇器插件
注意的地方:
1) 插件的文件名推薦命名爲jquery.[插件名].js,以避免和其餘的javaScript 庫插件混淆。
2) 全部的對象方法都應當附加到jQuery.fn 對象上,而全部的全局函數都應當附加到jQuery對象自己上。
3) 插件應該返回一個jQuery 對象,以保證插件的可鏈式操做。
4) 避免在插件內部使用$做爲jQuery 對象的別名,而應使用完整的jQuery 來表示,這樣能夠避免衝突或使用閉包來避免。
5) 全部的方法或函數插件,都應當一分好結尾,不然壓縮的時候可能出現問題。在插件頭部加上分號,這樣能夠避免他人的不規範代碼給插件帶來影響。
6) 在插件中經過$.extent({})封裝全局函數,選擇器插件,擴展已有的object 對象
7) 經過$.fn.extend({})封裝對象方法插件
【參考】jQuery 的html()能夠給如今元素附加新的元素直接在元素還未生成前就綁定確定是無效的,由於所綁定的元素目前根本不存在。因此咱們能夠經過live 和livequery 來動態綁定事件
(1) window.event:表示當前的事件對象,IE 有這個對象,FF 沒有,FF 經過給事件處理函數傳遞事件對象
(2) 獲取事件源IE 用srcElement 獲取事件源,而FF 用target 獲取事件源
(3) 添加,去除事件IE:element.attachEvent(「onclick」, function) element.detachEvent(「onclick」, function)
FF : element.addEventListener(「click」, function, true) element.removeEventListener(「click」,function, true)
(4) 獲取標籤的自定義屬性IE:div1.value 或div1[「value」]FF:可用div1.getAttribute(「value」)
(5) document.getElementByName()和document.all[name]IE;document.getElementByName()和document.all[name]均不能獲取div 元素
FF:能夠
(6) input.type 的屬性
IE:input.type 只讀
FF:input.type 可讀寫
(7) innerText textContent outerHTML
IE:支持innerText, outerHTML
FF:支持textContent
(8) 是否可用id 代替HTML 元素
IE:能夠用id 來代替HTML 元素
FF:不能夠這裏只列出了常見的,還有很多
Div+CSS 標準的優勢:
1.大大縮減頁面代碼,提升頁面瀏覽速度,縮減帶寬成本;
2.結構清晰,容易被搜索引擎搜索到,天生優化了seo
3.縮短改版時間。只要簡單的修改幾個CSS 文件就能夠從新設計一個有成百上千頁面的站點。
4.強大的字體控制和排版能力。CSS 控制字體的能力比糟糕的FONT 標籤好多了,有了CSS,咱們再也不須要用FONT 標籤或者透明的1 px GIF 圖片來控制標題,改變字體顏色,字體樣式等等。
5.CSS 很是容易編寫。你能夠象寫html 代碼同樣輕鬆地編寫CSS。
6.提升易用性。使用CSS 能夠結構化HTML
7.能夠一次設計,隨處發佈。更好的控制頁面佈局
DIV(division)是一個塊級元素,能夠包含段落、標題、表格,乃至諸如章節、摘要和備註等。而SPAN 是行內元素,SPAN 的先後是不會換行的,它沒有結構的意義,純粹是應用樣式,當其餘行內元素都不合適時,能夠使用SPAN在HTML 視圖中工做時,能夠在<DIV> 內編輯文本,將某些字包含在<SPAN> 元素內,以強調那些字。與<DIV> 不一樣,<SPAN> 和它周圍的文本一塊兒移動
層疊樣式表,用來進行頁面樣式設計,美化頁面顯示
有DOM,SAX,STAX 等
DOM:處理大型文件時其性能降低的很是厲害。這個問題是由DOM 的樹結構所形成的,這種結構佔用的內存較多,並且DOM 必須在解析文件以前把整個文檔裝入內存,適合對XML 的隨機訪問SAX:不現於DOM,SAX 是事件驅動型的XML 解析方式。它順序讀取XML 文件,不須要一次所有裝載整個文件。當遇到像文件開頭,文檔結束,或者標籤開頭與標籤結束時,它會觸發一個事件,用戶經過在其回調事件中寫入處理代碼來處理XML 文件,適合對XML 的順序訪問
第86 頁共188 頁
問
Ajax 基本上就是把JavaScript 技術和XMLHttpRequest 對象放在Web 表單和服務器之間。當用戶填寫表單時,數據發送給一些JavaScript 代碼而不是直接發送給服務
器。相反,JavaScript 代碼捕獲表單數據並向服務器發送請求。同時用戶屏幕上的表單也不會閃爍、消失或延遲。換句話說,JavaScript 代碼在幕後發送請求,用戶甚至不知道請求的發出。更好的是,請求是異步發送的,就是說JavaScript 代碼(和用戶)不用等待服務器的響應。所以用戶能夠繼續輸入數據、滾動屏幕和使用應用程序。而後,服務器將數據返回JavaScript 代碼(仍然在Web 表單中),後者決定如何處理這些數據。它能夠迅速更新表單數據,讓人感受應用程序是當即完成的,表單沒有提交或刷新而用戶獲得了新數據。JavaScript 代碼甚至能夠對收到的數據執行某種計算,再發送另外一個請求,徹底不須要用戶干預!這就是XMLHttpRequest 的強大之處。它能夠根據須要自行與服務器進行交互,用戶甚至能夠徹底不知道幕後發生的一切。結果就是相似於桌面應用程序的動態、快速響應、高交互性的體驗。
setInterval(myfun(),1000)
兩種形式dtd 、schema,
本質區別:schema 自己是xml 的,能夠被XML 解析器解析(這也是從DTD 上發展schema 的根本目的)。
解析的中有:DOM、SAX、JDOM、DOM4J 等。
DOM:處理大型文件時其性能降低的很是厲害。這個問題是由DOM 的樹結構所形成的,這種結構佔用的內存較多,並且DOM 必須在解析文件以前把整個文檔裝入內存,適合對XML 的隨機訪問SAX:不現於DOM,SAX 是事件驅動型的XML 解析方式。它順序讀取XML 文件,不須要一次所有裝載整個文件。當遇到像文件開頭,文檔結束,或者標籤開頭與標籤結束時,它會觸發一個事件,用戶經過在其回調事件中寫入處理代碼來處理XML 文件,適合對XML的順序訪問。
3XX:重定向,這類狀態碼錶明須要客戶端採起進一步的操做才能完成請求。一般,這些狀態碼用來重定向,後續的請求地址(重定向目標)在本次響應的Location 域中指明。
302:請求的資源如今臨時從不一樣的URI 響應請求
303:對應當前請求的響應能夠在另外一個URI 上被找到,並且客戶端應當採用GET 的方式訪問那個資源。
4XX:請求錯誤,這類的狀態碼錶明瞭客戶端看起來可能發生了錯誤,妨礙了服務器的處理。像,40三、40四、405 錯誤
5XX:服務器錯誤,這類狀態碼錶明瞭服務器在處理請求的過程當中有錯誤或者異常狀態發生,也有多是服務器意識到以當前的軟硬件資源沒法完成對請求的處理。
像,500、50一、502 等錯誤
有3 種方法。先序遍歷、中序遍歷、後序遍歷
1) 在可讀性方面,JSON 和XML 的數據可讀性基本相同。JSON 和XML 的可讀性可謂不相上下,一邊是建議的語法,一邊是規範的標籤形式,很難分出勝負。
2) 在可擴展性方面,XML 天生有很好的擴展性,JSON 固然也有,沒有什麼是XML 能擴展,JSON 不能的。
3) 在編碼難度方面,XML 有豐富的編碼工具,好比Dom4j、JDom 等,JSON 也有json.org提供的工具,可是JSON 的編碼明顯比XML 容易許多,即便不借助工具也能寫出JSON的代碼,但是要寫好XML 就不太容易了。
4) 在解碼難度方面,XML 的解析得考慮子節點父節點,讓人頭昏眼花,而JSON 的解析難度幾乎爲0。這一點XML 輸的真是沒話說。
5) 在流行度方面,XML 已經被業界普遍的使用,而JSON 纔剛剛開始,可是在Ajax 這個特定的領域,將來的發展必定是XML 讓位於JSON。到時Ajax 應該變成Ajaj(AsynchronousJavascript and JSON)了。
6) JSON 和XML 一樣擁有豐富的解析手段。
7) JSON 相對於XML 來說,數據的體積小。
8) JSON 與JavaScript 的交互更加方便。
9) JSON 對數據的描述性比XML 較差。
10) JSON 的速度要遠遠快於XML。