1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [音樂播放] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 漢娜:嗨,大家好。 5 00:00:12,700 --> 00:00:15,866 感謝你們這麼多出來 在噁心的天氣測驗1 6 00:00:15,866 --> 00:00:16,910 審查會議。 7 00:00:16,910 --> 00:00:20,020 正如你們知道,問答 一個是本週三。 8 00:00:20,020 --> 00:00:22,209 因此,我們打算去 通過一堆主題。 9 00:00:22,209 --> 00:00:24,000 DAVIN:嘿,我可以說 一些真正的快? 10 00:00:24,000 --> 00:00:25,215 漢娜:是啊,達文的打算 說些什麼真正的快。 11 00:00:25,215 --> 00:00:25,780 DAVIN:對不起。 12 00:00:25,780 --> 00:00:29,490 只是真正的快,如果你有任何問題 關於測驗,你可以去網上。 13 00:00:29,490 --> 00:00:32,420 進入2014年測驗之一,對測驗。 14 00:00:32,420 --> 00:00:34,680 它有大約物流 去哪裡,什麼時候去。 15 00:00:34,680 --> 00:00:38,100 如果你同時入選,我們 將有一個妝測驗5:30。 16 00:00:38,100 --> 00:00:40,350 或者,如果你送我一個問題, 你有一些其他的問題。 17 00:00:40,350 --> 00:00:42,640 但5點半是化妝 時間週三。 18 00:00:42,640 --> 00:00:44,540 但是,如果您有任何疑問, 一般問題, 19 00:00:44,540 --> 00:00:45,748 網上有所有的物流。 20 00:00:45,748 --> 00:00:47,690 因此,檢查那裡第一次。 21 00:00:47,690 --> 00:00:49,070 >> 漢娜:真棒。 22 00:00:49,070 --> 00:00:53,030 因此,這裡的主題的大名單 那我們要通過今天。 23 00:00:53,030 --> 00:00:57,390 我要說的是,所有的C 東西,這是第一列。 24 00:00:57,390 --> 00:01:00,710 所以了C的東西,我們 競猜零後覆蓋。 25 00:01:00,710 --> 00:01:05,459 用鍊錶開始, 其中包括三分球。 26 00:01:05,459 --> 00:01:07,668 >> 好吧,讓我們看到了這 在過去的審查會議, 27 00:01:07,668 --> 00:01:10,000 所以我打算去通過 這是一個有點快。 28 00:01:10,000 --> 00:01:13,500 只是舉手,如果你要我 減慢或進一步解決一些事情。 29 00:01:13,500 --> 00:01:17,150 但是我們用鍊錶,因為 我們開始用C數組。 30 00:01:17,150 --> 00:01:20,920 和數組是偉大的,但 問題是它們具有固定的大小。 31 00:01:20,920 --> 00:01:24,925 鍊錶允許我們創建 動態調整數據結構。 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> 我們有我們的基本操作, 插入,刪除和搜索。 34 00:01:32,320 --> 00:01:36,780 我們可以做的插入 最壞的情況下固定時間 35 00:01:36,780 --> 00:01:39,140 如果我們只是把它在開始的時候。 36 00:01:39,140 --> 00:01:45,220 刪除和搜索,最壞 案例大哦n次。 37 00:01:45,220 --> 00:01:47,140 如此反复,只是為了翻轉 通過這些照片, 38 00:01:47,140 --> 00:01:50,860 我知道,我們看到這最後的時間,但我們 要保持我們的鍊錶軌道 39 00:01:50,860 --> 00:01:53,440 通過保持軌道 頭我們鍊錶。 40 00:01:53,440 --> 00:01:55,580 因為我們知道, 我們的節點中的每一個 41 00:01:55,580 --> 00:01:58,610 只是要指向 在我們的鍊錶的下一個節點。 42 00:01:58,610 --> 00:02:00,460 >> 所以這是我們如何跟踪。 43 00:02:00,460 --> 00:02:02,910 儘管這些不是 連續件的存儲器, 44 00:02:02,910 --> 00:02:07,410 我們可以隨便找他們 以下不同的箭頭。 45 00:02:07,410 --> 00:02:09,800 下面是我們的結構 為一個鏈接列表節點。 46 00:02:09,800 --> 00:02:11,440 我們認為這最後一次。 47 00:02:11,440 --> 00:02:13,080 我們有我們的結構節點。 48 00:02:13,080 --> 00:02:14,340 它有兩個屬性。 49 00:02:14,340 --> 00:02:17,020 第一,實際 價值,我們要存儲。 50 00:02:17,020 --> 00:02:18,290 在這種情況下,它是一個整數。 51 00:02:18,290 --> 00:02:21,100 這可能是一個字符串,它可以 是一個char,任何你想要的。 52 00:02:21,100 --> 00:02:24,710 然後,我們必須保持軌道 在我們的鍊錶的下一個節點。 53 00:02:24,710 --> 00:02:29,797 所以這將是一個 指針到下一個節點。 54 00:02:29,797 --> 00:02:31,880 如果你只是在做 搜索,就像我之前說的, 55 00:02:31,880 --> 00:02:34,900 你必須遵循你的箭下。 56 00:02:34,900 --> 00:02:40,720 插入,你會跟踪 在哪裡你的列表的其餘部分。 57 00:02:40,720 --> 00:02:44,150 並要重定向頭 指向我們的新元素, 58 00:02:44,150 --> 00:02:46,640 在這種情況下是1, 再一個指向 59 00:02:46,640 --> 00:02:49,480 向鍊錶的剩餘部分。 60 00:02:49,480 --> 00:02:52,996 所以,再一次,我知道這是一個小 從測驗零重複位。 61 00:02:52,996 --> 00:02:55,370 因此,我們必須非常小心, 關於順序中,我們 62 00:02:55,370 --> 00:03:00,390 做這些讓勾縫我們不這樣做 失去跟踪列表的背面。 63 00:03:00,390 --> 00:03:04,122 OK,有任何問題 只是單向鍊錶? 64 00:03:04,122 --> 00:03:06,060 真棒,OK,涼。 65 00:03:06,060 --> 00:03:09,410 >> 所以,現在,我們要去到的東西 只是稍微複雜一些, 66 00:03:09,410 --> 00:03:10,920 雙向鍊錶。 67 00:03:10,920 --> 00:03:13,680 因此,除了保持 軌道的下一個節點的, 68 00:03:13,680 --> 00:03:16,220 我們也想跟踪 以前的節點。 69 00:03:16,220 --> 00:03:19,580 這允許我們,如果我們 在我們的鏈接列表中的某個時刻, 70 00:03:19,580 --> 00:03:23,110 不僅向前去,但 同時遍歷倒退。 71 00:03:23,110 --> 00:03:25,220 因為正如我們所看到的 一個單向鍊錶, 72 00:03:25,220 --> 00:03:27,980 如果我們在一些節點,並 突然之間,我們決定, 73 00:03:27,980 --> 00:03:30,160 其實,我想去 我之前的節點正確, 74 00:03:30,160 --> 00:03:32,034 你必須全力以赴 回來的路上頭部 75 00:03:32,034 --> 00:03:35,710 直到你找到遍歷 你要找的節點。 76 00:03:35,710 --> 00:03:37,680 >> 因此,這使得事情 稍微容易一些,因為我們是 77 00:03:37,680 --> 00:03:39,670 試圖迭代 通過我們的鏈接列表。 78 00:03:39,670 --> 00:03:47,870 但是,它需要我們去跟踪一個 更多的指針,因此多了一個節點明星。 79 00:03:47,870 --> 00:03:50,830 好了,所以這裡出現了有趣的部分。 80 00:03:50,830 --> 00:03:55,600 我們要貫徹實踐 取消對雙向鍊錶。 81 00:03:55,600 --> 00:03:58,660 因此,這是值得的 完全公平的遊戲測驗。 82 00:03:58,660 --> 00:04:00,750 它顯示了在過去的測驗。 83 00:04:00,750 --> 00:04:04,220 所以肯定準備 編碼在C.一點點 84 00:04:04,220 --> 00:04:07,900 不要忘了,所有的 這個有趣的PHP和JavaScript, 85 00:04:07,900 --> 00:04:10,560 我們還是要記住 做C.所以刷上了 86 00:04:10,560 --> 00:04:12,146 如果你覺得生疏。 87 00:04:12,146 --> 00:04:14,580 >> 好吧,讓我們來看看,如果我們能做到這一點。 88 00:04:14,580 --> 00:04:16,312 OK,涼。 89 00:04:16,312 --> 00:04:18,600 所以我們要嘗試 編輯權在了這裡, 90 00:04:18,600 --> 00:04:20,707 並希望這種按計劃進行。 91 00:04:20,707 --> 00:04:23,915 好吧,有沒有人想給我 建議來我應該怎麼開始呢? 92 00:04:23,915 --> 00:04:27,030 我是唯一的假設 決策是,我已經 93 00:04:27,030 --> 00:04:30,180 已經定義了一個結構,該 1我發現最後一頁上, 94 00:04:30,180 --> 00:04:31,420 在最後一張幻燈片。 95 00:04:31,420 --> 00:04:39,250 和我存儲我的鏈接頭 列表中的一些所謂的指針列表。 96 00:04:39,250 --> 00:04:42,190 有誰想要讓我開始? 97 00:04:42,190 --> 00:04:45,410 >> 聽眾:您可以創建一個新的 節點通過列表打電話? 98 00:04:45,410 --> 00:04:46,410 >> 漢娜:真棒,所以 我們要創建 99 00:04:46,410 --> 00:04:47,951 一個新的節點抓取整個列表。 100 00:04:47,951 --> 00:04:48,570 我喜歡。 101 00:04:48,570 --> 00:04:50,799 我只是把它的指針,如果這是OK。 102 00:04:50,799 --> 00:04:52,340 而應該在哪裡它最初開始? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> 聽眾:大概在 列表的頭部。 105 00:04:59,840 --> 00:05:00,590 漢娜:美麗。 106 00:05:00,590 --> 00:05:03,670 我們要開始處的頭部,其 我說的是要被存儲在列表中。 107 00:05:03,670 --> 00:05:04,170 真棒。 108 00:05:04,170 --> 00:05:05,220 到目前為止,一切都很好。 109 00:05:05,220 --> 00:05:08,260 而現在,我們的目標是 遍歷該列表 110 00:05:08,260 --> 00:05:12,870 直到我們找到與節點 我們要刪除值n。 111 00:05:12,870 --> 00:05:13,540 好不好? 112 00:05:13,540 --> 00:05:15,910 >> 所以,現在是部分地方 我們要遍歷。 113 00:05:15,910 --> 00:05:19,488 任何人都可以提出一個 方法來遍歷? 114 00:05:19,488 --> 00:05:20,979 >> 聽眾:一個循環。 115 00:05:20,979 --> 00:05:21,840 >> 漢娜:一個循環。 116 00:05:21,840 --> 00:05:22,620 我喜歡它。 117 00:05:22,620 --> 00:05:25,550 具體來說,我們可以嘗試while循環。 118 00:05:25,550 --> 00:05:30,919 OK,我們知道我們已經達到 我們什麼時候列表的末尾? 119 00:05:30,919 --> 00:05:32,210 聽眾:當指針是空的。 120 00:05:32,210 --> 00:05:33,418 漢娜:當指針是空的。 121 00:05:33,418 --> 00:05:34,320 漂亮,我很喜歡。 122 00:05:34,320 --> 00:05:35,110 OK,涼。 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 很抱歉,如果我的邊界是梅開二度 種脫落屏幕。 125 00:05:43,190 --> 00:05:44,090 我們把它帶回。 126 00:05:44,090 --> 00:05:46,610 OK,涼。 127 00:05:46,610 --> 00:05:48,690 接下來會發生什麼? 128 00:05:48,690 --> 00:05:51,950 >> 所以我們知道我們想要刪除 有n值的節點。 129 00:05:51,950 --> 00:05:56,340 因此,讓我們找到的情況下 實際上,我們發現我們的節點。 130 00:05:56,340 --> 00:05:57,840 所以,我怎麼會檢查? 131 00:05:57,840 --> 00:06:02,210 我只是說,如果指針,然後如果我 想要得到的價值了指針, 132 00:06:02,210 --> 00:06:08,940 我只是做箭頭N, 等於n,則參數 133 00:06:08,940 --> 00:06:14,490 我們給了這個功能, 我們要真正刪除節點。 134 00:06:14,490 --> 00:06:17,090 直到這裡有什麼問題嗎? 135 00:06:17,090 --> 00:06:18,360 行。 136 00:06:18,360 --> 00:06:24,140 好了,現在讓我們來畫一個快速的圖片 在黑板上以可視化這一點。 137 00:06:24,140 --> 00:06:30,710 >> 因此,讓我們說有我們可愛的節點。 138 00:06:30,710 --> 00:06:34,480 它有一個價值,我只想說4。 139 00:06:34,480 --> 00:06:40,340 它指向下一個 節點在我們的鏈接列表。 140 00:06:40,340 --> 00:06:42,220 並沒有什麼之前。 141 00:06:42,220 --> 00:06:45,800 因此,我們有我們以前的 指著什麼。 142 00:06:45,800 --> 00:06:48,110 在這種情況下,我們點的倒退。 143 00:06:48,110 --> 00:06:50,960 OK,只是設置了我 鏈接列表在這裡。 144 00:06:50,960 --> 00:06:53,630 我們有一個指向列表 這種結構開始。 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 我會畫多了一個用於 為了完整性。 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 好不好。 149 00:07:06,117 --> 00:07:07,480 我會點這個前進。 150 00:07:07,480 --> 00:07:09,550 我就點了一回。 151 00:07:09,550 --> 00:07:10,360 哎呀,對不起。 152 00:07:10,360 --> 00:07:12,710 是啊,有這個倒退。 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 再次這樣做。 155 00:07:16,967 --> 00:07:18,330 OK,我們走吧。 156 00:07:18,330 --> 00:07:19,910 好了,知道了。 157 00:07:19,910 --> 00:07:21,780 OK,這裡是我們的圖片。 158 00:07:21,780 --> 00:07:24,860 >> OK,所以我們要考慮兩種情況。 159 00:07:24,860 --> 00:07:27,330 第一種情況是,如果 節點,我們要刪除 160 00:07:27,330 --> 00:07:29,420 是在我們列表的最開始。 161 00:07:29,420 --> 00:07:34,070 然後,第二個的情況下,我們希望 要考慮的是,如果是在其他地方。 162 00:07:34,070 --> 00:07:37,660 據我所知,這是一個完全 我所有的擦除凌亂繪圖, 163 00:07:37,660 --> 00:07:40,400 但希望我們會盡力 明確這一點與一些代碼。 164 00:07:40,400 --> 00:07:45,450 >> OK,讓我們覆蓋的情況下 在這裡我們找到了我們的節點, 165 00:07:45,450 --> 00:07:48,900 和它在最 開始我們的鍊錶。 166 00:07:48,900 --> 00:07:50,810 誰能給我一個 這裡的建議是什麼 167 00:07:50,810 --> 00:07:54,684 我應該做的實際刪除我們的節點? 168 00:07:54,684 --> 00:07:55,970 這是一個有點棘手。 169 00:07:55,970 --> 00:07:56,470 好不好? 170 00:07:56,470 --> 00:07:59,628 >> 聽眾:你必須採取的 節點將前 171 00:07:59,628 --> 00:08:01,794 並使其指向 1,這將是後, 172 00:08:01,794 --> 00:08:03,004 並採取節點 會後,使 173 00:08:03,004 --> 00:08:04,554 它指向之前的節點。 174 00:08:04,554 --> 00:08:05,220 漢娜:沒錯。 175 00:08:05,220 --> 00:08:10,640 行,因此這種情況 where--我們有兩種情況。 176 00:08:10,640 --> 00:08:14,100 我們的情況下 我們正在尋找的節點 177 00:08:14,100 --> 00:08:18,270 是列表的前面。 178 00:08:18,270 --> 00:08:23,110 確定,然後的情況下,你 描述否則,對不對? 179 00:08:23,110 --> 00:08:24,500 它的其他地方在列表中。 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 所以,你說,我們需要 看看以前的節點, 182 00:08:32,840 --> 00:08:36,500 和使前一個節點 指向下一個節點。 183 00:08:36,500 --> 00:08:40,510 因此,讓我們說我們是 試圖拿出5 184 00:08:40,510 --> 00:08:43,059 我在這裡很凌亂繪圖。 185 00:08:43,059 --> 00:08:47,530 我們要確保 4現在指向6。 186 00:08:47,530 --> 00:08:49,590 四的下一個點六。 187 00:08:49,590 --> 00:08:52,150 六以前分四個。 188 00:08:52,150 --> 00:08:53,960 這就是我們的目標在這裡,對不對? 189 00:08:53,960 --> 00:08:56,150 這是我想你 剛才說在那邊。 190 00:08:56,150 --> 00:08:58,450 >> 好了,讓我們的第一件。 191 00:08:58,450 --> 00:09:02,300 讓我們做的有 以前的指針以前。 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 於是四的下一個應該指向什麼? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 恰好,在這種情況下,6。 196 00:09:14,900 --> 00:09:18,470 所以,我們應該說的指針,接下來。 197 00:09:18,470 --> 00:09:20,600 好不好? 198 00:09:20,600 --> 00:09:21,150 行。 199 00:09:21,150 --> 00:09:24,870 因此,讓我們擺脫這種醜陋的畫面 並嘗試繪製一個稍微更好之一。 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 在這裡,我們有我們的表頭。 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 和指向在第一個節點 我們的鍊錶,這是我們說的是四人。 204 00:09:42,740 --> 00:09:45,620 這是我們的第二個節點,5。 205 00:09:45,620 --> 00:09:47,307 而我們的第三個節點,6。 206 00:09:47,307 --> 00:09:50,265 只是想畫完全相同的 圖片,只是多了幾分乾淨。 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK,所以4的下 原本分五。 209 00:09:56,280 --> 00:09:58,620 五年的下一個點六。 210 00:09:58,620 --> 00:10:00,170 六以前點五。 211 00:10:00,170 --> 00:10:02,470 五以前分四個。 212 00:10:02,470 --> 00:10:03,360 這麼多漂亮! 213 00:10:03,360 --> 00:10:04,530 OK,涼。 214 00:10:04,530 --> 00:10:07,770 >> 所以,現在,我們所做的只是 在這裡,這行代碼, 215 00:10:07,770 --> 00:10:12,680 它說,以前的指針 接下來,有什麼意思呢? 216 00:10:12,680 --> 00:10:17,540 這意味著,如果我們正在尋找 5,去上一個節點, 217 00:10:17,540 --> 00:10:21,970 和它的下一現在應該 點五的下一個。 218 00:10:21,970 --> 00:10:27,840 所以基本上,這是什麼做的 被認為是消除此箭頭 219 00:10:27,840 --> 00:10:29,640 並使其直接跳到了五人。 220 00:10:29,640 --> 00:10:31,360 清楚了嗎? 221 00:10:31,360 --> 00:10:33,200 我知道這可能是一個有點粗略。 222 00:10:33,200 --> 00:10:34,480 我看有些頭點點頭。 223 00:10:34,480 --> 00:10:35,390 非常好。 224 00:10:35,390 --> 00:10:36,670 OK,涼。 225 00:10:36,670 --> 00:10:39,590 現在,有什麼下一步? 226 00:10:39,590 --> 00:10:42,060 >> 我重新下一個。 227 00:10:42,060 --> 00:10:45,297 現在,這是其它箭頭 我需要改變嗎? 228 00:10:45,297 --> 00:10:46,130 這一次在這裡。 229 00:10:46,130 --> 00:10:47,560 六以前。 230 00:10:47,560 --> 00:10:50,620 我們不希望6以前 指向5了。 231 00:10:50,620 --> 00:10:54,580 我們希望它指向4。 232 00:10:54,580 --> 00:10:56,190 這是否圖片有意義嗎? 233 00:10:56,190 --> 00:10:58,370 所以,現在我們實際上可以採取五項出來。 234 00:10:58,370 --> 00:10:59,370 因此,讓我們的那件。 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 我應該在我怎麼辦 重置6以前的四? 237 00:11:11,180 --> 00:11:14,360 任何想法呢? 238 00:11:14,360 --> 00:11:17,369 >> 聽眾:釋放之間的節點 他們將其設置為null? 239 00:11:17,369 --> 00:11:17,910 漢娜:酷。 240 00:11:17,910 --> 00:11:21,100 肯定地說,我們的最終目標是 將要釋放的節點。 241 00:11:21,100 --> 00:11:22,490 因此,我們可以做到這一點就在這裡。 242 00:11:22,490 --> 00:11:23,540 免費指針。 243 00:11:23,540 --> 00:11:24,810 當然可以。 244 00:11:24,810 --> 00:11:29,160 但即使在此之前, 讓我們just--我們的目標權 245 00:11:29,160 --> 00:11:38,730 這裡是設置指針下一 以前等於先前的指針。 246 00:11:38,730 --> 00:11:40,760 我知道這是得到掩蓋。 247 00:11:40,760 --> 00:11:45,440 OK,讓我們take--涼。 248 00:11:45,440 --> 00:11:46,990 每個人都可以看到這條底線? 249 00:11:46,990 --> 00:11:47,840 或者是它的超微型? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> 所以我們執行前 這條線在這裡,我們要 252 00:11:54,300 --> 00:11:58,375 以確保 接下來的指針不為空。 253 00:11:58,375 --> 00:12:00,500 因為如果指針接下來就是 空,什麼樣的錯誤 254 00:12:00,500 --> 00:12:02,727 我會當我嘗試 引用一個空指針? 255 00:12:02,727 --> 00:12:03,560 聽眾:賽格故障。 256 00:12:03,560 --> 00:12:05,660 漢娜:一個賽格故障,美不勝收。 257 00:12:05,660 --> 00:12:09,690 好了,如果這不是 空,那麼我們就可以重新設置。 258 00:12:09,690 --> 00:12:14,420 我們再有六點四。 259 00:12:14,420 --> 00:12:17,440 問題,直到這一點? 260 00:12:17,440 --> 00:12:17,940 是嗎? 261 00:12:17,940 --> 00:12:19,814 >> 聽眾:在你的第一個 if語句,沒有你 262 00:12:19,814 --> 00:12:23,817 意思是有箭頭 接下來,或[聽不清]? 263 00:12:23,817 --> 00:12:25,150 漢娜:我的意思是指針箭頭N。 264 00:12:25,150 --> 00:12:30,270 所以基本上,我想要做的 是說,那我當前節點 265 00:12:30,270 --> 00:12:34,100 迭代,當前節點是 我看,我存儲的指針。 266 00:12:34,100 --> 00:12:37,630 我想知道指針的 值,在這種情況下是n。 267 00:12:37,630 --> 00:12:39,500 我希望看到的,是 我期待節點 268 00:12:39,500 --> 00:12:42,790 為節點我的目標刪除? 269 00:12:42,790 --> 00:12:47,657 所以這就是為什麼我們在這裡指針n。 270 00:12:47,657 --> 00:12:49,857 >> 聽眾:所以箭頭會 到n,您所設置的值 271 00:12:49,857 --> 00:12:52,058 並將其存儲在名為N的節點? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> 漢娜:所以這就像如果我 經歷這個鍊錶 274 00:12:58,820 --> 00:13:00,310 並指著五。 275 00:13:00,310 --> 00:13:03,600 如果我想要得到的值,如果 我想要得到這個數字,5, 276 00:13:03,600 --> 00:13:06,400 我要做的指針箭頭N。 277 00:13:06,400 --> 00:13:06,900 很酷吧? 278 00:13:06,900 --> 00:13:07,900 是啊。 279 00:13:07,900 --> 00:13:11,200 >> 聽眾:是N變量的名字嗎? 280 00:13:11,200 --> 00:13:11,700 漢娜:是的。 281 00:13:11,700 --> 00:13:14,870 因此,如果我們翻回1 滑動,n是名稱 282 00:13:14,870 --> 00:13:18,660 內側的值的 節點在我們的鏈接列表。 283 00:13:18,660 --> 00:13:21,510 我知道它可以得到一點點 有點混亂,因為我們還 284 00:13:21,510 --> 00:13:24,680 呼叫的事 我們要不讓N。 285 00:13:24,680 --> 00:13:26,717 所以這就是那 一條線的來源。 286 00:13:26,717 --> 00:13:27,671 是嗎? 287 00:13:27,671 --> 00:13:31,010 >> 聽眾:你有什麼 [聽不清]它們是如何工作的? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 指針[聽不清]? 290 00:13:35,780 --> 00:13:37,520 >> 漢娜:當然。 291 00:13:37,520 --> 00:13:40,027 你說about--哪一行? 292 00:13:40,027 --> 00:13:41,526 聽眾:最後一行[聽不清]。 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> 漢娜:當然,OK。 295 00:13:45,250 --> 00:13:48,540 因此,讓我們看一下畫面 為了試圖解釋這一點。 296 00:13:48,540 --> 00:13:51,030 對不起,對於 攝像頭,問題是 297 00:13:51,030 --> 00:13:54,580 我們可以解釋指針 箭頭指針旁邊以前。 298 00:13:54,580 --> 00:14:01,510 OK,讓我們說,我們正處在5 我們的目標是刪除5。 299 00:14:01,510 --> 00:14:07,240 所以指針下一個,其中這些 三個節點這是否給我們? 300 00:14:07,240 --> 00:14:10,840 這給我們帶來了第六節點,對不對? 301 00:14:10,840 --> 00:14:16,490 >> 好了,現在我們要求 六個以前。 302 00:14:16,490 --> 00:14:17,060 好不好? 303 00:14:17,060 --> 00:14:20,210 我們正在重新此 等於4, 304 00:14:20,210 --> 00:14:23,214 這正好是5以前。 305 00:14:23,214 --> 00:14:25,180 我知道,這是超 難以跟踪。 306 00:14:25,180 --> 00:14:29,286 我真的建議你畫的圖片 如果你得到像這樣的問題。 307 00:14:29,286 --> 00:14:30,242 是嗎? 308 00:14:30,242 --> 00:14:32,617 >> 聽眾:是的原因, 我們沒有一個[聽不清]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> 漢娜:沒錯。 311 00:14:38,570 --> 00:14:44,800 所以現在的問題是,為什麼 我們並不需要檢查嗎? 312 00:14:44,800 --> 00:14:48,160 我們為什麼不需要檢查 以前的指針不等於空? 313 00:14:48,160 --> 00:14:50,070 它是因為我們已經 已經分離出來 314 00:14:50,070 --> 00:14:52,490 如果這時指針的 在開始的時候。 315 00:14:52,490 --> 00:14:54,060 非常好的問題。 316 00:14:54,060 --> 00:14:56,880 別的對此怎麼看? 317 00:14:56,880 --> 00:14:57,380 OK,涼。 318 00:14:57,380 --> 00:14:58,360 因此,讓我們完成它。 319 00:14:58,360 --> 00:14:59,890 我們快到了。 320 00:14:59,890 --> 00:15:01,310 >> 因此它是在頭部,如果? 321 00:15:01,310 --> 00:15:03,360 相反,如果什麼 試圖刪除5, 322 00:15:03,360 --> 00:15:06,240 我們其實是想刪除4? 323 00:15:06,240 --> 00:15:07,270 什麼我有什麼關係? 324 00:15:07,270 --> 00:15:09,610 好吧,我想重置我的頭是什麼? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 喊出來? 327 00:15:15,585 --> 00:15:16,710 聽眾:後的之一。 328 00:15:16,710 --> 00:15:17,460 漢娜:美麗。 329 00:15:17,460 --> 00:15:26,430 OK,所以我們要列出來指向 到任何我們的指針下一個節點。 330 00:15:26,430 --> 00:15:29,040 好。 331 00:15:29,040 --> 00:15:30,810 而只是為了完整的 起見,我們將 332 00:15:30,810 --> 00:15:35,590 想只要檢查作為我們的名單 是不是空的,只要我們的名單是不是 333 00:15:35,590 --> 00:15:42,730 空的,那麼我們要設置 我們以前等於空。 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 問題這麼遠嗎? 336 00:15:50,230 --> 00:15:53,205 一步之遙from--? 337 00:15:53,205 --> 00:15:55,530 >> 聽眾:這將是如果 列表不等於null? 338 00:15:55,530 --> 00:15:56,950 >> 漢娜:是的,你是完全正確的。 339 00:15:56,950 --> 00:15:58,130 我很抱歉。 340 00:15:58,130 --> 00:16:00,040 是名單不等於空。 341 00:16:00,040 --> 00:16:01,915 真棒。 342 00:16:01,915 --> 00:16:04,245 試圖把這個屏幕上的所有。 343 00:16:04,245 --> 00:16:06,870 它是一種脫落。 344 00:16:06,870 --> 00:16:07,730 對不起,伙計們。 345 00:16:07,730 --> 00:16:11,874 最後但並非最不重要的,所有的 我們所要做的就是回報。 346 00:16:11,874 --> 00:16:12,840 好不好。 347 00:16:12,840 --> 00:16:15,400 這是一個很多擠 在真的很快。 348 00:16:15,400 --> 00:16:16,800 花一秒鐘看這個過來。 349 00:16:16,800 --> 00:16:18,216 告訴我,如果你有任何問題。 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 是嗎? 352 00:16:20,732 --> 00:16:26,940 >> 聽眾:如果名單在 頭,then--等待,請不要介意。 353 00:16:26,940 --> 00:16:27,700 >> 漢娜:OK,好。 354 00:16:27,700 --> 00:16:30,987 因此,這是,如果名單在前頭, 我們把它轉移到任何我們插入。 355 00:16:30,987 --> 00:16:31,486 是嗎? 356 00:16:31,486 --> 00:16:33,777 >> 觀眾:你能解釋一下 第一,如果再次聲明? 357 00:16:33,777 --> 00:16:36,149 如果指針為n等於n? 358 00:16:36,149 --> 00:16:36,690 漢娜:當然。 359 00:16:36,690 --> 00:16:42,780 所以我們這個整體功能的目標是 刪除具有值n的節點。 360 00:16:42,780 --> 00:16:47,460 因此,如果我們發現,因為我們 通過我們的列表進行迭代, 361 00:16:47,460 --> 00:16:51,770 與值n的節點,這是 一,我們要刪除。 362 00:16:51,770 --> 00:16:57,286 因此,所有的刪除的情況 裡面,如果大的語句。 363 00:16:57,286 --> 00:16:58,593 這是否有道理? 364 00:16:58,593 --> 00:16:59,480 酷。 365 00:16:59,480 --> 00:16:59,990 是嗎? 366 00:16:59,990 --> 00:17:02,864 >> 聽眾:也許你只是看不到 它,但不要你還需要一條線 367 00:17:02,864 --> 00:17:06,024 為滾動列表? 368 00:17:06,024 --> 00:17:06,690 漢娜:真棒。 369 00:17:06,690 --> 00:17:10,896 讓我們把這個一點點,和 我們會扔了就在底部。 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 也許董事會將已經 是一個稍微好一點的想法。 372 00:17:15,490 --> 00:17:17,829 那麼,如何將移動指針向前? 373 00:17:17,829 --> 00:17:20,184 >> 聽眾:指針 等於指針加一。 374 00:17:20,184 --> 00:17:21,599 >> 漢娜:美麗。 375 00:17:21,599 --> 00:17:25,050 所以,讓我們來 繼續迭代通過。 376 00:17:25,050 --> 00:17:26,251 好不好。 377 00:17:26,251 --> 00:17:27,750 聽眾:難道會有一個else? 378 00:17:27,750 --> 00:17:29,028 漢娜:再來一次? 379 00:17:29,028 --> 00:17:32,444 聽眾:難道會有 後大,如果老的東西 380 00:17:32,444 --> 00:17:35,519 語句[聽不清]? 381 00:17:35,519 --> 00:17:36,310 漢娜:哪一部分? 382 00:17:36,310 --> 00:17:38,350 對不起。 383 00:17:38,350 --> 00:17:41,800 >> 聽眾:遍歷, 不應該有一個別的嗎? 384 00:17:41,800 --> 00:17:43,550 漢娜:你絕對 可能有其他人。 385 00:17:43,550 --> 00:17:46,930 因為我有一個回歸權 在那裡,你不需要別人。 386 00:17:46,930 --> 00:17:48,760 但是,是的,很好的問題。 387 00:17:48,760 --> 00:17:50,170 OK,是嗎? 388 00:17:50,170 --> 00:17:52,878 觀眾:我們可以認為指針 即通過列表移動 389 00:17:52,878 --> 00:17:56,610 服用的值 的列表中的每個節點? 390 00:17:56,610 --> 00:18:00,650 還是應該把它看成 排序的外部列表? 391 00:18:00,650 --> 00:18:02,350 >> 漢娜:要么一個是好的,我想。 392 00:18:02,350 --> 00:18:05,880 我想它的方式是 我說,行,我的指針。 393 00:18:05,880 --> 00:18:06,520 這是我的。 394 00:18:06,520 --> 00:18:07,150 這是我的手。 395 00:18:07,150 --> 00:18:09,960 我要指向不同 的事情,我想遍歷。 396 00:18:09,960 --> 00:18:12,270 首先,我要指出 到該列表的頭部。 397 00:18:12,270 --> 00:18:14,144 並且告訴我,我 要指向4。 398 00:18:14,144 --> 00:18:18,060 所以我來說,外部的列表中, 我可以指出這些元素。 399 00:18:18,060 --> 00:18:19,520 所以,我認為自己是指針。 400 00:18:19,520 --> 00:18:21,645 聽眾:所以當你刪除 這些元件中的一個, 401 00:18:21,645 --> 00:18:23,404 您刪除自己,可以這麼說。 402 00:18:23,404 --> 00:18:24,070 漢娜:沒錯。 403 00:18:24,070 --> 00:18:25,920 所以,你刪除的東西 你指向。 404 00:18:25,920 --> 00:18:28,340 所以在本例中該 我們看到在那裡我們 405 00:18:28,340 --> 00:18:31,670 試圖刪除5, 當我指著五, 406 00:18:31,670 --> 00:18:34,200 我想刪除 我指著事情。 407 00:18:34,200 --> 00:18:35,870 完全正確。 408 00:18:35,870 --> 00:18:36,577 是嗎? 409 00:18:36,577 --> 00:18:39,410 聽眾:我們有否照顧 情況下,其中n是不在列表? 410 00:18:39,410 --> 00:18:40,460 漢娜:如果n不在列表中? 411 00:18:40,460 --> 00:18:43,501 所有這一切將要發生的是你 要遍歷和迭代 412 00:18:43,501 --> 00:18:47,616 通過,然後,你會 得到的指針是空, 413 00:18:47,616 --> 00:18:48,990 然後你會做。 414 00:18:48,990 --> 00:18:50,812 >> 聽眾:那我們有 返回什麼? 415 00:18:50,812 --> 00:18:51,520 漢娜:我們可以。 416 00:18:51,520 --> 00:18:54,500 如果定義了這個問題的方法是 功能,我只想說,它返回 417 00:18:54,500 --> 00:18:55,770 不管作廢。 418 00:18:55,770 --> 00:18:58,360 但你可以有一些 就像返回一個整數, 419 00:18:58,360 --> 00:19:00,920 並使其返回 負1,如果它失敗。 420 00:19:00,920 --> 00:19:03,070 類似的東西。 421 00:19:03,070 --> 00:19:04,494 問題with--是嗎? 422 00:19:04,494 --> 00:19:05,410 觀眾:[聽不清]? 423 00:19:05,410 --> 00:19:05,993 漢娜:對不起? 424 00:19:05,993 --> 00:19:07,419 觀眾:[聽不清]? 425 00:19:07,419 --> 00:19:07,960 漢娜:當然。 426 00:19:07,960 --> 00:19:11,730 所以這是actual--一旦我們 移動完成所有這些工作 427 00:19:11,730 --> 00:19:16,530 所有這些箭周圍,我們整個 目標是擺脫節點 428 00:19:16,530 --> 00:19:18,230 我們正在尋找。 429 00:19:18,230 --> 00:19:21,610 所以在這種情況下,釋放 指針,如果我指著五, 430 00:19:21,610 --> 00:19:24,670 它就像抹去這中間節點。 431 00:19:24,670 --> 00:19:27,250 這是免費的指針部分。 432 00:19:27,250 --> 00:19:29,090 這有意義嗎? 433 00:19:29,090 --> 00:19:31,390 >> 聽眾:所以,即使想 你沒有[聽不清]? 434 00:19:31,390 --> 00:19:36,060 >> 漢娜:所以我們假設一開始 我們有一些名單,這是already-- 435 00:19:36,060 --> 00:19:37,220 他們已經把這個一起。 436 00:19:37,220 --> 00:19:39,761 因此,為了構建本 列表中,他們意有所指[聽不清]。 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 酷。 439 00:19:42,750 --> 00:19:44,490 任何其他與此? 440 00:19:44,490 --> 00:19:46,386 是嗎? 441 00:19:46,386 --> 00:19:49,204 >> 觀眾:如果什麼列表 不等於空行? 442 00:19:49,204 --> 00:19:49,704 [聽不清]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 漢娜:就在這裡? 445 00:19:53,080 --> 00:19:53,840 聽眾:是的。 446 00:19:53,840 --> 00:19:57,370 漢娜:OK,我做的 正在我只是確保 447 00:19:57,370 --> 00:20:03,250 之前我嘗試取消引用列表, 之前,我嘗試訪問以前, 448 00:20:03,250 --> 00:20:07,210 我想,以確保它不是 空,所以我沒有得到一個賽格故障。 449 00:20:07,210 --> 00:20:08,400 酷。 450 00:20:08,400 --> 00:20:10,820 >> OK,我知道這是相當 很多打通。 451 00:20:10,820 --> 00:20:14,950 這張幻燈片會 提供給你。 452 00:20:14,950 --> 00:20:17,341 所以,你可以通過它的更多細節。 453 00:20:17,341 --> 00:20:17,841 是嗎? 454 00:20:17,841 --> 00:20:19,749 >> 聽眾:為什麼列表[聽不清]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 漢娜:當然。 457 00:20:24,670 --> 00:20:27,390 所以,列表確實指向 這個元素就在這裡, 458 00:20:27,390 --> 00:20:29,200 列表中的第一個元素。 459 00:20:29,200 --> 00:20:30,748 因此它不能有一個以前。 460 00:20:30,748 --> 00:20:31,736 是嗎? 461 00:20:31,736 --> 00:20:35,194 >> 聽眾:請問指針點 以在存儲器中的相同地址? 462 00:20:35,194 --> 00:20:38,404 是否指向同一 在存儲器中作為節點地址 463 00:20:38,404 --> 00:20:40,640 它的指向? 464 00:20:40,640 --> 00:20:43,865 >> 漢娜:是的,它指向 在內存中這個節點。 465 00:20:43,865 --> 00:20:47,190 >> 聽眾:對,所以 當你[聽不清]? 466 00:20:47,190 --> 00:20:50,580 >> 漢娜:從某種意義上說,是的。 467 00:20:50,580 --> 00:20:51,280 好不好。 468 00:20:51,280 --> 00:20:52,997 好吧,讓我們這個待著。 469 00:20:52,997 --> 00:20:55,330 如果您有更多的問題, 堅持圍繞底, 470 00:20:55,330 --> 00:20:57,130 我們可以通過它去了。 471 00:20:57,130 --> 00:20:58,120 OK,涼。 472 00:20:58,120 --> 00:21:00,490 現在,我們就會繼續前進 哈希表,嘗試, 473 00:21:00,490 --> 00:21:04,940 和樹木,你得到了超 熟悉對設置5,拼寫。 474 00:21:04,940 --> 00:21:11,020 >> 所以哈希表僅僅是一個 陣列,單鍊錶 475 00:21:11,020 --> 00:21:14,050 或雙向鍊錶來關閉它。 476 00:21:14,050 --> 00:21:16,380 因此,我們有一些 關聯數組。 477 00:21:16,380 --> 00:21:21,280 以及我們如何知道這些 陣列桶進入, 478 00:21:21,280 --> 00:21:24,137 我們使用的哈希函數。 479 00:21:24,137 --> 00:21:26,470 所以在這種情況下,任何人都可以 你猜怎麼著哈希函數 480 00:21:26,470 --> 00:21:28,636 將只是基於一些 的輸入和輸出? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> 聽眾:字母表的字母數。 483 00:21:33,194 --> 00:21:33,860 漢娜:沒錯。 484 00:21:33,860 --> 00:21:36,160 它只是把它們按字母順序排列。 485 00:21:36,160 --> 00:21:39,280 與一開始一切 A被放入第一桶。 486 00:21:39,280 --> 00:21:43,340 用B一切被放入 第二桶,等等,等等。 487 00:21:43,340 --> 00:21:45,620 真棒,OK。 488 00:21:45,620 --> 00:21:48,980 並且散列函數是任何 函數,它接受一個字 489 00:21:48,980 --> 00:21:51,910 並會告訴你什麼 鬥它屬於英寸 490 00:21:51,910 --> 00:21:55,150 那麼,哪條目我們 數組屬於英寸 491 00:21:55,150 --> 00:21:58,080 >> 所以每次我給我 Hash函數一句話, 492 00:21:58,080 --> 00:22:00,660 它應該告訴我的一樣 把每一次。 493 00:22:00,660 --> 00:22:03,270 因此,如果我們使用散列函數 從以前的幻燈片 494 00:22:03,270 --> 00:22:05,950 我們在那裡進行排序 拼音首字母, 495 00:22:05,950 --> 00:22:08,230 我每次給我的 散列函數“蘋果” 496 00:22:08,230 --> 00:22:10,180 它應該總是給我回0。 497 00:22:10,180 --> 00:22:12,890 所以,如果我有一個蘋果 把我的哈希表, 498 00:22:12,890 --> 00:22:17,700 如果我給“蘋果”我的散列函數, 應該說,去把它放在水桶0。 499 00:22:17,700 --> 00:22:19,980 如果我在尋找一個 蘋果在我的哈希表 500 00:22:19,980 --> 00:22:24,340 我說,那裡的威力蘋果 現場,你問你的哈希函數。 501 00:22:24,340 --> 00:22:26,900 它說,去鬥0。 502 00:22:26,900 --> 00:22:29,150 行? 503 00:22:29,150 --> 00:22:32,660 用散列函數的問題? 504 00:22:32,660 --> 00:22:34,570 真棒。 505 00:22:34,570 --> 00:22:37,320 >> 這是一個稍微 詳細的說明 506 00:22:37,320 --> 00:22:39,570 一個什麼樣的哈希函數可能看起來像。 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 行。 509 00:22:42,960 --> 00:22:45,960 現在,隨著哈希問題 功能是在一個理想的世界, 510 00:22:45,960 --> 00:22:48,870 我們只有一個 在每個桶的事情。 511 00:22:48,870 --> 00:22:50,900 但在現實中,有 不是只有一個字 512 00:22:50,900 --> 00:22:54,280 與A.開始有不 與B.於是開始只有一個字 513 00:22:54,280 --> 00:22:56,960 在這種情況下,如果我們 突然得到“漿果” 514 00:22:56,960 --> 00:22:58,710 我們希望把它 到我們的哈希表, 515 00:22:58,710 --> 00:23:03,640 我們看到,哦,不,香蕉 已經存在,那我們該怎麼辦? 516 00:23:03,640 --> 00:23:05,900 >> 好了,我們有兩個選擇。 517 00:23:05,900 --> 00:23:07,990 第一個選項是 線性探測,這 518 00:23:07,990 --> 00:23:11,100 只是意味著去尋找 下一個空水桶。 519 00:23:11,100 --> 00:23:14,100 去尋找下一個空數組項。 520 00:23:14,100 --> 00:23:15,750 而只是把“漿果”在那裡。 521 00:23:15,750 --> 00:23:18,880 所以我知道它應該 在鬥一氣呵成香蕉。 522 00:23:18,880 --> 00:23:22,155 但是,僅僅把它放在鬥3, 因為鬥三是空的。 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 另一種選擇是可能 你實現 525 00:23:26,680 --> 00:23:29,220 在對集,在那裡你 有獨立的鏈接。 526 00:23:29,220 --> 00:23:33,990 所以,您的每一個桶, 您的每一個數組元素, 527 00:23:33,990 --> 00:23:38,410 不僅各執一份的話,但實際上 持有的指針字的列表。 528 00:23:38,410 --> 00:23:41,880 所以,如果你有 香蕉中的哈希表 529 00:23:41,880 --> 00:23:44,740 你突然想 添加漿果,沒有問題。 530 00:23:44,740 --> 00:23:51,110 剛上到結束,或添加漿果 您鍊錶的開始。 531 00:23:51,110 --> 00:23:54,040 OK,真棒。 532 00:23:54,040 --> 00:23:58,490 與哈希問題 表之前,我們去? 533 00:23:58,490 --> 00:23:59,850 >> 行。 534 00:23:59,850 --> 00:24:01,070 樹木和嘗試。 535 00:24:01,070 --> 00:24:07,980 OK,所以這是另一種選擇 實施字典​​。 536 00:24:07,980 --> 00:24:09,100 你可以做一個嘗試。 537 00:24:09,100 --> 00:24:13,420 因此,它是一種特殊的樹的 就像一個多層次的哈希表。 538 00:24:13,420 --> 00:24:16,862 所以你會看到圖片 在那裡你有一個數組 539 00:24:16,862 --> 00:24:19,320 指著一堆陣列 這一點一堆陣列 540 00:24:19,320 --> 00:24:20,390 這一點一堆陣列。 541 00:24:20,390 --> 00:24:23,140 我們將看看到底是什麼 看起來像一個未來的幻燈片。 542 00:24:23,140 --> 00:24:26,070 和更一般地,一個樹 只是任何數據結構 543 00:24:26,070 --> 00:24:29,710 其中數據是 組織在某些層次。 544 00:24:29,710 --> 00:24:32,610 所以,在這裡我們看到了我們 某種理解 545 00:24:32,610 --> 00:24:36,130 的頂層,一個下一級, 一個新的水平,一個新的水平。 546 00:24:36,130 --> 00:24:39,690 因此,這可能是最清楚的 一些具體的例子。 547 00:24:39,690 --> 00:24:40,880 因此,這裡是我們的樹。 548 00:24:40,880 --> 00:24:42,970 你可以看到它 具有特定水平 549 00:24:42,970 --> 00:24:45,480 我們開始與根節點之一。 550 00:24:45,480 --> 00:24:47,640 我們可以走下來,通過我們的樹。 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> 二叉樹是 特定類型的樹。 553 00:24:53,910 --> 00:24:56,770 而唯一標準 為二叉樹 554 00:24:56,770 --> 00:25:01,130 是,每個節點具有 至多兩個葉子。 555 00:25:01,130 --> 00:25:03,960 所以你不會看到任何 這些節點具有三個或四個 556 00:25:03,960 --> 00:25:06,880 或葉片某些其它數目。 557 00:25:06,880 --> 00:25:11,310 然後更具體 是一個二分搜索樹 558 00:25:11,310 --> 00:25:18,010 在每一個節點的左 節點將有一個值。 559 00:25:18,010 --> 00:25:21,180 每值的 正確的將是更大的。 560 00:25:21,180 --> 00:25:26,900 所以,如果你看到44是我們的根, 到左側,11,22,和33 561 00:25:26,900 --> 00:25:28,940 比我們的根都少。 562 00:25:28,940 --> 00:25:33,890 而右邊都 數字bigger-- 66,55,和77。 563 00:25:33,890 --> 00:25:37,380 與這個屬性也是如此 在樹的各個層面。 564 00:25:37,380 --> 00:25:42,690 >> 所以,當我們再往 22,11和33,還是11 565 00:25:42,690 --> 00:25:46,950 小於22和 33大於22。 566 00:25:46,950 --> 00:25:50,160 並且這使得更容易地搜索 因為如果我們正在尋找一個數字, 567 00:25:50,160 --> 00:25:53,877 我們確切地知道哪些 分支跟隨下跌。 568 00:25:53,877 --> 00:25:56,210 所以這應該提醒你 二進制搜索點點。 569 00:25:56,210 --> 00:25:56,967 是嗎? 570 00:25:56,967 --> 00:25:58,835 >> 聽眾:所以當你 描述二進制, 571 00:25:58,835 --> 00:26:00,587 你說,這至多有兩片葉子? 572 00:26:00,587 --> 00:26:01,170 漢娜:嗯。 573 00:26:01,170 --> 00:26:02,580 聽眾:難道有少? 574 00:26:02,580 --> 00:26:03,121 漢娜:是的。 575 00:26:03,121 --> 00:26:06,720 因此,讓我們說,例如,你 沒有一個偶數的東西 576 00:26:06,720 --> 00:26:11,791 你不能填滿你所有的 葉子,它的罰款,如果一個有一個。 577 00:26:11,791 --> 00:26:12,290 好不好? 578 00:26:12,290 --> 00:26:12,789 真棒。 579 00:26:12,789 --> 00:26:15,930 在樹上還有沒有其他問題? 580 00:26:15,930 --> 00:26:16,670 好不好。 581 00:26:16,670 --> 00:26:20,110 >> 回到我們的嘗試,因為我是在說 約一點點早些時候, 582 00:26:20,110 --> 00:26:23,900 我們如何有這些多層次的陣列。 583 00:26:23,900 --> 00:26:26,280 因此,在這種情況下,我們開始在頂部。 584 00:26:26,280 --> 00:26:29,030 我們可以按照任何給定的字了。 585 00:26:29,030 --> 00:26:30,780 所以我們可以說,我們希望 尋找圖靈。 586 00:26:30,780 --> 00:26:34,380 我們開始在T,跟著下來 到包含ü一個數組, 587 00:26:34,380 --> 00:26:37,350 並按照它,直到我們 到達這個小三角這 588 00:26:37,350 --> 00:26:39,060 告訴我們,是的,你找到了一個字。 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 清除的嘗試? 591 00:26:44,120 --> 00:26:48,138 什麼到那邊去? 592 00:26:48,138 --> 00:26:48,908 是嗎? 593 00:26:48,908 --> 00:26:51,866 聽眾:請問三角洲的象徵 要佔據嘗試在空間? 594 00:26:51,866 --> 00:26:54,532 漢娜:是啊,所以也沒有 甚至不一定需要是一個增量。 595 00:26:54,532 --> 00:26:57,760 但是,我們需要一些方法來 告訴我們computer--對不起, 596 00:26:57,760 --> 00:27:01,130 讓我們知道TUR是不發一言。 597 00:27:01,130 --> 00:27:04,180 因為我們說我們沒有 這一概念的三角洲,這一概念 598 00:27:04,180 --> 00:27:09,850 恭喜你,你找到了一個字, 它會經過和迭代T-U-R, 599 00:27:09,850 --> 00:27:11,300 然後說,真棒,我找到了! 600 00:27:11,300 --> 00:27:12,670 它必須是一個字。 601 00:27:12,670 --> 00:27:13,720 但它真的不是。 602 00:27:13,720 --> 00:27:15,310 我們希望整個圖靈是一個單詞。 603 00:27:15,310 --> 00:27:17,760 因此,我們必須有東西在 最終,上面寫著:恭喜你, 604 00:27:17,760 --> 00:27:19,051 你已經找到了一個合法的單詞。 605 00:27:19,051 --> 00:27:21,680 觀眾:所以,如果你有一個像 26個字母在字母表, 606 00:27:21,680 --> 00:27:24,560 你會實際上有 27鍵在你試試? 607 00:27:24,560 --> 00:27:26,010 >> 漢娜:真棒,是的。 608 00:27:26,010 --> 00:27:28,210 所以實際上,我認為, 將在接下來的幻燈片。 609 00:27:28,210 --> 00:27:29,440 噹噹! 610 00:27:29,440 --> 00:27:32,880 在那裡,如果你有一個 在你嘗試節點,你 611 00:27:32,880 --> 00:27:35,800 將有27名兒童,而不是26。 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 有任何問題嗎? 614 00:27:40,050 --> 00:27:40,550 是嗎? 615 00:27:40,550 --> 00:27:44,569 聽眾:為什麼嘗試佔用這麼 多少空間[聽不清]你去? 616 00:27:44,569 --> 00:27:47,629 為什麼它被認為是[聽不清]? 617 00:27:47,629 --> 00:27:48,170 漢娜:當然。 618 00:27:48,170 --> 00:27:48,790 讓我們回去。 619 00:27:48,790 --> 00:27:52,350 現在的問題是,為什麼 在嘗試了這麼多更大 620 00:27:52,350 --> 00:27:54,620 不是像哈希表。 621 00:27:54,620 --> 00:27:57,790 因此,對於每個這些層次, 即使他們不在這裡繪製, 622 00:27:57,790 --> 00:28:01,250 你必須有26個字符。 623 00:28:01,250 --> 00:28:04,420 究其原因,你不能 說,哦,但是像圖靈,我 624 00:28:04,420 --> 00:28:07,570 不需要有任何這些 在U.好水平同樣的事情, 625 00:28:07,570 --> 00:28:11,390 如果你突然想添加 這一點是很喜歡T-H, 626 00:28:11,390 --> 00:28:14,800 你需要有 加入這個詞的能力。 627 00:28:14,800 --> 00:28:17,330 因此,對於每一個字母, 你將有 628 00:28:17,330 --> 00:28:19,730 有一堆 陣列來關閉它。 629 00:28:19,730 --> 00:28:24,060 所以,你可以看到它會怎麼弄 真大,真快。 630 00:28:24,060 --> 00:28:26,560 還有沒有其他問題? 631 00:28:26,560 --> 00:28:28,980 行。 632 00:28:28,980 --> 00:28:29,832 是嗎? 633 00:28:29,832 --> 00:28:33,210 >> 聽眾:當是嘗試 比哈希表快? 634 00:28:33,210 --> 00:28:36,280 >> 漢娜:當是嘗試 比哈希表快? 635 00:28:36,280 --> 00:28:39,120 所以,如果你有一個非常 糟糕的哈希函數。 636 00:28:39,120 --> 00:28:41,840 因此,讓我們說,我很喜歡, 這裡是你的哈希函數。 637 00:28:41,840 --> 00:28:43,660 不管是什麼字 你給我,我總是 638 00:28:43,660 --> 00:28:47,740 打算把它放在數組項0。 639 00:28:47,740 --> 00:28:52,000 所以我們最終只是把 一切都在一個大長鍊錶。 640 00:28:52,000 --> 00:28:58,740 所以查找時間將採取在最壞的情況 ñ如果它在我們的名單的最後。 641 00:28:58,740 --> 00:29:03,150 與嘗試,我們只需要遍歷 通過在單詞中的字母。 642 00:29:03,150 --> 00:29:07,080 所以,即使我們增加了一堆 更多的話對我們的嘗試, 643 00:29:07,080 --> 00:29:09,620 它不會帶我們下去 找到一個特定的字。 644 00:29:09,620 --> 00:29:11,750 >> 所有我們所要做的就是,對於 例如,在這種情況下, 645 00:29:11,750 --> 00:29:17,170 比方說,我們正在尋找變焦, 我們只需要遍歷 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M,四個字母。 647 00:29:19,840 --> 00:29:22,250 所以,這只是 長字變焦。 648 00:29:22,250 --> 00:29:25,400 不要緊,有多少 更多的話,我們把這個嘗試。 649 00:29:25,400 --> 00:29:30,225 我們總是可以得到它 在這些四個步驟。 650 00:29:30,225 --> 00:29:31,215 真棒。 651 00:29:31,215 --> 00:29:32,205 是嗎? 652 00:29:32,205 --> 00:29:34,185 >> 觀眾:所以[聽不清] 是一個數組,對不對? 653 00:29:34,185 --> 00:29:35,322 >> 漢娜:嗯。 654 00:29:35,322 --> 00:29:37,155 聽眾:如果你 尋找[聽不清] 655 00:29:37,155 --> 00:29:40,929 你必須要經過 陣列找到[聽不清]? 656 00:29:40,929 --> 00:29:41,470 漢娜:當然。 657 00:29:41,470 --> 00:29:44,000 聽眾:那豈不是要花更多的時間? 658 00:29:44,000 --> 00:29:46,370 漢娜:如果我要去 說我的數組總是 659 00:29:46,370 --> 00:29:49,250 將是A,B,C,D, E,F,G,等等等等, 660 00:29:49,250 --> 00:29:51,630 所以,如果我總是知道這是 在相同的確切順序, 661 00:29:51,630 --> 00:29:53,880 如果我總是知道它的 按字母順序排列, 662 00:29:53,880 --> 00:29:57,860 我只能說O的數量 某某在字母表。 663 00:29:57,860 --> 00:29:59,620 只是跳到那個地方。 664 00:29:59,620 --> 00:30:01,860 因為記得,有 陣列,我們可以訪問 665 00:30:01,860 --> 00:30:06,590 在恆定該數組中的任何元素 如果我們知道,我們正在尋找的時間。 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 是嗎? 668 00:30:09,580 --> 00:30:12,005 >> 聽眾:在以前的 滑動[聽不清] 27號, 669 00:30:12,005 --> 00:30:14,430 但26為第一個。 670 00:30:14,430 --> 00:30:15,400 >> 漢娜:對不起? 671 00:30:15,400 --> 00:30:18,800 >> 聽眾:是不是第一次 1 0,所以不會是26? 672 00:30:18,800 --> 00:30:24,900 >> 漢娜:沒錯,所以當我們說27,這是 將給美元指數從0到26。 673 00:30:24,900 --> 00:30:28,220 但是,如果你真的指望 這些出來,這將是27。 674 00:30:28,220 --> 00:30:30,007 好問題。 675 00:30:30,007 --> 00:30:30,590 還要別的嗎? 676 00:30:30,590 --> 00:30:31,200 是嗎? 677 00:30:31,200 --> 00:30:34,420 >> 觀眾:那麼,嘗試 比哈希表慢? 678 00:30:34,420 --> 00:30:37,920 >> 漢娜:嘗試將要在 理論上講,速度比哈希表 679 00:30:37,920 --> 00:30:39,760 但佔用更多的內存。 680 00:30:39,760 --> 00:30:40,534 是嗎? 681 00:30:40,534 --> 00:30:41,450 觀眾:[聽不清]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> 漢娜:對不起,我沒有聽你的。 684 00:30:47,484 --> 00:30:48,400 觀眾:[聽不清]。 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0到25給你26。 687 00:30:54,100 --> 00:30:56,958 >> 漢娜:0〜25將 給你26吧。 688 00:30:56,958 --> 00:30:58,457 >> 觀眾:然後[聽不清]。 689 00:30:58,457 --> 00:30:59,040 漢娜:沒錯。 690 00:30:59,040 --> 00:31:04,760 所以我們指定的數量 事情在我們的數組數。 691 00:31:04,760 --> 00:31:07,260 所以,如果我們有27,它的 要給我們0 692 00:31:07,260 --> 00:31:10,620 通過26,這將給 我們的空間,在這種情況下, 693 00:31:10,620 --> 00:31:12,770 我不包括撇號。 694 00:31:12,770 --> 00:31:17,040 所以我們得到0〜25 第26個字母的字母表, 695 00:31:17,040 --> 00:31:18,990 或全部26個字母的字母表。 696 00:31:18,990 --> 00:31:21,190 然後,去年 首先,在進入26歲,是 697 00:31:21,190 --> 00:31:24,598 將要檢查 標記或增量。 698 00:31:24,598 --> 00:31:26,960 還要別的嗎? 699 00:31:26,960 --> 00:31:29,130 真棒。 700 00:31:29,130 --> 00:31:30,020 失去了我的空間。 701 00:31:30,020 --> 00:31:31,020 OK,涼。 702 00:31:31,020 --> 00:31:33,240 >> 所以,我們已經談到了這一點。 703 00:31:33,240 --> 00:31:37,430 但大的權衡 嘗試和哈希表之間 704 00:31:37,430 --> 00:31:39,720 是嘗試提供,在 理論上,不斷仰望 705 00:31:39,720 --> 00:31:42,890 次,但用一大堆的內存。 706 00:31:42,890 --> 00:31:46,495 好了,現在我們有小幅 那麼複雜的結構, 707 00:31:46,495 --> 00:31:49,640 我們會用C做的, 我們會向右移動沿。 708 00:31:49,640 --> 00:31:51,930 >> 所以棧,我們看到了這 講座中,你在哪裡 709 00:31:51,930 --> 00:31:55,020 有一些像 托盤其中棧 710 00:31:55,020 --> 00:31:57,330 你把過去的事情 棧上會 711 00:31:57,330 --> 00:31:59,500 是你脫下的第一件事。 712 00:31:59,500 --> 00:32:02,880 所以,這就是真正定義堆棧 是過去的事情,你把 713 00:32:02,880 --> 00:32:06,080 將是在第一 事情你起飛。 714 00:32:06,080 --> 00:32:09,279 而我們使用的術語 如果我們要裝上去, 715 00:32:09,279 --> 00:32:12,070 如果我們要添加一些 我們的堆棧,我們稱之為推。 716 00:32:12,070 --> 00:32:14,970 如果我們拿東西 關,我們稱之為大跌眼鏡。 717 00:32:14,970 --> 00:32:17,080 如果我們要 實現一個棧,我們 718 00:32:17,080 --> 00:32:20,660 需要務必保持跟踪 兩者的大小和容量。 719 00:32:20,660 --> 00:32:24,940 這樣的元素的總數,我們可以 保持和元素的當前數量 720 00:32:24,940 --> 00:32:27,880 我們都抱著。 721 00:32:27,880 --> 00:32:29,885 >> 並且非常相似,我們有隊列。 722 00:32:29,885 --> 00:32:34,510 而且,唯一的區別 是,代替用棧, 723 00:32:34,510 --> 00:32:37,630 我們說,我們把對過去的事情 是我們騰飛的第一件事。 724 00:32:37,630 --> 00:32:40,940 因此,與隊列中, 我們把第一件事情 725 00:32:40,940 --> 00:32:43,129 將是該 第一件事情,我們冒了出來。 726 00:32:43,129 --> 00:32:45,420 因此,這就像如果你 實際上排隊在店 727 00:32:45,420 --> 00:32:48,140 而你正在幫助, 那麼行的第一人 728 00:32:48,140 --> 00:32:50,880 應該是第一人得到幫助。 729 00:32:50,880 --> 00:32:52,220 所以,這將是一個隊列。 730 00:32:52,220 --> 00:32:55,880 >> 因此,我們需要跟踪的 尺寸,容量和頭部,因為我們 731 00:32:55,880 --> 00:33:01,130 要帶大家離開前 的列表,而不是背面。 732 00:33:01,130 --> 00:33:03,480 上有問題嗎? 733 00:33:03,480 --> 00:33:06,330 任何C的問題正在困擾著你? 734 00:33:06,330 --> 00:33:09,590 數據結構,任何有趣的東西? 735 00:33:09,590 --> 00:33:10,530 好吧,冷靜。 736 00:33:10,530 --> 00:33:14,120 所以我把它交給艾莉森到 跳進一些節目。 737 00:33:14,120 --> 00:33:15,965 >> ALISON:哦,我們拭目以待。 738 00:33:15,965 --> 00:33:17,370 我們會看到我是如何以及在這裡做。 739 00:33:17,370 --> 00:33:21,410 OK,我要去嘗試和飛 通過這個東西,伙計們。 740 00:33:21,410 --> 00:33:24,540 漢娜得非常的 深入她所有的東西。 741 00:33:24,540 --> 00:33:26,900 我會盡量給 您快速爆炸概述 742 00:33:26,900 --> 00:33:31,290 這樣我們就可以得到達文所有 有趣的JavaScript和安全事 743 00:33:31,290 --> 00:33:33,380 也許你真的 想聽到更多有關。 744 00:33:33,380 --> 00:33:36,600 >> OK,漢娜說,如果 您有任何問題, 745 00:33:36,600 --> 00:33:39,170 我走得太快,請讓我知道。 746 00:33:39,170 --> 00:33:42,114 我會回答的問題是必要的。 747 00:33:42,114 --> 00:33:45,280 所以開始,我們將開始 的第一個東西可能1 748 00:33:45,280 --> 00:33:48,730 你學會了網頁 編程權限。 749 00:33:48,730 --> 00:33:52,720 所以CHMOD,你們應該已經 主人在這所有的網頁 750 00:33:52,720 --> 00:33:54,870 你已經編程 最近在忙。 751 00:33:54,870 --> 00:33:57,320 它基本上只是一個命令 改變的權限 752 00:33:57,320 --> 00:34:00,779 或訪問權限 我們的文件系統對象。 753 00:34:00,779 --> 00:34:02,570 當然,實際 看到這些,如果你 754 00:34:02,570 --> 00:34:04,910 有這些任何麻煩 在你的習題集, 755 00:34:04,910 --> 00:34:11,460 你可能已經使用ls -l命令,這是漫長的, 得到了這樣的一種觀點, 756 00:34:11,460 --> 00:34:14,209 在這裡你實際看到的所有 該權限的文件。 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> 真的,我們只是要去 通過很快只是漂亮 759 00:34:20,732 --> 00:34:21,940 太多了每個這些的意思。 760 00:34:21,940 --> 00:34:24,481 因此,我們有d就在這裡,這 剛剛代表的目錄。 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 顯然,在這裡,我們看到的rwx,這 可讀,可寫和可執行。 763 00:34:31,739 --> 00:34:37,090 這些也可以被表示為比特, 我們將進入下一個頁面上。 764 00:34:37,090 --> 00:34:40,699 讓我們看到每一個黑社會 在這裡,所以它的三大黑社會。 765 00:34:40,699 --> 00:34:48,120 我們RWX河沒有X和R 沒有X的第一個文件。 766 00:34:48,120 --> 00:34:49,690 正是這種總體結構。 767 00:34:49,690 --> 00:34:50,940 >> 所以,我們有一些目錄。 768 00:34:50,940 --> 00:34:53,999 我們有一些用戶群 這些權限。 769 00:34:53,999 --> 00:34:57,040 有些組具有這些權限, 和世界有一個許可。 770 00:34:57,040 --> 00:34:59,420 你可以把這些作為黑社會。 771 00:34:59,420 --> 00:35:01,130 你可以認為這是三位。 772 00:35:01,130 --> 00:35:04,060 這樣他們就可以保存值 從0向上的任意位置 773 00:35:04,060 --> 00:35:07,350 至7,這是為什麼有時候 我們不得不這樣做CHMOD 774 00:35:07,350 --> 00:35:17,510 600,而不是CHMOD RW等等。 775 00:35:17,510 --> 00:35:19,170 我們將進入一個例子存在。 776 00:35:19,170 --> 00:35:24,260 但基本上,你能想到的 只是RWX這些既為, 777 00:35:24,260 --> 00:35:28,520 或者你可以把它們想像成某種 數,其中在這裡第一次 778 00:35:28,520 --> 00:35:31,480 代表一個數字之間 0和7,這第二個 779 00:35:31,480 --> 00:35:33,970 代表一個數字之間 0和7,而第三個 780 00:35:33,970 --> 00:35:38,245 表示數字0到7之間,行? 781 00:35:38,245 --> 00:35:42,700 >> r的4的值w 具有值2,並且x 782 00:35:42,700 --> 00:35:49,230 具有值1,這就是為什麼此 這裡的權限將文件模式700。 783 00:35:49,230 --> 00:35:53,520 因為在這裡這種情況下,我們說 已在第一比特出現翻轉上。 784 00:35:53,520 --> 00:35:55,380 因此,我們有4個讀。 785 00:35:55,380 --> 00:35:58,730 第二比特被翻轉上 W,這是2,所以現在我們有6個。 786 00:35:58,730 --> 00:36:02,070 和第三比特被翻轉上 對於x,它是1,所以我們得到7。 787 00:36:02,070 --> 00:36:04,820 當然,我們的團隊 和我們的世界是每個0。 788 00:36:04,820 --> 00:36:07,770 因此,這也是 相當於CHMOD 700。 789 00:36:07,770 --> 00:36:12,081 而且我肯定會盡力 理解那些之間的映射。 790 00:36:12,081 --> 00:36:14,080 我不知道是否有 之前拿出一個小測驗, 791 00:36:14,080 --> 00:36:18,590 但是這將是一個 問題,我可能會問。 792 00:36:18,590 --> 00:36:22,110 >> 只是一點點,甚至去 進一步陷入CHMOD這裡,這裡 793 00:36:22,110 --> 00:36:27,730 是很一般 chmod這個電話的結構。 794 00:36:27,730 --> 00:36:29,500 那麼當然,我們在這裡文件模式。 795 00:36:29,500 --> 00:36:34,410 參考文獻,這是什麼指的是 誰是我們給這些權限 796 00:36:34,410 --> 00:36:36,570 或者誰是我們採取這些 權限距離。 797 00:36:36,570 --> 00:36:44,330 所以我們有一個在這裡的權限, 就像我們已經給你搭配chmod加X, 798 00:36:44,330 --> 00:36:45,440 正如我們將很快看到。 799 00:36:45,440 --> 00:36:48,460 一只是意味著給這些特定的 權限給大家。 800 00:36:48,460 --> 00:36:49,600 給他們所有。 801 00:36:49,600 --> 00:36:55,370 所以,你很可能具有u加X 或G PLUS x或0加x或多個 802 00:36:55,370 --> 00:36:55,870 物。 803 00:36:55,870 --> 00:36:59,280 使第一部分始終 將要參考。 804 00:36:59,280 --> 00:37:03,220 我們是誰給這些權限, 或者誰是我們帶他們遠離? 805 00:37:03,220 --> 00:37:04,850 >> 第二個是操作員。 806 00:37:04,850 --> 00:37:07,350 所以,你們大多已處理加。 807 00:37:07,350 --> 00:37:12,140 這使得權限 誰要你給他們, 808 00:37:12,140 --> 00:37:14,840 而減,從邏輯上講,刪除它們。 809 00:37:14,840 --> 00:37:16,880 所以沒有什麼太可怕的存在。 810 00:37:16,880 --> 00:37:23,060 然後模式就是我們談到 與讀,寫或執行。 811 00:37:23,060 --> 00:37:29,070 所以加x表示放棄執行 權限給大家。 812 00:37:29,070 --> 00:37:33,430 然後,當然,在其上 特定的文件或目錄。 813 00:37:33,430 --> 00:37:33,980 好不好? 814 00:37:33,980 --> 00:37:36,010 每個人都很好用chmod? 815 00:37:36,010 --> 00:37:37,850 不是太糟糕了? 816 00:37:37,850 --> 00:37:42,417 >> 好了,HTML,任你是 老足夠to-- MySpace的時代? 817 00:37:42,417 --> 00:37:44,750 我送這個給我的部分, 從字面上一半的人 818 00:37:44,750 --> 00:37:45,790 看著我,好像我是個瘋子。 819 00:37:45,790 --> 00:37:47,498 我當時想,伙計們, 我們沒那麼老。 820 00:37:47,498 --> 00:37:48,910 來吧。 821 00:37:48,910 --> 00:37:53,360 超文本標記語言,所以 它的誠實只是一種方式適合你 822 00:37:53,360 --> 00:37:57,990 在網絡上顯示某些東西。 823 00:37:57,990 --> 00:37:59,210 因此,它是一種標記語言。 824 00:37:59,210 --> 00:38:00,640 這不是一個腳本語言。 825 00:38:00,640 --> 00:38:02,160 有沒有在它的邏輯。 826 00:38:02,160 --> 00:38:05,710 它只是改變 顯示方式的東西。 827 00:38:05,710 --> 00:38:07,670 OK,所以這是一個重要的 區別之作。 828 00:38:07,670 --> 00:38:12,030 它認為是一種標記語言, 沒有一種腳本語言。 829 00:38:12,030 --> 00:38:15,100 >> 所以在這裡,我們有我們的HTML標籤。 830 00:38:15,100 --> 00:38:20,390 在這張幻燈片上可能大多數 那些你應該熟悉 831 00:38:20,390 --> 00:38:22,390 ,真正做到舒適。 832 00:38:22,390 --> 00:38:25,700 所以,很顯然,我們有 我們的HTML標籤, 833 00:38:25,700 --> 00:38:29,930 指定了一切 這兩者之間將是HTML。 834 00:38:29,930 --> 00:38:33,070 我們有一些鏈接, 顯然會給你 835 00:38:33,070 --> 00:38:34,990 一個鏈接到一個外部的網頁。 836 00:38:34,990 --> 00:38:37,520 有些題目,我們這裡頭內。 837 00:38:37,520 --> 00:38:40,020 我們有我們的身體用 H1,這是一個標頭, 838 00:38:40,020 --> 00:38:42,260 所以它會讓它好看 和大膽,更大。 839 00:38:42,260 --> 00:38:46,040 然後,我們有一些 P,這是一個段落。 840 00:38:46,040 --> 00:38:49,000 你應該知道 和熟悉的東西 841 00:38:49,000 --> 00:38:54,030 怎麼樣,你插入圖像,是 還有沒有其他的頭班? 842 00:38:54,030 --> 00:38:57,240 我一定會 熟悉DI​​V。 843 00:38:57,240 --> 00:39:00,840 因此,這些具有廣大的標籤 你應該熟悉。 844 00:39:00,840 --> 00:39:04,370 不過,當然,與一切 CS 50,該名單並不詳盡。 845 00:39:04,370 --> 00:39:08,200 所以一定要刷上了。 846 00:39:08,200 --> 00:39:13,260 >> CSS,CSS等,如果有的話你看 我的講座從兩個星期前, 847 00:39:13,260 --> 00:39:16,250 其實只是一種方式 風格你的網頁? 848 00:39:16,250 --> 00:39:18,950 好了,我們有一些標記語言。 849 00:39:18,950 --> 00:39:23,220 HTML,即只需文本的護理 並在那裡它可能是在頁面上。 850 00:39:23,220 --> 00:39:25,760 但CSS是真的什麼使得它很漂亮。 851 00:39:25,760 --> 00:39:30,690 你可以在你的HTML有這些 文件,但我們將在後​​面討論, 852 00:39:30,690 --> 00:39:32,660 我敢肯定它可能 是下一幻燈片,它 853 00:39:32,660 --> 00:39:35,620 通常的做法是,居然 實際上我們真正鼓勵, 854 00:39:35,620 --> 00:39:40,670 你讓他們分開的時候,我們 談MVC和整體模式。 855 00:39:40,670 --> 00:39:42,490 這真的是這樣送入。 856 00:39:42,490 --> 00:39:46,110 >> 因此,CSS只是一種方式 讓事情看起來很漂亮。 857 00:39:46,110 --> 00:39:50,500 這裡的東西,像 身體和#title和.INFO, 858 00:39:50,500 --> 00:39:54,340 這些被稱為選擇器和什麼 他們這樣做是他們選擇的具體的事情 859 00:39:54,340 --> 00:39:59,260 你的HTML文件中 並應用什麼風格, 860 00:39:59,260 --> 00:40:04,090 什麼樣的,你想要的東西, 以你的web特定元素 861 00:40:04,090 --> 00:40:04,590 頁面。 862 00:40:04,590 --> 00:40:08,820 所以在這裡,我們有一個 背景顏色和一個顏色 863 00:40:08,820 --> 00:40:12,450 和字體家族的作為 施加到無論是在體內。 864 00:40:12,450 --> 00:40:15,530 因此,如果我們回頭看這裡,這 並不適用於標題。 865 00:40:15,530 --> 00:40:22,340 這將只適用於什麼 在這些體選擇,OK? 866 00:40:22,340 --> 00:40:25,250 >> 與此稱號,這是 將是同樣的事情, 867 00:40:25,250 --> 00:40:28,410 文本的顏色 作為藍色只會 868 00:40:28,410 --> 00:40:33,870 影響到什麼範圍內 標題選擇。 869 00:40:33,870 --> 00:40:36,580 以及信息在這裡, 文本將是粉紅色, 870 00:40:36,580 --> 00:40:38,600 凡是信息,這是在這裡。 871 00:40:38,600 --> 00:40:40,860 因此,唯一的事情, 是粉紅色的這個頁面上 872 00:40:40,860 --> 00:40:44,100 是日,星期一,2014年11月17日。 873 00:40:44,100 --> 00:40:48,770 OK,所以CSS只是一種方式 有更多的控制over--是嗎? 874 00:40:48,770 --> 00:40:51,850 >> 聽眾:你為什麼有 使用具有所有權的哈希? 875 00:40:51,850 --> 00:40:55,170 >> 漢娜:下一張幻燈片,答應! 876 00:40:55,170 --> 00:40:56,810 我們會到達那裡。 877 00:40:56,810 --> 00:40:59,830 所以這就是為什麼我們必須使用哈希值。 878 00:40:59,830 --> 00:41:03,429 所以,選擇採取三大 我們跟你們有關表格。 879 00:41:03,429 --> 00:41:05,595 我fyou想了解更多, 有大量的在那裡。 880 00:41:05,595 --> 00:41:07,540 有偉大的CSS文件。 881 00:41:07,540 --> 00:41:12,680 有一個標籤名,其中有做 只有你的HTML標籤正常。 882 00:41:12,680 --> 00:41:17,210 所以H1,P,DIV,H2, 這些各種各樣的事情。 883 00:41:17,210 --> 00:41:20,320 我們可以只是名稱的原樣。 884 00:41:20,320 --> 00:41:22,650 所以,我們在這裡看到有 體,這是一個正常的標記。 885 00:41:22,650 --> 00:41:26,660 所以我們可以只是把身體的時候, 我們談論我們的CSS文件。 886 00:41:26,660 --> 00:41:29,730 >> 與標題,所有的原因,我們 有這個哈希是我們有什麼 887 00:41:29,730 --> 00:41:31,010 考慮一個ID。 888 00:41:31,010 --> 00:41:35,400 因此,一個ID應該永遠是 在你的HTML頁面的獨特 889 00:41:35,400 --> 00:41:37,930 所以,當你 提到它,你 890 00:41:37,930 --> 00:41:41,990 知道你僅指 一個具體的事情。 891 00:41:41,990 --> 00:41:46,270 所以在這種情況下在這裡,用我們的 H1在這裡,CS 50審查會議, 892 00:41:46,270 --> 00:41:47,810 我們擁有所有權的ID。 893 00:41:47,810 --> 00:41:54,280 因此,為了僅僅指 這塊我們的HTML,我們做一個哈希稱號。 894 00:41:54,280 --> 00:41:58,080 只是按照慣例,ID被指定 與在他們面前的散列。 895 00:41:58,080 --> 00:42:01,650 以同樣的方式,我們看到 這裡的信息是一類。 896 00:42:01,650 --> 00:42:06,070 等類CSS是 指定為一個點類 897 00:42:06,070 --> 00:42:08,895 或點什麼那類。 898 00:42:08,895 --> 00:42:10,850 所以在這裡這種情況下,它的信息。 899 00:42:10,850 --> 00:42:13,090 >> 所以,我把它收回。 900 00:42:13,090 --> 00:42:16,200 這兩個會 粉紅色在這裡為我們的CSS 901 00:42:16,200 --> 00:42:18,430 因為它們都具有一類的信息。 902 00:42:18,430 --> 00:42:23,070 在我們的CSS文件中,我們指定 與一類的信息任何事情 903 00:42:23,070 --> 00:42:24,120 應是粉紅色的。 904 00:42:24,120 --> 00:42:25,968 這是否有意義? 905 00:42:25,968 --> 00:42:27,435 是嗎? 906 00:42:27,435 --> 00:42:30,731 >> 聽眾:如果你是做 一切在體內白, 907 00:42:30,731 --> 00:42:32,814 然後嘗試做 裡面的東西是藍色的, 908 00:42:32,814 --> 00:42:34,770 會引起問題? 909 00:42:34,770 --> 00:42:37,310 >> 漢娜:那是CSS 級聯樣式表。 910 00:42:37,310 --> 00:42:40,730 所以,無論是朝 底部將優先。 911 00:42:40,730 --> 00:42:44,080 所以,如果你做的東西身上, 你做的一切白色, 912 00:42:44,080 --> 00:42:49,300 再後來你改標題 或者你身體內更改文本, 913 00:42:49,300 --> 00:42:50,560 它會覆蓋。 914 00:42:50,560 --> 00:42:55,360 所以,對任何事 底部將優先。 915 00:42:55,360 --> 00:42:56,730 是嗎? 916 00:42:56,730 --> 00:42:59,627 >> 聽眾:和ID都是唯一的, 但類可以多嗎? 917 00:42:59,627 --> 00:43:00,210 漢娜:沒錯。 918 00:43:00,210 --> 00:43:06,320 所以,ID應該是唯一的,類可以 所說的很多事情,只要你願意。 919 00:43:06,320 --> 00:43:07,580 還有沒有其他問題? 920 00:43:07,580 --> 00:43:09,800 是。 921 00:43:09,800 --> 00:43:11,210 >> 觀眾:[聽不清]。 922 00:43:11,210 --> 00:43:13,509 我想知道是否 有差別。 923 00:43:13,509 --> 00:43:15,217 漢娜:對不起, 究竟是什麼問題? 924 00:43:15,217 --> 00:43:18,960 聽眾:有小 “F”和資本“F”。 925 00:43:18,960 --> 00:43:21,440 漢娜:那麼差 小“F”和資本之間的“F” 926 00:43:21,440 --> 00:43:22,606 不應該有所作為。 927 00:43:22,606 --> 00:43:26,330 因此,“F”將在15無論哪種方式。 928 00:43:26,330 --> 00:43:28,130 酷,什麼事嗎? 929 00:43:28,130 --> 00:43:29,930 大家好,CSS? 930 00:43:29,930 --> 00:43:30,850 是嗎? 931 00:43:30,850 --> 00:43:31,790 >> 聽眾:對不起。 932 00:43:31,790 --> 00:43:35,550 你可以有一個類和一個ID? 933 00:43:35,550 --> 00:43:38,030 >> 漢娜:是的,可以。 934 00:43:38,030 --> 00:43:40,420 事情可以有兩種類和ID。 935 00:43:40,420 --> 00:43:44,670 我強烈推薦 你自己測試這些。 936 00:43:44,670 --> 00:43:50,480 CSS,你將學習充其量只是通過 東西,很簡單的網頁, 937 00:43:50,480 --> 00:43:53,440 制定一些CSS,只是 看他們是如何相互作用的。 938 00:43:53,440 --> 00:43:56,970 你將獲得一個非常好的, 直觀的感覺它是如何工作的。 939 00:43:56,970 --> 00:43:58,810 >> OK,大家好有CSS? 940 00:43:58,810 --> 00:44:01,280 你們都會做 用CSS漂亮的網站了。 941 00:44:01,280 --> 00:44:05,460 OK,最佳實踐,只是 事情要記住,事情 942 00:44:05,460 --> 00:44:09,810 that--這就是為什麼我們停靠 您的設計師和諸如此類的東西。 943 00:44:09,810 --> 00:44:11,820 因此,關閉所有HTML標籤。 944 00:44:11,820 --> 00:44:14,840 所以,如果你有一個開放式的身體, 應該有一個緊密的身體。 945 00:44:14,840 --> 00:44:18,180 如果你有一個開放的段落, 應該有一個緊密的段落。 946 00:44:18,180 --> 00:44:19,555 請檢查您的頁面驗證。 947 00:44:19,555 --> 00:44:23,330 你們應該很熟悉 與此由對置7 948 00:44:23,330 --> 00:44:26,350 與CS 50金融 與W3驗證。 949 00:44:26,350 --> 00:44:28,340 正如我之前說的, 我們的大範式1 950 00:44:28,340 --> 00:44:33,780 被分離與CSS你的風格 從您的標記,這是HTML。 951 00:44:33,780 --> 00:44:36,900 然後,當然,我們有 這個偉大的XKCD到這裡。 952 00:44:36,900 --> 00:44:38,280 耶,漫畫救援! 953 00:44:38,280 --> 00:44:41,340 >> OK,TCP / IP。 954 00:44:41,340 --> 00:44:44,650 之間的這些和HTTP 基本上他們都是協議。 955 00:44:44,650 --> 00:44:46,810 所以,你可能只是想 它們作為一組規則 956 00:44:46,810 --> 00:44:50,110 管理如何的事情 移動在互聯網上。 957 00:44:50,110 --> 00:44:53,410 所以,傳輸控制 協議或互聯網協議, 958 00:44:53,410 --> 00:44:57,280 只是一個方式,以確保 這些數據得到到哪裡去 959 00:44:57,280 --> 00:45:00,030 而我們知道,如果 我們曾經丟失的數據。 960 00:45:00,030 --> 00:45:03,520 所以,如果你們回想起講座 幾個星期前與大衛 961 00:45:03,520 --> 00:45:06,980 在這裡我們有四個信封,他們 都像編號的四分之一, 962 00:45:06,980 --> 00:45:11,300 兩個四,三四個,四 4,這僅僅是一組規則。 963 00:45:11,300 --> 00:45:13,830 我們說,OK,每當我們 發送多個數據包, 964 00:45:13,830 --> 00:45:16,610 我們要編號 它是什麼號碼 965 00:45:16,610 --> 00:45:19,040 又有多少總該 用戶應該得到的。 966 00:45:19,040 --> 00:45:22,540 >> 而這僅僅是告訴誰 接收他們是否該數據 967 00:45:22,540 --> 00:45:26,120 已經得到的一切,或者 事情得到了沿途丟失。 968 00:45:26,120 --> 00:45:28,840 他們需要問一遍。 969 00:45:28,840 --> 00:45:31,140 這其實只是一組規則。 970 00:45:31,140 --> 00:45:33,650 這就是你如何能想起來,好不好? 971 00:45:33,650 --> 00:45:37,700 並且還,它指定端口,這 你們can--演講的時候,我知道, 972 00:45:37,700 --> 00:45:39,170 他們有端口的完整列表。 973 00:45:39,170 --> 00:45:41,630 但是,我們並沒有他們在這裡現在。 974 00:45:41,630 --> 00:45:45,290 >> 所以,超文本傳輸協議 是,再次,這是另一種協議。 975 00:45:45,290 --> 00:45:48,630 所以這是另外一套規則 支配,在這種情況下, 976 00:45:48,630 --> 00:45:51,130 如何超文本傳輸。 977 00:45:51,130 --> 00:45:54,340 所以它只是允許瀏覽器 向Web服務器說話。 978 00:45:54,340 --> 00:45:56,910 正如我們在這裡說,這是 就像人握手。 979 00:45:56,910 --> 00:46:00,480 這只是一種方式來管理 如何web服務器是 980 00:46:00,480 --> 00:46:02,690 要與您的瀏覽器進行交互。 981 00:46:02,690 --> 00:46:05,660 而我們只是一對夫婦的例子。 982 00:46:05,660 --> 00:46:09,100 在這裡,我們有一些要求 在那裡得到的是方法。 983 00:46:09,100 --> 00:46:13,760 我們有HTTP 1.1,這是 協議版本我們。 984 00:46:13,760 --> 00:46:17,230 然後,主機,這是什麼 我們實際上是試圖訪問。 985 00:46:17,230 --> 00:46:21,800 然後,當你看到這裡,我們 得到這個200的一些反應 986 00:46:21,800 --> 00:46:25,032 OK作為我們的HTTP響應代碼。 987 00:46:25,032 --> 00:46:27,240 我們有一個大名單我要去 拉漲在一秒鐘 988 00:46:27,240 --> 00:46:29,430 那你們應該熟悉。 989 00:46:29,430 --> 00:46:35,750 我們有這樣的內容類型的文本/ HTML, 這只是說的數據是什麼類型 990 00:46:35,750 --> 00:46:39,990 我們是從服務器接收,OK? 991 00:46:39,990 --> 00:46:44,230 該主機與此內容類型 是HTTP報頭的一部分。 992 00:46:44,230 --> 00:46:49,610 可以有少或少 必需的上下文中什麼 993 00:46:49,610 --> 00:46:50,580 你處理。 994 00:46:50,580 --> 00:46:53,371 有時候,你有很多的 信息從您的服務器來。 995 00:46:53,371 --> 00:46:56,040 也許他們要求很多 的來自用戶的信息。 996 00:46:56,040 --> 00:46:57,600 它的變化取決於上下文。 997 00:46:57,600 --> 00:47:01,144 如果你看看CS 50研究, 還有很多更上。 998 00:47:01,144 --> 00:47:03,060 但是,我們有很多獲得 通過,所以我打算 999 00:47:03,060 --> 00:47:05,760 正前方,如果去 這就是與你們好嗎? 1000 00:47:05,760 --> 00:47:07,960 酷。 1001 00:47:07,960 --> 00:47:08,460 堅持,稍等。 1002 00:47:08,460 --> 00:47:11,182 我絕對有 整個名單of--呵呵! 1003 00:47:11,182 --> 00:47:13,140 我不知道這是為什麼 一路看過來。 1004 00:47:13,140 --> 00:47:15,660 我想我真的感動 它,而我是sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN:你想教呢? 1006 00:47:16,540 --> 00:47:17,420 還是你要我教的呢? 1007 00:47:17,420 --> 00:47:20,010 >> 聽眾:我想我們可以 只是告訴他們下手。 1008 00:47:20,010 --> 00:47:22,210 我的意思是,你可以進入 他們進一步,但我 1009 00:47:22,210 --> 00:47:26,030 認為它更有意義,因為我 只是在談到HTTP狀態。 1010 00:47:26,030 --> 00:47:28,200 因此,這裡的整個列表。 1011 00:47:28,200 --> 00:47:31,730 我猜發生了什麼事情要發生是 達文會後進入他們。 1012 00:47:31,730 --> 00:47:35,330 但有一個整個列表,一 味道預覽來。 1013 00:47:35,330 --> 00:47:41,640 OK,我們要blow--這是怎麼回事 是一個PHP速成班一樣,沒有其他。 1014 00:47:41,640 --> 00:47:44,874 >> 所以PHP,超文本預處理器, 這是一個遞歸backronym, 1015 00:47:44,874 --> 00:47:46,540 這意味著它被命名為別的東西。 1016 00:47:46,540 --> 00:47:49,050 然後他們都像,這 並沒有真正意義。 1017 00:47:49,050 --> 00:47:52,210 所以他們只是命名它 - 它是一個縮寫, 1018 00:47:52,210 --> 00:47:54,840 所以他們只是使它PHP 超文本預處理器,其中 1019 00:47:54,840 --> 00:47:55,980 只是沒有任何意義。 1020 00:47:55,980 --> 00:47:57,714 有趣的故事。 1021 00:47:57,714 --> 00:47:58,880 這是一種編程語言。 1022 00:47:58,880 --> 00:48:02,360 所以像我強調的是, HTML不是一種編程語言, 1023 00:48:02,360 --> 00:48:05,350 它是一種標記語言,PHP 是一種編程語言。 1024 00:48:05,350 --> 00:48:07,422 你怎麼知道這是 因為有邏輯。 1025 00:48:07,422 --> 00:48:08,380 還有條件語句。 1026 00:48:08,380 --> 00:48:12,750 我們有變數,而我們 有沒有這些東西的HTML。 1027 00:48:12,750 --> 00:48:16,960 >> 好吧,那麼我們這個小 位在這裡,像PHP的味道。 1028 00:48:16,960 --> 00:48:20,510 所以基礎知識,變量名 開始與一個美元符號。 1029 00:48:20,510 --> 00:48:21,500 很多人喜歡它。 1030 00:48:21,500 --> 00:48:22,371 我想起了我們的錢。 1031 00:48:22,371 --> 00:48:22,995 這一切都太棒了。 1032 00:48:22,995 --> 00:48:25,280 我們都希望PHP。 1033 00:48:25,280 --> 00:48:28,020 因此,我們不指定 變量的類型了。 1034 00:48:28,020 --> 00:48:29,995 它是在運行時確定的。 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 解釋器會像, 哦,我們就貫穿, 1037 00:48:35,890 --> 00:48:39,565 並根據上下文, 我們會看到什麼樣的類型 1038 00:48:39,565 --> 00:48:41,560 這些變量需要有。 1039 00:48:41,560 --> 00:48:42,815 有沒有主要功能。 1040 00:48:42,815 --> 00:48:43,690 事情只會運行。 1041 00:48:43,690 --> 00:48:47,851 你們與你進口的 最後一對集,你會發現這一點。 1042 00:48:47,851 --> 00:48:49,350 有沒有一個真正的主要功能。 1043 00:48:49,350 --> 00:48:52,070 你剛才寫的是什麼 你想會發生。 1044 00:48:52,070 --> 00:48:53,280 正中下懷,它發生了。 1045 00:48:53,280 --> 00:48:56,760 這就是PHP你。 1046 00:48:56,760 --> 00:48:59,180 >> 數組是非常相似的。 1047 00:48:59,180 --> 00:49:01,270 我們仍然有這樣的支架。 1048 00:49:01,270 --> 00:49:05,940 在這裡,我們有一些變量 所謂的改編,它是平等的 1049 00:49:05,940 --> 00:49:08,540 to--我們有正常的 括號符號。 1050 00:49:08,540 --> 00:49:10,630 我們有一些關鍵的價值。 1051 00:49:10,630 --> 00:49:14,630 而大的區別 C和PHP陣列之間 1052 00:49:14,630 --> 00:49:19,330 是,我們可以有這樣的associate-- 我們可以值的鍵關聯。 1053 00:49:19,330 --> 00:49:22,440 因此,而不是僅僅有 即索引的數組 1054 00:49:22,440 --> 00:49:26,630 由編號或位置 在陣列中該元素的, 1055 00:49:26,630 --> 00:49:29,060 我們可以用一個關鍵的實際關聯。 1056 00:49:29,060 --> 00:49:36,700 在這裡我們可以說,OK,我想不管 值與水果有關。 1057 00:49:36,700 --> 00:49:39,280 也許我們有水果去了香蕉。 1058 00:49:39,280 --> 00:49:41,760 所以它會返回香蕉給我們。 1059 00:49:41,760 --> 00:49:44,100 >> 但基本上,最 這個強大的東西 1060 00:49:44,100 --> 00:49:47,960 是,如果你們還記得 從講座,我們基本上演示 1061 00:49:47,960 --> 00:49:53,050 重寫拼寫的PHP,它 was--查找真的只是想, 1062 00:49:53,050 --> 00:49:55,007 確實存在這個鍵? 1063 00:49:55,007 --> 00:49:56,590 這真是一種它的力量。 1064 00:49:56,590 --> 00:49:58,560 你並不需要遍歷 通過您的數組。 1065 00:49:58,560 --> 00:50:00,311 你不需要知道 什麼樣的空間是英寸 1066 00:50:00,311 --> 00:50:01,976 這可能是在端或開頭。 1067 00:50:01,976 --> 00:50:04,790 只要你知道鍵 即與該值相關聯, 1068 00:50:04,790 --> 00:50:09,740 PHP可以只吐了價值 右後衛了你,好不好? 1069 00:50:09,740 --> 00:50:12,960 >> 然後,我們也只是 剛剛因為我們 1070 00:50:12,960 --> 00:50:16,750 可以鍵值對 並不意味著你必須。 1071 00:50:16,750 --> 00:50:19,180 你也可以創建 一個正常的陣列喜歡這裡, 1072 00:50:19,180 --> 00:50:21,540 在底部,在那裡它 只是一個,兩個,三個,四個。 1073 00:50:21,540 --> 00:50:22,510 這些都是我們的價值觀。 1074 00:50:22,510 --> 00:50:25,320 而事實上,他們的密鑰索引。 1075 00:50:25,320 --> 00:50:26,830 所以關鍵的人會是零。 1076 00:50:26,830 --> 00:50:28,610 鍵兩將是1。 1077 00:50:28,610 --> 00:50:31,910 等等等等,除非 您明確分配的關鍵, 1078 00:50:31,910 --> 00:50:34,630 你可以假設 值只是他們的指數。 1079 00:50:34,630 --> 00:50:37,290 這是否有意義給大家? 1080 00:50:37,290 --> 00:50:38,070 沒問題嗎? 1081 00:50:38,070 --> 00:50:38,930 真棒。 1082 00:50:38,930 --> 00:50:44,420 >> OK,的foreach是一種 遍歷數組的。 1083 00:50:44,420 --> 00:50:47,490 因此,我們有東西在這裡, 只是一般結構。 1084 00:50:47,490 --> 00:50:51,020 的這樣的foreach,名稱 我們的陣列,因為不管 1085 00:50:51,020 --> 00:50:53,930 要調用每個 在你的數組元素, 1086 00:50:53,930 --> 00:50:57,270 我們可以做一些與 該元件或與該值。 1087 00:50:57,270 --> 00:50:58,680 所以我們有一個例子在這裡。 1088 00:50:58,680 --> 00:51:05,770 我們有關聯 陣列,這兩個條目 1089 00:51:05,770 --> 00:51:10,080 與巴正與富相關 和qux正與巴茲有關。 1090 00:51:10,080 --> 00:51:12,180 所以,關鍵是foo和巴茲。 1091 00:51:12,180 --> 00:51:13,650 價值觀是酒吧和qux。 1092 00:51:13,650 --> 00:51:18,560 所以的foreach,我們有我們的數組 這裡,作為關鍵值對。 1093 00:51:18,560 --> 00:51:21,560 這使我們能夠訪問 兩個鍵和值。 1094 00:51:21,560 --> 00:51:23,680 也許你只是想 值,在這種情況 1095 00:51:23,680 --> 00:51:27,640 你可能只是不喜歡改編 美元的價值,然後你 1096 00:51:27,640 --> 00:51:30,640 剛剛訪問值 當你遍歷。 1097 00:51:30,640 --> 00:51:32,600 但也許,對於一些 所以,你想要的關鍵, 1098 00:51:32,600 --> 00:51:35,460 這就是為什麼我選擇 這個例子來代替。 1099 00:51:35,460 --> 00:51:40,240 所以,你實際上可以操縱 鍵和值在此情況下。 1100 00:51:40,240 --> 00:51:41,070 好不好? 1101 00:51:41,070 --> 00:51:41,905 問題嗎? 1102 00:51:41,905 --> 00:51:44,279 >> 聽眾:如果你想 只是操縱鍵,將 1103 00:51:44,279 --> 00:51:45,910 你所要做的foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON:對。 1105 00:51:47,360 --> 00:51:50,560 所以,如果你想 操作只是關鍵, 1106 00:51:50,560 --> 00:51:53,680 你仍然需要這個 語法,因為如果你只是 1107 00:51:53,680 --> 00:51:56,930 有改編的東西, 因為一件事,那就是 1108 00:51:56,930 --> 00:52:00,070 將假設你想 的值,而不是關鍵。 1109 00:52:00,070 --> 00:52:06,780 所以,如果你曾經只是有一樣, 作為改編,也許這就是像$元素, 1110 00:52:06,780 --> 00:52:11,670 它會假設你問 對於剛剛在每個點的值。 1111 00:52:11,670 --> 00:52:13,879 如果要明確 做一些事情的關鍵, 1112 00:52:13,879 --> 00:52:16,170 即使你不打算 與價值做任何事情, 1113 00:52:16,170 --> 00:52:18,430 你需要這個結構 我們在這裡 1114 00:52:18,430 --> 00:52:22,330 在那裡你明確要求 兩個鍵和值。 1115 00:52:22,330 --> 00:52:24,170 大的問題。 1116 00:52:24,170 --> 00:52:25,940 還要別的嗎? 1117 00:52:25,940 --> 00:52:27,490 酷。 1118 00:52:27,490 --> 00:52:29,911 >> 好吧,PHP和HTML。 1119 00:52:29,911 --> 00:52:31,410 呵呵,我們又回到了對重新設置7。 1120 00:52:31,410 --> 00:52:35,380 所以這應該看起來有點眼熟。 1121 00:52:35,380 --> 00:52:41,760 所以這是一些簡單的HTML表單 有打招呼的一些輸入名稱。 1122 00:52:41,760 --> 00:52:43,820 我們看到,我們有我們的GET方法。 1123 00:52:43,820 --> 00:52:47,430 如果我們從對集還記得, 當這個表單提交, 1124 00:52:47,430 --> 00:52:58,130 它發出名為$ _GET數組有 所有來自這些輸入或變量 1125 00:52:58,130 --> 00:53:00,490 這應該是形式 操縱在我們的PHP。 1126 00:53:00,490 --> 00:53:03,320 因此,在這種情況下,用戶 會把自己的名字。 1127 00:53:03,320 --> 00:53:04,370 他們提交。 1128 00:53:04,370 --> 00:53:07,810 而且我們看到,我們在這裡得到一些陣列。 1129 00:53:07,810 --> 00:53:09,080 我們有GET數組。 1130 00:53:09,080 --> 00:53:11,510 我們正在訪問的名稱。 1131 00:53:11,510 --> 00:53:15,070 >> 這樣說,OK,給我 這與名字相關聯的價值, 1132 00:53:15,070 --> 00:53:16,550 命名是這裡的關鍵。 1133 00:53:16,550 --> 00:53:21,400 而這直接映射到什麼 我們說我們的輸入名字。 1134 00:53:21,400 --> 00:53:28,960 因此,這是給你的關鍵是什麼 將是你的陣列這裡。 1135 00:53:28,960 --> 00:53:31,220 這是否有意義給大家? 1136 00:53:31,220 --> 00:53:32,070 是嗎? 1137 00:53:32,070 --> 00:53:36,240 >> 聽眾:這個名字進去參考 在[聽不清]紫線? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON:它是指這個位置。 1139 00:53:37,740 --> 00:53:43,840 因此,本場就在這裡, 它指的是這個名字在這裡。 1140 00:53:43,840 --> 00:53:47,800 因此,這可能已被命名為 像電話號碼,或什麼的。 1141 00:53:47,800 --> 00:53:51,790 這個名字實際上是說,有什麼 你打這個領域? 1142 00:53:51,790 --> 00:53:53,600 你打算怎麼來 參照這個領域? 1143 00:53:53,600 --> 00:53:57,670 而這個名字其實是喜歡,我們 說這句話的領域被稱為名字。 1144 00:53:57,670 --> 00:53:59,224 這就是我們如何去訪問它。 1145 00:53:59,224 --> 00:54:02,070 >> 聽眾:所以是什麼樣子, 輸入名稱等於鮑勃,還有 - 1146 00:54:02,070 --> 00:54:04,380 >> ALISON:對,那麼你 會得到鮑伯那裡。 1147 00:54:04,380 --> 00:54:06,090 沒錯。 1148 00:54:06,090 --> 00:54:07,800 每個人都很酷? 1149 00:54:07,800 --> 00:54:10,990 好吧,所以得到與POST, 這是兩個主要途徑 1150 00:54:10,990 --> 00:54:14,880 我們傳遞數據的HTTP請求。 1151 00:54:14,880 --> 00:54:17,370 你們應該已經看到 這兩個有希望。 1152 00:54:17,370 --> 00:54:20,940 所以用GET,信息 穿過的URL。 1153 00:54:20,940 --> 00:54:23,490 所以,如果你做谷歌 搜索,YouTube上,你會 1154 00:54:23,490 --> 00:54:25,130 可能會注意到一些問號。 1155 00:54:25,130 --> 00:54:28,230 然後,所有的話 您剛才擺在那裡。 1156 00:54:28,230 --> 00:54:31,410 和POST將數據傳遞 在HTTP消息體。 1157 00:54:31,410 --> 00:54:36,922 所以不像GET,你有種考慮 該數據是從用戶隱藏。 1158 00:54:36,922 --> 00:54:38,630 但是,什麼是真正的 重要的是要明白 1159 00:54:38,630 --> 00:54:44,040 是,這是仍 就像不安全的GET。 1160 00:54:44,040 --> 00:54:48,780 我喜歡用的比喻是,如果 你有你的銀行帳號 1161 00:54:48,780 --> 00:54:52,795 你把它寫在外面 一個信封,那是相當不安全。 1162 00:54:52,795 --> 00:54:55,920 如果你要在一塊寫 紙,把它放在信封內, 1163 00:54:55,920 --> 00:54:58,850 這還真是不安全的,因為 所有你需要做的就是打開了 1164 00:54:58,850 --> 00:55:03,480 並期待在實際內容 該消息的一看就知道。 1165 00:55:03,480 --> 00:55:08,310 因此,這是“隱藏”,並且人喜歡 認為它是安全的,但它真的不是。 1166 00:55:08,310 --> 00:55:11,000 我敢肯定,達文會 進入更多的,也許。 1167 00:55:11,000 --> 00:55:12,850 但它是一個重要的 區別使 1168 00:55:12,850 --> 00:55:15,820 而一些真正的好理解。 1169 00:55:15,820 --> 00:55:19,220 >> OK,SQL,結構化查詢語言。 1170 00:55:19,220 --> 00:55:22,220 所有的東西, 我們已經看到了這樣最近! 1171 00:55:22,220 --> 00:55:25,400 所以它基本上只是設計, 顯然,用於管理數據。 1172 00:55:25,400 --> 00:55:30,560 你們有很多的經驗, 這在你的表與PHP MyAdmin。 1173 00:55:30,560 --> 00:55:34,100 並有四種常見的查詢 我們希望你們知道的。 1174 00:55:34,100 --> 00:55:37,304 因此,有更新,插入, 選擇和刪除。 1175 00:55:37,304 --> 00:55:38,970 所以一定要確保你知道那些真的很好。 1176 00:55:38,970 --> 00:55:40,960 我們要去 通過他們的真快。 1177 00:55:40,960 --> 00:55:44,340 >> 所以更新,真的像什麼 你可能會想這樣做, 1178 00:55:44,340 --> 00:55:46,740 它只是更新數據庫中的數據。 1179 00:55:46,740 --> 00:55:48,750 因此,我們有一些例子來說明。 1180 00:55:48,750 --> 00:55:53,310 這是一般 更新查詢的結構。 1181 00:55:53,310 --> 00:55:56,150 因此,我們更新表 我們正在談論的。 1182 00:55:56,150 --> 00:56:00,520 我們要設置一定的 值,某些列 1183 00:56:00,520 --> 00:56:02,600 等於特定值。 1184 00:56:02,600 --> 00:56:07,500 因此,這只是更新表,改變 在這種情況下,所有行的值。 1185 00:56:07,500 --> 00:56:13,690 因此,在這一輪下來這裡,實際 例如,我們有insert--遺憾。 1186 00:56:13,690 --> 00:56:17,630 該幻燈片先進 我沒有意識到這一點。 1187 00:56:17,630 --> 00:56:22,230 >> 所以這個更新表中設置等於COL1 以VAL1​​那裡的房子等於“宿舍樓裡。” 1188 00:56:22,230 --> 00:56:25,300 這是什麼人做的 它只是改變了,只有它 1189 00:56:25,300 --> 00:56:28,130 更新特定的地方,這些價值。 1190 00:56:28,130 --> 00:56:32,300 因此,在這個第一個,它改變這些 一切在你的表值, 1191 00:56:32,300 --> 00:56:32,860 好不好? 1192 00:56:32,860 --> 00:56:35,820 這將改變這種 對於每一個輸入欄, 1193 00:56:35,820 --> 00:56:37,020 每一個單列。 1194 00:56:37,020 --> 00:56:40,840 但是,這在哪裡,你可以 把它看作一個限定。 1195 00:56:40,840 --> 00:56:44,020 所以,它一定會改變 它在非常特殊的地方。 1196 00:56:44,020 --> 00:56:47,840 因此,在對設置7,當你 也許更新的現金量 1197 00:56:47,840 --> 00:56:53,050 您的用戶有,你可能有 一些在那裡ID等於會話ID,對不對? 1198 00:56:53,050 --> 00:56:55,280 >> 因為你不想 改變的現金數額 1199 00:56:55,280 --> 00:56:57,630 每個人誰 使用你的網站。 1200 00:56:57,630 --> 00:57:00,480 你想改變一個 具體的人,那人是 1201 00:57:00,480 --> 00:57:02,410 無論是誰使用它在那個時候。 1202 00:57:02,410 --> 00:57:04,320 對不對? 1203 00:57:04,320 --> 00:57:07,510 OK,所以插入,插入 某些值到表中。 1204 00:57:07,510 --> 00:57:11,650 這是當你像 創建一個全新的用戶。 1205 00:57:11,650 --> 00:57:14,240 這裡的一般結構 被插入到任何表 1206 00:57:14,240 --> 00:57:15,680 我們談論。 1207 00:57:15,680 --> 00:57:18,910 值,作為值 我們實際上要插入。 1208 00:57:18,910 --> 00:57:23,060 OK,讓我們在這裡看到,我們 已經插入到表中。 1209 00:57:23,060 --> 00:57:27,790 這是特定的列與 其對應的值。 1210 00:57:27,790 --> 00:57:29,940 因此,這表示,插入 含有一個新行 1211 00:57:29,940 --> 00:57:33,660 在值val1和val2中 這些特定的列。 1212 00:57:33,660 --> 00:57:39,240 >> 因此,也許你只是想填補 出一半的東西在該行中。 1213 00:57:39,240 --> 00:57:41,150 這就是這部分在這裡讓你做。 1214 00:57:41,150 --> 00:57:43,280 它可以讓你真正 確定哪些部分。 1215 00:57:43,280 --> 00:57:44,244 是嗎? 1216 00:57:44,244 --> 00:57:52,150 >> 聽眾:你能只[聽不清] 細胞行[聽不清]嗎? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON:如果你只填寫 您的行的某些部分, 1218 00:57:55,000 --> 00:57:57,480 這些細胞其餘都只是空的。 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 只要你讓他們 是空的,這不是一個問題。 1221 00:58:05,660 --> 00:58:09,570 如果您嘗試訪問它們,這是 會返回一些空元素。 1222 00:58:09,570 --> 00:58:13,850 但重要的是要知道 在某些表中, 1223 00:58:13,850 --> 00:58:16,690 他們已經被允許為空。 1224 00:58:16,690 --> 00:58:18,890 您可能已經運行到一個 您對集時的問題 1225 00:58:18,890 --> 00:58:21,320 因為我們沒有讓任何 你的價值觀是空的。 1226 00:58:21,320 --> 00:58:26,110 但是,你可以指定一個 表中的可選值。 1227 00:58:26,110 --> 00:58:29,640 >> OK,選擇,所以這是 得到的只是一種方式 1228 00:58:29,640 --> 00:58:33,790 從表中的特定數據處 你想要一些標識符。 1229 00:58:33,790 --> 00:58:37,990 從表中有那麼選擇星級 山坳等於東西只是意味著, 1230 00:58:37,990 --> 00:58:43,820 給我所有相關的數據 其中該特定列是真的。 1231 00:58:43,820 --> 00:58:49,020 所以在這種情況下,恆星將 整個行返回給你,好不好? 1232 00:58:49,020 --> 00:58:54,880 >> 然後,在這種情況下,選擇從星 表只是給你整個表。 1233 00:58:54,880 --> 00:58:58,940 然後,刪除明顯,它只是 從表中刪除該行。 1234 00:58:58,940 --> 00:59:01,320 因此,從表中刪除, 無論表我們 1235 00:59:01,320 --> 00:59:06,830 參考,其中的一些具體 標識符或一些條件為真。 1236 00:59:06,830 --> 00:59:07,720 是嗎? 1237 00:59:07,720 --> 00:59:08,700 >> 聽眾:問題。 1238 00:59:08,700 --> 00:59:10,699 你為什麼要使用雙 報價,以及是否 1239 00:59:10,699 --> 00:59:13,600 做雙引號或單 報價,這有區別嗎? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON:雙引號或單引號 不使SQL差異。 1241 00:59:18,235 --> 00:59:19,610 我以為我看到了另外一個問題。 1242 00:59:19,610 --> 00:59:20,814 是嗎? 1243 00:59:20,814 --> 00:59:25,070 >> 聽眾:不影響它什麼 從查詢中獲取逃脫? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON:羅布? 1245 00:59:27,945 --> 00:59:31,410 >> 羅伯:那你的意思 從查詢逃出? 1246 00:59:31,410 --> 00:59:36,870 >> 觀眾:如果有人有 形式單一查詢of-- 1247 00:59:36,870 --> 00:59:39,862 >> 羅伯:如果有人要 把一個單引號, 1248 00:59:39,862 --> 00:59:43,560 那麼只要你消毒 您的輸入,那麼也沒關係。 1249 00:59:43,560 --> 00:59:46,205 但是,如果您使用的是單 報價和你是不正確 1250 00:59:46,205 --> 00:59:47,914 逃避你的投入, 那麼是的,他們需要 1251 00:59:47,914 --> 00:59:51,079 把一個單引號,以打破 你的代碼。如果使用雙引號, 1252 00:59:51,079 --> 00:59:53,580 他們需要把一個雙 舉打破你的代碼。 1253 00:59:53,580 --> 00:59:56,163 但只要你逃避的事情 正確,也沒關係。 1254 00:59:56,163 --> 00:59:59,220 它只是將被翻譯 以正確的符號而已。 1255 00:59:59,220 --> 01:00:02,332 >> 聽眾:是什麼逃生呢? 1256 01:00:02,332 --> 01:00:04,040 ALISON:嗯,像 消毒和逃生。 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 我們有考試,偉大的XKCD 漫畫,他們拉起,你有, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 羅伯:這是最後一張幻燈片。 1261 01:00:16,670 --> 01:00:18,500 ALISON:這是最後一張幻燈片,真的嗎? 1262 01:00:18,500 --> 01:00:20,200 哦,我的上帝。 1263 01:00:20,200 --> 01:00:21,780 在那裡,我們走了,完美。 1264 01:00:21,780 --> 01:00:27,900 OK,所以基本上,你可以注入 事情到這個SQL查詢 1265 01:00:27,900 --> 01:00:30,560 它傷了你 代碼或大衛顯示 1266 01:00:30,560 --> 01:00:38,460 在課堂上,如果我們有一些單 報價1等於1,如果在我們的代碼, 1267 01:00:38,460 --> 01:00:41,230 我們只是直接複製,在和 我們有一個結束的單引號, 1268 01:00:41,230 --> 01:00:44,740 發生的事情是,我們得到 一些表達式 1269 01:00:44,740 --> 01:00:48,680 計算結果為true即會 讓別人進入我們的數據庫 1270 01:00:48,680 --> 01:00:51,720 並獲取數據,我們 不想讓他們得到的。 1271 01:00:51,720 --> 01:00:54,240 所以消毒的投入 只是意味著確保 1272 01:00:54,240 --> 01:00:57,680 我們正在逃避這些 人物和他們的指定 1273 01:00:57,680 --> 01:01:01,720 作為字符,而不是東西 應允許 1274 01:01:01,720 --> 01:01:04,990 要採取字面上 作為我們的SQL語句。 1275 01:01:04,990 --> 01:01:09,980 >> 因此,大的事情,我們說 那你們應該使用 1276 01:01:09,980 --> 01:01:13,650 是HTML特殊字符, 這是一件好事 1277 01:01:13,650 --> 01:01:15,730 你可能想看一看。 1278 01:01:15,730 --> 01:01:17,240 OK,刪除。 1279 01:01:17,240 --> 01:01:19,450 數據類型,這都將是網上。 1280 01:01:19,450 --> 01:01:23,510 既然我們已經離開了15分鐘,我 剛準備走的權利,通過這一點。 1281 01:01:23,510 --> 01:01:28,500 PHP和SQL,基本上這是 剛剛我們有一個引導作用, 1282 01:01:28,500 --> 01:01:31,520 幫著防範 這些惡意攻擊。 1283 01:01:31,520 --> 01:01:33,970 所以每當你使用 查詢中,我們要確保 1284 01:01:33,970 --> 01:01:36,560 事情被消毒和諸如此類的東西。 1285 01:01:36,560 --> 01:01:41,070 >> MVC只是一個設計模式, 這樣的模型,視圖控制器。 1286 01:01:41,070 --> 01:01:44,200 這只是一種方式讓事情 好和以相同的方式分裂 1287 01:01:44,200 --> 01:01:47,100 我們傾向於因素 從代碼到功能。 1288 01:01:47,100 --> 01:01:53,390 這僅僅是一個網頁設計的框架 它允許你做同樣的事情。 1289 01:01:53,390 --> 01:01:54,760 我要跳過此。 1290 01:01:54,760 --> 01:01:58,530 >> 這是後話,我 將超級舒適的使用。 1291 01:01:58,530 --> 01:02:01,132 這是一個偉大的小桌上。 1292 01:02:01,132 --> 01:02:03,090 它給你的函數 例如模型。 1293 01:02:03,090 --> 01:02:05,473 我只是要通過這個,因為我 真的要達文才能夠說話。 1294 01:02:05,473 --> 01:02:07,140 如果你有任何問題, 請隨意。 1295 01:02:07,140 --> 01:02:07,931 之後我會在這裡。 1296 01:02:07,931 --> 01:02:10,360 只是來跟我說話。 1297 01:02:10,360 --> 01:02:13,380 就這樣,我們有HTTP狀態。 1298 01:02:13,380 --> 01:02:16,270 和達文的打算炸毀 通過這15分鐘。 1299 01:02:16,270 --> 01:02:17,560 這將是巨大的。 1300 01:02:17,560 --> 01:02:18,893 >> DAVIN:OK。 1301 01:02:18,893 --> 01:02:20,312 嗯,你的麥克風? 1302 01:02:20,312 --> 01:02:22,210 是啊。 1303 01:02:22,210 --> 01:02:23,336 抱歉。 1304 01:02:23,336 --> 01:02:24,460 ALISON:路做好準備。 1305 01:02:24,460 --> 01:02:25,335 DAVIN:不,我已經準備好了。 1306 01:02:25,335 --> 01:02:25,860 我準備好了。 1307 01:02:25,860 --> 01:02:28,790 讓我們做到這一點。 1308 01:02:28,790 --> 01:02:29,290 它的準備。 1309 01:02:29,290 --> 01:02:30,041 好不好。 1310 01:02:30,041 --> 01:02:30,540 抱歉。 1311 01:02:30,540 --> 01:02:31,664 我把咖啡灑在我自己。 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 我不知道如果我更 心煩意亂,我看傻了, 1314 01:02:38,210 --> 01:02:40,600 或者說我沒有咖啡了。 1315 01:02:40,600 --> 01:02:44,480 反正,只是一個快速公告 關於紙張你們有。 1316 01:02:44,480 --> 01:02:47,994 所以這個表你們有沒有 官方有什麼的測驗。 1317 01:02:47,994 --> 01:02:49,660 這是官方的什麼在測驗。 1318 01:02:49,660 --> 01:02:52,520 此外,在網站上,我們告訴 你,OK,這將是對測驗。 1319 01:02:52,520 --> 01:02:55,020 所以在小備忘單 你有,不是官方的。 1320 01:02:55,020 --> 01:02:56,690 而且有它的錯誤。 1321 01:02:56,690 --> 01:03:01,490 所以最好不要只是一味地使用它。 1322 01:03:01,490 --> 01:03:04,390 所以,是的,就是這樣。 1323 01:03:04,390 --> 01:03:05,980 因此,讓我們進入這個真正的快。 1324 01:03:05,980 --> 01:03:07,420 >> 因此,HTTP狀態。 1325 01:03:07,420 --> 01:03:10,430 所以會發生什麼時 網站,一切都很好。 1326 01:03:10,430 --> 01:03:11,144 一切都OK。 1327 01:03:11,144 --> 01:03:13,310 一切都回來 你你想要的方式。 1328 01:03:13,310 --> 01:03:15,370 你得到一個200 OK。 1329 01:03:15,370 --> 01:03:19,250 301,在那裡我們已經看到,301呢? 1330 01:03:19,250 --> 01:03:20,890 等一下,這是怎麼回事? 1331 01:03:20,890 --> 01:03:23,250 抱歉。 1332 01:03:23,250 --> 01:03:24,980 我們的安全時看到我的錫講座。 1333 01:03:24,980 --> 01:03:30,690 所以安全期間,因此,如果大衛鍵入 HTTP,然後試圖去cs50.net, 1334 01:03:30,690 --> 01:03:31,940 你會看到301移動。 1335 01:03:31,940 --> 01:03:32,440 為什麼呢? 1336 01:03:32,440 --> 01:03:35,570 因為它會重定向 您將自動為我們的HTTPS。 1337 01:03:35,570 --> 01:03:38,649 >> 所以301提出,只是它的 基本上是一個重定向。 1338 01:03:38,649 --> 01:03:40,190 你可以考慮一下這樣的。 1339 01:03:40,190 --> 01:03:43,790 任何開頭2的的狀態的, 這些都很喜歡,OK,一切都OK。 1340 01:03:43,790 --> 01:03:46,530 任何啟動的狀態 3,那些重定向。 1341 01:03:46,530 --> 01:03:49,571 狀態開始的4,該裝置 有一些客戶端錯誤的。 1342 01:03:49,571 --> 01:03:52,440 狀態開始的5, 這是某種形式的服務器錯誤。 1343 01:03:52,440 --> 01:03:54,680 種所以你分手 在狀態類的。 1344 01:03:54,680 --> 01:03:59,120 所以304不是沒有修改,所以在你的 server.c對集,讓我們說你 1345 01:03:59,120 --> 01:04:00,600 加載cat.html。 1346 01:04:00,600 --> 01:04:03,360 一切都回來了, 你會得到200秒,OK,太好了。 1347 01:04:03,360 --> 01:04:04,540 >> 比方說,你刷新它。 1348 01:04:04,540 --> 01:04:07,310 那麼,這裡面 cat.html,你有一個JPEG。 1349 01:04:07,310 --> 01:04:09,520 嗯,JPEG不 會得到重新加載。 1350 01:04:09,520 --> 01:04:12,140 你不會張貼另一 GET請求到服務器, 1351 01:04:12,140 --> 01:04:13,980 然後讓所有的信息反饋。 1352 01:04:13,980 --> 01:04:17,560 這將只是be--的圖像 將被緩存的機器上。 1353 01:04:17,560 --> 01:04:19,540 並且使得圖像將是一個304。 1354 01:04:19,540 --> 01:04:20,720 所以它沒有被修改。 1355 01:04:20,720 --> 01:04:24,600 如果你再平倉,清晰 餅乾,然後刷新 1356 01:04:24,600 --> 01:04:27,490 並嘗試加載網頁 再次,你會看到200秒。 1357 01:04:27,490 --> 01:04:28,910 你不會看到304。 1358 01:04:28,910 --> 01:04:32,340 >> 400,錯​​誤的請求,真正的 很快,就像如果你 1359 01:04:32,340 --> 01:04:34,880 將要發送 JSON對象服務器 1360 01:04:34,880 --> 01:04:38,090 和你的JSON對象是不正確的, 你會看到類似的東西。 1361 01:04:38,090 --> 01:04:39,000 403,禁止的。 1362 01:04:39,000 --> 01:04:40,330 當你看到一個被禁止? 1363 01:04:40,330 --> 01:04:41,394 大概大概? 1364 01:04:41,394 --> 01:04:42,060 聽眾:CHMOD。 1365 01:04:42,060 --> 01:04:42,950 DAVIN:文件模式,是的。 1366 01:04:42,950 --> 01:04:44,730 所以,你還沒有設置 權限正確。 1367 01:04:44,730 --> 01:04:45,577 404,沒有找到。 1368 01:04:45,577 --> 01:04:46,410 它只是不存在。 1369 01:04:46,410 --> 01:04:48,670 如果你在錯誤的URL類型,這樣。 1370 01:04:48,670 --> 01:04:53,500 500內部服務器錯誤,服務器 可能未正確配置。 1371 01:04:53,500 --> 01:04:56,260 東西不是你的終點,而是 一些在服務器端。 1372 01:04:56,260 --> 01:04:57,240 和503? 1373 01:04:57,240 --> 01:04:59,502 很多人都看到了 503S中的最後一個P-集。 1374 01:04:59,502 --> 01:05:00,460 什麼時候發生的呢? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 我聽到傳聞。 1377 01:05:05,660 --> 01:05:07,767 >> 聽眾:當谷歌 決定你是一個機器人。 1378 01:05:07,767 --> 01:05:10,350 DAVIN:是的,當谷歌決定 你是一個機器人,你得到503S。 1379 01:05:10,350 --> 01:05:11,560 所以這是一個過載。 1380 01:05:11,560 --> 01:05:14,620 如果你從服務器請求 太多了,它通常是暫時的。 1381 01:05:14,620 --> 01:05:15,560 而且大部分你注意到了這一點。 1382 01:05:15,560 --> 01:05:16,185 所以,你看到了503。 1383 01:05:16,185 --> 01:05:19,282 你可能已經採取了一點 突破,那麼503S就走了, 1384 01:05:19,282 --> 01:05:20,490 和一切都沒有問題。 1385 01:05:20,490 --> 01:05:26,640 >> GABE:真正的快,什麼時候你們得 大概在500這個最後的問題設置? 1386 01:05:26,640 --> 01:05:27,954 是嗎? 1387 01:05:27,954 --> 01:05:30,906 >> 聽眾:通常,如果 服務器有錯位的文件 1388 01:05:30,906 --> 01:05:34,650 或[聽不清]他們 機[聽不清]。 1389 01:05:34,650 --> 01:05:38,870 >> 蓋柏:所以這可能是一個配置 問題在你的PHP服務器上。 1390 01:05:38,870 --> 01:05:42,250 但它可能只是一些 就像一個分號你忘了。 1391 01:05:42,250 --> 01:05:44,130 如果你輸入PHP, 一些不正確的語法 1392 01:05:44,130 --> 01:05:46,000 可能讓你類似的東西。 1393 01:05:46,000 --> 01:05:46,960 好不好? 1394 01:05:46,960 --> 01:05:48,610 >> DAVIN:酷。 1395 01:05:48,610 --> 01:05:51,180 你想我做只是直到AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> GABE:[聽不清]。 1397 01:05:52,950 --> 01:05:53,450 DAVIN:OK。 1398 01:05:53,450 --> 01:05:54,230 那麼什麼是DOM? 1399 01:05:54,230 --> 01:05:55,290 什麼是DOM代表什麼? 1400 01:05:55,290 --> 01:05:56,990 >> 聽眾:文檔對象模型。 1401 01:05:56,990 --> 01:05:57,490 DAVIN:尼斯。 1402 01:05:57,490 --> 01:06:00,775 為什麼我們喜歡它? 1403 01:06:00,775 --> 01:06:02,670 真棒。 1404 01:06:02,670 --> 01:06:06,651 對,所以它只是允許我們訪問 在HTML,很快進入我們的頁面。 1405 01:06:06,651 --> 01:06:07,150 為什麼呢? 1406 01:06:07,150 --> 01:06:09,980 因為我們對待我們的 頁面,對待我們的HTML標籤, 1407 01:06:09,980 --> 01:06:11,730 一切治療 因為如果他們的對象。 1408 01:06:11,730 --> 01:06:13,710 如果我們對待他們像他們 對象,那麼我們能做些什麼? 1409 01:06:13,710 --> 01:06:15,210 好了,我們可以對它們調用的函數。 1410 01:06:15,210 --> 01:06:16,460 這是很重要的,為什麼? 1411 01:06:16,460 --> 01:06:19,200 好了,因為我們要使用 JavaScript來更新我們的HTML, 1412 01:06:19,200 --> 01:06:20,500 更新這些對象。 1413 01:06:20,500 --> 01:06:23,869 因此,如果我們像對待對象, 那麼我們就可以對它們調用的函數。 1414 01:06:23,869 --> 01:06:26,660 我要進入這個有點 當我進入更多的JavaScript, 1415 01:06:26,660 --> 01:06:30,510 但你都見過像 的document.getElementById。 1416 01:06:30,510 --> 01:06:32,870 所以,文件是你 元素,讓元素通過ID, 1417 01:06:32,870 --> 01:06:35,087 所以你要去看看 在一個HTML標記的一些標識。 1418 01:06:35,087 --> 01:06:36,920 然後,你可以做 別的事情了。 1419 01:06:36,920 --> 01:06:40,089 例如,像document.body的, 那麼你就可以追加孩子。 1420 01:06:40,089 --> 01:06:41,630 所以,你要找到這個文件。 1421 01:06:41,630 --> 01:06:42,340 你有這個文件。 1422 01:06:42,340 --> 01:06:43,629 你會發現身體。 1423 01:06:43,629 --> 01:06:44,420 你發現屍體。 1424 01:06:44,420 --> 01:06:46,545 然後,你要 調用一些功能就可以了。 1425 01:06:46,545 --> 01:06:50,312 因此追加的孩子,你可以追加 一些HTML到您的身體內結束。 1426 01:06:50,312 --> 01:06:52,520 所以基本上,你只是 對待它像一個對象。 1427 01:06:52,520 --> 01:06:54,515 你在處理HTML 標籤就像一個對象。 1428 01:06:54,515 --> 01:06:57,071 它可以很容易 快速通過他們去。 1429 01:06:57,071 --> 01:06:59,070 但它也可以讓你 調用函數對他們 1430 01:06:59,070 --> 01:07:04,410 這樣你就可以操縱 和改變的元素。 1431 01:07:04,410 --> 01:07:10,162 >> GABE:鑑於此,為什麼這樣的JavaScript 一個很好的語言與HTML互動? 1432 01:07:10,162 --> 01:07:12,870 奇怪的是,當人們選擇 用於瀏覽器中的語言, 1433 01:07:12,870 --> 01:07:14,990 對於客戶端, JavaScript是非常好的, 1434 01:07:14,990 --> 01:07:16,765 它在處理對象確實不錯。 1435 01:07:16,765 --> 01:07:20,620 和對象是那種喜歡 出現在HTML中的對象, 1436 01:07:20,620 --> 01:07:23,940 所以它是很容易的JavaScript 做那種處理。 1437 01:07:23,940 --> 01:07:24,440 DAVIN:尼斯。 1438 01:07:24,440 --> 01:07:25,670 所以這裡只是一個例子。 1439 01:07:25,670 --> 01:07:29,020 所以我認為在去年的測驗, 或許在兩年前,我們 1440 01:07:29,020 --> 01:07:30,840 要求你創建一棵樹。 1441 01:07:30,840 --> 01:07:32,660 因此,這正是你想要做的。 1442 01:07:32,660 --> 01:07:34,255 所以,你的文件開始了。 1443 01:07:34,255 --> 01:07:36,130 然後你基本上 只要看看標籤。 1444 01:07:36,130 --> 01:07:38,100 所以,如果你看,我們 開始與HTML標記。 1445 01:07:38,100 --> 01:07:41,660 然後,你會得到關於如何線索 這樣做基於縮進。 1446 01:07:41,660 --> 01:07:43,870 所以頭一種分支關閉。 1447 01:07:43,870 --> 01:07:46,242 裡面的頭,我們有 另一個標籤稱號。 1448 01:07:46,242 --> 01:07:47,450 那麼,我們有一個標題標籤。 1449 01:07:47,450 --> 01:07:49,760 而這裡面,我們有一些字符串。 1450 01:07:49,760 --> 01:07:52,210 因此,我們代表 字符串中的圓。 1451 01:07:52,210 --> 01:07:54,010 和所有的標籤都在廣場。 1452 01:07:54,010 --> 01:07:56,270 >> 如果你看一下,如果我們 認為這是一棵樹, 1453 01:07:56,270 --> 01:07:58,730 讓我們說,HTML是 父母,然後頭部和身體 1454 01:07:58,730 --> 01:07:59,772 將要兄弟姐妹。 1455 01:07:59,772 --> 01:08:01,813 他們都將是 是父母的孩子。 1456 01:08:01,813 --> 01:08:03,620 所以,因為他們是 雙方的兄弟姐妹,他們是 1457 01:08:03,620 --> 01:08:06,590 會是怎樣的旁邊 對方在我們的樹模型。 1458 01:08:06,590 --> 01:08:08,590 然後,你基本上 做同樣的事情。 1459 01:08:08,590 --> 01:08:13,512 所以並不困難,但我們已要求 類似這樣的問題之前,對測驗。 1460 01:08:13,512 --> 01:08:15,220 GABE:有誰 有問題這麼遠嗎? 1461 01:08:15,220 --> 01:08:16,357 這是好? 1462 01:08:16,357 --> 01:08:16,856 DAVIN:酷。 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript的,OK,好東西。 1465 01:08:21,600 --> 01:08:24,069 所以,JavaScript的,什麼是JavaScript? 1466 01:08:24,069 --> 01:08:28,370 那麼,JavaScript的is--它 複雜,但這些 1467 01:08:28,370 --> 01:08:30,727 有一些亮點 你應該記住。 1468 01:08:30,727 --> 01:08:31,810 首先,它是鬆散類型。 1469 01:08:31,810 --> 01:08:33,529 這意味著什麼? 1470 01:08:33,529 --> 01:08:35,596 所以PHP was--是的,這是怎麼回事? 1471 01:08:35,596 --> 01:08:39,854 >> 聽眾:你不必明確 狀態是什麼類型的變量。 1472 01:08:39,854 --> 01:08:40,479 DAVIN:完美。 1473 01:08:40,479 --> 01:08:43,270 所以他說,你不必 明確說明變量的類型。 1474 01:08:43,270 --> 01:08:44,160 這是完全正確的。 1475 01:08:44,160 --> 01:08:49,700 因此,在C,如果我有INT I等於50, 然後在PHP中,它只是這樣,$ I, 1476 01:08:49,700 --> 01:08:50,550 等於50。 1477 01:08:50,550 --> 01:08:54,319 那麼在JavaScript中, 什麼電話呢? 1478 01:08:54,319 --> 01:08:55,260 VAR,對不對? 1479 01:08:55,260 --> 01:08:56,566 它會像變種i等於50。 1480 01:08:56,566 --> 01:08:58,649 但你不必是 就像,OK,這是一個int。 1481 01:08:58,649 --> 01:09:00,350 OK,這是一個字符串。 1482 01:09:00,350 --> 01:09:01,731 沒有必要那樣做。 1483 01:09:01,731 --> 01:09:02,939 這是一種解釋型語言。 1484 01:09:02,939 --> 01:09:04,904 那麼,什麼意思呢? 1485 01:09:04,904 --> 01:09:06,340 >> 聽眾:不編制。 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN:不編制是什麼意思? 1487 01:09:10,470 --> 01:09:11,392 是嗎? 1488 01:09:11,392 --> 01:09:15,336 >> 聽眾:你不必 重組代碼 1489 01:09:15,336 --> 01:09:18,294 得到它準備 計算機來運行它。 1490 01:09:18,294 --> 01:09:23,144 它只是在拍攝的時候 執行和計算機[聽不清]。 1491 01:09:23,144 --> 01:09:25,560 DAVIN:是的,所以它要 通過一名翻譯。 1492 01:09:25,560 --> 01:09:26,750 但你完全正確。 1493 01:09:26,750 --> 01:09:28,319 所以,你永遠不會 編譯它,對嗎? 1494 01:09:28,319 --> 01:09:30,399 當你做你的 PHP和JavaScript代碼, 1495 01:09:30,399 --> 01:09:31,365 你從來沒有所謂的編譯。 1496 01:09:31,365 --> 01:09:33,779 你從來沒有所謂像 使之類的東西。 1497 01:09:33,779 --> 01:09:34,800 這是因為它的解釋。 1498 01:09:34,800 --> 01:09:37,319 所以,每次經過瀏覽器的時候, 它通過一個翻譯。 1499 01:09:37,319 --> 01:09:40,370 那就是要解釋它 只是實時馬上為您服務。 1500 01:09:40,370 --> 01:09:43,770 那麼,什麼是一些正面和負面 到具有解釋性語言 1501 01:09:43,770 --> 01:09:45,258 並具有編譯語言? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 所以compiling--是的,這是怎麼回事? 1504 01:09:50,540 --> 01:09:52,444 >> 聽眾:解釋較慢。 1505 01:09:52,444 --> 01:09:53,319 DAVIN:在何種意義? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> 聽眾:當你 編譯,你不必 1508 01:09:59,091 --> 01:10:04,400 做任何額外的步驟來執行 它,而這[聽不清]。 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN:是的,完美的。 1510 01:10:05,570 --> 01:10:08,386 所以你說的是什麼 基本上是編譯, 1511 01:10:08,386 --> 01:10:10,760 當你編譯,你有 大量的前期成本,對不對? 1512 01:10:10,760 --> 01:10:11,760 你要編譯它。 1513 01:10:11,760 --> 01:10:13,750 但經過編譯吧, 編譯器去優化它。 1514 01:10:13,750 --> 01:10:14,840 這將是快。 1515 01:10:14,840 --> 01:10:16,170 這將基本上 以最快的速度,因為它可以。 1516 01:10:16,170 --> 01:10:18,830 有了解釋,你永遠不 有前期成本。 1517 01:10:18,830 --> 01:10:22,260 相反,它會稍微慢 每一次你解釋。 1518 01:10:22,260 --> 01:10:24,940 而你將不得不 解釋它每一次。 1519 01:10:24,940 --> 01:10:27,114 所以具有代替這 一次性費用,現在你 1520 01:10:27,114 --> 01:10:29,530 將不得不把它解釋 每次頁面呈現。 1521 01:10:29,530 --> 01:10:31,890 >> 所以口譯是好的,因為 你不必編譯它, 1522 01:10:31,890 --> 01:10:33,980 但他們在每一個壞 一次頁面加載,它的 1523 01:10:33,980 --> 01:10:35,771 將不得不 解釋這個JavaScript。 1524 01:10:35,771 --> 01:10:40,520 而且它會運行速度稍慢 比如果你編譯它。 1525 01:10:40,520 --> 01:10:43,044 讓你communicate--哦,等待。 1526 01:10:43,044 --> 01:10:44,960 用於操縱 內容和外觀。 1527 01:10:44,960 --> 01:10:46,043 我們剛才講了。 1528 01:10:46,043 --> 01:10:47,250 它使用了DOM。 1529 01:10:47,250 --> 01:10:49,930 AJAX,我們就進入 AJAX在一點點。 1530 01:10:49,930 --> 01:10:51,520 然後,它的客戶端。 1531 01:10:51,520 --> 01:10:53,110 所以PHP是服務器端。 1532 01:10:53,110 --> 01:10:54,360 JavaScript是客戶端。 1533 01:10:54,360 --> 01:10:57,780 什麼是積極的嗎? 1534 01:10:57,780 --> 01:10:58,280 它說。 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 它的速度更快,對不對? 1537 01:11:02,780 --> 01:11:05,282 因為你沒有to--它的速度更快。 1538 01:11:05,282 --> 01:11:07,490 你沒有進行通信 與其他一些設備。 1539 01:11:07,490 --> 01:11:08,790 如果你只是在你的 客戶端,你永遠 1540 01:11:08,790 --> 01:11:11,280 將不得不去 看看有什麼在服務器上 1541 01:11:11,280 --> 01:11:13,150 然後報到 或者類似的東西。 1542 01:11:13,150 --> 01:11:15,410 因此,客戶端往往 可以快一點點。 1543 01:11:15,410 --> 01:11:17,910 >> GABE:是的,但是這 並不意味著PHP是 1544 01:11:17,910 --> 01:11:20,440 比速度更快的JavaScript 或類似的東西。 1545 01:11:20,440 --> 01:11:23,270 它們在相同的運行種 速度,因為他們都 1546 01:11:23,270 --> 01:11:24,490 解釋型語言。 1547 01:11:24,490 --> 01:11:26,680 事情是很慢 這裡是請求。 1548 01:11:26,680 --> 01:11:28,870 所以,你實際上會 一路之上,以巴西 1549 01:11:28,870 --> 01:11:31,460 得到一些信息 那個住在這裡。 1550 01:11:31,460 --> 01:11:34,590 但是,PHP和JavaScript,它們 種在以相同的速度運行。 1551 01:11:34,590 --> 01:11:37,930 這並不是說一個是 比其它快。 1552 01:11:37,930 --> 01:11:40,600 這也就招這裡的問題。 1553 01:11:40,600 --> 01:11:47,338 所以,JavaScript的從未成為 機器代碼,真的還是假的? 1554 01:11:47,338 --> 01:11:48,590 >> 聽眾:假。 1555 01:11:48,590 --> 01:11:49,090 GABE:假。 1556 01:11:49,090 --> 01:11:51,298 它有可能成為機 代碼,因為機器代碼 1557 01:11:51,298 --> 01:11:53,210 唯一的機器理解。 1558 01:11:53,210 --> 01:11:55,800 雖然它不是編譯 它仍然成為機器代碼 1559 01:11:55,800 --> 01:11:59,120 因為解釋就是 一個程序,去一行一行 1560 01:11:59,120 --> 01:12:02,170 和轉換的行成 一些計算機理解。 1561 01:12:02,170 --> 01:12:02,825 好不好? 1562 01:12:02,825 --> 01:12:03,325 酷。 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> DAVIN:這裡只是一個很基本的 你好世界JavaScript程序。 1565 01:12:12,890 --> 01:12:15,590 所以,我不知道你if--已經看到這一點。 1566 01:12:15,590 --> 01:12:17,630 但你有HTML這裡。 1567 01:12:17,630 --> 01:12:21,020 和而不是實際投入 JavaScript的腳本標籤, 1568 01:12:21,020 --> 01:12:22,810 所以你通常把它放在頭上。 1569 01:12:22,810 --> 01:12:24,030 你有腳本標記。 1570 01:12:24,030 --> 01:12:24,870 你把它。 1571 01:12:24,870 --> 01:12:28,350 所有我們在這裡所做的是,我們已經聯繫in-- 所以我們在JavaScript文件已鏈接 1572 01:12:28,350 --> 01:12:29,137 像這樣。 1573 01:12:29,137 --> 01:12:30,470 你總是這樣,對嗎? 1574 01:12:30,470 --> 01:12:34,740 所以,當你正在使用jQuery和 在最後的P-集underscore.js, 1575 01:12:34,740 --> 01:12:38,700 你不必噸的代碼在 你的腳本標籤,在你的頭上。 1576 01:12:38,700 --> 01:12:41,415 你可以這樣做,而是 你只是鏈接進來。 1577 01:12:41,415 --> 01:12:43,540 您所鏈接它 就像你做的CSS。 1578 01:12:43,540 --> 01:12:50,186 所以它只是使得它更容易閱讀等 你的代碼是不是像1000線長 1579 01:12:50,186 --> 01:12:52,310 與噸的功能, 你可能無法使用。 1580 01:12:52,310 --> 01:12:53,518 >> 相反,你只是鏈接進來。 1581 01:12:53,518 --> 01:12:55,050 這是間隔化。 1582 01:12:55,050 --> 01:13:00,110 這就像寫一些頭文件, 那麼包括C.該頭文件 1583 01:13:00,110 --> 01:13:01,620 認為它就是這樣的。 1584 01:13:01,620 --> 01:13:02,680 那麼,這是什麼呢? 1585 01:13:02,680 --> 01:13:04,560 好了,這是怎麼回事運行。 1586 01:13:04,560 --> 01:13:05,410 它會提醒。 1587 01:13:05,410 --> 01:13:08,020 所以,你會得到一點點 彈出所謂的hello world。 1588 01:13:08,020 --> 01:13:11,420 快速的問題,只是完整性檢查, 所以你在這裡看到的身體, 1589 01:13:11,420 --> 01:13:13,160 要說身體,HTML這裡。 1590 01:13:13,160 --> 01:13:14,080 什麼是第一位的? 1591 01:13:14,080 --> 01:13:16,864 難道我看到身體,HTML這裡, 還是我看到的警報第一? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> 聽眾:警報。 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN:對。 1595 01:13:21,470 --> 01:13:22,110 他說,警報。 1596 01:13:22,110 --> 01:13:22,610 為什麼呢? 1597 01:13:22,610 --> 01:13:24,470 >> 觀眾:因為你 去從上到下。 1598 01:13:24,470 --> 01:13:25,600 >> DAVIN:是的。 1599 01:13:25,600 --> 01:13:26,100 完美。 1600 01:13:26,100 --> 01:13:29,207 所以他說,你從上面去 底部,這是完全正確的。 1601 01:13:29,207 --> 01:13:30,790 你要去上下。 1602 01:13:30,790 --> 01:13:34,790 而在JavaScript中,jQuery的,你有 功能就像onload事件,或者準備好了, 1603 01:13:34,790 --> 01:13:38,030 並說,OK,等到 這一切的HTML已加載。 1604 01:13:38,030 --> 01:13:39,580 然後,調用JavaScript。 1605 01:13:39,580 --> 01:13:42,190 因為我們沒有在這裡,該 這會發生的第一件事 1606 01:13:42,190 --> 01:13:43,920 是它要去自上而下。 1607 01:13:43,920 --> 01:13:46,310 它會擊中JS 調用,它會提醒。 1608 01:13:46,310 --> 01:13:49,510 之後,單擊確定, 該警報消失。 1609 01:13:49,510 --> 01:13:53,600 然後,它會顯示 你在這裡身體HTML。 1610 01:13:53,600 --> 01:13:54,590 尼斯。 1611 01:13:54,590 --> 01:14:00,880 >> OK,所以才真正的快,寫作 在JavaScript中是超級快。 1612 01:14:00,880 --> 01:14:02,710 為了聲明 一個變量,變種的名稱。 1613 01:14:02,710 --> 01:14:07,070 因此,在C,你有INT I,你有 聲明它是什麼樣的類型。 1614 01:14:07,070 --> 01:14:08,040 PHP,$。 1615 01:14:08,040 --> 01:14:08,755 JavaScript中,VAR。 1616 01:14:08,755 --> 01:14:09,630 我們談到了這一點。 1617 01:14:09,630 --> 01:14:11,020 好了,我們走吧。 1618 01:14:11,020 --> 01:14:12,510 >> 循環,同樣的事情。 1619 01:14:12,510 --> 01:14:14,230 同樣的事情。 1620 01:14:14,230 --> 01:14:18,165 函數聲明,所以 就像你所看到的C. 1621 01:14:18,165 --> 01:14:21,290 唯一不同的是,所以當 你到了其他編程語言, 1622 01:14:21,290 --> 01:14:24,780 就像當你需要51下學期 和你正在做與OCAML, 1623 01:14:24,780 --> 01:14:26,690 你可以處理匿名函數。 1624 01:14:26,690 --> 01:14:28,240 所以,這正是你在這裡。 1625 01:14:28,240 --> 01:14:31,560 所以,你想放的總和, 某種總和值。 1626 01:14:31,560 --> 01:14:33,870 但你可能只能做一次。 1627 01:14:33,870 --> 01:14:37,310 所以,你不想把它的功能 總之,給它一個函數聲明。 1628 01:14:37,310 --> 01:14:39,830 相反,你只是用它 作為一個匿名函數。 1629 01:14:39,830 --> 01:14:42,469 你已經看到這個有很多。 1630 01:14:42,469 --> 01:14:44,510 你會看到的一個例子 這幾個幻燈片。 1631 01:14:44,510 --> 01:14:45,597 是的,我們將拭​​目以待。 1632 01:14:45,597 --> 01:14:46,430 GABE:好問題。 1633 01:14:46,430 --> 01:14:50,660 你什麼時候可能要使用 匿名函數嗎? 1634 01:14:50,660 --> 01:14:54,111 基本上,當你想要的東西, 像一個事件,發生的。 1635 01:14:54,111 --> 01:14:55,860 所以,當鼠標 點擊,例如 1636 01:14:55,860 --> 01:14:57,790 你想一些函數被調用。 1637 01:14:57,790 --> 01:15:00,570 所以,你傳遞給事件 處理程序,傳遞給事件, 1638 01:15:00,570 --> 01:15:02,870 種,所述功能 要被調用。 1639 01:15:02,870 --> 01:15:04,710 和你傳遞什麼 就像是,在結束 1640 01:15:04,710 --> 01:15:08,757 的一天,只是一個指向 該指令,給該函數。 1641 01:15:08,757 --> 01:15:11,090 所以它不喜歡你傳遞 整個代碼,就像 1642 01:15:11,090 --> 01:15:12,173 一指針的功能。 1643 01:15:12,173 --> 01:15:17,871 然後,當有人點擊的 鼠標,那麼函數被調用。 1644 01:15:17,871 --> 01:15:22,340 >> DAVIN:數組,所以你 有一個數組聲明。 1645 01:15:22,340 --> 01:15:23,990 然後,一個數組把事情英寸 1646 01:15:23,990 --> 01:15:25,769 真正的快,你會這樣打印出來? 1647 01:15:25,769 --> 01:15:27,060 什麼將第三個元素是什麼? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> 聽眾:“JS”。 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN:對,這將是“JS”。 1651 01:15:33,940 --> 01:15:35,760 等待,回去。 1652 01:15:35,760 --> 01:15:37,100 什麼是長度? 1653 01:15:37,100 --> 01:15:38,117 >> 聽眾:三。 1654 01:15:38,117 --> 01:15:38,950 DAVIN:三,對不對? 1655 01:15:38,950 --> 01:15:40,210 正是你想什麼。 1656 01:15:40,210 --> 01:15:42,072 OK,現在去。 1657 01:15:42,072 --> 01:15:43,530 陣列,您可以添加的東西給他們。 1658 01:15:43,530 --> 01:15:45,395 這樣你就可以超越 他們最初的界限。 1659 01:15:45,395 --> 01:15:46,740 只是要記住。 1660 01:15:46,740 --> 01:15:49,760 PHP,JavaScript的,他們是一點點 位在物聯網方面更寬容 1661 01:15:49,760 --> 01:15:50,570 這樣的。 1662 01:15:50,570 --> 01:15:54,260 對象,很喜歡 結構的C,非常 1663 01:15:54,260 --> 01:15:56,590 就像在PHP關聯數組。 1664 01:15:56,590 --> 01:15:58,720 你都有這方面的經驗。 1665 01:15:58,720 --> 01:16:01,880 因此JSON,當你路過JSON 來回在對置8, 1666 01:16:01,880 --> 01:16:03,260 這是你的對象。 1667 01:16:03,260 --> 01:16:06,290 >> 所以是的,舉例來說,真正的簡單的例子。 1668 01:16:06,290 --> 01:16:07,880 這裡是一個對象。 1669 01:16:07,880 --> 01:16:12,700 你參考這個問題的方法 對象,所以才真正的快, 1670 01:16:12,700 --> 01:16:18,630 比方說,我想找到 出來,OK,什麼課程? 1671 01:16:18,630 --> 01:16:20,681 所以這裡的對象名稱是CS50。 1672 01:16:20,681 --> 01:16:23,180 然後,如果我有一個關聯 陣,我將如何做呢? 1673 01:16:23,180 --> 01:16:24,580 我將使用的一個關鍵,對吧? 1674 01:16:24,580 --> 01:16:26,030 所以,我有數組的名稱。 1675 01:16:26,030 --> 01:16:30,160 我有支架,行情,關鍵, 最終報價,尾架, 1676 01:16:30,160 --> 01:16:33,610 並且,將引用該 我的元素關聯數組裡面。 1677 01:16:33,610 --> 01:16:37,646 我如何引用 當然,我的對象裡面? 1678 01:16:37,646 --> 01:16:39,170 有人知道嗎? 1679 01:16:39,170 --> 01:16:40,622 >> 觀眾:[聽不清]。 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN:這是怎麼回事? 1681 01:16:41,784 --> 01:16:42,700 聽眾:CS50.course。 1682 01:16:42,700 --> 01:16:43,510 DAVIN:對,是的。 1683 01:16:43,510 --> 01:16:45,320 所以CS50.course。 1684 01:16:45,320 --> 01:16:48,770 所以,你的方式引用的東西 一個JSON對象中是一個點。 1685 01:16:48,770 --> 01:16:53,114 >> 聽眾:你也可以使用數組語法。 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN:OK,很好。 1687 01:16:54,050 --> 01:16:57,544 >> GABE:您還可以使用CS50支架, 字符串,如引號。 1688 01:16:57,544 --> 01:16:59,210 觀眾:我認為這是等同於PHP。 1689 01:16:59,210 --> 01:17:00,293 蓋柏:這是同樣的事情。 1690 01:17:00,293 --> 01:17:02,487 DAVIN:好! 1691 01:17:02,487 --> 01:17:03,945 但你會看到這個其他地方。 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 是啊,這樣繼續下去。 1694 01:17:10,480 --> 01:17:13,330 這就是我剛才說的。 1695 01:17:13,330 --> 01:17:17,840 所以,進入一個JavaScript jQuery的例子。 1696 01:17:17,840 --> 01:17:19,440 所以這是我的DOM,對不對? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 真正的快,所以我有一個 頭,招呼世界,身體。 1699 01:17:25,410 --> 01:17:26,160 我有一個按鈕。 1700 01:17:26,160 --> 01:17:27,870 它說:“推我,”所以我要推。 1701 01:17:27,870 --> 01:17:29,745 我想要做的事 當它的點擊。 1702 01:17:29,745 --> 01:17:31,220 右,下一個。 1703 01:17:31,220 --> 01:17:34,630 >> 沒錯,所以這是我的JavaScript。 1704 01:17:34,630 --> 01:17:37,790 所以,jQuery是只是一個簡單的 的方式來編寫JavaScript。 1705 01:17:37,790 --> 01:17:40,920 所以這一點,就是我要告訴 你接下來的,將是jQuery的, 1706 01:17:40,920 --> 01:17:41,930 是相同的。 1707 01:17:41,930 --> 01:17:43,990 因此,他們會做同樣的事情。 1708 01:17:43,990 --> 01:17:45,974 只是jQuery的往往是更容易一些。 1709 01:17:45,974 --> 01:17:47,140 人們往往喜歡它了。 1710 01:17:47,140 --> 01:17:48,390 它有很多的功能。 1711 01:17:48,390 --> 01:17:49,830 所以,人們往往使用jQuery。 1712 01:17:49,830 --> 01:17:53,270 你們都在最近對一組使用jQuery的。 1713 01:17:53,270 --> 01:17:54,270 那麼,什麼會這樣呢? 1714 01:17:54,270 --> 01:17:56,580 什麼將這個JavaScript--等 這只是普通的JavaScript。 1715 01:17:56,580 --> 01:17:57,430 怎麼會這樣呢? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 會是什麼呢? 1718 01:18:03,450 --> 01:18:04,890 >> 因此,首先,你看到窗口的onload。 1719 01:18:04,890 --> 01:18:05,390 對不對? 1720 01:18:05,390 --> 01:18:06,640 所以我們沒有之前看到。 1721 01:18:06,640 --> 01:18:09,380 因此,這是要等待 直到整個窗口載荷。 1722 01:18:09,380 --> 01:18:12,770 所以它要等到 在HTML中,所有的圖像加載 1723 01:18:12,770 --> 01:18:13,770 它做任何事情之前。 1724 01:18:13,770 --> 01:18:16,050 因此,讓我們說,我們的DOM加載。 1725 01:18:16,050 --> 01:18:17,270 一切都在那裡。 1726 01:18:17,270 --> 01:18:19,080 那麼會發生什麼? 1727 01:18:19,080 --> 01:18:19,922 是嗎? 1728 01:18:19,922 --> 01:18:22,880 >> 聽眾:出現按鈕。 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN:按鈕已經存在。 1730 01:18:25,201 --> 01:18:26,700 是啊,所以按鈕的已經存在。 1731 01:18:26,700 --> 01:18:31,190 但是,這會說, OK,如果我按一下按鈕, 1732 01:18:31,190 --> 01:18:33,650 所以按鈕的已 在那裡,這樣的HTML標記。 1733 01:18:33,650 --> 01:18:35,980 等待,回去真快。 1734 01:18:35,980 --> 01:18:39,470 這個標籤對對這裡 將是一個按鈕已經。 1735 01:18:39,470 --> 01:18:40,810 目前已經是一個按鈕。 1736 01:18:40,810 --> 01:18:44,120 但隨後,JavaScript的 標籤,在這裡, 1737 01:18:44,120 --> 01:18:46,160 它說,OK,我想 通過ID來獲得元素, 1738 01:18:46,160 --> 01:18:50,300 所以搜索按鈕只是說,OK,我想 映射這個變量的按鈕。 1739 01:18:50,300 --> 01:18:53,120 使變量只是一個 更簡單的方式來訪問該按鈕。 1740 01:18:53,120 --> 01:18:57,300 我說好,如果我點擊了 按鈕,所以如果我點擊該元素, 1741 01:18:57,300 --> 01:18:59,560 與該元素指 按鈕,如果我點擊它, 1742 01:18:59,560 --> 01:19:00,875 那麼我想調用一個函數。 1743 01:19:00,875 --> 01:19:03,500 這裡是那些匿名之一 功能我們都在談論。 1744 01:19:03,500 --> 01:19:04,840 >> 只是調用一些功能。 1745 01:19:04,840 --> 01:19:08,840 在那個功能,基本上 這是我們見過不少,警報。 1746 01:19:08,840 --> 01:19:10,477 單擊搜索按鈕。 1747 01:19:10,477 --> 01:19:12,060 這將基本上都有一個按鈕。 1748 01:19:12,060 --> 01:19:13,040 你點擊它。 1749 01:19:13,040 --> 01:19:14,040 你得到警報。 1750 01:19:14,040 --> 01:19:14,850 X了。 1751 01:19:14,850 --> 01:19:15,754 就是這樣。 1752 01:19:15,754 --> 01:19:16,254 是嗎? 1753 01:19:16,254 --> 01:19:21,980 >> 觀眾:所以,如果你把腳本 在你的HTML [聽不清],腳本標籤? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN:你可以把腳本 在head標籤直 1755 01:19:24,300 --> 01:19:30,667 因為你有這樣的onload。 1756 01:19:30,667 --> 01:19:32,000 這也是你有一個點擊。 1757 01:19:32,000 --> 01:19:34,166 所以它要等到 你點擊的東西。 1758 01:19:34,166 --> 01:19:37,470 但onload事件僅僅是為了安全起見,使 確保一切都加載到你的HTML 1759 01:19:37,470 --> 01:19:38,170 事前。 1760 01:19:38,170 --> 01:19:39,247 是嗎? 1761 01:19:39,247 --> 01:19:40,330 你想說點什麼? 1762 01:19:40,330 --> 01:19:41,080 >> GABE:[聽不清]。 1763 01:19:41,080 --> 01:19:42,485 DAVIN:是的。 1764 01:19:42,485 --> 01:19:45,426 >> 聽眾:所以的onload避免 定義變量搜索按鈕 1765 01:19:45,426 --> 01:19:49,930 通過只是說的document.getElementById 搜索按鈕點[聽不清]。 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN:當然,但隨後 您的字符串只會越來越大。 1767 01:19:52,320 --> 01:19:55,553 沒錯,所以這只是 讓您更容易,是的。 1768 01:19:55,553 --> 01:19:56,053 是嗎? 1769 01:19:56,053 --> 01:19:57,886 >> 聽眾:如果我們做 創建的window.onload? 1770 01:19:57,886 --> 01:19:58,951 或的document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> DAVIN:是的,有。 1772 01:20:00,590 --> 01:20:02,094 是的,有,我查了。 1773 01:20:02,094 --> 01:20:03,710 >> GABE:不為他們所關心的。 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN:OK,所以我打算 反正告訴你。 1775 01:20:06,970 --> 01:20:11,005 所以基本上,只是一般,所以 在window.onload等待,直到你的DOM,所有 1776 01:20:11,005 --> 01:20:12,180 你的HTML,負荷。 1777 01:20:12,180 --> 01:20:13,513 它等待,直到你的圖像加載。 1778 01:20:13,513 --> 01:20:14,930 它等待,直到一切都加載。 1779 01:20:14,930 --> 01:20:18,410 的document.ready,它只是 等待,直到你的DOM負載。 1780 01:20:18,410 --> 01:20:22,190 一旦HTML都在那裡,一旦 您的DOM是存在的,開始運行。 1781 01:20:22,190 --> 01:20:23,400 這是唯一的區別。 1782 01:20:23,400 --> 01:20:24,700 >> GABE:快速合理性檢查這裡。 1783 01:20:24,700 --> 01:20:29,060 因此,這可以種看到 像一行代碼,對不對? 1784 01:20:29,060 --> 01:20:33,600 因為它是在window.onload 等於一堆東西。 1785 01:20:33,600 --> 01:20:39,030 如果JavaScript讀取這個,真的還是 假的,功能被執行。 1786 01:20:39,030 --> 01:20:40,020 假的。 1787 01:20:40,020 --> 01:20:40,920 好不好? 1788 01:20:40,920 --> 01:20:44,470 這裡發生了什麼,你只是路過 這個功能作為一個匿名函數 1789 01:20:44,470 --> 01:20:45,300 要在window.onload。 1790 01:20:45,300 --> 01:20:48,480 然後當它準備 真正得到執行? 1791 01:20:48,480 --> 01:20:49,600 當窗口負載。 1792 01:20:49,600 --> 01:20:50,420 這是一個事件。 1793 01:20:50,420 --> 01:20:52,460 所以,這絕對噸的事我們 談到早前,對不對? 1794 01:20:52,460 --> 01:20:54,580 因此,當事件發生時, 該功能發生。 1795 01:20:54,580 --> 01:20:55,746 同樣的事情的onclick。 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN:OK,所以有人把 走的document.ready。 1798 01:21:03,130 --> 01:21:04,698 但是,這將是準確的same-- 1799 01:21:04,698 --> 01:21:06,864 聽眾:美元符號, 這是一個的document.ready。 1800 01:21:06,864 --> 01:21:07,710 這是一個捷徑。 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN:哦,那是什麼? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK,所以這意味著 的document.ready,快捷。 1804 01:21:15,500 --> 01:21:19,660 但是,這是相同的window.onload 除了那差別不大 1805 01:21:19,660 --> 01:21:20,680 我告訴你。 1806 01:21:20,680 --> 01:21:21,870 這是jQuery的。 1807 01:21:21,870 --> 01:21:25,190 所以這是完全一樣的 件事 - 這是JavaScript的。 1808 01:21:25,190 --> 01:21:29,500 這是just--一些人認為它 作為一種重量越來越輕,圓滑的版本 1809 01:21:29,500 --> 01:21:32,370 有很多功能 你很可能會使用。 1810 01:21:32,370 --> 01:21:34,500 因此,這不完全一樣的事情。 1811 01:21:34,500 --> 01:21:37,110 >> 種這樣的事情指出。 1812 01:21:37,110 --> 01:21:40,364 所以,在其他例子中,我們 過的document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 所以我們有這個長 字符串,它會變得 1814 01:21:42,280 --> 01:21:44,290 不論如何標識它具有的元件。 1815 01:21:44,290 --> 01:21:46,470 這取代了這一呼籲就在這裡。 1816 01:21:46,470 --> 01:21:50,860 所以你看美元符號, 然後就看到報價,包括hashtag。 1817 01:21:50,860 --> 01:21:52,370 #標籤始終是一個選擇器。 1818 01:21:52,370 --> 01:21:54,730 它說,OK,這是因為有一個ID。 1819 01:21:54,730 --> 01:21:56,120 什麼是選擇一類? 1820 01:21:56,120 --> 01:21:57,190 >> 觀眾:點。 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN:點了吧。 1822 01:21:57,960 --> 01:22:01,950 如果你只是要 選擇一個標籤,是什麼呢? 1823 01:22:01,950 --> 01:22:03,310 這只是標籤,沒錯。 1824 01:22:03,310 --> 01:22:05,560 你可以使用,在這裡,以及。 1825 01:22:05,560 --> 01:22:08,560 >> GABE:而按標籤,我們的意思是像 格,例如,或頭。 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN:或身體或P或 這樣的事情,是的。 1827 01:22:11,500 --> 01:22:14,390 所以在這裡好了,對,不是說 的document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 這僅僅是同樣的事情。 1829 01:22:16,500 --> 01:22:17,990 就在jQuery的,它的短。 1830 01:22:17,990 --> 01:22:19,860 所以它的簡單。 1831 01:22:19,860 --> 01:22:23,420 那麼,沒有更多的onclick,只需點擊。 1832 01:22:23,420 --> 01:22:26,320 jQuery函數,調用這個函數。 1833 01:22:26,320 --> 01:22:27,580 警報是完全相同的。 1834 01:22:27,580 --> 01:22:29,452 所以這是一個有點 較小的,或點點 1835 01:22:29,452 --> 01:22:32,410 短,有點bit--人認為 這是一個比較容易寫出來, 1836 01:22:32,410 --> 01:22:34,600 一點點更容易理解。 1837 01:22:34,600 --> 01:22:35,640 但是,這是jQuery的。 1838 01:22:35,640 --> 01:22:37,887 很多人得到一點 有點迷茫和擔憂 1839 01:22:37,887 --> 01:22:40,220 他們認為,OK,jQuery的 是不是JavaScript不同。 1840 01:22:40,220 --> 01:22:42,136 我一定要記住這些 兩個不同的東西。 1841 01:22:42,136 --> 01:22:42,740 它不是。 1842 01:22:42,740 --> 01:22:45,315 我的意思是,這是不同的語法。 1843 01:22:45,315 --> 01:22:46,970 但jQuery是JavaScript的。 1844 01:22:46,970 --> 01:22:50,050 這只是一個看似 更好的版本, 1845 01:22:50,050 --> 01:22:51,967 可能會更容易 明白的人使用。 1846 01:22:51,967 --> 01:22:53,716 GABE:是啊,是 說實話,那美元符號 1847 01:22:53,716 --> 01:22:57,240 您在jQuery的看到,這只是 一個函數,它的jQuery定義的名稱。 1848 01:22:57,240 --> 01:22:58,614 它沒有什麼特別的。 1849 01:22:58,614 --> 01:23:03,140 是它的功能只是名字, 就像你可以定義美元符號。 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN:是啊,所以談到這一點。 1851 01:23:05,670 --> 01:23:06,680 一些有用的東西。 1852 01:23:06,680 --> 01:23:10,414 我回頭望著老測驗。 1853 01:23:10,414 --> 01:23:13,080 在過去的幾個小測驗,他們已經 只好用這樣的事情。 1854 01:23:13,080 --> 01:23:15,230 所以的document.ready,所以 確保一切的 1855 01:23:15,230 --> 01:23:17,410 之前加載開始做的事情。 1856 01:23:17,410 --> 01:23:20,120 選擇的ID,或選擇 一類,它剛剛 1857 01:23:20,120 --> 01:23:24,020 是報價點綴一些類,最終報價。 1858 01:23:24,020 --> 01:23:26,580 提交,所以如果你 提交表單和呼叫 1859 01:23:26,580 --> 01:23:28,830 表格後此功能提交。 1860 01:23:28,830 --> 01:23:34,210 價值,所以讓我們說我有一個表格 提交,像用戶名,電子郵件, 1861 01:23:34,210 --> 01:23:34,950 隨你。 1862 01:23:34,950 --> 01:23:36,010 我有一個文本框。 1863 01:23:36,010 --> 01:23:37,670 所以,我打字到該文本框。 1864 01:23:37,670 --> 01:23:42,170 好吧,如果你想要得到的價值 指出,文本框,您使用點VAL。 1865 01:23:42,170 --> 01:23:44,050 然後,到這裡, 點HTML是相同 1866 01:23:44,050 --> 01:23:47,710 就像文檔點 的getElementById點的innerHTML。 1867 01:23:47,710 --> 01:23:50,890 所以這是怎麼回事返回 您從ID的HTML。 1868 01:23:50,890 --> 01:23:55,080 在這裡,你只需要使用一些 ID或什麼點HTML。 1869 01:23:55,080 --> 01:23:56,930 這會得到該元素的HTML。 1870 01:23:56,930 --> 01:24:00,130 如果你想要再改變 HTML,你可以通過它的東西。 1871 01:24:00,130 --> 01:24:05,600 所以,你會像點HTML,然後 裡面,行情,新的HTML或什麼的。 1872 01:24:05,600 --> 01:24:07,490 >> GABE:OK,所以AJAX。 1873 01:24:07,490 --> 01:24:10,347 我真的很喜歡了解 AJAX真的很好。 1874 01:24:10,347 --> 01:24:12,430 所以我想你們來 了解AJAX真的很好。 1875 01:24:12,430 --> 01:24:14,221 因為如果你這樣做, 你幾乎會 1876 01:24:14,221 --> 01:24:16,810 要了解的一切, 必須與HTTP,PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript的,因為這一切 走到一起的AJAX。 1878 01:24:21,080 --> 01:24:25,130 AJAX是不是一種語言。 1879 01:24:25,130 --> 01:24:27,000 AJAX是一種技術。 1880 01:24:27,000 --> 01:24:31,690 它使用許多不同的工具。 1881 01:24:31,690 --> 01:24:35,090 AJAX代表 異步JavaScript XML。 1882 01:24:35,090 --> 01:24:36,730 這樣的方法中,語言的數據。 1883 01:24:36,730 --> 01:24:40,610 >> 因此,我們使用的主要語言 在AJAX引發的一切 1884 01:24:40,610 --> 01:24:42,830 並處理一切 後來是JavaScript的。 1885 01:24:42,830 --> 01:24:45,160 這就是為什麼它涉及 非常接近的JavaScript。 1886 01:24:45,160 --> 01:24:49,810 然後是異步 因為我們不這樣做 1887 01:24:49,810 --> 01:24:51,980 全部一次,當我們加載頁面。 1888 01:24:51,980 --> 01:24:57,190 這是東西,我們可以 平行做樣的東西。 1889 01:24:57,190 --> 01:24:59,725 背後的主要思想 AJAX是要 1890 01:24:59,725 --> 01:25:02,170 它得到一些具體信息。 1891 01:25:02,170 --> 01:25:06,450 例如,當你鍵入新 當您註冊一個用戶名的用戶名, 1892 01:25:06,450 --> 01:25:08,520 我的用戶名是ABC123。 1893 01:25:08,520 --> 01:25:11,671 然後,在所述的端部 表單,你必須點擊提交。 1894 01:25:11,671 --> 01:25:14,420 它不得不去到服務器, 然後檢查是否在數據庫中, 1895 01:25:14,420 --> 01:25:15,594 ABC123已經存在。 1896 01:25:15,594 --> 01:25:18,510 如果它已經存在,它說, 用戶已經在數據庫名。 1897 01:25:18,510 --> 01:25:21,010 而且,你必須填寫 出整個表格了。 1898 01:25:21,010 --> 01:25:23,110 ,這是真的,真的很糟糕。 1899 01:25:23,110 --> 01:25:25,440 >> 然後人們說, OK,我們為什麼不能只是 1900 01:25:25,440 --> 01:25:29,560 做一個小的HTTP請求只是檢查 看是否該用戶是在數據庫中 1901 01:25:29,560 --> 01:25:32,080 用戶不得不前 提交整個形式? 1902 01:25:32,080 --> 01:25:36,350 因此,例如,當 用戶輸入完ABC123, 1903 01:25:36,350 --> 01:25:39,660 讓我們只去服務器一點點 位和剛剛獲得一個真或假的 1904 01:25:39,660 --> 01:25:43,080 從服務器,如果看到 這是一個有效的用戶名或不。 1905 01:25:43,080 --> 01:25:49,250 好了,這就是主要原因之一 使用AJAX時下仍在。 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN:所以真正的快,在 jQuery中的Ajax調用, 1907 01:25:52,130 --> 01:25:54,770 你可以表明您 希望它是同步的。 1908 01:25:54,770 --> 01:25:56,330 你不應該這樣做。 1909 01:25:56,330 --> 01:25:57,640 但你可以做到這一點。 1910 01:25:57,640 --> 01:25:59,277 如果你這樣做,會發生什麼? 1911 01:25:59,277 --> 01:26:01,610 嗯,比如說,當你 瀏覽新聞或什麼的, 1912 01:26:01,610 --> 01:26:05,464 您的瀏覽器只是要等待 直到整個呼叫完成 1913 01:26:05,464 --> 01:26:08,130 而不是讓你做其他 事情之後你點擊它。 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> 蓋柏:這不是傳球了。 1916 01:26:17,115 --> 01:26:19,681 哦,我的上帝。 1917 01:26:19,681 --> 01:26:20,180 對不起! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 是啊。 1920 01:26:23,601 --> 01:26:25,350 “在過去, 客戶需要的請求 1921 01:26:25,350 --> 01:26:26,840 一個網站的全部內容“。 1922 01:26:26,840 --> 01:26:28,210 這就是我說的。 1923 01:26:28,210 --> 01:26:30,070 它使我們能夠發送 額外的GET或POST 1924 01:26:30,070 --> 01:26:32,140 無需請求 重裝我們的瀏覽器。 1925 01:26:32,140 --> 01:26:34,806 所以在這一天結束時,我們 其實做一個HTTP請求 1926 01:26:34,806 --> 01:26:35,740 這裡使用JavaScript。 1927 01:26:35,740 --> 01:26:39,700 因為在此之前,我們只用JavaScript的 改變已經來到了HTML。 1928 01:26:39,700 --> 01:26:43,110 而現在,我們可以用它來對接 與該web服務器以及。 1929 01:26:43,110 --> 01:26:46,140 出現這種情況的方法 是我們的客戶。 1930 01:26:46,140 --> 01:26:47,340 達文是一個客戶端。 1931 01:26:47,340 --> 01:26:50,797 而他所有的JavaScript 運行,因為HTML是愚蠢的。 1932 01:26:50,797 --> 01:26:51,630 JavaScript是聰明的。 1933 01:26:51,630 --> 01:26:54,690 所以達文達文有他的聰明 一部分和他的愚蠢的一部分。 1934 01:26:54,690 --> 01:26:57,590 他現在打算用他靈巧的一部分。 1935 01:26:57,590 --> 01:27:00,860 他會使用JavaScript 到請求,例如, 1936 01:27:00,860 --> 01:27:04,340 ABC123是否處於 數據庫或沒有。 1937 01:27:04,340 --> 01:27:08,450 >> 所以達文,請,你只要 給我發送一個HTTP請求。 1938 01:27:08,450 --> 01:27:09,197 謝謝。 1939 01:27:09,197 --> 01:27:10,530 於是,他剛發的HTTP請求。 1940 01:27:10,530 --> 01:27:11,270 你看到了嗎? 1941 01:27:11,270 --> 01:27:14,700 而這只是以同樣的方式 任何HTTP請求被發送。 1942 01:27:14,700 --> 01:27:16,830 瀏覽器,谷歌 Chrome或什麼的,是 1943 01:27:16,830 --> 01:27:19,570 要看到,達文的 試圖發送一個HTTP請求, 1944 01:27:19,570 --> 01:27:20,930 要幫助HM一點點。 1945 01:27:20,930 --> 01:27:23,950 這就是要去 一路到服務器。 1946 01:27:23,950 --> 01:27:27,370 現在,該服務器都將有 PHP此處,或任何其他語言。 1947 01:27:27,370 --> 01:27:29,990 就像在一個正常的HTTP請求。 1948 01:27:29,990 --> 01:27:31,950 這幾乎是一個正常的HTTP請求。 1949 01:27:31,950 --> 01:27:33,658 >> 然後,服務器 會說,OK, 1950 01:27:33,658 --> 01:27:37,270 達文要我檢查是否 這ABC123是在數據庫中。 1951 01:27:37,270 --> 01:27:38,310 去談話模型。 1952 01:27:38,310 --> 01:27:41,310 該模型認為事實並非如此。 ABC123是一個很好的用戶名。 1953 01:27:41,310 --> 01:27:47,940 然後,Web服務器將要 用PHP來渲染某種形式的文件。 1954 01:27:47,940 --> 01:27:52,280 這可能是從字面上只是一個文件 包含“是”中,或“否 1955 01:27:52,280 --> 01:27:53,315 或者類似的東西。 1956 01:27:53,315 --> 01:27:54,190 它可以是任何文件。 1957 01:27:54,190 --> 01:27:57,080 >> 它可以像我要去 發送達文鴨子的圖片 1958 01:27:57,080 --> 01:28:01,200 如果是在數據庫中, 送倉鼠的照片 1959 01:28:01,200 --> 01:28:02,420 如果它不是在數據庫中。 1960 01:28:02,420 --> 01:28:04,294 這將是怎樣的 愚蠢的,但它會奏效。 1961 01:28:04,294 --> 01:28:07,030 OK,所以我送出一枚鴨蛋,以達文。 1962 01:28:07,030 --> 01:28:08,150 達文了一​​隻鴨子。 1963 01:28:08,150 --> 01:28:13,330 而現在,誰去 處理鴨子? 1964 01:28:13,330 --> 01:28:16,390 達文的智能的一部分再次, 因此JavaScript的,對不對? 1965 01:28:16,390 --> 01:28:18,620 JavaScript的發送 請求和JavaScript 1966 01:28:18,620 --> 01:28:22,300 將要接收該請求 並解釋它以某種形式。 1967 01:28:22,300 --> 01:28:26,630 >> 在這個意義上,這將 說,OK,如果鴨那麼我很好。 1968 01:28:26,630 --> 01:28:30,770 如果倉鼠,然後我要去 說,沒有,用戶名已經 1969 01:28:30,770 --> 01:28:31,970 存在於數據庫中。 1970 01:28:31,970 --> 01:28:33,845 但通常情況下,你不 要送出一枚鴨蛋。 1971 01:28:33,845 --> 01:28:36,740 你要送 一些稍微聰明。 1972 01:28:36,740 --> 01:28:40,320 而我們使用的是XML。 1973 01:28:40,320 --> 01:28:42,690 而最近,我們使用JSON。 1974 01:28:42,690 --> 01:28:45,629 JSON只是JavaScript的 對象符號,這 1975 01:28:45,629 --> 01:28:47,670 基本上你會得到一個 整個JavaScript對象。 1976 01:28:47,670 --> 01:28:50,820 你把它放在一個文件中,就像 這CS50對象你們所看到的。 1977 01:28:50,820 --> 01:28:53,090 你把它放在一個文件中, 你送過來給達文。 1978 01:28:53,090 --> 01:28:55,850 >> 因此,在這種情況下,我會 做一個JavaScript對象 1979 01:28:55,850 --> 01:28:59,570 而只是說,用戶存在,是的。 1980 01:28:59,570 --> 01:29:01,630 或者用戶存在,沒有。 1981 01:29:01,630 --> 01:29:02,810 並寄回給他。 1982 01:29:02,810 --> 01:29:03,830 和JSON,為什麼? 1983 01:29:03,830 --> 01:29:07,330 因為人 誰在接收這 1984 01:29:07,330 --> 01:29:10,030 要使用JavaScript 處理響應。 1985 01:29:10,030 --> 01:29:14,970 和JavaScript的工作這麼好,因為 這就是所謂的JavaScript對象符號。 1986 01:29:14,970 --> 01:29:15,470 對不對? 1987 01:29:15,470 --> 01:29:19,660 於是,他只需調用一個函數,並得到 從響應這個漂亮的對象。 1988 01:29:19,660 --> 01:29:22,890 然後,他會知道是否 該用戶是在數據庫中或沒有。 1989 01:29:22,890 --> 01:29:25,230 >> 所以你看,這一切到來 一起在網絡服務器, 1990 01:29:25,230 --> 01:29:28,450 再有一到HTTP請求 和一個HTTP響應和一切。 1991 01:29:28,450 --> 01:29:30,600 所以一定要確保你們 明白這一點AJAX調用 1992 01:29:30,600 --> 01:29:37,260 因為它可以幫助你了解所有 的概念,我們正在談論。 1993 01:29:37,260 --> 01:29:40,260 >> 所以這裡有一個例子 AJAX的使用jQuery。 1994 01:29:40,260 --> 01:29:42,130 在這裡,我們以get JSON。 1995 01:29:42,130 --> 01:29:45,660 因此,我們不是要得到一個 形象在這裡貓,或鴨。 1996 01:29:45,660 --> 01:29:48,110 我們正在試圖獲得一個JSON文件。 1997 01:29:48,110 --> 01:29:51,184 然後我們等到 它的完成,點完成。 1998 01:29:51,184 --> 01:29:52,850 這意味著我在等待響應。 1999 01:29:52,850 --> 01:29:54,180 這可能需要一點時間。 2000 01:29:54,180 --> 01:29:56,360 然後,你看到一個小負荷。 2001 01:29:56,360 --> 01:29:59,340 如果你想要做的,在你的網站。 2002 01:29:59,340 --> 01:30:01,440 所以斑點做,然後什麼 發生時,它做了什麼? 2003 01:30:01,440 --> 01:30:04,040 你傳遞一個匿名 功能,就像我們之前看到的。 2004 01:30:04,040 --> 01:30:07,800 因為做的是一個事件,只是 像點擊鼠標或什麼的, 2005 01:30:07,800 --> 01:30:08,710 jQuery的。 2006 01:30:08,710 --> 01:30:13,710 所以,你通過這個函數 數據,文本,狀態和jqXHR。 2007 01:30:13,710 --> 01:30:15,790 基本上,這是 只是一些變數 2008 01:30:15,790 --> 01:30:22,160 您可以使用以後有 在HTTP請求的狀態, 2009 01:30:22,160 --> 01:30:24,470 數據,這是怎麼回事 要回給你。 2010 01:30:24,470 --> 01:30:28,740 這樣的話,你可以在以後把它解釋 做一些有意義的事情吧。 2011 01:30:28,740 --> 01:30:30,240 如果失敗,當會失敗? 2012 01:30:30,240 --> 01:30:33,780 那麼,當HTTP請求給 你一個500或類似的東西。 2013 01:30:33,780 --> 01:30:37,420 然後,它會告訴你 狀態,什麼樣的失敗,這是的, 2014 01:30:37,420 --> 01:30:38,420 和各種各樣的事情。 2015 01:30:38,420 --> 01:30:40,630 你必須確保 處理這兩種情況下, 2016 01:30:40,630 --> 01:30:42,770 否則,程序進入瘋狂。 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN:所以是的,這正是 你看到了你的最後對集的內容。 2018 01:30:45,820 --> 01:30:49,720 實際的AJAX調用是在get JSON。 2019 01:30:49,720 --> 01:30:50,587 即該呼叫。 2020 01:30:50,587 --> 01:30:52,920 然後,點做得像 它會檢查它是否成功。 2021 01:30:52,920 --> 01:30:55,620 如果成功的話,你想 做一些與數據。 2022 01:30:55,620 --> 01:30:59,290 您從取回 JSON請求數據。 2023 01:30:59,290 --> 01:31:00,600 這就是你回來。 2024 01:31:00,600 --> 01:31:04,470 所以,如果你從你對集還記得, 很多你喜歡的數據支架我 2025 01:31:04,470 --> 01:31:06,302 或什麼的,點的鏈接或標題。 2026 01:31:06,302 --> 01:31:08,260 凡是回來 從JSON,無論 2027 01:31:08,260 --> 01:31:11,020 該字段是在JSON對象, 這是你在說什麼了。 2028 01:31:11,020 --> 01:31:12,394 數據是你在說什麼了。 2029 01:31:12,394 --> 01:31:15,510 文本狀態,只是一些 讓你知道發生了什麼事。 2030 01:31:15,510 --> 01:31:20,570 然後,在jqXHR,這只是 jQuery的XML HTTP請求。 2031 01:31:20,570 --> 01:31:21,990 這就像一個對象。 2032 01:31:21,990 --> 01:31:23,932 然後失敗,就像加布說。 2033 01:31:23,932 --> 01:31:27,140 GABE:在我們的小ABC123的例子 只是為了檢查,如果這是在數據庫 2034 01:31:27,140 --> 01:31:32,260 還是不行,數據會是你 會做,如果數據點的用戶名存在, 2035 01:31:32,260 --> 01:31:37,720 這是你的PHP生成的內容 你,如果數據點的用戶名存在,那麼 2036 01:31:37,720 --> 01:31:40,880 我要提醒,用戶 名稱已經存在。 2037 01:31:40,880 --> 01:31:44,300 否則,我只是打算讓 用戶開始填寫表格。 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK,安全,涼爽。 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN:要我? 2041 01:31:52,060 --> 01:31:54,500 >> 蓋柏:我喜歡這一個。 2042 01:31:54,500 --> 01:31:57,680 因此,一些看起來很熟悉。 2043 01:31:57,680 --> 01:31:59,750 我們幾乎已經完成。 2044 01:31:59,750 --> 01:32:02,670 因此,這僅僅是個例子 你們在課堂上看到的。 2045 01:32:02,670 --> 01:32:04,860 你正在使用argv1這裡。 2046 01:32:04,860 --> 01:32:06,460 這就像一個命令行參數。 2047 01:32:06,460 --> 01:32:09,270 我們正在MEM複製的 成大小為12的緩衝區。 2048 01:32:09,270 --> 01:32:12,560 有什麼問題嗎? 2049 01:32:12,560 --> 01:32:13,660 緩衝區溢出! 2050 01:32:13,660 --> 01:32:15,400 因為我們有大小為12的緩衝區。 2051 01:32:15,400 --> 01:32:18,400 argv1可能有兩個十億大小。 2052 01:32:18,400 --> 01:32:19,960 我們沒有做任何邊界檢查。 2053 01:32:19,960 --> 01:32:24,970 因此,我們可能會複製大量的內存。 2054 01:32:24,970 --> 01:32:28,630 我們將特別 不好了。 2055 01:32:28,630 --> 01:32:32,600 我們能做的就是 非常,在這種情況下,很是什麼意思? 2056 01:32:32,600 --> 01:32:33,278 是嗎? 2057 01:32:33,278 --> 01:32:36,528 聽眾:部分二十億東西 包含返回可執行代碼 2058 01:32:36,528 --> 01:32:38,127 [聽不清]。 2059 01:32:38,127 --> 01:32:38,710 GABE:沒錯。 2060 01:32:38,710 --> 01:32:41,110 所以這是什麼樣的 人們使用的東西 2061 01:32:41,110 --> 01:32:43,344 越獄的iPhone,例如。 2062 01:32:43,344 --> 01:32:44,260 所以,那種事。 2063 01:32:44,260 --> 01:32:48,610 因為你可以使設備 執行任何你喜歡的代碼。 2064 01:32:48,610 --> 01:32:50,247 修復,所以修復容易。 2065 01:32:50,247 --> 01:32:51,330 只是檢查的範圍。 2066 01:32:51,330 --> 01:32:53,455 您檢查空,因為 我們總是檢查空 2067 01:32:53,455 --> 01:32:54,940 當我們正在處理的字符串。 2068 01:32:54,940 --> 01:32:57,840 然後,你拿 字符串長度之前。 2069 01:32:57,840 --> 01:33:00,150 而且,如果該字符串 長度是一個有效的字符串 2070 01:33:00,150 --> 01:33:03,700 長度,它是在0 和12,那麼我們是很好的。 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN:如果你不檢查 空,真正的快,會發生什麼? 2072 01:33:07,144 --> 01:33:07,810 它會賽格故障。 2073 01:33:07,810 --> 01:33:10,850 為什麼它賽格故障? 2074 01:33:10,850 --> 01:33:12,510 因為你調用strlen的對空。 2075 01:33:12,510 --> 01:33:13,010 GABE:是的。 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 真的還是假的,使用一個 密碼是一個好主意。 2078 01:33:19,630 --> 01:33:20,430 >> 聽眾:假。 2079 01:33:20,430 --> 01:33:21,150 >> GABE:假。 2080 01:33:21,150 --> 01:33:23,870 使用許多密碼和又大又長的。 2081 01:33:23,870 --> 01:33:26,050 掛鎖圖標確保安全性。 2082 01:33:26,050 --> 01:33:27,080 >> 聽眾:假。 2083 01:33:27,080 --> 01:33:27,749 >> GABE:假。 2084 01:33:27,749 --> 01:33:28,790 這並不意味著什麼。 2085 01:33:28,790 --> 01:33:30,480 這只是一個圖標。 2086 01:33:30,480 --> 01:33:32,824 SSL可防禦 中間人攻擊。 2087 01:33:32,824 --> 01:33:33,490 聽眾:假。 2088 01:33:33,490 --> 01:33:34,110 GABE:假。 2089 01:33:34,110 --> 01:33:35,355 好了,所有這些都是假的。 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 尼斯。 2092 01:33:39,490 --> 01:33:40,220 [聽不清] 2093 01:33:40,220 --> 01:33:42,500 要談這個? 2094 01:33:42,500 --> 01:33:43,259 輪到你了。 2095 01:33:43,259 --> 01:33:45,050 DAVIN:類型的攻擊, 中間人。 2096 01:33:45,050 --> 01:33:47,134 什麼是在中間人攻擊? 2097 01:33:47,134 --> 01:33:48,050 觀眾:[聽不清]。 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN:如果你發送一個HTTP 要求,他們能做到這一點,對不對? 2100 01:33:54,020 --> 01:33:57,890 但是,如果你發送HTTPS,他們 可能將無法做到這一點。 2101 01:33:57,890 --> 01:33:59,952 有很多點 沿著你的連接。 2102 01:33:59,952 --> 01:34:00,660 你有路由器。 2103 01:34:00,660 --> 01:34:01,746 你有DNS服務器。 2104 01:34:01,746 --> 01:34:04,120 如果有人能夠物理上 看到你發送的東西, 2105 01:34:04,120 --> 01:34:06,140 所以有人能 你們之間真正得到, 2106 01:34:06,140 --> 01:34:08,840 在客戶端,服務器,並且是 能夠看到你發送的東西, 2107 01:34:08,840 --> 01:34:10,298 這是在中間人攻擊。 2108 01:34:10,298 --> 01:34:14,287 所以看到你正在試圖從得到什麼 服務器,或者是能夠see--差, 2109 01:34:14,287 --> 01:34:16,620 你也許能看到 餅乾之類的東西。 2110 01:34:16,620 --> 01:34:19,290 >> 因此,例如,如果 你沒有使用SSL,他 2111 01:34:19,290 --> 01:34:21,900 可能能夠看到 您的會話ID的Cookie。 2112 01:34:21,900 --> 01:34:25,460 這被稱為會話劫持 因為他看到你的ID的Cookie, 2113 01:34:25,460 --> 01:34:28,317 然後他能去那 網站,假裝是你。 2114 01:34:28,317 --> 01:34:31,150 因為就像在PHP中,記住 當我們登錄了,我們怎麼辦? 2115 01:34:31,150 --> 01:34:33,340 我們設置會話ID等於ID。 2116 01:34:33,340 --> 01:34:34,810 讓你識別。 2117 01:34:34,810 --> 01:34:38,300 這就是為什麼你可以看到你的投資組合 而不是其他人的投資組合。 2118 01:34:38,300 --> 01:34:42,320 >> 好吧,如果我能得到那個cookie, 然後我就可以登錄到該頁面。 2119 01:34:42,320 --> 01:34:45,380 然後,我就可以看到你的東西 並開始買賣東西。 2120 01:34:45,380 --> 01:34:46,800 所以這是會話劫持。 2121 01:34:46,800 --> 01:34:50,810 但你不應該能夠to--所以你 可以使用中間人攻擊 2122 01:34:50,810 --> 01:34:52,290 即使他們正在使用SSL。 2123 01:34:52,290 --> 01:34:53,520 但你不應該能。 2124 01:34:53,520 --> 01:34:56,580 如果他們使用SSL, 你不能會話劫持。 2125 01:34:56,580 --> 01:34:58,927 為什麼呢? 2126 01:34:58,927 --> 01:35:01,135 因為它的所有加密, 對不對?如果它是加密的, 2127 01:35:01,135 --> 01:35:03,509 而我仍然在一個人 中間,我仍然得到你的數據。 2128 01:35:03,509 --> 01:35:04,279 沒關係。 2129 01:35:04,279 --> 01:35:05,070 但它的加密。 2130 01:35:05,070 --> 01:35:07,750 所以我真的不能使用它。 2131 01:35:07,750 --> 01:35:09,840 所以,這兩人。 2132 01:35:09,840 --> 01:35:11,544 >> 真正的快,跨站請求偽造。 2133 01:35:11,544 --> 01:35:13,960 這只是如果有一個鏈接 而該鏈接做一些事情 2134 01:35:13,960 --> 01:35:14,890 你不認為它應該做的。 2135 01:35:14,890 --> 01:35:18,150 因此,例如,如果鏈路是 打算買股票或賣出股票, 2136 01:35:18,150 --> 01:35:19,360 你不知道。 2137 01:35:19,360 --> 01:35:22,040 您單擊的鏈接, 發送的請求,購買了 2138 01:35:22,040 --> 01:35:24,240 或出售的東西, 你不是故意這樣做。 2139 01:35:24,240 --> 01:35:25,120 就是這樣。 2140 01:35:25,120 --> 01:35:30,720 >> 跨站腳本,所以在這裡, 您是通過變量Q傳遞, 2141 01:35:30,720 --> 01:35:33,510 而不是通過某種 價值,也許q是像一個名字。 2142 01:35:33,510 --> 01:35:36,560 因此,而不是通過Q等於 達文或類似的東西, 2143 01:35:36,560 --> 01:35:38,740 如果你不使用HTML 特殊字符,如果你 2144 01:35:38,740 --> 01:35:43,100 不要逃避是為了確保它的 OK,然後我可以傳遞,而不是, 2145 01:35:43,100 --> 01:35:46,910 比方說,在這裡我想說的 打印或類似的東西, 2146 01:35:46,910 --> 01:35:51,070 然後我可以通過在這裡的腳本調用。 2147 01:35:51,070 --> 01:35:53,140 >> 這樣的話,而不是 剛開一個變量, 2148 01:35:53,140 --> 01:35:54,960 然後,我會執行這個腳本調用。 2149 01:35:54,960 --> 01:35:57,065 所以這裡面的腳本 調用,它有什麼作用? 2150 01:35:57,065 --> 01:36:00,190 文檔點的位置,那將 改變文檔的位置。 2151 01:36:00,190 --> 01:36:02,290 所以,我要重定向 到別的地方。 2152 01:36:02,290 --> 01:36:08,170 這就是所謂的壞人 這個例子,很不錯的。 2153 01:36:08,170 --> 01:36:10,536 無法想到的詞。 2154 01:36:10,536 --> 01:36:12,410 然後,什麼是連 更糟糕的是,我要去 2155 01:36:12,410 --> 01:36:16,832 以再設置cookie,它是一些 變我在這個網站。 2156 01:36:16,832 --> 01:36:19,040 我將它設置為等於 到文檔點餅乾。 2157 01:36:19,040 --> 01:36:20,660 因此,我要去 偷你的cookie。 2158 01:36:20,660 --> 01:36:22,951 而且我要重定向 一些信息網站 2159 01:36:22,951 --> 01:36:25,120 你不應該訪問。 2160 01:36:25,120 --> 01:36:29,250 而這一切是因為你 不是逃避什麼,你所看到的。 2161 01:36:29,250 --> 01:36:29,910 是嗎? 2162 01:36:29,910 --> 01:36:32,160 >> 聽眾:所以剛 說清楚,這是 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com了 是受到此。 2164 01:36:37,550 --> 01:36:39,300 這樣的鏈接可以出現 在任何給定的頁面。 2165 01:36:39,300 --> 01:36:42,200 有人點擊就可以了, 去vulnerable.com。 2166 01:36:42,200 --> 01:36:43,700 你有一個cookie來vulnerable.com。 2167 01:36:43,700 --> 01:36:46,670 比方說,Facebook是 脆弱的,所以facebook.com。 2168 01:36:46,670 --> 01:36:48,310 你有你的Facebook的cookie。 2169 01:36:48,310 --> 01:36:50,925 這是什麼做的,你 去facebook.com, 2170 01:36:50,925 --> 01:36:53,990 它立即重定向 你badguy.com, 2171 01:36:53,990 --> 01:36:57,182 但包括你的cookie信息。 2172 01:36:57,182 --> 01:36:59,310 所以這是一個快速重定向, 但你的Facebook的cookie 2173 01:36:59,310 --> 01:37:02,572 包括與重定向, 這就是他們如何[聽不清]。 2174 01:37:02,572 --> 01:37:04,280 GABE:是的,有 一些非常低級的事情 2175 01:37:04,280 --> 01:37:06,070 人們如果有這個可以做。 2176 01:37:06,070 --> 01:37:09,190 例如,如果允許實 大家改變你的用戶名, 2177 01:37:09,190 --> 01:37:11,680 他們沒有做任何 完整性檢查,所以你 2178 01:37:11,680 --> 01:37:16,810 可以插入一個JavaScript的事情, 改變你的形象倉鼠。 2179 01:37:16,810 --> 01:37:22,590 和插入相同的JavaScript 為大家誰的意見您的網頁。 2180 01:37:22,590 --> 01:37:26,400 所以大家誰的意見您的網頁 在用戶名相同的事情。 2181 01:37:26,400 --> 01:37:30,104 而且因為它是一個病毒, 它傳播指數。 2182 01:37:30,104 --> 01:37:32,270 DAVIN:我們將跳過最後 一個,然後我們就大功告成了。 2183 01:37:32,270 --> 01:37:34,120 所以,這只是一個例子。 2184 01:37:34,120 --> 01:37:36,120 因此,這是他們不 逃脫他們的SQL表。 2185 01:37:36,120 --> 01:37:37,090 所以,你可以刪除它。 2186 01:37:37,090 --> 01:37:38,805 所以,你想逃避的東西。 2187 01:37:38,805 --> 01:37:44,010 這是在前面的例子 與跨站腳本。 2188 01:37:44,010 --> 01:37:45,430 對不起,我們跑了有點晚。 2189 01:37:45,430 --> 01:37:46,870 明天,對不起! 2190 01:37:46,870 --> 01:37:48,560 明天,我們的辦公時間。 2191 01:37:48,560 --> 01:37:50,870 所以,辦公時間在Cabbot 8:00至11:00。 2192 01:37:50,870 --> 01:37:55,240 辦公時間為 嚴格的問答題。 2193 01:37:55,240 --> 01:37:56,587