First Week (補充完整)
Blog:
1.Introduction of Functional Language
2.Analysis of HTTP
3.Comparison of URL and URI
Practice:
1.Tomcat Server installation
一、數學和函數式編程
函數式編程由Lambda演算得來,因此它與我們學過的數學非常類似。在學習函數式編程之前,我們最好忘記之前頭腦中的一些編程思想(如學習C C++的時候),因為前後兩個編程思維完全不同。下面分別舉例來說明函數式編程中的一些概念和數學中對應概念關系:
1.函數定義
數學中要求函數必須有自變量和因變量,所以在函數式編程中,每個函數必須有輸入參數和返回值。你可以看到F#中的函數不需要顯示地使用關鍵字return去返回某個值。所以,那些只有輸入參數沒有返回值、只有返回值沒有輸入參數或者兩者都沒有的函數在純函數式編程中是不存在的。
2.無副作用
數學中對函數的定義有:對於確定的自變量,有且僅有一個因變量與之對應。言外之意就是,只要輸入不變,那麽輸出一定固定不變。函數式編程中的函數也符合該規律,函數的執行既不影響外界也不會被外界影響,只要參數不變,返回值一定不變。
3.柯裏化
函數式編程中,可以將包含了多個參數的函數轉換成多個包含一個參數的函數。比如對於下面的函數:
let func x y = x + y
let result = func 1 2 //result為3
可以轉換成
let func x =
let func2 = fun y -> x + y
func2
let result = (func 1) 2 //result結果也為3,可以去掉括號
可以看到,一個包含兩個參數的函數經過轉換,變成了只包含一個參數的函數,並且該函數返回另外一個接收一個參數的函數。最後調用結果不變。這樣做的好處便是:講一個復雜的函數可以分解成多個簡單函數,並且函數調用時可以逐步進行。
其實同理,在數學中也有類似“柯裏化”的東西。當我們計算f(x,y) = x + y這個函數時,我們可以先將x=1帶入函數,得到的結果為f(1,y) = 1 + y。這個結果顯然是一個關於y的函數,之後我們再將y=2帶入得到的函數中,結果為f(1,2) = 1 + 2。這個分步計算的過程其實就是類似於函數式編程中的“柯裏化”。
4.
數學中我們用符號去表示一個值或者表達式,比如“令x=1”,那麽x就代表1,之後不能再改變。同理,在純函數式編程中,不存在“變量”的概念,也沒有“賦值”這一說,所有我們之前稱之為“變量”的東西都是標識符,它僅僅是一個符號,讓它表示一個東西之後不能再改變了。
5.高階函數
在函數式編程中,將參數為函數、或者返回值為函數的這類函數統稱之為“高階函數”,前面已經舉過這樣的例子。在數學中,對一個函數求導函數的過程,其實就是高階函數,原函數經過求導變換後,得到導函數,那麽原函數便是輸入參數,導函數便是返回值。
二、HTTP
通過閱讀本書熟悉http
三、URI and URL
四、Practice
Tomcat Server installation
1.下載tomcat,去阿帕奇官網www.apache.org
選擇projects
找到tomcat
選擇版本
zip一般是通用的,選擇zip
2.解壓
解壓後的目錄結構
3.配置tomcat環境變量
4.啟動tomcat
雙擊bin目錄下文件
出現如上界面則啟動成功
常見錯誤:端口號沖突
解決辦法:配置文件,進入,,
70行左右,修改8080為可以訪問的端口號。
重新啟動tomcat,即可。
5.訪問
默認端口號8080,默認訪問界面是ROOT
如果要訪問docs文件直接在路徑後加上/docs
訪問順序,比如說要訪問first文件
有兩個index文件,為什麽訪問了後一個呢?
因為WEB—INF中有個配置文件中
配置了訪問順序。
6.常見狀態碼
7.虛擬路徑
a.方式一
將web項目配置到webapps以外的目錄
conf/server.xml中配置
host標簽中:
<Context docBase="實際路徑" path="相對路徑">
每次都要重啟
b.方式二
D:\java web\apache-tomcat-8.5.38\conf\Catalina\localhost中新建“項目名.xml”中寫入
<Context docBase="實際路徑" path="相對路徑">
8.虛擬主機
通過www.test.com訪問本機
a.conf/server.xml
First Week (補充完整)