1、servlet執(zhí)行流程
客戶端發(fā)出http請求谎碍,web服務(wù)器將請求轉(zhuǎn)發(fā)到servlet容器鲤脏,servlet容器解析url并根據(jù)web.xml找到相對應(yīng)的servlet爽茴,并將request灾锯、response對象傳遞給找到的servlet兢榨,servlet根據(jù)request就可以知道是誰發(fā)出的請求,請求信息及其他信息顺饮,當(dāng)servlet處理完業(yè)務(wù)邏輯后會將信息放入到response并響應(yīng)到客戶端吵聪。
2、springMVC的執(zhí)行流程
springMVC是由dispatchservlet為核心的分層控制框架兼雄。首先客戶端發(fā)出一個請求web服務(wù)器解析請求url并去匹配dispatchservlet的映射url吟逝,如果匹配上就將這個請求放入到dispatchservlet,dispatchservlet根據(jù)mapping映射配置去尋找相對應(yīng)的handel君旦,然后把處理權(quán)交給找到的handel澎办,handel封裝了處理業(yè)務(wù)邏輯的代碼嘲碱,當(dāng)handel處理完后會返回一個邏輯視圖modelandview給dispatchservlet金砍,此時的modelandview是一個邏輯視圖不是一個正式視圖局蚀,所以dispatchservlet會通過viewresource視圖資源去解析modelandview,然后將解析后的參數(shù)放到view中返回到客戶端并展現(xiàn)恕稠。
3琅绅、給定一個txt文件,如何得到某字符串出現(xiàn)的次數(shù)
File?file=?newFile("E://test.txt");
InputStream?is=?newFileInputStream(file);
byteb[] =?newbyte[1024];
inta=?is.read(b);
String?str[] =?newString(b,0,a).split("");
intcount= 0;
for(inti= 0;i
if("a".equals(str[i]))count++;
}
System.out.println(count);
4鹅巍、Java設(shè)計(jì)模式思想(單列模式千扶,工廠模式,策略模式骆捧,共23種設(shè)計(jì)模式)
a)單例模式:單例模式核心只需要new一個實(shí)例對象的模式澎羞,比如數(shù)據(jù)庫連接,在線人數(shù)等敛苇,一些網(wǎng)站上看到的在線人數(shù)統(tǒng)計(jì)就是通過單例模式實(shí)現(xiàn)的妆绞,把一個計(jì)時器存放在數(shù)據(jù)庫或者內(nèi)存中,當(dāng)有人登陸的時候取出來加一再放回去枫攀,有人退出登陸的時候取出來減一再放回去括饶,但是當(dāng)有兩個人同時登陸的時候,會同時取出計(jì)數(shù)器来涨,同時加一图焰,同時放回去,這樣的話數(shù)據(jù)就會錯誤蹦掐,所以需要一個全局變量的對象給全部人使用技羔,只需要new出一個實(shí)例對象,這就是單例模式的應(yīng)用卧抗,并且單例模式節(jié)省資源堕阔,因?yàn)樗刂屏藢?shí)例對象的個數(shù),并有利于gc回收颗味。
b)策略模式:就是將幾個類中公共的方法提取到一個新的類中超陆,從而使擴(kuò)展更容易,保證代碼的可移植性浦马,可維護(hù)性強(qiáng)时呀。比如有個需求是寫鴨子對象,鴨子有叫晶默,飛谨娜,外形這三種方法,如果每個鴨子類都寫這三個方法會出現(xiàn)代碼的冗余磺陡,這時候我們可以把鴨子中的叫趴梢,飛漠畜,外形這三個方法提取出來,放到鴨父類中坞靶,讓每個鴨子都繼承這個鴨父類憔狞,重寫這三個方法,這樣封裝的代碼可移植性強(qiáng)彰阴,當(dāng)用戶提出新的需求比如鴨子會游泳瘾敢,那么對于我們oo程序員來講就非常簡單了我們只需要在鴨父類中加一個游泳的方法,讓會游泳的鴨子重寫游泳方法就可以了尿这。
c)工廠模式:簡單的工廠模式主要是統(tǒng)一提供實(shí)例對象的引用簇抵,通過工廠模式接口獲取實(shí)例對象的引用。比如一個登陸功能射众,后端有三個類碟摆,controller類,interface類叨橱,實(shí)現(xiàn)接口的實(shí)現(xiàn)類典蜕。當(dāng)客戶端發(fā)出一個請求,當(dāng)請求傳到controller類中時雏逾,controller獲取接口的引用對象嘉裤,而實(shí)現(xiàn)接口的實(shí)現(xiàn)類中封裝好了登陸的業(yè)務(wù)邏輯代碼。當(dāng)你需要加一個注冊需求的時候只需要在接口類中加一個注冊方法栖博,實(shí)現(xiàn)類中實(shí)現(xiàn)方法屑宠,controller獲取接口的引用對象即可,不需要改動原來的代碼仇让,這種做法是的可拓展性強(qiáng)典奉。
5、冒泡排序丧叽、二分查找
a)冒泡
publicstaticvoidmp(inta[]) {
intswap= 0;
for(inti= 0;?i<?a.length;?i++) {
for(intj=?i;?j<?a.length;?j++) {
if(a[j] >?a[i]) {
swap=?a[i];
a[i] =?a[j];
a[j] =?swap;
}
}
}
System.out.println(Arrays.toString(a));
}