1 00:00:00,000 --> 00:00:12,610 2 00:00:12,610 --> 00:00:12,900 >> DAVID J. Malan: zote haki. 3 00:00:12,900 --> 00:00:16,790 Hivyo welcome kwanza milele CS50 postmortem kwa jaribio. 4 00:00:16,790 --> 00:00:18,340 Sisi mawazo tunatarajia tawaza mila hii mwaka huu. 5 00:00:18,340 --> 00:00:20,960 Na hii itakuwa nafasi kutembea kwa njia ya 6 00:00:20,960 --> 00:00:22,220 ufumbuzi wa jaribio. 7 00:00:22,220 --> 00:00:26,160 Na tutaweza kuharakisha au kupunguza msingi juu ya maslahi ya wale hapa. 8 00:00:26,160 --> 00:00:29,730 >> Basi, wewe ni pengine hapa kwa sababu wewe ni nia ya jinsi unaweza kuwa na au 9 00:00:29,730 --> 00:00:31,170 wanapaswa kuwa alijibu baadhi ya matatizo haya. 10 00:00:31,170 --> 00:00:33,300 Hivyo kwa nini sio sisi kuangalia katika sehemu hii ya kwanza? 11 00:00:33,300 --> 00:00:34,450 Hivyo kupata masharti. 12 00:00:34,450 --> 00:00:37,600 Hii alitoa wewe versions tatu tofauti wa mpango huo alikuwa, hatimaye, 13 00:00:37,600 --> 00:00:39,650 maana ya kupata kamba kutoka kwa mtumiaji. 14 00:00:39,650 --> 00:00:42,530 Kama au alifanya hivyo mara kushoto na wewe kuamua. 15 00:00:42,530 --> 00:00:45,150 >> Na sisi aliuliza katika Swali 0, kudhani kwamba toleo 1 ni 16 00:00:45,150 --> 00:00:46,400 ulioandaliwa na kuuawa. 17 00:00:46,400 --> 00:00:48,860 Kwa nini huenda mpango segfault? 18 00:00:48,860 --> 00:00:51,150 Kwa mtazamo wa kwanza, mapendekezo yoyote kama ni kwa nini? 19 00:00:51,150 --> 00:00:54,012 20 00:00:54,012 --> 00:00:54,489 Yeah. 21 00:00:54,489 --> 00:00:59,260 >> Watazamaji: Kwa hiyo Nakumbuka kuona hii katika mfano wa awali ya kuangalia 22 00:00:59,260 --> 00:01:05,506 char * s na kuona Scan ya s na kuona kwa sababu ni pointer, jinsi 23 00:01:05,506 --> 00:01:07,971 gani imekuathiri nini scanned katika? 24 00:01:07,971 --> 00:01:10,940 Je, ni s au anwani ya s? 25 00:01:10,940 --> 00:01:11,180 >> DAVID J. Malan: OK. 26 00:01:11,180 --> 00:01:11,480 Nzuri. 27 00:01:11,480 --> 00:01:14,830 Hivyo hatimaye, chanzo cha tatizo lolote ni labda kwenda kupunguza 28 00:01:14,830 --> 00:01:16,210 kwa kuwa kutofautiana s. 29 00:01:16,210 --> 00:01:17,280 Na ni kweli kutofautiana. 30 00:01:17,280 --> 00:01:19,900 aina data ya kwamba kutofautiana ni * Char, ambayo ina maana itakuja 31 00:01:19,900 --> 00:01:22,570 vyenye anwani ya tabia. 32 00:01:22,570 --> 00:01:23,850 Na humo uongo busara. 33 00:01:23,850 --> 00:01:28,330 Ni kwenda vyenye ya barua pepe ya tabia au, kwa ujumla zaidi, 34 00:01:28,330 --> 00:01:32,110 barua pepe ya tabia ya kwanza katika kuzuia nzima ya wahusika. 35 00:01:32,110 --> 00:01:36,680 >> Lakini samaki ni kwamba Scan s, lengo katika maisha, ni kutolewa anwani na kupewa 36 00:01:36,680 --> 00:01:40,960 code format, kama% s, kusoma kamba ndani ya chunk ya 37 00:01:40,960 --> 00:01:42,330 kumbukumbu katika anwani hiyo. 38 00:01:42,330 --> 00:01:46,040 Lakini kwa sababu hakuna ishara sawa kabla ya kwamba semicolon ya kwanza 39 00:01:46,040 --> 00:01:49,310 mstari wa kanuni, kwa sababu sisi si kweli kutenga kumbukumbu yoyote na 40 00:01:49,310 --> 00:01:53,020 malloc, kwa sababu hawakuwa kweli kutenga safu ya baadhi ukubwa, kila 41 00:01:53,020 --> 00:01:57,620 wewe ni kufanya ni kusoma mtumiaji keyboard mchango katika baadhi kamili 42 00:01:57,620 --> 00:02:00,490 takataka thamani, ambayo ni katika s by default. 43 00:02:00,490 --> 00:02:04,480 Hivyo ni tabia mbaya wewe kwenda segfault kama anwani hiyo si tu hivyo kutokea 44 00:02:04,480 --> 00:02:08,009 kuwa thamani kwamba unaweza, kwa kweli, kuandika. 45 00:02:08,009 --> 00:02:10,889 Hivyo si mbaya kwa kutenga kumbukumbu yako huko. 46 00:02:10,889 --> 00:02:13,150 >> Hivyo katika swali 1, sisi aliuliza, kudhani kwamba toleo la 2 ni 47 00:02:13,150 --> 00:02:14,230 ulioandaliwa na kuuawa. 48 00:02:14,230 --> 00:02:15,900 Kwa nini huenda mpango huu segfault? 49 00:02:15,900 --> 00:02:17,990 Hivyo hii ni moja ya chini buggy. 50 00:02:17,990 --> 00:02:21,470 Na kuna kweli moja tu Njia ya wazi ambapo unaweza 51 00:02:21,470 --> 00:02:22,810 kusababisha segfault hapa. 52 00:02:22,810 --> 00:02:23,730 Na hii ni ufadhili. 53 00:02:23,730 --> 00:02:28,180 Wakati wowote sisi ni kutumia c katika kumbukumbu, nini unaweza kufanya kushawishi segfault 54 00:02:28,180 --> 00:02:30,718 na toleo la 2? 55 00:02:30,718 --> 00:02:35,560 >> Watazamaji: Kama matumizi ya pembejeo kwamba katika kamba kwamba zaidi ya 49 56 00:02:35,560 --> 00:02:35,975 wahusika. 57 00:02:35,975 --> 00:02:37,260 >> DAVID J. Malan: Hasa. 58 00:02:37,260 --> 00:02:41,420 Wakati wowote unaweza kuona kitu fasta urefu linapokuja suala la safu, yako 59 00:02:41,420 --> 00:02:44,650 rada lazima kwenda mbali kwamba hii inaweza kuwa matatizo kama wewe si kuangalia 60 00:02:44,650 --> 00:02:45,810 mipaka ya safu. 61 00:02:45,810 --> 00:02:46,650 Na kwamba ni tatizo hapa. 62 00:02:46,650 --> 00:02:47,910 Bado tuko kutumia scanf. 63 00:02:47,910 --> 00:02:52,200 Bado tuko kutumia% s, ambayo ina maana kujaribu kusoma kamba kutoka kwa mtumiaji. 64 00:02:52,200 --> 00:02:56,300 Hiyo ambayo kwenda kusoma katika s,, katika hatua hii, ni ufanisi 65 00:02:56,300 --> 00:02:58,570 barua pepe ya chunk ya kumbukumbu au ni sawa. 66 00:02:58,570 --> 00:03:02,080 Ni jina la safu ya wahusika wa kumbukumbu. 67 00:03:02,080 --> 00:03:07,610 >> Lakini hasa ni kwamba, kama wewe kusoma string kwamba zaidi ya wahusika 49, 49 68 00:03:07,610 --> 00:03:10,440 kwa sababu unahitaji nafasi kwa backslash 0, wewe kwenda kufurika 69 00:03:10,440 --> 00:03:11,390 kwamba buffer. 70 00:03:11,390 --> 00:03:16,410 Na unaweza kupata bahati na kuwa na uwezo wa kuandika tabia ya 51, 52, 53. 71 00:03:16,410 --> 00:03:18,560 Lakini wakati fulani, OS ni kwenda kusema, no. 72 00:03:18,560 --> 00:03:21,270 Hii dhahiri si kumbukumbu wewe ni kuruhusiwa kwa kugusa. 73 00:03:21,270 --> 00:03:23,380 Na mpango ni kwenda segfault. 74 00:03:23,380 --> 00:03:26,650 >> Kwa hiyo, kuna, heuristics lazima yoyote wakati nimepata fasta urefu, una 75 00:03:26,650 --> 00:03:30,150 kuhakikisha wewe ni kuangalia urefu ya chochote ni wewe ni kujaribu 76 00:03:30,150 --> 00:03:31,090 kusoma ndani yake. 77 00:03:31,090 --> 00:03:35,110 >> Watazamaji: Hivyo kutatua kwamba, unaweza kuwa na taarifa kuangalia kweli 78 00:03:35,110 --> 00:03:37,140 ni urefu zaidi zaidi kuliko au chini ya? 79 00:03:37,140 --> 00:03:37,730 >> DAVID J. Malan: Ndiyo. 80 00:03:37,730 --> 00:03:41,706 Wewe tu na hali kwamba anasema, kama - 81 00:03:41,706 --> 00:03:46,080 au tuseme wewe si lazima kujua mapema jinsi wahusika wengi 82 00:03:46,080 --> 00:03:49,060 user ni kwenda kwa aina, kwa sababu una kuku na yai. 83 00:03:49,060 --> 00:03:51,860 Si mpaka umefanya kusoma katika na scanf unaweza kufikiri ni muda gani. 84 00:03:51,860 --> 00:03:54,500 Lakini katika hatua hiyo, ni kuchelewa mno, kwa sababu umefanya tayari kusoma katika 85 00:03:54,500 --> 00:03:55,710 baadhi block ya kumbukumbu. 86 00:03:55,710 --> 00:03:59,590 Hivyo kama kando, avoids CS50 maktaba suala hili kabisa, kukumbuka 87 00:03:59,590 --> 00:04:01,060 kwa kutumia fgetc. 88 00:04:01,060 --> 00:04:05,390 Na wasomaji tabia kwa wakati mmoja, ncha-toeing pamoja, kujua kwamba wewe 89 00:04:05,390 --> 00:04:08,060 hawezi kufurika tabia kama kusoma kwa wakati mmoja. 90 00:04:08,060 --> 00:04:11,580 >> samaki ni kwa GetString kukumbuka ni kwamba tuna mara kwa mara re-size 91 00:04:11,580 --> 00:04:13,590 kwamba chunk ya kumbukumbu, ambayo ni tu maumivu. 92 00:04:13,590 --> 00:04:15,310 Ni mengi ya mistari ya code kufanya hivyo. 93 00:04:15,310 --> 00:04:18,779 Hivyo njia nyingine ya itakuwa kweli matumizi ya binamu, hivyo 94 00:04:18,779 --> 00:04:19,790 kusema, ya scanf. 95 00:04:19,790 --> 00:04:22,820 Kuna lahaja ya mengi ya haya kazi ambayo kwa kweli kuangalia 96 00:04:22,820 --> 00:04:25,870 urefu wa jinsi wahusika wengi unaweza kusoma maximally. 97 00:04:25,870 --> 00:04:29,430 Na unaweza bayana, si kusoma zaidi ya 50 wahusika. 98 00:04:29,430 --> 00:04:34,110 Hivyo kwamba itakuwa njia nyingine ya lakini chini ya accommodating wa pembejeo kubwa. 99 00:04:34,110 --> 00:04:37,040 >> Hivyo swali 2 anauliza, tuseme toleo kwamba 3 ni ulioandaliwa na kuuawa. 100 00:04:37,040 --> 00:04:39,960 Kwa nini huenda mpango huo segfault? 101 00:04:39,960 --> 00:04:42,650 Hivyo hii ni moja ya kweli sawa kujibu, hata kama ni 102 00:04:42,650 --> 00:04:43,590 inaonekana kidogo fancier. 103 00:04:43,590 --> 00:04:46,440 Sisi ni kutumia malloc, ambayo anahisi kama sisi ni kutoa wenyewe chaguzi zaidi. 104 00:04:46,440 --> 00:04:48,030 Na kisha sisi ni kumkomboa kwamba kumbukumbu mwishoni. 105 00:04:48,030 --> 00:04:49,580 Bado ka 50 tu ya kumbukumbu. 106 00:04:49,580 --> 00:04:53,620 Hivyo tupate bado kujaribu kusoma katika 51, 52, 1000 bytes. 107 00:04:53,620 --> 00:04:55,830 Ni kwenda segfault kwa hasa sababu hiyo. 108 00:04:55,830 --> 00:04:57,530 >> Lakini kuna sababu nyingine pia. 109 00:04:57,530 --> 00:05:03,890 Nini kingine unaweza malloc kurudi badala ya barua pepe ya chunk ya kumbukumbu? 110 00:05:03,890 --> 00:05:04,920 Ni inaweza kurudi null. 111 00:05:04,920 --> 00:05:07,560 Na kwa sababu sisi siyo kuangalia kwa hivyo, tunaweza kufanya kitu 112 00:05:07,560 --> 00:05:11,350 kijinga kwa sababu nyingine, ambayo ni kwamba sisi tupate kuwa kuwaambia scanf, kusoma 113 00:05:11,350 --> 00:05:16,050 pembejeo mtumiaji kutoka keyboard ndani ya eneo 0, AKA null. 114 00:05:16,050 --> 00:05:18,890 Na kwamba, pia, dhahiri kusababisha segfault. 115 00:05:18,890 --> 00:05:21,590 Hivyo kwa ajili ya jaribio, sisi ingekuwa wamekubali ama ya wale kama 116 00:05:21,590 --> 00:05:22,740 sababu halali. 117 00:05:22,740 --> 00:05:23,420 Moja ni kufanana. 118 00:05:23,420 --> 00:05:25,720 Moja ni pongezi kidogo zaidi. 119 00:05:25,720 --> 00:05:28,975 >> Mwisho, kwa heshima na mpango wa matumizi ya kumbukumbu, jinsi ya kufanya toleo la 2 na 120 00:05:28,975 --> 00:05:30,350 version 3 tofauti? 121 00:05:30,350 --> 00:05:35,070 Hivyo kwa nini ni thamani, tuliona inaonekana kutokuwa na mwisho usambazaji wa iwezekanavyo 122 00:05:35,070 --> 00:05:35,770 majibu ya hii. 123 00:05:35,770 --> 00:05:39,300 Na kati ya majibu ya watu, nini tulikuwa matumaini kwa, lakini tulikubali nyingine 124 00:05:39,300 --> 00:05:42,250 mambo, na baadhi ya kutaja ukweli kwamba toleo la 2 ni kwa kutumia 125 00:05:42,250 --> 00:05:44,560 kinachojulikana stack. 126 00:05:44,560 --> 00:05:46,710 Version 3 ni kwa kutumia chungu. 127 00:05:46,710 --> 00:05:50,060 Na functionally, hii si kweli kufanya mengi yote ya tofauti. 128 00:05:50,060 --> 00:05:54,040 Mwisho wa siku, bado tuko kupata tu 50 ka ya kumbukumbu. 129 00:05:54,040 --> 00:05:56,640 >> Lakini hiyo ilikuwa moja ya majibu iwezekanavyo kwamba sisi walikuwa kuangalia. 130 00:05:56,640 --> 00:05:59,730 Lakini utaona, kama wewe kupata Quizzes yako nyuma kutoka TFS, kwamba sisi alifanya 131 00:05:59,730 --> 00:06:04,330 kukubali majadiliano nyingine ya zao matumizi tofauti ya kumbukumbu pia. 132 00:06:04,330 --> 00:06:08,600 Lakini stack na chungu ingekuwa jibu rahisi kwenda pamoja. 133 00:06:08,600 --> 00:06:11,150 Maswali yoyote? 134 00:06:11,150 --> 00:06:12,400 Mimi kukupa Rob. 135 00:06:12,400 --> 00:06:18,360 136 00:06:18,360 --> 00:06:20,210 >> Rob BOWDEN: Hivyo tatizo 4. 137 00:06:20,210 --> 00:06:21,985 Hii ni moja ambapo alikuwa na kujaza katika idadi ya ka nje ya yote 138 00:06:21,985 --> 00:06:23,460 aina hizi mbalimbali kutumika. 139 00:06:23,460 --> 00:06:24,830 Kitu hivyo kwanza sisi kuona. 140 00:06:24,830 --> 00:06:27,930 Kudhani 32-bit usanifu, kama hii appliance CS50. 141 00:06:27,930 --> 00:06:33,530 Hivyo moja ya mambo ya msingi kuhusu 32-bit architectures, kwamba inatuambia 142 00:06:33,530 --> 00:06:37,490 hasa jinsi kubwa pointer ni kwenda kuwa katika usanifu. 143 00:06:37,490 --> 00:06:43,020 >> Hivyo mara moja, tunajua kwamba pointer yoyote aina ni 32-bits au 4 ka. 144 00:06:43,020 --> 00:06:46,010 Ili kuangalia katika meza hii, a nodi * ni aina pointer. 145 00:06:46,010 --> 00:06:47,250 Hiyo inaenda kuwa 4 ka. 146 00:06:47,250 --> 00:06:51,640 Struct nodi *, hiyo ni halisi kufanana na nyota nodi. 147 00:06:51,640 --> 00:06:53,590 Na ili kwenda kuwa 4 ka. 148 00:06:53,590 --> 00:06:58,270 Kamba, hivyo hana kuangalia kama pointer bado, lakini typedef, a 149 00:06:58,270 --> 00:07:01,590 kamba ni * Char, ambayo ni ya aina pointer. 150 00:07:01,590 --> 00:07:03,550 Ili kwenda kuwa 4 ka. 151 00:07:03,550 --> 00:07:06,150 >> Basi hao tatu wote ni ka 4. 152 00:07:06,150 --> 00:07:09,350 Sasa, node na mwanafunzi ni kidogo zaidi ngumu. 153 00:07:09,350 --> 00:07:15,160 Hivyo kuangalia node na mwanafunzi, tunaona node kama integer na pointer. 154 00:07:15,160 --> 00:07:18,050 Na mwanafunzi ni kuyatumia mbili ndani yake. 155 00:07:18,050 --> 00:07:23,340 Basi angalau kwa kesi yetu hapa, njia kwamba sisi kuishia kuhesabu ukubwa wa 156 00:07:23,340 --> 00:07:27,020 struct hii ni kuongeza tu juu ya kila kitu kwamba ndani ya struct. 157 00:07:27,020 --> 00:07:30,690 >> Hivyo kwa node, tuna integer, ambayo ni 4 ka. 158 00:07:30,690 --> 00:07:32,830 Tuna pointer, ambayo ni 4 ka. 159 00:07:32,830 --> 00:07:35,820 Na hivyo node moja ni kwenda kuchukua 8 bytes. 160 00:07:35,820 --> 00:07:39,490 Na vile vile kwa mwanafunzi, tuna pointer kwamba 4 ka na mwingine 161 00:07:39,490 --> 00:07:40,770 pointer kwamba 4 ka. 162 00:07:40,770 --> 00:07:43,180 Ili kwenda kumaliza juu ya kuwa 8 bytes. 163 00:07:43,180 --> 00:07:45,480 Hivyo node na mwanafunzi ni 8 bytes. 164 00:07:45,480 --> 00:07:48,950 Na watatu hawa ni wote ka 4. 165 00:07:48,950 --> 00:07:50,240 Maswali juu ya hilo? 166 00:07:50,240 --> 00:07:54,640 167 00:07:54,640 --> 00:07:54,990 Ndiyo. 168 00:07:54,990 --> 00:07:58,413 >> Watazamaji: Je, ni mara 64-bit usanifu, ingekuwa kwamba 169 00:07:58,413 --> 00:07:59,880 mara mbili wote? 170 00:07:59,880 --> 00:08:01,790 >> Rob BOWDEN: Ingekuwa si mara mbili wote. 171 00:08:01,790 --> 00:08:05,830 Hivyo 64-bit usanifu, ni mara ya pili, mabadiliko ambayo kitu ya msingi kwamba 172 00:08:05,830 --> 00:08:08,910 pointer ni sasa 64 bits. 173 00:08:08,910 --> 00:08:09,290 Yeah. 174 00:08:09,290 --> 00:08:10,930 Hivyo pointer ni 8 bytes. 175 00:08:10,930 --> 00:08:15,420 Basi hao waliokuwa 4 ka ni kwenda kuwa 8 bytes. 176 00:08:15,420 --> 00:08:18,617 mwanafunzi, ambayo ilikuwa kuyatumia mbili, vizuri, sasa ni kwenda 177 00:08:18,617 --> 00:08:19,800 kuwa 8 ka, 8 bytes. 178 00:08:19,800 --> 00:08:21,980 Ni kwenda kufanya 16 bytes. 179 00:08:21,980 --> 00:08:25,710 >> Lakini node bado ni 4 ka. 180 00:08:25,710 --> 00:08:27,800 Hivyo pointer hii ni kwenda kuwa 8 bytes. 181 00:08:27,800 --> 00:08:28,930 Hii ni 4 ka. 182 00:08:28,930 --> 00:08:30,870 Hivyo node ni kwenda tu kuwa ka 12. 183 00:08:30,870 --> 00:08:36,309 184 00:08:36,309 --> 00:08:39,280 Maswali yoyote juu ya kwamba mtu? 185 00:08:39,280 --> 00:08:44,500 Hivyo moja ijayo, hizi ni Codes hali ya HTTP. 186 00:08:44,500 --> 00:08:48,000 Na alikuwa na kuelezea hali chini ambayo nguvu hizi 187 00:08:48,000 --> 00:08:49,810 kurudishwa kwa wewe. 188 00:08:49,810 --> 00:08:56,730 tatizo moja kwamba nikasikia baadhi ya wanafunzi ni kwamba walijaribu kufanya 189 00:08:56,730 --> 00:08:58,950 makosa kuwa tarehe ya mwisho ya mteja. 190 00:08:58,950 --> 00:09:02,320 Hivyo wakati sisi kujaribu kufanya ombi kwa server, kitu huenda 191 00:09:02,320 --> 00:09:03,820 makosa ya mwisho wetu. 192 00:09:03,820 --> 00:09:07,660 Lakini kwa ujumla, kanuni hizi ni kuwa akarudi na server. 193 00:09:07,660 --> 00:09:11,720 Hivyo tunataka kufikiri nini kinaendelea au nia mbaya juu ya server kwamba 194 00:09:11,720 --> 00:09:14,280 husababisha mambo haya kurudishwa. 195 00:09:14,280 --> 00:09:18,670 Hivyo kwa nini nguvu anarudi server hali ya code 200? 196 00:09:18,670 --> 00:09:19,920 Mawazo yoyote? 197 00:09:19,920 --> 00:09:23,360 198 00:09:23,360 --> 00:09:23,730 >> Yeah. 199 00:09:23,730 --> 00:09:27,850 Hivyo kitu kuhusu mafanikio ombi akaenda kupitia. 200 00:09:27,850 --> 00:09:30,260 Na wao uko na uwezo wa kurudi chochote akaomba. 201 00:09:30,260 --> 00:09:32,240 Kwa hiyo kila kitu ilikuwa nzuri. 202 00:09:32,240 --> 00:09:35,662 Nini kuhusu 302 kupatikana? 203 00:09:35,662 --> 00:09:36,618 Yeah. 204 00:09:36,618 --> 00:09:39,008 >> Watazamaji: server mara kuangalia kwa nini ombi. 205 00:09:39,008 --> 00:09:40,442 Lakini hakuweza kupata hiyo. 206 00:09:40,442 --> 00:09:42,850 Hivyo kuna makosa. 207 00:09:42,850 --> 00:09:47,720 >> Rob BOWDEN: Kwa hiyo server mara kuangalia kwa nini alitaka. 208 00:09:47,720 --> 00:09:51,682 Hivyo tu kuangalia hapa, 302 kupatikana, alikuwa na uwezo wa kupata hiyo. 209 00:09:51,682 --> 00:09:53,035 >> Watazamaji: Samahani. 210 00:09:53,035 --> 00:09:54,388 Kupatikana ina maana kwamba alifanya kupata hiyo. 211 00:09:54,388 --> 00:09:55,638 Sorry. 212 00:09:55,638 --> 00:09:58,120 213 00:09:58,120 --> 00:10:00,160 >> Rob BOWDEN: Hivyo 302 found. 214 00:10:00,160 --> 00:10:02,350 server ni uwezo wa kupata nini alitaka. 215 00:10:02,350 --> 00:10:04,640 >> Watazamaji: Lakini si kuonyesha ni? 216 00:10:04,640 --> 00:10:08,180 >> Rob BOWDEN: Tofauti kati ya hii 302 na 200 ni kwamba 217 00:10:08,180 --> 00:10:09,280 anajua unataka. 218 00:10:09,280 --> 00:10:12,000 Lakini si hasa ambapo alitaka kuuliza. 219 00:10:12,000 --> 00:10:14,580 Hivyo 302 ni kuelekeza kawaida. 220 00:10:14,580 --> 00:10:16,510 Hivyo ombi ukurasa. 221 00:10:16,510 --> 00:10:19,590 Ni anajua, oh, nataka kurudi hili. 222 00:10:19,590 --> 00:10:21,070 Lakini hii ni katika URL tofauti. 223 00:10:21,070 --> 00:10:23,534 Hivyo hey, wewe kweli unataka hii. 224 00:10:23,534 --> 00:10:26,950 >> DAVID J. Malan: Ni kipande kuwa alisema kwamba tuliyowapeni guys kuelekeza 225 00:10:26,950 --> 00:10:30,830 kazi ambayo kutumika header kazi kwamba, kwa upande wake, kuchapishwa nje ya eneo, 226 00:10:30,830 --> 00:10:34,110 koloni, na kisha URL ambayo unataka kukataa user. 227 00:10:34,110 --> 00:10:37,480 Hata kama wewe hawakuona 302 wazi kuna, kwamba ni nini PHP 228 00:10:37,480 --> 00:10:41,550 itakuwa magically kuingiza kama header akisema nini hasa Rob alisema kuna - 229 00:10:41,550 --> 00:10:41,930 kupatikana. 230 00:10:41,930 --> 00:10:43,180 Lakini nenda hapa badala yake. 231 00:10:43,180 --> 00:10:45,960 232 00:10:45,960 --> 00:10:46,160 >> Rob BOWDEN: OK. 233 00:10:46,160 --> 00:10:47,630 Basi nini kuhusu 403 haramu? 234 00:10:47,630 --> 00:10:52,240 235 00:10:52,240 --> 00:10:57,120 >> Watazamaji: Nadhani ni kwamba server ni kimsingi akisema kwamba mteja 236 00:10:57,120 --> 00:10:59,970 hawawezi kupata ukurasa wa nyumbani. 237 00:10:59,970 --> 00:11:03,260 >> Rob BOWDEN: Hivyo ndiyo. 238 00:11:03,260 --> 00:11:07,670 Naam, jibu kawaida tulikuwa wanatarajia ni kitu kama, files 239 00:11:07,670 --> 00:11:08,920 si chmodded ipasavyo. 240 00:11:08,920 --> 00:11:11,590 Kwamba pengine chini ya mazingira gani waona. 241 00:11:11,590 --> 00:11:18,920 Lakini kuna sababu ya kuwa mteja wanaweza kuwa katika kosa hapa. 242 00:11:18,920 --> 00:11:20,440 Kweli kuna mwingine code hali - 243 00:11:20,440 --> 00:11:21,210 401. 244 00:11:21,210 --> 00:11:22,820 Basi hizi ni sawa sana. 245 00:11:22,820 --> 00:11:24,590 >> 401 ni ruhusa. 246 00:11:24,590 --> 00:11:26,130 Na 403 ni haramu. 247 00:11:26,130 --> 00:11:31,890 Na hivyo ruhusa wewe peke kupata kama wewe ni hujaingia rasmi kwenye tovuti 248 00:11:31,890 --> 00:11:34,520 Lakini magogo katika huenda maana kwamba wewe ni mamlaka. 249 00:11:34,520 --> 00:11:37,930 Lakini kama wewe ni tayari watumiaji katika na bado hawana ruhusa, basi 250 00:11:37,930 --> 00:11:40,140 unaweza pia kupata haramu. 251 00:11:40,140 --> 00:11:45,320 Hivyo kama wewe ni watumiaji katika na hawana ruhusa, marufuku ni pia 252 00:11:45,320 --> 00:11:47,164 kitu unaweza kupata. 253 00:11:47,164 --> 00:11:48,900 >> DAVID J. Malan: Na utaratibu na ambayo matatizo haya ni kawaida 254 00:11:48,900 --> 00:11:53,100 kutatuliwa juu ya server ni kupitia kile amri? 255 00:11:53,100 --> 00:11:57,700 Chmod, kama ni kweli, ruhusa suala juu ya faili au directory. 256 00:11:57,700 --> 00:11:59,220 >> Rob BOWDEN: Kisha 404 halikupatikana. 257 00:11:59,220 --> 00:12:03,100 258 00:12:03,100 --> 00:12:03,470 Yeah. 259 00:12:03,470 --> 00:12:10,150 Hivyo tofauti na 302 ambapo ilikuwa si hasa ambapo wewe ni kuuliza lakini anajua 260 00:12:10,150 --> 00:12:12,710 unataka, hii, ni tu ana sijui nini unataka. 261 00:12:12,710 --> 00:12:15,648 Na wewe ni si kuomba kitu halali. 262 00:12:15,648 --> 00:12:18,580 263 00:12:18,580 --> 00:12:22,310 418 mimi nina buli na kisha 500 ndani server. 264 00:12:22,310 --> 00:12:24,870 Hivyo kwa nini huenda unaweza kupata kwamba? 265 00:12:24,870 --> 00:12:26,120 >> Hivyo segfault - 266 00:12:26,120 --> 00:12:28,760 267 00:12:28,760 --> 00:12:30,640 Mimi kwa kweli sijui grading kiwango kwa hili. 268 00:12:30,640 --> 00:12:34,850 Lakini kama PHP code yako alikuwa na kitu makosa ndani yake, katika nadharia, inaweza 269 00:12:34,850 --> 00:12:39,650 kweli segfault, katika kesi ambayo, hii 500 ndani server makosa, kitu 270 00:12:39,650 --> 00:12:41,400 ni sawa na server yako Configuration. 271 00:12:41,400 --> 00:12:44,320 Au kuna syntax makosa katika PHP code yako. 272 00:12:44,320 --> 00:12:46,095 Au kitu mbaya kinachoendelea. 273 00:12:46,095 --> 00:12:48,320 >> DAVID J. Malan Sisi tulikuwa kuona segfault kati ya majibu watu wachache ya. 274 00:12:48,320 --> 00:12:49,490 Na kitaalam, inaweza kutokea. 275 00:12:49,490 --> 00:12:53,820 Lakini kwamba itakuwa PHP, mpango imeandikwa na watu wengine, kwa kweli 276 00:12:53,820 --> 00:12:57,790 segfaulted, ambayo tu kama wale watu Star up na aliandika buggy code katika 277 00:12:57,790 --> 00:13:00,680 mkalimani yao ingekuwa PHP yenyewe segfault. 278 00:13:00,680 --> 00:13:06,460 Hivyo hata kama 500 ni kama segfault katika roho, ni karibu kila mara 279 00:13:06,460 --> 00:13:10,490 matokeo ya faili Configuration suala na mtandao wa kompyuta yako au, kama Rob alisema, 280 00:13:10,490 --> 00:13:13,200 makosa syntax, kama wewe hakulifunga quote. 281 00:13:13,200 --> 00:13:16,180 Au wewe waliopotea semicolon mahali fulani. 282 00:13:16,180 --> 00:13:23,677 >> Watazamaji: Hivyo kwa Shuttle pset, mimi kufikiri wakati mimi alifanya hivyo mara moja mimi clicked 283 00:13:23,677 --> 00:13:26,300 browser, lakini hakuna kilichotokea juu, kile walichokiita nyeupe ukurasa. 284 00:13:26,300 --> 00:13:28,056 Lakini ilikuwa ni kwa sababu ya maadili. 285 00:13:28,056 --> 00:13:29,440 Nadhani kwamba alikuwa JavaScript, sawa? 286 00:13:29,440 --> 00:13:29,770 >> Rob BOWDEN: Yeah. 287 00:13:29,770 --> 00:13:31,180 >> Watazamaji: Je, makosa ambayo bado kuja? 288 00:13:31,180 --> 00:13:34,290 >> Rob BOWDEN: Hivyo wewe bila waliopata kosa hili kwa sababu kila kitu 289 00:13:34,290 --> 00:13:36,930 kwa mtazamo wa mtandao wa kompyuta ya ilikuwa nzuri kabisa. 290 00:13:36,930 --> 00:13:39,090 Lakini ombi index.html. 291 00:13:39,090 --> 00:13:42,000 Uliomba shuttle.js na service.js. 292 00:13:42,000 --> 00:13:44,580 Na alikuwa na uwezo wa mafanikio kurudi ninyi mambo hayo yote - 293 00:13:44,580 --> 00:13:44,980 200. 294 00:13:44,980 --> 00:13:45,680 OK. 295 00:13:45,680 --> 00:13:49,330 Ni wakati tu ya browser yako alijaribu kutafsiri JavaScript kificho kwamba 296 00:13:49,330 --> 00:13:51,370 ni kama, ngoja, hii si JavaScript makosa halali. 297 00:13:51,370 --> 00:13:55,720 298 00:13:55,720 --> 00:13:58,210 Maswali yoyote mengine? 299 00:13:58,210 --> 00:14:00,750 Sawa. 300 00:14:00,750 --> 00:14:04,120 >> DAVID J. Malan: Hivyo ijayo up alikuwa namba 11. 301 00:14:04,120 --> 00:14:07,610 Na 11 ilikuwa scariest kwa mengi ya watu. 302 00:14:07,610 --> 00:14:14,620 303 00:14:14,620 --> 00:14:18,570 Kwa hiyo, jambo muhimu zaidi kukumbuka hapa ni kwamba hii ilikuwa kweli, kuhusu 304 00:14:18,570 --> 00:14:19,840 orodha mara mbili wanaohusishwa. 305 00:14:19,840 --> 00:14:23,160 Lakini hii haikuwa sawa na mwaka jana mara mbili wanaohusishwa orodha tatizo, 306 00:14:23,160 --> 00:14:27,170 ambao hawakuwa kukupa caveat kwamba orodha inaweza, kwa kweli, kuwa zisizochambuliwa. 307 00:14:27,170 --> 00:14:29,640 >> Hivyo ukweli kwamba orodha mara zisizochambuliwa na ukweli kwamba neno kwamba alikuwa 308 00:14:29,640 --> 00:14:32,930 mkazo kulikuwa na maana ya kufikisha kwamba hii ni kweli kurahisisha 309 00:14:32,930 --> 00:14:35,430 ya nini vinginevyo ingekuwa tatizo changamoto zaidi 310 00:14:35,430 --> 00:14:36,600 na tena moja. 311 00:14:36,600 --> 00:14:40,760 Hivyo ni makosa ya kawaida hapa ni kuwa na kuweka ufumbuzi wa mwaka jana juu ya mmoja wenu 312 00:14:40,760 --> 00:14:45,580 pager na kisha tu upofu nakala ya kwamba chini kama jibu, ambayo ni haki 313 00:14:45,580 --> 00:14:48,520 kujibu swali mbalimbali sawa katika roho. 314 00:14:48,520 --> 00:14:51,340 Lakini mambo ya siri hapa yalikuwa kama ifuatavyo. 315 00:14:51,340 --> 00:14:55,200 >> Hivyo moja, tuna node alitangaza na inavyoelezwa katika njia ya kawaida hapa. 316 00:14:55,200 --> 00:14:59,230 Kisha sisi defined orodha ya kuwa ya kimataifa pointer kuanzishwa kwa null. 317 00:14:59,230 --> 00:15:02,150 Kisha inaonekana, kuna kazi mbili tuna prototypes kwa hapa, kuingiza 318 00:15:02,150 --> 00:15:03,240 na kuondoa. 319 00:15:03,240 --> 00:15:06,600 Na kisha tuna baadhi ya kanuni sampuli hapa ya kufanya rundo la insertions. 320 00:15:06,600 --> 00:15:09,930 Na kisha tunakuomba kukamilisha utekelezaji wa kuingiza chini katika vile 321 00:15:09,930 --> 00:15:14,380 njia ambayo ni kuwekeza n katika orodha katika wakati mara kwa mara, pia bayana, 322 00:15:14,380 --> 00:15:15,730 hata kama tayari sasa. 323 00:15:15,730 --> 00:15:20,600 >> Hivyo uzuri wa kuwa na uwezo wa kuingiza katika wakati mara kwa mara ni kwamba ina maana 324 00:15:20,600 --> 00:15:23,060 kwamba una kuingiza nodi mpya wapi? 325 00:15:23,060 --> 00:15:23,690 Ndani ya mbele. 326 00:15:23,690 --> 00:15:27,760 Hivyo hupunguza, nashiriki, angalau moja ya matukio ya kwamba kutumika kuhitaji 327 00:15:27,760 --> 00:15:30,520 mistari hata zaidi ya kificho, kama ilivyokuwa mwaka jana na hata katika darasa wakati sisi 328 00:15:30,520 --> 00:15:34,040 aliyesema kwa njia ya aina hii ya kitu na binadamu na kwa baadhi 329 00:15:34,040 --> 00:15:35,250 matusi Pseudo code. 330 00:15:35,250 --> 00:15:39,190 Hivyo katika ufumbuzi hapa, hebu ruka juu ya kwa kuwa tu kuwa na Visual juu ya 331 00:15:39,190 --> 00:15:40,480 screen. 332 00:15:40,480 --> 00:15:42,230 >> Taarifa kwamba sisi ni kufanya yafuatayo. 333 00:15:42,230 --> 00:15:45,140 Na pia taarifa kurahisisha nyingine ni kwamba hata kama ni 334 00:15:45,140 --> 00:15:48,280 tayari sasa, hivyo hii ina maana hata kama idadi ni tayari pale, unaweza 335 00:15:48,280 --> 00:15:50,280 tu upofu kuingiza mwingine nakala yake. 336 00:15:50,280 --> 00:15:52,560 Na kwamba, pia, ilikuwa na maana kuwa kurahisisha, hivyo kwamba unaweza 337 00:15:52,560 --> 00:15:54,940 kuzingatia, kwa kweli, baadhi ya zaidi kielimu ya kuvutia sehemu na 338 00:15:54,940 --> 00:15:58,090 baadhi sio tu makosa ya ziada kuangalia kutokana na muda mdogo. 339 00:15:58,090 --> 00:16:02,880 >> Hivyo katika ufumbuzi huu sampuli, sisi kutenga pointer juu ya mkono wa kushoto 340 00:16:02,880 --> 00:16:04,510 upande hapa kwa nodi. 341 00:16:04,510 --> 00:16:07,190 Sasa, kutambua kwamba pointer, kama Rob alisema, ni bits 32 tu. 342 00:16:07,190 --> 00:16:09,060 Na haina kweli yana anwani mpaka 343 00:16:09,060 --> 00:16:09,970 hawawajui anwani. 344 00:16:09,970 --> 00:16:13,220 Na sisi kufanya hivyo juu ya mkono wa kulia upande kupitia malloc. 345 00:16:13,220 --> 00:16:16,550 Kama raia mwema, sisi kuangalia kwamba malloc ni si, kwa kweli, null, ili 346 00:16:16,550 --> 00:16:18,690 sisi si ajali kujenga segfault hapa. 347 00:16:18,690 --> 00:16:22,840 Na wakati wowote kutumia malloc katika maisha, lazima kuangalia kwa null, ili 348 00:16:22,840 --> 00:16:24,090 una mdudu hila. 349 00:16:24,090 --> 00:16:28,460 >> Kisha sisi initialize kwamba null na kumshirikisha n na uliopita na ujao. 350 00:16:28,460 --> 00:16:32,450 Na katika kesi hii hapa, mimi kuanzishwa uliopita kwa null, kwa sababu hii mpya 351 00:16:32,450 --> 00:16:34,780 node ni kwenda kuwa mpya mwanzo wa orodha yangu. 352 00:16:34,780 --> 00:16:37,050 Kwa hiyo, kuna kwenda kuwa kitu mbele yake. 353 00:16:37,050 --> 00:16:42,010 Na mimi nataka kimsingi append orodha zilizopo node mpya kwa 354 00:16:42,010 --> 00:16:44,700 amekaa karibu sawa na orodha yenyewe. 355 00:16:44,700 --> 00:16:47,120 Lakini mimi si kufanyika bado tu. 356 00:16:47,120 --> 00:16:51,780 Hivyo kama orodha yenyewe tayari kuwepo, na kulikuwa na node angalau moja 357 00:16:51,780 --> 00:16:57,070 tayari ipo, kama hii ni orodha hapa na mimi kuingiza nodi mpya hapa, mimi 358 00:16:57,070 --> 00:17:01,840 haja ya kuhakikisha kwamba node wangu wa zamani anasema nyuma ya node yangu mpya, 359 00:17:01,840 --> 00:17:04,260 kwa sababu hii ni mara ya pili, orodha mara mbili wanaohusishwa. 360 00:17:04,260 --> 00:17:05,460 >> Hivyo sisi kufanya sanity kuangalia. 361 00:17:05,460 --> 00:17:10,109 Kama orodha ni si null, kama tayari kuna nodes moja au zaidi huko, basi 362 00:17:10,109 --> 00:17:12,470 kuongeza kwamba nyuma kumbukumbu hivyo kusema. 363 00:17:12,470 --> 00:17:15,420 Na kisha jambo la mwisho sana tunahitaji kufanya ni kweli update kimataifa 364 00:17:15,420 --> 00:17:20,329 variable orodha yenyewe kwa uhakika kwa kuwa node mpya. 365 00:17:20,329 --> 00:17:21,790 Yeah. 366 00:17:21,790 --> 00:17:26,579 >> Watazamaji: Katika pointer arrow [Inaudible] ni sawa na null, je, hiyo 367 00:17:26,579 --> 00:17:30,420 kukabiliana na orodha kwa sababu orodha ni null? 368 00:17:30,420 --> 00:17:30,596 >> DAVID J. Malan: Nope. 369 00:17:30,596 --> 00:17:34,500 Hiyo ni tu mimi kuwa proactively makini, kwa kuwa kama hii ni yangu 370 00:17:34,500 --> 00:17:38,730 orodha ya awali pamoja na labda baadhi nodes zaidi juu ya hapa na mimi nina kuingiza yangu 371 00:17:38,730 --> 00:17:42,380 nodi mpya zaidi ya hapa, kuna kwenda kuwa kitu zaidi ya hapa. 372 00:17:42,380 --> 00:17:44,720 Na mimi nataka kukamata wazo kwamba kwa kuweka uliopita kwa 373 00:17:44,720 --> 00:17:47,740 null juu ya node mpya. 374 00:17:47,740 --> 00:17:51,410 Na labda, kama kanuni yangu ni sahihi na hakuna njia nyingine ya kuingiza 375 00:17:51,410 --> 00:17:54,970 nodes kingine chochote zaidi ya kazi hii, labda, hata kama orodha tayari ina 376 00:17:54,970 --> 00:18:00,090 nodes moja au zaidi ndani yake, labda orodha, nodi kwanza, ingekuwa 377 00:18:00,090 --> 00:18:02,750 pointer ya awali ya null yenyewe. 378 00:18:02,750 --> 00:18:03,550 >> Watazamaji: Na kama ifuatavyo-up. 379 00:18:03,550 --> 00:18:08,139 sababu ya kuweka pointer usawa ijayo orodha ni wewe ni kufanya pointer 380 00:18:08,139 --> 00:18:13,579 kabla ya orodha katika kwamba ni akizungumzia ijayo, mimi nadhani - 381 00:18:13,579 --> 00:18:14,980 Mimi Don 't - 382 00:18:14,980 --> 00:18:15,450 tu orodha? 383 00:18:15,450 --> 00:18:16,400 >> DAVID J. Malan: Hasa. 384 00:18:16,400 --> 00:18:19,400 Na hivyo hebu kweli kufikiria kesi mbili hapa kweli, hata kama 385 00:18:19,400 --> 00:18:22,070 ili tutaweza kufikiria yao ni si sawa kabisa kama code. 386 00:18:22,070 --> 00:18:26,250 Lakini kiwango cha juu, kama hii inawakilisha kuorodhesha na hii ni 32-bit 387 00:18:26,250 --> 00:18:29,560 pointer, rahisi mazingira ni kwamba hii ni null by default. 388 00:18:29,560 --> 00:18:33,010 Na nadhani wanataka kuingiza Idadi ya 50 ilikuwa ni idadi ya kwanza. 389 00:18:33,010 --> 00:18:37,640 Hivyo mimi nina kwenda mbele na kutenga node, ambayo ni kwenda vyenye 390 00:18:37,640 --> 00:18:38,770 mashamba ya tatu - 391 00:18:38,770 --> 00:18:42,070 n, awali, na wa pili. 392 00:18:42,070 --> 00:18:44,580 >> Mimi naenda kuweka idadi 50 hapa, kwa sababu hii itakuwa n. 393 00:18:44,580 --> 00:18:46,130 Hii itakuwa ijayo. 394 00:18:46,130 --> 00:18:48,530 Na hii itakuwa uliopita. 395 00:18:48,530 --> 00:18:50,910 Na hivyo nini mimi katika kesi hii? 396 00:18:50,910 --> 00:18:53,900 Naam, mimi tumefanya tu line 1 hapa. 397 00:18:53,900 --> 00:18:55,400 Pointer n anapata n. 398 00:18:55,400 --> 00:18:57,740 Mimi kisha akasema, uliopita lazima kupata null. 399 00:18:57,740 --> 00:18:59,470 Hivyo hii ni kwenda kuwa null. 400 00:18:59,470 --> 00:19:01,365 Kisha mimi nina kwenda kusema ijayo ni kwenda kupata orodha. 401 00:19:01,365 --> 00:19:05,150 >> Na hii kazi nje tu vizuri. 402 00:19:05,150 --> 00:19:06,500 Hii ni null. 403 00:19:06,500 --> 00:19:10,620 Na hivyo mimi kusema, mpya wa nodi unafanya ijayo shamba lazima kupata chochote hii ni. 404 00:19:10,620 --> 00:19:12,570 Hivyo kwamba unaweka mwingine null huko. 405 00:19:12,570 --> 00:19:14,510 Na kisha jambo la mwisho Mimi ni kuangalia hapa. 406 00:19:14,510 --> 00:19:17,870 Kama orodha ni si sawa na null, lakini ni sawa na null, hivyo sisi ruka kwamba 407 00:19:17,870 --> 00:19:18,470 kabisa. 408 00:19:18,470 --> 00:19:23,520 Na hivyo wote mimi kufanya ijayo ni orodha anapata pointer, ambayo pictorially matokeo katika 409 00:19:23,520 --> 00:19:25,570 picha kama hiyo. 410 00:19:25,570 --> 00:19:26,620 Hivyo kwamba ni tukio moja. 411 00:19:26,620 --> 00:19:30,490 >> Na moja kwamba walikuwa kuuliza kuhusu hasa ni hali kama hii, 412 00:19:30,490 --> 00:19:33,190 ambapo tayari tuna orodha moja ya node. 413 00:19:33,190 --> 00:19:36,240 Na kama mimi kwenda nyuma juu katika asili tatizo kauli, karibu tutaweza 414 00:19:36,240 --> 00:19:39,320 kuingiza kusema ni 34, kwa ajili ya ajili ya majadiliano. 415 00:19:39,320 --> 00:19:46,210 Hivyo nina kwenda tu conveniently kuteka kwamba zaidi ya hapa. 416 00:19:46,210 --> 00:19:47,540 Nimekuwa tu malloced. 417 00:19:47,540 --> 00:19:49,310 Hebu kudhani mimi nina kuangalia kwa null. 418 00:19:49,310 --> 00:19:51,870 >> Sasa, mimi nina kwenda initialize n kuwa 34. 419 00:19:51,870 --> 00:19:53,040 Na hii itakuwa n. 420 00:19:53,040 --> 00:19:54,670 Hii itakuwa ijayo. 421 00:19:54,670 --> 00:19:57,100 Na hii itakuwa uliopita. 422 00:19:57,100 --> 00:19:59,370 Hebu kuhakikisha mimi si kupata hii nyuma. 423 00:19:59,370 --> 00:20:01,110 Uliopita anakuja kwanza katika ufafanuzi. 424 00:20:01,110 --> 00:20:03,070 Hebu kurekebisha hii. 425 00:20:03,070 --> 00:20:04,410 Hii ni uliopita. 426 00:20:04,410 --> 00:20:05,780 Hii ni ijayo. 427 00:20:05,780 --> 00:20:08,620 Hata kama hawa ni sawa, hebu kuitunza thabiti. 428 00:20:08,620 --> 00:20:09,450 >> Uliopita. 429 00:20:09,450 --> 00:20:11,030 Hii ni ijayo. 430 00:20:11,030 --> 00:20:16,310 Hivyo nimekuwa tu malloced note yangu, checked kwa null, kwa ajili ya 34 ndani ya nodi. 431 00:20:16,310 --> 00:20:17,570 Uliopita anapata null. 432 00:20:17,570 --> 00:20:19,480 Hivyo kwamba anatoa mimi kwamba. 433 00:20:19,480 --> 00:20:21,010 Ijayo anapata orodha. 434 00:20:21,010 --> 00:20:22,370 Hivyo orodha ni hii. 435 00:20:22,370 --> 00:20:26,520 Hivyo hii ni sawa na sasa kama kuchora hii arrow, ili wao uhakika na moja 436 00:20:26,520 --> 00:20:27,940 katika huo. 437 00:20:27,940 --> 00:20:30,400 Na basi mimi nina kuangalia kama orodha si sawa na null. 438 00:20:30,400 --> 00:20:31,740 Na si wakati huu. 439 00:20:31,740 --> 00:20:35,580 Basi mimi nina kwenda kufanya orodha uliopita anapata pointer. 440 00:20:35,580 --> 00:20:39,700 >> Hivyo orodha uliopita anapata PTR. 441 00:20:39,700 --> 00:20:44,300 Hivyo hii ina athari ya kuweka arrow graphical hapa. 442 00:20:44,300 --> 00:20:46,930 Na kwamba kupata kidogo WAVY, mistari. 443 00:20:46,930 --> 00:20:50,780 Na kisha, mwisho, mimi update orodha ya uhakika na pointer. 444 00:20:50,780 --> 00:20:55,560 Hivyo sasa hii anazungumzia guy hii. 445 00:20:55,560 --> 00:20:57,170 Na sasa, hebu kufanya haraka sanity kuangalia. 446 00:20:57,170 --> 00:20:59,470 >> Hapa ni orodha, ambayo ni variable kimataifa. 447 00:20:59,470 --> 00:21:02,850 node kwanza ni kweli, 34, kwa sababu Nafuata mshale. 448 00:21:02,850 --> 00:21:05,210 Na kwamba ni sahihi kwa sababu nataka kuingiza katika mwanzo wa orodha 449 00:21:05,210 --> 00:21:06,070 wote nodes mpya. 450 00:21:06,070 --> 00:21:08,860 Shamba yake ya pili inaongoza mimi guy hii. 451 00:21:08,860 --> 00:21:10,710 Kama mimi kuendelea, mimi hit ya pili ni null. 452 00:21:10,710 --> 00:21:11,760 Hivyo hakuna orodha zaidi. 453 00:21:11,760 --> 00:21:14,460 Kama mimi hit uliopita, mimi kupata nyuma ambapo mimi kutarajia. 454 00:21:14,460 --> 00:21:16,435 >> Hivyo bado kuna wachache kuyatumia, wazi, kwa kuendesha. 455 00:21:16,435 --> 00:21:19,870 Lakini ukweli ni kwamba walikuwa aliiambia ya kufanya hii kwa wakati mara kwa mara ina maana tu 456 00:21:19,870 --> 00:21:22,910 kuwa na idadi finite ya mambo wewe ni kuruhusiwa kufanya. 457 00:21:22,910 --> 00:21:24,290 Na ni nini idadi hiyo? 458 00:21:24,290 --> 00:21:25,185 Inaweza kuwa hatua moja. 459 00:21:25,185 --> 00:21:25,700 Inaweza kuwa mbili. 460 00:21:25,700 --> 00:21:26,820 Inaweza kuwa hatua 1,000. 461 00:21:26,820 --> 00:21:30,500 Lakini ni finite, ambayo ina maana huwezi kuwa aina yoyote ya looping kinachoendelea 462 00:21:30,500 --> 00:21:32,010 hapa, hakuna kujirudia, hakuna matanzi. 463 00:21:32,010 --> 00:21:37,390 Ni tu got kuwa mistari ngumu-coded ya maadili ya kama sisi na katika sampuli hii. 464 00:21:37,390 --> 00:21:42,330 >> Hivyo tatizo ijayo 12 aliuliza yetu kukamilisha utekelezaji wa kuondoa 465 00:21:42,330 --> 00:21:46,740 chini katika namna ambayo ni kuondosha n kutoka katika orodha wakati linear. 466 00:21:46,740 --> 00:21:48,740 Hivyo kuwa zaidi kidogo wiggle chumba sasa. 467 00:21:48,740 --> 00:21:52,380 Unaweza kudhani kuwa n, kama sasa katika orodha, atakuwepo 468 00:21:52,380 --> 00:21:53,340 hakuna zaidi ya mara moja. 469 00:21:53,340 --> 00:21:56,770 Na kwamba pia ni maana ya kuwa jaribio makao kurahisisha dhana, hivyo 470 00:21:56,770 --> 00:21:59,780 kwamba kama wewe kupata idadi 50 mahali fulani katika orodha, huna pia 471 00:21:59,780 --> 00:22:02,890 kuwa na wasiwasi kuhusu kuendelea iterate, kuangalia kwa kila iwezekanavyo 472 00:22:02,890 --> 00:22:06,990 nakala ya 50, ambayo ingekuwa tu kukabidhi katika baadhi ya minutia katika muda mdogo. 473 00:22:06,990 --> 00:22:10,460 >> Hivyo, pamoja na kuondoa, hii mara moja dhahiri changamoto zaidi na zaidi 474 00:22:10,460 --> 00:22:11,640 code kuandika. 475 00:22:11,640 --> 00:22:14,990 Lakini katika mtazamo wa kwanza, kusema ukweli, inaweza kuangalia balaa na kama kitu 476 00:22:14,990 --> 00:22:17,060 hakuna njia unaweza kuwa na kuja na juu ya jaribio. 477 00:22:17,060 --> 00:22:22,450 Lakini kama sisi kuzingatia hatua ya mtu binafsi, hopefully, itakuwa ghafla 478 00:22:22,450 --> 00:22:26,060 mgomo kwamba kila moja ya haya ya mtu binafsi hatua hufanya akili wazi 479 00:22:26,060 --> 00:22:27,080 katika retrospect. 480 00:22:27,080 --> 00:22:28,200 Hivyo basi tuangalie. 481 00:22:28,200 --> 00:22:32,570 >> Hivyo kwanza, sisi initialize pointer kuwa orodha yenyewe. 482 00:22:32,570 --> 00:22:36,040 Kwa maana Mimi nataka wakati linear, kwamba njia Mimi naenda kuwa na baadhi ya kitanzi. 483 00:22:36,040 --> 00:22:39,730 Na njia ya kawaida iterate juu ya nodes katika orodha muundo au aina yoyote 484 00:22:39,730 --> 00:22:43,860 muundo wa iteratively ni kuchukua pointer mbele ya data 485 00:22:43,860 --> 00:22:46,990 muundo na kisha kuanza tu kuongezea yake na kutembea katika njia yako 486 00:22:46,990 --> 00:22:48,650 kwa njia ya muundo data. 487 00:22:48,650 --> 00:22:50,040 Hivyo nina kwenda kwa kufanya hasa kwamba. 488 00:22:50,040 --> 00:22:54,260 >> Wakati pointer, variable yangu ya muda, si sawa na null, hebu 489 00:22:54,260 --> 00:22:55,660 kwenda mbele na kuangalia. 490 00:22:55,660 --> 00:22:56,910 Je, mimi kupata bahati? 491 00:22:56,910 --> 00:23:01,740 Ni shamba n katika node mimi nina sasa kuangalia sawa na 492 00:23:01,740 --> 00:23:03,380 idadi mimi nina kuangalia kwa? 493 00:23:03,380 --> 00:23:05,410 Na kama ni hivyo, hebu kufanya kitu fulani. 494 00:23:05,410 --> 00:23:10,020 Sasa, taarifa hii kama hali mazingira nzima 495 00:23:10,020 --> 00:23:11,520 mstari wa kanuni zifuatazo. 496 00:23:11,520 --> 00:23:14,610 Hili ni jambo tu mimi huduma ya juu - kutafuta namba katika swali. 497 00:23:14,610 --> 00:23:18,010 Hivyo hakuna mwingine, ambayo simplifies mambo conceptually kidogo. 498 00:23:18,010 --> 00:23:22,040 >> Lakini sasa, mimi barabara, na unaweza kuwa tu barabara hii baada ya kufikiria 499 00:23:22,040 --> 00:23:24,720 ni kupitia kidogo, kuna kweli kesi mbili hapa. 500 00:23:24,720 --> 00:23:28,060 Moja ni ambapo node ni katika mwanzo wa orodha, ambayo ni 501 00:23:28,060 --> 00:23:31,040 kidogo annoying, kwa sababu hiyo kesi maalum, kwa sababu una kukabiliana 502 00:23:31,040 --> 00:23:33,340 na jambo hili, ambayo ni makosa tu. 503 00:23:33,340 --> 00:23:35,720 Kila mahali pengine katika orodha, ni kitu kimoja. 504 00:23:35,720 --> 00:23:38,050 Kuna node uliopita na ujao node, node uliopita, nodi ijayo. 505 00:23:38,050 --> 00:23:40,940 Lakini guy hii ni maalum kidogo kama yeye ni mwanzoni. 506 00:23:40,940 --> 00:23:48,710 >> Hivyo kama pointer sawa na orodha yenyewe, hivyo kama nina mwanzoni mwa 507 00:23:48,710 --> 00:23:53,960 orodha na nimeona n, mimi haja kufanya mambo kadhaa ya. 508 00:23:53,960 --> 00:23:59,230 Moja, mimi haja ya kubadili orodha ya uhakika na shamba ijayo, 50. 509 00:23:59,230 --> 00:24:01,270 Hivyo tuseme kwamba mimi nina kujaribu kuondoa 34. 510 00:24:01,270 --> 00:24:03,560 Hivyo guy huu got kwenda mbali katika muda tu. 511 00:24:03,560 --> 00:24:07,210 >> Hivyo nina kwenda kusema, orodha anapata pointer ijayo. 512 00:24:07,210 --> 00:24:08,570 Naam, hii ni pointer. 513 00:24:08,570 --> 00:24:10,360 Pili ni akizungumzia zaidi ya hapa. 514 00:24:10,360 --> 00:24:17,470 Hivyo hii ni kubadilisha arrow haki hii sasa kwa uhakika na guy hii hapa. 515 00:24:17,470 --> 00:24:19,580 Sasa, kumbuka, tuna variable muda. 516 00:24:19,580 --> 00:24:23,520 Hivyo tuna si yatima nodes yoyote, kwa sababu mimi pia na guy hii katika wangu 517 00:24:23,520 --> 00:24:25,010 utekelezaji wa kuondoa. 518 00:24:25,010 --> 00:24:29,600 Basi sasa, kama orodha yenyewe ni si null, Mimi haja ya kurekebisha kitu kidogo. 519 00:24:29,600 --> 00:24:32,690 >> Nahitaji sasa kuhakikisha kwamba arrow hii, ambayo ni awali akizungumzia 520 00:24:32,690 --> 00:24:36,830 50-34, hii ina got kwenda mbali, kwa sababu kama mimi nina kujaribu kujikwamua 521 00:24:36,830 --> 00:24:41,910 34, 50 alikuwa bora kudumisha yoyote aina ya nyuma kumbukumbu yake kama 522 00:24:41,910 --> 00:24:42,820 arrow unahitajika. 523 00:24:42,820 --> 00:24:44,820 Hivyo mimi tu alifanya mstari huu. 524 00:24:44,820 --> 00:24:46,520 Hivyo basi mimi nina kufanyika. 525 00:24:46,520 --> 00:24:48,040 Kesi hiyo ni kweli ni rahisi sana. 526 00:24:48,040 --> 00:24:51,010 Chopping off mkuu wa orodha ni rahisi. 527 00:24:51,010 --> 00:24:52,980 >> Kwa bahati mbaya, kuna hii annoying mwingine block. 528 00:24:52,980 --> 00:24:56,170 Basi sasa, nina kuzingatia kesi ambapo kuna kitu katikati. 529 00:24:56,170 --> 00:24:59,880 Lakini si pia kutisha, ila kwa syntax kama hii. 530 00:24:59,880 --> 00:25:03,080 Basi, ikiwa mimi nina mwanzoni mwa orodha, mimi nina mahali fulani katikati. 531 00:25:03,080 --> 00:25:08,160 Na mstari huu hapa ni kusema, mwanzo katika kila node uko katika. 532 00:25:08,160 --> 00:25:11,210 533 00:25:11,210 --> 00:25:18,550 Kwenda shamba node uliopita ijayo na uhakika kwamba katika pointer. 534 00:25:18,550 --> 00:25:20,390 >> Hebu kufanya hivyo pictorially. 535 00:25:20,390 --> 00:25:21,640 Hiyo ilikuwa kupata ngumu. 536 00:25:21,640 --> 00:25:30,480 537 00:25:30,480 --> 00:25:37,990 Basi, ikiwa mimi na mashamba ya awali hapa - hebu kufanya hili - mashamba ya karibu hapa. 538 00:25:37,990 --> 00:25:41,200 Mimi nina kwenda kurahisisha kuyatumia yangu badala kuliko kuteka rundo zima la 539 00:25:41,200 --> 00:25:45,710 mambo na kurudi crisscrossing kila mmoja. 540 00:25:45,710 --> 00:25:50,870 Na sasa, hebu tu kusema hii ni 1, 2, 3 kwa ajili ya majadiliano, hata 541 00:25:50,870 --> 00:25:53,410 ingawa kuwa haina kujipanga kwa tatizo katika swali. 542 00:25:53,410 --> 00:25:55,900 >> Hivyo hapa ni orodha yangu wanaohusishwa. 543 00:25:55,900 --> 00:25:59,300 Mimi ni kujaribu kuondoa mbili katika hii hasa toleo la hadithi. 544 00:25:59,300 --> 00:26:01,960 Hivyo nimekuwa updated pointer kwa akizungumzia kwa guy hii. 545 00:26:01,960 --> 00:26:03,315 Hivyo hii ni PTR. 546 00:26:03,315 --> 00:26:04,530 Yeye akizungumzia hapa. 547 00:26:04,530 --> 00:26:07,170 Hii ni orodha, ambayo ipo kimataifa kama kabla ya. 548 00:26:07,170 --> 00:26:09,200 Na yeye akizungumzia hapa bila kujali. 549 00:26:09,200 --> 00:26:10,800 Na sasa, mimi nina kujaribu kuondoa mbili. 550 00:26:10,800 --> 00:26:13,850 >> Hivyo kama pointer ni akizungumzia hapa, mimi nina kwenda kufuata, inaonekana, 551 00:26:13,850 --> 00:26:17,110 pointer ya awali, ambayo unaweka yangu saa 1. 552 00:26:17,110 --> 00:26:22,290 Mimi kisha kwenda kusema kwamba ijayo shamba, ambayo huleta mimi juu ya hii 553 00:26:22,290 --> 00:26:25,410 sanduku hapa, ni kwenda pointer sawa ijayo. 554 00:26:25,410 --> 00:26:28,400 Hivyo kama pointer hii, ni ijayo. 555 00:26:28,400 --> 00:26:31,840 Hiyo ina maana kwamba mahitaji ya mshale kwa uhakika na guy hii. 556 00:26:31,840 --> 00:26:35,140 >> Kwa hiyo kile kwamba mstari wa kanuni ana haki kufanyika ni kidogo juu ya hili. 557 00:26:35,140 --> 00:26:37,500 Na sasa, hii ni kuangalia kama hatua katika mwelekeo sahihi. 558 00:26:37,500 --> 00:26:41,390 Sisi kimsingi wanataka snip 2 nje katikati ya 1 na 3. 559 00:26:41,390 --> 00:26:44,400 Hivyo ni mantiki kwamba tunataka njia pointer hii kuzunguka. 560 00:26:44,400 --> 00:26:50,400 Hivyo line hii ya pili ni kuangalia kama pointer pili si null, kuna 561 00:26:50,400 --> 00:26:54,200 kweli mtu na haki ya 2, hiyo ina maana sisi pia kufanya 562 00:26:54,200 --> 00:26:55,850 kidogo snip hapa. 563 00:26:55,850 --> 00:27:00,590 >> Basi, mimi sasa haja ya kufuata pointer hii na update pointer uliopita juu ya 564 00:27:00,590 --> 00:27:05,410 guy ya kufanya kidogo ya workaround hapa uhakika hapa. 565 00:27:05,410 --> 00:27:07,100 Na sasa, kuibua hii ni nzuri. 566 00:27:07,100 --> 00:27:11,930 Ni kidogo messy katika kwamba kuna hakuna mtu akionyesha 2 tena. 567 00:27:11,930 --> 00:27:13,600 2 ni akizungumzia upande wa kushoto. 568 00:27:13,600 --> 00:27:14,980 Na 2 ni akizungumzia haki. 569 00:27:14,980 --> 00:27:17,480 Lakini anaweza kufanya chochote anachotaka, kwa sababu yeye ni kuhusu kupata huru. 570 00:27:17,480 --> 00:27:19,480 Na haina jambo gani maadili hayo ni tena. 571 00:27:19,480 --> 00:27:23,040 >> Nini muhimu ni kwamba iliyobaki guys ni routing juu 572 00:27:23,040 --> 00:27:24,280 na chini yake sasa. 573 00:27:24,280 --> 00:27:25,810 Na kwa kweli, kwamba ni nini sisi kufanya ijayo. 574 00:27:25,810 --> 00:27:29,360 Sisi bure pointer, ambayo ina maana sisi tunasema mfumo wa uendeshaji, mnakaribishwa 575 00:27:29,360 --> 00:27:30,906 kurudisha hii. 576 00:27:30,906 --> 00:27:34,900 Na kisha mwisho, sisi kurudi. 577 00:27:34,900 --> 00:27:37,220 Mwingine inamuunga, kama sisi si kurudi bado, 578 00:27:37,220 --> 00:27:38,290 sisi nimepata kuendelea kutafuta. 579 00:27:38,290 --> 00:27:41,485 Hivyo pointer sawa na pointer ijayo tu maana hoja guy hii hapa. 580 00:27:41,485 --> 00:27:42,600 Hoja guy hii hapa. 581 00:27:42,600 --> 00:27:45,400 Hoja guy hii hapa kama, kwa kweli, hatukuwa kupata idadi 582 00:27:45,400 --> 00:27:46,960 sisi ni kuangalia kwa bado. 583 00:27:46,960 --> 00:27:49,630 >> Hivyo kusema ukweli, inaonekana kabisa balaa, nadhani, kwa mara ya kwanza 584 00:27:49,630 --> 00:27:52,180 mtazamo, hasa kama wewe Jihadi na hii wakati wa jaribio kisha kuona 585 00:27:52,180 --> 00:27:52,850 kitu kama hiki. 586 00:27:52,850 --> 00:27:55,050 Na wewe pat mwenyewe juu ya nyuma. 587 00:27:55,050 --> 00:27:57,080 Naam, hakuna njia mimi naweza kuwa na kuja na kwamba jaribio. 588 00:27:57,080 --> 00:28:00,470 Lakini napenda wanasema, unaweza kama wewe kuvunja chini katika hizi mtu binafsi 589 00:28:00,470 --> 00:28:04,400 kesi na kutembea tu kwa njia hiyo makini, angalau, admittedly, chini ya 590 00:28:04,400 --> 00:28:06,300 mazingira na ukata mkali. 591 00:28:06,300 --> 00:28:09,470 >> Shukrani nyingi, picha alifanya kila kitu furaha. 592 00:28:09,470 --> 00:28:11,050 Unaweza kuteka hii katika idadi yoyote ya njia. 593 00:28:11,050 --> 00:28:12,760 Huna kufanya crisscrossing kitu hapa. 594 00:28:12,760 --> 00:28:14,520 Unaweza kufanya hivyo kwa moja mistari kama hii. 595 00:28:14,520 --> 00:28:18,790 Lakini kiini cha tatizo hili, katika ujumla, mara kutambua kwamba 596 00:28:18,790 --> 00:28:22,060 picha katika mwisho inapaswa kuangalia kidogo kitu kama hiki, kwa sababu 597 00:28:22,060 --> 00:28:25,030 wakati mara kwa mara alisema kuwa kuweka Jamming na Jamming na Jamming 598 00:28:25,030 --> 00:28:29,900 nodes mpya mwanzoni ya orodha. 599 00:28:29,900 --> 00:28:31,960 Maswali yoyote? 600 00:28:31,960 --> 00:28:34,565 Pengine changamoto kubwa ya hakika maswali coding. 601 00:28:34,565 --> 00:28:37,690 >> Watazamaji: Kwa hiyo ni orodha sawa na kichwa katika mifano uliopita. 602 00:28:37,690 --> 00:28:39,640 >> DAVID J. Malan: Hasa, hasa. 603 00:28:39,640 --> 00:28:43,130 Tu jina mbalimbali kwa variable kimataifa. 604 00:28:43,130 --> 00:28:44,380 Duniani kote nini? 605 00:28:44,380 --> 00:28:48,880 606 00:28:48,880 --> 00:28:49,730 >> Rob BOWDEN: OK. 607 00:28:49,730 --> 00:28:52,020 Hivyo hii ni moja ambapo alikuwa na kuandika aya. 608 00:28:52,020 --> 00:28:56,060 Baadhi ya watu aliandika insha kwa swali hili. 609 00:28:56,060 --> 00:29:00,230 Lakini wewe tu haja ya kutumia haya masharti sita kuelezea kile kinachotokea wakati 610 00:29:00,230 --> 00:29:02,440 wewe kujaribu kuwasiliana facebook.com. 611 00:29:02,440 --> 00:29:07,930 Hivyo mimi itabidi kuzungumza kupitia mchakato kutumia maneno haya yote. 612 00:29:07,930 --> 00:29:11,290 Hivyo katika browser yetu, sisi aina facebook.com na kugonga kuingia. 613 00:29:11,290 --> 00:29:17,280 Kwa hiyo kivinjari yetu kwenda kujenga HTTP kuomba kwamba ni kwenda kutuma 614 00:29:17,280 --> 00:29:22,220 kupitia baadhi ya mchakato wa Facebook kwa Facebook kujibu kwetu pamoja na 615 00:29:22,220 --> 00:29:24,450 HTML ya ukurasa wake. 616 00:29:24,450 --> 00:29:28,800 >> Kwa hiyo kile ni utaratibu ambayo ombi HTTP 617 00:29:28,800 --> 00:29:30,730 kweli anapata Facebook? 618 00:29:30,730 --> 00:29:32,790 Hivyo kwanza, sisi haja ya kutafsiri Facebook.com. 619 00:29:32,790 --> 00:29:38,780 Hivyo tu kupewa jina la Facebook.com, ambapo kwa kweli anafanya ombi HTTP 620 00:29:38,780 --> 00:29:39,940 haja ya kwenda? 621 00:29:39,940 --> 00:29:44,120 Kwa hiyo, tunahitaji kutafsiri Facebook.com kwa anwani ya IP, ambayo kipekee 622 00:29:44,120 --> 00:29:47,620 kubainisha kile mashine sisi kweli unataka kutuma ombi hili kwa. 623 00:29:47,620 --> 00:29:49,310 Mbali yako ina anwani ya IP. 624 00:29:49,310 --> 00:29:52,240 Kitu chochote na uhusiano na mtandao anwani ya IP. 625 00:29:52,240 --> 00:29:59,030 >> Hivyo DNS, Domain Jina System, kwamba ni nini kinaendelea kushughulikia tafsiri 626 00:29:59,030 --> 00:30:03,750 kutoka facebook.com kwa anwani ya IP kwamba wewe kweli unataka kuwasiliana. 627 00:30:03,750 --> 00:30:08,075 Hivyo sisi kuwasiliana na DNS server na kusema, ni nini facebook.com? 628 00:30:08,075 --> 00:30:16,560 Ni anasema, oh, ni anwani ya IP 190.212 jambo, jambo, kitu. 629 00:30:16,560 --> 00:30:16,900 Sawa. 630 00:30:16,900 --> 00:30:18,850 Sasa, najua nini mashine Nataka kuwasiliana. 631 00:30:18,850 --> 00:30:22,360 >> Hivyo basi kutuma maombi yako HTTP juu ya mashine hiyo. 632 00:30:22,360 --> 00:30:24,140 Hivyo ni jinsi gani kupata mashine ya kwamba? 633 00:30:24,140 --> 00:30:27,200 Naam, ombi inakwenda kutoka router kwa router bouncing. 634 00:30:27,200 --> 00:30:32,630 Kumbuka mfano katika darasa, ambapo sisi kweli kuona kwamba njia 635 00:30:32,630 --> 00:30:35,340 pakiti alichukua tulipojaribu kuwasiliana. 636 00:30:35,340 --> 00:30:38,460 Tuliiona kuruka juu ya Atlantic Bahari ya wakati mmoja au chochote. 637 00:30:38,460 --> 00:30:42,820 >> Hivyo bandari mrefu mwisho. 638 00:30:42,820 --> 00:30:46,520 Hivyo hii ni sasa kwenye kompyuta yako. 639 00:30:46,520 --> 00:30:49,970 Unaweza kuwa na mambo mbalimbali sasa kuwasiliana na internet. 640 00:30:49,970 --> 00:30:53,730 Hivyo siwezi kuwa mbio, kusema, Skype. 641 00:30:53,730 --> 00:30:55,670 Nipate brauza ya mtandao wazi. 642 00:30:55,670 --> 00:30:59,010 Nipate kuwa na kitu ambacho torrenting files. 643 00:30:59,010 --> 00:31:00,880 Hivyo mambo yote haya ni kuwasiliana na 644 00:31:00,880 --> 00:31:02,600 internet kwa namna fulani. 645 00:31:02,600 --> 00:31:08,070 >> Hivyo wakati kompyuta yako inapata baadhi data kutoka katika mtandao, jinsi gani 646 00:31:08,070 --> 00:31:10,130 kujua nini maombi kweli anataka data? 647 00:31:10,130 --> 00:31:12,610 Jinsi gani kujua kama hii hasa data ni maana ya 648 00:31:12,610 --> 00:31:16,070 torrenting maombi kinyume mtandao browser? 649 00:31:16,070 --> 00:31:20,980 Hivyo hii ni lengo la bandari katika yote ya maombi hayo na 650 00:31:20,980 --> 00:31:22,720 alidai bandari kwenye kompyuta yako. 651 00:31:22,720 --> 00:31:27,580 Hivyo web browser yako anasema, hey, Mimi nina kusikiliza juu ya bandari 1000. 652 00:31:27,580 --> 00:31:32,240 Na torrenting mpango wako ni kusema, Mimi nina kusikiliza juu ya bandari 3000. 653 00:31:32,240 --> 00:31:34,770 Na Skype anasema, mimi nina kutumia bandari 4000. 654 00:31:34,770 --> 00:31:41,950 >> Hivyo wakati wewe kupata baadhi ya data kwamba ni kwa moja ya maombi hayo, data 655 00:31:41,950 --> 00:31:45,510 ni alama na ambayo bandari ni kweli upelekwe pamoja na. 656 00:31:45,510 --> 00:31:47,950 Hivyo hii anasema, oh, mimi ni kwa bandari 1000. 657 00:31:47,950 --> 00:31:50,950 Mimi najua kisha nahitaji mbele hii pamoja na kivinjari yangu. 658 00:31:50,950 --> 00:31:56,440 Hivyo sababu ni muhimu hapa ni kwamba seva mtandao huwa na 659 00:31:56,440 --> 00:31:58,240 kusikiliza juu ya bandari 80. 660 00:31:58,240 --> 00:32:02,420 Hivyo wakati mimi kuwasiliana na Facebook.com, mimi nina kuwasiliana na baadhi ya mashine. 661 00:32:02,420 --> 00:32:06,390 Lakini mimi haja ya kusema ambayo bandari ya kwamba mashine nataka kuwasiliana na. 662 00:32:06,390 --> 00:32:09,160 Na vya mtandao huwa na kuwa kusikiliza kwenye bandari 80. 663 00:32:09,160 --> 00:32:14,010 >> Kama walitaka, hawakuweza kuweka up hivyo orodha kama juu ya bandari 7000. 664 00:32:14,010 --> 00:32:19,090 Na kisha katika mtandao browser, mimi naweza manually aina Facebook.com: 7000 kwa 665 00:32:19,090 --> 00:32:24,600 kutuma maombi kwa bandari 7000 ya Picha ya mtandao wa kompyuta. 666 00:32:24,600 --> 00:32:26,820 >> DAVID J. Malan: Na katika kesi hii, hata ingawa sisi hakuwa na kuhitaji kwamba watu 667 00:32:26,820 --> 00:32:30,000 kutaja hii, katika kesi hii, bandari nini ingekuwa kweli ombi kwenda? 668 00:32:30,000 --> 00:32:36,630 669 00:32:36,630 --> 00:32:37,880 Jaribu tena. 670 00:32:37,880 --> 00:32:42,810 671 00:32:42,810 --> 00:32:44,300 Hasa. 672 00:32:44,300 --> 00:32:47,960 Si kuangalia kwa kuwa, lakini hila kuwa kuna hakuna mwisho. 673 00:32:47,960 --> 00:32:51,770 >> Rob BOWDEN: Kwa hiyo HTTPS, kwa vile ni kusikiliza mahsusi kwa ajili ya 674 00:32:51,770 --> 00:32:55,180 encrypted, ni juu ya bandari 4430. 675 00:32:55,180 --> 00:32:57,680 >> Watazamaji: Na barua pepe ni 25, sawa? 676 00:32:57,680 --> 00:33:00,670 >> DAVID J. Malan: inayotoka barua pepe, 25, yep. 677 00:33:00,670 --> 00:33:03,760 >> Rob BOWDEN: Mimi si hata kujua zaidi ya - Yote ya wale wa chini huwa na kuwa 678 00:33:03,760 --> 00:33:06,310 zimehifadhiwa kwa ajili ya mambo. 679 00:33:06,310 --> 00:33:09,260 Nadhani kila kitu chini ya 1024 ni zimehifadhiwa. 680 00:33:09,260 --> 00:33:13,450 >> Watazamaji: Kwa nini kusema 3 ilikuwa ni idadi sahihi? 681 00:33:13,450 --> 00:33:18,820 >> Rob BOWDEN: Kwa sababu katika anwani ya IP, kuna makundi manne ya tarakimu. 682 00:33:18,820 --> 00:33:21,090 Na wao ni 0-255. 683 00:33:21,090 --> 00:33:28,060 Hivyo 192.168.2.1 ni ya kawaida ndani ya mtandao anwani ya IP. 684 00:33:28,060 --> 00:33:30,840 Taarifa ya wale wote ni chini ya 255. 685 00:33:30,840 --> 00:33:33,570 Hivyo wakati mimi ilianza na 300, kwamba hakuweza uwezekano wa kuwa na 686 00:33:33,570 --> 00:33:35,210 imekuwa moja ya idadi. 687 00:33:35,210 --> 00:33:38,170 >> DAVID J. Malan: Lakini hiyo silly kipande cha picha ya kutoka - ilikuwa ni CSI, ambapo walikuwa 688 00:33:38,170 --> 00:33:39,970 idadi hiyo ilikuwa kubwa mno kwa anwani ya IP. 689 00:33:39,970 --> 00:33:42,940 690 00:33:42,940 --> 00:33:46,110 >> Rob BOWDEN: maswali yoyote juu ya hili? 691 00:33:46,110 --> 00:33:51,710 moja ijayo, mabadiliko hivyo kamili katika mada, lakini tuna hii safu PHP kwa 692 00:33:51,710 --> 00:33:53,270 nyumba katika quad. 693 00:33:53,270 --> 00:33:56,360 Na sisi kuwa na orodha unordered. 694 00:33:56,360 --> 00:33:59,550 Na tunataka magazeti nje orodha ya kila kitu tu zenye jina nyumba. 695 00:33:59,550 --> 00:34:09,090 696 00:34:09,090 --> 00:34:11,870 Hivyo tuna foreach kitanzi. 697 00:34:11,870 --> 00:34:17,540 Basi kumbuka, syntax ni foreach safu kama bidhaa katika safu. 698 00:34:17,540 --> 00:34:22,360 Hivyo kwa njia ya kila iteration ya kitanzi, nyumba ni kwenda kuchukua moja ya 699 00:34:22,360 --> 00:34:24,060 maadili ndani ya safu. 700 00:34:24,060 --> 00:34:26,530 >> On kwanza iteration, nyumba itakuwa Cabot House. 701 00:34:26,530 --> 00:34:30,370 On pili iteration, nyumba mapenzi kuwa Courier House na kadhalika. 702 00:34:30,370 --> 00:34:34,370 Kwa hiyo kwa kila Quad kama nyumba, sisi ni tu kwenda na magazeti - 703 00:34:34,370 --> 00:34:37,250 wewe pia inaweza kuwa aliunga mkono - 704 00:34:37,250 --> 00:34:42,199 orodha ya bidhaa na kisha jina nyumba ya na kisha kufunga orodha item. 705 00:34:42,199 --> 00:34:45,210 braces curly ni hiari hapa. 706 00:34:45,210 --> 00:34:49,480 >> Na kisha sisi pia alisema katika swali yenyewe, kumbuka karibu 707 00:34:49,480 --> 00:34:50,770 unordered orodha tag. 708 00:34:50,770 --> 00:34:53,949 Kwa hiyo, tunahitaji exit PHP mode ili kufanya hivyo. 709 00:34:53,949 --> 00:35:00,280 Au sisi inaweza kuwa aliunga mkono karibu unordered orodha tag. 710 00:35:00,280 --> 00:35:02,380 >> DAVID J. Malan: Pia faini hapa ingekuwa wamekuwa na matumizi ya zamani shule kwa 711 00:35:02,380 --> 00:35:07,340 kitanzi na $ i = 0 0 na kutumia makosa kwa kufikiri urefu wa ray. 712 00:35:07,340 --> 00:35:09,240 Kabisa faini pia, tu kidogo wordier. 713 00:35:09,240 --> 00:35:12,170 714 00:35:12,170 --> 00:35:14,742 >> Watazamaji: Hivyo kama wewe walikuwa wanakwenda [Inaudible], je, kufanya - 715 00:35:14,742 --> 00:35:16,734 Mimi kusahau kile kitanzi [inaudible] ni. 716 00:35:16,734 --> 00:35:21,380 Je, wewe $ Quad bracket i? 717 00:35:21,380 --> 00:35:21,850 >> DAVID J. Malan: Hasa. 718 00:35:21,850 --> 00:35:23,100 Yeah, hasa. 719 00:35:23,100 --> 00:35:26,650 720 00:35:26,650 --> 00:35:27,900 >> Rob BOWDEN: Kitu kingine? 721 00:35:27,900 --> 00:35:31,350 722 00:35:31,350 --> 00:35:32,010 >> DAVID J. Malan: zote haki. 723 00:35:32,010 --> 00:35:32,300 Biashara awamu ya pili. 724 00:35:32,300 --> 00:35:38,290 Basi, kulikuwa na mashada ya majibu inawezekana kwa kila moja ya haya. 725 00:35:38,290 --> 00:35:40,510 Sisi kweli tu kuangalia kwa kitu kulazimisha kwa kichwa na 726 00:35:40,510 --> 00:35:41,100 upande wa chini. 727 00:35:41,100 --> 00:35:44,830 Na namba 16 aliuliza, kuhalalisha watumiaji ' pembejeo mteja upande, kama kwa JavaScript, 728 00:35:44,830 --> 00:35:47,280 badala ya server-upande, kama kwa PHP. 729 00:35:47,280 --> 00:35:49,450 Basi nini suala la mafanikio ya kufanya mteja upande? 730 00:35:49,450 --> 00:35:53,780 >> Naam, moja ya mambo ya sisi mapendekezo ni kwamba kupunguza utulivu, kwa sababu wewe 731 00:35:53,780 --> 00:35:56,750 hawana bother kuwasiliana na server, ambayo inaweza kuchukua chache 732 00:35:56,750 --> 00:36:00,390 milliseconds au hata wanandoa wa sekunde na kuepuka kuwa na tu 733 00:36:00,390 --> 00:36:04,670 kuhalalisha watumiaji 'pembejeo mteja upande na kuchochea on-kuwasilisha handler na 734 00:36:04,670 --> 00:36:06,650 tu kuangalia, je, wao aina kitu kwa ajili ya jina? 735 00:36:06,650 --> 00:36:08,080 Je, wao aina ya kitu kwa ajili ya barua pepe? 736 00:36:08,080 --> 00:36:10,950 Je, wao kuchagua Dorm kutoka drop-down menu? 737 00:36:10,950 --> 00:36:14,360 >> Unaweza kutoa maoni yao instantaneous kutumia kompyuta gigahertz 738 00:36:14,360 --> 00:36:16,770 au chochote na kwamba kweli juu ya dawati yao. 739 00:36:16,770 --> 00:36:19,310 Hivyo tu user bora uzoefu kawaida. 740 00:36:19,310 --> 00:36:24,460 Lakini upande wa chini ya kufanya mteja upande uthibitisho, kama wewe kufanya hivyo bila pia 741 00:36:24,460 --> 00:36:29,860 kufanya server-upande uthibitisho ni kwamba zaidi mtu yeyote kuja nje ya CS50 anajua 742 00:36:29,860 --> 00:36:33,980 kwamba unaweza tu kutuma data yoyote unataka kwa server idadi yoyote ya njia. 743 00:36:33,980 --> 00:36:37,030 Kusema ukweli, wengi yoyote browser, unaweza bonyeza kuzunguka katika mazingira na tu 744 00:36:37,030 --> 00:36:40,110 kuzima JavaScript, ambayo, Kwa hiyo, afya aina yoyote ya 745 00:36:40,110 --> 00:36:41,080 uthibitisho. 746 00:36:41,080 --> 00:36:44,460 >> Lakini pia wanaweza kukumbuka kwamba hata mimi alifanya baadhi ya mambo arcane katika darasa kwa kutumia 747 00:36:44,460 --> 00:36:47,790 telnet na kwa kweli kujifanya kuwa kisakuzi kwa kutuma kupata 748 00:36:47,790 --> 00:36:49,240 maombi ya server. 749 00:36:49,240 --> 00:36:51,030 Na kwamba hakika si kutumia yoyote JavaScript. 750 00:36:51,030 --> 00:36:53,290 Hiyo mimi tu kuandika amri katika keyboard. 751 00:36:53,290 --> 00:36:57,410 Hivyo kweli, programu yoyote ndani ya kutosha faraja na mtandao na HTTP 752 00:36:57,410 --> 00:37:01,690 inaweza kutuma chochote data yeye au yeye anataka kwa server bila uthibitisho. 753 00:37:01,690 --> 00:37:05,470 Na kama seva yako si pia kuangalia, hawakuwa nipe jina, ni 754 00:37:05,470 --> 00:37:08,930 hii kwa kweli anwani ya barua pepe halali, alifanya wao kuchagua Dorm, unaweza kumaliza 755 00:37:08,930 --> 00:37:12,800 up kuingiza bogus au tu tupu data ndani ya orodha yako, ambayo pengine 756 00:37:12,800 --> 00:37:15,450 si kwenda kuwa jambo zuri kama walikuwa kuchukua ilikuwa pale. 757 00:37:15,450 --> 00:37:16,770 >> Hivyo hii ni ukweli annoying. 758 00:37:16,770 --> 00:37:19,890 Lakini kwa ujumla, mteja upande uthibitisho ni kubwa. 759 00:37:19,890 --> 00:37:21,810 Lakini ina maana kazi mara mbili zaidi. 760 00:37:21,810 --> 00:37:25,970 Ingawa kuna kufanya kuwepo mbalimbali maktaba, JavaScript maktaba kwa 761 00:37:25,970 --> 00:37:28,830 mfano, kwamba kufanya hili sana, kiasi kidogo ya maumivu ya kichwa. 762 00:37:28,830 --> 00:37:31,940 Na unaweza kutumia tena baadhi ya maadili ya server-upande, mteja upande. 763 00:37:31,940 --> 00:37:35,980 Lakini kutambua kwamba ni kawaida kazi ya ziada. 764 00:37:35,980 --> 00:37:36,415 Yeah. 765 00:37:36,415 --> 00:37:37,792 >> Watazamaji: Hivyo kama sisi tu alisema chini ya salama - 766 00:37:37,792 --> 00:37:39,205 >> DAVID J. Malan: [anacheka] 767 00:37:39,205 --> 00:37:39,680 Ugh. 768 00:37:39,680 --> 00:37:43,105 Wale ni daima vigumu ndio adjudicate. 769 00:37:43,105 --> 00:37:44,480 >> Rob BOWDEN: Hiyo ingekuwa yamekubaliwa. 770 00:37:44,480 --> 00:37:44,810 >> DAVID J. Malan: Nini? 771 00:37:44,810 --> 00:37:45,810 >> Rob BOWDEN: Mimi kuundwa tatizo hili. 772 00:37:45,810 --> 00:37:46,735 Kwamba ingekuwa kukubalika. 773 00:37:46,735 --> 00:37:47,220 >> DAVID J. Malan: Yeah. 774 00:37:47,220 --> 00:37:47,830 >> Watazamaji: Cool. 775 00:37:47,830 --> 00:37:51,770 >> Rob BOWDEN: Lakini hatukuwa kukubali kwa mara ya kwanza moja - 776 00:37:51,770 --> 00:37:53,630 vizuri, nini sisi kuangalia kwa ni kitu kama huna kwa 777 00:37:53,630 --> 00:37:55,270 kuwasiliana na seva. 778 00:37:55,270 --> 00:37:58,355 Hatukuwa kukubali tu kwa kasi zaidi. 779 00:37:58,355 --> 00:38:00,080 >> Watazamaji: Je kuhusu si upya ukurasa? 780 00:38:00,080 --> 00:38:00,430 >> Rob BOWDEN: Ndiyo. 781 00:38:00,430 --> 00:38:03,000 Hiyo ilikuwa jibu kukubalika. 782 00:38:03,000 --> 00:38:06,300 >> DAVID J. Malan: kitu chochote ambapo sisi waliona ilikuwa ni zaidi kuliko hata uwezekano 783 00:38:06,300 --> 00:38:09,780 kwamba alijua nini walikuwa akisema, ambayo ni mgumu 784 00:38:09,780 --> 00:38:13,500 line kuteka wakati mwingine. 785 00:38:13,500 --> 00:38:16,000 Kutumia orodha wanaohusishwa badala ya safu kudumisha 786 00:38:16,000 --> 00:38:17,590 yamepangwa orodha ya integers. 787 00:38:17,590 --> 00:38:21,000 Hivyo kichwa sisi mara nyingi wanaelezea na uhusiano orodha ambayo motisha yao yote 788 00:38:21,000 --> 00:38:22,370 kuanzishwa mara kupata mabadiliko. 789 00:38:22,370 --> 00:38:23,030 Wanaweza kukua. 790 00:38:23,030 --> 00:38:23,950 Wanaweza kuogopa. 791 00:38:23,950 --> 00:38:27,370 Hivyo huna kuwa na kuruka kupitia hoops kwa kweli kujenga kumbukumbu zaidi 792 00:38:27,370 --> 00:38:28,140 kwa safu. 793 00:38:28,140 --> 00:38:30,310 Au huna tu kusema, tafadhali, user. 794 00:38:30,310 --> 00:38:31,410 safu ni kujazwa. 795 00:38:31,410 --> 00:38:35,850 Ukuaji hivyo nguvu ya orodha. 796 00:38:35,850 --> 00:38:37,210 upande wa chini ingawa orodha wanaohusishwa? 797 00:38:37,210 --> 00:38:40,916 798 00:38:40,916 --> 00:38:43,356 >> Watazamaji: Ni linear. 799 00:38:43,356 --> 00:38:45,800 Kutafuta kwenye orodha wanaohusishwa ni linear badala ya nini kuingia ndani 800 00:38:45,800 --> 00:38:46,360 >> DAVID J. Malan: Hasa. 801 00:38:46,360 --> 00:38:50,160 Kutafuta kwenye orodha wanaohusishwa ni linear, hata kama ni vyema, kwa sababu unaweza 802 00:38:50,160 --> 00:38:53,170 tu kufuata makombo haya mkate, hizi kuyatumia, kutoka mwanzo wa orodha 803 00:38:53,170 --> 00:38:53,570 hadi mwisho. 804 00:38:53,570 --> 00:38:57,970 Huwezi kujiinua kupata random na hivyo, tafuta binary, hata kama ni 805 00:38:57,970 --> 00:39:00,740 Iliyopangwa, kwamba unaweza kufanya na safu. 806 00:39:00,740 --> 00:39:02,390 Na pia kuna gharama nyingine. 807 00:39:02,390 --> 00:39:02,966 Yeah. 808 00:39:02,966 --> 00:39:03,800 >> Watazamaji: Kumbukumbu ufanisi? 809 00:39:03,800 --> 00:39:04,130 >> DAVID J. Malan: Yeah. 810 00:39:04,130 --> 00:39:06,940 Naam, mimi ingekuwa si lazima kusema ufanisi. 811 00:39:06,940 --> 00:39:10,110 Lakini haina gharama zaidi ya kumbukumbu, kwa sababu unahitaji bits 32 kwa kila 812 00:39:10,110 --> 00:39:13,400 node kwa pointer ya ziada, katika angalau kwa orodha moja moja wanaohusishwa. 813 00:39:13,400 --> 00:39:16,660 Sasa, kama wewe tu kuhifadhi integers na wewe ni kuongeza pointer, kwamba 814 00:39:16,660 --> 00:39:17,830 kweli ni aina ya mashirika yasiyo ya maana. 815 00:39:17,830 --> 00:39:19,340 Ni mara dufu kiasi cha kumbukumbu. 816 00:39:19,340 --> 00:39:22,330 Lakini katika hali halisi, kama wewe ni hifadhi wanaohusishwa orodha ya structs ambayo inaweza kuwa na 817 00:39:22,330 --> 00:39:25,540 8 ka, 16 ka, hata zaidi zaidi ya kwamba, labda ni chini 818 00:39:25,540 --> 00:39:26,500 ya gharama ya pembezoni. 819 00:39:26,500 --> 00:39:28,320 Lakini ni gharama hivyo. 820 00:39:28,320 --> 00:39:31,880 Hivyo ama ya wale itakuwa wameweza imekuwa nzuri kama downsides. 821 00:39:31,880 --> 00:39:32,110 >> 18. 822 00:39:32,110 --> 00:39:36,100 Kutumia PHP badala ya C kuandika amri ya mstari wa mpango. 823 00:39:36,100 --> 00:39:41,890 Hivyo hapa, ni mara nyingi kasi ya kutumia lugha kama PHP au Ruby au Python. 824 00:39:41,890 --> 00:39:43,700 Wewe tu haraka kufungua up mhariri wa maandishi. 825 00:39:43,700 --> 00:39:45,900 Una kazi nyingi zaidi inapatikana na wewe. 826 00:39:45,900 --> 00:39:49,325 PHP ina kuzama jikoni ya utendaji, ambapo katika C, wewe 827 00:39:49,325 --> 00:39:50,420 na sana, kidogo sana. 828 00:39:50,420 --> 00:39:53,820 Kwa kweli, guys the kujua njia ngumu kwamba huna meza hash. 829 00:39:53,820 --> 00:39:55,000 Huwezi kuwa na uhusiano orodha. 830 00:39:55,000 --> 00:39:57,470 Kama unataka hizo, una kutekeleza nao mwenyewe. 831 00:39:57,470 --> 00:40:00,950 >> Hivyo kichwa moja ya PHP au kweli yoyote kutafsiriwa lugha ni rapidity 832 00:40:00,950 --> 00:40:02,920 ambayo unaweza kuandika code. 833 00:40:02,920 --> 00:40:06,660 Lakini upande wa chini, tuliona hii wakati mimi haraka kuchapwa up misspeller 834 00:40:06,660 --> 00:40:11,780 utekelezaji katika hotuba kutumia PHP, ni kwamba kwa kutumia lugha kutafsiriwa 835 00:40:11,780 --> 00:40:13,570 ni kawaida polepole. 836 00:40:13,570 --> 00:40:18,420 Na tuliona kuwa demonstrably na kuongezeka kwa wakati kutoka sekunde 0.3 hadi 3 837 00:40:18,420 --> 00:40:24,440 sekunde, kwa sababu ya tafsiri kwamba kweli hutokea. 838 00:40:24,440 --> 00:40:27,060 >> Kichwa mwingine ilikuwa kwamba hawana kukusanya. 839 00:40:27,060 --> 00:40:30,130 Hivyo pia kasi ya maendeleo Kwa bahati mbaya, kwa sababu huna 840 00:40:30,130 --> 00:40:31,360 hatua mbili kwa kuendesha programu. 841 00:40:31,360 --> 00:40:32,140 Wewe tu mmoja. 842 00:40:32,140 --> 00:40:35,260 Na hiyo ilikuwa pretty kulazimisha pia. 843 00:40:35,260 --> 00:40:38,450 Kutumia SQL database badala ya File CSV kuhifadhi data. 844 00:40:38,450 --> 00:40:40,230 Hivyo SQL database ni kutumika kwa ajili pset7. 845 00:40:40,230 --> 00:40:42,060 Files CSV hakuwa kutumia kiasi. 846 00:40:42,060 --> 00:40:45,960 Lakini kutumika moja kwa moja katika pset7 kama vizuri kwa kuzungumza na Yahoo Fedha. 847 00:40:45,960 --> 00:40:49,330 >> Lakini CSV ni kama Excel file lakini super rahisi, ambapo nguzo ni 848 00:40:49,330 --> 00:40:54,010 tu demarked na koma ndani ya ya vinginevyo Nakala faili. 849 00:40:54,010 --> 00:40:56,740 Na kutumia SQL database ni kidogo zaidi ya kulazimisha. 850 00:40:56,740 --> 00:41:00,060 Ni suala la mafanikio, kwa sababu ya kupata mambo kama kuchagua na kuingiza na kufuta. 851 00:41:00,060 --> 00:41:03,790 Na kupata, labda, bahati kwamba MySQL na database nyingine, kama 852 00:41:03,790 --> 00:41:07,510 Oracle, kujenga kwa ajili yenu katika kumbukumbu, ambayo ina maana kuchagua yako pengine ni si 853 00:41:07,510 --> 00:41:09,000 kwenda kuwa juu linear chini. 854 00:41:09,000 --> 00:41:11,300 Ni kweli kwenda kuwa kitu kama search binary au kitu 855 00:41:11,300 --> 00:41:12,520 sawa katika roho. 856 00:41:12,520 --> 00:41:13,930 Hivyo ni kwa ujumla kwa kasi zaidi. 857 00:41:13,930 --> 00:41:16,040 >> Lakini Upande mwingine ni kwamba ni zaidi kazi tu. 858 00:41:16,040 --> 00:41:16,730 Ni juhudi zaidi. 859 00:41:16,730 --> 00:41:18,140 Una kuelewa database. 860 00:41:18,140 --> 00:41:18,940 Kuwa na kuweka it up. 861 00:41:18,940 --> 00:41:20,840 Unahitaji server kuendesha kwamba database juu. 862 00:41:20,840 --> 00:41:22,750 Unahitaji kuelewa jinsi ya configure. 863 00:41:22,750 --> 00:41:24,930 Basi hizi ni tu hizi aina ya biashara awamu ya pili. 864 00:41:24,930 --> 00:41:27,860 Wakati file CSV, unaweza kujenga na gedit. 865 00:41:27,860 --> 00:41:28,770 Na wewe ni vizuri kwenda. 866 00:41:28,770 --> 00:41:31,550 Hakuna utata zaidi ya hapo. 867 00:41:31,550 --> 00:41:34,870 >> Kutumia trie badala ya meza hash na chaining tofauti na kuhifadhi 868 00:41:34,870 --> 00:41:37,490 kamusi ya maneno kukumbusha ya pset5. 869 00:41:37,490 --> 00:41:42,480 Hivyo anajaribu kichwa, katika nadharia angalau, ni nini? 870 00:41:42,480 --> 00:41:46,380 Wakati mara kwa mara, angalau kama wewe ni hashing juu ya kila mmoja binafsi 871 00:41:46,380 --> 00:41:48,990 barua katika neno, kama wewe wanaweza kuwa kwa pset5. 872 00:41:48,990 --> 00:41:52,720 Hiyo inaweza kuwa hashes tano, sita hashes kama kuna tano au sita 873 00:41:52,720 --> 00:41:53,900 barua katika neno. 874 00:41:53,900 --> 00:41:54,580 Na kwamba ni nzuri. 875 00:41:54,580 --> 00:41:56,910 Na kama kuna amefungwa juu ya jinsi ya muda mrefu maneno yako inaweza kuwa, hiyo ni 876 00:41:56,910 --> 00:41:59,320 wakati kweli asymptotically mara kwa mara. 877 00:41:59,320 --> 00:42:05,180 >> Wakati hash meza na tofauti chaining, tatizo huko na kwamba 878 00:42:05,180 --> 00:42:09,070 aina gani ya muundo data ni kwamba utendaji wa algorithms yako kwa kawaida 879 00:42:09,070 --> 00:42:12,700 inategemea idadi ya mambo tayari katika mfumo wa data. 880 00:42:12,700 --> 00:42:15,660 Na kwamba ni dhahiri kesi na minyororo, ambapo mambo zaidi ya kuweka 881 00:42:15,660 --> 00:42:18,800 katika meza ya hash, tena wale minyororo kwenda, ambayo ina maana katika hali mbaya zaidi 882 00:42:18,800 --> 00:42:21,960 kesi, kitu unaweza kuwa na kuangalia kwa ni njia yote mwishoni mwa moja 883 00:42:21,960 --> 00:42:26,000 minyororo wale, ambayo kwa ufanisi warithi katika kitu linear. 884 00:42:26,000 --> 00:42:29,450 >> Sasa, katika mazoezi, inaweza kabisa kuwa kesi hiyo hash meza na 885 00:42:29,450 --> 00:42:32,820 minyororo ni kwa kasi zaidi kuliko sambamba trie utekelezaji. 886 00:42:32,820 --> 00:42:35,570 Lakini hiyo ni kwa sababu mbalimbali, kati ya ambayo ni inajaribu kutumia mengi yote ya 887 00:42:35,570 --> 00:42:39,240 kumbukumbu kwamba unaweza, kwa kweli, mambo polepole chini, kwa sababu huwezi kupata nzuri 888 00:42:39,240 --> 00:42:42,410 faida ya kitu kinachoitwa Caching, ambapo mambo ambayo ni karibu pamoja 889 00:42:42,410 --> 00:42:45,420 katika kumbukumbu kulipata mara nyingi kwa haraka zaidi. 890 00:42:45,420 --> 00:42:48,180 Na wakati mwingine unaweza kuja na mzuri hash kazi. 891 00:42:48,180 --> 00:42:51,060 Hata kama wewe kuwa na kupoteza kidogo ya kumbukumbu, unaweza, kwa kweli, kuwa na uwezo wa 892 00:42:51,060 --> 00:42:54,430 kupata mambo kwa haraka na si mbaya kama linearly. 893 00:42:54,430 --> 00:42:58,410 >> Hivyo katika muda mfupi, kulikuwa na si lazima na yoyote ya haya moja au hata mbili 894 00:42:58,410 --> 00:43:00,050 mambo maalum tulikuwa kutafuta. 895 00:43:00,050 --> 00:43:03,080 Kweli chochote kuvutia kama kichwa na upande wa chini 896 00:43:03,080 --> 00:43:04,800 ujumla hawakupata macho yetu. 897 00:43:04,800 --> 00:43:11,840 >> Rob BOWDEN: Hivyo kwa kichwa, sisi alifanya si kukubali juu yake mwenyewe "kasi." Wewe 898 00:43:11,840 --> 00:43:14,540 alikuwa na kusema kitu juu yake. 899 00:43:14,540 --> 00:43:17,910 Hata kama wewe alisema kinadharia kwa kasi, sisi alijua kwamba aina ya kueleweka 900 00:43:17,910 --> 00:43:19,470 kwamba ni 0 ya 1. 901 00:43:19,470 --> 00:43:22,820 Na hash meza, katika nadharia, si 0 ya 1. 902 00:43:22,820 --> 00:43:26,550 Kutaja chochote kuhusu Runtime ujumla got pointi. 903 00:43:26,550 --> 00:43:32,640 Lakini "kasi," zaidi ya ufumbuzi juu ya bodi kubwa kwamba walikuwa inajaribu walikuwa 904 00:43:32,640 --> 00:43:34,990 lengo polepole zaidi kuliko ufumbuzi waliokuwa meza hash. 905 00:43:34,990 --> 00:43:37,250 Hivyo kasi katika na yenyewe ni si kweli kweli. 906 00:43:37,250 --> 00:43:41,550 907 00:43:41,550 --> 00:43:44,380 >> DAVID J. Malan: Dom de dom dom. 908 00:43:44,380 --> 00:43:46,686 Mimi nina pengine ni moja tu kwamba anatambua kwamba ni jinsi gani kwamba walidhani 909 00:43:46,686 --> 00:43:47,500 itamkwe, sawa? 910 00:43:47,500 --> 00:43:50,400 >> Rob BOWDEN: Mimi nilikuwa na kweli hakuna wazo. 911 00:43:50,400 --> 00:43:51,650 >> DAVID J. Malan: Ni alifanya maana katika kichwa changu. 912 00:43:51,650 --> 00:43:53,830 913 00:43:53,830 --> 00:43:57,580 >> Rob BOWDEN: Mimi kufanya hivyo moja. 914 00:43:57,580 --> 00:43:58,020 OK. 915 00:43:58,020 --> 00:44:04,243 Hivyo hii ni moja ambapo alikuwa na kuteka mchoro sawa na wewe nguvu 916 00:44:04,243 --> 00:44:06,040 tumeona katika mitihani ya zamani. 917 00:44:06,040 --> 00:44:12,200 Hivyo basi tu kuangalia wakati huu. 918 00:44:12,200 --> 00:44:18,170 Hivyo kutokana na HTML node, tuna mbili watoto, kichwa na mwili. 919 00:44:18,170 --> 00:44:20,570 Hivyo sisi tawi - kichwa na mwili. 920 00:44:20,570 --> 00:44:22,280 kichwa ina jina tag. 921 00:44:22,280 --> 00:44:23,710 Hivyo tuna cheo. 922 00:44:23,710 --> 00:44:28,450 >> Sasa, jambo moja mengi ya watu alisahau ni kwamba nodes haya maandishi ni 923 00:44:28,450 --> 00:44:30,430 mambo ya ndani ya mti huu. 924 00:44:30,430 --> 00:44:36,260 Hivyo hapa sisi kutokea kwa kuteka yao kama ovals kwa vinavhotenganisha haya 925 00:44:36,260 --> 00:44:37,380 aina ya nodes. 926 00:44:37,380 --> 00:44:41,450 Lakini taarifa pia hapa tuna juu, katikati, na chini kuishia kuwa 927 00:44:41,450 --> 00:44:42,560 Nakala nodes. 928 00:44:42,560 --> 00:44:46,250 Hivyo kusahau wale ilikuwa kiasi fulani ya makosa ya kawaida. 929 00:44:46,250 --> 00:44:48,770 >> mwili ana watoto watatu - haya divs tatu. 930 00:44:48,770 --> 00:44:53,340 Hivyo div, div, div na kisha Nakala watoto node ya divs hizo. 931 00:44:53,340 --> 00:44:55,900 Hiyo ni pretty kiasi kwa maswali ambayo. 932 00:44:55,900 --> 00:44:57,860 >> DAVID J. Malan: Na ni thamani kubainisha, ingawa sisi si kukaa juu ya haya 933 00:44:57,860 --> 00:45:01,040 Maelezo katika wakati sisi kutumia katika JavaScript, kwamba ili gani, katika 934 00:45:01,040 --> 00:45:02,290 kweli, jambo kitaalam. 935 00:45:02,290 --> 00:45:06,330 Hivyo kama kichwa huja kabla ya mwili katika HTML, basi ni lazima kuonekana 936 00:45:06,330 --> 00:45:08,860 kushoto wa mwili katika DOM halisi. 937 00:45:08,860 --> 00:45:12,265 Kwamba wake ni, kwa ujumla, tu FYI, kitu kinachoitwa hati ili, ambapo 938 00:45:12,265 --> 00:45:13,260 haina jambo hilo. 939 00:45:13,260 --> 00:45:17,470 Na kama ungekuwa kutekeleza parser, mpango huo wasomaji HTML katika jengo 940 00:45:17,470 --> 00:45:20,960 juu ya mti katika kumbukumbu, kwa kuwa waaminifu, kwamba shirikishi pengine nini 941 00:45:20,960 --> 00:45:24,720 kufanya anyway - juu hadi chini, kushoto na kulia. 942 00:45:24,720 --> 00:45:26,116 >> Rob BOWDEN: Maswali juu ya hilo? 943 00:45:26,116 --> 00:45:29,080 944 00:45:29,080 --> 00:45:30,000 Anatakiwa kufanya moja ijayo? 945 00:45:30,000 --> 00:45:32,380 >> DAVID J. Malan: Uhakika. 946 00:45:32,380 --> 00:45:33,810 >> Rob BOWDEN: OK. 947 00:45:33,810 --> 00:45:39,320 Hivyo hii ni buffer overrun mashambulizi swali. 948 00:45:39,320 --> 00:45:43,740 Jambo kuu kutambua hapa ni, vizuri, jinsi nguvu adui hila 949 00:45:43,740 --> 00:45:46,170 mpango huu katika utekelezaji holela kanuni? 950 00:45:46,170 --> 00:45:51,860 Hivyo argv1, kwanza mstari amri hoja ya mpango huu, ambayo inaweza kuwa 951 00:45:51,860 --> 00:45:53,920 kiholela kwa muda mrefu. 952 00:45:53,920 --> 00:45:59,160 Lakini hapa sisi ni kutumia memcpy kwa nakala argv1, ambayo hapa ni bar. 953 00:45:59,160 --> 00:46:00,165 Sisi ni kupita kama hoja. 954 00:46:00,165 --> 00:46:02,050 Na hivyo ni kuchukua jina bar. 955 00:46:02,050 --> 00:46:08,040 >> Hivyo sisi ni memcpying bar ndani ya hii c buffer. 956 00:46:08,040 --> 00:46:09,400 Jinsi ka wengi sisi kuiga? 957 00:46:09,400 --> 00:46:14,040 Vizuri hata hivyo wengi ka bar hutokea kwa kutumia, urefu wa hoja hiyo. 958 00:46:14,040 --> 00:46:17,930 Lakini c ni ka 12 tu kote. 959 00:46:17,930 --> 00:46:22,280 Hivyo kama sisi aina hoja ya mstari amri kwamba zaidi ya ka 12, sisi ni 960 00:46:22,280 --> 00:46:25,470 kwenda kufurika hii hasa buffer. 961 00:46:25,470 --> 00:46:31,000 Sasa, jinsi gani adui hila mpango katika utekelezaji code holela? 962 00:46:31,000 --> 00:46:34,910 >> Ili kukumbuka kwamba hapa kuu ni wito foo. 963 00:46:34,910 --> 00:46:37,340 Na hivyo basi wito kuu foo. 964 00:46:37,340 --> 00:46:40,408 Hebu kuteka hii. 965 00:46:40,408 --> 00:46:44,720 966 00:46:44,720 --> 00:46:46,990 Hivyo tuna stack yetu. 967 00:46:46,990 --> 00:46:49,090 Na kuu ina sura ya stack chini. 968 00:46:49,090 --> 00:46:51,860 969 00:46:51,860 --> 00:46:53,250 Katika hatua nyingine, wito kuu foo. 970 00:46:53,250 --> 00:46:55,390 Naam, mara moja, wito kuu foo. 971 00:46:55,390 --> 00:46:57,130 Na hivyo foo anapata mwenyewe stack sura yake. 972 00:46:57,130 --> 00:46:59,650 973 00:46:59,650 --> 00:47:02,220 >> Sasa, wakati fulani, foo ni kwenda na kurudi. 974 00:47:02,220 --> 00:47:06,810 Basi, akaingia foo anarudi, tunahitaji kujua kwa nini mstari wa kanuni ndani ya kuu sisi 975 00:47:06,810 --> 00:47:10,610 walikuwa ili kujua ambapo tunapaswa kuendelea katika kuu. 976 00:47:10,610 --> 00:47:13,100 Tunaweza kuwaita foo kutoka nzima kundi la maeneo mbalimbali. 977 00:47:13,100 --> 00:47:14,620 Jinsi gani tunajua ambapo kurudi? 978 00:47:14,620 --> 00:47:16,460 Naam, sisi haja ya kuhifadhi kwamba mahali fulani. 979 00:47:16,460 --> 00:47:23,010 >> Hivyo mahali fulani haki hapa, sisi kuhifadhi ambapo tunapaswa kurudi kwa mara moja 980 00:47:23,010 --> 00:47:24,070 foo anarudi. 981 00:47:24,070 --> 00:47:26,350 Na hii ni kurudi anwani. 982 00:47:26,350 --> 00:47:30,490 Hivyo ni jinsi adui anaweza kuchukua faida hii ni ukweli kwamba 983 00:47:30,490 --> 00:47:37,550 hii c buffer ni kuhifadhiwa, hebu kusema, haki hapa ni c. 984 00:47:37,550 --> 00:47:39,690 Hivyo sisi tumepewa ka 12 kwa c. 985 00:47:39,690 --> 00:47:40,540 Hii ni c. 986 00:47:40,540 --> 00:47:43,030 Na hii ni foo ya stack pete. 987 00:47:43,030 --> 00:47:49,970 Hivyo kama malicious mtumiaji inaingia zaidi ka zaidi ya 12 au kuingia amri 988 00:47:49,970 --> 00:47:54,570 line hoja kwamba zaidi ya 12 wahusika, kisha tunakwenda 989 00:47:54,570 --> 00:47:57,540 kufurika buffer hii. 990 00:47:57,540 --> 00:47:59,910 >> Tunaweza kuendelea. 991 00:47:59,910 --> 00:48:02,220 Na wakati fulani, sisi kwenda mbali kutosha kwamba sisi kuanza 992 00:48:02,220 --> 00:48:05,120 overwriting anwani hii kurudi. 993 00:48:05,120 --> 00:48:08,310 Hivyo mara moja sisi overwrite kurudi mitaani, hii ina maana kwamba wakati foo 994 00:48:08,310 --> 00:48:14,220 anarudi, sisi ni kurudi popote user malicious ni kuwaambia ni kwa na 995 00:48:14,220 --> 00:48:19,490 chochote thamani iliingia, kwa chochote wahusika user aliingia. 996 00:48:19,490 --> 00:48:24,320 Na hivyo kama malicious user ni kuwa hasa wajanja, anaweza kuwa na hii 997 00:48:24,320 --> 00:48:29,255 kurudi mahali fulani katika printDef kazi au mahali fulani katika malloc 998 00:48:29,255 --> 00:48:31,830 kazi, tu mahali popote holela. 999 00:48:31,830 --> 00:48:38,420 >> Lakini hata wajanja zaidi ni nini kama ana user kurudi hapa. 1000 00:48:38,420 --> 00:48:41,920 Na kisha kuanza utekelezaji haya kama mstari wa kanuni. 1001 00:48:41,920 --> 00:48:46,610 Hivyo katika hatua hiyo, mtumiaji anaweza kuingia chochote anachotaka katika mkoa huu. 1002 00:48:46,610 --> 00:48:52,210 Na yeye ana mamlaka kamili juu ya mpango wako. 1003 00:48:52,210 --> 00:48:53,460 Maswali juu ya hilo? 1004 00:48:53,460 --> 00:48:56,380 1005 00:48:56,380 --> 00:49:00,970 Hivyo swali la pili ni kamili reimplementation ya foo katika namna 1006 00:49:00,970 --> 00:49:02,620 kwamba ni tena katika mazingira magumu. 1007 00:49:02,620 --> 00:49:03,870 >> Hivyo kuna michache ya njia unaweza kuwa aliyefanya hivyo. 1008 00:49:03,870 --> 00:49:10,900 1009 00:49:10,900 --> 00:49:13,330 Bado tuna c tu kuwa ya urefu 12. 1010 00:49:13,330 --> 00:49:16,480 Unaweza kuwa iliyopita hii kama sehemu ya ufumbuzi wako. 1011 00:49:16,480 --> 00:49:18,930 Sisi pia aliongeza kuangalia kufanya uhakika bar hakuwa null. 1012 00:49:18,930 --> 00:49:24,460 Ingawa hakuwa na haja ya kwamba kamili ya mikopo. 1013 00:49:24,460 --> 00:49:27,690 Hivyo sisi ni kuangalia kwanza kamba urefu wa bar. 1014 00:49:27,690 --> 00:49:31,650 Kama ni zaidi ya 12, basi si kweli kufanya nakala. 1015 00:49:31,650 --> 00:49:33,010 Hivyo kwamba ni njia mojawapo ya fixing. 1016 00:49:33,010 --> 00:49:36,750 >> Njia nyingine ya fixing ni badala ya kuwa c tu kuwa na urefu 12, kuwa ni 1017 00:49:36,750 --> 00:49:39,310 kuwa ya urefu strlen (bar). 1018 00:49:39,310 --> 00:49:43,370 Njia nyingine ya fixing ni kwa kweli kurudi tu. 1019 00:49:43,370 --> 00:49:46,690 Hivyo kama wewe alikuwa tu waliopata kuondoa yote ya hii, kama alikuwa tu kuchapa wote 1020 00:49:46,690 --> 00:49:51,830 mstari wa kanuni, basi bila ya kuwa na kujipatia mikopo kamili, tangu kazi hii 1021 00:49:51,830 --> 00:49:54,150 Je, si kweli kukamilisha chochote. 1022 00:49:54,150 --> 00:49:57,650 Ni kuiga amri line hoja katika baadhi ya safu katika 1023 00:49:57,650 --> 00:49:59,960 ndani stack sura yake. 1024 00:49:59,960 --> 00:50:01,310 Na kisha kitu ni kurudi. 1025 00:50:01,310 --> 00:50:04,020 Na chochote yametimia ni gone. 1026 00:50:04,020 --> 00:50:09,740 Hivyo kurudi pia ilikuwa ya kutosha njia ya kupata mikopo full. 1027 00:50:09,740 --> 00:50:13,425 >> DAVID J. Malan: Si roho kabisa ya swali lakini kukubalika kwa 1028 00:50:13,425 --> 00:50:15,580 spec hata hivyo. 1029 00:50:15,580 --> 00:50:18,260 >> Rob BOWDEN: Maswali yoyote ya kwamba? 1030 00:50:18,260 --> 00:50:22,270 jambo moja kwamba angalau inahitajika kuwa na kuandaa kanuni. 1031 00:50:22,270 --> 00:50:24,810 Hivyo hata kama kitaalam wewe si mazingira magumu kama kanuni yako haina 1032 00:50:24,810 --> 00:50:29,130 kukusanya, hatukuwa kukubali kwamba. 1033 00:50:29,130 --> 00:50:31,350 Hakuna maswali? 1034 00:50:31,350 --> 00:50:33,320 OK. 1035 00:50:33,320 --> 00:50:34,580 >> DAVID J. Malan: Je, unataka kusema jina hili? 1036 00:50:34,580 --> 00:50:37,230 >> Rob BOWDEN: Hapana 1037 00:50:37,230 --> 00:50:40,470 >> DAVID J. Malan: Kwa hiyo katika hili, hii ilikuwa ama habari njema au habari mbaya. 1038 00:50:40,470 --> 00:50:43,870 Hii ni halisi tatizo moja kama jaribio la kwanza. 1039 00:50:43,870 --> 00:50:46,140 Na ni karibu sawa na tatizo kama pset1. 1040 00:50:46,140 --> 00:50:49,980 Lakini ilikuwa kwa makusudi rahisi kwa kuwa piramidi rahisi, moja ambayo inaweza kuwa 1041 00:50:49,980 --> 00:50:52,330 kutatuliwa kwa kidogo rahisi iteration. 1042 00:50:52,330 --> 00:50:55,680 Na kweli, nini sisi kupata katika hapa haikuwa hivyo mengi mantiki, 1043 00:50:55,680 --> 00:50:58,100 kwa sababu pengine, na hatua hii, wewe ni vizuri zaidi kuliko ungekuwa 1044 00:50:58,100 --> 00:51:01,850 katika wiki moja na kwa loops au kwa nini tanzi, lakini kwa kweli tease mbali kwamba 1045 00:51:01,850 --> 00:51:04,790 wewe ni kidogo vizuri na dhana kwamba PHP ni si tu juu ya nini 1046 00:51:04,790 --> 00:51:05,290 programu. 1047 00:51:05,290 --> 00:51:07,820 Ni kweli anaweza kutumika kama lugha kuandika programu line amri. 1048 00:51:07,820 --> 00:51:10,060 >> Na kwa kweli, kwamba ni nini sisi kujaribu kuteka mawazo yako kwa. 1049 00:51:10,060 --> 00:51:12,060 Hii ni amri ya line PHP mpango. 1050 00:51:12,060 --> 00:51:16,690 Hivyo C code hapa, wakati sahihi katika C, si sahihi kwa PHP. 1051 00:51:16,690 --> 00:51:17,940 Lakini code kweli ni sawa. 1052 00:51:17,940 --> 00:51:21,720 Kama kulinganisha ufumbuzi kwa Quiz 0 dhidi ya Quiz 1, utapata kwamba 1053 00:51:21,720 --> 00:51:25,630 ni karibu sawa, ila kwa ishara baadhi ya dola na kwa 1054 00:51:25,630 --> 00:51:27,250 kukosekana kwa ajili ya aina data. 1055 00:51:27,250 --> 00:51:31,720 Hasa, kama sisi kuangalia hapa, utaona kwamba sisi iterate, katika hii 1056 00:51:31,720 --> 00:51:33,730 kesi, kutoka 1 hadi hadi 7. 1057 00:51:33,730 --> 00:51:34,910 >> Tunaweza wamefanya hivyo 0 index. 1058 00:51:34,910 --> 00:51:37,320 Lakini wakati mwingine, nadhani ni haki ya rahisi wa akili na kufikiri kuhusu mambo 1059 00:51:37,320 --> 00:51:38,200 1-7. 1060 00:51:38,200 --> 00:51:40,300 Kama unataka kuzuia moja, basi wawili vitalu, kisha ya tatu, kisha 1061 00:51:40,300 --> 00:51:41,770 dot, dot, nukta saba. 1062 00:51:41,770 --> 00:51:45,960 Sisi j kuwa kuanzishwa kwa 1 na kisha kuhesabu hadi kwenye i. 1063 00:51:45,960 --> 00:51:48,150 Na kila kitu hapa ni vinginevyo kufanana. 1064 00:51:48,150 --> 00:51:49,790 Lakini anastahili kumbuka ni michache ya mambo. 1065 00:51:49,790 --> 00:51:53,230 Sisi kukupa mistari hizi mbili, hii kwanza moja, goofily jina lake kama shebang 1066 00:51:53,230 --> 00:51:54,560 kwa bang mkali. 1067 00:51:54,560 --> 00:51:58,770 Na kwamba tu bayana njia, folder, ambayo mpango unaweza kuwa na 1068 00:51:58,770 --> 00:52:02,160 iligundua kuwa unataka kutumia kutafsiri faili hii. 1069 00:52:02,160 --> 00:52:04,710 >> Na kisha line baada ya kwamba, bila shaka, maana kuingia PHP mode. 1070 00:52:04,710 --> 00:52:07,740 Na line chini sana maana exit PHP mode. 1071 00:52:07,740 --> 00:52:09,740 Na kazi hii, kwa ujumla, kwa kutafsiriwa lugha. 1072 00:52:09,740 --> 00:52:14,370 Ni aina ya annoying kama wewe kuandika mpango katika faili iitwayo foo.php. 1073 00:52:14,370 --> 00:52:17,320 Na kisha watumiaji yako na tu kumbuka, OK, kuendesha mpango huu, mimi 1074 00:52:17,320 --> 00:52:22,320 kuwa na aina "php nafasi foo.php." Aina ya annoying kama kitu kingine. 1075 00:52:22,320 --> 00:52:25,270 Na pia inaonyesha kwamba mpango wako imeandikwa katika PHP, ambayo si wote 1076 00:52:25,270 --> 00:52:27,060 kwamba chenye kwa mtumiaji. 1077 00:52:27,060 --> 00:52:30,100 >> Hivyo unaweza kuondoa php. Kabisa kukumbuka kutoka hotuba. 1078 00:52:30,100 --> 00:52:35,690 Na unaweza kufanya. / Foo kama umefanya chmodded ni kwa kufanya hivyo 1079 00:52:35,690 --> 00:52:36,500 kutekelezwa. 1080 00:52:36,500 --> 00:52:39,630 Hivyo chmod a + x foo ingekuwa amefanya hivyo. 1081 00:52:39,630 --> 00:52:41,460 Na kama wewe pia kuongeza shebang hapa. 1082 00:52:41,460 --> 00:52:45,320 Lakini kwa kweli, tatizo ni kupata katika uchapishaji nje kitu kama hiki. 1083 00:52:45,320 --> 00:52:51,100 No HTML, hakuna C-code hakika, baadhi tu ya PHP. 1084 00:52:51,100 --> 00:52:54,100 Hivyo Milo kisha akarudi katika tatizo 25. 1085 00:52:54,100 --> 00:52:58,050 Na katika 25, walipewa zifuatazo mifupa code, ambayo ilikuwa 1086 00:52:58,050 --> 00:52:59,730 pretty rahisi mtandao ukurasa. 1087 00:52:59,730 --> 00:53:04,230 Na sehemu Juicy HTML-busara ilikuwa chini hapa, ambako tuna ndani ya mwili 1088 00:53:04,230 --> 00:53:09,160 fomu ambayo ina kipekee ID ya pembejeo ndani ya ambayo ilikuwa pembejeo mbili, moja 1089 00:53:09,160 --> 00:53:11,950 na wazo la jina, mmoja na wazo ya kifungo. 1090 00:53:11,950 --> 00:53:14,240 >> ya kwanza ilikuwa ya aina ya maandishi, pili ya aina kuwasilisha. 1091 00:53:14,240 --> 00:53:16,930 Na hivyo tuliyowapeni, kwa kweli, zaidi viungo kuliko unahitajika, ili tu 1092 00:53:16,930 --> 00:53:19,230 nyie na chaguzi na ambayo kutatua tatizo hili. 1093 00:53:19,230 --> 00:53:21,130 Huwezi madhubuti haja yote ya vitambulisho haya. 1094 00:53:21,130 --> 00:53:23,580 Lakini utapata kutatua ni kwa njia tofauti. 1095 00:53:23,580 --> 00:53:27,050 Na hadi saa ya juu, taarifa kwamba Lengo lilikuwa na kusababisha 1096 00:53:27,050 --> 00:53:27,960 dirisha kama hii - 1097 00:53:27,960 --> 00:53:28,780 Hello, Milo! - 1098 00:53:28,780 --> 00:53:31,270 pop up katika browser kutumia super rahisi, kama 1099 00:53:31,270 --> 00:53:33,190 si mbaya, tahadhari kazi. 1100 00:53:33,190 --> 00:53:37,480 Na hivyo, hatimaye, hii majipu chini conceptually kwa namna fulani kusikiliza kwa 1101 00:53:37,480 --> 00:53:41,290 maoni ya aina mteja upande , Si server-upande, kwa namna fulani 1102 00:53:41,290 --> 00:53:45,640 kukabiliana na kwamba kuwasilishwa kwa grabbing thamani kwamba mtumiaji typed 1103 00:53:45,640 --> 00:53:50,120 katika shamba jina, na kisha kuonyesha ni katika mwili wa tahadhari. 1104 00:53:50,120 --> 00:53:53,460 >> Hivyo njia moja unaweza kufanya hivyo ni kwa jQuery, ambayo inaonekana kidogo 1105 00:53:53,460 --> 00:53:56,880 syntactically kutatanisha mara ya kwanza. 1106 00:53:56,880 --> 00:54:00,760 Unaweza kufanya hivyo na safi DOM code - document.getelement na ID. 1107 00:54:00,760 --> 00:54:02,530 Lakini hebu tuangalie toleo hili. 1108 00:54:02,530 --> 00:54:05,110 Mimi kuwa wanandoa wa muhimu mistari ya kwanza. 1109 00:54:05,110 --> 00:54:09,460 Hivyo moja, tuna line hii, ambayo ni kufanana na nini unaweza kuwa na kuonekana 1110 00:54:09,460 --> 00:54:13,830 katika, naamini, form2.html kutoka darasa katika wiki 9. 1111 00:54:13,830 --> 00:54:16,960 Na hii ni kusema tu, kutekeleza code zifuatazo wakati 1112 00:54:16,960 --> 00:54:18,430 hati ni tayari. 1113 00:54:18,430 --> 00:54:21,770 Hii kuwa muhimu tu kwa sababu Kurasa HTML ni kusoma juu kwa 1114 00:54:21,770 --> 00:54:23,280 chini, kushoto na kulia. 1115 00:54:23,280 --> 00:54:27,910 >> Kwa hiyo, kama wewe kujaribu kufanya kitu katika kanuni up hapa kwa baadhi DOM 1116 00:54:27,910 --> 00:54:31,560 hiki, baadhi ya tag HTML, hiyo ni chini hapa, wewe kufanya ni mapema mno, 1117 00:54:31,560 --> 00:54:34,220 kwa sababu hii ina hata imekuwa kusoma katika kumbukumbu. 1118 00:54:34,220 --> 00:54:37,740 Hivyo kwa kusema document.ready hii line, sisi ni kusema, 1119 00:54:37,740 --> 00:54:39,040 hapa ni baadhi ya kanuni, browser. 1120 00:54:39,040 --> 00:54:42,440 Lakini si kutekeleza hii mpaka zima hati ni tayari, kwamba ni DOM 1121 00:54:42,440 --> 00:54:44,320 mti ipo katika kumbukumbu. 1122 00:54:44,320 --> 00:54:47,110 Hii ni moja ya kidogo zaidi moja kwa moja, kama syntactically a 1123 00:54:47,110 --> 00:54:51,890 tofauti kidogo, ambapo mimi kusema, kunyakua Hiki HTML ambao kipekee 1124 00:54:51,890 --> 00:54:53,560 kitambulisho ni pembejeo. 1125 00:54:53,560 --> 00:54:56,220 Hiyo ni nini tag hash inaashiria, ID ya kipekee. 1126 00:54:56,220 --> 00:54:58,070 Na kisha mimi nina wito. Kuwasilisha. 1127 00:54:58,070 --> 00:55:01,660 >> Hivyo. Kuwasilisha hapa ni kazi, vinginevyo inajulikana kama njia, hiyo ni 1128 00:55:01,660 --> 00:55:05,850 ndani ya kitu juu ya mkono wa kushoto upande huko kwamba sikuwa kuonyesha. 1129 00:55:05,850 --> 00:55:08,990 Hivyo kama unadhani wa pembejeo kama kitu katika kumbukumbu - na kwa kweli ni. 1130 00:55:08,990 --> 00:55:10,440 Ni node katika mti - 1131 00:55:10,440 --> 00:55:16,580 . Kuwasilisha njia wakati fomu hii kwa ID hii ni in, kutekeleza 1132 00:55:16,580 --> 00:55:17,700 code zifuatazo. 1133 00:55:17,700 --> 00:55:20,290 Mimi sijali nini jina la kazi ni mimi nina utekelezaji. 1134 00:55:20,290 --> 00:55:23,760 Hivyo hapa mimi nina kutumia, kama kabla, nini aitwaye lambda kazi au 1135 00:55:23,760 --> 00:55:24,720 bila majina kazi. 1136 00:55:24,720 --> 00:55:27,640 Siyo wakati wote kielimu mengine ya kuvutia kuliko hana jina, 1137 00:55:27,640 --> 00:55:30,220 ambayo ni mzuri kama wewe ni tu milele kwenda kuiita mara moja. 1138 00:55:30,220 --> 00:55:34,490 Na ndani kuna Mimi kwa kweli kushughulikia kuwasilisha fomu. 1139 00:55:34,490 --> 00:55:36,810 Mimi kwanza kutangaza variable aitwaye thamani. 1140 00:55:36,810 --> 00:55:40,610 Na kisha ni nini athari za hii yalionyesha sehemu hapa sasa? 1141 00:55:40,610 --> 00:55:44,755 Je, hiyo kufanya katika kiwango cha juu kwa ajili yangu? 1142 00:55:44,755 --> 00:55:48,539 >> Watazamaji: Ni anapata thamani kwamba user hakuwa katika HTML chini. 1143 00:55:48,539 --> 00:55:50,920 Ni anapata kwamba ID na kisha hupata thamani yake. 1144 00:55:50,920 --> 00:55:51,590 >> DAVID J. Malan: Hasa. 1145 00:55:51,590 --> 00:55:54,300 Ni grabs node, ambao kipekee kitambulisho ni jina. 1146 00:55:54,300 --> 00:55:56,900 Anapata thamani humo, ambayo ni, labda, nini mtumiaji 1147 00:55:56,900 --> 00:55:58,190 typed yeye au yeye mwenyewe. 1148 00:55:58,190 --> 00:56:01,020 Na kisha maduka kwamba katika variable kuitwa thamani. 1149 00:56:01,020 --> 00:56:03,720 Kama kando, unaweza kuwa na pia jambo hili tofauti kidogo. 1150 00:56:03,720 --> 00:56:09,250 Kabisa kukubalika kwa kufanya kitu thamani uongo var anapata 1151 00:56:09,250 --> 00:56:10,500 document.getElementById. 1152 00:56:10,500 --> 00:56:12,860 1153 00:56:12,860 --> 00:56:15,460 Na hii ni kwa nini ni kidogo tedious na si kutumia jQuery. 1154 00:56:15,460 --> 00:56:16,710 "Jina" thamani.. 1155 00:56:16,710 --> 00:56:18,330 1156 00:56:18,330 --> 00:56:19,620 Hivyo kabisa kukubalika. 1157 00:56:19,620 --> 00:56:22,770 Njia tofauti za kufanya hivyo. jQuery tu huelekea kuwa succinct kidogo zaidi na 1158 00:56:22,770 --> 00:56:25,230 dhahiri maarufu zaidi kati ya programmers. 1159 00:56:25,230 --> 00:56:27,590 >> Sasa, mimi nina kufanya kidogo ya sanity kuangalia, kwa sababu katika tatizo 1160 00:56:27,590 --> 00:56:30,820 taarifa sisi waziwazi alisema, kama user bado typed yake 1161 00:56:30,820 --> 00:56:32,580 jina, hawaonyeshi alerts. 1162 00:56:32,580 --> 00:56:35,390 Lakini unaweza kuangalia kwa kuwa, kwa kuwa tu kuangalia kwa kamba tupu kwa 1163 00:56:35,390 --> 00:56:37,850 quote-unquote kama kuna kitu kweli huko. 1164 00:56:37,850 --> 00:56:40,880 Lakini kama ni si sawa kunukuu-unquote, Nataka kuwaita alerts. 1165 00:56:40,880 --> 00:56:45,610 Na sehemu ya kuvutia hapa ni kwamba sisi ni kutumia pamoja na operator, ambayo 1166 00:56:45,610 --> 00:56:48,130 anafanya nini katika JavaScript? 1167 00:56:48,130 --> 00:56:48,740 Concatenate. 1168 00:56:48,740 --> 00:56:50,690 Hivyo ni kama PHPs dot operator. 1169 00:56:50,690 --> 00:56:52,820 Same wazo, syntax tofauti kidogo. 1170 00:56:52,820 --> 00:56:55,280 Na mimi nina kujenga kamba tu kwamba wewe aliona juu ya screen risasi - 1171 00:56:55,280 --> 00:56:57,750 Hello, hivyo na hivyo. 1172 00:56:57,750 --> 00:56:59,200 >> Na kisha undani mwisho ni hii. 1173 00:56:59,200 --> 00:57:04,970 Kwa nini mimi kurudi ndani ya uongo wa kazi hii bila majina? 1174 00:57:04,970 --> 00:57:07,420 >> Watazamaji: Hakuna thamani. 1175 00:57:07,420 --> 00:57:09,380 Kuiweka katika fomu. 1176 00:57:09,380 --> 00:57:12,320 1177 00:57:12,320 --> 00:57:16,730 Ni tu anasema, ikiwa thamani ni si sawa tupu, basi kufanya hivyo. 1178 00:57:16,730 --> 00:57:20,040 1179 00:57:20,040 --> 00:57:20,940 Kulikuwa na tupu katika kuwasilisha. 1180 00:57:20,940 --> 00:57:21,170 >> DAVID J. Malan: OK. 1181 00:57:21,170 --> 00:57:21,640 Makini ingawa. 1182 00:57:21,640 --> 00:57:22,830 Hakuna mtu mwingine hapa. 1183 00:57:22,830 --> 00:57:25,510 Na kwamba kurudi uongo ni nje la kama masharti. 1184 00:57:25,510 --> 00:57:29,470 Hivyo hii yalionyesha line, kurudi uongo, executes bila kujali wakati 1185 00:57:29,470 --> 00:57:32,310 fomu ni kuwasilishwa. 1186 00:57:32,310 --> 00:57:36,810 Gani kurejea ndani ya uongo ya hii tukio handler, kama ni kuitwa, 1187 00:57:36,810 --> 00:57:38,450 tukio katika swali kuwa kuwasilisha? 1188 00:57:38,450 --> 00:57:42,350 1189 00:57:42,350 --> 00:57:44,470 >> Watazamaji: Kwa sababu hutokea tu mara moja. 1190 00:57:44,470 --> 00:57:45,320 >> DAVID J. Malan: Ni hufanyika mara moja. 1191 00:57:45,320 --> 00:57:46,821 Kabisa. 1192 00:57:46,821 --> 00:57:47,292 Yeah? 1193 00:57:47,292 --> 00:57:50,589 >> Watazamaji: Ni kuzuia fomu kutoka kwa kuwasilisha na tabia default, 1194 00:57:50,589 --> 00:57:52,480 ambayo kufanya ukurasa Reload. 1195 00:57:52,480 --> 00:57:53,110 >> DAVID J. Malan: Hasa. 1196 00:57:53,110 --> 00:57:56,490 Hivyo mimi nina overloading mrefu kuwasilisha hapa, kwa sababu mimi kusema, fomu ni 1197 00:57:56,490 --> 00:57:57,670 kuwa kuwasilishwa. 1198 00:57:57,670 --> 00:58:02,240 Lakini kama wewe kupendekeza, ni kweli si kuwasilishwa katika kweli HTTP njia. 1199 00:58:02,240 --> 00:58:06,870 Wakati bonyeza Kuwasilisha, kwa sababu ya yetu onSubmit handler, sisi ni kukamata 1200 00:58:06,870 --> 00:58:09,040 kwamba kuwasilisha fomu hivyo kusema. 1201 00:58:09,040 --> 00:58:11,290 Sisi ni kisha kufanya mambo yetu na JavaScript code. 1202 00:58:11,290 --> 00:58:14,070 Lakini mimi nina kwa makusudi kurudi uongo, kwa sababu gani Sitaki kutokea 1203 00:58:14,070 --> 00:58:18,430 mgawanyiko wa pili baadaye ni kwa umbo lake lote yenyewe kuwasilishwa kwa mtandao 1204 00:58:18,430 --> 00:58:22,800 server kwa thamani jozi muhimu kwa kubadilisha URL kuwa kitu kama 1205 00:58:22,800 --> 00:58:26,180 q = paka au chochote sisi hivyo, kwa mfano, katika darasa. 1206 00:58:26,180 --> 00:58:29,640 Sitaki hilo kutokea, kwa sababu hakuna kusikiliza server kwa hii 1207 00:58:29,640 --> 00:58:30,690 kuwasilisha fomu. 1208 00:58:30,690 --> 00:58:32,320 Ni rena kufanyika katika JavaScript code. 1209 00:58:32,320 --> 00:58:35,760 Na kwamba ni kwa nini mimi hakuwa na hata kuwa hatua sifa katika fomu yangu, kwa sababu mimi 1210 00:58:35,760 --> 00:58:38,870 sitaki kwa hili milele kwenda kwa server. 1211 00:58:38,870 --> 00:58:40,780 >> Hivyo ni kuwa in. 1212 00:58:40,780 --> 00:58:44,340 Lakini sisi ni kukamata fomu kuwa kuwasilisha na kuzuia default 1213 00:58:44,340 --> 00:58:47,477 tabia, ambayo ni kweli kwenda njia yote ya server. 1214 00:58:47,477 --> 00:58:48,730 >> Watazamaji: Kwa hiyo kuweka mteja upande. 1215 00:58:48,730 --> 00:58:49,780 >> DAVID J. Malan: Kuweka ni mteja upande. 1216 00:58:49,780 --> 00:58:51,030 Hasa haki. 1217 00:58:51,030 --> 00:58:53,240 1218 00:58:53,240 --> 00:58:55,757 Next up mara yangu ya oh MySQL. 1219 00:58:55,757 --> 00:59:00,000 1220 00:59:00,000 --> 00:59:00,430 >> Rob BOWDEN: OK. 1221 00:59:00,430 --> 00:59:04,990 Hivyo swali hili kwanza kwa ujumla mbaya kwa watu. 1222 00:59:04,990 --> 00:59:07,270 Ingawa ndio baadaye alikwenda bora. 1223 00:59:07,270 --> 00:59:12,260 Hivyo alikuwa na kuchagua data sahihi aina kwa ajili ya wote nguzo hizi. 1224 00:59:12,260 --> 00:59:17,750 Na wote hawa na baadhi mambo yao kwamba 1225 00:59:17,750 --> 00:59:20,620 kufanya uchaguzi mgumu. 1226 00:59:20,620 --> 00:59:24,430 Hivyo int hakuwa halali aina kwa idadi. 1227 00:59:24,430 --> 00:59:29,410 Sababu ya kuwa akaunti 12-tarakimu posta, int si kubwa ya kutosha kwa 1228 00:59:29,410 --> 00:59:31,070 kuhifadhi tarakimu jumla. 1229 00:59:31,070 --> 00:59:36,570 Hivyo uchaguzi halali ingekuwa kubwa int kama kutokea kwa kujua kwamba. 1230 00:59:36,570 --> 00:59:42,090 Uchaguzi mwingine wangeweza char uwanja wa urefu 12. 1231 00:59:42,090 --> 00:59:44,560 Hivyo ama ya wale ingekuwa kazi. 1232 00:59:44,560 --> 00:59:46,100 Int bila. 1233 00:59:46,100 --> 00:59:50,170 >> Sasa, mizani, kufikiri nyuma pset7. 1234 00:59:50,170 --> 00:59:59,540 Hivyo sisi hasa kutumika decimal kwa kuhifadhi thamani ya hisa au - 1235 00:59:59,540 --> 01:00:00,550 >> DAVID J. Malan: Fedha. 1236 01:00:00,550 --> 01:00:01,060 >> Rob BOWDEN: Fedha. 1237 01:00:01,060 --> 01:00:05,710 Tulikuwa decimal kuhifadhi kiasi cha fedha kwamba mtumiaji sasa ina. 1238 01:00:05,710 --> 01:00:10,950 Hivyo sababu sisi kufanya hivyo ni kwa sababu, kumbuka, ikifungwa. 1239 01:00:10,950 --> 01:00:12,480 Kuna yaliyo hatua katika usahihi ni. 1240 01:00:12,480 --> 01:00:18,200 Haiwezi just kuhifadhi fedha maadili kama tunataka hapa. 1241 01:00:18,200 --> 01:00:23,630 Hivyo decimal ni uwezo wa usahihi duka kitu, kusema, maeneo mawili decimal. 1242 01:00:23,630 --> 01:00:27,630 Hiyo ni kwa nini usawa, tunataka kuwa decimal na si kuelea. 1243 01:00:27,630 --> 01:00:30,230 >> DAVID J. Malan: Na pia, pia, ingawa Yangaliweza wajanja katika nchi nyingine 1244 01:00:30,230 --> 01:00:32,760 mazingira kufikiri, labda hii ni nafasi kwa int. 1245 01:00:32,760 --> 01:00:34,420 Mimi itabidi kuweka wimbo wa mambo katika pennies. 1246 01:00:34,420 --> 01:00:38,670 Kwa sababu sisi wazi ilionyesha default thamani ya kuwa 100.00, kwamba 1247 01:00:38,670 --> 01:00:40,380 maana inaweza tu kuwa int. 1248 01:00:40,380 --> 01:00:45,310 Na hila nyingine pia na idadi ni kwamba hakuwa na maana 1249 01:00:45,310 --> 01:00:46,180 kuwa swali hila. 1250 01:00:46,180 --> 01:00:49,860 Lakini kukumbuka kuwa int katika MySQL, kama katika C, angalau katika 1251 01:00:49,860 --> 01:00:51,440 appliance, ni 32-bit. 1252 01:00:51,440 --> 01:00:53,960 Na hata kama hatuna wanatarajia kujua hasa jinsi tarakimu nyingi kwamba 1253 01:00:53,960 --> 01:00:56,910 maana yake, wala kukumbuka kwamba idadi kubwa unaweza kuwakilisha uwezekano wa 1254 01:00:56,910 --> 01:01:00,710 na 32-bit idadi ni takribani nini? 1255 01:01:00,710 --> 01:01:02,760 >> Nini idadi wala sisi daima kusema? 1256 01:01:02,760 --> 01:01:04,530 2-32, ambayo ni nini takribani? 1257 01:01:04,530 --> 01:01:07,492 1258 01:01:07,492 --> 01:01:08,780 Huwezi kujua kwa usahihi. 1259 01:01:08,780 --> 01:01:10,580 Lakini takribani ni muhimu katika maisha. 1260 01:01:10,580 --> 01:01:12,200 Ni takribani bilioni 4. 1261 01:01:12,200 --> 01:01:14,430 Hivyo tumekuwa alisema kuwa mara chache. 1262 01:01:14,430 --> 01:01:16,360 Mimi najua kuwa alisema kuwa mara chache. 1263 01:01:16,360 --> 01:01:17,670 Na ni takribani bilioni 4. 1264 01:01:17,670 --> 01:01:19,710 Na kwamba utawala bora ya thumb kujua. 1265 01:01:19,710 --> 01:01:21,880 Kama una 8 bits, 256 Idadi ya uchawi. 1266 01:01:21,880 --> 01:01:24,160 Kama una bits 32, 4 bilioni kutoa au kuchukua. 1267 01:01:24,160 --> 01:01:27,140 Hivyo kama wewe tu kuandika bilioni 4, utaona kwamba ni tarakimu chache kuliko 1268 01:01:27,140 --> 01:01:30,970 12, ambayo ina maana kwamba ni wazi si expressiveness kutosha kukamata 1269 01:01:30,970 --> 01:01:34,220 12-tarakimu idadi ya akaunti. 1270 01:01:34,220 --> 01:01:34,940 >> Rob BOWDEN: OK. 1271 01:01:34,940 --> 01:01:38,520 Hivyo wale wengine akaenda bora. 1272 01:01:38,520 --> 01:01:40,900 Hivyo tuseme kwamba benki inaweka $ 20 kila mwezi 1273 01:01:40,900 --> 01:01:42,400 ada matengenezo ya akaunti zote. 1274 01:01:42,400 --> 01:01:45,506 Kwa nini SQL swala inaweza benki dra $ 20 kutoka kila kuhesabu, hata kama 1275 01:01:45,506 --> 01:01:47,520 matokeo yake ni baadhi mizani mbaya? 1276 01:01:47,520 --> 01:01:50,380 Hivyo kimsingi, kuna nne kuu ya aina ya maswali - 1277 01:01:50,380 --> 01:01:52,840 kuingiza, kuchagua, update, na kufuta. 1278 01:01:52,840 --> 01:01:56,080 Basi je, tunafikiri ni kwenda kutumia hapa? 1279 01:01:56,080 --> 01:01:57,000 Mwisho. 1280 01:01:57,000 --> 01:01:58,260 >> Hivyo basi tuangalie. 1281 01:01:58,260 --> 01:02:04,290 1282 01:02:04,290 --> 01:02:05,870 Hivyo hapa sisi ni kuhuisha. 1283 01:02:05,870 --> 01:02:09,900 Nini meza ni sisi kuhuisha akaunti? 1284 01:02:09,900 --> 01:02:11,670 Hivyo kuhuisha akaunti. 1285 01:02:11,670 --> 01:02:15,390 Na kisha syntax anasema, nini katika akaunti ni sisi kuongezea? 1286 01:02:15,390 --> 01:02:19,520 Naam, sisi ni kuweka uwiano sawa na thamani ya sasa ya usawa minus 20. 1287 01:02:19,520 --> 01:02:22,860 Hivyo hii itakuwa update safu zote ya akaunti, kutoa mapato 1288 01:02:22,860 --> 01:02:26,250 $ 20 kutoka usawa. 1289 01:02:26,250 --> 01:02:29,260 >> DAVID J. Malan: makosa ya kawaida hapa, ingawa sisi wakati mwingine cha kusamehe, 1290 01:02:29,260 --> 01:02:32,990 ilikuwa kweli kuwa PHP code hapa wito kazi swala au kuweka 1291 01:02:32,990 --> 01:02:35,460 quotes karibu kila kitu hakuwa na haja ya kuwa huko. 1292 01:02:35,460 --> 01:02:39,780 >> Rob BOWDEN: Kumbuka ya kwamba MySQL ni lugha tofauti na PHP. 1293 01:02:39,780 --> 01:02:42,410 Sisi kutokea kwa kuwa kuandika MySQL katika PHP. 1294 01:02:42,410 --> 01:02:46,180 Na PHP ni kisha kupeleka juu ya MySQL server. 1295 01:02:46,180 --> 01:02:51,120 Lakini huna haja ya PHP ili kuwasiliana na MySQL server. 1296 01:02:51,120 --> 01:02:51,730 >> DAVID J. Malan: Hasa. 1297 01:02:51,730 --> 01:02:54,240 Hivyo hakuna vigezo na dola ishara lazima katika suala hili. 1298 01:02:54,240 --> 01:02:59,550 Ni anaweza kufanya yote ya math ndani ya database yenyewe. 1299 01:02:59,550 --> 01:03:00,080 >> Rob BOWDEN: OK. 1300 01:03:00,080 --> 01:03:01,300 Hivyo moja ijayo. 1301 01:03:01,300 --> 01:03:02,731 Je, hii ni moja ijayo? 1302 01:03:02,731 --> 01:03:03,210 Yeah. 1303 01:03:03,210 --> 01:03:06,570 Hivyo, pamoja na kile SQL swala inaweza benki retrieve idadi ya akaunti ya yake 1304 01:03:06,570 --> 01:03:09,300 wateja tajiri, wale walio na mizani zaidi ya 1,000? 1305 01:03:09,300 --> 01:03:13,280 Hivyo ambayo ya aina kuu nne sisi ni kwenda kutaka hapa? 1306 01:03:13,280 --> 01:03:14,430 Kuchagua. 1307 01:03:14,430 --> 01:03:16,650 Hivyo tunataka kuchagua. 1308 01:03:16,650 --> 01:03:17,610 Je, tunataka kuchagua? 1309 01:03:17,610 --> 01:03:19,380 Nini safu tunataka kuchagua? 1310 01:03:19,380 --> 01:03:20,970 Sisi hasa wanataka kuchagua idadi. 1311 01:03:20,970 --> 01:03:23,910 Lakini kama wewe alisema nyota, sisi pia kukubaliwa kuwa. 1312 01:03:23,910 --> 01:03:25,820 >> Hivyo kuchagua idadi kutoka meza nini? 1313 01:03:25,820 --> 01:03:26,640 Akaunti. 1314 01:03:26,640 --> 01:03:28,370 Na kisha hali tunataka? 1315 01:03:28,370 --> 01:03:30,140 Ambapo uwiano zaidi ya 1,000. 1316 01:03:30,140 --> 01:03:31,720 Sisi pia kukubalika zaidi zaidi kuliko au sawa. 1317 01:03:31,720 --> 01:03:35,230 1318 01:03:35,230 --> 01:03:36,190 Moja ya mwisho. 1319 01:03:36,190 --> 01:03:42,940 Kwa nini SQL swala inaweza benki karibu, yaani, kufuta kila akaunti ya kwamba 1320 01:03:42,940 --> 01:03:44,480 ina uwiano wa $ 0? 1321 01:03:44,480 --> 01:03:47,620 Hivyo ambayo ya nne ni sisi kwenda unataka kutumia? 1322 01:03:47,620 --> 01:03:48,320 Kufuta. 1323 01:03:48,320 --> 01:03:50,180 Hivyo syntax kwa kuwa? 1324 01:03:50,180 --> 01:03:51,890 Kufuta kutoka meza nini? 1325 01:03:51,890 --> 01:03:53,550 Akaunti. 1326 01:03:53,550 --> 01:03:55,790 Na kisha hali ambayo sisi unataka kufuta - 1327 01:03:55,790 --> 01:03:57,280 ambapo uwiano sawa na sifuri. 1328 01:03:57,280 --> 01:04:03,050 Hivyo kufuta safu zote kutoka akaunti ya ambapo uwiano ni zero. 1329 01:04:03,050 --> 01:04:04,300 Maswali yoyote ya haya? 1330 01:04:04,300 --> 01:04:08,840 1331 01:04:08,840 --> 01:04:10,260 Wanataka foleni? 1332 01:04:10,260 --> 01:04:11,200 >> DAVID J. Malan: Foleni mwongozo. 1333 01:04:11,200 --> 01:04:17,110 Hivyo katika hii moja, tuliwapa kiasi fulani muundo familiar kwamba sisi kutalii a 1334 01:04:17,110 --> 01:04:20,450 kidogo katika darasa pamoja ya structs, ambayo ilikuwa data 1335 01:04:20,450 --> 01:04:21,910 muundo kuhusiana katika roho. 1336 01:04:21,910 --> 01:04:24,670 tofauti ingawa kwa foleni ni kwamba alikuwa kwa namna fulani kukumbuka ambao 1337 01:04:24,670 --> 01:04:27,900 ilikuwa mbele ya foleni, katika kubwa sehemu ili tuweze kufanya zaidi 1338 01:04:27,900 --> 01:04:30,530 matumizi bora ya kumbukumbu, angalau kama tungetumia safu. 1339 01:04:30,530 --> 01:04:35,460 >> Kwa sababu wanakumbuka, kama tuna safu, ikiwa kwa mfano, hii ni mbele ya 1340 01:04:35,460 --> 01:04:38,470 foleni, kama mimi kupata katika foleni hapa, na kisha mtu anapata katika line 1341 01:04:38,470 --> 01:04:42,710 nyuma yangu, nyuma yangu, nyuma yangu, na mtu mmoja hatua nje ya mstari, 1342 01:04:42,710 --> 01:04:45,930 anaweza, kama sisi kuona baadhi ya binadamu yetu kujitolea katika darasa, na kila mtu 1343 01:04:45,930 --> 01:04:47,100 kuhama kwa njia hii. 1344 01:04:47,100 --> 01:04:50,880 Lakini kwa ujumla, baada ya kila mtu kufanya kitu si matumizi bora ya wakati 1345 01:04:50,880 --> 01:04:54,600 katika mpango, kwa sababu ina maana yako algorithm ni mbio katika kile 1346 01:04:54,600 --> 01:04:56,520 asymptotic mbio wakati? 1347 01:04:56,520 --> 01:04:57,420 Ni linear. 1348 01:04:57,420 --> 01:04:59,600 >> Na mimi kuhisi kama kwamba aina ya kijinga. 1349 01:04:59,600 --> 01:05:02,890 Kama mtu mwingine katika line ni karibu mtu ambaye wanatakiwa kwenda katika 1350 01:05:02,890 --> 01:05:04,660 kuhifadhi, hawana wote wana hoja pamoja. 1351 01:05:04,660 --> 01:05:08,200 Tu basi mtu huyo kuwa kuwang'oa wakati unakuja, kwa mfano. 1352 01:05:08,200 --> 01:05:09,870 Ili tuweze kuokoa muda kidogo huko. 1353 01:05:09,870 --> 01:05:14,840 Na kufanya hivyo kwamba kuwa, njia kuwa kichwa cha foleni au 1354 01:05:14,840 --> 01:05:18,060 mbele ya foleni ni kwenda kuendelea hoja zaidi na zaidi 1355 01:05:18,060 --> 01:05:23,340 katika safu na hatimaye nguvu kweli wrap kuzunguka kama sisi ni kutumia 1356 01:05:23,340 --> 01:05:25,790 safu ya kuhifadhi watu katika foleni hii. 1357 01:05:25,790 --> 01:05:28,390 Hivyo unaweza karibu kufikiri ya safu kama data mviringo 1358 01:05:28,390 --> 01:05:29,880 muundo kwa maana ya kwamba. 1359 01:05:29,880 --> 01:05:33,970 >> Hivyo kwa namna fulani na kuweka wimbo wa ukubwa wa au kweli mwisho wa ni 1360 01:05:33,970 --> 01:05:36,250 na kisha ambapo mwanzo wa ni. 1361 01:05:36,250 --> 01:05:39,490 Hivyo sisi kupendekeza kwamba kutangaza moja foleni hiyo, wito 1362 01:05:39,490 --> 01:05:41,330 ni q, barua moja tu. 1363 01:05:41,330 --> 01:05:44,570 Kisha sisi kupendekeza kwamba mbele kuwa na kuanzishwa kwa zero na kwamba ukubwa 1364 01:05:44,570 --> 01:05:45,470 kuanzishwa kwa sifuri. 1365 01:05:45,470 --> 01:05:47,770 >> Hivyo sasa hivi, kuna kitu ndani ya foleni hiyo. 1366 01:05:47,770 --> 01:05:50,910 Na tunakuomba kukamilisha utekelezaji wa enqueue chini katika 1367 01:05:50,910 --> 01:05:55,250 namna ambayo kazi anaongeza n kwa mwisho wa q na kisha anarudi kweli. 1368 01:05:55,250 --> 01:05:58,690 Lakini kama q ni full au hasi, kazi badala yake kurudi uongo. 1369 01:05:58,690 --> 01:06:01,060 Na tuliwapa wanandoa ya mawazo. 1370 01:06:01,060 --> 01:06:04,320 Lakini wao siyo kweli functionally husika, tu kwamba bool ipo, 1371 01:06:04,320 --> 01:06:06,690 kwa sababu, kitaalam, bool haina zipo katika C kama wewe ni pamoja na 1372 01:06:06,690 --> 01:06:07,310 baadhi ya header file. 1373 01:06:07,310 --> 01:06:09,350 Ili mara tu kuhakikisha kuna walikuwa hakuna ni hii hila 1374 01:06:09,350 --> 01:06:10,940 swali aina ya kitu. 1375 01:06:10,940 --> 01:06:16,280 >> Hivyo enqueue, sisi mapendekezo katika sampuli ufumbuzi wa kutekeleza kama ifuatavyo. 1376 01:06:16,280 --> 01:06:20,420 Moja, sisi kwanza kuangalia urahisi, chini ya kunyongwa matunda. 1377 01:06:20,420 --> 01:06:23,820 Kama foleni ni kamili au idadi hiyo wewe ni kujaribu kuingiza ni chini ya 1378 01:06:23,820 --> 01:06:26,380 kuliko sifuri, ambayo sisi alisema katika vipimo ya tatizo lazima 1379 01:06:26,380 --> 01:06:30,320 si kuruhusiwa, kwa sababu sisi tu wanataka maadili mashirika yasiyo ya hasi, basi lazima 1380 01:06:30,320 --> 01:06:31,640 tu kurudi uongo mara moja. 1381 01:06:31,640 --> 01:06:33,820 Kwa hiyo baadhi ya rahisi makosa kuangalia. 1382 01:06:33,820 --> 01:06:38,720 Kama ingawa unataka kuongeza kuwa halisi posta, alikuwa na kufanya kidogo ya 1383 01:06:38,720 --> 01:06:39,440 kufikiri hapa. 1384 01:06:39,440 --> 01:06:41,330 Na hii ni mahali ambapo ni kidogo annoying kiakili, kwa sababu una 1385 01:06:41,330 --> 01:06:43,000 kufikiri jinsi ya kushughulikia wraparound. 1386 01:06:43,000 --> 01:06:46,870 >> Lakini kadhalika ya wazo hapa kwamba ya maslahi kwetu ni kwamba wraparound 1387 01:06:46,870 --> 01:06:51,480 mara nyingi ina maana msimu hesabu na operator mod, upande asilimia, 1388 01:06:51,480 --> 01:06:55,140 ambapo unaweza kwenda kutoka thamani kubwa nyuma hadi kufikia sifuri na kisha moja na mbili na 1389 01:06:55,140 --> 01:06:58,650 tatu na kisha nyuma karibu na sifuri, moja na mbili na tatu na kadhalika 1390 01:06:58,650 --> 01:06:59,380 tena na tena. 1391 01:06:59,380 --> 01:07:02,880 Hivyo njia sisi kupendekeza kufanya hivyo ni kwamba hatutaki index katika 1392 01:07:02,880 --> 01:07:05,850 safu kuitwa idadi ambapo integers yetu uongo. 1393 01:07:05,850 --> 01:07:10,740 Lakini kufika huko, sisi kwanza wanataka kufanya kila kawaida ya foleni ni lakini 1394 01:07:10,740 --> 01:07:14,080 kisha kuongeza kwamba kila mbele ya orodha ni. 1395 01:07:14,080 --> 01:07:17,880 Na athari za kuwa ni kuweka yetu katika nafasi ya haki katika foleni na 1396 01:07:17,880 --> 01:07:20,970 si kudhani kuwa mtu wa kwanza katika line ni mwanzo, ambayo yeye au 1397 01:07:20,970 --> 01:07:24,130 yeye kabisa inaweza kuwa kama sisi walikuwa pia kuhama kila mtu. 1398 01:07:24,130 --> 01:07:26,710 Lakini sisi ni kujenga tu kazi kwa wenyewe kama sisi alichukua 1399 01:07:26,710 --> 01:07:27,800 kwamba njia fulani. 1400 01:07:27,800 --> 01:07:29,330 >> Ili tuweze kuitunza rahisi. 1401 01:07:29,330 --> 01:07:32,180 Sisi kukumbuka kwamba sisi tu Aliongeza int kwa foleni. 1402 01:07:32,180 --> 01:07:35,850 Na kisha sisi tu kurudi kweli. 1403 01:07:35,850 --> 01:07:38,560 Wakati huo huo, katika dequeue, sisi aliuliza wewe kufanya yafuatayo. 1404 01:07:38,560 --> 01:07:42,260 Kutekeleza katika namna ambayo dequeues, kwamba ni kuondosha na kurudi, 1405 01:07:42,260 --> 01:07:44,190 int mbele ya foleni. 1406 01:07:44,190 --> 01:07:46,410 Kuondoa int, yatosha kusahau. 1407 01:07:46,410 --> 01:07:47,650 Huna haja ya kupuuza kidogo wake. 1408 01:07:47,650 --> 01:07:48,820 Hivyo ni kweli kuna bado. 1409 01:07:48,820 --> 01:07:51,930 Tu kama data kwenye gari ngumu, sisi ni kupuuza tu ukweli 1410 01:07:51,930 --> 01:07:52,970 kwamba ni huko sasa. 1411 01:07:52,970 --> 01:07:55,520 Na kama q ni tupu, sisi lazima badala kurudi hasi 1. 1412 01:07:55,520 --> 01:07:56,750 Hivyo hii anahisi holela. 1413 01:07:56,750 --> 01:08:01,640 Kwa nini kurudi hasi 1 badala ya uongo? 1414 01:08:01,640 --> 01:08:02,620 Yeah. 1415 01:08:02,620 --> 01:08:05,070 >> Watazamaji: Q ni hifadhi ya maadili mazuri. 1416 01:08:05,070 --> 01:08:10,950 Tangu wewe tu kuhifadhi maadili mazuri katika q, hasi ni kosa. 1417 01:08:10,950 --> 01:08:11,510 >> DAVID J. Malan: OK, kweli. 1418 01:08:11,510 --> 01:08:14,850 Basi, kwa sababu sisi ni tu kuhifadhi chanya maadili au sifuri, basi ni faini ya 1419 01:08:14,850 --> 01:08:18,050 kurudi thamani hasi kama mwangalizi thamani, alama maalum. 1420 01:08:18,050 --> 01:08:21,630 Lakini wewe ni marudio ya andiko historia huko, kwa sababu sababu tuko tu 1421 01:08:21,630 --> 01:08:25,890 kurudi maadili mashirika yasiyo ya hasi ni kwa sababu tunataka 1422 01:08:25,890 --> 01:08:27,670 na thamani mwangalizi. 1423 01:08:27,670 --> 01:08:32,617 Hivyo zaidi hasa, kwa nini siyo tu kurudi uongo katika kesi ya makosa? 1424 01:08:32,617 --> 01:08:33,099 Yeah. 1425 01:08:33,099 --> 01:08:35,510 >> Watazamaji: You wameweza kushindwa kurudi integer. 1426 01:08:35,510 --> 01:08:36,630 >> DAVID J. Malan: Hasa. 1427 01:08:36,630 --> 01:08:38,569 Na hii ni ambapo C anapata pretty constraining. 1428 01:08:38,569 --> 01:08:40,590 Kama wewe ni kusema wewe ni kwenda kurudi int, nimepata 1429 01:08:40,590 --> 01:08:41,279 kurudi int. 1430 01:08:41,279 --> 01:08:43,689 Huwezi kupata dhana na kuanza kurudi bool au kuelea au 1431 01:08:43,689 --> 01:08:45,040 kamba au kitu kama hicho. 1432 01:08:45,040 --> 01:08:49,370 Sasa, wakati huo huo, JavaScript na PHP na lugha nyingine unaweza, kwa kweli, 1433 01:08:49,370 --> 01:08:51,310 wewe kurudi mbalimbali aina ya maadili. 1434 01:08:51,310 --> 01:08:54,819 Na kwamba kweli anaweza kuwa na manufaa, ambapo unaweza kurudi ints chanya, zeros, 1435 01:08:54,819 --> 01:08:59,439 ints hasi, au uongo au null hata kwa ishara ya makosa. 1436 01:08:59,439 --> 01:09:01,890 Lakini hatuna kwamba versatility katika C. 1437 01:09:01,890 --> 01:09:04,569 >> Hivyo, pamoja na dequeue, je, sisi kupendekeza kufanya ni - 1438 01:09:04,569 --> 01:09:07,350 1439 01:09:07,350 --> 01:09:09,830 >> Rob BOWDEN: Unaweza kurudi uongo. 1440 01:09:09,830 --> 01:09:13,189 Ni tu kwamba uongo ni hash kufafanua uongo na sifuri. 1441 01:09:13,189 --> 01:09:16,000 Hivyo kama wewe kurudi uongo, wewe ni kurudi sifuri. 1442 01:09:16,000 --> 01:09:25,470 Na zero ni kitu halali katika foleni zetu, ambapo hasi 1 si kama 1443 01:09:25,470 --> 01:09:27,000 uongo kilichotokea kuwa hasi 1. 1444 01:09:27,000 --> 01:09:29,972 Lakini lazima hata haja ya kujua kwamba. 1445 01:09:29,972 --> 01:09:32,399 >> DAVID J. Malan: Hiyo ni kwa nini mimi si kusema hivyo. 1446 01:09:32,399 --> 01:09:36,450 >> Rob BOWDEN: Lakini haikuwa kweli kwamba huwezi kurudi uongo. 1447 01:09:36,450 --> 01:09:37,700 >> DAVID J. Malan: Uhakika. 1448 01:09:37,700 --> 01:09:40,920 1449 01:09:40,920 --> 01:09:44,240 Hivyo dequeue, taarifa sisi kukubali utupu kama hoja yake. 1450 01:09:44,240 --> 01:09:45,479 Na kwamba kwa sababu sisi siyo kupita kitu chochote in 1451 01:09:45,479 --> 01:09:48,359 Sisi tu unataka kuondoa hiki mbele ya foleni. 1452 01:09:48,359 --> 01:09:49,819 Hivyo jinsi gani sisi kwenda juu ya kufanya hii? 1453 01:09:49,819 --> 01:09:51,290 Naam, kwanza, hebu kufanya hivyo haraka sanity kuangalia. 1454 01:09:51,290 --> 01:09:53,350 Kama foleni ukubwa ni 0, kuna hakuna kazi kufanyika. 1455 01:09:53,350 --> 01:09:54,210 Kurudi hasi 1. 1456 01:09:54,210 --> 01:09:54,800 Kufanyika. 1457 01:09:54,800 --> 01:09:56,340 Hivyo kwamba ni mistari michache ya mpango wangu. 1458 01:09:56,340 --> 01:09:58,180 Hivyo mistari minne tu kubaki. 1459 01:09:58,180 --> 01:10:01,310 >> Hivyo hapa mimi kuamua kuongezwa kawaida. 1460 01:10:01,310 --> 01:10:04,620 Na decrementing ukubwa ufanisi ina maana kwamba mimi nina kusahau 1461 01:10:04,620 --> 01:10:06,010 kitu ni huko. 1462 01:10:06,010 --> 01:10:09,910 Lakini mimi pia kuwa na update ambapo mbele ya idadi ni. 1463 01:10:09,910 --> 01:10:11,620 Hivyo kufanya hivyo, mimi haja kufanya mambo mawili. 1464 01:10:11,620 --> 01:10:16,390 Mimi kwanza haja ya kukumbuka nini idadi ni mbele ya foleni, 1465 01:10:16,390 --> 01:10:17,860 kwa sababu mimi haja ya kurudi kitu hicho. 1466 01:10:17,860 --> 01:10:20,910 Basi, mimi sitaki ajali kusahau kuhusu hilo na kisha overwrite. 1467 01:10:20,910 --> 01:10:22,840 Mimi tu kwenda kukumbuka katika int. 1468 01:10:22,840 --> 01:10:27,310 >> Na sasa, nataka update q.front kuwa q.front 1. 1469 01:10:27,310 --> 01:10:30,070 Hivyo kama hii alikuwa mtu wa kwanza katika line, sasa, nataka kufanya plus 1 kwa 1470 01:10:30,070 --> 01:10:31,930 uhakika katika mtu mwingine katika line. 1471 01:10:31,930 --> 01:10:33,420 Lakini nina kushughulikia kwamba wraparound. 1472 01:10:33,420 --> 01:10:37,270 Na kama uwezo ni mara kwa mara kimataifa, ambayo inaenda naomba kuhakikisha 1473 01:10:37,270 --> 01:10:41,140 kama mimi uhakika na mtu wa mwisho sana katika line, operesheni modulo kuleta 1474 01:10:41,140 --> 01:10:43,840 mimi nyuma kwa sifuri katika mbele ya foleni. 1475 01:10:43,840 --> 01:10:46,050 Na kwamba Hushughulikia wraparound hapa. 1476 01:10:46,050 --> 01:10:48,950 Na kisha mimi kuendelea na kurudi n. 1477 01:10:48,950 --> 01:10:51,530 >> Sasa, madhubuti kusema, mimi si na kutangaza n. 1478 01:10:51,530 --> 01:10:53,880 Mimi hakuwa na kunyakua hiyo na kuhifadhi muda, kwa sababu thamani ni 1479 01:10:53,880 --> 01:10:54,740 bado yapo. 1480 01:10:54,740 --> 01:10:57,490 Ili niweze tu kufanya hesabu sahihi kurudi mkuu wa zamani 1481 01:10:57,490 --> 01:10:58,450 ya foleni. 1482 01:10:58,450 --> 01:11:01,850 Lakini mimi tu waliona kuwa hii ilikuwa wazi zaidi kwa kweli kunyakua int, kuiweka 1483 01:11:01,850 --> 01:11:04,320 katika n, na kisha kurudi kwamba kwa ajili uwazi lakini 1484 01:11:04,320 --> 01:11:05,735 si madhubuti muhimu. 1485 01:11:05,735 --> 01:11:09,313 1486 01:11:09,313 --> 01:11:12,130 Psst. 1487 01:11:12,130 --> 01:11:13,410 Wao ni wote semekana katika kichwa changu. 1488 01:11:13,410 --> 01:11:15,940 1489 01:11:15,940 --> 01:11:19,110 >> Rob BOWDEN: Kwa hiyo swali la kwanza ni mti binary tatizo. 1490 01:11:19,110 --> 01:11:22,140 Hivyo swali la kwanza ni, sisi ni kutokana na idadi haya. 1491 01:11:22,140 --> 01:11:27,160 Na tunataka kwa namna fulani Insert yao katika nodes haya kama kwamba ni 1492 01:11:27,160 --> 01:11:30,110 halali binary search mti. 1493 01:11:30,110 --> 01:11:36,260 Hivyo jambo moja kukumbuka kuhusu miti binary search ni kwamba si 1494 01:11:36,260 --> 01:11:39,800 tu kwamba kitu kwa upande wa kushoto ni kidogo na kitu 1495 01:11:39,800 --> 01:11:41,120 haki ni kubwa zaidi. 1496 01:11:41,120 --> 01:11:44,580 Inahitaji kuwa mti mzima kwa kushoto ni kidogo, na mti mzima 1497 01:11:44,580 --> 01:11:45,740 upande wa kulia ni kubwa zaidi. 1498 01:11:45,740 --> 01:11:55,260 >> Basi, ikiwa mimi kuweka 34 hapa juu, na kisha Mimi kuweka 20 hapa, hivyo kwamba ni halali hivyo 1499 01:11:55,260 --> 01:11:56,970 mbali, kwa sababu 34 hapa up. 1500 01:11:56,970 --> 01:11:57,920 20 ni kwenda upande wa kushoto. 1501 01:11:57,920 --> 01:11:58,950 Hivyo kwamba ni kidogo. 1502 01:11:58,950 --> 01:12:03,640 Lakini siwezi kisha kuweka 59 hapa, kwa sababu ingawa 59 ni juu ya haki ya 20, 1503 01:12:03,640 --> 01:12:06,140 bado ni upande wa kushoto wa 34. 1504 01:12:06,140 --> 01:12:10,760 Hivyo, pamoja na kwamba kikwazo katika akili, njia rahisi ya pengine kutatua hili 1505 01:12:10,760 --> 01:12:14,330 tatizo ni aina tu ya namba hizi - 1506 01:12:14,330 --> 01:12:18,720 hivyo 20, 34, 36, 52, 59, 106. 1507 01:12:18,720 --> 01:12:21,640 Na kisha kuingiza wale kutoka kushoto kwenda kulia. 1508 01:12:21,640 --> 01:12:23,390 >> Hivyo 20 huenda hapa. 1509 01:12:23,390 --> 01:12:24,630 34 huenda hapa. 1510 01:12:24,630 --> 01:12:25,830 36 huenda hapa. 1511 01:12:25,830 --> 01:12:29,360 52, 59, 106. 1512 01:12:29,360 --> 01:12:34,730 Na wewe pia inaweza kuwa figured nje na baadhi kuziba katika na kutambua, 1513 01:12:34,730 --> 01:12:38,830 oh, kusubiri, sina idadi ya kutosha kujaza hii katika zaidi ya hapa. 1514 01:12:38,830 --> 01:12:42,170 Hivyo mimi haja ya reshift nini wangu njia kumbuka ni kwenda kuwa. 1515 01:12:42,170 --> 01:12:47,490 Lakini taarifa kwamba katika fainali tatu, kama kusoma kutoka kushoto kwenda kulia, ni katika 1516 01:12:47,490 --> 01:12:48,740 kuongeza utaratibu. 1517 01:12:48,740 --> 01:12:52,150 1518 01:12:52,150 --> 01:12:56,540 >> Basi sasa, tunataka kutangaza kile struct ni kwenda kuwa kwa 1519 01:12:56,540 --> 01:12:58,300 nodes katika mti huu. 1520 01:12:58,300 --> 01:13:02,720 Basi je, tunahitaji katika mti binary? 1521 01:13:02,720 --> 01:13:05,830 Hivyo tuna thamani ya aina int, hivyo baadhi ya thamani int. 1522 01:13:05,830 --> 01:13:07,220 Sijui nini sisi inayoitwa katika ufumbuzi - 1523 01:13:07,220 --> 01:13:08,500 int n. 1524 01:13:08,500 --> 01:13:13,570 Tunahitaji pointer kwa mtoto wa kushoto na pointer kwa mtoto wa kulia. 1525 01:13:13,570 --> 01:13:17,540 Hivyo ni kwenda kwa kuangalia kama hii. 1526 01:13:17,540 --> 01:13:20,510 Na kutakuwa na kweli kuangalia kabla ya lini doubly-wanaohusishwa 1527 01:13:20,510 --> 01:13:25,090 orodha ya mambo, hivyo taarifa - 1528 01:13:25,090 --> 01:13:27,860 Mimi nina kwenda na kitabu yote njia ya nyuma chini ya tatizo 11. 1529 01:13:27,860 --> 01:13:30,980 1530 01:13:30,980 --> 01:13:36,390 >> Hivyo taarifa inaonekana kufanana na hii, ila sisi tu kutokea kwa kuwaita hawa 1531 01:13:36,390 --> 01:13:38,590 majina tofauti. 1532 01:13:38,590 --> 01:13:41,440 Bado tuna integer thamani na kuyatumia mbili. 1533 01:13:41,440 --> 01:13:44,850 Ni kwamba tu badala ya kutibu kuyatumia kama akizungumzia jambo la pili 1534 01:13:44,850 --> 01:13:47,955 na kitu uliopita, sisi ni kutibu kuyatumia kwa uhakika na mtoto wa kushoto 1535 01:13:47,955 --> 01:13:49,205 na mtoto wa kulia. 1536 01:13:49,205 --> 01:13:57,372 1537 01:13:57,372 --> 01:13:57,860 OK. 1538 01:13:57,860 --> 01:13:59,650 Hivyo kwamba ni struct yetu nodi. 1539 01:13:59,650 --> 01:14:03,920 Na sasa, kazi tu tunahitaji kutekeleza kwa hii ni tindanga, ambayo 1540 01:14:03,920 --> 01:14:08,320 tunataka kwenda juu ya mti, uchapishaji nje maadili ya mti katika utaratibu. 1541 01:14:08,320 --> 01:14:15,241 >> Ili kuangalia hapa, tunataka unataka magazeti nje 20, 34, 36, 52, 59, na 106. 1542 01:14:15,241 --> 01:14:17,970 Je, sisi kukamilisha kwamba? 1543 01:14:17,970 --> 01:14:18,890 Hivyo ni pretty sawa. 1544 01:14:18,890 --> 01:14:22,910 Kama aliona katika mtihani zamani tatizo kwamba alitaka magazeti nje 1545 01:14:22,910 --> 01:14:25,940 mti mzima kwa koma katika kati ya kila kitu, ni kweli hata 1546 01:14:25,940 --> 01:14:27,320 rahisi zaidi kuliko hiyo. 1547 01:14:27,320 --> 01:14:30,950 Hivyo hapa ni ufumbuzi. 1548 01:14:30,950 --> 01:14:33,110 Hii ilikuwa kwa kiasi kikubwa rahisi kama alifanya hivyo recursively. 1549 01:14:33,110 --> 01:14:36,650 Sijui kama kuna mtu alijaribu kufanya hivyo iteratively. 1550 01:14:36,650 --> 01:14:38,340 >> Lakini kwanza, tuna kesi yetu ya msingi. 1551 01:14:38,340 --> 01:14:39,660 Nini kama mzizi ni null? 1552 01:14:39,660 --> 01:14:40,610 Kisha tuko tu kwenda na kurudi. 1553 01:14:40,610 --> 01:14:42,300 Hatutaki magazeti kitu chochote. 1554 01:14:42,300 --> 01:14:45,940 Mwingine tunakwenda tindanga recursively chini. 1555 01:14:45,940 --> 01:14:48,140 Magazeti nzima kushoto subtree. 1556 01:14:48,140 --> 01:14:51,440 Hivyo magazeti kila kitu kidogo kuliko thamani wangu wa sasa. 1557 01:14:51,440 --> 01:14:53,930 Na basi mimi nina kwenda magazeti mwenyewe. 1558 01:14:53,930 --> 01:14:57,310 Na kisha mimi nina kwenda recurse chini yangu nzima haki ya subtree, hivyo kila kitu 1559 01:14:57,310 --> 01:14:58,810 zaidi ya thamani yangu. 1560 01:14:58,810 --> 01:15:03,870 Na hii ni kwenda magazeti kila kitu katika utaratibu. 1561 01:15:03,870 --> 01:15:05,860 Maswali juu ya jinsi hii kweli kutimiza hiyo? 1562 01:15:05,860 --> 01:15:09,892 1563 01:15:09,892 --> 01:15:12,545 >> Watazamaji: Nina swali juu ya [inaudible]. 1564 01:15:12,545 --> 01:15:15,090 1565 01:15:15,090 --> 01:15:23,550 >> Rob BOWDEN: Hivyo njia moja ya inakaribia tatizo lolote kujirudia ni kufikiri tu 1566 01:15:23,550 --> 01:15:26,275 kuhusu hilo kama una kufikiri juu ya mambo yote kona kesi. 1567 01:15:26,275 --> 01:15:32,150 1568 01:15:32,150 --> 01:15:38,110 Hivyo kufikiria kwamba tunataka magazeti mti chote. 1569 01:15:38,110 --> 01:15:42,030 Hivyo wote sisi ni kwenda kuzingatia ni node fulani - 1570 01:15:42,030 --> 01:15:43,740 36. 1571 01:15:43,740 --> 01:15:47,420 wito kujirudia, sisi kujifanya wale tu kazi. 1572 01:15:47,420 --> 01:15:54,000 Hivyo hapa, wito huu kujirudia kwa tindanga, sisi bila hata kufikiria 1573 01:15:54,000 --> 01:15:58,640 kuhusu hilo, tu apitaye kushoto tatu, kufikiria kwamba tayari Prints 20 1574 01:15:58,640 --> 01:16:00,730 na 34 kwa ajili yetu. 1575 01:16:00,730 --> 01:16:03,350 Na wakati sisi hatimaye recursively kuwaita tindanga juu ya 1576 01:16:03,350 --> 01:16:07,890 haki, ambayo kwa usahihi magazeti 52, 59, na 106 kwa ajili yetu. 1577 01:16:07,890 --> 01:16:13,620 >> Hivyo kutokana na kwamba hii inaweza magazeti 20, 34, na wengine wanaweza magazeti 52, 59, 108, 1578 01:16:13,620 --> 01:16:17,180 wote tunahitaji kuwa na uwezo wa kufanya ni magazeti wenyewe katika katikati ya kwamba. 1579 01:16:17,180 --> 01:16:21,250 Hivyo magazeti kila kitu mbele yetu. 1580 01:16:21,250 --> 01:16:27,710 Magazeti wenyewe, hivyo magazeti node sasa 36, printf mara kwa mara, na kisha 1581 01:16:27,710 --> 01:16:31,170 magazeti kila kitu baada ya sisi. 1582 01:16:31,170 --> 01:16:32,730 >> DAVID J. Malan: Hii ni pale ambapo kujirudia anapata kweli ni nzuri. 1583 01:16:32,730 --> 01:16:36,270 Ni hatua hii ya ajabu ya imani ambapo kufanya tiniest kidogo ya kazi. 1584 01:16:36,270 --> 01:16:38,460 Na kisha basi mtu mwingine kufanya mapumziko. 1585 01:16:38,460 --> 01:16:40,180 Na kwamba mtu mwingine ni, hazijaingizwa, wewe. 1586 01:16:40,180 --> 01:16:44,260 1587 01:16:44,260 --> 01:16:48,360 Hivyo kwa pointi kubwa brownie, kama kitabu juu ya maswali - 1588 01:16:48,360 --> 01:16:50,530 >> Rob BOWDEN: On maswali? 1589 01:16:50,530 --> 01:16:53,490 >> DAVID J. Malan: Na chini kidogo kwa idadi, haina mtu yeyote kujua ambapo 1590 01:16:53,490 --> 01:16:55,190 namba hizi kuja kutoka? 1591 01:16:55,190 --> 01:16:56,610 >> Rob BOWDEN: Nina halisi hakuna wazo. 1592 01:16:56,610 --> 01:16:59,794 >> DAVID J. Malan: Wao kuonekana katika jaribio. 1593 01:16:59,794 --> 01:17:01,150 >> Watazamaji: Je wao idadi hiyo? 1594 01:17:01,150 --> 01:17:01,910 >> DAVID J. Malan: Wale idadi. 1595 01:17:01,910 --> 01:17:03,260 Pasaka kidogo mayai. 1596 01:17:03,260 --> 01:17:08,100 Hivyo kwa wale wa wewe kuangalia online katika nyumbani, kama unaweza kutuambia kupitia barua pepe kwa 1597 01:17:08,100 --> 01:17:12,680 heads@CS50.net nini maana ya haya mara kwa mara idadi sita ni 1598 01:17:12,680 --> 01:17:18,560 katika Quiz 1, sisi akufungulieni ninyi kwa makini ajabu katika mwisho 1599 01:17:18,560 --> 01:17:21,610 hotuba na dhiki mpira. 1600 01:17:21,610 --> 01:17:25,460 1601 01:17:25,460 --> 01:17:27,790 Nice, hila. 1602 01:17:27,790 --> 01:17:29,570 >> Rob BOWDEN: Maswali mwisho kuhusu jambo lolote juu ya jaribio? 1603 01:17:29,570 --> 01:17:32,608