第一篇:黑馬程序員:Java面試題之BS與CS的聯(lián)系與區(qū)別
C/S是Client/Server的縮寫。服務(wù)器通常采用高性能的PC、工作站或小型機(jī),并采用大型數(shù)據(jù)庫系統(tǒng),如Oracle、Sybase、InFORMix或 SQL Server??蛻舳诵枰惭b專用的客戶端軟件。
B/S是Brower/Server的縮寫,客戶機(jī)上只要安裝一個瀏覽器(Browser),如Netscape Navigator或Internet Explorer,服務(wù)器安裝Oracle、Sybase、InFORMix或 SQL Server等數(shù)據(jù)庫。在這種結(jié)構(gòu)下,用戶界面完全通過WWW瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn)。瀏覽器通過Web Server 同數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。
C/S 與 B/S 區(qū)別:
1.硬件環(huán)境不同:
C/S 一般建立在專用的網(wǎng)絡(luò)上, 小范圍里的網(wǎng)絡(luò)環(huán)境, 局域網(wǎng)之間再通過專門服務(wù)器提供連接和數(shù)據(jù)交換服務(wù).B/S 建立在廣域網(wǎng)之上的, 不必是專門的網(wǎng)絡(luò)硬件環(huán)境,例與電話上網(wǎng), 租用設(shè)備.信息自己管理.有比C/S更強(qiáng)的適應(yīng)范圍, 一般只要有操作系統(tǒng)和瀏覽器就行
2.對安全要求不同
C/S 一般面向相對固定的用戶群, 對信息安全的控制能力很強(qiáng).一般高度機(jī)密的信息系統(tǒng)采用C/S 結(jié)構(gòu)適宜.可以通過B/S發(fā)布部分可公開信息.B/S 建立在廣域網(wǎng)之上, 對安全的控制能力相對弱, 可能面向不可知的用戶。
3.對程序架構(gòu)不同
C/S 程序可以更加注重流程, 可以對權(quán)限多層次校驗(yàn), 對系統(tǒng)運(yùn)行速度可以較少考慮.B/S 對安全以及訪問速度的多重的考慮, 建立在需要更加優(yōu)化的基礎(chǔ)之上.比C/S有更高的要求 B/S結(jié)構(gòu)的程序架構(gòu)是發(fā)展的趨勢, 從MS的.Net系列的BizTalk 2000 Exchange
2000等, 全面支持網(wǎng)絡(luò)的構(gòu)件搭建的系統(tǒng).SUN 和IBM推的JavaBean 構(gòu)件技術(shù)等,使 B/S更加成熟.4.軟件重用不同
C/S 程序可以不可避免的整體性考慮, 構(gòu)件的重用性不如在B/S要求下的構(gòu)件的重用性好.B/S 對的多重結(jié)構(gòu),要求構(gòu)件相對獨(dú)立的功能.能夠相對較好的重用.就入買來的餐桌可以再利用,而不是做在墻上的石頭桌子
5.系統(tǒng)維護(hù)不同
C/S 程序由于整體性, 必須整體考察, 處理出現(xiàn)的問題以及系統(tǒng)升級.升級難.可能是再做一個全新的系統(tǒng)
B/S 構(gòu)件組成,方面構(gòu)件個別的更換,實(shí)現(xiàn)系統(tǒng)的無縫升級.系統(tǒng)維護(hù)開銷減到最小.用戶從網(wǎng)上自己下載安裝就可以實(shí)現(xiàn)升級.6.處理問題不同
C/S 程序可以處理用戶面固定, 并且在相同區(qū)域, 安全要求高需求, 與操作系統(tǒng)相關(guān).應(yīng)該都是相同的系統(tǒng)
B/S 建立在廣域網(wǎng)上, 面向不同的用戶群, 分散地域, 這是C/S無法作到的.與操作系統(tǒng)平臺關(guān)系最小.7.用戶接口不同
C/S 多是建立的Window平臺上,表現(xiàn)方法有限,對程序員普遍要求較高
B/S 建立在瀏覽器上, 有更加豐富和生動的表現(xiàn)方式與用戶交流.并且大部分難度減低,減低開發(fā)成本.8.信息流不同
C/S 程序一般是典型的中央集權(quán)的機(jī)械式處理, 交互性相對低
B/S 信息流向可變化, B-B B-C B-G等信息、流向的變化, 更像交易中心。
第二篇:CS與BS架構(gòu)的區(qū)別與優(yōu)缺點(diǎn)
C/S與B/S架構(gòu)的區(qū)別與優(yōu)缺點(diǎn)
C/S 架構(gòu)
C/S 架構(gòu)是一種典型的兩層架構(gòu),其全程是Client/Server,即客戶端服務(wù)器端架構(gòu),其客戶端包含一個或多個在用戶的電腦上運(yùn)行的程序,而服務(wù)器端有兩種,一種是數(shù)據(jù)庫服務(wù)器端,客戶端通過數(shù)據(jù)庫連接訪問服務(wù)器端的數(shù)據(jù);另一種是Socket服務(wù)器端,服務(wù)器端的程序通過Socket與客戶端的程序通信。
C/S 架構(gòu)也可以看做是胖客戶端架構(gòu)。因?yàn)榭蛻舳诵枰獙?shí)現(xiàn)絕大多數(shù)的業(yè)務(wù)邏輯和界面展示。這種架構(gòu)中,作為客戶端的部分需要承受很大的壓力,因?yàn)轱@示邏輯和事務(wù)處理都包含在其中,通過與數(shù)據(jù)庫的交互(通常是SQL或存儲過程的實(shí)現(xiàn))來達(dá)到持久化數(shù)據(jù),以此滿足實(shí)際項(xiàng)目的需要。
C/S 架構(gòu)的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
1.C/S架構(gòu)的界面和操作可以很豐富。
2.安全性能可以很容易保證,實(shí)現(xiàn)多層認(rèn)證也不難。3.由于只有一層交互,因此響應(yīng)速度較快。
缺點(diǎn):
1.適用面窄,通常用于局域網(wǎng)中。2.用戶群固定。由于程序需要安裝才可使用,因此不適合面向一些不可知的用戶。3.維護(hù)成本高,發(fā)生一次升級,則所有客戶端的程序都需要改變。
B/S架構(gòu)
B/S架構(gòu)的全稱為Browser/Server,即瀏覽器/服務(wù)器結(jié)構(gòu)。Browser指的是Web瀏覽器,極少數(shù)事務(wù)邏輯在前端實(shí)現(xiàn),但主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),Browser客戶端,WebApp服務(wù)器端和DB端構(gòu)成所謂的三層架構(gòu)。B/S架構(gòu)的系統(tǒng)無須特別安裝,只有Web瀏覽器即可。B/S架構(gòu)中,顯示邏輯交給了Web瀏覽器,事務(wù)處理邏輯在放在了WebApp上,這樣就避免了龐大的胖客戶端,減少了客戶端的壓力。因?yàn)榭蛻舳税倪壿嫼苌?,因此也被成為瘦客戶端?/p>
B/S架構(gòu)的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
1)客戶端無需安裝,有Web瀏覽器即可。
2)BS架構(gòu)可以直接放在廣域網(wǎng)上,通過一定的權(quán)限控制實(shí)現(xiàn)多客戶訪問的目的,交互性較強(qiáng)。3)BS架構(gòu)無需升級多個客戶端,升級服務(wù)器即可。
缺點(diǎn):
1)在跨瀏覽器上,BS架構(gòu)不盡如人意。
2)表現(xiàn)要達(dá)到CS程序的程度需要花費(fèi)不少精力。
3)在速度和安全性上需要花費(fèi)巨大的設(shè)計(jì)成本,這是BS架構(gòu)的最大問題。4)客戶端服務(wù)器端的交互是請求-響應(yīng)模式,通常需要刷新頁面,這并不是客戶樂意看到的。(在Ajax風(fēng)行后此問題得到了一定程度的緩解)3 | 評論(1)
第三篇:【黑馬程序員】Java之debug總結(jié)三
【黑馬程序員】Java之debug總結(jié)三
之前寫了“Java之debug總結(jié)一”,“Java之debug總結(jié)二”共總結(jié)了5種debug方式,現(xiàn)在簡紹第6種,不足之處,敬請指正:(源碼在文章末尾處)本文以chrome瀏覽器為例
六.前臺debug 主要:debug js代碼(1.jsp中嵌入的js代碼 2.js文件中的js代碼)第一步:首先創(chuàng)建一個web項(xiàng)目,需要有一個jsp頁面和js,如下圖:
第二步:在test.js,index.jsp中填充內(nèi)容,如圖示: index.jsp
黑馬程序員濟(jì)南中心 編著
test.js
第三步:把項(xiàng)目發(fā)布到tomcat服務(wù)器中,并啟動tomcat服務(wù)器
第四步:在瀏覽器上訪問index.jsp,使用“F12”打開chrome開發(fā)者工具,如下圖:
黑馬程序員濟(jì)南中心 編著
選中“Source”,點(diǎn)擊,出現(xiàn)如下界面
黑馬程序員濟(jì)南中心 編著
點(diǎn)擊“[url=]encode測試[/url]”按鈕進(jìn)行測試
以上為外部js代碼測試,測試過程中可以修改js的內(nèi)容,“Ctrl+s”保存后,可以立馬生效,斷點(diǎn)會從第一行從新開始.黑馬程序員濟(jì)南中心 編著
內(nèi)部js測試步驟類似于上面的步驟,只是在選擇資源的時候不是選擇“test.js”,而是選擇“index”,選擇后頁面如下圖:
測試步驟和外部js一樣
比較外部js和內(nèi)部js的區(qū)別: 外部js,可以進(jìn)行動態(tài)的修改, 修改之后立馬生效,并且可以立馬進(jìn)行測試.內(nèi)部js,不可以動態(tài)修改,用起來有點(diǎn)不方便
以上以我用過的所有debug方式,希望對大家有所幫助
黑馬程序員濟(jì)南中心 編著
第四篇:【黑馬程序員】Java之debug總結(jié)二
【黑馬程序員濟(jì)南】Java之debug總結(jié)二
之前詳細(xì)描述了4種debug方式,現(xiàn)在簡紹第5種,不足之處,敬請指正:(源碼在文章末尾處)五.maven項(xiàng)目debug
第一步:首先創(chuàng)建一個maven項(xiàng)目,如圖所示:
第二步:debug運(yùn)行前設(shè)置
黑馬程序員濟(jì)南中心 編著
執(zhí)行完上面的步驟,會出現(xiàn)如下彈出框
黑馬程序員濟(jì)南中心 編著
Source配置如下
黑馬程序員濟(jì)南中心 編著
黑馬程序員濟(jì)南中心 編著
黑馬程序員濟(jì)南中心 編著
第三步:Debug運(yùn)行,上面配置完成后,直接debug運(yùn)行即可,如下圖
第四步:打斷點(diǎn)測試結(jié)果
黑馬程序員濟(jì)南中心 編著
希望能對不會使用maven進(jìn)行debug的猿友們有所幫助,第六種方式我會盡快補(bǔ)上
maven-debug.zip
黑馬程序員濟(jì)南中心 編著
第五篇:黑馬程序員:Java面試題之?dāng)?shù)據(jù)庫優(yōu)化方面的經(jīng)驗(yàn)
目前部分開發(fā)人員面對一個很尷尬的境地:技術(shù)到了,但是語言表達(dá)能力沒到!很多東西在實(shí)踐操作中能夠手到擒來,但是面試過程中卻處處卡殼!很嚴(yán)重~
用PreparedStatement 一般來說比Statement性能高:一個sql 發(fā)給服務(wù)器去執(zhí)行,涉及步驟:語法檢查、語義分析,編譯,緩存
1.2.3.4.5.“inert into user values(1,1,1)”---二進(jìn)制
“inert into user values(2,2,2)”---二進(jìn)制
“inert into user values(?,?,?)”---二進(jìn)制
有外鍵約束會影響插入和刪除性能,如果程序能夠保證數(shù)據(jù)的完整性,那在設(shè)計(jì)數(shù)據(jù)庫時就去掉外鍵。(比喻:就好比免檢產(chǎn)品,就是為了提高效率,充分相信產(chǎn)品的制造商)
(對于hibernate來說,就應(yīng)該有一個變化:empleyee->Deptment對象,現(xiàn)在設(shè)計(jì)時就成了employeeàdeptid)
看mysql幫助文檔子查詢章節(jié)的最后部分,例如,根據(jù)掃描的原理,下面的子查詢語句要比第二條關(guān)聯(lián)查詢的效率高:
1.select e.name,e.salary where e.managerid=(select id from employee where name='itcast');
2.select e.name,e.salary,m.name,m.salary from employees e,employees m where
e.managerid = m.id and m.name='itcast';
表中允許適當(dāng)冗余,譬如,主題帖的回復(fù)數(shù)量和最后回復(fù)時間等
將姓名和密碼單獨(dú)從用戶表中獨(dú)立出來。這可以是非常好的一對一的案例喲!
sql語句全部大寫,特別是列名和表名都大寫。特別是sql命令的緩存功能,更加需要統(tǒng)一大小寫,sql語句à發(fā)給oracle服務(wù)器à語法檢查和編譯成為內(nèi)部指令à緩存和執(zhí)行指令。根據(jù)緩存的特點(diǎn),不要拼湊條件,而是用?和PreparedStatment
還有索引對查詢性能的改進(jìn)也是值得關(guān)注的。
備注:下面是關(guān)于性能的討論舉例
4航班 3個城市
1.2.3.4.5.6.m*n
select * from flight,city where flight.startcityid=city.cityid and city.name='beijing';
m + n
7.8.9.select * from flight where startcityid =(select cityid from city where cityname='beijing');
select flight.id,'beijing',flight.flightTime from flight where startcityid =(select cityid from city where cityname='beijing')