第一篇:java開發(fā)技術(shù)總結(jié)
數(shù)據(jù)庫
oracle-->數(shù)據(jù)庫管理系統(tǒng)-->SQL、PL/SQL-->Java(JDBC+SQL)DBA,數(shù)據(jù)庫編程程序員 1.概念導(dǎo)論
1)什么是數(shù)據(jù)庫
有組織和結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)。可以存儲(chǔ) 字符、字節(jié)、圖形、圖像等類型數(shù)據(jù)
DB(數(shù)據(jù)庫):數(shù)據(jù)集合
DBMS(數(shù)據(jù)庫管理系統(tǒng)):對(duì)數(shù)據(jù)集合進(jìn)行管理和操作的軟件
--Oracle
--DB2
--MySQL
--SQLSERVER
JDBC 1.什么是JDBC 全稱Java DataBase Connection,Java數(shù)據(jù)庫訪問。
JDBC是Java訪問數(shù)據(jù)庫的一項(xiàng)技術(shù)
JDBC是SUN推出的Java訪問數(shù)據(jù)庫的一套標(biāo)準(zhǔn)。由一系列接口構(gòu)成。
各個(gè)數(shù)據(jù)庫廠商負(fù)責(zé)提供JDBC接口API的實(shí)現(xiàn)包。
開發(fā)者只需要掌握J(rèn)DBC接口的使用,就可以實(shí)現(xiàn)對(duì)各種數(shù)據(jù)庫的操作,不需要了解開發(fā)商的實(shí)現(xiàn)類。
XML
1、什么是xml(xtendsible markup language可擴(kuò) 展的標(biāo)記語言)? 1)定義
基于文本的通用的數(shù)據(jù)保存格式。
(1)通用的點(diǎn)的坐標(biāo)
Point類
point對(duì)象(x=10,y=20)
a,序列化
b,數(shù)據(jù)庫表
c,文件
...(2)數(shù)據(jù)格式
HTML 知識(shí)準(zhǔn)備
1、分層:表現(xiàn)層:UI界面(DOS界面、桌面類型、web類型)
業(yè)務(wù)層:
數(shù)據(jù)層:文件、Oracle數(shù)據(jù)庫
2、Web類型的應(yīng)用程序----B/S 類型
打開 Browser,輸入 URL,瀏覽器將請(qǐng)求發(fā)送到服務(wù)器
服務(wù)器得到請(qǐng)求,分析,返回響應(yīng)
瀏覽器得到響應(yīng),解析(翻譯),顯示為頁面
3、web 學(xué)習(xí)階段
客戶端技術(shù):HTML+CSS+Javascript---Web 基礎(chǔ)
服務(wù)器端技術(shù):JSP、PHP、ASP.NET
4、web基礎(chǔ)的課程
HTML:頁面的創(chuàng)建
CSS:頁面的外觀
JavaScript:頁面的動(dòng)態(tài)效果和交互行為--3 一:HTML 概述
1、超文本標(biāo)記語言:一種編寫頁面的純文本的標(biāo)記語言,文件以.html或者.htm 為后綴,依靠瀏覽器運(yùn)行顯示----解釋性的語言
2、標(biāo)記:一些用 <> 括起來的內(nèi)容,特殊的顯示
3、主流瀏覽器:IE/Firefox/Chrome/
4、瀏覽器兼容性:符合標(biāo)準(zhǔn)規(guī)范,具體問題
CSS 一:CSS 概述
1、CSS:級(jí)聯(lián)樣式表(層疊樣式表)
2、特征:為頁面定義外觀的語言,實(shí)現(xiàn)內(nèi)容和表現(xiàn)的分離,多個(gè)樣式可以合為一個(gè),如果沖突,以優(yōu)先級(jí)為準(zhǔn)
二:基礎(chǔ)語法
1、語法:
屬性名稱:值;屬性名稱:值;比如--color:red;
2、如何應(yīng)用
方式一(內(nèi)聯(lián)方式):<元素 style=“" />---將樣式直接定義在元素的 style 屬性里
方式二(內(nèi)部樣式表):在頁面的 head 里的 style 里定義樣式
方式三(外部樣式表):定義一個(gè)單獨(dú)的.css的文件(定義樣式);然后,在頁面的 head 里用 link 引入---推薦方式
3、外部樣式表的優(yōu)點(diǎn):實(shí)現(xiàn)內(nèi)容和表現(xiàn)的分離,提高代碼的可重用性和可維護(hù)性
---可以準(zhǔn)備多套樣式---換皮膚/主題
4、樣式表,如果重復(fù)定義
a、樣式不同,取并集
b、相同,按照優(yōu)先級(jí)
內(nèi)聯(lián) > 內(nèi)部或者外部
c、相同優(yōu)先級(jí)下,以最后定義的為準(zhǔn)
javascript 一:javascript 概述
1、什么是 javascript:一種基于對(duì)象和事件驅(qū)動(dòng)的解釋性腳本語言,嵌入到網(wǎng)頁上
2、歷史:js代碼---W3C定義了標(biāo)準(zhǔn)規(guī)范的 js 代碼
3、瀏覽器兼容問題:標(biāo)準(zhǔn)代碼,個(gè)別情況個(gè)別對(duì)待
4、怎么寫
方式一:直接寫在事件里,僅限于代碼很少
方式二:寫在 head 的 script 里,僅限于當(dāng)前頁面重用
方式三:寫在 js 文件里,html 頁面的head 里用 script 引入
5、js的特征53………………………………………………..一種解釋性的腳本語言,適用于為網(wǎng)頁添加動(dòng)態(tài)效果和交互行為
6、錯(cuò)誤:
二:基礎(chǔ)語法
1、寫法:以 ;結(jié)束,大小寫敏感
名
2、標(biāo)識(shí)符:以字母、數(shù)字和下劃線還有 $組成,不以數(shù)字開頭---不能和系統(tǒng)關(guān)鍵字重
3、變量 ***----聲明變量,以 var 開始
var i = 1;var s = ”mary“;var b = true;js是一種弱類型的語言---變量聲明時(shí)不需要確定類型,數(shù)據(jù)類型以賦值為準(zhǔn)
4、數(shù)據(jù)類型
簡(jiǎn)單類型:string、number、bool 特殊類型:null、undefined
var i;
alert(i);---undefined 復(fù)雜類型:對(duì)象
5、(string)字符串類型
var s = ”mary“;var s = 'mary';
特殊字符:使用轉(zhuǎn)義---轉(zhuǎn)換為普通字符,解決漢字的問題
”hello'w“ornld” alert(“一”);alert(“u4e00”);[u4e00-u9fa5]
6、number:并不區(qū)分整數(shù)和小數(shù)
var n = 12;var n1 = 12.34;
7、bool:true(1)和 false(0)
8、數(shù)據(jù)類型之間的轉(zhuǎn)換
var n = 18;var name = “mary”;隱式轉(zhuǎn)換(直接)
string + number--
number + bool--
bool + bool--
string + bool--
顯式轉(zhuǎn)換(調(diào)用方法)*** xxx.toString()parseInt(xxx);parseFloat(xxx);--確實(shí)能轉(zhuǎn),如果不能轉(zhuǎn),將返回 NaN
NaN---not a number 判斷
isNaN(“aaa”)--is not a number--返回 bool
9、運(yùn)算符
算術(shù)運(yùn)算符、比較、邏輯、位。。
特殊一:***
=== 嚴(yán)格相等:值和類型
if(a == b)
if(a === b)servlet 1、web開發(fā)的背景知識(shí)(了解)b/s架構(gòu):
特點(diǎn):
客戶端使用瀏覽器,服務(wù)器端使用web服務(wù)器,客戶端與服務(wù)器端使用標(biāo)準(zhǔn)化的http協(xié)議來進(jìn)行通信。
優(yōu)點(diǎn):
與c/s架構(gòu)相比,有兩個(gè)優(yōu)點(diǎn):
a,客戶端不需要單獨(dú)安裝
b,開發(fā)相對(duì)簡(jiǎn)單(因?yàn)閏/s架構(gòu)需要自定義協(xié)議,開發(fā)相應(yīng)的 通信模塊,而b/s使用標(biāo)準(zhǔn)化的http協(xié)議,瀏覽器與 web服務(wù)器都提供了相應(yīng)的通信模塊)。
2、什么是servlet? sun公司制訂的一種用來擴(kuò)展web服務(wù)器功能的組件規(guī)范。
(1)擴(kuò)展web服務(wù)器功能
早期的web服務(wù)器(iis,apache ws等等),只能夠處理靜態(tài)
資源的請(qǐng)求(即需要事先將html文件寫好并保存到web服務(wù)器
相應(yīng)的文件夾下面),不能夠處理動(dòng)態(tài)資源的請(qǐng)求(即需要進(jìn)行
計(jì)算,然后生成相應(yīng)的html)。
a,可以使用cgi程序來擴(kuò)展。
cgi程序可以使用c/c++,perl等語言來開發(fā),但是,程序比較復(fù)雜,而且可移值性不好,性能也比較差,現(xiàn)在用得不多。
b,servlet可以擴(kuò)展這些web服務(wù)器的功能。
瀏覽器發(fā)送請(qǐng)求給web服務(wù)器(apache ws),web服務(wù)器
檢查請(qǐng)求是否需要計(jì)算,如果需要,web服務(wù)器會(huì)訪問
servlet容器,servlet容器會(huì)調(diào)用servlet來進(jìn)行計(jì)算。
(2)組件規(guī)范
1)什么是組件?
符合一定規(guī)范,實(shí)現(xiàn)部分功能,并且需要部署到
相應(yīng)的容器里面才能運(yùn)行的軟件模塊。
2)什么是容器?
符合一定規(guī)范,為組件提供運(yùn)行環(huán)境及相應(yīng)服務(wù)的 程序。
3、如何開發(fā)一個(gè)servlet? step1,先寫一個(gè)java類,實(shí)現(xiàn)Servlet接口或者繼承
HttpServlet類(一般會(huì)使用繼承的方式)。
step2,編譯
step3,打包(創(chuàng)建一個(gè)具有如下結(jié)構(gòu)的文件夾)
appname(應(yīng)用名稱)
WEB-INF
classes(放.class文件)
lib(可選,放.jar文件)
web.xml(部署描述文件)step4,部署
將step3創(chuàng)建好的文件夾拷貝到servlet容器指定的 某個(gè)文件夾下面(比如,如果容器是tomcat,可以拷貝到
webapps文件夾下面)。
注意:也可以使用jar命令將step3創(chuàng)建好的文件夾
壓縮成一個(gè)以“.war”為后綴的文件,然后拷貝。
step5,啟動(dòng)servlet容器,訪問servlet
http://ip:port/appname/servlet-url
6、servlet是如何運(yùn)行的? 比如,在瀏覽器地址欄輸入
http://ip:port/web01/hello
step1,瀏覽器依據(jù)ip,port建立與servlet容器(容器同時(shí) 也是一個(gè)簡(jiǎn)單的web服務(wù)器)之間的連接。
step2,瀏覽器將請(qǐng)求數(shù)據(jù)打包(按照http協(xié)議,該數(shù)據(jù)包 也稱為請(qǐng)求數(shù)據(jù)包)。
step3,瀏覽器發(fā)送請(qǐng)求數(shù)據(jù)包給容器。
step4,容器收到請(qǐng)求數(shù)據(jù)包之后,解析該數(shù)據(jù)包,并將
解析之后得到的數(shù)據(jù)封裝到request(請(qǐng)求數(shù)據(jù)包)對(duì)象上,同時(shí),容器 還要?jiǎng)?chuàng)建response對(duì)象。
step5,容器要依據(jù)請(qǐng)求資源路徑(“/web01/hello”)找到 servlet的配置,然后創(chuàng)建servlet對(duì)象。
step6,容器調(diào)用servlet對(duì)象的service方法。容器會(huì)將事先 創(chuàng)建好的request,response作為參數(shù)傳遞給service方法。step7,在service方法里面,可以通過request對(duì)象獲得
請(qǐng)求參數(shù),并進(jìn)行相應(yīng)的處理,處理結(jié)果會(huì)放到response對(duì)象 里面。
step8,容器從response對(duì)象中取出處理結(jié)果,然后打包(按照http協(xié)議,該數(shù)據(jù)包稱之為響應(yīng)數(shù)據(jù)包)。然后將 響應(yīng)數(shù)據(jù)包發(fā)送給瀏覽器。
step9,瀏覽器收到響應(yīng)數(shù)據(jù)包之后,解析處理結(jié)果,然后生成 相應(yīng)的頁面。
http://localhost:8080/web01/hello?uname=jetty ?后是請(qǐng)求參數(shù),其中uname是參數(shù)名,jetty是參數(shù)值。
JSP
1、什么是jsp(java server page java服務(wù)器端頁面技術(shù))? 1)定義
sun公司制訂的一種服務(wù)器端動(dòng)態(tài)頁面生成技術(shù)規(guī)范。
2)理解
a,因?yàn)橹苯邮褂胹ervlet,雖然也可以生成動(dòng)態(tài)頁面,但是比較繁瑣(需要使用out.println語句),并且維護(hù)困難
(如果頁面發(fā)生改變,必須修改java代碼),所以,sun 在servlet規(guī)范制訂之后,又添加了jsp規(guī)范。
b,jsp其實(shí)就是一個(gè)以“.jsp”為后綴的文本文件,該文件會(huì)被容器(比如tomcat)轉(zhuǎn)換成一個(gè)servlet。
2、如何寫一個(gè)jsp文件? step1,寫一個(gè)以“.jsp”為后綴的文件。step2,在該文件里面,可以添加如下的內(nèi)容:
1)html(css,javascript)
直接寫即可(不用out.println)
2)java代碼
a, java代碼片斷
<% java代碼;
%>
b, jsp表達(dá)式
<%= java表達(dá)式 %>
3)指令
a,什么是指令?
告訴容器,在容器將.jsp文件轉(zhuǎn)換成.java文件時(shí)
做一些額外的處理,比如導(dǎo)包。
b,基本語法
<%@指令名稱 屬性名稱=屬性值 %>
c,page指令
import屬性:導(dǎo)包,比如
<%@page import=“java.util.*”%>
<%@page import=“java.util.*,java.text.*”%>
contentType屬性:設(shè)置
response.setContentType的內(nèi)容,比如
<%@page contentType=“text/html;charset=utf-8”%>
pageEncoding屬性:告訴容器jsp文件的編碼。
因?yàn)槿萜餍枰xjsp文件的內(nèi)容(也就是
說,需要解碼,某些容器,如果沒有該
屬性,默認(rèn)情況下會(huì)按照iso-8859-1
去解碼,會(huì)產(chǎn)生亂碼問題)。
4)隱含對(duì)象
a,什么是隱含對(duì)象?
在jsp文件里面可以直接使用的對(duì)象,比如
out,request,response。
b,為什么可以直接使用這些隱含對(duì)象?
因?yàn)槿萜鲿?huì)自動(dòng)添加創(chuàng)建這些對(duì)象的語句。
3、jsp是如何運(yùn)行的? step1,容器要將.jsp文件轉(zhuǎn)換成.java文件(其實(shí)就是
一個(gè)servlet類)。
a, html(css,javascript)--->
在service方法里,使用out.write輸出。
(out.write方法會(huì)將null轉(zhuǎn)換成“"輸出)
b,<%
%>
----->
在service方法里,照搬。
c, <%=
%>
----->
在service方法里,使用out.print輸出。
step2,容器調(diào)用servlet來處理請(qǐng)求。
4、轉(zhuǎn)發(fā)
(1)什么是轉(zhuǎn)發(fā)?
一個(gè)web組件(servlet/jsp)將未完成的處理通過
容器交給另外一個(gè)web組件繼續(xù)完成。
最常見的情況:
一個(gè)servlet獲得數(shù)據(jù),然后轉(zhuǎn)發(fā)給一個(gè)jsp來展現(xiàn)
這些數(shù)據(jù)。
(2)如何轉(zhuǎn)發(fā)?
step1,綁訂數(shù)據(jù)到request對(duì)象上。
request.setAttribute(String name,Object value);
說明:
name:綁訂名稱
value:綁訂值 step2,獲得轉(zhuǎn)發(fā)器
RequestDispatcher rd =
request.getRequestDispatcher(String uri);
說明:
url : 轉(zhuǎn)發(fā)的目的地 step3,轉(zhuǎn)發(fā)
rd.forward(request,response);request對(duì)象的其它和綁訂相關(guān)的方法: 依據(jù)綁訂名稱找到綁訂值,如果找不到對(duì)應(yīng)的值,返回null。
Object request.getAttribute(String name);
解除綁訂
request.removeAttribute(String name)(3)轉(zhuǎn)發(fā)的特點(diǎn)
a,轉(zhuǎn)發(fā)之后,瀏覽器地址欄的地址不變。
b,轉(zhuǎn)發(fā)的目的地必須是同一個(gè)應(yīng)用內(nèi)部某個(gè)
web組件的地址。
Ajax
1、ajax是什么?(asynchronous javascript and xml 異步的javascript 和xml)
ajax是一種用來改善用戶體驗(yàn)的技術(shù),其實(shí)質(zhì)是
利用瀏覽器提供的一個(gè)特殊的對(duì)象(XMLHttpRequest 對(duì)象,一般稱之為ajax對(duì)象)異步地(當(dāng)ajax對(duì)象向
服務(wù)器發(fā)請(qǐng)求時(shí),瀏覽器不會(huì)銷毀當(dāng)前頁面,用戶
仍然可以對(duì)當(dāng)前頁面做其它的操作)向服務(wù)器發(fā)送請(qǐng)求。服務(wù)器返回的數(shù)據(jù)不再是一個(gè)完整的新的頁面,而是部分?jǐn)?shù)據(jù),利用這些數(shù)據(jù),更新當(dāng)前頁面。整個(gè)
過程,頁面無刷新,不打斷用戶的操作。
2、如何獲得ajax對(duì)象?
XMLHttpRequest沒有標(biāo)準(zhǔn)化,要區(qū)分瀏覽器。
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
} //非ie瀏覽器
xhr = new XMLHttpRequest();}else{ //ie瀏覽器
xhr = new ActiveXObject('MicroSoft.XMLHttp');} return xhr;
4、編程步驟
step1,獲得ajax對(duì)象。
比如:
var xhr = getXhr();
step2,使用ajax對(duì)象發(fā)請(qǐng)求。
1)發(fā)送get請(qǐng)求
xhr.open('get', 'check_username.do?username=tom',true);xhr.onreadystatechange=f1;xhr.send(null);注意:
true:發(fā)送異步請(qǐng)求(ajax對(duì)象發(fā)請(qǐng)求時(shí),瀏覽器不會(huì)銷毀當(dāng)前頁面,用戶仍然可以
做其它操作)。
false:發(fā)送同步請(qǐng)求(ajax對(duì)象發(fā)請(qǐng)求時(shí),瀏覽器不會(huì)銷毀當(dāng)前頁面,瀏覽器會(huì)鎖定
當(dāng)前頁面,用戶不能操作當(dāng)前頁面)。step3,編寫服務(wù)器端的處理代碼,一般不再需要返回
一個(gè)完整的頁面,只需要返回部分?jǐn)?shù)據(jù)。step4,編寫事件處理函數(shù)
function f1(){
if(xhr.readyState == 4){
var txt = xhr.responseText;
更新當(dāng)前頁面
}
} jQuery
1、jQuery介紹 www.tmdps.cn
(1)特點(diǎn)
利用選擇器查找要操作的節(jié)點(diǎn),并且會(huì)將這些節(jié)點(diǎn)
封裝成一個(gè)jQuery對(duì)象。通過調(diào)用jQuery對(duì)象的屬性
或者方法來實(shí)現(xiàn)對(duì)底層節(jié)點(diǎn)的操作,這樣做的好處有
兩個(gè):一是兼容性更好了,另外,代碼得到簡(jiǎn)化。
(2)編程步驟
step1,使用jQuery選擇器查找要操作的節(jié)點(diǎn)。
step2,調(diào)用jQuery對(duì)象的方法或者屬性。
(3)一個(gè)簡(jiǎn)單例子 first.html(4)jQuery對(duì)象與dom對(duì)象如何相互轉(zhuǎn)換?
1)dom對(duì)象---> jQuery對(duì)象
$(dom對(duì)象)
2)jQuery對(duì)象---> dom對(duì)象
2、選擇器
(1)選擇器是什么?
jQuery借鑒了css選擇器的語法,用來查找要操作的節(jié)點(diǎn)。
(2)基本選擇器
selector / s1.html
#id
.class
element
select1,select2..selectn
*(3)層次選擇器
selector / s2.html
select1 select2:查找所有的后代
select1>select2:只查找子節(jié)點(diǎn)
select1+select2:下一個(gè)兄弟
select1~select2:下面所有兄弟
(4)過濾選擇器
1)基本過濾選擇器
selector / s3.html
:first
:last
:not(select)排除滿足select要求的節(jié)點(diǎn) :even :odd :eq(index):gt(index):lt(index)2)內(nèi)容過濾選擇器
selector / s4.html :contains(text)匹配包含給定文本的元素
:empty 匹配所有不包含子元素或者文本的空元素
:has(select)匹配含有選擇器所匹配的元素的元素
:parent 匹配含有子元素或者文本的元素 3)可見性過濾選擇器 selector / s5.html :hidden 匹配所有不可見元素,或者type為hidden的元素
:visible 匹配所有的可見元素 4)屬性過濾選擇器 selector / s6.html [attribute] [attribute=value] [attribute!=value] 5)子元素過濾選擇器
selector / s7.html :nth-child(index/even/odd)
注意: 下標(biāo)從1開始。
6)表單對(duì)象屬性過濾選擇器 selector / s8.html
:enabled
:disabled
:checked
:selected(5)表單選擇器
:input :text
:pasword :radio :checkbox :submit :image :reset :button :file :hidden
3、dom 1)查詢
dom / d1.html
找到節(jié)點(diǎn)之后,可以讀取或者修改節(jié)點(diǎn)的html內(nèi)容,文本,值,屬性。
a, html()讀取或者修改節(jié)點(diǎn)的html內(nèi)容
b, text()讀取或者修改節(jié)點(diǎn)的文本內(nèi)容
c, val()
讀取或者修改節(jié)點(diǎn)的值
d, attr()讀取或者修改節(jié)點(diǎn)的屬性
2)創(chuàng)建
dom / d2.html
$(html);3)插入節(jié)點(diǎn)
append():作為最后一個(gè)孩子添加進(jìn)來。
prepend():作為第一個(gè)孩子添加進(jìn)來。
after():作為下一個(gè)兄弟
before():作為上一個(gè)兄弟 4)刪除節(jié)點(diǎn)
dom / d3.html remove()remove(selector)empty():清空節(jié)點(diǎn)
5)數(shù)據(jù)與行為分離 dom / d4.html d5.html 即不用修改html文件,通過引入外部的js文件來 為頁面提供動(dòng)態(tài)效果。
$(fn);fn是一個(gè)函數(shù)的名稱
或者
$(function(){
//當(dāng)整個(gè)頁面加載完畢,會(huì)執(zhí)行這兒的代碼。
});6)復(fù)制節(jié)點(diǎn) dom / d6.html clone()clone(true):使復(fù)制的節(jié)點(diǎn)也具有行為(將事件
處理代碼一塊復(fù)制)7)屬性操作
讀取:attr('id');設(shè)置: attr('id','d1')或者一次
設(shè)置多個(gè) attr({”id“:”d1“,”class“:”s1“});刪除:removeAttr('id')8)樣式操作 dom / d7.html 獲取和設(shè)置: attr(”class“,”“)attr(”style“,”“)追加:addClass('')移除:removeClass('')
或者removeClass('s1 s2')
或者removeClass()//會(huì)刪除所有樣式
切換樣式:toggleClass,有該樣式,就刪除,沒有,就添加。
是否有某個(gè)樣式 hasClass('')讀取css('')設(shè)置css('','')或者
css({'':'','':''})//設(shè)置多個(gè)樣式 9)遍歷節(jié)點(diǎn) dom / d8.html children()/children(select):只考慮子元素,不考慮其它后代元素。
next()/next(select):下一個(gè)兄弟
prev()/prev(select):上一個(gè)兄弟
siblings()/siblings(select):其它兄弟
find(select):從當(dāng)前節(jié)點(diǎn)向下查找所有的后代
(滿足select要求的)parent():父節(jié)點(diǎn)
struts
1、什么是Struts? Struts是基于MVC的輕量級(jí)框架,主要處理請(qǐng)求分發(fā)的問題,重心在控制層和表現(xiàn)層。
--基于MVC:實(shí)現(xiàn)了MVC,滿足MVC的設(shè)計(jì)思想。
--輕量:侵入性低,是我們業(yè)務(wù)代碼對(duì)框架的依賴程度很小,既很少需要import Struts包。
--框架:基礎(chǔ)的代碼,引入之后可以減少我們的開發(fā)工作量,提高開發(fā)效率。
2、為什么用Struts? 1)對(duì)比Servlet
--Servlet優(yōu)缺點(diǎn)
優(yōu)點(diǎn):直接、效率高
缺點(diǎn):業(yè)務(wù)代碼耦合度高,不便于維護(hù)
--Struts優(yōu)缺點(diǎn)
優(yōu)點(diǎn):將業(yè)務(wù)代碼解藕,便于維護(hù)
缺點(diǎn):效率低
--Servlet中的MVC與Struts中的MVC,參考圖理解
2)對(duì)比其他框架
--健壯性(4*):穩(wěn)定程度
--易用性(4*):好學(xué)、好用
--擴(kuò)展性(5*):就軟件未來而言,將來有更復(fù)雜的需求時(shí),是否有處理方式。
--侵入性(4*):與依賴性/耦合度成正比
3、Struts發(fā)展史
1)Struts1,結(jié)構(gòu)簡(jiǎn)單、易用,由Apache推出。
與Servlet/JSP耦合緊密,導(dǎo)致發(fā)展受限。
2)WebWork,技術(shù)先進(jìn),核心是XWork。
3)Struts2,基于XWork,在此基礎(chǔ)上發(fā)展形成。
面試題:Struts1和Struts2的區(qū)別和聯(lián)系?
--Struts2與Struts1差別很大,不能理解為Struts1
的升級(jí)版本。
--Struts2以XWork為核心,可以理解為WebWork
的升級(jí)版本。
*
4、Struts2使用步驟,HelloWorld--使用版本Struts2.1.8 1)創(chuàng)建web項(xiàng)目
2)導(dǎo)包
3)配置前端控制器(filter)
--在web.xml中配置filter
--控制請(qǐng)求分發(fā)的控制器
4)創(chuàng)建struts.xml--放在src根路徑
--名稱必須是struts.xml 5)*創(chuàng)建Action--控制業(yè)務(wù)流程的控制器 6)*創(chuàng)建JSP 7)*配置struts.xml--體現(xiàn)請(qǐng)求和Action的關(guān)系
--體現(xiàn)Action和JSP的關(guān)系
*
5、擴(kuò)展HelloWorld 目標(biāo):掌握Action與JSP頁面數(shù)據(jù)交換的方式。
1)Action如何向頁面發(fā)送數(shù)據(jù)?
--通過EL表達(dá)式
2)*Action如何從頁面接收數(shù)據(jù)?
--注入:調(diào)用JavaBean的set方法,為其屬性賦值的行為稱之為注入。
*a、基礎(chǔ)屬性注入
--Action中定義基本類型的屬性,給它set方法
--表單中,文本框的name=”屬性名“
--表單提交時(shí),Struts2會(huì)自動(dòng)將表單的內(nèi)容,傳遞給Action里的屬性。
--Struts2會(huì)自動(dòng)初始化屬性
--注意:Action跳轉(zhuǎn)的頁面,EL表達(dá)式${屬性名}
*b、域模型注入
--Action中定義JavaBean類型的屬性,給他set方法
--表單中,文本框的name=”對(duì)象名.屬性名“
--表單提交時(shí),Struts2會(huì)自動(dòng)將表單的內(nèi)容,傳遞給Action里定義的對(duì)象
--Struts2會(huì)自動(dòng)的初始化對(duì)象
--注意:Action跳轉(zhuǎn)的頁面,EL表達(dá)式${對(duì)象名.屬性名}
c、模型驅(qū)動(dòng)注入(了解即可)
--需要Action實(shí)現(xiàn)接口ModelDriven
*
6、使用Struts2實(shí)現(xiàn)NetCTOSS中的資費(fèi)列表
--準(zhǔn)備:分析需求、了解表結(jié)構(gòu)、建表
1)創(chuàng)建web項(xiàng)目
2)導(dǎo)包
3)前端控制器(filter)4)創(chuàng)建struts.xml 5)創(chuàng)建Action
-->filter->struts.xml->Action
-->DAO-->DBUtil,Entity a、Entity b、DBUtil c、DAO d、Action 6)JSP 7)配置struts.xml Hibernate
1、什么是Hibernate 1)Hibernate是數(shù)據(jù)訪問層的框架,對(duì)JDBC進(jìn)行了
封裝,是針對(duì)數(shù)據(jù)訪問層的面向?qū)ο蟮慕鉀Q方案。
2)Hibernate允許我們直接訪問對(duì)象,然后將訪問
自動(dòng)轉(zhuǎn)化為SQL去執(zhí)行,從而達(dá)到間接訪問數(shù)據(jù)庫
的目的,簡(jiǎn)化代碼開發(fā),提升開發(fā)效率。
2、為什么使用Hibernate 1)使用JDBC開發(fā)出現(xiàn)的問題
--需要在代碼中寫大量的SQL
--需要給大量的?賦值
--需要將結(jié)果集轉(zhuǎn)換為實(shí)體對(duì)象
--在SQL中可能會(huì)寫數(shù)據(jù)庫特定的函數(shù),移植性差。
2)使用Hibernate可以解決上面的問題
--基本上不需要寫SQL,因?yàn)镠ibernate可以
自動(dòng)生成SQL并執(zhí)行
--可以自動(dòng)給?賦值
--可以自動(dòng)將結(jié)果集轉(zhuǎn)換為實(shí)體對(duì)象
--Hibernate提供通用的API來訪問不同的數(shù)據(jù)庫,移植性好。
3)補(bǔ)充JDBC與Hibernate的優(yōu)缺點(diǎn)
a、JDBC優(yōu)點(diǎn):
效率高
b、Hibernate缺點(diǎn):
效率相對(duì)于JDBC要低
*
3、Hibernate的設(shè)計(jì)原理
1)Hibernate是采用了ORM的思想,對(duì)JDBC進(jìn)行的 封裝。
2)ORM:Object Relation Mapping,即對(duì)象關(guān)系
映射,指的是Java對(duì)象和關(guān)系數(shù)據(jù)庫的映射。
--之前使用JDBC開發(fā)時(shí),需要知道數(shù)據(jù)庫表和實(shí)體
對(duì)象的關(guān)系,以及字段和對(duì)象屬性的關(guān)系,比如
需要知道COST表和Cost對(duì)象的關(guān)系。那么這種 關(guān)系我們之前是手動(dòng)維護(hù)的,比如: cost.setName(rs.getString(”name“));ps.setString(2,cost.getName());--ORM思想是希望將這種關(guān)系的維護(hù)提煉出來,用一個(gè)公共的組件描述,那么在我們?cè)L問數(shù)據(jù)庫
時(shí),需要使用這種關(guān)系時(shí),可以復(fù)用基于ORM 思想提煉出來的關(guān)系
--正是由于存在這樣通用關(guān)系的描述,Hibernate 才可以讓我們直接訪問Java對(duì)象,從而通過
關(guān)系轉(zhuǎn)換成SQL自動(dòng)執(zhí)行。
--Hibernate中將這種關(guān)系定義在XML配置文件中。
4、Hibernate體系結(jié)構(gòu)
1)hibernate.cfg.xml
是Hibernate的主配置文件,用于配置數(shù)據(jù)庫連接
參數(shù),以及Hibernate框架參數(shù)。
2)實(shí)體類
是Java類型,用于封裝表中的數(shù)據(jù)
3)xxx.hbm.xml
是關(guān)系映射文件,用于配置表與實(shí)體類的關(guān)系,以及表中字段與類中屬性的關(guān)系。
4)Hibernate底層API
主要是用于解析主配置文件,以及關(guān)系映射文件,然后根據(jù)關(guān)系自動(dòng)生成SQL并執(zhí)行。
5、Hibernate常用API 1)Configuration
用于解析主配置文件的2)SessionFactory
用于創(chuàng)建Session的3)Session
是數(shù)據(jù)庫連接會(huì)話,相當(dāng)于是數(shù)據(jù)庫連接。
注意:此Session和HttpSession沒有任何關(guān)系。
4)Transaction
用于控制事務(wù)
5)Query
用于做特殊查詢
*
6、Hibernate使用步驟
1)導(dǎo)包
2)引入主配置文件hibernate.cfg.xml 3)創(chuàng)建實(shí)體類Emp 4)*創(chuàng)建關(guān)系映射文件Emp.hbm.xml
--該配置文件必須和實(shí)體類同名
--該配置文件必須和實(shí)體類位于同一個(gè)包下
--在主配置文件中引入該關(guān)系映射文件
5)使用Hibernate的API,來進(jìn)行增、刪、改、查
Spring 1.什么是Spring,有什么作用
Spring框架屬于一個(gè)解決方案框架 可以對(duì)其他技術(shù)和框架進(jìn)行整合 應(yīng)用。
*好處是:將程序中的各個(gè)組件和 框架技術(shù)進(jìn)行解耦,便于日后系統(tǒng) 維護(hù),升級(jí)和擴(kuò)展操作。
在SSH中,會(huì)將Action,DAO組件都 交給Spring框架管理,由Spring 框架創(chuàng)建這些對(duì)象,建立這些對(duì)象 關(guān)聯(lián)。
*2.Spring都含有哪些功能
--可以創(chuàng)建和管理程序組件對(duì)象
(相當(dāng)于工廠的作用)--提供了IoC機(jī)制實(shí)現(xiàn)組件對(duì)象關(guān)系的解耦
--提供了AoP機(jī)制實(shí)現(xiàn)共通組件低耦合的調(diào)用。
(例如事務(wù)處理)--提供了對(duì)其他技術(shù),例如JDBC,Hibernate,Struts等框架整合API--提供了一個(gè)Spring MVC框架實(shí)現(xiàn)
*3.Spring基本使用
1)創(chuàng)建和管理程序組件對(duì)象
--引入Spring IOC開發(fā)包
--在src下添加Spring配置文件
--將Bean組件定義到Spring配置
文件中
--(編碼)實(shí)例化Spring容器對(duì)象
利用getBean獲取Bean對(duì)象實(shí)例
*a.控制Bean對(duì)象創(chuàng)建模式
在使用時(shí),可以在
scope=”singleton“表示單例模式(默認(rèn)值)scope=”prototype“表示原型模式,每次調(diào)用getBean都返回一個(gè)新的 Bean對(duì)象。
b.控制Bean對(duì)象創(chuàng)建時(shí)機(jī)
scope=”singleton“時(shí),Bean對(duì)象 是在容器實(shí)例化時(shí)創(chuàng)建。
在
scope=”prototype“時(shí),Bean對(duì)象 是在getBean方法時(shí)創(chuàng)建。
c.追加初始化和銷毀方法
在
同理destroy-method=”mydestroy“ 在容器銷毀時(shí),也釋放單例的Bean 對(duì)象,此時(shí)會(huì)自動(dòng)調(diào)用mydesctory 方法。(該屬性僅適用于singleton 模式的Bean對(duì)象)
2)Spring的核心IoC容器
a.IoC概念
Inversion of Control 控制反轉(zhuǎn) 或反向控制(控制轉(zhuǎn)移)
2004 Martin fowler提出的IoC思想.IoC思想:兩個(gè)組件之間調(diào)用(例如A調(diào)用B)原有方式是A負(fù)責(zé)創(chuàng)建B對(duì)象;現(xiàn)在變成了 B對(duì)象由第三方框架或容器負(fù)責(zé)實(shí)例化,然后給A對(duì)象注入。即A對(duì)象獲取B對(duì)象的 方式發(fā)生了反轉(zhuǎn)。
IoC技術(shù)方案有兩種:依賴注入和依賴查找 Spring采用依賴注入技術(shù)實(shí)現(xiàn)IoC控制。依賴技術(shù)主要以下兩種方式:--set方式注入(推薦)在A中定義setB(B b),接收傳進(jìn)來的B對(duì)象--構(gòu)造方式注入 在A中定義構(gòu)造方法 public A(B b){}
DI:Dependency Injection依賴注入
b.IoC使用方法
--編寫Action,定義到Spring配置中
--編寫DAO,定義到Spring配置中
--在Action中定義DAO接口類型變量和
setter方法
--在Action的
配置
ref=”要注入的Bean對(duì)象id值">
第二篇:Java Web 開發(fā)技術(shù)實(shí)驗(yàn)報(bào)告模版
項(xiàng)目綜合實(shí)踐報(bào)告 題目:html+css 旅游門戶網(wǎng)站設(shè)計(jì)
班級(jí):計(jì)算機(jī)2010(1)姓名:丁一學(xué)號(hào):954211完成日期:2011.9.14
一、分析設(shè)計(jì)
用文字、圖表等說明設(shè)計(jì)思路及設(shè)計(jì)結(jié)果。
二、主要源代碼
Html
Css
三、效果圖
屏幕抓圖
四、調(diào)試過程
(調(diào)試過程中碰到的問題及解決方法)
五、實(shí)驗(yàn)結(jié)論
1、實(shí)驗(yàn)結(jié)果圖
2、實(shí)驗(yàn)心得體會(huì)
第三篇:Java反射技術(shù)總結(jié)
Java反射技術(shù)知識(shí)點(diǎn)總結(jié)
1、反射:
反射是指程序可以訪問、檢測(cè)和修改它本身狀態(tài)或行為的一種能力。
2、Java語言的反射機(jī)制主要提供以下功能:
在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類 在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象
在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量和方法 在運(yùn)行時(shí)調(diào)用任意一個(gè)類所具有的成員變量和方法 生成動(dòng)態(tài)代理
3、在java.lang.reflect包當(dāng)中提供了實(shí)現(xiàn)反射機(jī)制的類:
Class類:代表一個(gè)類。
Field類:代表類的成員變量,也稱為類的屬性。Method類:代表類的方法。Constructor類:代表類的構(gòu)造方法。
Array類:該類提供動(dòng)態(tài)地生成和訪問java數(shù)組的方法。
4、Class實(shí)例: Class類和其它的類一樣繼承自O(shè)bject類,Class對(duì)象包含了與類相關(guān)的信息。
事實(shí)上,Class對(duì)象就是用來創(chuàng)建類的所有的“普通”對(duì)象的。類是程序的一部分,每個(gè)類都有一個(gè)Class對(duì)象。換言之,每當(dāng)編寫并且編譯了一個(gè)新類時(shí),就會(huì)產(chǎn)生一個(gè)Class對(duì)象(恰當(dāng)?shù)卣f,該對(duì)象被保存在一個(gè)同名的.class文件中)。在運(yùn)行時(shí),當(dāng)我們想生成這個(gè)類的對(duì)象時(shí),運(yùn)行這個(gè)程序的java虛擬機(jī)(JVM)首先檢查這個(gè)類的Class對(duì)象是否已經(jīng)加載。如果尚未加載,JVM就會(huì)根據(jù)類名查找.class文件,并將其載入。
一旦某個(gè)類的Class對(duì)象被載入內(nèi)存,它就被用來創(chuàng)建這個(gè)類的所有對(duì)象。這些對(duì)象都會(huì)對(duì)應(yīng)于同一個(gè)Class對(duì)象。
要想使用反射,首先需要獲得待處理類或?qū)ο笏鶎?duì)應(yīng)的Class實(shí)例。獲取Class實(shí)例的四種方式: 第一種:調(diào)用類本身的.class屬性。Class c =String.class;第二種:調(diào)用對(duì)象的getClass()方法獲取該對(duì)象的Class實(shí)例。
String str = “abc”;Class c = str.getClass();第三種:使用Class類的靜態(tài)方法forName(),用類的全名(包名.類名)來獲取一個(gè)Class實(shí)例。
Class.forName(“java.lang.String”);
第四種:對(duì)于基本數(shù)據(jù)類型的封裝類,可以采用.TYPE來獲取相對(duì)應(yīng)的基本數(shù)據(jù)類型的Class實(shí)例。
Class intClass = Integer.TYPE
5、Class類的其它方法: Object newInstance()
使用Class對(duì)象生成該類的新實(shí)例。它調(diào)用了缺省(無參數(shù))的類構(gòu)造方法創(chuàng)建一個(gè)新的對(duì)象。所以使用newInstance()方法創(chuàng)建的類必須有一個(gè)無參數(shù)的構(gòu)造方法。
boolean isInstance()該方法提供了一種動(dòng)態(tài)地調(diào)用instanceof運(yùn)算符的途徑。Class[] getInterfaces()該方法返回Class對(duì)象的數(shù)組,這些對(duì)象代表的是某個(gè)Class對(duì)象所包含的接口 Class getSuperclass()該方法獲取該Class對(duì)象的直接基類。這個(gè)方法自然也是返回一個(gè)Class引用,所以可以進(jìn)一步查詢其基類。這意味著在運(yùn)行時(shí),可以找到某個(gè)對(duì)象的完整類層次結(jié)構(gòu)。
6、獲得類的構(gòu)造方法可以調(diào)用Class類對(duì)象的以下方法:
Constructor getConstructor(Class[] params):獲得類的指定參數(shù)類型的公共構(gòu)造方法。Constructor[] getConstructors():獲得類的所有公共構(gòu)造方法。
Constructor getDeclaredConstructor(Class[] params):獲得類的指定參數(shù)類型的構(gòu)造方法(與訪問級(jí)別無關(guān))。
Constructor[] getDeclaredConstructors():獲得類的所有構(gòu)造方法(與訪問級(jí)別無關(guān))
7、獲得類的成員變量可以調(diào)用Class類對(duì)象的以下方法:
Field getField(String name):獲得指定的公共字段(屬性)Field[ ] getFields():獲得類的所有公共字段(屬性)Field getDeclaredField(String name):獲得類聲明的指定的字段(與訪問級(jí)別無關(guān))Field[ ] getDeclaredFields():獲得類聲明的所有字段
8、獲得類的成員方法可以調(diào)用Class類對(duì)象的以下方法:
Method getMethod(String name, Class[ ] params):獲取包含指定的參數(shù)類型及名稱的公共方法 Method[ ] getMethods():獲得類的所有公共方法
Method getDeclaredMethod(String name, Class[ ] params):獲取包含指定的參數(shù)類型及名稱的類聲明的方法 Method[ ] getDeclaredMethods():獲得類聲明的所有方法
9、使用反射來動(dòng)態(tài)的調(diào)用類的方法,需要使用java.lang.reflect.Method中的:Object invoke(Object obj, Object[ ] args)方法
obj :指需要調(diào)用的那個(gè)方法的隱式參數(shù),也即那個(gè)方法所屬的對(duì)象,如果調(diào)用的是一個(gè)靜態(tài)方法將第一個(gè)參數(shù)指定為null。
args :指需要調(diào)用的那個(gè)方法的顯式參數(shù),因?yàn)橐粋€(gè)方法可以有很多個(gè)參數(shù)所以在這里我們必須要用一個(gè)數(shù)組來存放這些參數(shù),在存放時(shí)需要把值類型的參數(shù)轉(zhuǎn)換成相應(yīng)的包裝類型存放進(jìn)去。
10、使用反射來動(dòng)態(tài)的改變成員變量
調(diào)用Class的getField()并指定field名稱,獲得特定的Field對(duì)象之后便可直接調(diào)用Field的get()和set()方法來改變成員變量了
第四篇:JAVA開發(fā)個(gè)人簡(jiǎn)歷
個(gè) 人 簡(jiǎn) 歷
個(gè)人信息
姓名:xxxxxxx性別:x
電話:187-xxx7-xxxx年齡:22
郵箱: lxxxxxxx@xxx.com專業(yè):軟件技術(shù)應(yīng)聘職位
Java軟件開發(fā)工程師
專業(yè)技能
熟練掌握CoreJava編程,具有扎實(shí)的編程功底和良好的編碼習(xí)慣
熟練掌握ssh(Struts2+hibernate+Spring)等輕量級(jí)框架
熟悉MVC開發(fā)模式
熟練使用Eclipse/MyEclipse工具進(jìn)行Java軟件開發(fā)
熟練Unix/Linux環(huán)境下Java的應(yīng)用軟件開發(fā)
熟練掌握MySQL、Oracle等數(shù)據(jù)庫操作,能編寫常用SQL語句
熟悉軟件開發(fā)的主要流程,可以根據(jù)指定要求快速完成設(shè)計(jì)、編碼等工作了解xml、HTML、JavaScript、Ajax技術(shù)
項(xiàng)目經(jīng)驗(yàn)
一、通用電子商務(wù)平臺(tái)(當(dāng)當(dāng)網(wǎng)購物系統(tǒng))
開發(fā)環(huán)境:Linux
開發(fā)工具:MyEclipse8.6,Tomcat,MySQL
技術(shù)實(shí)現(xiàn):Struts2+Hibernate+Spring+JavaScript+JSP+AJAX
項(xiàng)目描述:此系統(tǒng)為網(wǎng)上購物系統(tǒng),用戶可以用過該系統(tǒng)實(shí)現(xiàn)網(wǎng)上購物、注冊(cè)、登錄、瀏覽商
品、訂貨、生成訂單功能。也包括對(duì)普通商品增刪改查功能和購物車內(nèi)書的數(shù)量的增刪改功能。
責(zé)任描述:獨(dú)自完成項(xiàng)目的整個(gè)開發(fā)過程
用戶模塊包括登錄與注冊(cè),主要使用了AJAX對(duì)其輸入的信息進(jìn)行驗(yàn)證,結(jié)合Hibernate存儲(chǔ)和驗(yàn)證用戶登錄等。
商品列表模塊主要是用List集合來展示商品。
購物車模塊則是使用Session技術(shù)來保存購物車,通過Struts2調(diào)用不通方法來操作購物車中的商品集合,實(shí)現(xiàn)對(duì)購物車的增刪改查。
訂單模塊主要是用Hibernate對(duì)用戶所買商品的記錄進(jìn)行存儲(chǔ)。
經(jīng)驗(yàn)總結(jié):這個(gè)項(xiàng)目讓我們把我們所學(xué)習(xí)的三大框架以及JS,Ajax等都聯(lián)系起來。尤其是使用
Hibernate經(jīng)常出現(xiàn)異常,在和組內(nèi)成員討論中逐步解決問題,并且更加完善代碼。
通過這個(gè)項(xiàng)目不僅提高我個(gè)人能力,而且還促進(jìn)了與他人合作的能力。
二、教學(xué)管理系統(tǒng)
開發(fā)環(huán)境:Linux
開發(fā)工具:MyEclipse8.6,Tomcat,MySQL
技術(shù)實(shí)現(xiàn):Struts2+JavaScript+JDBC+AJAX
項(xiàng)目描述:項(xiàng)目實(shí)現(xiàn)了管理員對(duì)教師信息的增刪改查和對(duì)學(xué)生選課的管理
責(zé)任描述:獨(dú)立完成該項(xiàng)目的設(shè)計(jì)和實(shí)現(xiàn),主要應(yīng)用MVC模式的設(shè)計(jì)思想對(duì)項(xiàng)目進(jìn)行劃分。
采用JDBC對(duì)教師信息進(jìn)行增刪改查,在學(xué)生選課模塊,使用到了Ajax來對(duì)選課進(jìn)
行檢驗(yàn)。
經(jīng)驗(yàn)總結(jié): 通過該項(xiàng)目讓我對(duì)MVC設(shè)計(jì)模式有了更深一步的認(rèn)識(shí)。在數(shù)據(jù)的存儲(chǔ)方面尤其是
對(duì)JDBC對(duì)數(shù)據(jù)存儲(chǔ)的亂碼問題。通過與組內(nèi)成員的不懈努力將其克服。極大的鍛
煉了自己團(tuán)隊(duì)合作能力,項(xiàng)目計(jì)劃能力以及寫文檔的能力獨(dú)立解決問題的能力。
三、其它項(xiàng)目:BBS論壇,交友網(wǎng)等
實(shí)習(xí)經(jīng)歷
2011/12 — 2012/05北京xxx科技Java工程師實(shí)習(xí)生
教育背景
2010/09―2012/07開封大學(xué)軟件技術(shù)
所獲證書
C+ E國際軟件工程師Java培訓(xùn)證書
自我評(píng)價(jià)
專業(yè)技能:雖然在大學(xué)里,我學(xué)習(xí)的是軟件技術(shù)專業(yè),已經(jīng)具備了一些專業(yè)方面的基礎(chǔ)知識(shí)。但是想在行業(yè)中有更好的發(fā)展就必須學(xué)習(xí)更多與企業(yè)應(yīng)用相關(guān)的知識(shí),所以我選擇來達(dá)內(nèi)進(jìn)行培訓(xùn)。在學(xué)習(xí)期間,我踏實(shí)勤奮,按時(shí)完成課后練習(xí)及作業(yè),不斷的積累代碼量,同時(shí)也能幫同學(xué)解決一些力所能及的問題。遇到難題能夠主動(dòng)動(dòng)手查閱資料,解決問題。通過項(xiàng)目實(shí)戰(zhàn)提高我的個(gè)人能力和團(tuán)隊(duì)協(xié)作能力。
綜合能力:性格比較沉穩(wěn),為人誠懇,不怕吃苦,有高度的責(zé)任心和團(tuán)隊(duì)合作精神。對(duì)環(huán)境的適應(yīng)能力強(qiáng),有較強(qiáng)的團(tuán)隊(duì)意識(shí)和集體榮譽(yù)感,做事情比較認(rèn)真仔細(xì),對(duì)每一件事情都能認(rèn)真對(duì)待,能很好的自我調(diào)節(jié)。樂于學(xué)習(xí)新的知識(shí)與技術(shù)。
第五篇:java開發(fā)面試題
1、編寫程序
題目:古典問題:有一對(duì)公母豬,從出生后第3個(gè)月起每個(gè)月都生一對(duì)豬,小豬長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)豬,假如豬都不死,問每個(gè)月的豬總數(shù)為多少?
答案:
public class lianxi01 {
public static void main(String[] args){
System.out.println(“第1個(gè)月的兔子對(duì)數(shù): 1”);
System.out.println(“第2個(gè)月的兔子對(duì)數(shù):1”);
int f1 = 1, f2 = 1, f, M=24;
for(int i=3;i<=M;i++){
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println(“第” + i +“個(gè)月的兔子對(duì)數(shù): ”+f2);
}
}
}
2、是非題
2.1 Java程序中的起始類名稱必須與存放該類的文件名相同。()
答案:正確
2.2 原生類中的數(shù)據(jù)類型均可任意轉(zhuǎn)換。()
答案:錯(cuò)誤
3、問答題
3.1 try {}里有一個(gè)return語句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?
答案:
會(huì)執(zhí)行,在return前執(zhí)行。
3.2 sleep()和 wait()有什么區(qū)別:
答案:
sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì) 釋放對(duì)象鎖。wait是Object類的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。
4、數(shù)據(jù)庫題
聚集函數(shù)的應(yīng)用
編寫一條sql語句,希望從藝術(shù)家表artist_tab中,看到只有一個(gè)專長(zhǎng)specialty的是哪些專長(zhǎng)
答案:seelctspecialty from artist_tab group by specialty having count(*)=1’;