>> JASON HIRSCHHORN：歡迎光臨， 每個人，至10週。
這是一個令人興奮的一周，因為 明天是測驗1，我們將得到
在第二個。
今天在節中，我們將去 對一些資源進行測驗，並
然後，我會回答任何和所有 問題你們有。
我們將最終結束於 一些實際問題。
>> 我們可以花整款 回答問題。
我們可以花整款 去在實踐中的問題。
我們只會擴大，以填補 空間和時間，我們有。
>> 所以我每星期把這個名單了，但 這個星期是特別重要的。
對於學習，如果你還沒有 已經開始了，男孩哦。
但希望你已經開始。
和你正在經歷的材料 這裡列出的資源。
我會極力推薦 許多這些。
>> 特別是，課堂筆記是 非常重要和有益的。
該study.cs50.net提供 在很多大底
我們討論的主題。
它也有一些偉大的 實踐問題。
然後，谷歌是偉大的，太。
我不知道你會用它來幹什麼。
但使用谷歌，以及。
>> 伸手給我，如果您有任何 問題，意見或疑慮。
期待在審查會議 幻燈片從昨晚。
或者，如果你有一段時間了， 觀看視頻。
它們提供了很多有幫助的 材料和信息。
並設法彌補，如果不是全部，很多的 我們已經討論了，而且你的主題
在測驗可能會看到。
>> 說到測驗，即 將是明天。
它擁有75分鐘之久。
你們中許多人正在服用它在1 點多了，有些人相當
把它在5:30。
當時你正在服用它和 你正在做它的位置，確保
您簽出該文檔 在CS50.net主頁。
>> 請記住，你可以得到一個8 1/2 由11片隨身攜帶。
通常情況下，人們不使用此 表在所有的考試中。
不過說真的，這是一個令人難以置信 有用的學習工具。
所以這片放在一起是什麼 我花了大概三四個小時
當我攻讀CS50做什麼， 這是很容易的最有幫助
這樣我可以學習的測驗。
所以，即使你有一些其他人的 學習指南來看待和
作為參考使用，我強烈推薦 使自己的學習指南，把
這些東西在一起。
這確實能幫助你學習 所有的材料。
>> 最後但並非最不重要在本節中， 有一個明天的測驗後，
更多講座 -
下週一。
還有一節，沒有未來 週二感恩節前，但
週二之後。
我們將一起開會作最後 再見了黨和也做了一些很酷
事情讓你們感到興奮 進一步研究在計算機科學。
>> 還有一個多項目，多了一個 公平的，多一個hackathon。
我們正在接近CS50年底， 這是令人興奮的 -
而且，如果你像 我，有點難過。
在我繼續前進，沒有任何人有 大約有任何疑問什麼
我們已經討論了這麼遠嗎？
>> 好了，好讓我們在一些問題 您有測驗和主題
我們可能涵蓋。
所以這是一個列表，我放在一起。
它絕不是詳盡，但 希望能喚起你的記憶，如果你
有任何關於這些問題的一些 主題，或者如果您有關於問題
從測驗練習題 在過去的幾年。
>> 我有幾個問題，是 通過電子郵件發送給我，但我想暫緩
那些一秒鐘。
沒有任何人有任何疑問， 他們不明白的問題，
答案他們不明白 讓我們開始？
阿維。
>> 觀眾：你能隨便去了 DOM和Ajax的真快？
就像，我們需要知道或應該 了解他們的？
>> JASON HIRSCHHORN：我要回答 通常這個問題，有什麼事我
需要了解特定主題X'
因為我有一種感覺，你們中許多人 要問我，或者是
好奇的。
所以，在某種程度上，這一專題 涵蓋演講，或部分，或
study.cs50.net，問題集，你 應該熟悉它。
>> 所以，你不需要知道每一種類型 標籤，是HTML中可用或
每一種類型的屬性或屬性的 你可以給一些在CSS中。
但是，如果你看到它在一個演講的例子， 如果你看到它在一個問題
集，你應該很熟悉 有了它，你看到特別的東西
在演講。
所以我們討論的文件 在對象模型中的位
部分，更多的是在演講。
你應該很熟悉 有這麼大的它。
>> 而且你應該熟悉 AJAX到相同的程度。
我們從來沒有見過難以置信的先進或 阿賈克斯的複雜的例子，所以
你不會被要求做 一些令人難以置信的複雜。
但你可能會問，我怎麼 使用jQuery做一個Ajax調用？
這是你已經看到了一些東西 之前的時間，無論是在
審查會議，並在講座中，和 它的代碼只有兩個十歲上下行。
>> 所以這是你應該 熟悉。
但同樣，對於所有這些主題， 如果你已經看到了
之前，它是公平的遊戲。
我們可能會問你 - 很明顯，我們是 要問你的事情你
以前沒有見過的。
編碼的東西你有沒有 以前見過。
這並不是說你有沒有 看到解決工具
這個問題之前。
你已經看到了這些工具。
>> 例如，在測試1，如果 你需要編寫strlen的。
我們以前沒有編碼的strlen。
但你知道如何使用for循環， 你知道如何，如果條件下使用。
你知道如何用C編寫的變量 這將是在這裡同樣的事情。
你不會被要求做 你有沒有看到過，但什麼
你可能會問到，像，放 東西一起以一種新穎的方式，或
解決不同類型的問題。
>> 對不起，這不是特定於您 的問題，但我不能回答有關
每一個話題你 做或不需要知道。
但同時，對不起，這最後的事情。
我們花了顯著更多的時間 在鏈接列表比我們對阿賈克斯。
你沒有在問題集中使用Ajax。
其中所述中心功能 問題設置了鏈接列表。
我們花了很多時間在講座 和使用它部分。
>> 所以，賠率是鏈接列表將拿出更多 經常在測驗比阿賈克斯的意志。
或問題不得不與鏈接 名單將是值得更多的積分。
所以，你可以肯定聚焦和窄 在東西比較多
可能是因為我們要拿出 花更多的時間在他們身上。
>> 確定沒有別的問題？
是啊。
>> 觀眾：我們可以走了過來使用 在JavaScript中的匿名函數？
我是有一點困惑了。
>> JASON HIRSCHHORN：那麼在JavaScript -
我試圖想我怎麼樣 可以寫這樣的 -
讓我們實際打開了這個代碼。
所以這是代碼的最後一周，我們做到了。
和你以前，如果你看到了這 曾在這裡一節的最後一周。
或者你已經看到的東西 之前與此類似。
>> 但你可以看看這個第一道防線。
這是你如何開始 -
大家以前也見過這個。
如果你想要把一些JavaScript代碼， 你把它放在這裡面，假設
您正在使用JQuery。
這是說，什麼也不做 直到文件的加載。
>> 然後，簡略的，你看這裡 我們正在做這樣的事情 -
功能開括號，括號封閉。
因此，我們沒有給這個 函數的名稱。
我們不會定義這個函數 應該運行，然後
說它是一堆倍。
我們只是說這個文件 已經接受一個函數。
一對夫婦的事情要做。
>> 我們不想花時間 給它一個名稱，或將其保存為
永久。
我們只是想運行一些事情。
因此，一個匿名函數排序 的服務的目的。
如果你不打算使用的東西 一遍又一遍，所以你不需要
給它一個名字 - 你只是 想一次使用它 -
你只說功能， 例如，在這種情況下，你只是
定義的東西， 你可以給一個名稱。
>> 喜歡，我們可以拉這個功能了 並給它一個名稱，然後調用
在這裡發揮作用。
但是，我們並不需要，因為我們不 不想浪費時間給它一個名稱或
浪費的東西在我們的名稱空間。
而且你會看到很多。
例如，我們看到了很多在這 代碼，但是你以前見過這個時
你點擊的東西 -
運行此類型的代碼。
>> 我們可以定義我們想要的代碼 運行時點擊的，在這種情況下，
這個ID，作為一個單獨的函數 然後運行該功能。
但在這種情況下，我們只是跳繩 該步驟和在這裡將它移入和
只是一切定義 我們希望發生的，並
不給它一個名字。
這仍然可能沒有 回答你的問題。
>> 觀眾：不是，它的作用。
我的意思是，我想我只是真的不 知道為什麼它會是一個
功能可言，雖然。
因為它沒有真正被調用。
它並沒有真正有一個名字。
>> JASON HIRSCHHORN：這是在一個函數 感，它的一系列步驟，
就像你把一個函數。
然後這就是為什麼我們稱之為 它的匿名函數。
我們不打算給它一個名字。
我們不會浪費嘗試 以它命名的，但我們可以。
>> 匿名函數，你 總是可以給一個名稱。
因此，舉例來說，這段​​代碼就在這裡， 我們可以把這段代碼裡面
函數，然後調用 此功能在這裡。
相反，我們說，我們不打算 打擾了。
我們只是去寫 這一切就在這裡。
>> 這就像有時當你正在寫 四迴路用C - 你們
之前已經看到這一點 - 也許你 通過forloop迭代
進入i等於0。
I小於strlen的。
否則你會通過一些 數組，你可以保存數組
索引i中的一些變量。
並使用該變量。
所以，你不需要重寫數組 支架我一遍又一遍又一遍。
>> 而這有點像 一個虛擬變量。
這不是服務於很多其他用途， 使你的代碼有點清潔
並且更容易閱讀。
類似的功能在這裡。
只是使它更容易一點，但 在功能上沒有區別。
這是否回答你的問題？
>> 觀眾：是的。
>> JASON HIRSCHHORN：OK。
馬里奧？
>> 觀眾：昨天他們往往把 函數括號事件。
這是否意味著什麼？
或者是它的事情，比如 他們會做
的document.ready功能的事件。
>> JASON HIRSCHHORN：我們已經看到了這一點， 再次，這些都是小事情，
也許我不想 花太多時間。
因為有時候我不希望人們 得到嚇壞了，他們有沒有
聽到這些事情那麼多。
但是，我們討論了一些 事件處理程序。
所以有事，然後 這個功能被執行。
然後，我們也想知道 關於一些細節是什麼
在發生此事件。
>> 所以想回習題集4。
這可能是最簡單的方式 明白打出來。
有一些代碼 -
就像一個事件會發生，但 事件可能意味著很多東西。
如果可能意味著鼠標被點擊時，它 可能意味著你打箭頭鍵，等。
等等，等等。
>> 但是，這一切都保存在這個通用 東西叫做事件。
然後我們就可以說，是 本次活動這件事情？
或者這是事件這件事情？
或者，什麼樣的事 與該事件？
所以這就是為什麼您創建的變量 那裡保存額外的信息
關於究竟發生了什麼的 你會想
利用在該功能。
但同樣，這可能是一個 是超級不那麼重要的東西
熟悉。
>> 好了，有什麼其他問題才有人 已經或者絆腳石，他們已經
在審查遇到過嗎？
我們將回到那個列表。
在練習測驗怎麼樣，如果 人們已經採取了那些已經？
什麼是一些問題 絆倒你們了？
我知道一個事實，去年的 測驗真的很難。
>> 觀眾：你能解釋一下 SQL注入攻擊是什麼？
>> JASON HIRSCHHORN：好，太好了。
所以我們談到這一點。
有關於安全的講座。
再次，正如我剛才所說， 這是一個在一邊。
但你會在測驗受挫 當你讀了一些小二點
的問題，你像，當 我曾經學來的？
>> 所有這些東西在那些講座 你你需要的沒想到
知道，或者你可以粉飾，因為 他們沒有做的
習題集，這些將有可能 再上來的測驗。
所以，酷，有趣的東西，你只是 以為大衛告訴你來
享受，他告訴你你來 享受，並讓你僅僅是超級
對學習充滿興趣的一切 有學習
關於計算機科學。
那些東西也拿出了上測驗。
所以，即使是沒有這些小東西 直接關係到您的問題
設置，如你們所熟悉的 測驗0，可能會冒出來。
這是一個很好的例子 的東西。
>> 因此，一個SQL注入攻擊是當你 從用戶獲得一些信息和
你想用它插入到一個表 SQL INSERT語句，但你
沒有淨化輸入 提前。
所以，很明顯，我們已經看到了 SQL語句。
我就打開了 -
讓我們去 -
我們會去檢討 -
我認為，誰支付呢？
我覺得Samala做到了。
所以我們可以得到 -
>> 觀眾：你在哪裡找到呢？
>> JASON HIRSCHHORN：所以，如果你去 CS50.net，測驗，然後你就可以
翻閱過，並得到滑梯 從審查會議。
但你可以看到這是一個很好的例子 的SQL注入攻擊。
我們從用戶處獲得的一些信息 他們給我們一個字符串，然後我們
要插入的字符串 到數據庫中。
一般來說，我們要消毒的 輸入，表示有一些
字符是危險的。
>> 例如，在SQL字符串， 這些報價 -
單引號或雙引號 -
意味著什麼。
他們的意思是在這裡結束這個字符串。
所以，如果用戶給你一個 或雙引號，他們可能是
試圖絆倒你的SQL查詢， 插入一些不好的東西進去。
如果他們這樣做，他們可以得到 你的數據庫的控制權，或做一些
東西，你不希望他們做的。
>> 所以這就是為什麼每當我們需要的SQL 查詢，我們淨化輸入之前
將其放入數據庫中，這 意味著我們逃避這些字符。
我們將討論，在第二。
不過長話短說，SQL注入 攻擊是，如果你不這樣做 -
如果你不把輸入的護理 他們給了你把你的前
數據庫，他們可以，你下來看看 在這裡，運行查詢，其實 -
他們把他們的代碼到這裡，並 這個選擇線下這裡將選擇
一切從表姑 什麼是給定的密碼。
因為你有1或等於1。
>> 所以基本上，長話短說， 一種方法來接管數據庫。
的問題，那麼，對於你們，是 凡在p設置7你消毒所有
輸入您的SQL查詢？
在哪裡這一步發生的呢？
你在哪裡防止SQL注入 發生用p襲擊設置7？
是啊。
>> 觀眾：地穴？
>> JASON HIRSCHHORN：所以它不是隱窩。
我們沒有讓你這樣做的這個 特別是設置的問題，但它發生
在查詢功能。
實際上，我們寫了你， 我們花了照顧
消毒的投入為您服務。
但在過去的幾年中，學生有 上鍵入他們自己的輸入。
IN P組7，很多你 -
讓我打開另外一個文件。
>> 所以，你會發現在這裡有很多 人，在問題設置7，沒叫
此功能對字符串。
這個函數，用htmlspecialchars， 再次 -
該字符串可能有一些東西 在HTML中是指別的。
像一個大括號，方，或者角度 支架意味著什麼在HTML中。
>> 所以，如果你打印出來的 屏幕或者如果你只是採取和
打印出你的HTML，這可能 做一些你不希望。
所以用htmlspecialchars越過所有那些 有特殊字符
會議和逃脫他們。
因此，它被打印出來的文字 你想看到的，而不是
搞砸了你的HTML。
我們在標題中所謂的功能。
和很多人忘了 在程序中調用該函數
你在寫代碼。
>> 因此，舉例來說，如果一隻股票名稱有一個 在它的角括號，你忘了
調用這個函數，這個角度 支架可能已經揭去什麼
你的HTML的樣子。
但調用這個函數將難逃 該所以實際打印出來作為一個
尖括號並不會拋出 關閉你的HTML代碼。
>> 我們已經看到了同樣的原因，有時， 在雙引號前斜線
printf的線路，因為我們不希望 雙引號下來的字符串。
我們想打印出來 輸出到屏幕上。
所以，這一切是同樣的想法。
這是否回答你的問題？
>> 種類：受眾。
>> JASON HIRSCHHORN：你 有一個跟進？
>> 觀眾：我猜的SQL注入 攻擊都有做呢？
我不知道如何 這兩者是相關的。
為什麼你會做specialChars中？
>> JASON HIRSCHHORN：好的，那麼在SQL 當你注入注入攻擊
一些惡意的字符串到別人的 程序，他們只是把它和運行
用字符串的SQL查詢 你給了他們。
正如你所看到這兒，那 可能是有問題的。
所以你防止對的方法是 你把自己的字符串，他們給
你 - 那麼這個字符串就在這裡 -
你消毒了。
你逃避所有的事情， 是潛在的問題。
所以，你不理解他們的東西 這意味著什麼。
>> 以及與一個例子 HTML是這個功能。
所以它在這裡同樣的想法。
而我只是向您展示其他 當你已經實例
以前見過這樣的想法。
付印前逃逸用戶輸入 它的屏幕還是把它
裡面的SQL語句。
>> 因此，在這種情況下，用戶：觀眾 是搞亂與編程。
>> JASON HIRSCHHORN：是的。
與所有這些安全攻擊， 這總是一般的用戶，或
一個人，正試圖一塌糊塗 與你的程序員。
而這些辦法可以 防止對他們。
>> 觀眾：所以，我有一個問題 關於雜湊函數。
在測驗1自2011年，有兩個 關於片面哈希值的問題。
我只是想知道 這是什麼意思。
>> JASON HIRSCHHORN：OK，這測驗？
2011？
>> 觀眾：是啊。
>> 觀眾：測驗1？
>> 觀眾：[聽不清]。
這就像一個散列密碼。
這不是把事情 -
>> JASON HIRSCHHORN：什麼頁面呢？
>> 觀眾：我認為這是 9或10，或兩者。
>> JASON HIRSCHHORN：好吧， 繼續前進，柯特。
你可以回答，而我們期待。
>> 觀眾：我認為這是在說 關於散列密碼。
象，當有人輸入密碼， 你把它變成一個加密的東西。
這是密碼散列，這是 從散列函數不同的是
把東西放到一個哈希表。
>> JASON HIRSCHHORN：讓我們來看看。
讓我拉他們 給出的答案。
然後我們將通過它走。
>> 所以簡略的給了一個很好的例子 一個單向散列。
當我們以前看到這一點，我們 取密碼並開啟 -
請記住，在p將7，有人可能 有一個密碼，這只是密碼，
但後​​來它被加密成 一些很長的事情。
單向散列意味著它是非常容易 從一條路可以走其他的，但
它很難從去 另一種方式回來。
>> 所以你知道，當你檢查 人的密碼的問題
設置7，你會拿自己 -
因此，舉例來說，說他們想 更改他們的密碼，你問他們
他們的舊密碼。
你把自己的舊密碼。
你加密了。
然後比較了兩種加密 而不是unencrypting原
之一，因為它是真正 難走那條路。
是啊。
>> 觀眾：如何深入我們不 的telnet理解必須是？
>> JASON HIRSCHHORN：如果有人提到 在簡短的演講，只是一個短暫的
理解。
再次，回到答案 為AVI的問題 -
在更多的事情上來，就越有可能 它是你必須要超
熟悉他們。
如果他們來了才在演講中， 這只是一個地方。
但是，如果他們拿出在講座中，段， 和問題設置，那麼你
大概得超 熟悉他們。
>> 所以，我有一個問題，從 早期有關 -
IS是2010年秋季 -
測驗1，讓我們拉起 -
這個問題在棧和隊列， 我們確實花了時間的公平一點點
講座中談到，即使 雖然我們並沒有真正
曾經擊中了它的部分。
所以這個問題是給你一個系列 的命令，並要求你什麼
被印刷在這種情況下。
所以這是一個完全合理的問題 可能被問的你
傢伙，然後你們應該 能夠回答它。
>> 那麼，為什麼你不看它30 秒，然後如果有人想
建議答案給我， 然後我們將通過它走。
好吧，誰擁有一個答案 問題27？
是啊。
>> 觀眾：它是1，2，3，3？
>> JASON HIRSCHHORN：這是正確的。
圖27是1，2，3，3。
所以，讓我們來看看我們是如何走到這一點。
>> 首先，我們要說，如果s 隊列中的，得到印？
所以q是先入先出。
之前我們已經看到了。
我們看到的人的圖片 在蘋果等待
商店買一些產品。
在是第一人 第一批人出來。
在隊列中的第一件事情 是第一個出來的東西。
>> 所以，如果我們把東西放到一個隊列中， 你推了1，那麼我們彈出1。
流行只是意味著冒了出來。
在這種情況下，只取出來的東西。
我們拿出第一 的事情，這是一個1。
所以我們把我們的事情 打印下來在這裡。
這不再是我們的隊列中。
>> 然後我們推a 2和a 3，和 我們流行過的第一件事。
再次，因為它是一個隊列。
所以，我們得到了一個2，那麼我們就把另一 3，再次調用pop。
我們的3是第一。
>> 然後我們有一大堆的 其他的東西，調用pop。
但同樣，因為這是一個隊列， 先入先出。
我們拿出的第一件事情 這是以往任何時候都放​​進去。
這是我們的3。
並且，在這種情況下，我們也不用擔心 所有其他的事情。
所以這是，如果這是一個隊列。
關於隊列的任何問題嗎？
>> 堆棧的不同。
什麼是我們擁有的縮寫 對於理解一疊？
>> 觀眾：後進先出。
>> JASON HIRSCHHORN：後進先出法，我想。
後進先出。
因此，我們看到一個棧的實例 在一個食堂托盤。
無論是托盤頂部 撿起。
然後，如果新來的托盤 中，他們得到放在上面。
然後無論是在 頂部撿起。
因此，那些在底部托盤威力 在那裡呆上一段時間。
>> 在這種情況下，同樣，我們將 得出了這一點。
我們推進的，所以一 是排在第一位。
而我們彈出的東西了。
還有的只有一件事在那裡， 所以我們移動1到這裡。
然後，我們把2和3 我們流行的東西了。
>> 但同樣，因為這是一個隊列 -
或者這是一個堆棧，而 -
我們採取一切是最後一次。
不管是在最後出來先。
和3是最後一次。
所以我們把3出現了下滑，那麼 我們把另外3我們
再彈出的東西。
最後，我們將在4，5， 6，和7，在這裡我們彈出。
並且因為它是一個棧，我們採取 無論是放在最後的，寫
下來這裡。
因此，我們最終以1，3，3，7。
沒有任何人有任何的問題 堆棧或隊列，或這個例子嗎？
>> 確定。
讓我們回到主題列表中。
不是這樣的，這樣一來。
還有什麼其他的問題人們有哪些？
>> 觀眾：我不知道有多麼重要 這是，但我感到困惑的
不同類型之間的差別 語言，如標記，編譯，
解釋。
>> JASON HIRSCHHORN：這是 一個很好的問題。
我覺得這是比較重要， 讓我們趕緊去了吧。
我們已經看到了很大的語言至今都 C，PHP和JavaScript，在條款
的編程語言。
HTML，正如你所說，是不是 一種編程語言。
這是一種標記語言。
然後我們有CSS，這也是 不是一種編程語言。
>> 我們也看到SQL中，這是不 一種編程語言要么。
所以SQL允許你寫 查詢一個數據庫。
HTML是一種標記語言。
它定義了事物是如何構成的。
和CSS可以讓你的風格的東西。
這可能是在多大程度上為你 需要了解這三個。
但更有趣的數字 輸出C，PHP之間的差異，
和JavaScript。
>> 因此，一個最大的不同， 正如你所說，是他們如何是
編譯，或任何 相當於是。
所以C編譯。
我們將始終運行一個編譯器。
然後在那裡是你的錯誤 當您運行C編譯器？
它在哪裡告訴你 代碼中的錯誤？
你怎麼知道有一個 在C語言代碼中的錯誤？
>> 觀眾：這表明你 在終端中。
>> JASON HIRSCHHORN：這表明你在 終端為你編譯。
如果有錯誤，它 實際上不會編譯它。
所以，你知道，有右的錯誤 走，時間提前，然後再
即使運行代碼。
>> 當然，您可能會遇到你的代碼， 得到一個段錯誤，但那是
可能是因為你沒有 一些愚蠢的邏輯的事情。
但隨著技術的代碼 所有正確的，可以運行。
所以C代碼被編譯的時間提前。
怎麼樣的PHP代碼？
在哪裡在你的PHP代碼中的錯誤？
你怎麼知道你有錯誤 在你的PHP代碼？
>> 觀眾：運行時間？
>> JASON HIRSCHHORN：是啊，當你 將運行它，您將運行
在後面的PHP代碼。
然後你會顯示一個畫面。
你可能會看到一些東西在上面， 但隨後你會看到，像一些
橙色，醜表。
它會給你一個行號和 比方說，胡說，胡說，胡說，這東西
沒有工作。
>> 所以PHP是一行一行 並在服務器上運行。
然後，結果是 發送給您。
大。
在執行逐行服務器產品線 然後發送給你。
如果有錯誤，它會發送 你的錯誤，但你可能有
得到的時間提前一些東西。
所以它的一些可能有工作，但 後來，一些東西可能沒有
沒有奏效。
>> 怎麼樣的JavaScript？
你在哪裡看到JavaScript錯誤？
P中設置8，當你得到一個 錯誤，你是怎麼知道的？
會在哪裡出現呢？
>> 觀眾：在控制台中， 在底部。
>> JASON HIRSCHHORN：在 控制台上的底部。
它還會給你 行號，它會
顯示在底部。
與未執行的JavaScript 在服務器上。
JavaScript最初被發送到你的電腦， 然後當它是時間來運行
JavaScript中，JavaScript的是 由行上線運行
客戶端，就在你身邊。
沒有服務器，客戶端。
>> 同樣地，它是 通過線運行線路。
然後當你將得到一個錯誤， 它會顯示在底部。
類似於PHP的，它的一些可能 執行，那麼你可能會得到一個
錯誤以後。
>> 此外，有一點不像PHP的，如果 你得到了一個JavaScript錯誤 -
說你沒有做正確的 對於一個警告框代碼 -
你可以繼續運行你的程序。
該警告框是行不通的，但 你的程序將被罰款。
只是也許該函數將失敗。
>> 因此，有一些最大 在如何將這些術語的區別
語言，或如何編程代碼 你寫的是實際評估。
也有在其他方面的差異 最大的區別 - 條款
我們已經看到在變量方面 在不同的語言。
所以，有誰能夠給我一個差 變量之間
在這三種語言？
是。
>> 觀眾：在C中，他們 嚴格的類型。
在另外兩個，它們是 鬆散類型。
>> JASON HIRSCHHORN：與 這是什麼意思？
>> 觀眾：那在C中，你必須聲明 該變量的類型時，
你聲明的變量， 像interbool或char。
>> JASON HIRSCHHORN：優秀。
在C語言中，我們總是不得不把 一個類型的變量。
我們不能真正混合類型。
你不能做一個整數 加的字符串。
但是，正如我們已經看到的這些其他 語言，你其實可以混合類型，
你從來沒有真正得給 什麼類型，直到永遠。
>> 那麼，我們如何知道的事情是變量 在PHP和JavaScript？
>> 觀眾：在PHP中，他們開始 用一個美元符號。
在JavaScript中，當你聲明 他們，你必須有一個酒吧。
>> JASON HIRSCHHORN：對。
所以在PHP中，他們開始 用一個美元符號。
在JavaScript中，他們必須有吧， 雖然有時候他們實際上並不
得有吧。
但是，這是正確的。
>> 所以這是一個很大的區別 之間的變量。
我認為這些都是可能，關閉 頂我的頭，兩個最大
這之間的差異 三種語言。
但是，是的。
>> 觀眾：和C變量的作用域 被限制在花括號
當其他的，它只是喜歡， 它死了，如果是在只有一個功能，
但除此之外，it's -
>> JASON HIRSCHHORN：對。
所以範圍略有不同。作為 你還記得，大括號定義
變量的範圍。
所以，如果有人在裡面，如果定義 條件，這是一個內部循環，
該變量只存在在那裡。
>> 在JavaScript中，如果一個變量被定義 內部的if條件 -
裡面的for循環 - 它會存在 該函數，但它不會存在
以外的功能。
所以範圍是一點點更靈活 在JavaScript和PHP。
這回答這個問題？
好了，沒有別的問題？
我們可以做四個多分鐘 的問題，那麼
我們會跳進編碼。
>> 觀眾：我們可以進入阿賈克斯 並說說是什麼嗎？
>> JASON HIRSCHHORN：交談後為AVI。
他問這個問題前面。
>> 觀眾：我的壞。
>> JASON HIRSCHHORN：不用擔心。
>> 觀眾：究竟什麼是JSON？
>> JASON HIRSCHHORN：JSON是什麼？
什麼是你的問題？
>> 觀眾：剛才真的很快， 之間的差
在PHP打印和迴聲。
>> JASON HIRSCHHORN：你為什麼不谷歌 打印和迴聲之間的區別？
細微的差別。
不是什麼大不了的事的。
但你一定要google一下， 而且會給你一個很好的答案。
>> JSON，可能更大的一筆交易。
代表JavaScript對象表示法。
而當我們已經看到的JSON被使用？
當你看到 -
為什麼你甚至不知道這個詞的JSON？
當你看過了嗎？
>> 觀眾：當我們得到 股票行情融資。
>> JASON HIRSCHHORN：所以你看到 當你獲得了
股票行情融資。
又為什麼你看到了嗎？
>> 觀眾：當我們檢索 的所有信息，
排在該格式。
>> JASON HIRSCHHORN：所以你會得到 -
是的。
來吧。
>> 觀眾：[聽不清]的信息 出的對象的？
>> JASON HIRSCHHORN：無論那些 放在一起就是答案
我們正在尋找。
你想要的信息 這另一個網頁。
而你希望，當你 獲取這些信息，這將是
在某些類型的呈現給大家 標準化的格式。
>> 每個人都可能是熟悉 用逗號分隔的值。
您可以導出為Excel電子表格或 任何類型的電子表格作為一個列表
逗號分隔值。
和逗號分隔的所有 在不同的領域。
JavaScript對象符號 -
JSON -
是另一種類型的標準化的 物聯網佈局。
這就是通常我們如何檢索 從我們的Ajax查詢的信息。
>> 因此，在這種情況下，我們得到了它 從雅虎網站。
他們返回的東西 我們在一個JSON對象。
然後，我們知道，因為它是 一個標準，它是什麼
將會是什麼樣。
因此，我們可以通過遍歷數組 這是退還給我們，數組
返回到我們的對象。
>> 我們可能需要知道密鑰， 但他們通常給你
在該網站的文件時， 你想拿幾個JSON
標記他們。
同樣，你可以JSON 編碼的對象。
所以這是一個函數的JSON 強調編碼。
所以你可以採取一個對象， 你已經創建，JSON編碼它，
它傳遞的東西 否則，如果你想。
和JSON解碼也存在 類似的目的，或用於
相反的目的。
>> 觀眾：我們是否需要知道編碼 哈希表和嘗試？
還是我們只是需要理解 他們是如何使用的，概念上？
>> JASON HIRSCHHORN：那麼，舉起你的手 如果你沒有對p哈希表中設置4
帶有鏈接列表。
或p設置5。
所以這是絕大多數人。
p將5，6，誰知道。
很久很久以前。
>> 所以，你絕大多數做 哈希表與鏈接列表。
而且因為這可能是更 常用的方法，因為我們花了
大量的時間做鏈接列表和哈希 表，你也許應該
非常熟悉如何編寫代碼 哈希表和鏈接列表。
>> 如果你覺得回到了這個問題 設置，它是不是真的
硬如您預期。
並有少了很多 比你預期的代碼。
我會說你應該知道如何 編寫一個哈希表或鏈接列表。
這並不是說你會問， 不一定，但你應該
當然知道。
>> 另外，如果你去翻過去的測驗， 已經有很多
關於編寫功能上的問題 鏈接列表或雙向鍊錶。
這似乎想出 每一年。
右側插入一個鏈接列表，右邊 從鍊錶中刪除，用鼠標右鍵插入
對於一個雙向鍊錶，等等。
所以，我覺得挺舒服的 說你應該知道這一點。
>> 對於嘗試，我會說你應該 當然知道它是如何工作的，也許
給一些偽代碼如何 它的代碼，並設置它。
但它不會是最糟糕的事情 世界上，如果你不知道如何
它在C代碼這將是巨大的，如果你 知道如何編寫代碼在C，但我認為
可能是偽代碼試試看會 是你最需要的
要知道一試。
>> 觀眾：附加題？
>> JASON HIRSCHHORN：而且用相同的，如果我們 進入二叉搜索樹，你可能
需要 - 你已經看到在過去， 我們已經做了很多 - 你知道如何
二叉搜索樹的作品。
你或許應該能夠 設置一個偽代碼。
但由於絕大多數人 沒有這樣做的問題
集，我會說這是不太可能 重要的是你知道如何編寫代碼
並成立了這樣一棵樹。
>> 還有沒有其他問題？
另外，我們可以在整個問他們 因為我們經歷了一些問題。
好了，我們要繼續前進。
跳過該幻燈片現在。
>> 發言的樹，也就是第一 問題我已經為你們。
因為這是一個問題。
我會說這是極有可能你會 得到這樣一個問題，在您的測驗
要求您編寫一些類型的插入， 刪除，查找，一類
數據結構我們已經看到了。
>> 需要達到的每一年，我們花了 這種大量的時間下半年
學期要對這些數據類型。
所以現在，我已經定義了一個節點 在二叉搜索樹。
而我希望你做的是給定的 啟動一個二叉搜索樹
在這個節點星級根，完成 執行下面的功能，
這恰好是一個查找功能。
並有和沒有遞歸做到這一點。
>> 所以，我希望你寫兩個函數。
一個用遞歸，一個人在做這個 這樣做並沒有遞歸。
也不要假設 根將成為非null。
因此，我們正在尋找我的整數 樹開始在根，我們需要
遞歸寫這 和迭代。
是啊。
>> 觀眾：所以，你要我們返回true 如果我們發現，假如果我們
並不覺得。
>> JASON HIRSCHHORN：你怎麼知道的？
你是怎麼知道的？
>> 觀眾：我是問第一次，但我 假設，因為它說，在布爾
該函數的開頭。
>> JASON HIRSCHHORN：對。
它說BOOL，所以我什至都不需要 告訴你，我希望你能返回
因為它說在那裡。
但是，這是正確的。
返回，真或假。
>> 在開始之前，我會建議， 如果您不熟悉
二叉搜索樹，快速繪製 它的照片，讓您的
的理解，正確的。
寫作時，也將幫助您 您的代碼並檢查它。
同樣，你也沒有那麼多 時間上的測驗，做所有的事情
我們要求你這樣做。
所以寫的偽代碼 是非常有幫助的。
>> 而我們一般提供有關 -
如果偽代碼是完全 正確的，這是
通常50％的問題。
所以它不是一個硬性規定，但如果 你只寫偽代碼，它的
正確的，它通常50％。
所以我總是建議 -
如果你時間緊迫，或者即使 你只是想弄明白 -
開始的偽代碼。
最後，如果你能寫這 所有在C中，這將是非常美妙的。
>> 因此，讓我們3分鐘 在這方面努力的程序。
然後我們將要編寫 偽代碼，它只是一次，然後
我們要遞歸編寫它 然後反复。
>> 如果您有任何疑問，請隨時 免費舉起你的手。
快樂的四處走動，並回答他們 在我們開始之前為一組。
>> 讓我們重新開始，而且我們要 偽代碼的遞歸版本
這一點，那麼我們將對其進行編碼。
因此，一個遞歸函數 需要兩件事情。
這可能是一個問題， 你可能會問。
需要兩件事情。
誰可以提高他們的手，告訴我 什麼兩樣東西遞歸
函數需要？
根據定義它有兩件事情。
什麼是這兩件事情？
新的手。
是的，奧爾登。
>> 觀眾：所以我不能完全肯定，如果 這是術語，但是 -
>> JASON HIRSCHHORN：我很高興 你養你的手。
>> 觀眾：它需要一個基礎的情況下， 並且它需要一個遞歸步驟。
>> JASON HIRSCHHORN：完美。
它需要一個基本情況和 一個遞歸步驟。
那麼什麼是我們的基本情況嗎？
>> 觀眾：F盤根等於等於null。
對不起，只是偽代碼， 如果它為空。
如果root為null。
>> JASON HIRSCHHORN：如果root為null。
這是極好的。
這是我們的基本情況。
這就是我們要去 檢查每一個時間。
和基本情況是 你首先要做的。
如果你打的基本情況，你就大功告成了。
>> 現在，我們需要我們的遞歸調用，而且我 願意打賭，我們需要一對夫婦
這裡的遞歸調用。
因為它是一棵樹，而我們 可以去多種方式。
所以，如果根是空，我們是很好的。
>> 你有什麼建議？
而現在我要開始呼叫 對你們，因為我知道你們
都知道這一點。
但安妮，又該 下一行是什麼？
如果我們找到了嗎？
我們該怎麼辦？
>> 觀眾：如果我們找到了嗎？
>> JASON HIRSCHHORN：還是什麼 應該是 -
給我的偽代碼 行，我們發現了它。
>> 觀眾：如果我等於根我？
>> JASON HIRSCHHORN：與 那麼我們該怎麼做？
>> 觀眾：返回true。
>> JASON HIRSCHHORN：太好了。
所以，如果我是我 -
哦，他們兩個叫我。
這得到混亂。
但如果我是我返回true。
這可能是下一個 我們應該做的事情。
有道理。
>> OK，現在我們還沒有做我們的遞歸 調用的是，雖然，因為一個遞歸
呼叫會再次調用該函數。
那麼又該下一 偽代碼的行會？
安娜。
>> 觀眾：左邊。
>> JASON HIRSCHHORN：要具體，雖然。
這是一個二叉搜索樹，還等什麼 並檢查左側意味著什麼？
>> 觀眾：那麼節點 -
對不起，根。
然後向左箭頭。
節點，節點，對不起。
我不會讀它正確。
這就是所謂的節點，對不對？
>> JASON HIRSCHHORN：它會被稱為根 在該功能，但無論哪種方式。
左側的 - 是嗎？
>> 觀眾：如果它不等於 我，然後我們將調用
該功能了嗎？
>> JASON HIRSCHHORN：這是正確的。
如果它不等於我，我們要去 再次調用該函數。
然而，我們要什麼副作用的樹 再次調用該函數？
>> 觀眾：在左側。
>> JASON HIRSCHHORN：我們並不總是 要調用它的左邊，如果它
不等於它。
>> 觀眾：哦，對不起。
呼籲的權利。
>> JASON HIRSCHHORN：我們想知道 具體而言，雖然 - 還記得，在一個
二叉搜索樹，一切 左手側越小。
一切的權利 手側更大。
所以它只是不 - 是啊，去吧。
>> 觀眾：如果它的不到我，然後 -
如果它是在左邊 ​​-
>> JASON HIRSCHHORN：所以，如果 ri為小於 -
因此，如果我們數小於我， 我們想去什麼副作用？
>> 觀眾：我們想去 向右側。
>> JASON HIRSCHHORN：我們想要去 -
讓我畫一個快速的樹。
如果這是5，這將是3。
因此，如果ri為小於5，什麼 一邊做我們想要去？
>> 觀眾：對不起，什麼？
>> JASON HIRSCHHORN：我們的電話號碼是 小於我們的數
現在在看。
>> 觀眾：哦，那我們要 去的左側。
是啊。
抱歉。
>> JASON HIRSCHHORN：沒錯。
無後顧之憂。
在二叉搜索樹，一切 下是到左邊，
更大的是在右邊。
因此，如果我們的數目小於 我們正在檢查我 -
因為你在看 節點，它有一個i -
那麼你想要去到左邊。
>> 這是一個輕鬆的一年。
這是它的偽代碼的其他線 我們需要寫？
卡洛斯？
>> 觀眾：同樣的事情，你只需切換 它以一個大於號
和去的權利。
>> JASON HIRSCHHORN：你能 說這一次嗎？
>> 觀眾：如果我們的數大於 比我去的權利。
>> JASON HIRSCHHORN：優秀 就業上的偽代碼。
讓我們在真正的代碼做到這一點。
再次，這將偽代碼 可能會得到你的，因為它是
正確的，50％在這個問題上。
但這個偽也意味著1 一，從本質上講，成代碼。
>> 因此，讓我們在C誰能給做到這一點 我的第一行代碼？
其實，第一次，以前我做的 這一點，讓我拉過來 -
>> 觀眾：我有一個問題。
你為什麼要縮進 行我給你？
>> JASON HIRSCHHORN：因為 我不能寫。
我不知道。
你說得對。
該行應該在那裡。
>> 好了，這裡是我們的函數。
讓我拉過來，也， 我們定義一個節點。
如果我們沒有發生什麼 寫的typedef？
有誰知道？
>> 觀眾：它不會編譯。
>> JASON HIRSCHHORN：它會 編譯，是的。
>> 觀眾：難道只是聲明了一個 實例，而不是使之成為一個新的
鍵入您可以聲明多個 的實例？
>> JASON HIRSCHHORN：所以它不會 知道 - 它不會
只是聲明了一個類型。
你仍然可以做出很多節點。
>> 觀眾：但是難道我們要 每次寫結構節點？
>> JASON HIRSCHHORN：這是正確的。
你必須編寫結構節點 每一次，而不是僅僅節點。
但用typedef，你可以只 寫節點每一次。
好了，誰沒有給出 - 是啊，Avica。
>> 觀眾：如果root等於等於 空，返回false。
>> JASON HIRSCHHORN：大和 這是我們的基本情況。
下一行代碼。
誰沒有給別人 我的代碼行了嗎？
是啊。
>> 觀眾：根箭頭我 等於等於i。
然後返回true。
>> JASON HIRSCHHORN：太好了。
下一行？
是啊。
別人？
然後你可以去下一個。
>> 觀眾：否則，如果根箭頭 i小於我返回
函數調用查找根源 -
>> JASON HIRSCHHORN：對不起。
>> 觀眾：返回找到根 指向左側逗號我。
>> JASON HIRSCHHORN：所以，如果ri為更大 比樹的東西，我們要
去左邊？
>> 觀眾：不，我有這樣的切換。
>> JASON HIRSCHHORN：哪一個？
>> 觀眾：沒有，是的。
我有一個小於號那裡。
>> JASON HIRSCHHORN：對，如果ri為 不到什麼是根 -
我們當前的根 - 那麼我們 想要去到左邊。
什麼是最後一行，你呢？
>> 觀眾：基本上同樣的事情， 除了切換大於或
等於小於和左到右。
>> JASON HIRSCHHORN：優秀。
沒有任何人有任何疑問， 這件事？
因此，一些其他的東西，會 已經正確的是
可能是 - ltiff。
猜測，在技術上，沒有這些 真的還需要，ltiff。
>> 此外，有可能只 一個案件到這裡。
所以這可能是你最後一種情況。
你甚至不需要說 - ltiff。
但可能好寫 它是明確的。
是啊。
>> 觀眾：所以你不認為測驗 - 如果我們的錯誤，例如，
在語法 -
小語法錯誤 -
那怎麼得到採取的測驗？
>> JASON HIRSCHHORN：一般的測驗， 小的語法錯誤或小
風格的錯誤不會失去你點。
所以，如果你忘了一個分號 在這裡，這將是確定。
如果您忘記關閉這個括號， 這將是確定。
>> 這改變了巨大的語法錯誤 你的代碼功能意義
戲劇性的是，你可能會得到 起飛的點。
或一般，只是你分級 是否不是你的
代碼的功能，甚至 -
不是它的設計這麼多， 而不是它的風格。
>> 現在，讓我們編寫一個迭代 版本發現的。
因此，這將是相當類似的，但 當然，還有將要
一些關鍵的差別。
然而，我們的偽代碼 大概可以走 -
我們仍然可以採取一系的 偽代碼，弄清了
線是在這種情況下。
>> 因此，在一個迭代版本，什麼 你認為，朱莉婭，應
在第一線？
>> 觀眾：同樣，在迭代布爾， 您需要建立一個for循環，對不對？
>> JASON HIRSCHHORN：確定。
>> 觀眾：那麼像，K，對於x 等於0時，x是小於我。
或無，x是小於 樹的大小。
>> JASON HIRSCHHORN：樹。
所以我們真的不知道的大小 樹，我們真的不知道
多少次，我們可以走了，有啥 不同類型的循環，它可能是
在這種情況下更好？
>> 觀眾：如果別的嗎？
>> JASON HIRSCHHORN：如果其他人 不能為一個循環。
那麼什麼是循環類型，我們可以只 去，直到某些情況下得到滿足？
什麼是唯一的其他類型的循環 C語言除了for循環？
>> 觀眾：雖然。
>> JASON HIRSCHHORN：雖然，沒錯。
在while循環中，不 需要知道如何 -
while循環和for循環可以做 同樣的事情，但美好的東西
關於while循環是我們不需要 要知道有多大我們的樹。
因此，我們打算去，直到什麼？
>> 觀眾：直到它等於 的大小 -
>> JASON HIRSCHHORN：嗯，這是非常 類似我們的遞歸情況。
所以 -
>> 觀眾：雖然根 我不等於我。
>> JASON HIRSCHHORN：這是真的很近。
而根I -
讓我們來試試吧。
我不認為[聽不清]
其中root我不等於我。
我們可能需要在一點點改變它 位，但聽起來​​就像是相當
好，現在。
因此，我們將做到這一點。
>> 此外，請記住，我們不能假設 每個問題。
你不假設 根將成為非null。
那麼你覺得很 我們應該做的第一件事是什麼？
>> 觀眾：剛剛做同樣的 和以前一樣的事情。
如果根等於等號 空，返回false。
>> JASON HIRSCHHORN：太好了。
因此它可以為null。
因此，我們要擺脫 它的時候了。
然後我們要去檢查，如果 根我不等於我。
所以，說我們正在尋找在這棵樹 3，根我不等於我，現在
我們在我們的while循環。
我們究竟想幹什麼？
再次，這將是相當 類似於我們的遞歸版本。
是啊。
>> 觀眾：所以你想要遍歷，或 不斷下降的樹，只要
根不等於空。
>> JASON HIRSCHHORN：只要 根不等於空？
>> 觀眾：根破折號我 不等於空。
只是根，是啊。
作為一個長期的根源是 不等於空。
>> JASON HIRSCHHORN：所以，你想要 要改變這種成根
不等於空？
>> 觀眾：是啊。
>> 觀眾：我們可以結合 這些，對不對？
我們不需要的，如果，最初。
>> JASON HIRSCHHORN：OK，所以如果我們鴕鳥政策 -
如果我們結合它們，所以我們要做的 而根不等於空，
如果根恰好是在空 開始，我們怎麼辦下來嗎？
>> 觀眾：返回false。
>> JASON HIRSCHHORN：太好了。
因此，兩種方式可能 會工作。
這是一種不同的方式， 而這個結合了。
但同樣，如果你​​沒有任何辦法，我們 不打算脫下設計
點上的測驗。
但這個看起來不錯。
>> 因此，儘管根不等於 空，什麼是第一
的事情，我們要檢查？
別人？
空，什麼是第一件事情？
>> 觀眾：如果RI小於 -
哦，我想，如果我們已經 發現它的根。
因此，如果根箭頭i是等於i -
>> JASON HIRSCHHORN：對不起？
>> 觀眾：如果根箭頭 i等於等於I -
>> JASON HIRSCHHORN：我們該怎麼辦？
>> 觀眾：返回true。
>> JASON HIRSCHHORN：太好了。
而下一步是什麼？
傑夫，什麼是下一行代碼？
>> 觀眾：如果i小於根箭頭 i，則根等於根箭頭左邊。
>> JASON HIRSCHHORN：根等號 根箭離開了。
所以，這可能是最大的 區別就在這裡在這個迭代
版本相對於 遞歸版本。
遞歸版本，我們 再次調用該函數。
我們將更新時，根 我們所說的新功能。
在這裡，我們不調用一個新的函數。
我們只是簡單地更新 根此功能。
這是極好的。
什麼是代碼的最後一行？
是啊，馬里奧？
>> 觀眾：否則等於根 根右側的箭頭。
>> JASON HIRSCHHORN：對不起？
>> 觀眾：根等號 根右側的箭頭。
>> JASON HIRSCHHORN：你也可以 寫這樣的事情？
>> 觀眾：我不知道。
>> JASON HIRSCHHORN：不能。
你不能這樣做，加上等號。
好了，這個不錯。
為什麼我們不這樣做 把它清理乾淨。
這看起來不錯，這是可行的。
而我們將要爆發。
>> 如果root左為null或向右根 為null，我們會來這兒。
根將等於空。
我們會打破我們的循環， 我們會返回false。
所以，當我們跳出的 循環中，我們返回false。
>> 再次，在一個while循環是完美的 在這裡，因為我們不知道如何
大我們的樹。
我們試著寫for循環，但我們 意識到你必須弄清楚如何
大的是時間提前。
是啊。
>> 觀眾：如果這不是一個二進制 搜索樹，這​​將是真正的數學-Y
要反复寫，對不對？
一樣，如果它是一棵樹， 但不一定 -
所以它不是在左邊的所有越小， 而右邊都較大。
這將是非常困難的 遍歷它，對不對？
我們不得不拯救早期是什麼 在樹回去，
和類似的東西。
>> JASON HIRSCHHORN：如果它不是一個二進制 搜索樹，如果它只是一個
樹，事情沒 整理這樣的 -
和我們之前意識到，當安娜 在幫助我們，使
排序的幫助了我們很多 -
我們需要的，是的，永遠保存 我們以前。
但有可能是一個很大的 我們在哪裡previouslys。
可能有很多父節點的。
>> 可能做到這一點的最好辦法就是 是要繼續推動東西到一些
類型堆棧或隊列。
你將永遠不需要編寫本 因為這是一個困難的問題。
但你把一些東西到堆棧 或隊列，然後彈出他們關閉，
然後評估他們。
>> 然後有一些其他的東西在那裡 你實際上是把節點，
然後創建一個，然後 通過搜索。
這可能是做的最好的方式。
好了，關於這個問題的任何問題嗎？
>> 觀眾：這是一個相關的說明。
我們將要比較運行時間 對哈希表，二進制
搜索樹，等等？
>> JASON HIRSCHHORN：可能吧。
因此，讓我們做到這一點真的很快。
運行時間為哈希表 -
什麼樣的人？
二叉樹？
>> 觀眾：鏈接列表。
>> JASON HIRSCHHORN：好，讓我們做插入。
什麼是插件的大O 在一個哈希表？
什麼是假設 你在做什麼？
>> 觀眾：你要插入的 開頭的鏈接列表。
>> JASON HIRSCHHORN：可能第一 假設是不存在衝突。
如果沒有衝突，則 插入時間就是其中之一。
如果有衝突，你就 做單獨的鏈接和插入
在鏈接列表的開頭， 然後插入也是恆定的。
>> 如果你正在做一個哈希表，但你 有處理的方法不同
有碰撞，有什麼 不同的方法？
什麼是一個不同的方法 處理的
在哈希表中的碰撞？
>> 觀眾：線性規劃。
>> JASON HIRSCHHORN：線性規劃。
所以，我們要繼續尋找 下一個空位。
這不是恆定的插入時間。
你可能不得不通過 整個表，使
可能的n大O。
是啊。
>> 觀眾：否則只是鏈接？
>> JASON HIRSCHHORN：我們做了 單獨的鏈接。
這是第一個。
這就是鏈接列表。
花哨的名字是單獨的鏈接。
它可以是任何類型的列表結構 我們正好在做鏈接列表。
>> 如此反复，插在一個哈希表 可能是恆定的時間。
關於插入什麼 在堆垛機的隊列？
>> 觀眾：是不是恆定的？
>> JASON HIRSCHHORN：這是不變的時間。
你只是推動它。
確定。
插入，請問是什麼其他的？
上一試？
什麼是插在一個try大O？
>> 觀眾：長度是恆定的。
最長長度 -
字的長度 要插入。
>> JASON HIRSCHHORN：對不起？
等等，所以我怎麼聽見了嗎？
你說 - 你說什麼？
什麼是你的答案，馬庫斯？
>> 觀眾：這個詞的長度 你要插入的字符，
假設它是一個字符嘗試。
>> JASON HIRSCHHORN：好了， 字的長度。
我們會做一個假設，即 它的字符的字符串。
你說不同的東西，雖然。
你說的最長的單詞的長度。
>> 觀眾：這只是常數，對不對？
>> JASON HIRSCHHORN：為什麼會 它是恆定的？
>> 觀眾：就像，如果你使用大O 符號，那麼它不是基於變化
對事物的數 已經在嘗試。
>> JASON HIRSCHHORN：所以我們 說它是常量時間。
它是恆定的插入，並 那是因為這樣的想法 -
說我們有一個字，就是45， 或一個詞，就是60，那
有一個恆定的數量。
它只會被插入 在常數時間。
>> 但在實踐中，它不會是， 顯然，發生在一毫秒內
例如。
但我們會說大O是 不斷的嘗試。
這就是它的一個 最大的優點。
>> 怎麼樣插入一個鏈接列表？
只需一個通用的，排序的鏈接列表？
是啊。
>> 觀眾：我有一個問題。
在測試中，他們會不斷問我們的 插入時間這四個步驟，
還是什麼？
還是只是 -
當你說的插入時間為一， 這只是意味著恆定的時間？
>> JASON HIRSCHHORN：是啊，他們會 總是問，是它的n大O？
日誌的n大O？
Ñ​​平方不變。
這些都是真正的唯一 那些你需要知道的。
什麼插入到 排序的鏈接列表？
>> 觀眾：我有一個問題 -
一個問題 -
>> JASON HIRSCHHORN：答案是什麼 對這個問題有關係嗎？
>> 觀眾：等等，你問什麼？
>> JASON HIRSCHHORN：什麼是大O 插入排序的鏈接列表？
>> 觀眾：一？
無等待，無等待，正。
>> JASON HIRSCHHORN：N.除了 鏈接列表。
什麼是你的問題？
>> 觀眾：所以你會寫 Øk或鄰1對的 -
>> JASON HIRSCHHORN：哦。
我會寫鄰1，大概。
還有另外一個數據結構 這將是良好的。
樹，二叉搜索樹。
什麼是插入在 二叉查找樹？
>> 觀眾：登錄。
>> JASON HIRSCHHORN：那麼，什麼是最糟糕的 情況二叉搜索樹？
因此，如果我們碰巧從5開始，每 數大於5，則
我們已經有了5，7，9，11，等等。
在這種情況下，它基本上只是一個鏈接 列表，我們需要插入所有
的方式在末端。
所以它的n個大O。
>> 這可能是我們最糟糕的情況 在二叉搜索樹。
很明顯，你永遠不會建造 與5中的一個二分搜索樹
中間，知道5將 是最低的數字。
但它可能是，如果你 從頭開始。
這之前的任何問題，我 移動到另一個問題？
這是一個很好的問題。
我想知道大O -
>> 觀眾：關於搜索什麼 這四個？
>> JASON HIRSCHHORN：當然我們 沒有搜索和排序。
我們做了所有這些算法，對吧。
等待，是測驗1？
是蓋 -
你已經有 問題在測驗1？
二進制搜索的大O運行時， 插入排序，冒泡排序？
>> 觀眾：是啊。
>> JASON HIRSCHHORN：如果您有這樣的 在測驗0的問題，可能你不會
得到測驗1完全相同的問題。
可能是還是不錯的知道這些。
你應該希望知道的GH了。
>> 但其他數運行時間 可能是很好的了解。
未涉及的測驗0的東西。
像所有的這些運算符的 這些抽象數據類型。
>> 好吧，讓我們繼續前進。
這應該是相當快的。
這是一種新的語言，我們沒有 其實在編碼之前。
這是一個問題，問 在PHP代碼。
因此，考慮下面的PHP數組。
寫PHP和/或HTML代碼，使得它 輸出與TFS一個兩列的表格
名稱和房屋。
>> 你從來沒有這樣做過， 此特定問題。
但是，這應該是非常熟悉的 你的問題確實設置7。
所以，我願意打賭你會 問到代碼的東西在PHP中
非常類似於您 在問題沒有設定7。
>> 首先，數組是不是特定的。
什麼數組類型是什麼？
>> 觀眾：會意字。
>> JASON HIRSCHHORN：這是 一個關聯數組。
和什麼之間的區別 關聯數組和對象？
>> 觀眾：一個對象數組的索引 整數和一個關聯數組
是字符串的索引， 或者類似的東西。
>> JASON HIRSCHHORN：這麼一個數組 對象將有指標
整數，但一個對象的字段。
它也有類似的那些字段名稱 名稱，門牌，學生。
你有一個想法？
>> 觀眾：嗯，聯想 數組是PHP的，對不對？
和對象是在JavaScript？
>> JASON HIRSCHHORN：說實話，有沒有 兩者之間真正的區別。
兩者都有字符串作為密鑰，並能 基本上有什麼作為值。
不同的語言呼叫一個 事情關聯數組，
一件事情的對象。
所以說實話，有沒有真正的 差異，但有一些肯定
語法差異 兩者之間。
是啊。
>> 觀眾：那麼，對象也根據編碼 油煙機作為一個哈希表，然後呢？
>> JASON HIRSCHHORN：你這是什麼 意思是，引擎蓋下的編碼？
>> 觀眾：我們被告知，聯想 陣列在技術上是一個
哈希表。
那麼，對象也從技術上 哈希表？
>> JASON HIRSCHHORN：我不會 要回答這個問題。
我會盡快給你這一點。
但我不認為任何一個 那些這樣。
但是，以任何方式，關聯數組和 對象，通常，人們用這些
術語可以互換。
在這種情況下，涼爽的一部分 是您可以使用鍵。
字符串作為鍵，而不是 只是簡單的數字。
>> 所以我一直在談論 這一段時間。
我們希望，有些人有 得到就這樣開始了。
我們將編寫一些PHP和HTML 代碼，這樣，我們得到一個兩列
表與TFS名和房屋。
>> 好吧，我也想一個標題 排此表上。
所以我要得到直 到這一點。
我們要文件，新建， 而且我們要 -
>> 確定。
我該如何開始一個表？
什麼是標籤，邁克爾， 啟動一個表？
>> 對象：表。
>> JASON HIRSCHHORN：表。
如果我打開一個標籤，是什麼 還有什麼我需要什麼？
>> 觀眾：頭部？
或者，我猜，類。
>> JASON HIRSCHHORN：那麼，對不起。
假定我們已經寫 doctab，HTML，所有的東西。
但是，如果我打開這個表標籤，是什麼 還有什麼我需要寫？
為驗證HTML嗎？
>> 觀眾：關閉它。
>> JASON HIRSCHHORN：關閉標籤。
我怎樣寫一個特寫table標籤？
>> 觀眾：點斜線表。
>> JASON HIRSCHHORN：斜線表，太好了。
可能是有道理寫兩個 那些因為一起
你必須做到這一點。
好吧，如果我想要一個標題行，怎麼辦 我寫的標題行的標題？
>> 觀眾：是不是少 超過10小時密切 -
TR，是的。
>> JASON HIRSCHHORN：TR？
>> 觀眾：那麼同樣的事情， 斜線，是啊。
>> JASON HIRSCHHORN：確定， 給我兩列。
>> 觀眾：T D？
>> JASON HIRSCHHORN：確定。
我想兩列。
這是否能給我兩列？
多少列，這是？
之一。
因此，讓我們複製並粘貼此。
>> 因此，實際上，在測驗，所有這些代碼 我們已經寫了這麼遠了
其實給你。
但你應該還 知道怎麼寫呢。
是啊。
>> 觀眾：你的房子 兩者之間。
>> JASON HIRSCHHORN：繁榮。
它應該就在那裡，對不對？
良好的通話。
所以，再一次，所有這些代碼實際上是 給你實際的測驗。
但它的樂趣，寫它，你 應該知道怎麼寫呢。
因此，這就是你需要 開始你的代碼。
什麼是我們需要在這裡寫？
>> 對不起，我需要改變 該文件的名稱。
因此，我們將其保存在一個。的HTML文件， 沒有一個。PHP文件。
這些東西會是什麼呢？ 在一個。PHP文件。
所以我們在一個。的HTML文件。
什麼是第一件事情 我需要寫？
我想提出一些PHP 在HTML代碼。
>> 觀眾：PHP的，像另一個胡蘿蔔 和問號PHP的，對不對？
>> JASON HIRSCHHORN：太好了。
如何才能結束呢？
>> 觀眾：用一個問號。
>> JASON HIRSCHHORN：那太好了。
這就是我需要的，如果我想的第一件事 把一些PHP代碼在這裡。
>> 觀眾：我想一個PHP 文件可以採取的HTML。
>> JASON HIRSCHHORN：是啊。
一，PHP文件可以採取一些 HTML和顯示。
這是我的壞。
我只是試圖模仿 這是什麼的測驗。
>> 好了，對不起你迷惑。
是的，practice.HTML。
現在，我們打算把 一些PHP代碼英寸
這是第一行 PHP代碼我應該怎麼寫？
我要通過這個數組 並使其成為一個表。
是啊。
>> 觀眾：您可以使用 一個的H循環或for循環。
>> JASON HIRSCHHORN：好的，有什麼 你要使用？
>> 觀眾：我會用一個for循環。
對，然後你做的美元符號 i等於0分號美元
簽署小於2我。
然後我分號美元 簽署加我加。
>> JASON HIRSCHHORN：如何做 你知道使用一個2？
>> 觀眾：因為有兩個 在較大的關聯數組
關聯數組。
>> JASON HIRSCHHORN：那麼大的事情的 沒有聯繫的數組。
最重要的事情只是一個正常的數組。
但你說得對，有 2關聯數組
我們的內部更大的數組。
這就是為什麼你使用兩個。
我覺得不舒服假設 他們是2，有啥辦法寫
這個沒有假設他們是2？
>> 觀眾：[聽不清]？
>> JASON HIRSCHHORN：好的，怎麼 你寫的嗎？
>> 觀眾：Foreach回美元符號 TFS或像美元符號TF。
>> JASON HIRSCHHORN：OK，所以對於每個 TFS作為TFS，我想，現在
再次，有我的表。
那麼，誰可以給我 下一行代碼？
>> 觀眾：打印，然後在 報價，支架TR結束
支架，最終報價。
結束括號，分號。
>> JASON HIRSCHHORN：確定， 什麼該怎麼辦呢？
>> 觀眾：它會說，新行。
它會放 標記為新行。
>> JASON HIRSCHHORN：對，這個PHP一樣 我們前面談到的 - 這
PHP將被求值，然後 它會打印出該文件
表絲束，然後該 HTML將被評估。
我們只是複製本 HTML我們不得不在這裡。
是啊。
>> 觀眾：[聽不清]？
>> JASON HIRSCHHORN：對不起？
就是這裡。
2012年秋季。
不要看答案， 讓我們來解決它在一起。
所以，我們打印的表行。
所以你可能在 擺動的東西。
什麼是下一行 代碼，我們需要寫？
阿薩姆，給我的下一行代碼。
>> 觀眾：你需要的TF的名字。
TF開括號引號 名左右方括號。
>> JASON HIRSCHHORN：給我他們的名字。
>> 觀眾：你需要打印。
>> [插VOICES]
>> JASON HIRSCHHORN：OK， 我怎麼打印呢？
>> [插VOICES]
>> JASON HIRSCHHORN：我失踪 現在的東西。
我在想什麼？
>> 觀眾：你需要一個美元符號。
>> JASON HIRSCHHORN：什麼 什麼我失踪？
所有我們到目前為止印刷是TR。
>> 觀眾：後關閉TR。
>> JASON HIRSCHHORN：因此，我們需要 後關閉TR。
誰看見我們錯過了什麼 第16行？
是的，安娜。
>> 觀眾：你需要打開 一個TD和大括號。
>> JASON HIRSCHHORN：在哪裡 我們把花括號？
>> 觀眾：圍繞TF名字。
>> JASON HIRSCHHORN：喜歡這個？
>> 觀眾：是啊。
然後關閉TD。
>> JASON HIRSCHHORN：像這樣？
>> 觀眾：你需要雙引號 標記旁邊的大括號？
>> JASON HIRSCHHORN：就在這裡？
不，你不知道。
所以這是完全正確的。
是啊。
>> 觀眾：所以這之間的區別 和用點encatenating是，如果
你用點，你必須有 雙引號，那麼一個點，
然後點 -
>> JASON HIRSCHHORN：正確。
所以你說有一個最終的 的方式寫這這樣的。
什麼是連接運算符 在JavaScript中？
>> 觀眾：加號。
你忘了把 大括號後面。
>> JASON HIRSCHHORN：太好了。
並且還有一系 代碼丟失。
誰可以給我的最後一行 的代碼，我們就錯過？
>> 觀眾：剛才完全一樣的東西， 剛剛與房子，而不是名稱。
大
>> JASON HIRSCHHORN：太好了。
和你的語法是完全正確的 在獲得一個關聯數組的東西。
因此，在實際測驗，你是 實際上放棄了，直到這裡。
所以這段代碼是給你的。
你不得不寫有這些 四行並記住
關閉表標籤。
你這傢伙居然沒 一切和更多。
是啊。
>> 觀眾：所以這將是功能 如果你只是有相同的，所有的
一個大的打印通話，對吧？
然後就連接在一起 其上，等等？
>> JASON HIRSCHHORN：像這樣？
>> 觀眾：是啊。
它只是不會好看，如果你是 看著它，當你檢查
在您的網站元素，對不對？
>> JASON HIRSCHHORN：我同意。
如果我裝了這個網頁，我會成為 能夠看到這個PHP代碼，永遠不會消失？
>> 觀眾：號
>> JASON HIRSCHHORN：號
而實際上，我不會。
>> 觀眾：這是不是HTML，對不對？
所以，你也許可以 -
>> JASON HIRSCHHORN：所以這個PHP將 評估服務器端。
PHP總是被判斷服務器端，所以 你永遠能看到PHP代碼。
>> 觀眾：但是你能夠 看到打印的結果。
>> JASON HIRSCHHORN：對。
而且說實話可能不 把它全部上線。
它可能很好地格式化你， 或者它可能把它放在同一行。
不清楚。
但是，是的，好一點。
>> 觀眾：怎麼會有的 沒有文字的高亮
任何PHP的命令？
因為我記得看到這一點。
>> JASON HIRSCHHORN：因為它是一個 。html文件在這裡在頂部。
你去那裡。
>> 觀眾：如果我們做了初步的方法 用for循環，正確的，如果我們
要訪問TFS，我們會 做TFS支架0支架，然後
[聽不清]？
>> JASON HIRSCHHORN：你會 -
所以你說的for循環，你 會做的美元符號TFS支架1
或者我，對吧。
或美元符號我關閉支架 然後括號
雙引號，是的。
>> 好的，優秀的。
我們有一個更快的之一。
七分鐘，所以我想 走在這一個。
這是另一個例子。
我們現在是一個完全另一種語言。
>> 我們有一些HTML代碼。
這是在屏幕上種小，但 我希望你仔細看看它真的
很快，有人可以告訴我， 如果我要載入這個網頁，
我會看到什麼？
詳細說明一切 此網頁。
諾亞？
那麼我看到了什麼？
>> 觀眾：在代碼的前端 谷歌有感覺的文字和
提交按鈕。
>> JASON HIRSCHHORN：什麼 將按鈕說呢？
>> 觀眾：提交。
哦，搜索。
對不起。
>> JASON HIRSCHHORN：它會說搜索。
請記住，名稱。
我們使用什麼名稱？
這個name屬性，有什麼 用的？
>> [插VOICES]
>> 觀眾：這就是它的名字 因為當它被點擊？
>> JASON HIRSCHHORN：這可能是。
但是，我們通常看到的 - 為什麼 是我們給這個名稱的隊列？
為什麼我們看到了嗎？
是啊。
>> 觀眾：那豈不是成了指數 超級全局變量？
>> JASON HIRSCHHORN：是啊，一般當 這種形式會提交，然後在那裡
將這個提交給？
哪一頁？
諾亞，哪一頁將這個提交給？
>> 觀眾：我不知道。
>> JASON HIRSCHHORN：在哪裡 可能我們能找到它嗎？
你在哪裡找到什麼 頁面提交給？
哪一行代碼？
>> 觀眾：表單操作。
>> JASON HIRSCHHORN：沒錯。
行動。
所以它提交到搜索頁面。
反斜杠搜索。
所以這是完全正確的。
用什麼方法？
>> 觀眾：獲取。
>> JASON HIRSCHHORN：獲取。
沒錯。
所以我們閱讀這一點。
這將是一種形式。
你說得對。
兩件事情的形式，的標題 頁面和頂部將是谷歌。
>> 因此，這裡有兩個問題，你應該 能回答這個頁面。
如果此HTML住在這個網站， 用戶輸入錯誤到這個文本
場就在這裡，什麼URL將 用戶發現自己因
提交表單？
>> 因此，我們有這個權利在這裡。
我要回去 此頁，雖然。
我會寫了第一部分。
大家可以看到在這裡？
好了，馬里奧，你以為你知道嗎？
哪一頁？
>> 觀眾：反斜杠搜索。
>> JASON HIRSCHHORN：我要去 搬到這裡了。
OK，反斜線搜索問題 馬克Q等於錯誤。
任何人有不同的建議嗎？
是啊。
>> 那麼，如何才能得到這個？
好了，我們以前見過這個。
而你想出了這點。
你說的沒錯，諾亞，該 行動告訴我們什麼
頁面我們​​要。
>> 我們也知道用什麼方法。
我們正在做的get。
和GET和POST的區別 是，獲得顯示在URL
及後則沒有。
所以，如果我在寫帖子就在那裡 方法，會有什麼不同？
>> 觀眾：它只是 是斜線搜索。
>> JASON HIRSCHHORN：它會 剛剛被削減搜索。
沒有什麼比在這裡會發生什麼。
但因為它是一個得到，網址 顯示如下。
首先我們看到了一個問號和 我們看到的名稱和值。
說有另外一個文本字段，並 我給它r的名字，我輸入一個
值，毛蟲。
什麼現在這個樣子？
我還有一個文本字段，我給一個 r和毛毛蟲的值的名稱。
>> 觀眾：酒吧後你就會有 ＆符號毛蟲。
>> JASON HIRSCHHORN：這是 沒有連字符。
>> 觀眾：或者只是什麼 在和符號。
>> JASON HIRSCHHORN：是啊，沒有。
你是對的，我錯了。
這就像一克。
>> 對象：卡特彼勒。
r等於毛毛蟲，對不起。
>> JASON HIRSCHHORN：有 在那裡沒有R？
>> 觀眾：沒有，沒有。
>> JASON HIRSCHHORN：我們將討論 關於下課。
這是完全正確的。
所以，是正確的。
然後你可以有很多這樣的， 他們將全部串連
連同這一點，。
所以這是完全正確的。
>> 還有一個問題。
畫出此HTML的DOM，開始 與文件。
我們可以這樣做，在兩分鐘。
我們將在這裡做了。
我將回到這個網頁。
OK，我們開始文檔。
>> 下一步是什麼？
所以，當你通讀 -
>> 觀眾：HTML。
>> JASON HIRSCHHORN：HTML是下一個。
我們將通過標籤去標記。
什麼是HTML呢？
>> 觀眾：頭。
>> JASON HIRSCHHORN：頭。
頭後有什麼？
>> 觀眾：標題。
>> JASON HIRSCHHORN：標題。
和標題有谷歌的價值， 但我不會去
寫在現在。
好了，哪裡的身體去了？
>> 觀眾：還有脫落的HTML。
>> JASON HIRSCHHORN：沒錯。
機身自帶了這裡。
難道大家都明白為什麼 是這樣的話？
你應該能夠計算 這一點，也一樣，即使我沒有
這個漂亮的縮進。
>> 排序的縮進給它拿走， 但你可以看到，頭部標記有
被關閉，這意味著我們可能 不能下去在這裡。
我們需要回到多達什麼 是頭向右​​前
標籤，或未滿。
我們甚至用頭標記。
>> 並在進入身體的形式。
下形式，有兩個輸入端。
確定。
這就是我的一切。
測驗1是明天。
我很高興為你們。
這將是一個爆炸。
>> 如果你有 -
>> 觀眾：[掌聲]
>> JASON HIRSCHHORN：哦停下來，停下來。
不過沒有關係，我在開玩笑。
如果您有任何疑問，右 節後，我在外面。
如果您有任何疑問，今晚， 隨時來電，電子郵件，gchat，
信鴿我。
祝你好運明天。
有一個美好的感恩節假期， 如果我沒有看到你在那之前。
我會在感恩節之後見到你 對我們的最終週二
部分黨永遠。
>> 觀眾：[聽不清]。
>> JASON HIRSCHHORN：太好了。
好吧，我看下你們 一周或兩週。
而明天好運。