Begin tran
第一筆交易
@@error 如果成功了此行的值就會是0
Begin
第二筆交易
@@error 如果成功
Commit
Else
rollback
End
Else
Rollback
不管幾次增刪修只會看到一次commit
因為只有所有確認都成功才會執行
但rollback就不止一次
第一筆交易如成功 會先塞在dbms 部分認可成功
然後等待第二筆
然後commit
##明顯交易處理
##併型控制
買飲料
先到買很多
後到買很少
處理方式
先做買很少的
效率優先 ( 伺服器/個人電腦最佳化排程 ( 減少平均等待時間
或
堅持原則先做先到的
先進先出 ( ATM
但伺服器多工呢 ( 可能不止 個位數的使用者
切成很多 time slot
輪流都做一點點 Q
排隊理論
為了讓效率提升結果資料安全性降低 這是絕對不可以的
再來一些例子
SQL SERVER 效能不如 歐洛摳 貴有貴的道理 ACCESS 更爛 更悲觀
樂觀就像乙太網路 CSMA/CD
碰撞偵測 一次只能允許一個封包 碰撞時封包直接丟掉 換下一次舉手
以前10M現在10G 邏輯一樣但技術一直上升
網路塞車 ( 舉手的人太多 碰撞機率太高 就一直重複舉手 看誰最快舉手
Netcut原理
Arp –a
Osi七層
Ip 第三
Mac第二detlinklayer 只認mac arp table紀錄傳送地址
封掉這個
因為乙太網路是用廣播的三項交握跟這個傳遞方式不同
##網路要再加強 可以去查隔壁課程大綱自己看一下
五個男生要追一個女生 大家都可以追
當女生決定跟一個男生再一起 其他四個無法追
但如果前面已經啟用共暫鎖定時要等待所有共暫鎖定處理完才能獨佔
藉由意圖像是資料碰撞偵測邏輯的樣子?? 還是隨機給一個有意圖的使用者
##效能條教 - 補充 ( 上一個班沒講 我們賺到
實務上的東西
Sql server 效能調教聖經 2000 - 2005
老師會的其實也是書上教的
資料讀取慢80%都是sql寫得不好
不要欄位做運算會運算八百萬次
也不要用
盡量避免用or
In>or
不要用not
子查詢效能差
應該要再 dataset 在記憶體裡面操作 別用 資料庫資料操作
預存程序是編譯過的 可以省時間
避免不必要的索引
#下午MVC
先從控制器C開始介紹後V再來M
M其實是最重要的能決定C跟V
上次是大架構
題外話:ftp
MVC專案裡面分為三個資料夾
會牽涉到namespace
只要沒有干涉到資料夾名稱就不用理會它
之前是m產c跟v
可是今天是只有c也是能執行,要看到介面只要有v就行
專案名稱可以數字開頭
但namespace 不可以所以會出現底線
繼承Controller
來自於system.web.mvc
Actionresult為資料型態 有return且名稱index()
也沒有跟類別名稱一樣所以也不是建構子
所以是方法
回傳值 資料型態為 actionresult 物件型態
http://xxxxx/controllerName/actionresult
然後靠位址去要東西
這裡是http://xxxxx/home/index
就算沒有v也能跟他提要求
##homeController
( 純控制器無v無m
Actionresult物件型態 是專門 return view的
所以再建立一種方法showarry() 型態為 string 公開的
裡面塞個陣列,宣告string 最後來回傳結果
宣告個int來做計算
寫foreach函式作加總
隱含轉換
最後回傳string
預覽會錯誤因為是呼叫index() function但裡面沒有對應的view檔案
所以用url呼叫另外一個我們剛寫的showarry() function
程式碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace _01Contorller.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
//02-1-3 建立一般方法ShowAry()-計算陣列總合
public string ShowArray()
{
int[] score = { 78, 99, 20, 100, 66 };
string show = "";
int sum = 0;
foreach(var m in score)
{
show += m + ", ";
sum += m;
}
show += ",加總結果:" + sum;
return show;
}
}
}
//02-1 Controller撰寫練習-一般方法
//02-1-1 在Controllers資料夾上按右鍵,加入,控制器,選擇 MVC5Controller-Empty
//02-1-2 指定控制器名稱為HomeController,並開啟HomeController
//02-1-3 建立一般方法ShowArray()-計算陣列總合
//02-1-4 執行並測試 http://localhost:53468/Home/ShowArray (port可能不同)
以上變數為區域變數所以下一個funtion可以繼續宣告同名稱變數
接著在一個funtion做練習 將圖片累加然後叫出來
public string ShowImages()
{
string show = "";
for (int i=1;i<=8;i++)
{
show += "<img src='../images/"+i+".jpg' />";
}
return show;
}
上面兩個都是一般方法 沒傳參數的
以下做個有傳參數的
Format 這個方法中 Index 會轉到 {0} 這
如何傳參數給方法??
http://位址/位址?參數名稱=參數
控制器無法做多載??
最後程式碼與步驟
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace _01Contorller.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
//02-1-3 建立一般方法ShowAry()-計算陣列總合
public string ShowArray()
{
int[] score = { 78, 99, 20, 100, 66 };
string show = "";
int sum = 0;
foreach(var m in score)
{
show += m + ", ";
sum += m;
}
show += ",加總結果:" + sum;
return show;
}
//02-1-5 建立一般方法ShowImages()-傳回顯示1.jpg~8.jpg的HTML字串
public string ShowImages()
{
string show = "";
for (int i=1;i<=8;i++)
{
show += "<img src='../images/"+i+".jpg' />";
}
return show;
}
//02-1-7 建立一般方法ShowImageIndex()-依index參數取得對應圖示與說明
public string ShowImagesIndex(int index)
{
string[] name = { "櫻桃鴨", "鴨油高麗菜", "鴨油麻婆豆腐", "櫻桃鴨握壽司", "片皮鴨捲三星蔥", "三杯鴨", "櫻桃鴨片肉", "慢火白菜燉鴨湯" };
string show = string.Format("<p align='center'><img src='../images/{0}.jpg' /><br />{1}</p>", index, name[index - 1]);
return show;
}
}
}
//02-1 Controller撰寫練習-一般方法
//02-1-1 在Controllers資料夾上按右鍵,加入,控制器,選擇 MVC5Controller-Empty
//02-1-2 指定控制器名稱為HomeController,並開啟HomeController
//02-1-3 建立一般方法ShowArray()-計算陣列總合
//02-1-4 執行並測試 http://localhost:53468/Home/ShowArray (port可能不同)
//02-1-5 建立一般方法ShowImages()-傳回顯示images資料夾裡1.jpg~8.jpg的HTML字串
//02-1-6 執行並測試 http://localhost:53468/Home/ShowImages (port可能不同)
//02-1-7 建立一般方法ShowImageIndex()-依index參數取得對應圖示與說明
//02-1-8 執行並測試 http://localhost:53468/Home/ShowImageIndex?index=1 (port可能不同)