第一組:姚成棟 興趣分享——踏青地點推薦
立春已過糖耸,天氣漸漸回暖秘遏,你聞到春天的味道了嗎?周末在家發(fā)呆還不如出門走一走嘉竟。給大家推薦幾個地方踏踏青:
西湖:可能是大家都會去的地方邦危,但是確實一年四季都有不同的風(fēng)光,春天自然也有春日的美舍扰。
運河:這可能就沒多少人知道啦铡俐,但是在運河邊上散散步真的很愜意⊥姿冢可以從武林門做船到拱宸橋审丘,然后走一走。
濱江櫻花跑道:漫步濱江櫻花步道勾给,春風(fēng)拂過滩报,櫻花爛漫锅知,人在景中行,如在畫中游脓钾。整個畫面唯美得不可思議售睹!
第二組:馮佳麗 Js模塊化
——轉(zhuǎn)載
剛開始的時候我們寫js代碼是這么寫的
[html] view plain copy print?
1. function method1(){
2.
3. }
4. function method2(){
5.
6. }
然后調(diào)用的時候通過method1(),method2()即可調(diào)用可训,這么寫的話有很明顯的缺點昌妹,在頁面上我們可能引用了其他的js庫,這么寫會污染全局變量握截,無法保證自己定義的函數(shù)名稱不同其他js庫中的名字沖突飞崖。而且也不能看出不同函數(shù)之間的關(guān)系。
后來我們學(xué)會了封裝谨胞,將相關(guān)的函數(shù)以及變量封裝到一個對象中固歪,我們這樣寫:
[html] view plain copy print?
1. var module = {
2. a : 0,
3. b : 1,
4. method1:function(){
5.
6. },
7. method2:function(){
8.
9. }
10. }
調(diào)用的時候,我們可以這樣module.mehtod1();
如此將相關(guān)函數(shù)放入一個模塊內(nèi)部可以大大的減少名字沖突的概率胯努,但是如此寫也會有一個缺點牢裳,模塊內(nèi)部的一些內(nèi)部狀態(tài)也對外可見,我們可以在外部修改其內(nèi)部狀態(tài)module.a = 1;
因此我們可以這么寫叶沛,采用立即執(zhí)行函數(shù)的寫法
[html] view plain copy print?
1. var module = (function(){
2. var a = 0;
3. var method1 = function(){};
4. var method2 = function(){};
5. return{
6. method1:method1,
7. method2:mehtod2
8. };
9. })();
如此一來我們就將內(nèi)部變量隔絕在模塊內(nèi)部蒲讯,只有內(nèi)部函數(shù)才能訪問以及賦值,從模塊外部無法進行訪問灰署。
那么如果某個模塊過大判帮,那么怎么辦呢?把所有的內(nèi)容放在同一個js文件中么氓侧,這樣在加載js文件的時候就會加載了本來不需要的內(nèi)容脊另,照成網(wǎng)絡(luò)資源的浪費。
我們怎么樣將一個過大的模塊分開放在不同的js文件中呢约巷?
我們可以這樣:
[html] view plain copy print?
1. var module = (function(mod){
2. mod.method3 = function(){
3. };
4. return mod;
5. })(module || {});
我們在模塊module中加入一個新的方法method3
將js代碼寫成不同的模塊之后偎痛,我們就需要對這些模塊進行管理,當(dāng)我們把不同的模塊代碼放在不同的js文件中的時候独郎,我們頁面上面就會出現(xiàn)類似于這種代碼:
[html] view plain copy print?
1. <script type="text/javascript" src="1.js"></script>
2. <script type="text/javascript" src="2.js"></script>
3. <script type="text/javascript" src="3.js"></script>
如果這些模塊之間有依賴關(guān)系踩麦,我們還不能顛倒了這些js加載的順序,我們可以通過一個開源的js庫require.js(csdn下載)來管理我們js的加載氓癌。
< script type="text/javascript" src="require.js" data-main="../js/main.js"></scirpt>
data-main指定主js谓谦,最先加載的js文件,如果該js文件依賴于其他的js庫贪婉,那么我們可以在main.js文件最上面這么寫:
[html] view plain copy print?
1. require(['jquery'], function(){
2.
3. });
require方法接受兩個參數(shù)反粥,第一個參數(shù)為數(shù)組,指明該js所依賴的js文件,第二個參數(shù)為回調(diào)函數(shù)才顿,當(dāng)所有依賴都被加載之后該回調(diào)函數(shù)會被執(zhí)行莫湘。
默認(rèn)的路徑為main.js所在的路徑+模塊id(即數(shù)組中指定的名字)以js為后綴的文件。同時我們也可以配置這些依賴的具體路徑
[html] view plain copy print?
1. require.config({
2. paths:{
3. jquery:"../js/jquery.min"
4. }
5. });
6. 或者
7. require.config({
8. baseUrl:"js/lib",
9. path:{
10. jquery:"jquery.min"
11. }
12. })
13. 也可以
14. require.config({
15. baseUrl:"js/lib",
16. path:{
17. jquery: "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min"
18. }
19. })
第三組:蔡永堅 C#三層構(gòu)架二
具體的區(qū)分方法
1:數(shù)據(jù)訪問層:主要看你的數(shù)據(jù)層里面有沒有包含邏輯處理郑气,實際上他的各個函數(shù)主要完成各個對數(shù)據(jù)文件的操作幅垮。而不必管其他操作。
2:業(yè)務(wù)邏輯層:主要負(fù)責(zé)對數(shù)據(jù)層的操作尾组。也就是說把一些數(shù)據(jù)層的操作進行組合忙芒。
3:表示層:主要對用戶的請求接受,以及數(shù)據(jù)的返回讳侨,為客戶端提供應(yīng)用程序的訪問呵萨。
表示層
位于最外層(最上層),離用戶最近爷耀。用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù)甘桑,為用戶提供一種交互式操作的界面拍皮。
業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層在體系架構(gòu)中的位置很關(guān)鍵歹叮,它處于數(shù)據(jù)訪問層與表示層中間,起到了數(shù)據(jù)交換中承上啟下的作用铆帽。由于層是一種弱耦合結(jié)構(gòu)咆耿,層與層之間的依賴是向下的,底層對于上層而言是“無知”的爹橱,改變上層的設(shè)計對于其調(diào)用的底層而言沒有任何影響萨螺。如果在分層設(shè)計時,遵循了面向接口設(shè)計的思想愧驱,那么這種向下的依賴也應(yīng)該是一種弱依賴關(guān)系慰技。因而在不改變接口定義的前提下,理想的分層式架構(gòu)组砚,應(yīng)該是一個支持可抽取吻商、可替換的“抽屜”式架構(gòu)。正因為如此糟红,業(yè)務(wù)邏輯層的設(shè)計對于一個支持可擴展的架構(gòu)尤為關(guān)鍵艾帐,因為它扮演了兩個不同的角色。對于數(shù)據(jù)訪問層而言盆偿,它是調(diào)用者柒爸;對于表示層而言,它卻是被調(diào)用者事扭。依賴與被依賴的關(guān)系都糾結(jié)在業(yè)務(wù)邏輯層上捎稚,如何實現(xiàn)依賴關(guān)系的解耦,則是除了實現(xiàn)業(yè)務(wù)邏輯之外留給設(shè)計師的任務(wù)。
數(shù)據(jù)層
數(shù)據(jù)訪問層:有時候也稱為是持久層今野,其功能主要是負(fù)責(zé)數(shù)據(jù)庫的訪問晰奖,可以訪問數(shù)據(jù)庫系統(tǒng)、二進制文件腥泥、文本文檔或是XML文檔匾南。
簡單的說法就是實現(xiàn)對數(shù)據(jù)表的Select,Insert蛔外,Update蛆楞,Delete的操作。如果要加入ORM的元素夹厌,那么就會包括對象和數(shù)據(jù)表之間的mapping豹爹,以及對象實體的持久化。
優(yōu)缺點
優(yōu)點
1矛纹、開發(fā)人員可以只關(guān)注整個結(jié)構(gòu)中的其中某一層臂聋;
2、可以很容易的用新的實現(xiàn)來替換原有層次的實現(xiàn)或南;
3孩等、可以降低層與層之間的依賴;
4采够、有利于標(biāo)準(zhǔn)化肄方;
5、利于各層邏輯的復(fù)用蹬癌。
缺點
1权她、降低了系統(tǒng)的性能。這是不言而喻的逝薪。如果不采用分層式結(jié)構(gòu)隅要,很多業(yè)務(wù)可以直接造訪數(shù)據(jù)庫,以此獲取相應(yīng)的數(shù)據(jù)董济,如今卻必須通過中間層來完成步清。
2、有時會導(dǎo)致級聯(lián)的修改感局。這種修改尤其體現(xiàn)在自上而下的方向尼啡。如果在表示層中需要增加一個功能,為保證其設(shè)計符合分層式結(jié)構(gòu)询微,可能需要在相應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層中都增加相應(yīng)的代碼崖瞭。
3、增加了開發(fā)成本撑毛。
規(guī)則
三層結(jié)構(gòu)的程序不是說把項目分成DAL, BLL, WebUI三個模塊就叫三層了, 下面幾個問題在你的項目里面:
1. UILayer里面只有少量(或者沒有)的SQL語句或者存儲過程調(diào)用, 并且這些語句保證不會修改數(shù)據(jù)?
2. 如果把UILayer拿掉, 你的項目還能在Interface/API的層次上提供所有功能嗎?
3. 你的DAL可以移植到其他類似環(huán)境的項目嗎?
4. 三個模塊, 可以分別運行于不同的服務(wù)器嗎?
如果不是所有答案都為YES, 那么你的項目還不能算是嚴(yán)格意義上的三層程序. 三層程序有一些需要約定遵守的規(guī)則:
1. 最關(guān)鍵的, UI層只能作為一個外殼, 不能包含任何BizLogic的處理過程
2. 設(shè)計時應(yīng)該從BLL出發(fā), 而不是UI出發(fā). BLL層在API上應(yīng)該實現(xiàn)所有BizLogic, 以面向?qū)ο蟮姆绞?br>
3. 不管數(shù)據(jù)層是一個簡單的SqlHelper也好, 還是帶有Mapping過的Classes也好, 應(yīng)該在一定的抽象程度上做到系統(tǒng)無關(guān)
4. 不管使用COM+(Enterprise Service), 還是Remoting, 還是WebService之類的遠(yuǎn)程對象技術(shù), 不管部署的時候是不是真的分別部署到不同的服務(wù)器上, 最起碼在設(shè)計的時候要做這樣的考慮, 更遠(yuǎn)的, 還得考慮多臺服務(wù)器通過負(fù)載均衡作集群
所以考慮一個項目是不是應(yīng)該應(yīng)用三層/多層設(shè)計時, 先得考慮下是不是真的需要? 實際上大部分程序就開個WebApplication就足夠了, 完全沒必要作的這么復(fù)雜. 而多層結(jié)構(gòu), 是用于解決真正復(fù)雜的項目需求的书聚。
第四組:張元一 get和post區(qū)別唧领?
通常的理解
w3schools關(guān)于這個問題的解答:HTTP 方法:GET 對比 POST (http://www.w3school.com.cn/tags/html_ref_httpmethods.asp)列出了一般的理解,比如:
GET后退按鈕/刷新無害雌续,POST數(shù)據(jù)會被重新提交(瀏覽器應(yīng)該告知用戶數(shù)據(jù)會被重新提交)斩个。
GET書簽可收藏,POST為書簽不可收藏驯杜。
GET能被緩存受啥,POST不能緩存 。
GET編碼類型application/x-www-form-url鸽心,POST編碼類型encodedapplication/x-www-form-urlencoded 或 multipart/form-data滚局。為二進制數(shù)據(jù)使用多重編碼。
GET歷史參數(shù)保留在瀏覽器歷史中顽频。POST參數(shù)不會保存在瀏覽器歷史中藤肢。
GET對數(shù)據(jù)長度有限制,當(dāng)發(fā)送數(shù)據(jù)時糯景,GET 方法向 URL 添加數(shù)據(jù)嘁圈;URL 的長度是受限制的(URL 的最大長度是 2048 個字符)。POST無限制蟀淮。
GET只允許 ASCII 字符最住。POST沒有限制。也允許二進制數(shù)據(jù)灭贷。
與 POST 相比温学,GET 的安全性較差略贮,因為所發(fā)送的數(shù)據(jù)是 URL 的一部分甚疟。在發(fā)送密碼或其他敏感信息時絕不要使用 GET !POST 比 GET 更安全逃延,因為參數(shù)不會被保存在瀏覽器歷史或 web 服務(wù)器日志中览妖。
GET的數(shù)據(jù)在 URL 中對所有人都是可見的。POST的數(shù)據(jù)不會顯示在 URL 中揽祥。
這個對比整體沒什么毛病讽膏,但只是給出了一些現(xiàn)象上的區(qū)別,但并沒有解釋為什么拄丰,對于這個問題的理解不能就停在這一層府树。
理解錯了?
有一篇文章99%的人理解錯 HTTP 中 GET 與 POST 的區(qū)別(http://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3833d9ca20b9f7dcd9d33e4#rd)料按,否定了上述回答:“很遺憾奄侠,這不是我們要的回答!”载矿,作者說:
GET和POST本質(zhì)上就是TCP鏈接垄潮,并無差別。但是由于HTTP的規(guī)定和瀏覽器/服務(wù)器的限制,導(dǎo)致他們在應(yīng)用過程中體現(xiàn)出一些不同弯洗。 GET和POST還有一個重大區(qū)別旅急,簡單的說:GET產(chǎn)生一個TCP數(shù)據(jù)包;POST產(chǎn)生兩個TCP數(shù)據(jù)包牡整。
對于GET方式的請求藐吮,瀏覽器會把http header和data一并發(fā)送出去,服務(wù)器響應(yīng)200(返回數(shù)據(jù))逃贝; 而對于POST炎码,瀏覽器先發(fā)送header,服務(wù)器響應(yīng)100 continue秋泳,瀏覽器再發(fā)送data潦闲,服務(wù)器響應(yīng)200 ok(返回數(shù)據(jù))。
第五組:陳孚楠 AJAX跑ERROR的原因
dataType錯誤
類型錯誤:后臺返回的dataType類型和前臺寫的不一致會跳入error
格式錯誤:jquery1.4之后對json的格式要求非常嚴(yán)格迫皱,json格式錯誤也會跳入error.{"test":1} 注意格式
有時歉闰,在不需要返回值的情況下,扔按模板格式卓起,設(shè)置了dataType:"json",參數(shù)和敬;這時候,ajax傳值正確時戏阅,出現(xiàn)200返回成功狀態(tài)下報錯的特殊情況昼弟。async請求同步異步問題
async默認(rèn)是true(異步請求),如果想一個Ajax執(zhí)行完后再執(zhí)行另一個Ajax, 需要把async=false
例如,你用post請求傳值到另一個頁面后臺奕筐,但是頁面一加載你的ajax就已經(jīng)執(zhí)行過了舱痘,傳值接收是在后臺才完成的,這時候就請求不到數(shù)據(jù)离赫,所以可以考慮把ajax請求改為同步試試芭逝。data不能不寫
data為空也一定要傳"{}";不然返回的是xml格式的渊胸。并提示parsererror. data:"{}"
parsererror的異常和Header 類型也有關(guān)系旬盯。及編碼header('Content-type: text/html; charset=utf8');傳遞的參數(shù)
必須是ajax支持的編碼格式URL路徑問題
路徑不能有中文
原文地址: http://www.cnblogs.com/calamus/p/5794700.html