漢娜布隆伯格:大家好。 我們將開始 短短幾分鐘的早期 因為我們有一大堆 材料打通。 我是漢娜。 我是一個TF。 瑪麗亞將要加盟 我們在短短的幾分鐘。 她右側前教節。 我教的部分權 之後,所以我們要 把它存到一個半小時​​。 所以你會看到在這裡,我們有很 幾個主題,我們需要打通, 因此我們將快速去一點點。 但是,如果在任何時候,我們說些什麼 太快或者你不明白, 隨意中斷與問題。 我們希望能夠使這一個 審查會議是有益的各位 越好。 真棒。 因此,讓我們直接與 有些話題,我們實際上 非常非常簡要介紹了 測驗0的測驗0審查會議。 所以先從鍊錶。 因此,只要確保你有一些 關於鍊錶的基本知識 並在方便執行 一些基本操作的。 因此,只要審查,鏈接 列表比數組更好 因為它們可以動態地增長。 因此,我們有一個巨大的優勢。 我們已經看到了他們使用 在哈希表的時候,我們 不知道到底有多少 我們將事情想 插入到我們的數據結構。 不幸的是,我們有件 鏈接目錄上的內存, 所以我們不一定會 能夠做到一定的時間訪問 到在該鏈接的表的任意元素。 為了找到一個 特定的元素,我們 必須遍歷所有的 從一開始的方式。 所以,請記住,大部分 基本操作是1歐米加。 所以插入只是要取1。 刪除是要取n,因為我們 必須去從列表中找到它。 而搜索可以採取,在最壞的情況,正。 我們不能做這樣的事情 上鍊錶二進制搜索 因為我們不能只是 隨機跳躍到中間。 涼。 真棒。 成堆的一點點。 這又來了個測驗0,那麼你 應該是超級舒服。 但是對於棧,我們請你 記住一摞托盤。 而且這將是先入後出。 因此,我們疊的事情了 在紙疊,然後 如果我們試圖採取一些 off--我們稱之為突然離開 在stack--我們來頂掉。 如果我們想要把東西 在堆棧中,我們把它推。 所以它總是會被成長 從像堆疊托盤的底部。 真棒。 我們已經看到了堆實現 既鍊錶和數組。 如果你正在實施 數組,你想 以確保保持跟踪 的大小和容量。 這樣大小將是當前 物聯網的籌碼數量, 而容量是總數 事情你可以存儲在您的堆棧。 涼。 非常相似,我們有隊列。 在這種情況下,代替考慮 一摞托盤,認為一行。 這將是第一個先出。 所以,如果你正在排隊等候 東西在商店, 我們希望這個人首先在 線將被第一幫助。 與其說推及 流行像我們這樣的堆棧, 我們只說入隊和出隊。 再次,如果你是 以與陣列實現此, 我們需要跟踪 不僅大小 和容量,而且頭,這 將是我們的隊列的前面。 涼。 在任何的任何問題嗎? 真棒。 運動沿著正確的。 OK,哈希表。 在此處,它開始 得到真正有趣。 所以一個哈希表是一個實施 一個關聯數組中。 所以基本上發生了什麼 是我們這一切的投入, 我們給它一個散列 功能它說, OK,這就是在 哈希表它屬於。 所以,最簡單的散列函數 我們已經看到的只是說, 好吧,假設我們希望把 在我們的哈希表的字符串。 而一個非常簡單的想法 可能是說好, 讓我們只用排序 這個詞的第一個字母。 所以,你可以在這裡看到,我們採取的香蕉, 我們把它通過一個散列函數, 它說,嘿,這 應該去索引1。 所以,我們基本上可以認為散列 表作為一群不同桶。 而且每個桶是怎麼回事 持有的一個鍊錶的頭部。 而在這鍊錶,我們可以 居然把不同的數據塊。 更使潛水一點點 成散列函數,這裡的 這個例子我只是 說明了我們剛剛說的, OK,取第一個字母 這個詞和我們 將它整理成桶。 所以大概就會有26桶, 一個用於每個字母。 為什麼不是一個很好的散列函數? 是什麼讓這個不理想? 是啊。 聽眾:你會 有衝突。 漢娜布隆伯格:是的,沒錯。 你將有碰撞。 所以這是一件事。 我們將討論我們如何能夠 解決衝突,在短短一秒鐘。 與此另一個問題 特別是哈希函數 是我們的不同 水桶將要 漂亮截然不同的大小。 我們知道,有一大堆 更多的單詞開始與比X, 所以我們將有很 不平衡的水桶在我們的哈希表。 涼。 所以是的,讓我們回到 點碰撞。 我們該怎麼辦,如果有衝突? 我們有幾個不同的選擇。 所以之一,所以假設我們正在努力 把漿果到我們的哈希表。 而且我們看到,哦,我們要 把它放在索引1, 但香蕉已經住在這裡。 我們會做什麼? 我們有兩個主要的選擇。 排名第一的是我們可以說,OK, 有沒有空間索引1, 但是讓我們只是不停地翻翻 直到我們可以找到另一個空位。 所以我們會說,好吧, 讓我們把它點3。 這是一個選項。 這就是所謂的線性探測。 而第二個選項是說,好了,好了, 我們只是讓這些水桶 是鍊錶的頭。 而且它是確定的,如果有更多的 比水桶的一件事。 我們只是要 追加它推上前台。 所以在這裡你可以看到,OK, 當我們插入的漿果,我們 只是把種香蕉, 推了一點點 ,並在那裡扔了漿果。 而這也完全罰款。 這就是所謂的分離鏈。 你可以認為這作為一種像 首腦數組鍊錶。 哈希有任何疑問 表,哈希函數? 真棒。 樹木和嘗試。 所以一棵樹是任何種類的 的數據結構的 其中有某種 層次或某種 的排名你不同的對象。 而這將成為超 清晰的,當我們看一個例子。 而我們看到的嘗試,以及 用哈希表,在pset5-- 這又完全公平的遊戲 這quiz--作為另一個數據 結構我們可以 存儲不同的東西。 在字典中的情況下, 我們存儲了一堆話。 因此,讓我們來看看一些樹木。 因此,這是一個樹的一例。 它具有一種結構, 該分層結構中, 在這裡你可以看到, 在上面這1個節點 具有以上職級2和3某種形式, 這是上述4,5和6和7, 這是上述圖8和9。 所以,這就是我們所說的一 樹,這樣你就可以正中下懷 畫面這在你的腦袋。 現在,我們有幾個 更專業化的樹木。 這樣的一個例子是一個二叉樹。 而一個二叉樹, 再次,只是要 數據結構與某種 層次結構,但是每個節點 最多可以有兩個孩子。 這就是這個詞二進制從何而來。 因此,這是一個二進制樹的一例。 所以這是一個小類別的樹木。 現在,讓我們更具體, 談二trees--二進制搜索 樹木,而不是。 因此,這裡的想法是不僅不 每個節點最多有兩個孩子, 但所有的孩子去的 左側將是較小的 和所有的孩子都到了 正確的將是更大的。 因此,通知只是我們 二叉樹,有 數字之間的關係。 但是,在我們的二進制搜索 樹,我們看到了,好了,下面是44。 而每號44的左邊是 體積更小,一切的權利 就越大。 和保持在每個 樹的水平。 所以在這裡,這是小於 22,這是比22大。 而這二叉搜索樹。 為什麼我們認為這就是所謂的 二叉搜索樹? 它想起了什麼算法嗎? 聽眾:二進制搜索。 漢娜布隆伯格:二進制搜索。 因為如果你正在尋找一個 在這棵樹特定數目, 在每一點上,你可以敲 樹,這是偉大的了一半。 所以那將會給我們的東西 看起來很像二進制搜索。 任何問題? 好吧,冷靜。 好吧,嘗試。 大家的喜愛。 因此,這是該示例 我們已經看到了一堆類。 再次,這是另一種 我們可以存儲數據的方式。 在字典中的情況下,再次, 這只是將是字符串。 因此,讓我們看看這實際上 看起來像在稍低的水平。 因此,讓我們一起來看看 在字典樹的一個節點。 而且我們看到,OK,有是怎麼回事 是一個布爾和節點, 的指針的節點。 而我們看到, 布爾被稱為is_word。 所以基本上,這是 要對應 這些小三角這 說,如果你在這裡得到, 你發現了一個完整的單詞。 我們知道,“圖靈”過 這裡是一個完整的字, 而只有T-U-R是不發一言 因為我們沒有看到那個小三角。 而那個小三角,再一次, 對應於該is_word, 此布爾is_word。 然後我們有孩子的數組。 所以在每個級,則 有一個特定節點, 並且該節點指向一個 陣列整個字母表。 所以你可以看到,同樣, 在此picture--我 要保持跳回來, forth--,這一陣列頂部 有一堆不同的 節點即將關閉它。 它有26個,或27,如果你想 包括一個多餘的字符。 這給了我們一個 方法來存儲我們的數據 在可以看著一個方式 你可以查找超快速。 什麼是查找時間為線索? 聽眾:[聽不清]。 漢娜布隆伯格:是的。 從理論上講,它的恆定時間。 它一定會成為大小 您要查找的單詞。 即使我們增加了無限 更多的話我們的線索, 它不會帶我們 任何更長的時間才能確定 如果一個給定的字是在線索。 所以這是非常好的。 聽眾:您剛才 初始化數組? 你錯過了一個或兩個點。 你能不能說說 對於第二? 漢娜布隆伯格:當然,絕對的。 好問題。 問題是,我們 有一個數組的 將有節點明星作為 而不僅僅是節點,對不對? 涼。 所以在這裡我們在說什麼 是我們陣只是 將是指向其他數組。 因此,它的essentially--它種 感覺就像一個鍊錶以這種方式 其中每個這些兒童 只是點到下一個節點。 和的方式,我們 實際上是決定了,嘿嘿,OK, 我們已經經歷了一個完整的迭代 一句話,就是這個字在字典中, 我們只要檢查該is_word。 大的問題。 是啊。 聽眾:OK。 那麼,什麼是運行時間為線索? 漢娜布隆伯格:當然。 因此,運行時為線索的 查找將是恆定的時間。 所以它只是將是 在單詞的字母數。 它不依賴於 字典的大小 或數據結構的大小。 所以這裡有一個稍微簡單的例子。 在這種情況下,你可以看到, 字蝙蝠是在詞典 你有變焦,但你 沒有像動物園。 如何將我們做的動物園? 我們如何加入動物園我們 字典,我們的線索? 是啊。 聽眾:請is_word 真正的[聽不清]。 漢娜布隆伯格:好。 所以我們會說Z-O-O,然後我們會 要檢查了該框為好。 大。 讓我們非常簡要地比較 試圖與哈希表。 嘗試是真正偉大 因為,正如我們所說, 他們提供恆定的時間查找。 但巨大的劣勢 是他們堆積如山。 你可以得到的感覺, 甚至看它, 它要採取 大量的內存。 因此,他們將是多少 大於哈希表, 但他們打算給 我們更快的查找時間。 這就是那種你 權衡,你關心什麼, 無論是速度還是內存。 在任何的任何問題, 所有的C數據結構。 美麗。 好。 我們將進入到一個小 Web開發與瑪麗亞位。 MARIA ZLATKOVA:可愛。 好。 漢娜布隆伯格:你可以用我的筆記本電腦。 MARIA ZLATKOVA:好的。 嗯不錯。 正如我們現在轉移到網絡 發展,我們談了一點 有關更改權限 文件和目錄 以便它們可以被訪問 其他用戶,走向世界, 所以,我們可以看到 基本上我們可以傳達他們 當我們開發像網站 我們已經大多被做。 因此,我們看到了chmod命令, 這是改變模式,基本上是這樣。 這是一個Linux命令和 它改變了訪問權限 的文件系統對象。 和文件系統對象是 只是一個目錄,文件, 什麼,你可以 更改的權限。 所以看到文件的權限, 我們輸入ls命令,列表,-l。 當我們鍵入我們 平時看的一些權限 看起來有點像這個 在目錄名的前面。 因此,D表示目錄。 然後我們有三個 黑社會基本上 指代的權限 一個用戶,一個組,或世界。 權限的類型,我們可以 對這些三組人 要么是r代表讀,W代表 寫,x代表執行。 我們可以有那些 本集團與世界。 棘手的是,有時 當我們鍵入chmod命令, 我們會輸入一些數字 這包括三位。 因此,我們可以做的像 777和基本 所指的附加價值 這些黑社會的 因為R.將參考4,W會 指2,且x要提到1, 因此,當相加,每個號碼 會回落到一個累計數 以0到7之間的累積值。 所以,我們也可以有0 在所有沒有權限。 這將基本上給我們 該權限或者用戶, 的組,或世界。 在這個任何問題這麼遠嗎? 聽眾:你說讀了4? MARIA ZLATKOVA:是的。 聽眾:[聽不清]。 漢娜布隆伯格:是的。 聽眾:再加入所有 其他人則表示你的電話號碼。 MARIA ZLATKOVA:是的。 是啊。 這些都是很大的問題。 可愛。 接下來,我們跳進HTML和 更多有關Web開發位。 因此,HTML只是手段 超文本標記語言。 那就是標記 語,是一個標準 即它被用來製作網頁。 這就是所謂的標記語言 因為它實際上沒有編制。 這並不是說一些代碼應該如何 執行或類似的東西。 它只是界定和 描述了一個網頁 頁面應設置 與它的每個元素 以及他們如何應該給用戶。 一些HTML標籤,我們 走到有以下幾種。 我們所有的HTML文檔 開始使用DOCTYPE HTML。 然後,我們總是有html標記。 我們有一個頭部和主體。 而且,重要的是HTML有 這種嵌套結構 因為它是很清楚的。 然後,它變得很清楚,當我們 需要打開和實際關閉的標籤。 而我們總是需要關閉 我們已經打開的標籤。 在這裡,我們有一些類型的 超前的事情,我們希望有。 因此,我們有,例如, CS50的稱號。 然後我們實際上 可以鏈接樣式表 它定義如何樣式我們的網站。 這是CSS。 我們將去在它的 接下來的幻燈片以及。 在人體中,我們設置 一些類和ID。 而作為一個提醒,一次, ID是唯一和類 可以分配給多個項目。 而這只是意味著 我們可以使用類和ID 內的其它structures--所以,對於 例如,在CSS文件或樣式 sheets--提及特定元素 基本上說,我們想要的風格 或者設計一些元素 在一些特定的方式。 我們稱它們通過 他們的ID和班級。 而且我們也可以指 通過標記不同的東西為好, 但ID和班級只是給我們一些 多功能性和具體是什麼我們 想參考。 所以,只是一個例子。 我們可以再次內 一個CSS文件,我們 要定義一些 style--這樣的顏色,字體, 和類似的東西that--我們可以 定義樣式的身體。 因此,這將定義它 整個身體標記。 但是,我們也可以定義 風格的#title。 再次,包括hashtag是指我們 ID和點指的是我們班的。 然後為.INFO,我們 還可以設置一些屬性。 再次,當我們回去,我們有我們的 類調用的信息和我們的ID稱號。 我們可以看到,我們參考 給他們#title和.INFO。 聽眾:你會說 井號 [?採納我? ?] MARIA ZLATKOVA:對不起? 聽眾:你會說 井號 [?採納我? ?] MARIA ZLATKOVA:包括hashtag 裝置ID,因此#title 指的是什麼元素 這個ID叫做稱號。 然後將點是指一類。 因此,.INFO是指該元素 因為它具有類信息。 對。 聽眾:你為什麼 區分它們在HTML? 為什麼這麼說有些事情是 ID和某些事情是類? 瑪麗亞ZLATKOVA:這只是達到你 - 漢娜布隆伯格:重複的問題。 MARIA ZLATKOVA:哦,對不起。 我們為什麼要區分某些元素 作為ID和其他元素如類? 這只是因為它是 真的經常設計選擇。 它給你很多 多功能性是 可以說,我想這個特定項目 因為他們希望能有這個ID 做了很多的事情 有了它,我只 要定義一種風格,某種風格 或顏色無論該項目。 而辦法做到這一點 只是給它一個ID。 然後,如果我想有 幾個不同的項目 具有,而不是 去和設置their-- 而不是通過這樣做 標籤,因為標籤會 設置單元格為整個標籤 對於每一次的標籤時, 你可以設置一個類的多個項目。 然後就是訪問類,並說 我想這個樣式類的方式。 再次,這個類可以 是多個不同的項目 和ID必須是唯一的。 大的問題。 其他問題嗎? OK,真棒。 再次,這是這些選擇器如何 在CSS中引用,與包括hashtag, 與點,或沒有任何東西 分配一些標籤的風格, 狀體。 在這裡,我們有通用 這是如何實現的語法。 要重複一些最佳 對HTML和CSS的做法, 我們需要再次關閉所有 我們打開HTML標記。 而我們推薦您 為你的最後的項目, 以及為CS50金融,就是讓 確保所有的HTML驗證。 而這樣做了與W3驗證。 然後呢,我們沒有和 我們建議這樣做 是分離式的,所以 CSS從HTML標記。 因此,涉及到如何什麼 你的頁面會在視覺上看起來 以及它如何會被修改 應該進入一個CSS文件。 然後你的標記說怎麼會事 是在相對於彼此是HTML, 這應該進去 你的HTML文檔。 任何問題? MHM。 聽眾:究竟是怎麼回事 在與頁面驗證 當我們驗證 [聽不清]創建的HTML? MARIA ZLATKOVA:所以what--想你。 那麼究竟是怎麼回事 與頁面驗證 為什麼我們需要做的是什麼? 基本上,我們需要做的 因為很多時候,您的瀏覽器, 如果你不關閉一個標籤 或類似的東西, 您的瀏覽器仍然會 呈現一個頁面,可能仍然工作, 但它是最好的做法,以確保 你再次關閉所有的標籤, 您的所有元素 它們應該是這樣, 基本上,它是由 所預設的約定。 這,再次,只是一個 的事情,你應該 要學習做, 相對於具有 更模糊代碼之類的東西。 是啊。 噢對不起。 我還以為你養你的手。 聽眾:不,我只是[聽不清]。 MARIA ZLATKOVA:OK。 聽眾:謝謝。 MARIA ZLATKOVA:當然,謝謝。 如此反复,馬上就要到如何 信息被傳 和通信模型 傳送信息。 的TCP / IP。 TCP只是意味著傳播 控制協議和IP 指互聯網協議。 而這僅僅是指 數據的方式被遞送。 如果我們有一些數據 需要輸送到你 - 如此 你為某個服務器的請求。 例如,當我們 嘗試訪問cs50.net, 我們提出要求 在CS50服務器與我們 看到我們想要得到 這類信息。 然後基於該協議 這個信息是如何傳遞, 服務器對信息 回到我們的客戶端。 然後我們可以查看 的信息的頁 然後用它。 於是超文本傳輸協議 只是另一種協議或一組 公約的定義如何 web瀏覽器和web服務器 應該溝通。 並把所有這一切 一起,HTTP,再次, 只是定義了這個超界定 由我們一直在它的HTML, 應該如何交付給你, 如何被傳遞到你的數據 得到你。 這就是為什麼,如果你們還記得 從一個類,我們有很多的請求 我們有很多語法 對於這些要求,我們是 要去了現在。 如此反复,當我們發送 一請求到服務器, 我們必須定義一個幾件事情。 因此,我們需要找到的類型 的要求,我們正在設置。 再次,我們有,例如, GET是一種方法, 我們有我們的要求。 然後HTTP / 1.1僅僅是 我們目前使用該協議。 大部分時間,那將 以我們正在使用的協議。 所以,如果你有一個問題 像你的測驗。 這是該公約 我們有這麼遠。 反斜杠指的是什麼樣的 事情我們請求。 然後,我們的主機是,例如,在這 情況下,我們試圖去到google.com。 所以這是一個主機的值。 這是一種類型的請求 可能被發送的。 然後某種響應可能 被發送,再次,根據該協議, 再次,HTTP / 1.1。 所以這一次的HTTP版本。 200行僅有的狀態代碼。 而這行只是一個短語 基於該狀態碼。 然後將內容類型 指型 即返回給你,是 對您收到該網頁 和您的瀏覽器 可事後渲染。 這是text / html的。 聽眾:什麼是1.1是什麼意思? 瑪麗亞ZLATKOVA:這僅僅是 版本of--哦,這是什麼意思1.1? 這僅僅是個版本中,HTTP 版本,我們正在使用的協議。 大的問題。 其他的問題嗎? 聽眾:你能否總結 內容類型真正的快? MARIA ZLATKOVA:所以這 是服務器。 information--的類型是什麼 內容類型是問題。 所以這是類型 那你回來的信息 從服務器的類型 數據,瀏覽器然後可以 使你使用。 聽眾:難道這就是這 協議是在告訴你做什麼? MARIA ZLATKOVA:對不起? 聽眾:那是什麼樣的協議說什麼? MARIA ZLATKOVA:本p​​rotocol-- 聽眾: - 什麼的 內容類型是或what-- MARIA ZLATKOVA:該協議是基於 on--什麼是協議告訴你? 這是現在的樣子 這一信息 被送到您根據 在什麼樣的協議 該信息得到 交付還給你。 這是否有道理樣的? 漢娜布隆伯格:你 能想到的協議 作為A--我覺得教授 馬蘭形容它 在課堂上那種像A--這就像 人類握手的等價物。 說,喜歡,嘿嘿,我的請求,我 知道如何處理的1.1版本的HTTP。 然後在服務器說 哦,好吧,我 - 和同時存在。 我也知道如何處理HTTP / 1.1。 我想給 你背一些內容。 在這種情況下,它將會 為text / html類型的。 因此,這只是一種方式 他們的communicating-- MARIA ZLATKOVA:這只是 確認你 兩個按照相同的 協議和兩個 在客戶端和server--所以 您的瀏覽器和server-- 那種知道你在做什麼 談論,並有 會議傳遞數據。 聽眾:所以內容類型part-- 內容類型的文本/ html--那 同一消息的一個單獨部分? 或者是讓我們說,200的一部分嗎? 200是否告訴他們或is-- MARIA ZLATKOVA:200說明了一切去確定。 然後,內容類型為形式的 同一消息的單獨部分, 並說了一句讓我 返回的有這種類型text / html的。 它只是提供更多的信息。 有什麼補充? 好。 在這個沒有其他問題? 真棒。 因此,一些其他HTTP狀態的 我們可以得到除了200 OK, 那些我們所看到的可能 可能很多是403和404。 所以404,如果你想 不存在訪問的東西。 因此,例如,在你的 CS50財務pset時, 如果你已經被渲染quote.html 而你沒有這個文件, 而是你有quote.php,即 將導致404未找​​到 因為該文件可能不存在。 對於一個403禁止的,這 指的權限。 因此,如果某些文件不是由可讀 世界中,你可能會得到一個403返回。 有些人認為你可能 get-- 301,永久移動; 302,找到; 304,修正; 400,錯​​誤的請求; 和然後內部服務器錯誤 500和503,服務不可用。 是。 聽眾:我們會預期 記住所有這些狀態? 瑪麗亞ZLATKOVA:我會 他們在你的備忘單。 [笑聲] 聽眾:我們預計 知道什麼觸發每一個? MARIA ZLATKOVA:是嗎? 漢娜布隆伯格:對於那些我們已經 運行into--這樣的問題was-- MARIA ZLATKOVA:他們有望 知道這些情況了每個 代碼可能會被觸發? 因此,對於我們已經使用的那些 跑進,我會說,是的。 因此,我們肯定看到200 確定在pset中演講了。 我們已經看到了403,404。 對於其他的呢? 漢娜布隆伯格:我 500說似乎是公平的遊戲。 MARIA ZLATKOVA:500,是的。 漢娜布隆伯格:是的。 只要有一個一般意義 是什麼使他們。 而且也只有這些 名字,你可以種 就像讓一個受過教育的猜測 什麼實際造成他們。 例如,將永久,大概 該文件已被永久移動。 聽眾:但在以前的 考試中,有一個如此 你怎麼指望我們回答這個問題? 漢娜布隆伯格:那 值得零分。 在茶壺上418的問題 在技​​術上是一個HTTP狀態, 但它是值得零分。 很顯然,你不 預計認識他們。 聽眾:這是一個真實的? 漢娜布隆伯格:這是一個真正的 之一,但它並不意味著什麼。 這只是一個玩笑。 互聯網讓人感到滑稽。 MARIA ZLATKOVA:大問題,球員。 其他問題嗎? 聽眾:什麼是內部服務器錯誤? MARIA ZLATKOVA:內部 服務器錯誤只 意味著你已經 無法溝通 與服務器的某些原因。 因此,它不一定 一些已經做的 與客戶端或類似的東西。 我不知道任何特定的實施例的 我們已經討論了解釋, 但是,是的。 漢娜布隆伯格:當然。 因此,例如,像我們 說你正在處理混搭 而谷歌的服務器停機一段 因此,停電,讓我們說。 這將是一個內部服務器 錯誤或某種of--喜歡你 不會得到響應。 MARIA ZLATKOVA:是的。 這只是當你 無法溝通 與服務器出於某種原因,因為 它的下降或其他一些原因。 所以跳進PHP。 PHP,不像HTML,是一個 編程語言。 我們開始使用它,因為它是 非常有用的Web開發。 我們首先用它在CS50融資。 它基本上可以幫助我們把 同時該標記,設計, 以及我們如何實際使用信息 要在網頁上顯示的東西。 所以PHP本身就意味著PHP 超文本預處理器, 所以這是一個遞歸backnorym本身。 開放標籤PHP,我們左 並用問號右箭頭 和PHP。 因此,我們已經看到了一堆了。 現在,我們只是走了過來 一些關於它的基本的東西。 綜上所述,使用PHP,變量 名稱以美元符號。 我們沒有指定,再次, 變量類型了。 就像我們用C做了, 我們不需要這麼做。 我們可以做很多不同的 東西與變量。 我們可以把它們放在一起 通過將它們 用點符號,這 我們不能用C做了。 再次,我們有更多的靈活性 同的變量方面的PHP。 再次,我們沒有一個主要功能。 而PHP解釋 相對於編譯 因此,只要我們如何做沒有為C文件, 我們沒有這樣做,為PHP。 而是,該方法的語言 由本身運行,則將其解釋。 然後鬆散類型 只是意味著我們 不必指定一個可變 類型和變量類型 理解在運行時。 聽眾:但你是怎麼 由點串聯的意思嗎? MARIA ZLATKOVA:當然。 當我們想要把東西together-- 所以,如果我們有一些變量 具有3的值,我們有另一個 變量有字符串的值, 我們可以把這些變量一起 通過把一個點在它們之間 和連接它們。 或者,我們可以創建一個 變量調用名 並把它在一起 連接兩個字符串。 所以,如果我們有一個字符串用雙 報價和我們把一個點後, 然後我們有另外的字符串, 將共創一個字符串。 聽眾:OK。 MARIA拉脫維亞:是清楚了嗎? 聽眾:是的。 MARIA ZLATKOVA:OK。 是。 聽眾:當你說 解釋而非編譯 你在說什麼你不 需要是作為特定時 它涉及到PHP對C? MARIA ZLATKOVA:當我們說 解釋,而不是編譯 是什麼呢? 這樣就意味著我們並不需要 可執行文件運行PHP。 這意味著它運行自有其道理。 那有意義嗎? 多一點。 漢娜布隆伯格:所以你 能想到的解釋 作為另一方案,是負責 通過PHP一行去一行 而實際執行它,而不是 在編譯了這一切為二進制。 實際上它並不意味著什麼 我們如何具體需。 我們仍然需要精確,並且不 忘記了分號,並確保 你有你的美元符號, 之類的東西。 好問題。 MARIA ZLATKOVA:是的。 因此,一行行,因為 反對與C文件, 我們必須讓整個決賽 之前,我們實際上可以運行它。 這是主要的區別。 但同樣,我們不能 真的那麼具體。 因此,在PHP數組代表 實際上是一個有序圖。 所以數組準值的鍵。 這兩種方式申報 陣列,基於該語法, 我們可以更加明確 在說我們有一個數組 我們有這個鍵1映射到 這個值1,密鑰2映射值2。 或者我們可以創建一個數組 包含該值本身 然後鍵是 理解的方式。 在這個有問題嗎? 聽眾:會是什麼鍵 在第二個例子嗎? 0,1,2,3→ MARIA ZLATKOVA:例如,它只是 在此按鍵不一定 做出改變。 他們只是定義你怎麼能 用它裡面的值。 所以,如果我們有一個foreach 循環在PHP中會 讓我們走過所有的值, 我們可以通過所有的值, 即使我們有或沒有定義 內的網站的特定鍵 以前的語法。 因此,即使這種 陣中,我們仍然可以 有一個foreach循環 是經過各 在陣列中的關鍵值。 所以在foreach的語法 循環中,我們先從一個數組。 這$ ARR變量是我們實際的數組 我們在上一張幻燈片定義 作為值,從字面上去 通過每個值, 不管是否 我們有一個鍵或不。 然後我們可以做一些與 foreach循環內的值。 如此反复,如果我們有一個數組 像這樣在這裡created-- 所以我們有foo和價值的關鍵 酒吧,巴茲的關鍵和qux--的價值 我們可以有一個foreach循環 經過數組作為鍵值 然後做一些事情 用鍵和/或值。 但是,我們不一定總是 必須有一個foreach循環, 經過數組作為鍵映射到值。 我們可以通過 foreach循環數組值。 漢娜布隆伯格:我認為, 用於:是你的問題,是什麼 是隱式索引? 聽眾:均田。 MARIA ZLATKOVA:哦。 漢娜布隆伯格:是啊,是啊。 所以基本上,如果你不指定 一個關鍵,這將是01。 MARIA ZLATKOVA:是的。 就像使用C,它是零 索引如果不指定密鑰。 聽眾:對不起。 你可以嘗試講 一點點響亮? 我有一點點 麻煩聽到的一切。 瑪麗亞ZLATKOVA:我很抱歉。 嗯,當然咯。 所以,你要我 到過這一次? 或者是this-- 聽眾:所以在以往的slide--如果 你可以只回去一秒鐘。 MARIA ZLATKOVA:當然了,對不起。 聽眾:所以第二 陣列這裡不 似乎有一個值加鍵, 有點 [?因果關係。 ?] MARIA ZLATKOVA:對,對。 聽眾:所以這是如何工作的 當你說這是全或無。 對我來說,看起來像 一個 [?富?]了。 MARIA ZLATKOVA:是啊,是啊。 如此反复,這是一 在這個意義上有序圖 有被理解, 例如,索引 這裡可以理解為0,1,2,3。 再次,這是有那些 索引是我們相當於 具有映射到值的鍵。 所以,如果我們的關鍵是0--遺憾。 漢娜布隆伯格:沒有, 還有的粉筆在這裡。 它實際上是非常好的。 瑪麗亞ZLATKOVA:那太好了。 好。 如此反复,$ ARR 0會 鍵為值1。 0將是關鍵的值1。 聽眾:我很抱歉。 它是無形的。 漢娜布隆伯格:好吧,沒關係。 粉筆是個壞主意。 我把它送回去。 你可以把鑰匙 作為0映射到值1。 MARIA ZLATKOVA:是的。 因此,這是0,這是1,2,3。 這些可能是你的鑰匙。 你可以把它們as--呀。 因此,而不是有 明確的按鍵,它們是 那種理解為 該指數從0開始。 粉筆沒有幫助。 是啊。 顧客:foreach循環, 如果我們想查看的值, 它只是自動索引為0? MARIA ZLATKOVA:是的。 這將通過每個值。 聽眾:[聽不清]作為 0或將只是做0? MARIA ZLATKOVA:你必須 也就是說,作為美元符號,然後 一些變量名,值。 聽眾:[聽不清]。 MARIA ZLATKOVA:對不起? 聽眾:對不起,我 只是想記住。 你會怎麼做,如果你能做到這一點 自動索引僅僅是0? MARIA ZLATKOVA:那麼你會怎麼做 如果你沒有具體的鍵名稱? 聽眾:是的。 MARIA ZLATKOVA:你只想define-- 只是說自己的一些名字。 因此,在您的pset,你們可能 記住的foreach $行作為$行, 我們創造了我們自己這個$行說 我們想通過排為$行。 儘管我們沒有 行定義了這個明確的$, 我們可以隨便去 說這可能是我們的重點, 而剛剛經過的每個值。 聽眾:那就是價值的新變量 我們要創建存儲[聽不清]? MARIA ZLATKOVA:所以這不是 本質上是一種新的變量。 它是指一個變量 內的陣列他們每個人的。 漢娜布隆伯格:這是 一個新的變量名。 MARIA ZLATKOVA:是啊, 這是一個新的變量名, 但它不是inherently--呀。 這只是一個新的變量 你可以做到這一點。 因此,只要我們怎麼做 $行作為$行,行 是一個新的變量名,我們 可以創建在我們的foreach循環。 它不具有在此之前,對預先存在。 聽眾:你可以去通過 邏輯為每個使用的例子嗎? MARIA ZLATKOVA:MHM。 噢對不起。 這裡的例子。 當然。 因此,對於每個array--所以 這意味著去這個陣列 關鍵value--這回事 要通過這個數組 和第一去弄foo,那麼 關鍵foo和價值吧。 然後在第二 for循環迭代, 它會通過,並採取 關鍵巴茲和值qux。 然後你就可以做一些事情 其中任何一個或兩個人。 聽眾:所以背後的想法 有一個關鍵點的值, 你到底是什麼了訪問? MARIA ZLATKOVA:是什麼概念 具有一鍵指向價值? 這只是一個慣例,另一 歷盡數組方式 並能夠訪問無論是 鍵或值或兩者並用它們。 聽眾:什麼是對的作用 下令在foreach中運行? 所以,如果我們要添加 元件以陣列以後, 將這些是第一個 所謂在foreach陣列中, 或者會是以後? MARIA ZLATKOVA:那麼,什麼是 的順序在foreach 循環遍歷數組中的? 它經過所述第一 元件到最後一個元素, 到最後添加的元素。 如果您在以後添加元素,它們將 被accessed--的第一要素會 進行訪問,所述第一 的數組的元素, 然後你會去通過每個 元素作為排序的ordered--的 不是一個有序,但方式 他們已經放入數組。 聽眾:那麼新元素 加入以後? 所以他們added--他們將在 最後的在[?迭代。 ?] MARIA ZLATKOVA:新元素can-- 基本上,當添加新的元素, 它們是添加到數組的結尾? 聽眾:是的。 瑪麗亞ZLATKOVA:我想是的。 是。 然後用你的foreach循環, 你已經添加了新元素後, 你去通過他們, 新元素會 是accessed--新元素,如果它的 最後加入,這將是最後一次訪問。 聽眾:你能不能舉個例子 的東西會[聽不清] 有一些與價值 像[聽不清]或價值, 喜歡你如何格式化? MARIA ZLATKOVA:當然。 我可以舉的一個例子是什麼 我們將與價值呢? 那麼你們可能熟悉 是我們通過一個數組已經走了 基本上印刷 每個元件, 例如,作為一個部分 有序列表或東西。 這是否有意義呢還是想用於: 聽眾:我們可以打印這些值嗎? MARIA ZLATKOVA:是的,我們可以打印 然後基本上$值,因為在 特定的價值,我們將 打印它裡面的價值。 因此,如果我們在我們的第一次迭代 它和我們的印刷$值, 我們將打印條碼。 聽眾:是否也有對 循環在PHP或只是foreach循環? MARIA ZLATKOVA:有 還對在PHP環路。 而他們的邏輯是主要的 一樣你一直在使用。 聽眾:所以它的值是零。 MARIA ZLATKOVA:這就像一樣。 是啊。 聽眾:我只是要問。 所以當你宣布一個 數組,你不需要 告訴它要什麼尺寸 是的,這意味著你可以 添加並帶走元素[聽不清]。 MARIA ZLATKOVA:是的。 對。 究竟。 當我們聲明一個數組,我們 不用說,這是什麼規格, 因此,我們可以只添加元素 到後來為好。 更多問題? 所以把PHP和HTML在一起, 我們已經seen--好, 例如,在這個例子中,我們有 具有輸入字段的HTML表格。 輸入框的只是名 然後它有一個提交按鈕。 而當你按下提交 按鈕,在我們的hello.php文件, 因為該方法的形式是 得到的,我們可以訪問無論是在名稱 此得到全局變量, is--的語法是$ _GET。 然後我們就可以訪問任何的 這種形式的名稱內用戶輸入 通過指定字段的名稱。 任何其他問題或任何 在這個具體的例子嗎? 聽眾:如果是PHP? MARIA ZLATKOVA:在這裡。 因此,這是我們的PHP開始標記。 聽眾:哦,對了。 MARIA ZLATKOVA:是的。 漢娜布隆伯格是否:=的簡寫 因為這是PHP和公正的迴聲。 聽眾:哦。 MARIA ZLATKOVA:是的,對不起。 我應該說的很清楚。 漢娜布隆伯格:打印。 MARIA ZLATKOVA:這只是功能 這使我們能夠打印的東西。 大的問題。 所以going--是的。 聽眾:有沒有將是相當 一點PHP和HTML的手工編碼 在測驗1? MARIA ZLATKOVA:可以有 解釋相當數量的 php和html,不一定 像一個巨大的量的編碼, 儘管你可能需要寫一個 foreach循環,但是,一個for循環。 任何環的,我們 涵蓋這裡是公平的遊戲。 而這主要是它。 漢娜布隆伯格:我將準備。 以同樣的方式,我們請你來 寫一堆的C函數的測驗0, 我是準備做 同樣在PHP和JavaScript。 MARIA ZLATKOVA:是的。 漢娜布隆伯格:我會說 一個li​​ttle--像我們不是 將讓你寫一個巨大的HTML 頁面只是因為這是一點點 乏味,但你可能有部分。 這是完全公平的遊戲。 喜歡小HTML頁面,完全公平的。 聽眾:OK。 如何在JavaScript中呢? 漢娜布隆伯格:是的。 JavaScript的公平的遊戲。 MARIA ZLATKOVA:是的。 這是完全公平的遊戲。 漢娜布隆伯格:我們會得到 於在像10分鐘。 瑪利亞ZLATKOVA:SQL中,再次, 結構化查詢語言。 基本上,它使我們能夠管理數據 在關係數據庫管理 系統。 這只是基本上意味著 我們有地方 存儲一些數據,我們可能要 在網站或以某種其他形式使用。 然後,我們必須查詢來獲得 從我們的數據庫中的信息, 或插入的信息在其中。 很多常見的ones--的更新, INSERT,SELECT和DELETE。 因此,對於更新,這是語法 用於在數據庫中更新數據。 更新這個表稱為 表說SET, 我們可以設置在所有的一些值 行等於別的東西。 因此,我們也可以指定一些特定的 我們要修改的條目 並且,可以是用在哪裡。 我們可以指定我們只希望 修改某些行所在的房子, 如果我們有學生的表 和所有的學生們的房子, 所以我們只能修改一些值 那裡的房子等於宿舍樓裡, 例如。 對於INSERT,我們可以插入 某些值到表中。 所以INSERT INTO表, 然後這些值, 然後在括號中,我們指定 其值要插入。 所以INSERT INTO表,col1和 COL2,值都是val1和val2。 所以這基本上插入一個新行 包含值1和2的表 下的列1和2。 然後我們要去投奔 如何這看起來簡單的例子 就像在我們的數據庫中一點點。 但是,這最後的查詢,我 認為我們走了過來, SELECT,它只是讓我們 從表中選擇數據 以可能使用它之後。 我們這樣做的方式是我們 只需將它保存在某個變量。 然後我們可能可以再次使用。 所以選擇星級意味著選擇所有。 這只是一個速記 選擇所有。 FROM表WHERE,我們正在尋找 對於某些特定的條件下, 所以在這裡列等於 東西,例如。 如果我們只是想 從表中選擇所有, 這只是選擇所有列 從表中的所有行。 然後DELETE FROM表 WHERE山坳等於什麼, 這只是刪除了一些 從我們的表行 其中我們有一些特定的條件。 在這種情況下,條件 是列等於什麼。 這所以只是一個簡單的例子。 如果我們有這個表就在這裡和我們 將其插入到一個表,這些值, 這將插入新行。 如果我們有自動遞增,這將 只是增加我們的編號從0到1至2。 如果我們選擇的所有學生,它 剛剛返回的所有領域和所有行。 凡年大 大於或等於2016年, 這將只返回 漢娜和我自己。 然後,如果我們僅僅選擇 今年ID和一年生 那裡的房子是卡博特房子,那 會再次返回漢娜和我自己。 那麼,如果我們從學生中刪除 其中name等於搶, 這將刪除整行。 然後,如果我們設置 名,UPDATE學生 SET名字等於Daven WHERE房子等於 卡博特之家,那將去 這些行,然後更新名稱。 然後幾個SQL數據類型 CHAR,VARCHAR,INT和浮動。 這些都是公平的遊戲。 我會去一遍又一遍 並確保你知道 並讓它們在你的備忘單, 了每個這些字符的 已被用於,什麼 你用他們在你的pset時, 並確保你熟悉和 舒服不得不選擇 從您的pset不同的數據類型。 是。 聽眾:什麼是表存儲在哪裡? 是啊,這哪裡是表的存儲? MARIA ZLATKOVA:嗯, 現在,它不保存。 總之,哪裡該表存儲在哪裡? 但它可以儲存在SQL數據庫中。 聽眾:哪裡是SQL數據庫? 在計算機中,在線 某處,服務器? 瑪利亞ZLATKOVA:它可以是一個 不同的東西數目。 漢娜布隆伯格:我們已經接口與 SQL表大多與php​​MyAdmin的。 因此,我們可以問一個服務器 來存儲它們為我們。 我們可以將它們存儲自己的計算機上。 MARIA ZLATKOVA:這只是取決於 你要如何為自己而做。 但是,我們一直在存儲 他們,漢娜提到, 在phpMyAdmin的,這是在網上。 然後我們一路使用 PHP和SQL,我們將其存儲 為一些變量 我們已經查詢了。 因此,如果我們選擇所有的歷史 其中,USER_ID等於會話ID, 這將選擇所有行 對於特定人誰 從歷史中記錄 表和排序他們入行。 一個很酷的事情知道的是, 這CS50的查詢功能 防止SQL注入標籤。 這只是意味著它可以確認 所輸入的輸入是正確的 並確定該人誰 正進入輸入 是不是要輸入一些惡意的 代碼要么砸我們的表 或刪除一切 裡面我們的數據庫。 的快速概覽 模型視圖控制器模式, 這是組織的只是一種方式 和思考的代碼。 這是又一個設計範例。 這也就意味著,我們 can--,它是很好的做法 分開不同的部分 我們的代碼和他們 控制進入這三個範式。 因此,我們認為是最常見的我們 模板,我們的佈局,道路 我們設置了如何我們的代碼看起來。 這主要是我們的CSS文件和方式 我們定義的我們的代碼設計, 基本上。 我們的控制器主要是什麼 我們一直在做的PHP文件。 如此反复,正與 我們有信息 並確定怎麼說 信息被使用, 然後傳遞一個信息 要么到視圖或模型。 而模式,即我們已經一路 在使用IS一直是我們的數據庫, 那麼,我們的信息是 存儲,以便它具有某處 住在和任何的 涉及到的方式代碼 我們得到的信息或 我們更新信息的方式。 因此,在MVC模式,HTTP 請求被發送到網絡服務器。 然後,控制器解譯 來自用戶的請求 然後驗證用戶輸入。 它是可選的,我們有 該控制器通信 與模型,因此一些 像我們的數據庫 或某一其它功能性 該轉發信息。 然後最後,控制器 傳遞信息到視圖 因此,它可以是 呈現,並且它可以 成為可見的任何人 訪問網頁。 任何問題? 真棒。 如此反复,模型, 其功能,又, 是信息的持久存儲, 管理和組織數據。 而我們所看到的 截至目前為止MySQL數據庫 和任何數據文件,可能會使用。 查看,介紹信息 用戶時,UI,或用戶界面。 而這樣做的例子是HTML。 然後,我們可能有最小的PHP。 因此,一個for循環迭代 過的數據被打印出來 是視圖的一部分,作為 相對的控制器。 然後很多我們的PHP文件 落入控制器類別。 它只是處理用戶的請求和 獲取模型的信息。 跳轉到文檔 對象模型,這只是 指的是方法的HTML 文件的組織方式。 而且他們組織成一棵樹 結構具有層次結構。 因此,如果我們有機會獲得[聽不清] 該文件的表示, 我們可以使用該文檔,就像 我們基本操作對象。 而為了讓這一個 點點清晰,當 我們有很多的我們 不同的標記回應 在我們的樹不同的路線。 然後對於這個例子,我們 有開始文檔節點。 我們有,那麼,我們的HTML節點 即分成頭部和身體。 頭有標題,然後 標題包含你好,世界。 而我們的身體只包含 你好,世界也是如此。 因此,在任何的任何問題 我們覆蓋到目前為止的事情呢? 如果沒有的話,漢娜 拿過來用JavaScript。 真棒。 漢娜布隆伯格:好,冬暖夏涼。 如果有什麼想出了PHP或HTML, 或任何東西瑪麗亞覆蓋, 我們總是可以暫停。 我們正在做的更好的 一次又一次,這樣真棒。 而就回去 真的很快到這一點, 如果你每 過去一年的考試,這 出現either--這裡 一些HTML,讓這個圖。 還是這裡的這張圖,使一些 HTML,所以肯定練了。 然後這都保證 的問題,你可以得到正確的。 涼。 因此,讓我們來談談的JavaScript 以及它如何一點點 例如PHP和語言的不同 C,我們看到了事前的兩種語言。 因此,第一,它是鬆散類型。 即如PHP,但不像C. 這是一種解釋型語言。 再次,像 PHP,不像C.這 將會讓我們use--它 作品真的很好地與網頁。 這將允許我們操作 的內容和它的外觀 和它做什麼。 我們將看到阿賈克斯的一點點。 它使我們能夠溝通 異步不同的服務器 和獲取信息。 這是東西真的 從PHP和C分離的JavaScript 是,它是客戶端。 PHP和C是 典型的服務器端。 在大多數情況下,並 幾乎完全是什麼 我們已經看到,至少在 這個類,JavaScript的 作用於客戶端,這意味著 該瀏覽器是實際上 負責運行它。 這意味著,我們不這樣做 需要與服務器進行交互。 因此,這意味著它可以是快了不少 因為它實際上只是它的瀏覽器, 這是Safari瀏覽器,它是火狐,不管你 用實際運行你的JavaScript。 聽眾:什麼是異步是什麼意思? 漢娜布隆伯格:啊,什麼 並異步是什麼意思? 大的問題。 異步是指: 同時,在內容中 我們使用它,OK,我們 正在創建一個網頁 我們需要得到一些信息。 因此,與混搭的例子中, 一些信息,我們可能要 就是文章標題。 現在,我們could--一個選項 是同步做 這意味著咱們 停下來,去獲得的文章, 得到的文章回來,然後 渲染,但是這將是很慢。 這將是一個不好的用戶體驗 因為你只是坐在 有在等待著什麼回應。 異步意味著我們將 繼續將我們的業務, 渲染頁面, 我們會發送了一個請求 那種那將 發生在後台進行。 我認為,我們使用的例子 演講呼籲Rob和說的, 嘿,你可以看看這件事 我和打電話給我, 而不是只有我 等待的電話。 因此,異步意味著它發生 從我們的後台走 在平行下。 大的問題。 還要別的嗎? 大。 我們會跳很多更進 異步請求使用Ajax。 聽眾:請問JavaScript--哪裡呢 它與模型 - 視圖 - 控制器下跌呢? 漢娜布隆伯格:大的問題。 哪裡的JavaScript下降 與模型 - 視圖 - 控制器? 嗯。 我想這可以fall-- 所以我們通常不 喜歡壓扁成的 範式,但我想我會說, 好了,JavaScript的 實際上會允許 我們收集的數據, 解釋數據,真正做到 與數據有意義的事情。 這樣一來,這是非常控制等。 但它也將允許我們 顯示事物和打印的東西。 這樣一來,這是非常視圖等。 是啊。 因此,它有點像PHP中 在那裡可以一種是兩者。 好問題。 還要別的嗎? 好了,真棒。 運動沿著正確的。 因此,讓我們來看一個例子 我們如何使用 JavaScript的在我們的Web程序之一。 所以,我會考慮這個 index.html的一堆的HTML。 而件事我想你 重點是這個腳本標記。 這說,OK,我要運行一些 JavaScript和這裡是它生活的地方。 它生活在hello.js。 而且非常像CSS,我們可以 把JavaScript中的HTML中。 為什麼會我們想將它分離出來? 是啊。 聽眾:更容易改寫? 漢娜布隆伯格:是的。 它更容易使用的跨越 不同的網頁。 它使事情更清潔。 這是一個好的做法。 真棒。 好答案。 那麼好,所以這是怎麼回事 是我們的index.html。 再往下這裡是我們的 小小的JavaScript文件。 和所有它說的是警覺的Hello,world。 所以會發生什麼是當 此頁面renders-- 因此,如果你去到任何網站 這is--一切將要發生 是它會說,好吧,我 要運行這段JavaScript代碼。 而這段JavaScript代碼 只是說警惕的Hello,world。 所以,我要得到這 友好的小彈出。 涼? 這有點像我們的第一個 JavaScript程序,我們的Hello,world。 讓我們看一點點什麼 JavaScript的語法如下所示。 而具體,讓我們把它比作 C和PHP,這是我們以前見過。 在JavaScript中,我們將有 變種,該變​​量的名稱,然後 其實際值。 而且我們也沒有指定類型,只是 像PHP,但很不像​​C. 因此,例如,如果我們想 存儲值50, 在C中,我們不得不說, 哎,C​​,我想要一個整數, 我要叫它 i和其值是50。 在PHP中,這是一個稍微容易一些。 我們說,嘿,我想一個變量 稱為i和它的值是50。 非常相似,在JavaScript中,我們 說嘿,我要一個變量叫我, 它的值是50。 以後每一次我用 我,我不需要寫變種。 這只是我的一點上。 以同樣的方式,在C,其中 一旦我們說INT I,我們只是用我。 涼? 好吧。 移動到循環, 幸運的是,這些幾乎 看exactly--我認為他們是 完全一樣的什麼 循環要看起來像 類似於C,你的for循環 將會有三個 parts--初始化, 的條件,和更新。 while循環,它看起來完全一樣的。 我們只是給它一個條件。 而一個do while循環, 再次,完全一樣的。 我們給它一個條件。 比方說,我想遍歷over-- 我想做點五倍。 在C語言中,我們可以這樣寫 用於初始化i等於0。 i小於5,我+ +。 唯一的區別,在JavaScript中, 而不是說INT I等於0, 我們說變種i等於0。 美麗。 這是唯一的區別。 在任何的任何問題嗎? 是。 聽眾:所以在PHP中,這是相同的 的事情,但但像一個變量? 或者是一個變種的例子嗎? 漢娜布隆伯格:是的。 因此,在PHP中,這是怎麼回事 是一個美元符號。 因此,這將$ i等於 0,$ i小於5,$我+ +。 大的問題。 現在,讓我們來談談 函數聲明。 在C中,當我們宣布 功能,我們給它一個名字 我們給它的一些參數。 而在一開始,我們寫的類型。 在JavaScript中,我們所 所要做的就是寫 關鍵字功能 說,哎,JavaScript中, 我將要定義一個函數。 在這種情況下,它具有名稱總和。 它有兩個參數,x和y。 請注意,我們不關心 關於x和y的類型。 就如同C,我們有 此關鍵字的回報, 因此,我們可以做一些事情 像返回x和y。 而現在一旦我們已經寫了這首 功能,我們可以在任何地方使用的總和。 而這完全罰款。 其中約很酷的事情 JavaScript的,這是非常與C 是起到能 像對待值。 因此,我們可以做這樣的事情在這裡 在這裡我想我管這個up-- 我介紹了VAR總和 part--我們剛才說的 功能XY等於返回X加y。 這就是將被稱為 匿名函數。 這是沒有名字的函數。 鑑於此說功能 總之,等等,等等,等等, 這將只是說功能。 但現在,即使我有 該匿名函數, 該功能實際上只是一個值。 我們可以把它當作一個值。 因此,我們可以將其保存在一個變量相同 這樣,我們可以在一個變量存儲50。 所以我們可以說,OK,我想 可變的,這就是所謂的總和, 而正是這種功能。 所以這兩個東西實際上是 會做同樣的事情, 但是語法有一點 不同類型的一個有趣的註釋。 是啊。 聽眾:所以,你可以調用 函數是匿名的說, 總和括號2,5? 漢娜布隆伯格:是的。 您可以撥打這個匿名 功能的方式相同。 你會做和(2,5); 這將是完全罰款。 如果我沒有做無功之和等於 功能,如果我只是刪除 this--我知道這是我的手, 但假裝我刪除this--然後 那種功能只是走了。 你永遠可以再次使用,因為它 你不必為它命名。 很難指什麼 你不知道叫什麼。 好問題。 是啊。 聽眾:你可以參考之在 等地設有X加Y的值? 漢娜布隆伯格:你能 在其他地方引用總和 與數值x加y? 我不完全明白你的意思。 聽眾:所以你過去半匿名 功能是和等於該 匿名功能,所以總和是 現在你can--變量 漢娜布隆伯格:對。 所以總和是變量, 但它的actually-- 所以總和是一個變量,其 值的功能。 因此,它是一個功能,這是一種 一個奇怪的東西來包裝你的頭左右 因為我們一直在玩 C和你不能這樣做,在C. 但是,現在我們可以調用求和 同樣,我們可以在這裡呼籲總和。 聽眾:OK。 漢娜布隆伯格:是的。 好問題。 是啊。 聽眾:所以我們不使用 在PHP或JavaScript的原型? 漢娜布隆伯格:不,我們 不需要使用原型, 尤其是在JavaScript中。 所以有不好的做法件事,我 會說,你不應該這樣做 是你沒有寫變種I = 50。 你可能剛開始做我= 50。 而只想讓我一個全局變量。 這是非常不好的做法, 從來沒有明確地說我變種, 但它的東西,你可以做。 翻譯的不 要罵你。 JavaScript是非常喜歡, 你可以做你想做的。 噢對不起。 有兩種。 在橙色褲子。 前進。 聽眾:不,你先走。 聽眾:沒有,我只是說 我沒有我的手。 好。 所以,如果你是打電話 這第一次,現在總結, 我們把它以同樣的方式,X, Y,像每一次? 漢娜布隆伯格:是的。 因此,這兩個基本 做同樣的事情。 聽眾:這有什麼好處 用一個或另一個? 漢娜布隆伯格:沒有優勢 用一個或另一個。 我只是想顯示兩個 不同部分的語法。 很多時候在哪裡匿名 功能確實有一個目的, 是,如果該參數到另一個 功能應該是一個功能。 我們會看到,在 只是第二,阿賈克斯。 因此,如果這沒有任何意義, 儲存到您的後腦勺。 這就是一個匿名 功能可能是有用 因為它不是真正的價值 給它一個名字,因為我們只是 將一次使用它。 是啊。 聽眾:如果X和Y的變化後 上,將總結隨之改變? 漢娜布隆伯格:如果x和y的變化 稍後,將總結隨之改變? 所以,這其實是我 認為東西是, 再次,它只是感覺很不同 從C這不是一個值。 這不是5。 這只是函數本身。 所以,只要你給它的參數, 那麼你實際計算值。 MARIA ZLATKOVA:然後 你可以調用函數 並用它來獲得一些價值。 漢娜布隆伯格:對。 究竟。 是啊。 聽眾:所以,如果你只是 它存儲在變量, 像變種x等於兩個values​​--總和 漢娜布隆伯格:是的。 所以,你可以只是做無功總和 等於兩個值的總和。 是啊。 其他問題嗎? 是啊。 聽眾:但是會是 混淆之和相加? 如果你打電話給你的變量之和像, 你會調用該函數之和? 漢娜布隆伯格:MM。 毫米。 如果你做了什麼 像,和等於總和2,5? 聽眾:是的。 漢娜布隆伯格:我認為, 將覆蓋總和的價值。 所以另一個有趣 關於JavaScript的事 是,單個變量可以取 在一堆不同的類型。 不好的做法。 你不應該做的事情 像你剛才說的話。 但在C,如果我設置 等於一個整數, 我們知道,這是從來沒有 將成為一個字符串。 這不是在JavaScript的情況。 是啊,好問題。 還要別的嗎? 好吧。 這樣做的時候沒事了。 保持下去。 好吧。 如果我們看一下一個數組 在JavaScript中,這裡的 字符串數組的一個簡單的例子。 和數組可以動態地增長。 他們沒有一個 固定大小相同的方式 他們做的C.我們可以訪問 元素只有在方括號內。 這看起來很像PHP和很多 像C,其中我們可以說,在這種情況下, 如果我想的話的JavaScript,我會 別常用3方括號以0,1,2。 然後,如果在C記得,當我們 希望得到的陣列的長度, 這是真的很煩。 但在JavaScript中,超級簡單。 我們所做的一切,.length。 給它的長度。 而已。 聽眾:這很簡單。 漢娜布隆伯格:是的,使得 你的生活輕鬆了許多。 OK,object--不存在。 在JavaScript感覺的對象 很多像C結構 在PHP關聯數組。 因此,我們已經看到了 很多是JSON,這 代表JavaScript對象符號。 它基本上是一個辦法 對構建我們的數據。 因此,讓我們來看一個例子, 可能是最簡單的。 因此,這裡是一個對象的示例 存儲類,CS50。 當我說課,我的意思當然, 不like--是的,過程中,CS50。 你會看到, 中的所有對象 將要被包含 大括號內。 我們開始字段名關聯 或具有不同的值的鍵。 所以,你可以開始看到這樣的 感覺就像關聯數組在PHP。 因此,我們打算到外地關聯或 鍵名,當然,用字符串, CS50。 我們將有一個教練。 我們將有轉錄因子。 我們將有pset中的數 我們要去錄製。 而一個很酷的事情要注意的是所有的 這些東西有不同的類型, 而這完全罰款。 這是罰款的對象,事實上, 它可能希望為對象 有字符串的組合 與數字和布爾值和數組 你可能其他任何 想擁有你的對象中。 並注意,這些都將是 名稱或鑰匙,然後我們就 設置一個小冒號相等。 聽眾:這到底是什麼意思JSON? 漢娜布隆伯格:什麼 究竟JSON是什麼意思? JSON只是代表 JavaScript對象符號。 這是格式化的只是一種方式。 是啊。 它是我們的格式化數據的方式。 在C語言中,它的結構。 在PHP中,它的關聯數組。 在JavaScript中,我們擁有的對象。 聽眾:所以CS50是一個對象? 漢娜布隆伯格:CS50是 在這種情況下的對象。 現在,我們如何真正進入 這些字段或更改這些字段。 例如,假設我們決定 你想少一個PSET這個學期。 相反九,我們 只是將有八個。 我們怎樣改變這種狀況? 哦,走錯了路。 有跡象表明,我們可以做到兩種方式。 排名第一的是用點 符號和第二 與方括號。 因此,例如,如果我 想改變或訪問 在我們的CS50對象pset時現場, 我會做的是CS50.psets, 所以對象點的名稱 外地或密鑰的名稱。 非常相似,這正是 相當於做CS50,然後 在方括號,pset中。 涼? 是啊。 聽眾:原來是JSON 技術上JavaScript的是, 即使在pset時,我們 分離出來[聽不清]? 漢娜布隆伯格:當然。 所以,問題是,有 JavaScript和JSON相同呢? 因此,JSON是符號,基本 我們寫出的方式 一個對象從JavaScript。 因此,他們是不完全一樣的。 我想說的JavaScript,有 在JavaScript對象。 JSON需要那些對象和 它們打印並顯示它們 或者將它們存儲在一個不錯的方式。 因此,JSON是不是一種編程 語言,JavaScript是一種方式。 這只是表示法 我們的JavaScript對象。 是啊。 聽眾:那麼究竟是什麼 [聽不清]完成? 漢娜布隆伯格:當然。 因此,這實際上什麼也不做。 這僅僅是一個的方式來訪問。 所以我們可以說,我們希望改變 習題集數 朝九晚八。 我們要做的就是做一些事情 像CS50.psets = 8 ;. 是的,很好的問題。 這只是向您展示的語法。 實際上並沒有做任何有用的。 任何問題? 運動沿著正確的。 因此,讓我們看看如何一個簡單的例子 JavaScript的作品,因為我告訴你它 做所有這些很酷的事情和 允許我們修改網頁。 讓我們真正看到它的行動。 因此,舉個例子來說,這個HTML文件。 我希望你關注的事情是 這個特定的標記,它是一個按鈕, id為search_button。 這只是在頁面上。 所以,現在讓我們看看 我們其實可以做。 那麼,假設當 單擊該按鈕, 我們要作出alert-- 單擊按鈕。 讓我們來看看我們如何能做到這一點。 所以window.onload--這不是 你見過在課堂上,因此, 不需要知道它的測驗。 但是,這基本上說,OK,呼叫 此功能在窗口的負荷。 所以,這只是一種設置代碼。 不要太在乎這一點。 我希望你關注的是在這裡。 我們說VAR searchButton等於 的document.getElementById search_button。 所以您可能已經猜到, 這是什麼做的是它說, OK,去找元素 ID為search_button。 而現在我們有 而我實際元素 將其存放在 可變searchButton。 現在,我們實際上可以使用該元素 並改變它,或者訪問其價值, 像這樣的東西。 事實上,我們可以開始 接合與網頁。 所以在這裡我說,好了,現在我有 這個按鈕,它被點擊時, 調用這個匿名函數。 因此,這是匿名的 功能變得非常有用。 又是什麼作用呢? 那麼,它只是調用這個 報警功能和它說, 你點擊搜索按鈕。 所以會發生什麼,如果我去哪裡 這個HTML的生活和我按一下按鈕, 我會得到一個奇特的小警報 說你單擊該按鈕。 所以事情專注於 這裡 - 的document.getElementById 得到一個特殊的HTML 元素與給定的ID。 而現在,我們可以設置 又該當發生 該特定元素被點擊。 聽眾:我們必須把所有這一切的? 漢娜布隆伯格:對不起? 聽眾:我們是否要 實際編寫了這一切? 漢娜布隆伯格:我們要不要 實際編寫了這一切? 是。 是不是這樣的煩人? 這是一個很大的代碼。 聽眾:你可以導入一些東西。 漢娜布隆伯格:對。 我們可以使用的東西。 而在particular--哦,這是 告訴我,我要教一節。 尤其是,讓我們 使用圖書館jQuery的, 因為這是真的 長,真煩人 我希望能夠簡化其 並使其更短,更容易編寫。 所以,jQuery是一個JavaScript庫。 因此,JavaScript是編程 語言; jQuery是一個圖書館。 這讓一堆事情變得更容易。 它使變化,去跨越 一個HTML文檔更容易。 這使得處理事件變得更加容易。 它使動畫更容易 這讓阿賈克斯更容易。 因此,讓我們跳進兩 這些東西現在。 打擾一下。 在我們這樣做,一些基本的語法。 這就是大多數調用 jQuery庫的樣子。 我們用這個美元sign-- 無連接跡象PHP, 只是inconvenient--的名字 選擇器,點,然後一個動作。 因此,讓我們看到了一些 的該具體例子。 因此,這實際上是一樣的 從事件滑動代碼。 所以這漫長的,醜陋的東西變成 這更漂亮,更小的東西。 因此,讓我們嘗試打破下來。 這是說,OK,jQuery--這個美元 sign-- jQuery的,找我的窗口。 所以這是選擇。 當它加載,調用這個函數。 所以,這裡面的一切。 好。 到目前為止,一切都很好? 好吧。 現在,jQuery的,找我的 ID為search_button的事情。 而且它被點擊, 調用此函數。 然後這個函數的 一模一樣。 只要做到警報一點點, 你點擊搜索按鈕。 所以這是非常好的。 這真的凝聚和 簡化了我們的代碼。 我怎麼知道, 它的ID search_button 而不是像類search_button? 聽眾:#標籤? 漢娜布隆伯格:是的。 該散列符號,它就像CSS。 所以請記住,使用CSS,當我們 希望通過標識來選擇的東西, 我們使用井號。 而當我們想選擇 一些由一流的,我們使用點。 大。 合理? 所以jQuery的是應該 只是讓我們的生活更輕鬆。 是啊。 聽眾:所以我有點困惑, 如何匿名函數的工作原理。 你命名此anonymouse 功能,功能? 它是如何叫什麼名字? 漢娜布隆伯格:當然。 因此,功能只是一個關鍵字 說,我將要定義一個函數。 聽眾:哦,好。 漢娜布隆伯格:OK? 然後我們把它作為一個 參數用於:讓我們 這種內在埃德蒙頓的點擊功能。 所以是的,這樣的功能, 該匿名函數, 成為一個實際參數。 所以請記住在JavaScript中,我們 可以把函數作為值。 聽眾:哦,好。 漢娜布隆伯格:是的。 我喜歡說,“哦。” 美觀大方。 其他的問題嗎? 時間? MARIA ZLATKOVA:好。 好。 漢娜布隆伯格:真棒。 一些快速有效的jQuery。 我不打算去 通過所有這些。 這些幻燈片將 在線一點點 後來,這樣你就可以檢查 它有點晚。 但基本上,一般 模式成立,其中說, 好了,嘿嘿,jQuery的,這裡是我的 選擇,然後在這裡是一個動作。 你可以做的事情一樣訪問 一種形式的價值,獲得一些HTML, 控制用戶時,會發生什麼 提交表單,這樣的事情。 是。 聽眾:所以在 考試,我們將需要 從知道了不少 jQuery的文檔。 因此,鑑於我們複製/粘貼了jQuery 文檔我們的小抄, 哪來的行畫? 就像我們需要知道多少? 漢娜布隆伯格:大的問題。 問題是 本質上給你 不能訪問jQuery的文檔 在測試過程中,有多少你應該 知道? 我們不希望你來 與一些隨機函數 我們希望你給谷歌。 事情是公平的遊戲是我會 說只是一種一般的語法, 能夠通過標識來選擇和 通過分類 - 所以就像CS​​S。 然後實際的功能 自理,我們很可能會告訴你。 是啊。 聽眾:所以當你選擇 按類將意味著點。 漢娜布隆伯格:是的,沒錯。 好。 如果按類進行選擇,這是怎麼回事 被點,而不是英鎊符號。 是。 聽眾:請問你 過去的區別 通過ID和類之間? 漢娜布隆伯格:當然。 選擇之間的差 ID和選擇按類。 因此,作為瑪麗亞說, 稍早些時候,有 只能有一個HTML元素 具有給定的ID,而類, 它可以讓我們組了一堆 不同的元素結合在一起, 這樣的事情有關係, 但不完全相同。 這是否回答這個問題? 真棒。 是。 聽眾:如果你有什麼多 事情是在同一個班? 漢娜布隆伯格:會發生什麼事 如果您有多個東西, 是同一類? 因此,例如,如果我們 只使用純JavaScript, 我們會做這樣的事情 document.getElementsByClass。 然後呢,實際上起 是返回元件的陣列。 你必須要么迭代 他們或找到你想要哪一個。 它不會放棄 你一個元素。 這將讓你 元件的陣列。 大的問題。 還要別的嗎? 真棒。 所以我覺得,如果你熟悉 任何jQuery的你在PSET看到, 你應該是好去。 題? 不好了。 我真的要教。 放鬆。 它會沒事的。 我會到達那裡。 讓我們來談談阿賈克斯。 因此,阿賈克斯將是A--好, 讓我們先從它代表什麼。 這是一個縮寫。 它代表了異步 JavaScript和XML。 和XML基本上將是 [聽不清],類型為我們的數據。 但是我們還沒有實際使用XML。 相反,我們只是使用JSON。 所以基本上,它的一些數據 - 異步JavaScript和數據, 在這種情況下,JSON。 而我們的目標,因為我們提到的 早一點, 是能夠使一個 要求,有要求做 其在事 背景,而是繼續 做任何我們打算做的事。 然後當該信息是 準備好了,然後我們將其合併。 因此,讓我們看看這是什麼 實際模樣。 而這一點,你應該 一點點的熟悉 從pset8,一個你剛滿研究。 因此,這裡是一個有效的jQuery 功能,我們可能 想知道about--這個美元符號。 所以說jQuery的功能,.getJson。 什麼這個函數是它 需要一個URL和一些parameters-- 所以我覺得在案件 pset8的,有人喜歡, 網址是articles.php和 參數是去=一些郵政編碼。 它說,OK,做一個請求 此URL具有給定參數。 而這恰好。 當它完成,它要么 要成功完成 或者它會失敗。 因此,這是調用相當於 羅布並要求他做一些事情。 然後,當他叫回來,他要么 會說我做的還是我失敗了。 所以,在你的情況下, 這樣做,你說好,我完成了。 然後調用這個函數。 在這種情況下,這將是一個 函數,它的某些信息。 一個我們通常關心的是數據, 我們實際上返回的數據 作為調用.getJSON的結果。 你可以用它做什麼。 所以在pset8的情況下, 我們顯示它作為一個清單。 失敗將是一個函數 如果請求失敗時調用 無論出於何種原因。 和在pset8的情況下, 我們只是CONSOLE.LOG它。 上有問題嗎? 是啊。 聽眾:我們可以只使用功能THETA 而不是函數,textStatus,jqHXR。 漢娜布隆伯格:當然。 所以,是的,我覺得在處理器集, 剛才我們看到的功能數據。 所以它只是the--是的,OK。 這就是我們在PSET看到。 這是完全正常。 這些都只是如果你想 拉出來的更多信息, 這些都是事 你可以從.getJSON。 好問題。 還要別的嗎? 是啊。 聽眾:所以.ge​​tJSON是阿賈克斯? 漢娜布隆伯格:OK。 因此,這是那種棘手的部分。 這是一個jQuery的功能,可以讓 你做的異步調用。 而那些異步調用,這是 我們一直提到的阿賈克斯。 是啊。 這花了我很長的時間來 拉開的時候我還是個學生。 聽眾:你能再說一遍嗎? 漢娜布隆伯格:是的。 我可以再說一遍? 這.getJSON功能, 這是一個jQuery的功能。 而這將會使 異步調用。 而這些異步調用,我們已經 是指那些為阿賈克斯。 其他問題嗎? 我們剛離開幾分鐘。 而瑪麗亞的打算 包安全 然後我們要去 將即將完成。 MARIA ZLATKOVA:真棒,確定。 因此,這is--只取一對夫婦 幾秒鐘過目這一點。 這是不是真的很棒。 而有人可以告訴我為什麼? 這是怎麼回事在foo和可能能 有可能造成不好的東西, 而什麼叫? 是啊。 聽眾:如果參數這 通過在超過12個字符, 它可能溢出。 MARIA ZLATKOVA:對。 完善。 它叫什麼? 你剛才提到它。 聽眾:緩衝區溢出。 MARIA ZLATKOVA:是啊,緩衝區溢出。 因此,這是我們 所說的緩衝區溢出。 而我們看到的foo裡面, 我們已經定義了我們的緩衝區,C, 與12的尺寸。 然而,在主,我們不 檢查以任何方式在所有 是否argv1--使 是第二個參數。 我們不檢查是否 它的尺寸是否合適。 因此,如果我們有一個 尤其是惡意用戶 誰把一些說法,這是 超過12,以及隨後可能 超出該範圍 的說法,有一些可執行代碼 他試圖做壞事 用它;那麼這個,會發生什麼, 將覆蓋回報 foo的函數的地址, 使所述功能時 返回到執行該代碼。 再糟糕的事情可能發生。 這是否有意義給大家? 我們怎樣才能防止這種? 有什麼建議麼? 基本上,內 潛在FOO,怎麼 我們可以檢查,以確保 這是不可能發生? 聽眾:如果大小12超出, 你會分配更多的內存? MARIA ZLATKOVA:建議是,分配 大小更多的內存超標。 事實上,我們可以做的東西 很多比以及更簡單。 我們剛剛得到的字符串長度 所輸入的說法, 檢查,如果這是不太 大於或等於12-- 這就是我們想要的 是因為我們不希望 這超出我們的緩衝區的邊界。 然後如果沒有,我們 可以帶參數運行。 然後,如果是的話,我們其實是想 潛在YELLO處的用戶。 但是,這是我們如何做到這一點。 是。 聽眾:莫非你 解釋的memcpy真正的快? MARIA ZLATKOVA:哦,對不起。 是。 memcpy的需要什麼is--對不起,OK。 memcpy的需要無論是 在酒吧,無論是通過 到富作為命令行參數。 因此,要採取argv1。 Argv1在此被稱為酒吧。 因此,要採取酒吧, 這將其複製到c中。 聽眾:OK。 MARIA ZLATKOVA:而且它會 copy--第三個參數只是指 多少它會複製到c中。 聽眾:嗯。 所以這一塊的複製這一切呢。 MARIA ZLATKOVA:是啊, 它複製它的全部。 是的。 首先,我們要確保酒吧是不 等於空,因為它是一個指針。 然後,我們得到欄的字符串長度。 我們要確保它的 小於或等於12。 然後,因為我們已經 確信,我們實際上可以 memcpy和確保沒關係。 任何問題? 大。 我有兩個真或假的問題。 誰能告訴我馬上 如果這是真的還是假的? 是的,這是假的。 究竟。 他們兩人都是假的。 因此,使用單一密碼 從來都不是好主意 因為如果有人知道 你的密碼,他們可以只 訪問自己的所有其他帳戶。 然後圖標什麼都不做 以保證安全。 我們通常應該尋找HTTPS 而不是HTTP和URL。 還有一些其他類型的 我們已經提到的攻擊, 大衛在提到 講座中,SQL注入攻擊。 我們已經看到,如果我們don't--的 CS50查詢功能可確保SQL 不能出現注入式攻擊。 但是,如果我們沒有使用CS50, 報價,引文結束“查詢,” 我們必須確保該 用戶輸入實際上不是某些SQL 查詢,將導致所有 被丟棄我們的表 什麼不好 發生在我們的數據庫。 會話劫持 另一種類型的攻擊 這種情況發生了一些不好的時候 人使用了一些受害者的會話 標識訪問登錄信息。 所以,一個很簡單的例子是 一樣,如果我們的公共電腦, 然後再壞的人記錄 他們有保存的cookies。 而且餅乾不改變會話。 然後我們有受害人去 然後登錄到該網站。 的Cookie不會改變 對於一定的會話。 然後受害人登錄到 該網站,然後離開。 然後這個人誰追溯到 則仍可使用其會話ID 來訪問他們的信息。 所以這是一個例子 怎麼可能發生。 然後,我就不會太擔心 關於具體的代碼或任何東西 這樣可能會導致此, 但有某種想法是什麼 參與這一變量是。 然後操縱頭 數據是另一種類型的攻擊 有大衛談到。 它只是指 有什麼可以當發生 響應時,HTTP 響應我們的頭裡面 沒有正確消毒。 和任何fields--例如, 如果有人將覆蓋頭的一個 值中包含任何超過 他們應該contain--,實際上 含有,例如,一個200 OK狀態代碼,然後他們 可能做惡意 事情時,他們不應該。 但我不會太擔心 太多關於具體的代碼 這可能會導致此, 剛剛體悟 高級別之類的東西。 我想這是所有 我們必須覆蓋。 驚人。 任何人有任何任何問題 那我們討論的東西呢? 是。 聽眾:所以有幾分 更多的後勤問題。 是內容主要集中 在測驗1以後的事情呢? MARIA ZLATKOVA:所以 問題是,是內容 主要集中在東西測驗1後? 所以在重點是 測驗1,除 我們需要關注的事情 pset5和大量的數據結構的 我們覆蓋。 我們不能說我們 可之前忽略任何東西 因為它是建立在它。 因此,重點是,加pset5材料 像包括鍊錶,棧, 隊列和一切 漢娜去了。 漢娜布隆伯格:對。 是啊,我們去了所有的C東西 在一開始非常快。 但是,一定要複查。 回去看測驗0審查。 一對夫婦更多的後勤筆記, 只是當我們有您的注意。 我們將不得不辦公時間 無論在週一和週二晚上。 他們將在MD 119。 這是所有網站上的,所以 如果你不聽,無後顧之憂。 MARIA ZLATKOVA:8:30至11:00。 漢娜布隆伯格:是的,8:30至11:00。 我們將在那裡。 我們將在那裡回答問題。 這是很肅殺和樂趣。 你們可以問任何問題 你對測驗1。 而測驗1是 週三,運氣這麼好。 如果你有任何問題,也許 再來說說我們在這裡一對之一。 涼。 非常感謝。 MARIA ZLATKOVA:非常感謝,伙計們。 聽眾:耶。 [掌聲]