1 00:00:00,000 --> 00:00:12,610 2 00:00:12,610 --> 00:00:12,900 >> DAVID J. Malan: Nu labi. 3 00:00:12,900 --> 00:00:16,790 Tik laipni pirmo CS50 līķa sekcija uz viktorīnas. 4 00:00:16,790 --> 00:00:18,340 Mēs domājam, ka mēs iezvanīt šī tradīcija šogad. 5 00:00:18,340 --> 00:00:20,960 Un šī būs iespēja staigāt pa 6 00:00:20,960 --> 00:00:22,220 risinājumus viktorīnā. 7 00:00:22,220 --> 00:00:26,160 Un mēs paātrināt vai palēnināt, pamatojoties par interesēm, kas šeit. 8 00:00:26,160 --> 00:00:29,730 >> Tātad, jūs, iespējams, šeit, jo jūs esat interesē, kā jūs varētu būt, vai 9 00:00:29,730 --> 00:00:31,170 būtu jāatbild dažus no šīm problēmām. 10 00:00:31,170 --> 00:00:33,300 Tātad, kāpēc nav mēs to apskatīt Šajā nodaļā vispirms? 11 00:00:33,300 --> 00:00:34,450 Tā kļūst stīgas. 12 00:00:34,450 --> 00:00:37,600 Tas tev trīs dažādās versijās no programmas, kas bija, galu galā, 13 00:00:37,600 --> 00:00:39,650 domāts, lai iegūtu virkni no lietotāja. 14 00:00:39,650 --> 00:00:42,530 Vai tas bija, ka bija pa kreisi, lai jums, lai noteiktu. 15 00:00:42,530 --> 00:00:45,150 >> Un mēs jautājām jautājuma 0, pieņemsim, ka versija 1 ir 16 00:00:45,150 --> 00:00:46,400 apkopoti un izpildīts. 17 00:00:46,400 --> 00:00:48,860 Kāpēc varētu programma segfault? 18 00:00:48,860 --> 00:00:51,150 No pirmā acu uzmetiena, kādi ieteikumi par to, kāpēc? 19 00:00:51,150 --> 00:00:54,012 20 00:00:54,012 --> 00:00:54,489 Jā. 21 00:00:54,489 --> 00:00:59,260 >> Mērķauditorija: Tāpēc es atceros redzēt to iepriekšējais piemērs meklē 22 00:00:59,260 --> 00:01:05,506 char * s un redzēt skenēšanas s un redzot, jo tas ir rādītājs, cik 23 00:01:05,506 --> 00:01:07,971 bija tas ietekmē to, ko jūs skenētas? 24 00:01:07,971 --> 00:01:10,940 Tas ir S vai adrese s? 25 00:01:10,940 --> 00:01:11,180 >> DAVID J. Malan: OK. 26 00:01:11,180 --> 00:01:11,480 Labs. 27 00:01:11,480 --> 00:01:14,830 Tātad galu galā, avots jebkuru problēmu ir iespējams, gatavojas samazināt 28 00:01:14,830 --> 00:01:16,210 uz šo mainīgo s. 29 00:01:16,210 --> 00:01:17,280 Un tas ir patiešām mainīgs. 30 00:01:17,280 --> 00:01:19,900 Datu tips šim mainīgajam ir char *, kas nozīmē, ka tas būs 31 00:01:19,900 --> 00:01:22,570 satur adresi raksturs. 32 00:01:22,570 --> 00:01:23,850 Un tur ir ieskats. 33 00:01:23,850 --> 00:01:28,330 Tas notiek, lai apturētu adresi raksturu vai, vispārīgāk, 34 00:01:28,330 --> 00:01:32,110 adrese pirmā rakstura viss bloks rakstzīmju. 35 00:01:32,110 --> 00:01:36,680 >> Bet nozveju, ka skenēšanas s, mērķis ir dzīve, tiek dota adresi un, ņemot vērā 36 00:01:36,680 --> 00:01:40,960 formāta kods, piemēram,% s, lasīt string vērā rieciens 37 00:01:40,960 --> 00:01:42,330 Atmiņas šajā adresē. 38 00:01:42,330 --> 00:01:46,040 Bet tāpēc, ka tur nav vienādības zīme pirms ka semikols par pirmo 39 00:01:46,040 --> 00:01:49,310 līnija koda, jo mums nav reāli piešķirt jebkādu atmiņu 40 00:01:49,310 --> 00:01:53,020 malloc, jo tas nebija reāli piešķirt masīva kāda lieluma, visi 41 00:01:53,020 --> 00:01:57,620 jūs darāt, ir lasījumā lietotāja tastatūru uz dažām pabeigta 42 00:01:57,620 --> 00:02:00,490 atkritumu vērtību, kas ir s pēc noklusējuma. 43 00:02:00,490 --> 00:02:04,480 Tātad izredzes ir, jūs gatavojas segfault ja šī adrese nav tieši tā gadās 44 00:02:04,480 --> 00:02:08,009 būt vērtība, ka jūs varat, Patiesībā, rakstiet. 45 00:02:08,009 --> 00:02:10,889 Tik slikti nepiešķirt atmiņas tur. 46 00:02:10,889 --> 00:02:13,150 >> Tātad jautājums 1, mēs jautājām, pieņemsim, ka versija 2 ir 47 00:02:13,150 --> 00:02:14,230 apkopoti un izpildīts. 48 00:02:14,230 --> 00:02:15,900 Tāpēc, iespējams, šī programma segfault? 49 00:02:15,900 --> 00:02:17,990 Tātad šī ir mazāk buggy. 50 00:02:17,990 --> 00:02:21,470 Un tur tiešām tikai viens acīmredzams veids, kur jūs varat 51 00:02:21,470 --> 00:02:22,810 izraisīt segfault šeit. 52 00:02:22,810 --> 00:02:23,730 Un tas ir tematiska. 53 00:02:23,730 --> 00:02:28,180 Katru reizi, kad mēs izmantojam C atmiņā, ko jūs varētu darīt, lai izraisītu segfault 54 00:02:28,180 --> 00:02:30,718 ar 2 versiju? 55 00:02:30,718 --> 00:02:35,560 >> Mērķauditorija: Ja jūs izmantojat šo ieguldītos virkne, kas ir ilgāks par 49 56 00:02:35,560 --> 00:02:35,975 rakstzīmes. 57 00:02:35,975 --> 00:02:37,260 >> DAVID J. Malan: Tieši tā. 58 00:02:37,260 --> 00:02:41,420 Katru reizi, kad jūs redzat kaut ko fiksētu garumu kad runa ir par masīvu, Jūsu 59 00:02:41,420 --> 00:02:44,650 radara vajadzētu iet off, ka tas varētu būt problemātiska, ja jūs neesat pārbaudīt 60 00:02:44,650 --> 00:02:45,810 robežas masīvu. 61 00:02:45,810 --> 00:02:46,650 Un tas ir problēma šeit. 62 00:02:46,650 --> 00:02:47,910 Mēs joprojām izmanto scanf. 63 00:02:47,910 --> 00:02:52,200 Mēs joprojām izmanto% s, kas nozīmē, mēģiniet lasīt virkni no lietotāja. 64 00:02:52,200 --> 00:02:56,300 Kas notiek, lai būtu jālasa s, kas, šajā brīdī, ir faktiski 65 00:02:56,300 --> 00:02:58,570 adrese rieciens atmiņas vai tā ir līdzvērtīga. 66 00:02:58,570 --> 00:03:02,080 Tas ir vārds no masīva rakstzīmju atmiņas. 67 00:03:02,080 --> 00:03:07,610 >> Bet tieši tā, ka, ja jūs lasīt virkni kas ir garāks par 49 rakstzīmēm, 49 68 00:03:07,610 --> 00:03:10,440 jo jums ir nepieciešams telpu slīpsvītru 0, jūs gatavojas pārplūst 69 00:03:10,440 --> 00:03:11,390 ka buferšķīdums. 70 00:03:11,390 --> 00:03:16,410 Un jūs varētu saņemt Lucky un jāspēj uzrakstīt 51 rakstzīmi, 52, 53. 71 00:03:16,410 --> 00:03:18,560 Bet kādā brīdī, OS teiks, nē. 72 00:03:18,560 --> 00:03:21,270 Tas noteikti nav atmiņas jūs esat atļauts pieskarties. 73 00:03:21,270 --> 00:03:23,380 Un programma būs segfault. 74 00:03:23,380 --> 00:03:26,650 >> Tātad tur, heuristics vajadzētu būt jebkura reizi, kad jūs esat ieguvuši noteikta garuma, jums ir 75 00:03:26,650 --> 00:03:30,150 lai pārliecinātos, ka jūs pārbaudīt garumu un kāds tas ir jūs mēģināt 76 00:03:30,150 --> 00:03:31,090 lasīt to. 77 00:03:31,090 --> 00:03:35,110 >> Mērķauditorija: Tātad, lai atrisinātu, ka jūs varētu ir bijusi paziņojumu pārbaudes faktiski 78 00:03:35,110 --> 00:03:37,140 ir garums lielāks vai mazāks nekā? 79 00:03:37,140 --> 00:03:37,730 >> DAVID J. Malan: Protams. 80 00:03:37,730 --> 00:03:41,706 Jums vienkārši ir stāvoklī ka saka, ja - 81 00:03:41,706 --> 00:03:46,080 vai drīzāk jums nav obligāti zināt iepriekš, cik rakstzīmes 82 00:03:46,080 --> 00:03:49,060 lietotājs gatavojas rakstīt, jo Jums ir vistu un olu. 83 00:03:49,060 --> 00:03:51,860 Nav, kamēr jūs esat lasīt to ar scanf Jūs varat izrēķināt, cik ilgi tas ir. 84 00:03:51,860 --> 00:03:54,500 Bet tajā brīdī, tas ir pārāk vēlu, jo jūs esat jau lasīt to 85 00:03:54,500 --> 00:03:55,710 daži bloka atmiņas. 86 00:03:55,710 --> 00:03:59,590 Tā kā malā, tad CS50 bibliotēka izvairās šis jautājums vispār, atsaukšana 87 00:03:59,590 --> 00:04:01,060 izmantojot fgetc. 88 00:04:01,060 --> 00:04:05,390 Un tā nolasa vienu zīmi vienā reizē, tip-toeing kopā, zinot, ka jums 89 00:04:05,390 --> 00:04:08,060 nevar pārplūdes raksturs, ja jūs lasīt pa vienam. 90 00:04:08,060 --> 00:04:11,580 >> Nozvejas ir ar getstring atsaukšanu ir ka mums ir pastāvīgi atkārtoti izmēra 91 00:04:11,580 --> 00:04:13,590 ka rieciens atmiņas, kas ir tikai sāpes. 92 00:04:13,590 --> 00:04:15,310 Tas ir daudz līniju kodu, lai to izdarītu. 93 00:04:15,310 --> 00:04:18,779 Tāpēc cita pieeja būtu faktiski izmantot brālēns, tāpēc 94 00:04:18,779 --> 00:04:19,790 runāt, un scanf. 95 00:04:19,790 --> 00:04:22,820 Ir varianti daudz no šiem funkcijas, kas faktiski pārbaudīt 96 00:04:22,820 --> 00:04:25,870 garums, cik rakstzīmes Jūs varētu lasīt maksimāli. 97 00:04:25,870 --> 00:04:29,430 Un jūs varētu norādīt, ne lasīt vairāk nekā 50 rakstzīmes. 98 00:04:29,430 --> 00:04:34,110 Lai būtu cita pieeja, bet mazāk uzņem no lielākiem ieguldījumiem. 99 00:04:34,110 --> 00:04:37,040 >> Tātad jautājums 2 jautā, pieņemsim, ka versija 3 tiek apkopoti un izpildīts. 100 00:04:37,040 --> 00:04:39,960 Tāpēc, iespējams, ka programma segfault? 101 00:04:39,960 --> 00:04:42,650 Tātad šī ir faktiski tas pats atbildēt, pat ja tas 102 00:04:42,650 --> 00:04:43,590 izskatās mazliet mīļotājs. 103 00:04:43,590 --> 00:04:46,440 Mēs esam izmantojot malloc, kas jūtas kā mēs dodam sev vairāk iespēju. 104 00:04:46,440 --> 00:04:48,030 Un tad mēs esam atbrīvojot ka atmiņas beigās. 105 00:04:48,030 --> 00:04:49,580 Tas joprojām ir tikai 50 baiti atmiņas. 106 00:04:49,580 --> 00:04:53,620 Tāpēc mēs vēl varētu mēģināt lasīt 51, 52, 1000 bytes. 107 00:04:53,620 --> 00:04:55,830 Tas notiek, lai segfault par tieši tā paša iemesla dēļ. 108 00:04:55,830 --> 00:04:57,530 >> Bet ir vēl viens iemesls, too. 109 00:04:57,530 --> 00:05:03,890 Kas vēl varētu malloc atdevi, turklāt adrese rieciens atmiņas? 110 00:05:03,890 --> 00:05:04,920 Tā varētu atgriezties null. 111 00:05:04,920 --> 00:05:07,560 Un tāpēc, ka mēs esam ne pārbaudot ka mēs varētu darīt kaut ko 112 00:05:07,560 --> 00:05:11,350 stulba cita iemesla dēļ, proti, ka mēs varētu būt stāsta scanf lasīt 113 00:05:11,350 --> 00:05:16,050 lietotāja ievadi no klaviatūras uz 0 vietu, AKA null. 114 00:05:16,050 --> 00:05:18,890 Un tas arī, noteikti būs izraisīt segfault. 115 00:05:18,890 --> 00:05:21,590 Tātad viktorīnu ir mērķi, mēs varētu ir pieņēmuši vienu no tiem, kā 116 00:05:21,590 --> 00:05:22,740 pamatots iemesls. 117 00:05:22,740 --> 00:05:23,420 Viens no tiem ir identiska. 118 00:05:23,420 --> 00:05:25,720 Viens no tiem ir mazliet niansētāk. 119 00:05:25,720 --> 00:05:28,975 >> Visbeidzot, attiecībā uz programmu īstenošanai izmantošana atmiņas, kā darīt versija 2 un 120 00:05:28,975 --> 00:05:30,350 versija 3 atšķiras? 121 00:05:30,350 --> 00:05:35,070 Tātad, par to, ko ir vērts, mēs redzējām šķietami nebeidzamu piegādi ir iespējams 122 00:05:35,070 --> 00:05:35,770 atbildes uz to. 123 00:05:35,770 --> 00:05:39,300 Un starp cilvēku atbildēm, ko mēs bijām cerot, bet mēs pieņēmām citi 124 00:05:39,300 --> 00:05:42,250 lietas, bija daži pieminēts Fakts, ka versija 2 izmanto 125 00:05:42,250 --> 00:05:44,560 tā saukto kaudze. 126 00:05:44,560 --> 00:05:46,710 Versija 3 izmanto kaudze. 127 00:05:46,710 --> 00:05:50,060 Un funkcionāli, tas nav īsti darīt visu, ka daudz atšķirību. 128 00:05:50,060 --> 00:05:54,040 Beigās, dienā, mēs vēl tikai iegūt 50 baiti atmiņas. 129 00:05:54,040 --> 00:05:56,640 >> Bet tas bija viens no iespējamiem risinājumiem ka mēs meklē. 130 00:05:56,640 --> 00:05:59,730 Bet jūs redzēsiet, kā jūs saņemsiet viktorīnas atpakaļ no TFS, ka mēs to izdarījām 131 00:05:59,730 --> 00:06:04,330 pieņemt citus diskusijas par to atšķirīgi izmantošanas atmiņas, kā arī. 132 00:06:04,330 --> 00:06:08,600 Bet kaudze un kaudze būtu bijis viegli atbildēt, lai iet ar. 133 00:06:08,600 --> 00:06:11,150 Kādi jautājumi? 134 00:06:11,150 --> 00:06:12,400 Es jums Rob. 135 00:06:12,400 --> 00:06:18,360 136 00:06:18,360 --> 00:06:20,210 >> ROB BOWDEN: Tātad problēma 4. 137 00:06:20,210 --> 00:06:21,985 Tas ir viens, kur jums bija jāaizpilda in baitu skaitu no visiem 138 00:06:21,985 --> 00:06:23,460 šie dažādie izmantoti. 139 00:06:23,460 --> 00:06:24,830 Tātad pirmā lieta, ko mēs redzam. 140 00:06:24,830 --> 00:06:27,930 Pieņemsim, 32 bitu arhitektūru, patīk šī CS50 ierīces. 141 00:06:27,930 --> 00:06:33,530 Tātad viena no galvenajām lietām, par 32 bitu arhitektūra, kas stāsta mums 142 00:06:33,530 --> 00:06:37,490 tieši tā, cik liels rādītājs, kas notiek būt arhitektūru. 143 00:06:37,490 --> 00:06:43,020 >> Nekavējoties, mēs zinām, ka jebkurš rādītājs veids ir 32-bitu vai 4 baiti. 144 00:06:43,020 --> 00:06:46,010 Tātad, aplūkojot šo tabulu, mezglā * ir rādītājs tipa. 145 00:06:46,010 --> 00:06:47,250 Kas būs 4 baiti. 146 00:06:47,250 --> 00:06:51,640 Struct mezglā *, kas ir burtiski identisks mezglu zvaigzne. 147 00:06:51,640 --> 00:06:53,590 Un tā tas būs 4 baiti. 148 00:06:53,590 --> 00:06:58,270 String, tāpēc tas nav izskatās Pointer vēl, bet typedef, 149 00:06:58,270 --> 00:07:01,590 virkne ir tikai char *, kas ir rādītājs tipa. 150 00:07:01,590 --> 00:07:03,550 Tā, ka būs 4 baiti. 151 00:07:03,550 --> 00:07:06,150 >> Tātad šie trīs ir visi 4 baiti. 152 00:07:06,150 --> 00:07:09,350 Tagad, mezglu un studentu ir nedaudz sarežģītāka. 153 00:07:09,350 --> 00:07:15,160 Tāpēc meklē mezglu un studentu, mēs redzam mezglu kā vesels skaitlis, un rādītājs. 154 00:07:15,160 --> 00:07:18,050 Un students ir divas norādes iekšpusē no tā. 155 00:07:18,050 --> 00:07:23,340 Tāpēc vismaz mūsu gadījumā šeit, kā ka mēs galu galā aprēķinot lielumu 156 00:07:23,340 --> 00:07:27,020 tas struktūrai ir tikai saskaitīt visu kas ir iekšā struktūrai. 157 00:07:27,020 --> 00:07:30,690 >> Tātad mezglu, mums ir vesels skaitlis, kas ir 4 baiti. 158 00:07:30,690 --> 00:07:32,830 Mums ir rādītājs, kas ir 4 baiti. 159 00:07:32,830 --> 00:07:35,820 Un tāpēc viens mezgls iet uzsākt 8 baiti. 160 00:07:35,820 --> 00:07:39,490 Un līdzīgi aprēķina students, mēs esam rādītājs, ka ir 4 baiti un vēl 161 00:07:39,490 --> 00:07:40,770 rādītājs, kas ir 4 baiti. 162 00:07:40,770 --> 00:07:43,180 Tā, kas notiek, lai beigtu ar to, ka 8 baiti. 163 00:07:43,180 --> 00:07:45,480 Tik mezglu un studentu ir 8 baiti. 164 00:07:45,480 --> 00:07:48,950 Un šie trīs ir visi 4 baiti. 165 00:07:48,950 --> 00:07:50,240 Jautājumi par šo? 166 00:07:50,240 --> 00:07:54,640 167 00:07:54,640 --> 00:07:54,990 Jā. 168 00:07:54,990 --> 00:07:58,413 >> Mērķauditorija: Vai tas bija 64-bit arhitektūra, būtu, ka 169 00:07:58,413 --> 00:07:59,880 dubultā visi no tiem? 170 00:07:59,880 --> 00:08:01,790 >> ROB BOWDEN: Tas nebūtu dubultā visi no tiem. 171 00:08:01,790 --> 00:08:05,830 Tā 64-bit arhitektūra, tas atkal izmaiņas, kas būtiski lieta, ka 172 00:08:05,830 --> 00:08:08,910 rādītājs tagad ir 64 biti. 173 00:08:08,910 --> 00:08:09,290 Jā. 174 00:08:09,290 --> 00:08:10,930 Tā rādītājs ir 8 baiti. 175 00:08:10,930 --> 00:08:15,420 Tāpēc tie, kas ir 4 baiti būs 8 baiti. 176 00:08:15,420 --> 00:08:18,617 Students, kas bija divas norādes, labi, tagad tas būs 177 00:08:18,617 --> 00:08:19,800 ir 8 biti, 8 baiti. 178 00:08:19,800 --> 00:08:21,980 Tas notiek, lai 16 baiti. 179 00:08:21,980 --> 00:08:25,710 >> Bet mezgls ir 4 baiti. 180 00:08:25,710 --> 00:08:27,800 Tātad šis rādītājs būs būs 8 baiti. 181 00:08:27,800 --> 00:08:28,930 Tas ir 4 baiti. 182 00:08:28,930 --> 00:08:30,870 Tāpēc mezgls ir tikai gatavojas ir 12 baiti. 183 00:08:30,870 --> 00:08:36,309 184 00:08:36,309 --> 00:08:39,280 Jebkādi citi jautājumi par šo vienu? 185 00:08:39,280 --> 00:08:44,500 Tātad nākamais, tie ir HTTP statusa kodi. 186 00:08:44,500 --> 00:08:48,000 Un jums bija, lai aprakstītu apstākļus saskaņā ar kuru šie pasākumi var 187 00:08:48,000 --> 00:08:49,810 jānosūta atpakaļ uz jums. 188 00:08:49,810 --> 00:08:56,730 viena problēma, ka es dzirdēju dažus skolēnus ir tas, ka viņi mēģināja darīt 189 00:08:56,730 --> 00:08:58,950 kļūdas būt par klienta beigām. 190 00:08:58,950 --> 00:09:02,320 Tātad, kad mēs cenšamies, lai pieprasījumu ar serveri, kaut kas 191 00:09:02,320 --> 00:09:03,820 nepareizi par mūsu beigām. 192 00:09:03,820 --> 00:09:07,660 Bet kopumā, šie kodi ir nosūta atpakaļ uz serveri. 193 00:09:07,660 --> 00:09:11,720 Tāpēc mēs vēlamies, lai noskaidrotu, kas notiek nepareizi vai pa labi uz servera, kas 194 00:09:11,720 --> 00:09:14,280 izraisa šīs lietas jāatdod. 195 00:09:14,280 --> 00:09:18,670 Tātad, kāpēc varētu serverī atgriežas statusa kods 200? 196 00:09:18,670 --> 00:09:19,920 Jebkurš domas? 197 00:09:19,920 --> 00:09:23,360 198 00:09:23,360 --> 00:09:23,730 >> Jā. 199 00:09:23,730 --> 00:09:27,850 Tātad kaut kas par veiksmīgi pieprasījums pārdzīvoja. 200 00:09:27,850 --> 00:09:30,260 Un viņi varēs atgriezties ko jūs lūdza. 201 00:09:30,260 --> 00:09:32,240 Tātad, viss bija labi. 202 00:09:32,240 --> 00:09:35,662 Ko par 302 atrasts? 203 00:09:35,662 --> 00:09:36,618 Jā. 204 00:09:36,618 --> 00:09:39,008 >> Mērķauditorija: serveris meklē par to, ko jūs pieprasījāt. 205 00:09:39,008 --> 00:09:40,442 Bet tā nevarēja atrast. 206 00:09:40,442 --> 00:09:42,850 Tātad tur ir kļūda. 207 00:09:42,850 --> 00:09:47,720 >> ROB BOWDEN: Tātad serveris meklē to, ko jūs vēlējāties. 208 00:09:47,720 --> 00:09:51,682 Tik vienkārši meklē šeit, 302 atrasts, tā varēja atrast. 209 00:09:51,682 --> 00:09:53,035 >> Mērķauditorija: Es atvainojos. 210 00:09:53,035 --> 00:09:54,388 Konstatēts, nozīmē, ka viņi atrast. 211 00:09:54,388 --> 00:09:55,638 Piedodiet. 212 00:09:55,638 --> 00:09:58,120 213 00:09:58,120 --> 00:10:00,160 >> ROB BOWDEN: Līdz 302 atrasts. 214 00:10:00,160 --> 00:10:02,350 Serveris var atrast ko jūs vēlējāties. 215 00:10:02,350 --> 00:10:04,640 >> Mērķauditorija: Bet tas nav attēlot to? 216 00:10:04,640 --> 00:10:08,180 >> ROB BOWDEN: Atšķirība starp šī 302 un 200 ir tāds, ka tas 217 00:10:08,180 --> 00:10:09,280 zina, ko jūs vēlaties. 218 00:10:09,280 --> 00:10:12,000 Bet tas nav tieši tur, kur jums gribēju jautāt. 219 00:10:12,000 --> 00:10:14,580 Tātad 302 ir tipisks novirzīšana. 220 00:10:14,580 --> 00:10:16,510 Tātad jūs pieprasījāt lapu. 221 00:10:16,510 --> 00:10:19,590 Tā zina, ak, es gribu atgriezties jums šo. 222 00:10:19,590 --> 00:10:21,070 Bet tas ir atšķirīgs URL. 223 00:10:21,070 --> 00:10:23,534 Tātad hey, jūs tiešām vēlaties to. 224 00:10:23,534 --> 00:10:26,950 >> DAVID J. Malan: Tas ir gabals, kas teica: ka mēs deva jums, puiši pārorientēt 225 00:10:26,950 --> 00:10:30,830 funkcija, kas izmanto galvenes funkciju kas, savukārt, izdrukāt atrašanās vietu, 226 00:10:30,830 --> 00:10:34,110 resnās zarnas, un pēc tam URL, uz kuru Jūs vēlaties, lai atteiktu lietotājam. 227 00:10:34,110 --> 00:10:37,480 Pat ja jūs neredzat 302 tieši tur, tas ir tas, ko PHP 228 00:10:37,480 --> 00:10:41,550 būtu maģiski Iekļaut galvenes sakot, tieši to, ko Rob tur teica - 229 00:10:41,550 --> 00:10:41,930 atrasts. 230 00:10:41,930 --> 00:10:43,180 Bet iet šeit vietā. 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 Tātad, ko par 403 aizliegti? 234 00:10:47,630 --> 00:10:52,240 235 00:10:52,240 --> 00:10:57,120 >> Mērķauditorija: Es domāju, ka tas, ka serveris būtībā sakot, ka klients 236 00:10:57,120 --> 00:10:59,970 nevar piekļūt mājas lapā. 237 00:10:59,970 --> 00:11:03,260 >> ROB BOWDEN: Tātad, jā. 238 00:11:03,260 --> 00:11:07,670 Nu, tipisks atbilde mēs bijām sagaidot, ir kaut kas līdzīgs, faili 239 00:11:07,670 --> 00:11:08,920 nav chmodded pienācīgi. 240 00:11:08,920 --> 00:11:11,590 Tas ir iespējams, kādos apstākļos Jūs viņus redzēja. 241 00:11:11,590 --> 00:11:18,920 Bet ir iemesls, ka klienta varētu būt pie vainas šeit. 242 00:11:18,920 --> 00:11:20,440 Tur tiešām cita statusa kods - 243 00:11:20,440 --> 00:11:21,210 401. 244 00:11:21,210 --> 00:11:22,820 Tāpēc tie ir ļoti līdzīgi. 245 00:11:22,820 --> 00:11:24,590 >> 401 ir neatļauta. 246 00:11:24,590 --> 00:11:26,130 Un 403 ir aizliegta. 247 00:11:26,130 --> 00:11:31,890 Un tā neatļautu jūs tikai iegūt, ja jūs neesat ienācis 248 00:11:31,890 --> 00:11:34,520 Bet piesakoties varētu nozīmēt ka jums ir tiesības. 249 00:11:34,520 --> 00:11:37,930 Bet, ja jūs esat jau pieteicies, un jūs vēl joprojām nav atļaujas, tad 250 00:11:37,930 --> 00:11:40,140 Jūs varat arī saņemt aizliegta. 251 00:11:40,140 --> 00:11:45,320 Tātad, ja jums ir pieteicies un nav atļauju, aizliegts ir arī 252 00:11:45,320 --> 00:11:47,164 kaut ko jūs varat saņemt. 253 00:11:47,164 --> 00:11:48,900 >> DAVID J. Malan: Un mehānisms kas šīs problēmas parasti 254 00:11:48,900 --> 00:11:53,100 atrisinātas servera ar ko komanda? 255 00:11:53,100 --> 00:11:57,700 Chmod, ja tas ir patiešām ir atļaujas izsniedz uz failu vai direktoriju. 256 00:11:57,700 --> 00:11:59,220 >> ROB BOWDEN: Tad 404 nav atrasts. 257 00:11:59,220 --> 00:12:03,100 258 00:12:03,100 --> 00:12:03,470 Jā. 259 00:12:03,470 --> 00:12:10,150 Tātad, atšķirībā no 302, ja tas nav tieši kur jūs esat jautā, bet zina, ko 260 00:12:10,150 --> 00:12:12,710 Jūs vēlaties, tas, tas vienkārši ir ne jausmas, ko jūs vēlaties. 261 00:12:12,710 --> 00:12:15,648 Un jums nav lūdz kaut ko derīgu. 262 00:12:15,648 --> 00:12:18,580 263 00:12:18,580 --> 00:12:22,310 418 Es esmu tējkanna un pēc tam 500 iekšēja servera. 264 00:12:22,310 --> 00:12:24,870 Tātad, kāpēc jūs varētu saņemt, ka? 265 00:12:24,870 --> 00:12:26,120 >> Tā segfault - 266 00:12:26,120 --> 00:12:28,760 267 00:12:28,760 --> 00:12:30,640 Es tiešām nezinu šķirošanas standarts to. 268 00:12:30,640 --> 00:12:34,850 Bet, ja jūsu PHP kodu bija kaut kas nepareizs tajā, teorētiski, tas varētu 269 00:12:34,850 --> 00:12:39,650 faktiski segfault, tādā gadījumā šis 500 iekšēja servera kļūda, kaut 270 00:12:39,650 --> 00:12:41,400 ir nepareizi ar savu servera konfigurācija. 271 00:12:41,400 --> 00:12:44,320 Vai tur ir sintakses kļūda savu PHP kodu. 272 00:12:44,320 --> 00:12:46,095 Vai kaut kas slikts notiek. 273 00:12:46,095 --> 00:12:48,320 >> DAVID J. Malan: Mums nebija sk segfault Starp dažiem cilvēku atbildes. 274 00:12:48,320 --> 00:12:49,490 Un tehniski, tas varētu notikt. 275 00:12:49,490 --> 00:12:53,820 Bet tas būtu PHP, programma raksta citi cilvēki, kas faktiski 276 00:12:53,820 --> 00:12:57,790 segfaulted, kas tikai tad, ja šie cilvēki ieskrūvē up un rakstīja buggy kodu 277 00:12:57,790 --> 00:13:00,680 viņu tulks būtu PHP pati segfault. 278 00:13:00,680 --> 00:13:06,460 Tātad, pat ja 500 ir kā segfault pēc būtības, tas ir gandrīz vienmēr 279 00:13:06,460 --> 00:13:10,490 rezultāts konfigurācijas failu jautājumu ar jūsu tīmekļa servera vai, kā teica Rob, 280 00:13:10,490 --> 00:13:13,200 sintakses kļūda, tāpat kā jūs nebija aizvērt cenas. 281 00:13:13,200 --> 00:13:16,180 Vai esat pazaudējis semikolu kaut kur. 282 00:13:16,180 --> 00:13:23,677 >> Mērķauditorija: Tātad Shuttle PSET, es domāju, ka tad, kad es to darīju, kad es noklikšķinājuši 283 00:13:23,677 --> 00:13:26,300 pārlūku, bet nekas nāca klajā, tas, ko viņi sauc par baltu lapu. 284 00:13:26,300 --> 00:13:28,056 Bet tas bija tāpēc, ka kodu. 285 00:13:28,056 --> 00:13:29,440 Es domāju, ka bija JavaScript, vai ne? 286 00:13:29,440 --> 00:13:29,770 >> ROB BOWDEN: Jā. 287 00:13:29,770 --> 00:13:31,180 >> Mērķauditorija: Vai šī kļūda vēl joprojām nākas? 288 00:13:31,180 --> 00:13:34,290 >> ROB BOWDEN: Tātad jums nebūtu gotten Šī kļūda, jo viss 289 00:13:34,290 --> 00:13:36,930 no tīmekļa servera viedokļa bija pilnīgi fine. 290 00:13:36,930 --> 00:13:39,090 Bet jūs pieprasījāt index.html. 291 00:13:39,090 --> 00:13:42,000 Jūs pieprasījāt shuttle.js un service.js. 292 00:13:42,000 --> 00:13:44,580 Un tas varēja sekmīgi atgriezties jums visiem par šīm lietām - 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 Tas ir tikai tad, ja jūsu pārlūkprogrammā mēģināja interpretēt JavaScript kodu, kas 296 00:13:49,330 --> 00:13:51,370 tas ir tāpat, pagaidiet, tas nav derīgs JavaScript kļūda. 297 00:13:51,370 --> 00:13:55,720 298 00:13:55,720 --> 00:13:58,210 Kādi citi jautājumi? 299 00:13:58,210 --> 00:14:00,750 Labi. 300 00:14:00,750 --> 00:14:04,120 >> DAVID J. Malan: Tātad nākamais up bija numurs 11. 301 00:14:04,120 --> 00:14:07,610 Un 11 bija scariest par daudz cilvēku. 302 00:14:07,610 --> 00:14:14,620 303 00:14:14,620 --> 00:14:18,570 Tāpēc vissvarīgākā lieta atzīmēt šeit bija tas, ka tas, protams, par to 304 00:14:18,570 --> 00:14:19,840 divkārt saistīts saraksts. 305 00:14:19,840 --> 00:14:23,160 , Bet tas nav tāds pats kā pērn divkārt saistīts saraksts problēmas, 306 00:14:23,160 --> 00:14:27,170 kas nedeva jums brīdinājumu, ka sarakstu varētu, patiesībā, ir nešķirotiem. 307 00:14:27,170 --> 00:14:29,640 >> Tātad fakts, ka saraksts ir nešķirotu un tas, ka šis vārds bija 308 00:14:29,640 --> 00:14:32,930 uzsvērts, ka bija paredzēts, lai sniegtu ka tas ir faktiski vienkāršošana 309 00:14:32,930 --> 00:14:35,430 par to, kas citādi būtu bijis grūtāks problēma 310 00:14:35,430 --> 00:14:36,600 un garāks. 311 00:14:36,600 --> 00:14:40,760 Tik izplatīta kļūda šeit bija gūt vārtus pagājušā gada risinājumu jūsu vienu 312 00:14:40,760 --> 00:14:45,580 peidžeri un tad tikai akli kopēt ka uz leju, kā atbilde, kas ir tiesības 313 00:14:45,580 --> 00:14:48,520 atbildēt uz citu jautājumu līdzīgi garā. 314 00:14:48,520 --> 00:14:51,340 Bet nianses šeit bija šādi. 315 00:14:51,340 --> 00:14:55,200 >> Tik viens, mēs esam mezglu deklarēta un definēta kā parasti šeit. 316 00:14:55,200 --> 00:14:59,230 Tad mēs noteikti saraksts ir globāla rādītājs inicializēts null. 317 00:14:59,230 --> 00:15:02,150 Tad acīmredzot, tur ir divas funkcijas mums ir prototipus šeit, ievietot 318 00:15:02,150 --> 00:15:03,240 un noņemt. 319 00:15:03,240 --> 00:15:06,600 Un tad mums ir dažas parauga kodu šeit darīt ķekars ievietošanas. 320 00:15:06,600 --> 00:15:09,930 Un tad mēs lūdzam Jūs aizpildīt īstenošana ieliktņa tālāk tādā 321 00:15:09,930 --> 00:15:14,380 veidā, ka tas ievieto n uz sarakstu pastāvīgu laiku, arī uzsvēra, 322 00:15:14,380 --> 00:15:15,730 pat tad, ja tas jau ir klāt. 323 00:15:15,730 --> 00:15:20,600 >> Tā skaistums ir iespēja ievietot pastāvīgu laiku, ir, ka tas nozīmē, 324 00:15:20,600 --> 00:15:23,060 ka jums ir jāievieto jaunā mezglu kur? 325 00:15:23,060 --> 00:15:23,690 Uz priekšu. 326 00:15:23,690 --> 00:15:27,760 Tāpēc tas novērš, par laimi, vismaz viens no gadījumiem, kas izmantoti, lai pieprasītu 327 00:15:27,760 --> 00:15:30,520 vēl vairāk rindas kods, kā tas notika pagājušajā gadā un pat klasē, kad mēs 328 00:15:30,520 --> 00:15:34,040 runāja ar šāda veida lieta ar cilvēkiem un ar dažām 329 00:15:34,040 --> 00:15:35,250 verbālās pseido kodu. 330 00:15:35,250 --> 00:15:39,190 Tātad risinājums šeit, pieņemsim izlaist to, ka vienkārši ir redzes On 331 00:15:39,190 --> 00:15:40,480 ekrāns. 332 00:15:40,480 --> 00:15:42,230 >> Ievērojiet, ka mēs darām šādi. 333 00:15:42,230 --> 00:15:45,140 Un arī paziņojums citu vienkāršošanu bija tas, ka pat tad, ja tas ir 334 00:15:45,140 --> 00:15:48,280 jau klāt, tāpēc tas nozīmē, ka pat tad, ja numurs jau ir tur, jūs varat 335 00:15:48,280 --> 00:15:50,280 tikai akli ievietot citā tā kopiju. 336 00:15:50,280 --> 00:15:52,560 Un, ka, too, bija paredzēti, lai vienkāršošana, lai jūs varētu 337 00:15:52,560 --> 00:15:54,940 koncentrēties uz, tiešām, daži vairāk intelektuāli interesanti daļa un 338 00:15:54,940 --> 00:15:58,090 ne tikai daži papildu kļūdu pārbaude ņemot vērā ierobežoto laiku. 339 00:15:58,090 --> 00:16:02,880 >> Tātad šajā parauga šķīduma, mēs piešķirt rādītājs no kreisās puses 340 00:16:02,880 --> 00:16:04,510 otru šeit mezglā. 341 00:16:04,510 --> 00:16:07,190 Tagad saprotam, ka rādītāju, jo Rob teica, ir tikai 32 biti. 342 00:16:07,190 --> 00:16:09,060 Un tas nav faktiski satur adresi, kamēr jūs 343 00:16:09,060 --> 00:16:09,970 piešķirt tai adresi. 344 00:16:09,970 --> 00:16:13,220 Un mēs to darām, ka labās rokas pusē, izmantojot malloc. 345 00:16:13,220 --> 00:16:16,550 Kā labs pilsonis, mēs pārbaudām, ka malloc nav, faktiski, null, lai 346 00:16:16,550 --> 00:16:18,690 mums nav nejauši radīt segfault šeit. 347 00:16:18,690 --> 00:16:22,840 Un jebkurā laikā jūs izmantojat malloc dzīvē, jums vajadzētu pārbaudīt, null, citādi 348 00:16:22,840 --> 00:16:24,090 Jums ir smalks kļūda. 349 00:16:24,090 --> 00:16:28,460 >> Tad mēs sāktu šo null pēc piešķirot n un iepriekšējo un nākamo. 350 00:16:28,460 --> 00:16:32,450 Un šajā gadījumā šeit, es inicializēts iepriekšējā null, jo šī jaunā 351 00:16:32,450 --> 00:16:34,780 mezglā būs jauno sākumā manā sarakstā. 352 00:16:34,780 --> 00:16:37,050 Tāpēc tur būs nekas pirms tam. 353 00:16:37,050 --> 00:16:42,010 Un es gribu, lai būtībā pievienot esošo sarakstu ar jaunu mezglu, ko 354 00:16:42,010 --> 00:16:44,700 nosakot blakus vienāds uzskaitīt sevi. 355 00:16:44,700 --> 00:16:47,120 Bet es neesmu darījis tikai yet. 356 00:16:47,120 --> 00:16:51,780 Tātad, ja pats saraksts jau pastāv, un tur ir vismaz viens mezgls 357 00:16:51,780 --> 00:16:57,070 jau ir, ja tas ir saraksts šeit un es ievietojiet jaunu mezglu šeit, es 358 00:16:57,070 --> 00:17:01,840 ir nepieciešams, lai pārliecinātos, ka mans bijušais mezgls norāda atpakaļ uz savu jauno mezglu, 359 00:17:01,840 --> 00:17:04,260 jo tas ir, atkal, divkārt saistīts saraksts. 360 00:17:04,260 --> 00:17:05,460 >> Tāpēc mēs darām veselība pārbaudītu. 361 00:17:05,460 --> 00:17:10,109 Ja saraksts nav nulle, ja tur ir jau vienu vai vairākiem punktiem tur, tad 362 00:17:10,109 --> 00:17:12,470 piebilst, ka atpakaļ atsauci, lai runāt. 363 00:17:12,470 --> 00:17:15,420 Un tad ir ļoti pēdējā lieta, mums ir nepieciešams to darīt, ir faktiski atjaunot globālo 364 00:17:15,420 --> 00:17:20,329 mainīgo sarakstu sevi norādīt ar šo jauno mezglu. 365 00:17:20,329 --> 00:17:21,790 Jā. 366 00:17:21,790 --> 00:17:26,579 >> Mērķauditorija: In rādītāja bultiņas [Dzirdams] ir vienāds ar null, tas, ka 367 00:17:26,579 --> 00:17:30,420 nodarbojas ar sarakstu, jo saraksts ir nulle? 368 00:17:30,420 --> 00:17:30,596 >> DAVID J. Malan: Nē. 369 00:17:30,596 --> 00:17:34,500 Tas ir tikai man ir proaktīvi uzmanīgi, jo, ja tas ir mans 370 00:17:34,500 --> 00:17:38,730 Sākotnējais saraksts ar varbūt vēl daži mezgliem vairāk nekā šeit, un es esmu ievietojot manu 371 00:17:38,730 --> 00:17:42,380 Jaunais mezglā nekā šeit, tur būs būt nekas vairāk nekā šeit. 372 00:17:42,380 --> 00:17:44,720 Un es gribu, lai attēlotu, ka ideja nosakot iepriekšējā 373 00:17:44,720 --> 00:17:47,740 null par jauno mezglu. 374 00:17:47,740 --> 00:17:51,410 Un, iespējams, ja mans kods ir pareizs un tur nav citu veidu, kā ievietot 375 00:17:51,410 --> 00:17:54,970 mezglu, kas nav šo funkciju, domājams, pat ja sarakstā jau ir 376 00:17:54,970 --> 00:18:00,090 viens vai vairāki mezgli tajā, iespējams, Sarakstā pirmais mezglā, būtu 377 00:18:00,090 --> 00:18:02,750 iepriekšējais rādītājs Null pati. 378 00:18:02,750 --> 00:18:03,550 >> Mērķauditorija: Un tikai pēcpārbaudes. 379 00:18:03,550 --> 00:18:08,139 Iemesls, jūs nodot rādītājs nākamās vienāds sarakstu jūs gūstat rādītāju 380 00:18:08,139 --> 00:18:13,579 Pirms saraksts, ka tā ir vērsta uz nākamo, es domāju - 381 00:18:13,579 --> 00:18:14,980 I Don 't - 382 00:18:14,980 --> 00:18:15,450 tikai saraksti? 383 00:18:15,450 --> 00:18:16,400 >> DAVID J. Malan: Tieši tā. 384 00:18:16,400 --> 00:18:19,400 Un tāpēc pieņemsim patiesībā ir divas lietas šeit tiešām, lai gan 385 00:18:19,400 --> 00:18:22,070 pasūtījums mēs uzskata tos nav diezgan tāds pats kā kodu. 386 00:18:22,070 --> 00:18:26,250 Bet augstā līmenī, ja tas ir sarakstu, un tas ir 32-bit 387 00:18:26,250 --> 00:18:29,560 rādītājs, vienkāršākais scenārijs ir ka tas ir spēkā pēc noklusējuma. 388 00:18:29,560 --> 00:18:33,010 Un domāju, ka es gribu, lai ievietotu numuru 50 bija pirmais numurs. 389 00:18:33,010 --> 00:18:37,640 Tāpēc es esmu gatavojas iet uz priekšu un piešķirt mezglu, kas notiek ar satur 390 00:18:37,640 --> 00:18:38,770 trīs jomas - 391 00:18:38,770 --> 00:18:42,070 n, iepriekšējais un nākamais. 392 00:18:42,070 --> 00:18:44,580 >> Es esmu gatavojas nodot skaits 50 šeit, jo tas būs n. 393 00:18:44,580 --> 00:18:46,130 Tas būs nākamais. 394 00:18:46,130 --> 00:18:48,530 Un tas būs iepriekšējais. 395 00:18:48,530 --> 00:18:50,910 Un tā, ko man darīt šajā gadījumā? 396 00:18:50,910 --> 00:18:53,900 Nu, es esmu tikko veikts līnija 1 šeit. 397 00:18:53,900 --> 00:18:55,400 Pointer n saņem n. 398 00:18:55,400 --> 00:18:57,740 Es pēc tam sakot, iepriekšējā vajadzētu saņemt null. 399 00:18:57,740 --> 00:18:59,470 Tātad šis būs nulle. 400 00:18:59,470 --> 00:19:01,365 Tad es esmu gatavojas teikt nākamo gatavojas saņemt sarakstu. 401 00:19:01,365 --> 00:19:05,150 >> Un tas tikai darbojas labi. 402 00:19:05,150 --> 00:19:06,500 Tas ir null. 403 00:19:06,500 --> 00:19:10,620 Un tāpēc es saku, jaunais mezgls nākamās paaudzes jomā vajadzētu saņemt neatkarīgi no tā. 404 00:19:10,620 --> 00:19:12,570 Tāpēc, ka tā ir vēl viens null tur. 405 00:19:12,570 --> 00:19:14,510 Un tad pēdējā lieta Man ir pārbaudīt šeit. 406 00:19:14,510 --> 00:19:17,870 Ja saraksts nav vienāds ar nulli, bet tas ir vienāds ar nulli, tāpēc mēs izlaist šo 407 00:19:17,870 --> 00:19:18,470 vispār. 408 00:19:18,470 --> 00:19:23,520 Un tā viss man blakus ir saraksts kļūst rādītājs, kas gleznieciski rezultātā 409 00:19:23,520 --> 00:19:25,570 attēlu, piemēram, ka. 410 00:19:25,570 --> 00:19:26,620 Tātad tas ir viens scenārijs. 411 00:19:26,620 --> 00:19:30,490 >> Un viens, ka tu jautā par īpaši ir situācija, piemēram, tas, 412 00:19:30,490 --> 00:19:33,190 kur mums jau ir viena mezglu sarakstu. 413 00:19:33,190 --> 00:19:36,240 Un, ja es dodos atpakaļ uz augšu oriģinālā Problēma paziņojumu, nākamais Mēs 414 00:19:36,240 --> 00:19:39,320 ievietot teiksim ir 34, tikai labad diskusijas. 415 00:19:39,320 --> 00:19:46,210 Tāpēc es esmu gatavojas tikai ērti izdarīt, ka vairāk nekā šeit. 416 00:19:46,210 --> 00:19:47,540 Esmu tikko malloced. 417 00:19:47,540 --> 00:19:49,310 Pieņemsim, ka es esmu pārbaudot null. 418 00:19:49,310 --> 00:19:51,870 >> Tagad es esmu gatavojas, lai sāktu n, ir 34. 419 00:19:51,870 --> 00:19:53,040 Un tas būs n. 420 00:19:53,040 --> 00:19:54,670 Tas būs nākamais. 421 00:19:54,670 --> 00:19:57,100 Un tas būs iepriekšējais. 422 00:19:57,100 --> 00:19:59,370 Pieņemsim, pārliecinieties, ka man nebija saņemt šo atpakaļ. 423 00:19:59,370 --> 00:20:01,110 Iepriekšējais ir pirmajā vietā definīcijā. 424 00:20:01,110 --> 00:20:03,070 Ļaujiet man noteikt šo. 425 00:20:03,070 --> 00:20:04,410 Tas ir iepriekšējais. 426 00:20:04,410 --> 00:20:05,780 Tas ir blakus. 427 00:20:05,780 --> 00:20:08,620 Pat ja tie ir identiski, pieņemsim glabā to konsekventa. 428 00:20:08,620 --> 00:20:09,450 >> Iepriekšējā. 429 00:20:09,450 --> 00:20:11,030 Tas ir blakus. 430 00:20:11,030 --> 00:20:16,310 Tāpēc es tikko malloced manu piezīmi, pārbauda Null, piešķir 34 uz mezglā. 431 00:20:16,310 --> 00:20:17,570 Iepriekšējā izpaužas null. 432 00:20:17,570 --> 00:20:19,480 Lai dod man to. 433 00:20:19,480 --> 00:20:21,010 Nākamais izpaužas sarakstā. 434 00:20:21,010 --> 00:20:22,370 Tāpēc saraksts ir tas. 435 00:20:22,370 --> 00:20:26,520 Tāpēc tas ir tas pats, kas tagad zīmējumu tas arrow, lai tie norādītu uz vienu 436 00:20:26,520 --> 00:20:27,940 pats. 437 00:20:27,940 --> 00:20:30,400 Un tad es esmu pārbaudīt, vai saraksts nav vienāds ar nulli. 438 00:20:30,400 --> 00:20:31,740 Un tas ir ne šoreiz. 439 00:20:31,740 --> 00:20:35,580 Tad es esmu gatavojas darīt sarakstu iepriekšējā izpaužas rādītāju. 440 00:20:35,580 --> 00:20:39,700 >> Tāpēc uzskaitīt iepriekšējā izpaužas PTR. 441 00:20:39,700 --> 00:20:44,300 Tāpēc tas ir sekas, liekot grafisko arrow šeit. 442 00:20:44,300 --> 00:20:46,930 Un tas kļūst nedaudz viļņaina, līnijas. 443 00:20:46,930 --> 00:20:50,780 Un tad, visbeidzot, es atjaunināt sarakstu, lai norādītu uz rādītāju. 444 00:20:50,780 --> 00:20:55,560 Tāpēc tagad tas norāda uz šo puisis. 445 00:20:55,560 --> 00:20:57,170 Un tagad, pieņemsim do ātri veselība pārbaudītu. 446 00:20:57,170 --> 00:20:59,470 >> Šeit ir saraksts, kas ir globālo mainīgo. 447 00:20:59,470 --> 00:21:02,850 Pirmais mezgls ir, protams, 34, jo Es esmu pēc šīs bultiņas. 448 00:21:02,850 --> 00:21:05,210 Un tas ir pareizi, jo es gribu ievietot sākumā saraksta 449 00:21:05,210 --> 00:21:06,070 visi jaunie mezglu. 450 00:21:06,070 --> 00:21:08,860 Viņa nākamais lauka man liek šo puisis. 451 00:21:08,860 --> 00:21:10,710 Ja es glabāt notiek, es hit nākamais ir nulle. 452 00:21:10,710 --> 00:21:11,760 Tāpēc tur vairs sarakstā. 453 00:21:11,760 --> 00:21:14,460 Ja es hit iepriekšējā, man atpakaļ, ja es gaidīt. 454 00:21:14,460 --> 00:21:16,435 >> Tā vēl joprojām ir dažas norādes, protams, manipulēt. 455 00:21:16,435 --> 00:21:19,870 Bet fakts, ka jums bija teicis darīt tas pastāvīgi laikā nozīmē, ka jūs tikai 456 00:21:19,870 --> 00:21:22,910 ir ierobežots vairākas lietas jums ir tiesības to darīt. 457 00:21:22,910 --> 00:21:24,290 Un kas ir šis numurs? 458 00:21:24,290 --> 00:21:25,185 Tas varētu būt viens solis. 459 00:21:25,185 --> 00:21:25,700 Tas varētu būt divi. 460 00:21:25,700 --> 00:21:26,820 Tas varētu būt 1000 pakāpieni. 461 00:21:26,820 --> 00:21:30,500 Bet tas ir ierobežots, kas nozīmē, ka jūs nevarat ir jebkāda veida looping notiek 462 00:21:30,500 --> 00:21:32,010 šeit nav rekursijas, ne cilpas. 463 00:21:32,010 --> 00:21:37,390 Tas ir tikai tagad ir iekodēts līnijas kodu, kā mēs esam šajā paraugā. 464 00:21:37,390 --> 00:21:42,330 >> Tātad nākamais problēma 12 lūdza mūs pabeigt īstenot izdzēst 465 00:21:42,330 --> 00:21:46,740 turpmāk tādā veidā, ka tas noņem n no saraksta lineāro laiku. 466 00:21:46,740 --> 00:21:48,740 Tātad jums ir mazliet vairāk valstīties telpā tagad. 467 00:21:48,740 --> 00:21:52,380 Jūs varat pieņemt, ka n, ja klāt sarakstā, būs klāt 468 00:21:52,380 --> 00:21:53,340 ne vairāk kā vienu reizi. 469 00:21:53,340 --> 00:21:56,770 Un tas arī ir domāts, lai būtu viktorīna balstīta vienkāršojot pieņēmums, tāpēc 470 00:21:56,770 --> 00:21:59,780 ka, ja jūs atradīsiet skaits 50 kaut kur sarakstā, jums nav arī 471 00:21:59,780 --> 00:22:02,890 jāuztraucas par to turpināt atkārtot, meklē katru iespēju 472 00:22:02,890 --> 00:22:06,990 kopiju 50, kas vienkārši nodot uz kādu minutia ierobežotā laikā. 473 00:22:06,990 --> 00:22:10,460 >> Tātad ar novilkt, tas viens bija noteikti grūtāks un vairāk 474 00:22:10,460 --> 00:22:11,640 kodu rakstīt. 475 00:22:11,640 --> 00:22:14,990 Bet pēc pirmā acu uzmetiena, godīgi sakot, tas varētu izskatās milzīgs, un, piemēram, kaut ko 476 00:22:14,990 --> 00:22:17,060 nav veids, kā jūs varētu būt nākt klajā ar uz viktorīnas. 477 00:22:17,060 --> 00:22:22,450 Bet, ja mēs koncentrējamies uz atsevišķiem posmiem, Cerams, ka tā pēkšņi 478 00:22:22,450 --> 00:22:26,060 streikot, ka katrs no šiem atsevišķajiem pasākumi rada acīmredzamu jēga 479 00:22:26,060 --> 00:22:27,080 retrospektīvi. 480 00:22:27,080 --> 00:22:28,200 Tātad, pieņemsim to apskatīt. 481 00:22:28,200 --> 00:22:32,570 >> Tātad, pirmkārt, mēs sāktu rādītāju lai būtu uzskaitīt sevi. 482 00:22:32,570 --> 00:22:36,040 Jo es gribu lineārā laika, tas nozīmē Es esmu gatavojas ir dažas cilpas. 483 00:22:36,040 --> 00:22:39,730 Un kopīgs veids, kā atkārtot vairāk mezgliem saraksta struktūrā vai jebkāda veida 484 00:22:39,730 --> 00:22:43,860 struktūras iteratīvi ir veikt rādītāju uz priekšu no datu 485 00:22:43,860 --> 00:22:46,990 struktūra, un tad sāciet atjaunināšanu to un iet savu ceļu 486 00:22:46,990 --> 00:22:48,650 caur datu struktūru. 487 00:22:48,650 --> 00:22:50,040 Tāpēc es esmu gatavojas darīt tieši to. 488 00:22:50,040 --> 00:22:54,260 >> Bet rādītājs, mana pagaidu mainīgo, nav vienāds ar nulli, pieņemsim 489 00:22:54,260 --> 00:22:55,660 iet uz priekšu un pārbaudīt. 490 00:22:55,660 --> 00:22:56,910 Vai es paveiksies? 491 00:22:56,910 --> 00:23:01,740 Ir n lauks mezglā es esmu šobrīd meklē vienāds ar 492 00:23:01,740 --> 00:23:03,380 numurs, es esmu meklē? 493 00:23:03,380 --> 00:23:05,410 Un ja tā, pieņemsim kaut ko darīt. 494 00:23:05,410 --> 00:23:10,020 Tagad, pamanīt to, ja nosacījums ieskauj visu 495 00:23:10,020 --> 00:23:11,520 Šādas rindas kodu. 496 00:23:11,520 --> 00:23:14,610 Tas ir vienīgais, ko es rūp - atrast virkni jautājumu. 497 00:23:14,610 --> 00:23:18,010 Tāpēc nav cits, kas vienkāršo lietas konceptuāli mazliet. 498 00:23:18,010 --> 00:23:22,040 >> Bet tagad, es sapratu, un jums varētu būt tikai sapratu, tas pēc domāšanas 499 00:23:22,040 --> 00:23:24,720 tai cauri mazliet, tur faktiski divas lietas šeit. 500 00:23:24,720 --> 00:23:28,060 Viens ir, ja mezgls ir at sākot no saraksta, kas 501 00:23:28,060 --> 00:23:31,040 mazliet kaitinošas, jo tas ir īpašs gadījums, jo jums ir galā 502 00:23:31,040 --> 00:23:33,340 ar šo lietu, kas ir vienīgā anomālija. 503 00:23:33,340 --> 00:23:35,720 Visur citur sarakstā, tas pats. 504 00:23:35,720 --> 00:23:38,050 Tur iepriekšējā mezglu un nākamais mezglā, iepriekšējais mezglu, blakus mezglā. 505 00:23:38,050 --> 00:23:40,940 Bet tas puisis ir nedaudz īpašs ja viņš ir sākumā. 506 00:23:40,940 --> 00:23:48,710 >> Tātad, ja rādītājs ir vienāds sarakstu pats par sevi, tādēļ, ja Es sākumā 507 00:23:48,710 --> 00:23:53,960 sarakstu un man ir konstatēts n, man vajag darīt pāris lietas. 508 00:23:53,960 --> 00:23:59,230 Viens, man ir nepieciešams, lai mainītu sarakstu norāda uz nākamo lauku, 50. 509 00:23:59,230 --> 00:24:01,270 Tāpēc domāju, ka es cenšos noņemt 34. 510 00:24:01,270 --> 00:24:03,560 Tātad šis puisis dabūja iet prom tikai brīdi. 511 00:24:03,560 --> 00:24:07,210 >> Tāpēc es esmu gatavojas teikt, sarakstu izpaužas Pointer nākamo. 512 00:24:07,210 --> 00:24:08,570 Nu, tas ir rādītājs. 513 00:24:08,570 --> 00:24:10,360 Nākamais ir vērsta vairāk nekā šeit. 514 00:24:10,360 --> 00:24:17,470 Tāpēc tas mainās šo arrow tiesības Tagad, lai norādītu uz šo puisis šeit. 515 00:24:17,470 --> 00:24:19,580 Tagad, atcerieties, mums ir pagaidu mainīgo. 516 00:24:19,580 --> 00:24:23,520 Tāpēc mēs neesam bāreņiem nekādus mezglus, jo man arī ir šī puisis manā 517 00:24:23,520 --> 00:24:25,010 īstenošanu Noņemt. 518 00:24:25,010 --> 00:24:29,600 Tāpēc tagad, ja saraksts pats par sevi nav null, Man vajag, lai noteiktu mazliet kaut ko. 519 00:24:29,600 --> 00:24:32,690 >> Man vajag, lai tagad, lai pārliecinātos, ka tas bultiņa, , kas iepriekš ir vērsta 520 00:24:32,690 --> 00:24:36,830 50-34, tas ir ieguvuši, lai iet prom, jo, ja es cenšos atbrīvoties 521 00:24:36,830 --> 00:24:41,910 no 34, 50 bija labāk nav saglabāt jebkādu veida atpakaļ atsauce uz to, kā 522 00:24:41,910 --> 00:24:42,820 arrow ierosināts. 523 00:24:42,820 --> 00:24:44,820 Tāpēc es vienkārši darīju šo līniju. 524 00:24:44,820 --> 00:24:46,520 Tātad, tad es esmu darījis. 525 00:24:46,520 --> 00:24:48,040 Šī lieta ir faktiski diezgan viegli. 526 00:24:48,040 --> 00:24:51,010 Nocērtot galvu saraksta ir salīdzinoši vienkārša. 527 00:24:51,010 --> 00:24:52,980 >> Diemžēl, tas ir kaitinošas cits bloks. 528 00:24:52,980 --> 00:24:56,170 Tāpēc tagad man ir izskatīt lietu ja tur ir kaut kas pa vidu. 529 00:24:56,170 --> 00:24:59,880 Bet tas nav pārāk briesmīgi, izņemot par sintaksi, kā šis. 530 00:24:59,880 --> 00:25:03,080 Tātad, ja es neesmu sākumā sarakstu, es esmu kaut kur pa vidu. 531 00:25:03,080 --> 00:25:08,160 Un šī līnija šeit saka, sākums Pie kāda mezglā jūs esat. 532 00:25:08,160 --> 00:25:11,210 533 00:25:11,210 --> 00:25:18,550 Doties uz iepriekšējo mezglu nākamo lauku un norāda, ka rādītāja. 534 00:25:18,550 --> 00:25:20,390 >> Darīsim to ar piktogrammām. 535 00:25:20,390 --> 00:25:21,640 Tas bija kļūst sarežģīti. 536 00:25:21,640 --> 00:25:30,480 537 00:25:30,480 --> 00:25:37,990 Tātad, ja man ir iepriekšējās lauki šeit - Darīsim to - nākamie lauki šeit. 538 00:25:37,990 --> 00:25:41,200 Es esmu gatavojas vienkāršot manas norādes, nevis nekā izdarīt visu ķekars 539 00:25:41,200 --> 00:25:45,710 lietas un atpakaļ crisscrossing otru. 540 00:25:45,710 --> 00:25:50,870 Un tagad, pieņemsim tikai teikt, tas ir 1, 2, 3 labad diskusijas, pat 541 00:25:50,870 --> 00:25:53,410 ja tas nesakrīt ar problēma. 542 00:25:53,410 --> 00:25:55,900 >> Tātad, šeit ir mana saistīts saraksts. 543 00:25:55,900 --> 00:25:59,300 Es cenšos, lai novērstu divas šajā īpaši versiju stāsts. 544 00:25:59,300 --> 00:26:01,960 Tāpēc es esmu atjaunināts rādītāju ir vērsta uz šo puisi. 545 00:26:01,960 --> 00:26:03,315 Tāpēc tas ir PTR. 546 00:26:03,315 --> 00:26:04,530 Viņš norāda šeit. 547 00:26:04,530 --> 00:26:07,170 Šis ir saraksts, kas pastāv pasaulē kā iepriekš. 548 00:26:07,170 --> 00:26:09,200 Un viņš norāda šeit, vienalga ko. 549 00:26:09,200 --> 00:26:10,800 Un tagad, es cenšos, lai novērstu divas. 550 00:26:10,800 --> 00:26:13,850 >> Tātad, ja rādītājs ir vērsta šeit, es esmu gatavojas sekot, acīmredzot, 551 00:26:13,850 --> 00:26:17,110 iepriekšējais rādītājs, kas liek man uz 1. 552 00:26:17,110 --> 00:26:22,290 Es esmu tam gatavojas teikt, ka nākamais jomā, kas nes mani vairāk uz šo 553 00:26:22,290 --> 00:26:25,410 kaste šeit, gatavojas vienāds rādītājs nākamo. 554 00:26:25,410 --> 00:26:28,400 Tātad, ja šis rādītājs, tas ir blakus. 555 00:26:28,400 --> 00:26:31,840 Tas nozīmē, ka šis arrow vajadzībām lai norādītu uz šo puisis. 556 00:26:31,840 --> 00:26:35,140 >> Tātad, kas tas līnija kods ir tikai darīts, ir mazliet par to. 557 00:26:35,140 --> 00:26:37,500 Un tagad, tas ir meklējat, piemēram, solis pareizā virzienā. 558 00:26:37,500 --> 00:26:41,390 Mēs galvenokārt gribam drēbnieks 2 out gada vidū 1 un 3. 559 00:26:41,390 --> 00:26:44,400 Tātad, tas ir jēga, ka mēs vēlamies, lai maršruta šo rādītāju ap to. 560 00:26:44,400 --> 00:26:50,400 Tātad šis nākamais rindā ir pārbaudīt, ja rādītājs Nākamais nav null, tur ir 561 00:26:50,400 --> 00:26:54,200 tiešām kāds pa labi 2, tas nozīmē, ka mums ir arī jādara 562 00:26:54,200 --> 00:26:55,850 mazliet griezt šeit. 563 00:26:55,850 --> 00:27:00,590 >> Tāpēc man tagad ir nepieciešams ievērot šo rādītāju un atjaunināt iepriekšējo rādītāju uz 564 00:27:00,590 --> 00:27:05,410 tas puisis darīt mazliet PROFILAKSE šeit punktu šeit. 565 00:27:05,410 --> 00:27:07,100 Un tagad, vizuāli tas ir jauki. 566 00:27:07,100 --> 00:27:11,930 Tas ir mazliet netīrs, jo tur ir neviens norādot uz 2 vairs. 567 00:27:11,930 --> 00:27:13,600 2 ir vērsta uz kreiso pusi. 568 00:27:13,600 --> 00:27:14,980 Un 2 ir vērsta uz labo pusi. 569 00:27:14,980 --> 00:27:17,480 Bet viņš var darīt visu, ko grib, jo viņš ir apmēram, lai saņemtu atbrīvots. 570 00:27:17,480 --> 00:27:19,480 Un tas nav svarīgi, ko šīs vērtības ir vairs. 571 00:27:19,480 --> 00:27:23,040 >> Kas ir svarīgi ir tas, ka atlikušais puiši maršrutēšanas iepriekš 572 00:27:23,040 --> 00:27:24,280 un zem viņu tagad. 573 00:27:24,280 --> 00:27:25,810 Un, protams, tas, ko mēs darām tālāk. 574 00:27:25,810 --> 00:27:29,360 Mēs free rādītājs, kas nozīmē, ka mēs pateikt operētājsistēmu, jūs esat laipni 575 00:27:29,360 --> 00:27:30,906 atgūt to. 576 00:27:30,906 --> 00:27:34,900 Un tad visbeidzot, mēs atgriežamies. 577 00:27:34,900 --> 00:27:37,220 Else netieši, ja mēs vēl nav atgriezušies, 578 00:27:37,220 --> 00:27:38,290 mēs esam ieguvuši, lai saglabātu meklējat. 579 00:27:38,290 --> 00:27:41,485 Tā rādītājs ir vienāds rādītājs blakus tikko nozīmē pārvietot šo puisis šeit. 580 00:27:41,485 --> 00:27:42,600 Pārvietot šo puisis šeit. 581 00:27:42,600 --> 00:27:45,400 Pārvietot šo puisis šeit, ja, patiesībā, mēs neatradām numuru 582 00:27:45,400 --> 00:27:46,960 mēs meklējam vēl. 583 00:27:46,960 --> 00:27:49,630 >> Tik atklāti, tas izskatās pilnīgi milzīgs, es domāju, ka sākumā 584 00:27:49,630 --> 00:27:52,180 skatienu, it īpaši, ja esat cīnījušies ar šo viktorīnu laikā, tad redzētu 585 00:27:52,180 --> 00:27:52,850 kaut kas līdzīgs šim. 586 00:27:52,850 --> 00:27:55,050 Un jūs pat sevi par atpakaļ. 587 00:27:55,050 --> 00:27:57,080 Nu, nav veids, kā es varētu būt nākt klajā ar to uz viktorīnas. 588 00:27:57,080 --> 00:28:00,470 Bet es teiktu, jūs varat, ja jūs pauze tā uz leju šos individuālo 589 00:28:00,470 --> 00:28:04,400 gadījumos un tikai staigāt pa to uzmanīgi, lai gan, protams, saskaņā 590 00:28:04,400 --> 00:28:06,300 stresa apstākļos. 591 00:28:06,300 --> 00:28:09,470 >> Par laimi, situācija, kas viss laimīgāki. 592 00:28:09,470 --> 00:28:11,050 Jūs varētu izdarīt šo jebkurš vairāki veidi. 593 00:28:11,050 --> 00:28:12,760 Jums nav darīt to crisscrossing lieta šeit. 594 00:28:12,760 --> 00:28:14,520 Jūs varētu darīt to ar taisnu līnijas, kā šis. 595 00:28:14,520 --> 00:28:18,790 Bet būtība no šīs problēmas, jo Kopumā bija saprast, ka 596 00:28:18,790 --> 00:28:22,060 attēlu beigās vajadzētu izskatīties nedaudz kaut kas līdzīgs šim, jo, 597 00:28:22,060 --> 00:28:25,030 pastāvīgs laiks nozīmēja, ka jums saglabāt traucēšanas un traucēšanas un traucēšanas 598 00:28:25,030 --> 00:28:29,900 jaunas virsotnes sākumā saraksta. 599 00:28:29,900 --> 00:28:31,960 Kādi jautājumi? 600 00:28:31,960 --> 00:28:34,565 Iespējams, vislielākās grūtības protams kodēšanas jautājumiem. 601 00:28:34,565 --> 00:28:37,690 >> Mērķauditorija: Tā ir saraksts līdzīgs galvu iepriekšējos piemēros. 602 00:28:37,690 --> 00:28:39,640 >> DAVID J. Malan: Tieši tā, tieši tā. 603 00:28:39,640 --> 00:28:43,130 Tikai atšķirīgu nosaukumu globālo mainīgo. 604 00:28:43,130 --> 00:28:44,380 Visā pasaulē, ko? 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 Tāpēc tas ir viens, kur jūs bija rakstīt rindkopu. 608 00:28:52,020 --> 00:28:56,060 Daži cilvēki rakstīja esejas par šo jautājumu. 609 00:28:56,060 --> 00:29:00,230 Bet jūs vienkārši nepieciešams, lai izmantotu šos sešus terminus lai aprakstītu to, kas notiek, kad 610 00:29:00,230 --> 00:29:02,440 Jūs mēģināt sazināties facebook.com. 611 00:29:02,440 --> 00:29:07,930 Tāpēc es ņemšu tikai runāt caur process izmantojot visus šos terminus. 612 00:29:07,930 --> 00:29:11,290 Tātad mūsu pārlūku, mēs tipa facebook.com un hit Enter. 613 00:29:11,290 --> 00:29:17,280 Tātad mūsu pārlūku gatavojas būvēt HTTP pieprasīt, ka tas notiek, lai nosūtītu 614 00:29:17,280 --> 00:29:22,220 caur kādu procesa facebook Facebook atbildēt uz mums ar 615 00:29:22,220 --> 00:29:24,450 HTML tās lapas. 616 00:29:24,450 --> 00:29:28,800 >> Tātad, kas ir process, kas HTTP pieprasījums 617 00:29:28,800 --> 00:29:30,730 faktiski izpaužas Facebook? 618 00:29:30,730 --> 00:29:32,790 Tātad, pirmkārt, mums ir nepieciešams tulkot Facebook.com. 619 00:29:32,790 --> 00:29:38,780 Tik vienkārši, ņemot vērā vārdu Facebook.com, ja tiešām HTTP pieprasījumu 620 00:29:38,780 --> 00:29:39,940 jāiet? 621 00:29:39,940 --> 00:29:44,120 Tāpēc mums ir nepieciešams tulkot Facebook.com uz IP adresi, kas unikāli 622 00:29:44,120 --> 00:29:47,620 nosaka, kāda mašīna mēs faktiski vēlaties nosūtīt šo lūgumu. 623 00:29:47,620 --> 00:29:49,310 Jūsu klēpjdators ir IP adrese. 624 00:29:49,310 --> 00:29:52,240 Jebkas savienots ar internetu IP adrese. 625 00:29:52,240 --> 00:29:59,030 >> Tātad DNS, Domain Name System, kas ir kas notiek rīkoties tulkojumu 626 00:29:59,030 --> 00:30:03,750 no facebook.com ar IP adresi, kas Jūs tiešām vēlaties, lai sazinātos. 627 00:30:03,750 --> 00:30:08,075 Tātad mēs sazināties ar DNS serverus un teiksim, kas ir facebook.com? 628 00:30:08,075 --> 00:30:16,560 Tajā teikts, ak, tas ir IP adrese 190,212 kaut ko, kaut ko, kaut ko. 629 00:30:16,560 --> 00:30:16,900 Labi. 630 00:30:16,900 --> 00:30:18,850 Tagad es zinu, ko mašīna Es gribu, lai sazinātos. 631 00:30:18,850 --> 00:30:22,360 >> Tātad jūs sūtiet savu HTTP pieprasījumu vairāk nekā uz šo mašīnu. 632 00:30:22,360 --> 00:30:24,140 Tātad, kā tas nokļūt uz šo mašīnu? 633 00:30:24,140 --> 00:30:27,200 Nu, pieprasījums iet no router maršrutētāju veselīgs. 634 00:30:27,200 --> 00:30:32,630 Atcerēties piemēru klasē, kur Mēs tiešām redzēju maršrutu, ka 635 00:30:32,630 --> 00:30:35,340 paketes notika, kad mēs mēģinājām lai sazinātos. 636 00:30:35,340 --> 00:30:38,460 Mēs redzējām, ka lēkt pāri Atlantijas okeānam Ocean ir viens punkts vai neatkarīgi. 637 00:30:38,460 --> 00:30:42,820 >> Tātad pēdējais termiņš osta. 638 00:30:42,820 --> 00:30:46,520 Tāpēc tagad tas ir jūsu datorā. 639 00:30:46,520 --> 00:30:49,970 Jums var būt vairākas lietas, kas pašlaik communicating with the internetu. 640 00:30:49,970 --> 00:30:53,730 Lai es varētu darboties, piemēram, Skype. 641 00:30:53,730 --> 00:30:55,670 Es varētu būt interneta pārlūku atvērtu. 642 00:30:55,670 --> 00:30:59,010 Es varētu būt kaut kas torrenting failus. 643 00:30:59,010 --> 00:31:00,880 Tātad visas šīs lietas ir communicating with 644 00:31:00,880 --> 00:31:02,600 internetā kaut kādā veidā. 645 00:31:02,600 --> 00:31:08,070 >> Tātad, ja jūsu dators saņem dažus datus no interneta, kā to dara 646 00:31:08,070 --> 00:31:10,130 zināt, cik pieteikumu faktiski grib datus? 647 00:31:10,130 --> 00:31:12,610 Kā tas zināms, vai šis konkrētais dati tiek domāts 648 00:31:12,610 --> 00:31:16,070 torrenting pieteikumu pretstatā uz interneta pārlūku? 649 00:31:16,070 --> 00:31:20,980 Tātad šis ir mērķis ostām, kas visi no šiem pieteikumiem ir 650 00:31:20,980 --> 00:31:22,720 apgalvoja portu datorā. 651 00:31:22,720 --> 00:31:27,580 Tātad jūsu interneta pārlūku saka, hey, Es esmu klausoties portu 1000. 652 00:31:27,580 --> 00:31:32,240 Un jūsu torrenting programma saka, Es esmu klausoties portu 3000. 653 00:31:32,240 --> 00:31:34,770 Un Skype saka, es esmu, izmantojot portu 4000. 654 00:31:34,770 --> 00:31:41,950 >> Tātad, ja jums daži dati, kas pieder uz vienu no šiem pieteikumiem, datu 655 00:31:41,950 --> 00:31:45,510 ir marķēta ar kuru ostas faktiski jāsūta līdzi. 656 00:31:45,510 --> 00:31:47,950 Tātad šis saka, ak, es piederu ostā 1000. 657 00:31:47,950 --> 00:31:50,950 Es zinu, tad man ir nepieciešams nosūtīt šo gar manu interneta pārlūku. 658 00:31:50,950 --> 00:31:56,440 Tā iemesls, tas ir būtiski šeit ir tas, ka web serveri mēdz 659 00:31:56,440 --> 00:31:58,240 klausīties par ostas 80. 660 00:31:58,240 --> 00:32:02,420 Tātad, kad es sazināties Facebook.com, es esmu sazinoties ar kādu mašīnu. 661 00:32:02,420 --> 00:32:06,390 Bet man ir nepieciešams pateikt, kurš ostu, kas mašīna Es gribu, lai sazinātos ar jums. 662 00:32:06,390 --> 00:32:09,160 Un web serveri mēdz būt klausīšanās par ostas 80. 663 00:32:09,160 --> 00:32:14,010 >> Ja viņi vēlas, viņi var noteikt to augšu, lai tā sarakstus, kā par ostas 7000. 664 00:32:14,010 --> 00:32:19,090 Un tad interneta pārlūku, es varētu manuāli veida Facebook.com: 7000 līdz 665 00:32:19,090 --> 00:32:24,600 nosūtīt pieprasījumu ostā 7000 no Facebook tīmekļa serveri. 666 00:32:24,600 --> 00:32:26,820 >> DAVID J. Malan: Un šajā gadījumā, pat tad, lai gan mums neprasīja, ka cilvēki 667 00:32:26,820 --> 00:32:30,000 min to, šajā gadījumā, ko port būtu lūgums faktiski iet uz? 668 00:32:30,000 --> 00:32:36,630 669 00:32:36,630 --> 00:32:37,880 Mēģiniet vēlreiz. 670 00:32:37,880 --> 00:32:42,810 671 00:32:42,810 --> 00:32:44,300 Tieši tā. 672 00:32:44,300 --> 00:32:47,960 Nemeklē, taču veiklība tas tur nav pēdējā. 673 00:32:47,960 --> 00:32:51,770 >> ROB BOWDEN: Tātad HTTPS, jo tas ir klausīšanās īpaši 674 00:32:51,770 --> 00:32:55,180 šifrēta, tas ir par ostas 4430. 675 00:32:55,180 --> 00:32:57,680 >> Mērķauditorija: un e-pastus, ir 25, vai ne? 676 00:32:57,680 --> 00:33:00,670 >> DAVID J. Malan: Outbound e-pastus, 25, yep. 677 00:33:00,670 --> 00:33:03,760 >> ROB BOWDEN: Man nav pat zināt, lielākā daļa - visi apakšējo tiem mēdz būt 678 00:33:03,760 --> 00:33:06,310 rezervēts lietām. 679 00:33:06,310 --> 00:33:09,260 Es domāju, ka viss zem 1024 ir rezervēts. 680 00:33:09,260 --> 00:33:13,450 >> Mērķauditorija: Kāpēc jūs sakāt 3 bija nepareizs skaitlis? 681 00:33:13,450 --> 00:33:18,820 >> ROB BOWDEN: Jo IP adresi, tur ir četri grupējumu cipariem. 682 00:33:18,820 --> 00:33:21,090 Un viņi ir no 0 līdz 255. 683 00:33:21,090 --> 00:33:28,060 Tāpēc 192.168.2.1 ir kopīgs lokālā tīkla IP adresi. 684 00:33:28,060 --> 00:33:30,840 Paziņojuma visi no tiem ir mazāks nekā 255. 685 00:33:30,840 --> 00:33:33,570 Tātad, kad es sāku ar 300, kas varētu nav iespējams būt 686 00:33:33,570 --> 00:33:35,210 ir viens no numuriem. 687 00:33:35,210 --> 00:33:38,170 >> DAVID J. Malan: Bet tas muļķīgi klips no - tas bija CSI, kur viņi bija 688 00:33:38,170 --> 00:33:39,970 numuru, kas ir pārāk liels IP adresi. 689 00:33:39,970 --> 00:33:42,940 690 00:33:42,940 --> 00:33:46,110 >> ROB BOWDEN: Kādi jautājumi par šo? 691 00:33:46,110 --> 00:33:51,710 Nākamo, tik pilnīga maiņa topic, bet mums ir šis PHP masīvs 692 00:33:51,710 --> 00:33:53,270 mājas, kas quad. 693 00:33:53,270 --> 00:33:56,360 Un mums ir Nekārtots saraksts. 694 00:33:56,360 --> 00:33:59,550 Un mēs gribam izdrukāt saraksta elementu vienkārši satur mājas nosaukumu. 695 00:33:59,550 --> 00:34:09,090 696 00:34:09,090 --> 00:34:11,870 Tāpēc mums ir foreach cilpa. 697 00:34:11,870 --> 00:34:17,540 Līdz ar to atcerēties, sintakse ir foreach masīvs kā posteni masīvā. 698 00:34:17,540 --> 00:34:22,360 Tāpēc ar katru atkārtojuma cilpas, house notiek, lai uz vienu no 699 00:34:22,360 --> 00:34:24,060 vērtības iekšpusē masīva. 700 00:34:24,060 --> 00:34:26,530 >> Par pirmā atkārtojuma, māja būs Cabot House. 701 00:34:26,530 --> 00:34:30,370 Par otrajā atkārtojuma, māja būs būt Courier Māja un tā tālāk. 702 00:34:30,370 --> 00:34:34,370 Tāpēc katram quad kā mājā, mēs esam tikai gatavojas drukāt - 703 00:34:34,370 --> 00:34:37,250 jūs arī varētu būt piebalsoja - 704 00:34:37,250 --> 00:34:42,199 saraksta elements, un tad māju nosaukums un pēc tam aizveriet saraksta elementu. 705 00:34:42,199 --> 00:34:45,210 Cirtaini bikšturi ir obligāti šeit. 706 00:34:45,210 --> 00:34:49,480 >> Un tad mēs arī teica jautājumā sevi, atcerieties, lai aizvērtu 707 00:34:49,480 --> 00:34:50,770 Nekārtots saraksts tag. 708 00:34:50,770 --> 00:34:53,949 Tāpēc mums ir nepieciešams, lai izietu PHP režīma Lai to paveiktu. 709 00:34:53,949 --> 00:35:00,280 Vai mēs būtu varējuši piebalsoja aizvērt Nenumurēts saraksts tag. 710 00:35:00,280 --> 00:35:02,380 >> DAVID J. Malan: Arī fine šeit būtu ir izmantot veco skolu 711 00:35:02,380 --> 00:35:07,340 cilpa ar $ i = 0 0 un, izmantojot skaitu uz izrēķināt garumu ray. 712 00:35:07,340 --> 00:35:09,240 Pilnīgi naudas sodu arī vienkārši nedaudz wordier. 713 00:35:09,240 --> 00:35:12,170 714 00:35:12,170 --> 00:35:14,742 >> Mērķauditorija: Tātad, ja jūs gatavojas [Dzirdams], tu darītu - 715 00:35:14,742 --> 00:35:16,734 Es aizmirst to, ko cilpa [nedzirdama] ir. 716 00:35:16,734 --> 00:35:21,380 Vai jums $ quad kronšteinu i? 717 00:35:21,380 --> 00:35:21,850 >> DAVID J. Malan: Tieši tā. 718 00:35:21,850 --> 00:35:23,100 Jā, tieši tā. 719 00:35:23,100 --> 00:35:26,650 720 00:35:26,650 --> 00:35:27,900 >> ROB BOWDEN: kaut kas cits? 721 00:35:27,900 --> 00:35:31,350 722 00:35:31,350 --> 00:35:32,010 >> DAVID J. Malan: Nu labi. 723 00:35:32,010 --> 00:35:32,300 Kompromisi. 724 00:35:32,300 --> 00:35:38,290 Tāpēc bija ķekarus atbildes iespējams, katrs no tiem. 725 00:35:38,290 --> 00:35:40,510 Mums bija tiešām tikai meklē kaut pārliecinoši par otrādi un 726 00:35:40,510 --> 00:35:41,100 negatīvie. 727 00:35:41,100 --> 00:35:44,830 Un skaitlis 16 jautāja, apstiprinot lietotāju ieeja klienta puses, jo ar JavaScript, 728 00:35:44,830 --> 00:35:47,280 nevis servera pusē, jo ar PHP. 729 00:35:47,280 --> 00:35:49,450 Tātad, kas ir otrādi un darot klienta pusē? 730 00:35:49,450 --> 00:35:53,780 >> Nu, viena no lietām, ko mēs ierosinājām, ir ka jūs samazināt latentuma, jo jums 731 00:35:53,780 --> 00:35:56,750 nav apnikt sazinoties servera, kas var aizņemt dažas 732 00:35:56,750 --> 00:36:00,390 milisekundes vai pat pāris sekundes izvairoties no ka, un tikai 733 00:36:00,390 --> 00:36:04,670 apstiprināšanu lietotāju ievades klienta puses pa izraisot on-iesniegt kopējs un 734 00:36:04,670 --> 00:36:06,650 tikai pārbaudīt, viņi ierakstiet kaut kas par vārdu? 735 00:36:06,650 --> 00:36:08,080 Vai viņi kaut ko rakstīt in e-pasta adresi? 736 00:36:08,080 --> 00:36:10,950 Viņi izvēlas kopmītnes, no drop-down menu? 737 00:36:10,950 --> 00:36:14,360 >> Jūs varat dot viņiem tūlītēju atgriezenisko saiti izmantojot gigahercu datoru 738 00:36:14,360 --> 00:36:16,770 vai kāds viņi ir, ka tas faktiski par viņu galda. 739 00:36:16,770 --> 00:36:19,310 Tātad, tas ir tikai labāku lietotāju pieredze parasti. 740 00:36:19,310 --> 00:36:24,460 Bet negatīvie to darīt klienta puses validācija, ja jūs darīt to bez arī 741 00:36:24,460 --> 00:36:29,860 darot servera puses validāciju ir tas, ka lielākā daļa ikviens, kas nāk no CS50 zina 742 00:36:29,860 --> 00:36:33,980 ka jūs varat nosūtīt jebkuru informāciju, ko vēlaties serverī jebkuru vairākos veidos. 743 00:36:33,980 --> 00:36:37,030 Atklāti sakot, vairumā jebkuru pārlūku, jūs varat noklikšķiniet pa iestatījumiem, un tikai 744 00:36:37,030 --> 00:36:40,110 izslēgtu JavaScript, kas būtu, Tāpēc, atslēgt jebkādu 745 00:36:40,110 --> 00:36:41,080 validācija. 746 00:36:41,080 --> 00:36:44,460 >> Bet jūs arī varētu atgādināt, ka pat es bija daži mistiskā lietas klasē, izmantojot 747 00:36:44,460 --> 00:36:47,790 telnet un faktiski izliekoties ir pārlūku, nosūtot get 748 00:36:47,790 --> 00:36:49,240 pieprasījumus uz serveri. 749 00:36:49,240 --> 00:36:51,030 Un tas, protams, nav izmantojot jebkuru JavaScript. 750 00:36:51,030 --> 00:36:53,290 Tas ir tikai man rakstīt komandas ar klaviatūru. 751 00:36:53,290 --> 00:36:57,410 Tik tiešām, kāds programmētājs laikā pietiekami komforts ar web un HTTP 752 00:36:57,410 --> 00:37:01,690 var nosūtīt neatkarīgi datus, kurus viņš vai viņa vēlas serverī bez apstiprināšanas. 753 00:37:01,690 --> 00:37:05,470 Un, ja jūsu serveris nav arī pārbaudīt, viņi dod man vārdu, ir 754 00:37:05,470 --> 00:37:08,930 tas patiesībā derīgu e-pasta adresi, darīja viņi izvēlas kopmītnes, jūs varētu beigties 755 00:37:08,930 --> 00:37:12,800 up ievietojot viltus vai tikai tukša datu savā datu bāzē, kas, iespējams, 756 00:37:12,800 --> 00:37:15,450 nav būs labi, ja jūs pieņemot, ka tas bija tur. 757 00:37:15,450 --> 00:37:16,770 >> Tāpēc tas ir kaitinošas realitāte. 758 00:37:16,770 --> 00:37:19,890 Bet vispār, klienta puses validācija ir lieliski. 759 00:37:19,890 --> 00:37:21,810 Bet tas nozīmē, divreiz tik daudz darba. 760 00:37:21,810 --> 00:37:25,970 Kaut gan patiešām pastāv dažādas bibliotēkas, JavaScript bibliotēkas 761 00:37:25,970 --> 00:37:28,830 Piemēram, kas padara to daudz, daudz mazāk galvassāpes. 762 00:37:28,830 --> 00:37:31,940 Un jūs varat atkārtoti daži kodu servera puses, klienta puses. 763 00:37:31,940 --> 00:37:35,980 Bet saprast, ka tas ir parasti papildu darbs. 764 00:37:35,980 --> 00:37:36,415 Jā. 765 00:37:36,415 --> 00:37:37,792 >> Mērķauditorija: Tātad, ja mēs vienkārši teica, ka tik droši - 766 00:37:37,792 --> 00:37:39,205 >> DAVID J. Malan: [smejas] 767 00:37:39,205 --> 00:37:39,680 Ugh. 768 00:37:39,680 --> 00:37:43,105 Tie vienmēr ir grūtāk tiem jālemj. 769 00:37:43,105 --> 00:37:44,480 >> ROB BOWDEN: Tas būtu Ir pieņemts. 770 00:37:44,480 --> 00:37:44,810 >> DAVID J. Malan: Kas? 771 00:37:44,810 --> 00:37:45,810 >> ROB BOWDEN: Es izveidojis šo problēmu. 772 00:37:45,810 --> 00:37:46,735 Kas būtu pieņemts. 773 00:37:46,735 --> 00:37:47,220 >> DAVID J. Malan: Jā. 774 00:37:47,220 --> 00:37:47,830 >> Mērķauditorija: Cool. 775 00:37:47,830 --> 00:37:51,770 >> ROB BOWDEN: Bet mēs nepieņēma par pirmo - 776 00:37:51,770 --> 00:37:53,630 labi, ko mēs meklējam, ir kaut kā jums nav 777 00:37:53,630 --> 00:37:55,270 komunicēt ar serveri. 778 00:37:55,270 --> 00:37:58,355 Mēs nepieņēma tikai ātrāk. 779 00:37:58,355 --> 00:38:00,080 >> Mērķauditorija: Kas par nav pārlādēt lapu? 780 00:38:00,080 --> 00:38:00,430 >> ROB BOWDEN: Jā. 781 00:38:00,430 --> 00:38:03,000 Tas bija pieņemts atbilde. 782 00:38:03,000 --> 00:38:06,300 >> DAVID J. Malan: kaut kur mēs filcs tas bija vairāk iespējams nekā nav iespējams 783 00:38:06,300 --> 00:38:09,780 ka jums zināja, ko jūs bijāt sakot, kas ir grūts 784 00:38:09,780 --> 00:38:13,500 līnija izdarīt reizēm. 785 00:38:13,500 --> 00:38:16,000 Izmantojot saistīts saraksts vietā masīva saglabātu 786 00:38:16,000 --> 00:38:17,590 sakārtoti sarakstu veseli skaitļi. 787 00:38:17,590 --> 00:38:21,000 Tāpēc otrādi, mēs bieži citē ar saistīti saraksti, kas motivēja viņu visu 788 00:38:21,000 --> 00:38:22,370 ieviešana bija jums dinamiku. 789 00:38:22,370 --> 00:38:23,030 Tās var augt. 790 00:38:23,030 --> 00:38:23,950 Tās var sarukt. 791 00:38:23,950 --> 00:38:27,370 Tātad jums nav, lai izlēkt ar stīpām faktiski radītu vairāk atmiņas 792 00:38:27,370 --> 00:38:28,140 ar masīvu. 793 00:38:28,140 --> 00:38:30,310 Vai arī jums nav tikai saka, žēl, lietotājs. 794 00:38:30,310 --> 00:38:31,410 Masīvs ir piepildīta. 795 00:38:31,410 --> 00:38:35,850 Tik dinamiska izaugsme saraksta. 796 00:38:35,850 --> 00:38:37,210 Negatīvie gan savienoto sarakstiem? 797 00:38:37,210 --> 00:38:40,916 798 00:38:40,916 --> 00:38:43,356 >> Mērķauditorija: Tas ir lineāra. 799 00:38:43,356 --> 00:38:45,800 Meklējot saistīta sarakstā ir lineāra nevis to, ko jūs log in 800 00:38:45,800 --> 00:38:46,360 >> DAVID J. Malan: Tieši tā. 801 00:38:46,360 --> 00:38:50,160 Meklējot saistītajā sarakstā ir lineāra, pat ja tas ir sakārtots, jo jūs varat 802 00:38:50,160 --> 00:38:53,170 tikai sekot šiem maizes drupatas, šie norādes, no sākuma saraksta 803 00:38:53,170 --> 00:38:53,570 līdz galam. 804 00:38:53,570 --> 00:38:57,970 Jūs nevarat sviras brīvpieejas un, Tādējādi, bināro meklēšanu, pat ja tas ir 805 00:38:57,970 --> 00:39:00,740 sakārtoti, lai jūs varētu darīt ar masīvu. 806 00:39:00,740 --> 00:39:02,390 Un tur ir arī citu izmaksu. 807 00:39:02,390 --> 00:39:02,966 Jā. 808 00:39:02,966 --> 00:39:03,800 >> Mērķauditorija: Memory neefektīvi? 809 00:39:03,800 --> 00:39:04,130 >> DAVID J. Malan: Jā. 810 00:39:04,130 --> 00:39:06,940 Nu, es nebūtu obligāti saka neefektīva. 811 00:39:06,940 --> 00:39:10,110 Bet tas izmaksās jums vairāk atmiņas, jo jums ir nepieciešams 32 bitus ik 812 00:39:10,110 --> 00:39:13,400 mezglu par papildu rādītāju, pie Vismaz par atsevišķi saistīta sarakstā. 813 00:39:13,400 --> 00:39:16,660 Tagad, ja jūs tikai uzglabāt skaitļu un jūs pievienojot rādītāju, kas ir 814 00:39:16,660 --> 00:39:17,830 faktiski veida nav triviāla. 815 00:39:17,830 --> 00:39:19,340 Tas divkāršot atmiņas. 816 00:39:19,340 --> 00:39:22,330 Bet patiesībā, ja jūs uzglabāt saistīts saraksts structs, kas varētu būt 817 00:39:22,330 --> 00:39:25,540 8 biti, 16 biti, vēl vairāk par to, varbūt tas ir mazāk 818 00:39:25,540 --> 00:39:26,500 ar zemām izmaksām. 819 00:39:26,500 --> 00:39:28,320 Bet tas ir izmaksas tomēr. 820 00:39:28,320 --> 00:39:31,880 Tātad vai nu no tiem būtu esam bijis labi kā ēnas. 821 00:39:31,880 --> 00:39:32,110 >> 18. 822 00:39:32,110 --> 00:39:36,100 Izmantojot PHP, nevis C rakstīt komandrindas programmu. 823 00:39:36,100 --> 00:39:41,890 Tātad šeit, tas bieži vien ātrāk, lai izmantotu valodas, piemēram, PHP vai Ruby vai Python. 824 00:39:41,890 --> 00:39:43,700 Jūs vienkārši ātri atvērtu up teksta redaktoru. 825 00:39:43,700 --> 00:39:45,900 Jums ir daudz vairāk funkcijas pieejams jums. 826 00:39:45,900 --> 00:39:49,325 PHP ir virtuves izlietne funkciju, tā kā C, jūs 827 00:39:49,325 --> 00:39:50,420 ir ļoti, ļoti maz. 828 00:39:50,420 --> 00:39:53,820 Patiesībā, puiši zina, cietā veidā ka jums nav hash tabulas. 829 00:39:53,820 --> 00:39:55,000 Jums nav saistīti sarakstus. 830 00:39:55,000 --> 00:39:57,470 Ja vēlaties tos, jums ir īstenot tos pats. 831 00:39:57,470 --> 00:40:00,950 >> Tātad viena otrādi PHP, vai tiešām visiem interpretē valoda ir ātrums 832 00:40:00,950 --> 00:40:02,920 ar kuru jūs varat rakstīt kodu. 833 00:40:02,920 --> 00:40:06,660 Bet negatīvie, mēs redzējām to, kad es ātri saputota up Misspeller 834 00:40:06,660 --> 00:40:11,780 īstenošana lekciju, izmantojot PHP, ir ka, izmantojot interpretēt valodu 835 00:40:11,780 --> 00:40:13,570 parasti ir lēnāka. 836 00:40:13,570 --> 00:40:18,420 Un mēs redzējām, ka acīmredzami ar pieaugums laikā no 0,3 sekundēm līdz 3 837 00:40:18,420 --> 00:40:24,440 sekundes, jo interpretācijas , kas patiesībā notiek. 838 00:40:24,440 --> 00:40:27,060 >> Vēl viens otrādi bija, ka jums nav sastādīt. 839 00:40:27,060 --> 00:40:30,130 Tātad tas arī paātrina attīstību starp citu, jo jums nav 840 00:40:30,130 --> 00:40:31,360 Divi soļi, lai programmas palaišanas. 841 00:40:31,360 --> 00:40:32,140 Jums tikai viens. 842 00:40:32,140 --> 00:40:35,260 Un tā tas ir diezgan pārliecinoši, kā arī. 843 00:40:35,260 --> 00:40:38,450 Izmantojot SQL datu bāzi, nevis CSV failu, lai saglabātu datus. 844 00:40:38,450 --> 00:40:40,230 Tātad SQL datu bāze tiek izmantota pset7. 845 00:40:40,230 --> 00:40:42,060 CSV failus neizmantoja daudz. 846 00:40:42,060 --> 00:40:45,960 Bet tu to izmanto netieši pset7 kā labi, runājot ar Yahoo Finance. 847 00:40:45,960 --> 00:40:49,330 >> Bet CSV ir tāpat kā Excel failā, bet super vienkārši, ja kolonnas ir 848 00:40:49,330 --> 00:40:54,010 vienkārši demarked ar komatiem iekšpusē no citādi teksta failu. 849 00:40:54,010 --> 00:40:56,740 Un, izmantojot SQL datu bāzē ir nedaudz vairāk pārliecinoša. 850 00:40:56,740 --> 00:41:00,060 Tas ir otrādi, jo jūs saņemsiet lietas piemēram, izvēlēties un ievietot un izdzēst. 851 00:41:00,060 --> 00:41:03,790 Un jums, iespējams, indeksi, kas MySQL un citām datu bāzēm, piemēram, 852 00:41:03,790 --> 00:41:07,510 Orākuls, izveidot jums atmiņā, kurā nozīmē, ka jūsu izvēlēties, iespējams, nav 853 00:41:07,510 --> 00:41:09,000 būs lineāra augšas uz leju. 854 00:41:09,000 --> 00:41:11,300 Tas tiešām būs kaut kas piemēram, bināro meklēšanu vai kaut ko 855 00:41:11,300 --> 00:41:12,520 līdzīgi garā. 856 00:41:12,520 --> 00:41:13,930 Tāpēc viņi parasti ātrāk. 857 00:41:13,930 --> 00:41:16,040 >> Bet negatīvie ir tas, ka tas ir tikai vairāk darba. 858 00:41:16,040 --> 00:41:16,730 Tas ir vairāk pūļu. 859 00:41:16,730 --> 00:41:18,140 Jums ir jāsaprot datu bāzes. 860 00:41:18,140 --> 00:41:18,940 Jums ir noteikt to uz augšu. 861 00:41:18,940 --> 00:41:20,840 Jums ir nepieciešams serveris, lai palaistu ka datu bāze. 862 00:41:20,840 --> 00:41:22,750 Jums ir nepieciešams, lai izprastu kā konfigurēt to. 863 00:41:22,750 --> 00:41:24,930 Tātad šie ir tikai tie veida kompromisiem. 864 00:41:24,930 --> 00:41:27,860 Tā kā CSV failu, jūs varat izveidot to ar gedit. 865 00:41:27,860 --> 00:41:28,770 Un jūs labi iet. 866 00:41:28,770 --> 00:41:31,550 Nav sarežģīti ārpus tā. 867 00:41:31,550 --> 00:41:34,870 >> Izmantojot Trie vietā hash tabulas ar atsevišķu Virknējuma lai uzglabātu 868 00:41:34,870 --> 00:41:37,490 vārdnīca vārdiem, kas atgādina gada pset5. 869 00:41:37,490 --> 00:41:42,480 Tāpēc mēģina otrādi, teorētiski vismaz, ir tas, ko? 870 00:41:42,480 --> 00:41:46,380 Nemainīgs laiku, vismaz, ja jūs esat sajaukšanai ar katru no indivīda 871 00:41:46,380 --> 00:41:48,990 burti vārdu, kā jūs varētu būt par pset5. 872 00:41:48,990 --> 00:41:52,720 Tas varētu būt pieci hashes, seši hashes, ja tur ir piecas vai sešas 873 00:41:52,720 --> 00:41:53,900 burti vārdā. 874 00:41:53,900 --> 00:41:54,580 Un tas ir diezgan laba. 875 00:41:54,580 --> 00:41:56,910 Un, ja tur ir augšējo robežu, kā ilgi jūsu vārdiem, varētu būt, ka tas 876 00:41:56,910 --> 00:41:59,320 patiešām asimptotiski nemainīgs laiku. 877 00:41:59,320 --> 00:42:05,180 >> Tā hash tabulu ar atsevišķu Ķēžu, problēma ir ar to 878 00:42:05,180 --> 00:42:09,070 veida datu struktūra ir tāda, ka veiktspēju jūsu algoritmu parasti 879 00:42:09,070 --> 00:42:12,700 atkarīgs no vairākiem lietas jau datu struktūru. 880 00:42:12,700 --> 00:42:15,660 Un tas noteikti ir gadījums ar ķēdēm, ar kuru vairāk sīkumi jūs likts 881 00:42:15,660 --> 00:42:18,800 uz hash tabulu, ilgāk tos ķēdes iet, kas nozīmē, sliktākajā 882 00:42:18,800 --> 00:42:21,960 lieta, ko jūs varētu meklē ir visu ceļu beigās vienu 883 00:42:21,960 --> 00:42:26,000 no ķēdēm, kas efektīvi devolves kaut lineārā. 884 00:42:26,000 --> 00:42:29,450 >> Tagad praksē, tas varētu pilnīgi būt gadījums, ka hash tabulu ar 885 00:42:29,450 --> 00:42:32,820 ķēdes ir ātrāk nekā atbilst trie īstenošanu. 886 00:42:32,820 --> 00:42:35,570 Bet tas ir dažādu iemeslu dēļ, tai skaitā , kas mēģina izmantot visai daudz 887 00:42:35,570 --> 00:42:39,240 atmiņa, kas var faktiski, lēni lietas uz leju, jo jūs nesaņemat jauki 888 00:42:39,240 --> 00:42:42,410 priekšrocības, ko sauc caching, ja lietas, kas ir cieši kopā 889 00:42:42,410 --> 00:42:45,420 atmiņā var piekļūt bieži vien ātrāk. 890 00:42:45,420 --> 00:42:48,180 Un dažreiz jūs varat nākt klajā ar ļoti labs hash funkciju. 891 00:42:48,180 --> 00:42:51,060 Pat ja jums ir, lai atkritumu mazliet atmiņa, jūs varētu, protams, jābūt iespējai 892 00:42:51,060 --> 00:42:54,430 atrast lietas, ātri un nav tik slikti, kā lineāri. 893 00:42:54,430 --> 00:42:58,410 >> Tātad īsi sakot, nebija obligāti ar kādu no šiem vienu vai pat divas 894 00:42:58,410 --> 00:43:00,050 īpašas lietas, ko mēs meklējām. 895 00:43:00,050 --> 00:43:03,080 Tiešām kaut pārliecinošs kā otrādi, un negatīvie 896 00:43:03,080 --> 00:43:04,800 parasti nozvejotas mūsu acs. 897 00:43:04,800 --> 00:43:11,840 >> ROB BOWDEN: Tātad otrādi, mēs darījām nepieņem pati "ātrāk." Jums 898 00:43:11,840 --> 00:43:14,540 bija kaut ko teikt par to. 899 00:43:14,540 --> 00:43:17,910 Pat ja jūs teicāt teorētiski ātrāk, Mēs zinājām, ka jūs veida saprot 900 00:43:17,910 --> 00:43:19,470 ka tas ir 0 no 1. 901 00:43:19,470 --> 00:43:22,820 Un hash tabulu, teorētiski, nav 0, 1. 902 00:43:22,820 --> 00:43:26,550 Pieminēt kaut ko par runtime parasti got jums punktus. 903 00:43:26,550 --> 00:43:32,640 Bet "ātrāk", lielākā daļa no risinājumiem, liela valde, kas tika mēģina bija 904 00:43:32,640 --> 00:43:34,990 objektīvi lēnāk nekā risinājumi kas bija hash tabulas. 905 00:43:34,990 --> 00:43:37,250 Tāpēc ātrāk un pats par sevi nav īsti taisnība. 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 Es droši vien esmu vienīgais, kas saprot tas, kā tas ir paredzēts, lai 909 00:43:46,686 --> 00:43:47,500 jāizrunā, vai ne? 910 00:43:47,500 --> 00:43:50,400 >> ROB BOWDEN: Man bija tiešām ne jausmas. 911 00:43:50,400 --> 00:43:51,650 >> DAVID J. Malan: Tas lika sajūtu manā galvā. 912 00:43:51,650 --> 00:43:53,830 913 00:43:53,830 --> 00:43:57,580 >> ROB BOWDEN: Es esmu darot šo vienu. 914 00:43:57,580 --> 00:43:58,020 OK. 915 00:43:58,020 --> 00:44:04,243 Tāpēc tas ir viens, kur jums bija izdarīt diagramma līdzīgi jums varētu 916 00:44:04,243 --> 00:44:06,040 esmu redzējis uz iepriekšējiem eksāmeniem. 917 00:44:06,040 --> 00:44:12,200 Tāpēc pieņemsim tikai apskatīt šo. 918 00:44:12,200 --> 00:44:18,170 Tāpēc no HTML mezglā, mums ir divas bērni, galvas un ķermeņa. 919 00:44:18,170 --> 00:44:20,570 Tāpēc mēs filiāle - galvu un ķermeni. 920 00:44:20,570 --> 00:44:22,280 Galva ir nosaukums tag. 921 00:44:22,280 --> 00:44:23,710 Tāpēc mums ir nosaukums. 922 00:44:23,710 --> 00:44:28,450 >> Tagad, viena lieta, daudzi cilvēki aizmirsu, ka šie teksta mezgli 923 00:44:28,450 --> 00:44:30,430 elementi ietvaros šo koku. 924 00:44:30,430 --> 00:44:36,260 Tāpēc šeit mēs gadās izdarīt tos kā ovāli lai atšķirtu tos no šiem 925 00:44:36,260 --> 00:44:37,380 veidi mezglu. 926 00:44:37,380 --> 00:44:41,450 Bet paziņojums ir arī šeit mums ir top, vidus un lejas galu galā ir 927 00:44:41,450 --> 00:44:42,560 teksta mezgli. 928 00:44:42,560 --> 00:44:46,250 Tātad, aizmirstot, kas bija nedaudz kopēja kļūda. 929 00:44:46,250 --> 00:44:48,770 >> Ķermenis ir trīs bērni - šie trīs divs. 930 00:44:48,770 --> 00:44:53,340 Tātad, div, div, div un pēc tam teksta mezglu bērni šo divs. 931 00:44:53,340 --> 00:44:55,900 Tas ir diezgan daudz to Attiecībā uz šo jautājumu. 932 00:44:55,900 --> 00:44:57,860 >> DAVID J. Malan: Un tas ir vērts atzīmēt, pat ja mums nav aiztures par šiem 933 00:44:57,860 --> 00:45:01,040 detaļas, kad mēs tērējam JavaScript, ka rīkojums nav, jo 934 00:45:01,040 --> 00:45:02,290 Fakts, jautājums tehniski. 935 00:45:02,290 --> 00:45:06,330 Tātad, ja galva nāk pirms organismā HTML, tad tam vajadzētu parādīties uz 936 00:45:06,330 --> 00:45:08,860 pa kreisi no ķermeņa faktisko DOM. 937 00:45:08,860 --> 00:45:12,265 Ka viņa ir, vispār, tikai FYI, kaut ko sauc par dokumentu rīkojumu, kurā 938 00:45:12,265 --> 00:45:13,260 tas nav jautājums. 939 00:45:13,260 --> 00:45:17,470 Un, ja jūs īstenot parsētājs, programma, kas skan HTML ēkā 940 00:45:17,470 --> 00:45:20,960 up koku atmiņā, ja godīgi, tas ir intuitīvi iespējams, ko jūs 941 00:45:20,960 --> 00:45:24,720 anyway - no augšas uz leju, kreisās uz labo pusi. 942 00:45:24,720 --> 00:45:26,116 >> ROB BOWDEN: Jautājumi par šo? 943 00:45:26,116 --> 00:45:29,080 944 00:45:29,080 --> 00:45:30,000 Man vajadzētu darīt nākamo? 945 00:45:30,000 --> 00:45:32,380 >> DAVID J. Malan: Protams. 946 00:45:32,380 --> 00:45:33,810 >> ROB BOWDEN: OK. 947 00:45:33,810 --> 00:45:39,320 Tātad šis ir bufera pārsniegts uzbrukums jautājums. 948 00:45:39,320 --> 00:45:43,740 Galvenais atzīt šeit ir, labi, cik varētu pretinieks triks 949 00:45:43,740 --> 00:45:46,170 šīs programmas uz izpildes patvaļīgu kodu? 950 00:45:46,170 --> 00:45:51,860 Tātad argv1, pirmais komandrindas arguments, lai šo programmu, kas var būt 951 00:45:51,860 --> 00:45:53,920 patvaļīgi ilgi. 952 00:45:53,920 --> 00:45:59,160 Bet šeit mēs esam, izmantojot memcpy kopēt argv1, kas šeit atrodas bārs. 953 00:45:59,160 --> 00:46:00,165 Mēs esam iet kā argumentu. 954 00:46:00,165 --> 00:46:02,050 Un tā tas ir, ņemot par nosaukumu joslā. 955 00:46:02,050 --> 00:46:08,040 >> Tāpēc mēs esam memcpying bar šajā bufera c. 956 00:46:08,040 --> 00:46:09,400 Cik baiti mēs kopēšanu? 957 00:46:09,400 --> 00:46:14,040 Nu tomēr daudzi baiti bar notiek izmantojat, garumu šo argumentu. 958 00:46:14,040 --> 00:46:17,930 Bet c ir tikai 12 baiti plata. 959 00:46:17,930 --> 00:46:22,280 Tātad, ja mēs ierakstiet komandrindas argumentu kas ir garāks par 12 baitiem, mēs esam 960 00:46:22,280 --> 00:46:25,470 gatavojas pārplūdes šo īpaši buffer. 961 00:46:25,470 --> 00:46:31,000 Tagad, kā varētu pretinieks triks programma par izpildes patvaļīgu kodu? 962 00:46:31,000 --> 00:46:34,910 >> Tātad, atcerieties, ka šeit Galvenais zvana foo. 963 00:46:34,910 --> 00:46:37,340 Un tad galvenie zvani foo. 964 00:46:37,340 --> 00:46:40,408 Pieņemsim izdarīt to. 965 00:46:40,408 --> 00:46:44,720 966 00:46:44,720 --> 00:46:46,990 Tāpēc mums ir kaudze. 967 00:46:46,990 --> 00:46:49,090 Un galvenais ir kaudze rāmi apakšā. 968 00:46:49,090 --> 00:46:51,860 969 00:46:51,860 --> 00:46:53,250 Kādā brīdī, galvenās zvani foo. 970 00:46:53,250 --> 00:46:55,390 Nu, uzreiz, galvenais zvani foo. 971 00:46:55,390 --> 00:46:57,130 Un tā foo saņem savu kaudze rāmi. 972 00:46:57,130 --> 00:46:59,650 973 00:46:59,650 --> 00:47:02,220 >> Tagad, kādā brīdī, foo gatavojas atgriezties. 974 00:47:02,220 --> 00:47:06,810 Un gāja foo peļņu, mums ir nepieciešams zināt, kāda koda rindu iekšpusē galvenā mēs 975 00:47:06,810 --> 00:47:10,610 bija, lai zinātu, kur mums vajadzētu atsākt galvenais. 976 00:47:10,610 --> 00:47:13,100 Mēs varam zvanīt foo no kopumā ķekars dažādās vietās. 977 00:47:13,100 --> 00:47:14,620 Kā mēs zinām, kur atgriezties? 978 00:47:14,620 --> 00:47:16,460 Nu, mums ir nepieciešams, lai saglabātu, ka kaut kur. 979 00:47:16,460 --> 00:47:23,010 >> Tātad kaut kur šeit tieši apkārt, mēs saglabājam kur mums vajadzētu atgriezties pie reiz 980 00:47:23,010 --> 00:47:24,070 Foo atgriežas. 981 00:47:24,070 --> 00:47:26,350 Un tas ir atgriešanās adresi. 982 00:47:26,350 --> 00:47:30,490 Tātad, kā pretinieks varētu izmantot tas ir fakts, ka 983 00:47:30,490 --> 00:47:37,550 šis buferis c uzglabā, pieņemsim saka, šeit ir c. 984 00:47:37,550 --> 00:47:39,690 Tāpēc mēs esam ieguvuši 12 baiti c. 985 00:47:39,690 --> 00:47:40,540 Tas ir c. 986 00:47:40,540 --> 00:47:43,030 Un tas ir Foo žetonu gredzenu. 987 00:47:43,030 --> 00:47:49,970 Tātad, ja ļaunprātīgs lietotājs ievada vairāk baiti nekā 12, vai arī ievadiet komandu 988 00:47:49,970 --> 00:47:54,570 line arguments, kas ir ilgāks par 12 rakstzīmes, tad mēs ejam uz 989 00:47:54,570 --> 00:47:57,540 pārpilda šo buferi. 990 00:47:57,540 --> 00:47:59,910 >> Mēs varam glabāt notiek. 991 00:47:59,910 --> 00:48:02,220 Un kādā brīdī mēs tālu pietiekami, ka mēs sākam 992 00:48:02,220 --> 00:48:05,120 pārrakstot šo atpakaļadresi. 993 00:48:05,120 --> 00:48:08,310 Tātad, kad mēs pārrakstīt atpakaļadresi, Tas nozīmē, ka tad, kad foo 994 00:48:08,310 --> 00:48:14,220 atgriežas, mēs esam atpakaļ, lai kur ļaunprātīgs lietotājs stāsta to, ko 995 00:48:14,220 --> 00:48:19,490 kāda vērtība ir ievadīta ar jebkādiem rakstzīmes lietotājs ieraksta. 996 00:48:19,490 --> 00:48:24,320 Un tāpēc, ja ļaunprātīgs lietotājs tiek īpaši gudrs, viņš var būt tas 997 00:48:24,320 --> 00:48:29,255 atgrieztos kaut kur printDef funkciju vai kaut kur malloc 998 00:48:29,255 --> 00:48:31,830 funkcija, tikai jebkur patvaļīgs. 999 00:48:31,830 --> 00:48:38,420 >> Bet vēl vairāk gudrs ir tas, ko tad, ja viņš ir lietotājs atgriezties šeit. 1000 00:48:38,420 --> 00:48:41,920 Un tad jūs sākat izpildīt kā tie rindas kodu. 1001 00:48:41,920 --> 00:48:46,610 Tātad šajā brīdī, lietotājs var ievadīt visu, ko grib šajā reģionā. 1002 00:48:46,610 --> 00:48:52,210 Un viņam ir pilnīga kontrole pār savu programmu. 1003 00:48:52,210 --> 00:48:53,460 Jautājumi par šo? 1004 00:48:53,460 --> 00:48:56,380 1005 00:48:56,380 --> 00:49:00,970 Tātad nākamais jautājums ir pabeigta versija, foo tādā veidā 1006 00:49:00,970 --> 00:49:02,620 ka tas vairs nav neaizsargāti. 1007 00:49:02,620 --> 00:49:03,870 >> Tātad tur ir pāris veidos jūs varētu darīt to. 1008 00:49:03,870 --> 00:49:10,900 1009 00:49:10,900 --> 00:49:13,330 Mums joprojām ir c tikai to garuma 12. 1010 00:49:13,330 --> 00:49:16,480 Jūs varētu būt mainījies to kā daļa no jūsu risinājums. 1011 00:49:16,480 --> 00:49:18,930 Mums ir arī pievienoja čeku, lai veiktu Noteikti bar nebija null. 1012 00:49:18,930 --> 00:49:24,460 Kaut arī jums nav nepieciešams ka pilnu kredītu. 1013 00:49:24,460 --> 00:49:27,690 Tāpēc mēs esam pārbaudīt vispirms virknes garums bar. 1014 00:49:27,690 --> 00:49:31,650 Ja tas ir lielāks par 12, tad nav faktiski darīt kopiju. 1015 00:49:31,650 --> 00:49:33,010 Tātad tas ir viens no veidiem, kā noteikt to. 1016 00:49:33,010 --> 00:49:36,750 >> Vēl viens nosakot to veids ir nevis kam c būt tikai garums ir 12, ir to 1017 00:49:36,750 --> 00:49:39,310 būt garuma strlen (bar). 1018 00:49:39,310 --> 00:49:43,370 Vēl viens nosakot to veids ir faktiski tikai atgriezties. 1019 00:49:43,370 --> 00:49:46,690 Tātad, ja jūs tikko bija gotten atbrīvoties no visiem tas, ja jūs tikko bija svītrots visu 1020 00:49:46,690 --> 00:49:51,830 rindiņas kodu, jūs esat gotten pilna kredītu, jo šo funkciju 1021 00:49:51,830 --> 00:49:54,150 nav reāli paveikt neko. 1022 00:49:54,150 --> 00:49:57,650 Tas kopēt komandrindas Arguments par kādu masīva 1023 00:49:57,650 --> 00:49:59,960 tās vietējā kaudze rāmi. 1024 00:49:59,960 --> 00:50:01,310 Un tad ir tas atgriežas. 1025 00:50:01,310 --> 00:50:04,020 Un neatkarīgi no tā paveikto ir pagājis. 1026 00:50:04,020 --> 00:50:09,740 Tāpēc atgriešanās bija pietiekams veids, kā iegūt pilnu kredītu. 1027 00:50:09,740 --> 00:50:13,425 >> DAVID J. Malan: Ne gluži gars jautājums, bet pieņemams vienam 1028 00:50:13,425 --> 00:50:15,580 spec tomēr. 1029 00:50:15,580 --> 00:50:18,260 >> ROB BOWDEN: Jautājumi par kādu, kas? 1030 00:50:18,260 --> 00:50:22,270 Viena lieta, ka jūs vismaz vajadzēja būt apkopojot kodu. 1031 00:50:22,270 --> 00:50:24,810 Tātad, pat ja tehniski Jūs neesat neaizsargāti, ja jūsu kods nav 1032 00:50:24,810 --> 00:50:29,130 apkopot, mēs to nepieņemam, ka. 1033 00:50:29,130 --> 00:50:31,350 Neviens jautājumi? 1034 00:50:31,350 --> 00:50:33,320 OK. 1035 00:50:33,320 --> 00:50:34,580 >> DAVID J. Malan: Vai jūs vēlaties teikt šo titulu? 1036 00:50:34,580 --> 00:50:37,230 >> ROB BOWDEN: Nē. 1037 00:50:37,230 --> 00:50:40,470 >> DAVID J. Malan: Tātad šo vienu, tas bija vai nu laba ziņa vai slikta ziņa. 1038 00:50:40,470 --> 00:50:43,870 Tas ir burtiski pati problēma kā pirmajam viktorīnu. 1039 00:50:43,870 --> 00:50:46,140 Un tas ir gandrīz tāds pats problēma, jo pset1. 1040 00:50:46,140 --> 00:50:49,980 Bet tas bija apzināti vienkāršots, lai būtu vienkāršāku piramīda, viens, kas var būt 1041 00:50:49,980 --> 00:50:52,330 atrisināt ar nedaudz vienkāršāka atkārtojuma. 1042 00:50:52,330 --> 00:50:55,680 Un tiešām, ko mēs kļūst par šeit bija ne tik daudz loģika, 1043 00:50:55,680 --> 00:50:58,100 jo, iespējams, šajā brīdī jūs esat ērtāk, nekā jums bija 1044 00:50:58,100 --> 00:51:01,850 nedēļā viens ar cilpas vai kāpēc cilpas, bet tiešām kaitināt izņemot, ka 1045 00:51:01,850 --> 00:51:04,790 tu esi mazliet apmierināti ar Priekšstats, ka PHP ir ne tikai par to, ko 1046 00:51:04,790 --> 00:51:05,290 programmēšana. 1047 00:51:05,290 --> 00:51:07,820 Tas faktiski var izmantot kā valodas rakstīt komandrindas programmas. 1048 00:51:07,820 --> 00:51:10,060 >> Un, protams, tas, ko mēs cenšamies vērst jūsu uzmanību. 1049 00:51:10,060 --> 00:51:12,060 Tas ir komandrindas PHP programmas. 1050 00:51:12,060 --> 00:51:16,690 Tātad C kodu šeit, bet pareizs C, nav pareizs PHP. 1051 00:51:16,690 --> 00:51:17,940 Bet kods patiešām ir tāda pati. 1052 00:51:17,940 --> 00:51:21,720 Ja jūs salīdzināt risinājumus Viktorīna 0 pret Viktorīna 1, jūs atradīsiet, ka 1053 00:51:21,720 --> 00:51:25,630 tas ir gandrīz identiski, izņemot daži dolāra zīmes, un, lai 1054 00:51:25,630 --> 00:51:27,250 neesamība datu tipa. 1055 00:51:27,250 --> 00:51:31,720 It īpaši, ja mēs to apskatīt šeit jūs redzēsiet, ka mēs atkārtot, šajā 1056 00:51:31,720 --> 00:51:33,730 gadījumā, no 1 līdz ar 7. 1057 00:51:33,730 --> 00:51:34,910 >> Mēs būtu varējuši izdarīt to 0 indeksu. 1058 00:51:34,910 --> 00:51:37,320 Bet dažreiz, es domāju, ka tas ir tikai garīgi vieglāk domāt par lietām 1059 00:51:37,320 --> 00:51:38,200 no 1 līdz 7. 1060 00:51:38,200 --> 00:51:40,300 Ja jūs vēlaties vienu bloku, tad divas bloki, tad trīs, tad 1061 00:51:40,300 --> 00:51:41,770 dot, dot, dot septiņi. 1062 00:51:41,770 --> 00:51:45,960 Mēs esam j tiek inicializēts 1 un tad paļaujas uz līdz i. 1063 00:51:45,960 --> 00:51:48,150 Un viss šeit ir citādi identiski. 1064 00:51:48,150 --> 00:51:49,790 Bet ievērības cienīgs ir pāris lietas. 1065 00:51:49,790 --> 00:51:53,230 Mēs jums šīs divas līnijas, tas pirmais viens, goofily nosaukti kā zaņķis 1066 00:51:53,230 --> 00:51:54,560 sharp sprādziena. 1067 00:51:54,560 --> 00:51:58,770 Un tas tikai norāda ceļu, mape, kurā programma var būt 1068 00:51:58,770 --> 00:52:02,160 konstatēts, ka jūs vēlaties izmantot interpretēt šo failu. 1069 00:52:02,160 --> 00:52:04,710 >> Un tad līnija pēc tam, un Protams, ir jāievada PHP režīmā. 1070 00:52:04,710 --> 00:52:07,740 Un līnijas pašā apakšā ir izeja PHP režīmā. 1071 00:52:07,740 --> 00:52:09,740 Un tas darbojas, vispār, ar interpretē valodas. 1072 00:52:09,740 --> 00:52:14,370 Tas ir sava veida kaitinošas, ja jūs rakstīt programmu failu ar nosaukumu foo.php. 1073 00:52:14,370 --> 00:52:17,320 Un tad jūsu lietotājiem ir tikai atcerieties, OK, lai palaistu šo programmu, es 1074 00:52:17,320 --> 00:52:22,320 ir tipa "php telpa foo.php." Veids kaitinošas, ja nekas cits. 1075 00:52:22,320 --> 00:52:25,270 Un tas arī parāda, ka jūsu programma ir uzrakstīts PHP, kas ir ne visi 1076 00:52:25,270 --> 00:52:27,060 ka apgaismodama lietotājam. 1077 00:52:27,060 --> 00:52:30,100 >> Tātad jūs varat izņemt. Php vispār atsaukt no lekciju. 1078 00:52:30,100 --> 00:52:35,690 Un jūs faktiski var darīt. / Foo ja jūs esat chmodded to, padarot to 1079 00:52:35,690 --> 00:52:36,500 izpildāmā. 1080 00:52:36,500 --> 00:52:39,630 Tāpēc chmod + x foo būtu darījuši. 1081 00:52:39,630 --> 00:52:41,460 Un, ja jūs arī pievienot zaņķis šeit. 1082 00:52:41,460 --> 00:52:45,320 Bet tiešām, problēma tika kļūst par izdrukāt kaut kas līdzīgs šim. 1083 00:52:45,320 --> 00:52:51,100 Ne HTML, ne C kods, protams, tikai daži PHP. 1084 00:52:51,100 --> 00:52:54,100 Tāpēc Milo tad atgriezās problēmas 25. 1085 00:52:54,100 --> 00:52:58,050 Un 25, jums tika dota šādiem skelets kods, kas bija 1086 00:52:58,050 --> 00:52:59,730 diezgan vienkārša mājas lapa. 1087 00:52:59,730 --> 00:53:04,230 Un sulīgs daļa HTML gudrs bija uz leju vietas, kur mums ir iekšpusē ķermeņa 1088 00:53:04,230 --> 00:53:09,160 forma, kas ir unikāls ID izejvielas iekšpusē, kas ir divas ieejas, viena 1089 00:53:09,160 --> 00:53:11,950 ar ideju par vārda, viena ar ideju par pogu. 1090 00:53:11,950 --> 00:53:14,240 >> Pirmais bija ierakstiet tekstu, Otrā tipa iesniegt. 1091 00:53:14,240 --> 00:53:16,930 Un tā mēs deva jums, faktiski, vairāk sastāvdaļas, nekā jūs, kas vajadzīgi, tikai tik 1092 00:53:16,930 --> 00:53:19,230 jūs puiši bija iespējas, ar kuru lai atrisinātu šo problēmu. 1093 00:53:19,230 --> 00:53:21,130 Jums nav obligāti nepieciešams visas šīs ID. 1094 00:53:21,130 --> 00:53:23,580 Bet tas ļauj jums, lai atrisinātu to dažādos veidos. 1095 00:53:23,580 --> 00:53:27,050 Un augšā, pamanīsiet, ka mērķis bija, lai iedarbinātu 1096 00:53:27,050 --> 00:53:27,960 logu kā šis - 1097 00:53:27,960 --> 00:53:28,780 Sveiki, Milo! - 1098 00:53:28,780 --> 00:53:31,270 pop up pārlūkprogrammā, izmantojot super vienkārši, ja 1099 00:53:31,270 --> 00:53:33,190 nav neglīts, trauksmes funkciju. 1100 00:53:33,190 --> 00:53:37,480 Un tā, galu galā, tas vārīties uz leju konceptuāli kaut klausās 1101 00:53:37,480 --> 00:53:41,290 argumenti veidlapas klienta puses , Nevis servera pusē, kaut 1102 00:53:41,290 --> 00:53:45,640 atbildot uz iesnieguma satveršanas vērtību, lietotājs drukāti 1103 00:53:45,640 --> 00:53:50,120 Lai nosaukuma laukā, un pēc tam parādot to ķermeņa brīdinājumam. 1104 00:53:50,120 --> 00:53:53,460 >> Tāpēc viens veids, kā jūs varat darīt, tas ir, ar jQuery, kas izskatās nedaudz 1105 00:53:53,460 --> 00:53:56,880 sintaktiski perplexing sākumā. 1106 00:53:56,880 --> 00:54:00,760 To var izdarīt ar tīru DOM kodu - document.getelement pēc ID. 1107 00:54:00,760 --> 00:54:02,530 Bet pieņemsim apskatīt šo versiju. 1108 00:54:02,530 --> 00:54:05,110 Man ir pāris svarīgu līnijas pirmās. 1109 00:54:05,110 --> 00:54:09,460 Tāpēc viens, mēs esam šo līniju, kas ir identisks tam, ko jūs varētu būt redzējis 1110 00:54:09,460 --> 00:54:13,830 kas, manuprāt, form2.html no klases nedēļā 9. 1111 00:54:13,830 --> 00:54:16,960 Un tas ir tikai saku, izpildīt šādu kodu, kad 1112 00:54:16,960 --> 00:54:18,430 dokuments ir gatava. 1113 00:54:18,430 --> 00:54:21,770 Tas ir svarīgi, tikai tāpēc, ka HTML lapas ir lasīt no augšas uz 1114 00:54:21,770 --> 00:54:23,280 apakšas, no kreisās uz labo. 1115 00:54:23,280 --> 00:54:27,910 >> Un tāpēc, ja jūs mēģināt darīt kaut kodu šeit uz kādu DOM 1116 00:54:27,910 --> 00:54:31,560 elements, daži HTML tagu, kas ir uz leju Šeit jūs darāt to pārāk ātri, 1117 00:54:31,560 --> 00:54:34,220 jo tā ir pat ir jālasa atmiņā. 1118 00:54:34,220 --> 00:54:37,740 Tā sakot, šo document.ready līniju, mēs esam sakot, 1119 00:54:37,740 --> 00:54:39,040 šeit ir daži kodu, pārlūku. 1120 00:54:39,040 --> 00:54:42,440 Bet nav izpildīt to līdz pilnībā dokuments ir gatavs, kas ir DOM 1121 00:54:42,440 --> 00:54:44,320 koks pastāv atmiņā. 1122 00:54:44,320 --> 00:54:47,110 Šis viena ir nedaudz vairāk vienkārši, ja sintaktiski 1123 00:54:47,110 --> 00:54:51,890 mazliet atšķirīgs, ja es saku, grab HTML elementu, kura unikālais 1124 00:54:51,890 --> 00:54:53,560 identifikators ir ieejas. 1125 00:54:53,560 --> 00:54:56,220 Tas ir tas, ko hash tag apzīmē, unikālu ID. 1126 00:54:56,220 --> 00:54:58,070 Un tad es esmu aicinot. Iesniegt. 1127 00:54:58,070 --> 00:55:01,660 >> Tā. Iesniegt šeit ir funkcija, citādi pazīstams kā metodi, kas ir 1128 00:55:01,660 --> 00:55:05,850 iekšpusē objekta uz kreisās puses pusē tur, ka man nav izcelt. 1129 00:55:05,850 --> 00:55:08,990 Tātad, ja jūs domājat par izejvielu, kā objekts atmiņā - un tas patiešām ir. 1130 00:55:08,990 --> 00:55:10,440 Tā ir mezgls ar koku - 1131 00:55:10,440 --> 00:55:16,580 . Iesniegt līdzekļus, ja šo veidlapu ar iesniedz to ID, izpildīt 1132 00:55:16,580 --> 00:55:17,700 šādu kodu. 1133 00:55:17,700 --> 00:55:20,290 Man vienalga, ko nosaukums funkcija es esmu izpildes. 1134 00:55:20,290 --> 00:55:23,760 Tātad, šeit es, esmu, izmantojot kā līdz šim, kas ir sauc lambda funkciju vai 1135 00:55:23,760 --> 00:55:24,720 anonīms funkcija. 1136 00:55:24,720 --> 00:55:27,640 Tas nemaz nav intelektuāli interesanti izņemot tas nav nosaukuma, 1137 00:55:27,640 --> 00:55:30,220 kas ir labi, ja jūs tikai kādreiz saukšu to vienu reizi. 1138 00:55:30,220 --> 00:55:34,490 Un iekšā tur es tiešām rīkotos iesniegšanas formu. 1139 00:55:34,490 --> 00:55:36,810 Es pirmo reizi deklarēt mainīgo sauc par vērtību. 1140 00:55:36,810 --> 00:55:40,610 Un tad kāda ir šī ietekme izceltas daļa šeit un tagad? 1141 00:55:40,610 --> 00:55:44,755 Ko tas darīt augsta līmeņa par mani? 1142 00:55:44,755 --> 00:55:48,539 >> Mērķauditorija: Tā izpaužas vērtību, lietotājs nav zemāk HTML. 1143 00:55:48,539 --> 00:55:50,920 Tas izpaužas, ka ID un pēc tam konstatē vērtību tā. 1144 00:55:50,920 --> 00:55:51,590 >> DAVID J. Malan: Tieši tā. 1145 00:55:51,590 --> 00:55:54,300 Tā grabs mezglu, kura unikālais identifikators ir nosaukums. 1146 00:55:54,300 --> 00:55:56,900 Tas izpaužas vērtību tajā, kas ir, iespējams, kāda lietotājs 1147 00:55:56,900 --> 00:55:58,190 drukāti viņam sevi. 1148 00:55:58,190 --> 00:56:01,020 Un pēc tam to uzglabā ka mainīgo sauc par vērtību. 1149 00:56:01,020 --> 00:56:03,720 Kā malā, jūs varētu būt arī izdarīts nedaudz savādāk. 1150 00:56:03,720 --> 00:56:09,250 Pilnīgi pieņemams darot kaut ko meli VAR vērtība izpaužas 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 Un tas ir iemesls, kāpēc tas ir nedaudz garlaicīgs neizmantot jQuery. 1154 00:56:15,460 --> 00:56:16,710 "Name". Vērtība. 1155 00:56:16,710 --> 00:56:18,330 1156 00:56:18,330 --> 00:56:19,620 Tik pilnīgi pieņemams. 1157 00:56:19,620 --> 00:56:22,770 Dažādi veidi, kā to izdarīt. jQuery tikai mēdz būt nedaudz vairāk īss un 1158 00:56:22,770 --> 00:56:25,230 noteikti vairāk populārs starp programmētājiem. 1159 00:56:25,230 --> 00:56:27,590 >> Tagad, es esmu dara mazliet veselība pārbaudīt, jo problēmu 1160 00:56:27,590 --> 00:56:30,820 paziņojumā mēs skaidri teica, ja Lietotājs vēl nav drukāti viņa vai viņas 1161 00:56:30,820 --> 00:56:32,580 nosaukums, neliecina par brīdinājumu. 1162 00:56:32,580 --> 00:56:35,390 Bet jūs varat pārbaudīt, ka, tikai pārbaudi par tukšu virknes 1163 00:56:35,390 --> 00:56:37,850 quote-likt pēdiņas beigās, ja tur ir nekas patiesībā. 1164 00:56:37,850 --> 00:56:40,880 Bet, ja tas nav vienāds ar citātu-likt pēdiņas beigās, Es vēlos aicināt brīdinājumus. 1165 00:56:40,880 --> 00:56:45,610 Un interesantākais ir tas, ka Mēs esam izmantojot plus operatoru, kura 1166 00:56:45,610 --> 00:56:48,130 ko dara JavaScript? 1167 00:56:48,130 --> 00:56:48,740 Saķēdēt. 1168 00:56:48,740 --> 00:56:50,690 Tātad, tas ir tāpat kā PHPs dot operatoram. 1169 00:56:50,690 --> 00:56:52,820 Pati ideja, nedaudz atšķirīga sintakse. 1170 00:56:52,820 --> 00:56:55,280 Un es esmu tikai radot virkni, kas redzējāt uz ekrāna shot - 1171 00:56:55,280 --> 00:56:57,750 Sveiki, tik un tā. 1172 00:56:57,750 --> 00:56:59,200 >> Un tad pēdējais detail tas ir. 1173 00:56:59,200 --> 00:57:04,970 Kāpēc man atgriezties viltus iekšpusi Šīs anonīmu funkciju? 1174 00:57:04,970 --> 00:57:07,420 >> Mērķauditorija: Nav vērtības. 1175 00:57:07,420 --> 00:57:09,380 Jūs nodot to formā. 1176 00:57:09,380 --> 00:57:12,320 1177 00:57:12,320 --> 00:57:16,730 Tā vienkārši saka, ja vērtība nav vienāds ar tukšu, tad dariet to. 1178 00:57:16,730 --> 00:57:20,040 1179 00:57:20,040 --> 00:57:20,940 Tur bija tukša minētajā iesniegumā. 1180 00:57:20,940 --> 00:57:21,170 >> DAVID J. Malan: OK. 1181 00:57:21,170 --> 00:57:21,640 Uzmanīgiem, lai gan. 1182 00:57:21,640 --> 00:57:22,830 Tur neviens cits šeit. 1183 00:57:22,830 --> 00:57:25,510 Un ka ieguldītā viltus atrodas ārpus un ja apstākļi. 1184 00:57:25,510 --> 00:57:29,470 Tāpēc tas izcēla līniju, atgriezties viltus, izpilda vienalga ko, kad 1185 00:57:29,470 --> 00:57:32,310 iesniegšanas formu. 1186 00:57:32,310 --> 00:57:36,810 Kāda atgriešanās nepatiesu iekšpusi šo notikumu apdarinātājs, kā to sauc, 1187 00:57:36,810 --> 00:57:38,450 attiecīgais pasākums ir iesniegums? 1188 00:57:38,450 --> 00:57:42,350 1189 00:57:42,350 --> 00:57:44,470 >> Mērķauditorija: Jo tas notiek tikai vienu reizi. 1190 00:57:44,470 --> 00:57:45,320 >> DAVID J. Malan: notiek tikai vienu reizi. 1191 00:57:45,320 --> 00:57:46,821 Ne gluži. 1192 00:57:46,821 --> 00:57:47,292 Yeah? 1193 00:57:47,292 --> 00:57:50,589 >> Mērķauditorija: Tas novērš veidlapu iesniedzot noklusējuma uzvedību, 1194 00:57:50,589 --> 00:57:52,480 kas padarītu lapu pārlādēt. 1195 00:57:52,480 --> 00:57:53,110 >> DAVID J. Malan: Tieši tā. 1196 00:57:53,110 --> 00:57:56,490 Tāpēc es esmu pārslogošanas termins iesniegt šeit tāpēc es saku, forma ir 1197 00:57:56,490 --> 00:57:57,670 iesniegšanas. 1198 00:57:57,670 --> 00:58:02,240 Bet kā jūs ieteiktu, tas tiešām nav iesniegts patieso HTTP veidā. 1199 00:58:02,240 --> 00:58:06,870 Kad jūs noklikšķiniet uz Iesniegt, jo mūsu onSubmit apdarinātājs, mēs pārtvērēja 1200 00:58:06,870 --> 00:58:09,040 ka formas iesniegumu, lai runāt. 1201 00:58:09,040 --> 00:58:11,290 Mēs tad darot savu lietu ar JavaScript kodu. 1202 00:58:11,290 --> 00:58:14,070 Bet es esmu apzināti atgriežas nepatiesa, jo tas, ko es nevēlos, lai notiktu 1203 00:58:14,070 --> 00:58:18,430 split otrais vēlāk, ir visai formu sevi jāiesniedz tīmeklī 1204 00:58:18,430 --> 00:58:22,800 serveris ar galvenajiem vērtību pārus, mainot URL, lai būtu kaut kas līdzīgs 1205 00:58:22,800 --> 00:58:26,180 q = kaķi vai ko mēs darījām, Piemēram, klasē. 1206 00:58:26,180 --> 00:58:29,640 Es nevēlos, ka varētu notikt, jo Nav servera klausīšanās šo 1207 00:58:29,640 --> 00:58:30,690 veidlapu iesniegšanas. 1208 00:58:30,690 --> 00:58:32,320 Tas ir tīri darīts JavaScript kodu. 1209 00:58:32,320 --> 00:58:35,760 Un tas ir iemesls, kāpēc man nav pat darbība atribūtika manā formā, jo es 1210 00:58:35,760 --> 00:58:38,870 nedomā par to nekad iet uz serveri. 1211 00:58:38,870 --> 00:58:40,780 >> Tāpēc tas tiek iesniegts. 1212 00:58:40,780 --> 00:58:44,340 Bet mēs esam pārtvērēja šo veidlapu iesniegšanu un novērst noklusējuma 1213 00:58:44,340 --> 00:58:47,477 uzvedība, kas ir faktiski iet visu ceļu uz serveri. 1214 00:58:47,477 --> 00:58:48,730 >> Mērķauditorija: Tātad, saglabājot to klienta puses. 1215 00:58:48,730 --> 00:58:49,780 >> DAVID J. Malan: Keeping tā klienta puses. 1216 00:58:49,780 --> 00:58:51,030 Tieši labi. 1217 00:58:51,030 --> 00:58:53,240 1218 00:58:53,240 --> 00:58:55,757 Nākamā bija mana 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 Tāpēc šis pirmais jautājums bija kopumā raupja cilvēkiem. 1222 00:59:04,990 --> 00:59:07,270 Lai gan vēlāk tiem gāja labāk. 1223 00:59:07,270 --> 00:59:12,260 Tātad jums bija izvēlēties pareizo informāciju tipi abi šie kolonnām. 1224 00:59:12,260 --> 00:59:17,750 Un abi šie ir daži lietas par viņiem, ka 1225 00:59:17,750 --> 00:59:20,620 izdarīt izvēli grūti. 1226 00:59:20,620 --> 00:59:24,430 Tāpēc int nebija derīgs tipa par numuru. 1227 00:59:24,430 --> 00:59:29,410 Iemesls ir 12 ciparu konts numuru, int nav pietiekami liela, lai 1228 00:59:29,410 --> 00:59:31,070 uzglabāt kopējos ciparus. 1229 00:59:31,070 --> 00:59:36,570 Tāpēc derīga izvēle būtu bijis liels int, ja jūs notikt zināt, ka. 1230 00:59:36,570 --> 00:59:42,090 Vēl viena izvēle varētu būt char jomā garums ir 12. 1231 00:59:42,090 --> 00:59:44,560 Tātad vai nu no tiem būtu strādājuši. 1232 00:59:44,560 --> 00:59:46,100 Int nebūtu. 1233 00:59:46,100 --> 00:59:50,170 >> Tagad, līdzsvaru, domāju, ka atpakaļ uz pset7. 1234 00:59:50,170 --> 00:59:59,540 Tāpēc mēs īpaši izmanto decimāldaļu saglabātu vērtību akciju vai - 1235 00:59:59,540 --> 01:00:00,550 >> DAVID J. Malan: Cash. 1236 01:00:00,550 --> 01:00:01,060 >> ROB BOWDEN: Cash. 1237 01:00:01,060 --> 01:00:05,710 Mēs izmantojām decimāldaļu uzglabāt daudzumu naudas, ka lietotājs šobrīd ir. 1238 01:00:05,710 --> 01:00:10,950 Tā iemesla dēļ mēs to darām, ir jo, atcerieties, pludiņi. 1239 01:00:10,950 --> 01:00:12,480 Tur peldošā punkts precizitāti. 1240 01:00:12,480 --> 01:00:18,200 To nevar precīzi glabāt naudu vērtības, piemēram, mēs vēlamies šeit. 1241 01:00:18,200 --> 01:00:23,630 Tātad zīme aiz komata ir spējīgs precīzi veikals kaut ko, teiksim, divas zīmes aiz komata. 1242 01:00:23,630 --> 01:00:27,630 Tieši tāpēc līdzsvars, mēs gribam būt decimal, nevis peldēt. 1243 01:00:27,630 --> 01:00:30,230 >> DAVID J. Malan: Un arī, pārāk, lai gan tas varētu būt gudrs citos 1244 01:00:30,230 --> 01:00:32,760 kontekstiem domāt, varbūt tas ir iespēja int. 1245 01:00:32,760 --> 01:00:34,420 Es ņemšu tikai sekot lietas pennies. 1246 01:00:34,420 --> 01:00:38,670 Jo mēs skaidri parādīja noklusējuma vērtība ir 100.00, ka 1247 01:00:38,670 --> 01:00:40,380 nozīmē, ka tas var būt tikai int. 1248 01:00:40,380 --> 01:00:45,310 Un vēl smalkumu arī ar vairākiem bija, ka tas nav domāts 1249 01:00:45,310 --> 01:00:46,180 būt āķīgs jautājums. 1250 01:00:46,180 --> 01:00:49,860 Bet atceros, ka int MySQL, , piemēram, C, vismaz 1251 01:00:49,860 --> 01:00:51,440 ierīce, ir 32-bit. 1252 01:00:51,440 --> 01:00:53,960 Un, pat ja mēs negaidām, lai jūs precīzi zināt, cik daudz ciparu, kas 1253 01:00:53,960 --> 01:00:56,910 līdzekļiem, vai atcerēties, ka lielākais skaits jūs varat pārstāvēt potenciāli 1254 01:00:56,910 --> 01:01:00,710 ar 32-bitu skaits ir aptuveni tas, ko? 1255 01:01:00,710 --> 01:01:02,760 >> Cik lielā skaitā mēs vienmēr sakām? 1256 01:01:02,760 --> 01:01:04,530 2 līdz 32, kas ir tas aptuveni? 1257 01:01:04,530 --> 01:01:07,492 1258 01:01:07,492 --> 01:01:08,780 Jums nav jāzina precīzi. 1259 01:01:08,780 --> 01:01:10,580 Bet aptuveni ir noderīga dzīvē. 1260 01:01:10,580 --> 01:01:12,200 Tas ir aptuveni 4 miljardi. 1261 01:01:12,200 --> 01:01:14,430 Tāpēc mēs esam teica, ka pāris reizes. 1262 01:01:14,430 --> 01:01:16,360 Es zinu, es jau teicu, ka pāris reizes. 1263 01:01:16,360 --> 01:01:17,670 Un tas ir aptuveni 4 miljardi. 1264 01:01:17,670 --> 01:01:19,710 Un tas ir labs noteikums īkšķis zināt. 1265 01:01:19,710 --> 01:01:21,880 Ja jums ir 8 biti, 256 ir burvju numuru. 1266 01:01:21,880 --> 01:01:24,160 Ja jums ir 32 biti, 4 miljards dot vai ņemt. 1267 01:01:24,160 --> 01:01:27,140 Tātad, ja jūs vienkārši pierakstīt 4 miljardus, Jūs redzēsiet, ka tas ir mazāk ciparu nekā 1268 01:01:27,140 --> 01:01:30,970 12, kas nozīmē, ka tas, protams, nav pietiekami ekspresivitāte, lai attēlotu 1269 01:01:30,970 --> 01:01:34,220 12-ciparu konta numurs. 1270 01:01:34,220 --> 01:01:34,940 >> ROB BOWDEN: OK. 1271 01:01:34,940 --> 01:01:38,520 Tāpēc citi tiem gāja labāk. 1272 01:01:38,520 --> 01:01:40,900 Tātad pieņemsim, ka banka uzliek $ 20 ik mēnesi 1273 01:01:40,900 --> 01:01:42,400 apkalpošanas maksa uz visiem kontiem. 1274 01:01:42,400 --> 01:01:45,506 Ar ko SQL vaicājumu varētu banka atskaitīt $ 20 no katra skaits, pat ja 1275 01:01:45,506 --> 01:01:47,520 tas noved pie negatīvām atlikumu? 1276 01:01:47,520 --> 01:01:50,380 Tātad, būtībā, ir četri galvenie veidi vaicājumu - 1277 01:01:50,380 --> 01:01:52,840 ievietot, atlasiet, atjaunināt un dzēst. 1278 01:01:52,840 --> 01:01:56,080 Tātad, ko mēs domājam, mēs esam gatavojas izmantot šeit? 1279 01:01:56,080 --> 01:01:57,000 Atjaunināt. 1280 01:01:57,000 --> 01:01:58,260 >> Tātad, pieņemsim to apskatīt. 1281 01:01:58,260 --> 01:02:04,290 1282 01:02:04,290 --> 01:02:05,870 Tāpēc šeit mēs esam atjaunināšanu. 1283 01:02:05,870 --> 01:02:09,900 Kas galda mēs atjaunināt kontus? 1284 01:02:09,900 --> 01:02:11,670 Tā atjaunināšanu kontu. 1285 01:02:11,670 --> 01:02:15,390 Un tad sintakse saka, ko kontos, mēs atjaunināt? 1286 01:02:15,390 --> 01:02:19,520 Nu, mēs esam nosakot līdzsvaru, kas vienāds ar pašreizējo vērtību bilances mīnus 20. 1287 01:02:19,520 --> 01:02:22,860 Tāpēc tas atjauninās visas rindas kontu, atņemot 1288 01:02:22,860 --> 01:02:26,250 $ 20 no bilances. 1289 01:02:26,250 --> 01:02:29,260 >> DAVID J. Malan: Izplatīta kļūda šeit pat ja mēs dažreiz piedeva to, 1290 01:02:29,260 --> 01:02:32,990 bija tiešām ir PHP kodu šeit zvanot vaicājumu funkciju vai nodot 1291 01:02:32,990 --> 01:02:35,460 pēdiņas ap visu, kas nav nepieciešams būt tur. 1292 01:02:35,460 --> 01:02:39,780 >> ROB BOWDEN: Atcerieties, ka MySQL ir atsevišķu valodu no PHP. 1293 01:02:39,780 --> 01:02:42,410 Mēs gadās būt rakstiski MySQL PHP. 1294 01:02:42,410 --> 01:02:46,180 Un PHP tad nosūtīt to vairāk nekā uz MySQL serveri. 1295 01:02:46,180 --> 01:02:51,120 Bet jums nav nepieciešams PHP, lai sazināties ar MySQL serveri. 1296 01:02:51,120 --> 01:02:51,730 >> DAVID J. Malan: Tieši tā. 1297 01:02:51,730 --> 01:02:54,240 Līdz ar to nav mainīgie ar dolāra zīmes būtu šajā kontekstā. 1298 01:02:54,240 --> 01:02:59,550 To var vienkārši darīt visu math ietvaros datubāzes pašas. 1299 01:02:59,550 --> 01:03:00,080 >> ROB BOWDEN: OK. 1300 01:03:00,080 --> 01:03:01,300 Tātad nākamais. 1301 01:03:01,300 --> 01:03:02,731 Tas ir nākamais? 1302 01:03:02,731 --> 01:03:03,210 Jā. 1303 01:03:03,210 --> 01:03:06,570 Tātad, ar ko SQL vaicājumu varētu banka ielādētu konta numurus ITS 1304 01:03:06,570 --> 01:03:09,300 bagātākajiem klientiem, tiem, kam atlikumi lielāki nekā 1000? 1305 01:03:09,300 --> 01:03:13,280 Tātad, kurš no četriem galvenajiem veidiem mēs gatavojas vēlaties šeit? 1306 01:03:13,280 --> 01:03:14,430 Izvēlieties. 1307 01:03:14,430 --> 01:03:16,650 Tāpēc mēs vēlamies, lai izvēlētos. 1308 01:03:16,650 --> 01:03:17,610 Ko mēs gribam, lai izvēlētos? 1309 01:03:17,610 --> 01:03:19,380 Kas kolonna mēs vēlamies, lai izvēlētos? 1310 01:03:19,380 --> 01:03:20,970 Mēs īpaši vēlamies lai izvēlētos numuru. 1311 01:03:20,970 --> 01:03:23,910 Bet, ja jūs teicāt zvaigzne, mēs arī atzina, ka. 1312 01:03:23,910 --> 01:03:25,820 >> Tātad izvēlieties numuru no kāda galda? 1313 01:03:25,820 --> 01:03:26,640 Konti. 1314 01:03:26,640 --> 01:03:28,370 Un tad nosacījums, mēs gribam? 1315 01:03:28,370 --> 01:03:30,140 Ja atlikums ir lielāks par 1000. 1316 01:03:30,140 --> 01:03:31,720 Mēs arī pieņēma vairāk vai vienāda. 1317 01:03:31,720 --> 01:03:35,230 1318 01:03:35,230 --> 01:03:36,190 Pēdējais. 1319 01:03:36,190 --> 01:03:42,940 Ar ko SQL vaicājumu varētu banka tuvu, proti, dzēst katru kontu, kurā 1320 01:03:42,940 --> 01:03:44,480 ir no 0 $ līdzsvaru? 1321 01:03:44,480 --> 01:03:47,620 Tātad, kas no četriem mēs gatavojas vēlaties izmantot? 1322 01:03:47,620 --> 01:03:48,320 Izdzēst. 1323 01:03:48,320 --> 01:03:50,180 Tātad sintakse, kas? 1324 01:03:50,180 --> 01:03:51,890 Izdzēst no kāda galda? 1325 01:03:51,890 --> 01:03:53,550 Konti. 1326 01:03:53,550 --> 01:03:55,790 Un tad nosacījums, uz kura Mēs vēlamies, lai dzēstu - 1327 01:03:55,790 --> 01:03:57,280 ja atlikums ir vienāds ar nulli. 1328 01:03:57,280 --> 01:04:03,050 Tātad izdzēst visas rindas no kontiem kur atlikums ir nulle. 1329 01:04:03,050 --> 01:04:04,300 Jautājumi par kādu no šiem? 1330 01:04:04,300 --> 01:04:08,840 1331 01:04:08,840 --> 01:04:10,260 Vēlaties, lai rindā? 1332 01:04:10,260 --> 01:04:11,200 >> DAVID J. Malan: Queue guide. 1333 01:04:11,200 --> 01:04:17,110 Tātad šo vienu, mēs deva jums nedaudz iepazinušies struktūra, mēs izpētīt 1334 01:04:17,110 --> 01:04:20,450 bit klasē līdzās structs, , kas bija datu 1335 01:04:20,450 --> 01:04:21,910 struktūrām saistītie garā. 1336 01:04:21,910 --> 01:04:24,670 Atšķirība tomēr ar rindā ir ka mums bija kaut kā atcerēties, kas 1337 01:04:24,670 --> 01:04:27,900 bija priekšā rindā, kas lielā daļa, lai mēs varētu padarīt 1338 01:04:27,900 --> 01:04:30,530 efektīva izmantošana atmiņā, vismaz ja mēs, izmantojot masīvu. 1339 01:04:30,530 --> 01:04:35,460 >> Jo atgādināt, ja mums ir masīvs, ja, , piemēram, tas ir priekšpuse 1340 01:04:35,460 --> 01:04:38,470 rinda, ja es nokļūt rindā šeit un tad kāds saņem saskaņā 1341 01:04:38,470 --> 01:04:42,710 aiz manis, man aiz muguras, aiz manis, un viens cilvēks soļus no līnijas, jūs 1342 01:04:42,710 --> 01:04:45,930 varētu, kā mēs redzējām dažus no mūsu cilvēku brīvprātīgie klasē, ir visi 1343 01:04:45,930 --> 01:04:47,100 pāriet šādā veidā. 1344 01:04:47,100 --> 01:04:50,880 Bet vispār, kam visi dara kaut kas nav labākais laika izmantošanu 1345 01:04:50,880 --> 01:04:54,600 programmā, jo tas nozīmē, ka jūsu algoritms darbojas kādā 1346 01:04:54,600 --> 01:04:56,520 asimptotiskās darbības laiks? 1347 01:04:56,520 --> 01:04:57,420 Tas ir lineāra. 1348 01:04:57,420 --> 01:04:59,600 >> Un es jūtu, ka ir sava veida stulba. 1349 01:04:59,600 --> 01:05:02,890 Ja nākamais cilvēks rindā ir nākamais Persona, kas ir paredzēts, lai iet uz 1350 01:05:02,890 --> 01:05:04,660 veikals, tie nav visi ir pārvietoties kopā. 1351 01:05:04,660 --> 01:05:08,200 Vienkārši ļaut, ka persona ir noplūktas off kad laiks, piemēram. 1352 01:05:08,200 --> 01:05:09,870 Tātad, mēs varam ietaupīt daudz laika tur. 1353 01:05:09,870 --> 01:05:14,840 Un tā, lai to izdarītu, lai gan, tas nozīmē ka galva rindā vai 1354 01:05:14,840 --> 01:05:18,060 priekšējā rindā gatavojas pakāpeniski virzīties dziļāk un dziļāk 1355 01:05:18,060 --> 01:05:23,340 uz masīva un galu galā varētu faktiski aptīšanas ja mēs izmantojam 1356 01:05:23,340 --> 01:05:25,790 masīvs, lai saglabātu cilvēkus Šajā rindā. 1357 01:05:25,790 --> 01:05:28,390 Tātad jūs varat gandrīz iedomāties array kā riņķveida datu 1358 01:05:28,390 --> 01:05:29,880 struktūru ziņā. 1359 01:05:29,880 --> 01:05:33,970 >> Tātad jums kaut kā ir, lai sekotu no tā lieluma vai tiešām beigas tā 1360 01:05:33,970 --> 01:05:36,250 un tad, ja sākumā tā ir. 1361 01:05:36,250 --> 01:05:39,490 Tāpēc mēs ierosinām, ka Jūs deklarējat viena šāda rinda, zvanot 1362 01:05:39,490 --> 01:05:41,330 tas q, tikai viens burts. 1363 01:05:41,330 --> 01:05:44,570 Tad mēs ierosinām, ka priekšējais būt initialized ar nulli un ka izmērs 1364 01:05:44,570 --> 01:05:45,470 inicializēts līdz nullei. 1365 01:05:45,470 --> 01:05:47,770 >> Tātad tagad, tur nekas iekšā šajā rindā. 1366 01:05:47,770 --> 01:05:50,910 Un mēs lūdzam Jūs aizpildīt īstenošana Enqueue tālāk 1367 01:05:50,910 --> 01:05:55,250 tādā veidā, ka funkcija piebilst n līdz Q beigām un pēc tam atgriež patiess. 1368 01:05:55,250 --> 01:05:58,690 Bet, ja q ir pilna vai negatīvs, funkcija būtu vietā atgriezties viltus. 1369 01:05:58,690 --> 01:06:01,060 Un mēs tev pāris pieņēmumi. 1370 01:06:01,060 --> 01:06:04,320 Bet viņi nav īsti funkcionāli vajadzīgs, tikai, ka bool pastāv, 1371 01:06:04,320 --> 01:06:06,690 jo, tehniski, bool nav pastāv C, ja vien jūs arī 1372 01:06:06,690 --> 01:06:07,310 skaidrs header failu. 1373 01:06:07,310 --> 01:06:09,350 Tāpēc, ka bija tikai pārliecināties, ka Tika ne tas triks 1374 01:06:09,350 --> 01:06:10,940 Jautājums veida lieta. 1375 01:06:10,940 --> 01:06:16,280 >> Tātad Enqueue, mēs ierosināts paraugā risinājumus, lai īstenotu šādi. 1376 01:06:16,280 --> 01:06:20,420 Viens, mēs vispirms pārbaudiet vieglumu, zemo piekārtiem augļi. 1377 01:06:20,420 --> 01:06:23,820 Ja rinda ir pilna vai numuru, kas jūs mēģināt ievietot mazāk 1378 01:06:23,820 --> 01:06:26,380 par nulli, ko mēs teicām specifikācija problēmu vajadzētu 1379 01:06:26,380 --> 01:06:30,320 nedrīkst pieļaut, jo mēs tikai vēlamies nav negatīvas vērtības, tad jums vajadzētu 1380 01:06:30,320 --> 01:06:31,640 vienkārši atgriezties viltus nekavējoties. 1381 01:06:31,640 --> 01:06:33,820 Tāpēc daži salīdzinoši viegli kļūdu pārbaudi. 1382 01:06:33,820 --> 01:06:38,720 Ja tomēr vēlaties pievienot, ka faktiskais numurs, kas jums bija darīt mazliet 1383 01:06:38,720 --> 01:06:39,440 domāšana šeit. 1384 01:06:39,440 --> 01:06:41,330 Un tas ir, ja tas ir mazliet kaitinošas garīgi, jo jums ir 1385 01:06:41,330 --> 01:06:43,000 izdomāt, kā rīkoties izliektais. 1386 01:06:43,000 --> 01:06:46,870 >> Bet dīgļi idejas šeit, kas ir par interese, lai mums ir, ka izliektais 1387 01:06:46,870 --> 01:06:51,480 bieži vien nozīmē modulāra aritmētisko un mod operators procenti pusē, 1388 01:06:51,480 --> 01:06:55,140 kur var aiziet no lielāka vērtība atpakaļ uz nulli, un tad viens un divi, un 1389 01:06:55,140 --> 01:06:58,650 trīs un tad atpakaļ ap nulli, viens un divi un trīs, un tā tālāk 1390 01:06:58,650 --> 01:06:59,380 atkal un atkal. 1391 01:06:59,380 --> 01:07:02,880 Tā kā mēs ierosinām izdarīt ir ka mēs gribam, lai indeksēt 1392 01:07:02,880 --> 01:07:05,850 masīvs sauc numurus, ja Mūsu veseli skaitļi meli. 1393 01:07:05,850 --> 01:07:10,740 Bet tur nokļūt, mēs vispirms vēlamies darīt neatkarīgi no izmēra rindā ir tikai 1394 01:07:10,740 --> 01:07:14,080 Pēc tam pievienot to, ka neatkarīgi priekšpuse sarakstā. 1395 01:07:14,080 --> 01:07:17,880 Un ietekme, kas ir likt mums pareizā stāvoklī rindā un 1396 01:07:17,880 --> 01:07:20,970 nevar pieņemt, ka pirmais cilvēks rindā ir sākumā, kuru viņš 1397 01:07:20,970 --> 01:07:24,130 Viņa pilnīgi varētu būt, ja mēs Tika arī novirzot ikvienam. 1398 01:07:24,130 --> 01:07:26,710 Bet mēs esam tikai darba vietu radīšanā par sevi, ja mēs ņēmām 1399 01:07:26,710 --> 01:07:27,800 ka īpaša ceļš. 1400 01:07:27,800 --> 01:07:29,330 >> Tātad, mēs varam saglabāt to salīdzinoši vienkārši. 1401 01:07:29,330 --> 01:07:32,180 Mums ir jāatceras, ka mēs tikko pievienotas int rindai. 1402 01:07:32,180 --> 01:07:35,850 Un tad mēs vienkārši atgriezties true. 1403 01:07:35,850 --> 01:07:38,560 Tikmēr dequeue, mēs jautājām jūs darīt šādi. 1404 01:07:38,560 --> 01:07:42,260 Īstenot to tādā veidā, ka tas dequeues, tas noņem un atdeve, 1405 01:07:42,260 --> 01:07:44,190 int priekšā rindā. 1406 01:07:44,190 --> 01:07:46,410 Lai noņemtu int, pietiek aizmirst to. 1407 01:07:46,410 --> 01:07:47,650 Jums nav nepieciešams ignorēt to mazliet. 1408 01:07:47,650 --> 01:07:48,820 Tāpēc tas joprojām ir patiesībā. 1409 01:07:48,820 --> 01:07:51,930 Tāpat kā datus par cieto disku, mēs esam tikai ignorējot faktu, 1410 01:07:51,930 --> 01:07:52,970 ka tas ir tagad. 1411 01:07:52,970 --> 01:07:55,520 Un, ja q ir tukšs, mums vajadzētu vietā atgriezties negatīvu 1. 1412 01:07:55,520 --> 01:07:56,750 Tāpēc šis jūtas patvaļīgs. 1413 01:07:56,750 --> 01:08:01,640 Kāpēc atgriešanās Negatīva 1 vietā nepatiess? 1414 01:08:01,640 --> 01:08:02,620 Jā. 1415 01:08:02,620 --> 01:08:05,070 >> Mērķauditorija: Q glabāšanai pozitīvās vērtības. 1416 01:08:05,070 --> 01:08:10,950 Jo jums ir tikai saglabāt pozitīvās vērtības ar q, negatīvā ir kļūda. 1417 01:08:10,950 --> 01:08:11,510 >> DAVID J. Malan: Labi, taisnība. 1418 01:08:11,510 --> 01:08:14,850 Tāpēc, ka mēs esam tikai glabāšanai pozitīvs vērtības vai nulle, tad tas ir naudas sods 1419 01:08:14,850 --> 01:08:18,050 atgriešanās negatīvu vērtību kā Sentinel vērtību, īpašu simbolu. 1420 01:08:18,050 --> 01:08:21,630 Bet jūs vēstures pārrakstīšana tur, tāpēc, ka iemesls, kādēļ mēs esam tikai 1421 01:08:21,630 --> 01:08:25,890 nav negatīvas vērtības atgriežas ir tāpēc, ka mēs gribam, lai 1422 01:08:25,890 --> 01:08:27,670 ir kontrolputnus vērtības. 1423 01:08:27,670 --> 01:08:32,617 Tātad precīzāk, kāpēc ne tikai atgriezties viltus gadījumos kļūdas? 1424 01:08:32,617 --> 01:08:33,099 Jā. 1425 01:08:33,099 --> 01:08:35,510 >> Mērķauditorija: Jūs esat neizdevās atgriezties vesels skaitlis. 1426 01:08:35,510 --> 01:08:36,630 >> DAVID J. Malan: Tieši tā. 1427 01:08:36,630 --> 01:08:38,569 Un tas ir, ja C izpaužas diezgan ierobežojot. 1428 01:08:38,569 --> 01:08:40,590 Ja jūs sakāt jūs gatavojas atgriezties int, jūs esat ieguvuši 1429 01:08:40,590 --> 01:08:41,279 atgriezties int. 1430 01:08:41,279 --> 01:08:43,689 Jūs nevarat saņemt iedomātā, un sākt atgriezties bool vai peldēt, vai 1431 01:08:43,689 --> 01:08:45,040 stīgu vai kaut kas tamlīdzīgs. 1432 01:08:45,040 --> 01:08:49,370 Tagad, tikmēr, JavaScript un PHP, un dažas citas valodas var, faktiski, 1433 01:08:49,370 --> 01:08:51,310 tu esi atpakaļ atšķiras veidi vērtībām. 1434 01:08:51,310 --> 01:08:54,819 Un tas patiesībā var būt noderīga, ja jūs varētu atgriezties pozitīvi Ints, nullēm, 1435 01:08:54,819 --> 01:08:59,439 negatīvas ints, vai nepatiesa vai Null pat neizsaka kļūda. 1436 01:08:59,439 --> 01:09:01,890 Bet mums nav, ka daudzpusība C. 1437 01:09:01,890 --> 01:09:04,569 >> Tātad ar dequeue, ko mēs ierosina to darīt, ir - 1438 01:09:04,569 --> 01:09:07,350 1439 01:09:07,350 --> 01:09:09,830 >> ROB BOWDEN: Jūs varat atgriezties viltus. 1440 01:09:09,830 --> 01:09:13,189 Tas ir tikai, ka nepatiesa ir hash noteikt viltus līdz nullei. 1441 01:09:13,189 --> 01:09:16,000 Tātad, ja jūs atgriezties viltus, jūs atpakaļ nulle. 1442 01:09:16,000 --> 01:09:25,470 Un nulles ir derīga lieta mūsu rindā, tā kā negatīvs 1 nav, ja 1443 01:09:25,470 --> 01:09:27,000 viltus gadījās būt negatīvs 1. 1444 01:09:27,000 --> 01:09:29,972 Bet jums nav pat jāzina, ka. 1445 01:09:29,972 --> 01:09:32,399 >> DAVID J. Malan: Tas ir kāpēc man nav pateikt. 1446 01:09:32,399 --> 01:09:36,450 >> ROB BOWDEN: Bet tas nav taisnība ka jūs nevarat atgriezties viltus. 1447 01:09:36,450 --> 01:09:37,700 >> DAVID J. Malan: Protams. 1448 01:09:37,700 --> 01:09:40,920 1449 01:09:40,920 --> 01:09:44,240 Tātad dequeue, pamanīt mēs pieņemam par spēkā neesošu, jo tā argumentu. 1450 01:09:44,240 --> 01:09:45,479 Un tas ir tāpēc, ka mēs neesam iet kaut ko iekšā 1451 01:09:45,479 --> 01:09:48,359 Mēs vienkārši vēlamies, lai novērstu elementu priekšā rindā. 1452 01:09:48,359 --> 01:09:49,819 Tātad, kā mēs varbūt iet par to izdarīt? 1453 01:09:49,819 --> 01:09:51,290 Nu, pirmkārt, pieņemsim to izdarītu ātri veselība pārbaudītu. 1454 01:09:51,290 --> 01:09:53,350 Ja rinda izmērs ir 0, tad ir neviens darbs, kas jādara. 1455 01:09:53,350 --> 01:09:54,210 Atgriešanās negatīvs 1. 1456 01:09:54,210 --> 01:09:54,800 Darīts. 1457 01:09:54,800 --> 01:09:56,340 Tāpēc, ka ir dažas rindiņas manā programmā. 1458 01:09:56,340 --> 01:09:58,180 Tātad tikai četras līnijas paliek. 1459 01:09:58,180 --> 01:10:01,310 >> Tātad, šeit es nolemt Samazināt izmēra. 1460 01:10:01,310 --> 01:10:04,620 Un decrementing izmēru efektīvi nozīmē, ka es esmu aizmirstot 1461 01:10:04,620 --> 01:10:06,010 kaut kas ir tur. 1462 01:10:06,010 --> 01:10:09,910 Bet man ir arī jāatjaunina, kur priekšā numuriem ir. 1463 01:10:09,910 --> 01:10:11,620 Tātad, lai to izdarītu, man ir nepieciešams darīt divas lietas. 1464 01:10:11,620 --> 01:10:16,390 Man vispirms ir nepieciešams atcerēties, kāda numuru ir priekšā rindā, 1465 01:10:16,390 --> 01:10:17,860 jo man ir nepieciešams, lai atgrieztos, ka lieta. 1466 01:10:17,860 --> 01:10:20,910 Tāpēc es nevēlos, lai nejauši aizmirst par to, un pēc tam pārrakstīt. 1467 01:10:20,910 --> 01:10:22,840 Es esmu tikai gatavojas atcerēties int. 1468 01:10:22,840 --> 01:10:27,310 >> Un tagad, es gribu, lai atjauninātu q.front kas q.front +1. 1469 01:10:27,310 --> 01:10:30,070 Tātad, ja tas bija pirmais cilvēks līnija, tagad, es gribu darīt plus 1 līdz 1470 01:10:30,070 --> 01:10:31,930 norāda uz nākamo personu rindā. 1471 01:10:31,930 --> 01:10:33,420 Bet man rīkoties, ka izliektais. 1472 01:10:33,420 --> 01:10:37,270 Un, ja jauda ir globāla nemainīgs, kas notiek, lai ļauj man, lai pārliecinātos, 1473 01:10:37,270 --> 01:10:41,140 kā es norādīt līdz pēdējai personai līnija, moduļa darbība dos 1474 01:10:41,140 --> 01:10:43,840 mani atpakaļ līdz nullei priekšējā rindā. 1475 01:10:43,840 --> 01:10:46,050 Un kas apstrādā izliektais šeit. 1476 01:10:46,050 --> 01:10:48,950 Un tad es turpinu atgriezties n. 1477 01:10:48,950 --> 01:10:51,530 >> Tagad, stingri runājot, man nav ir jādeklarē n. 1478 01:10:51,530 --> 01:10:53,880 Man nebija paķert to un uzglabāt to laiku, jo vērtība ir 1479 01:10:53,880 --> 01:10:54,740 joprojām. 1480 01:10:54,740 --> 01:10:57,490 Lai es varētu tikai darīt pareizās aritmētisko atgriezties bijušais vadītājs 1481 01:10:57,490 --> 01:10:58,450 no rindā. 1482 01:10:58,450 --> 01:11:01,850 Bet es tikai jutu, ka tas bija skaidrs faktiski greifers int, ielieciet to 1483 01:11:01,850 --> 01:11:04,320 in n, un pēc tam atpakaļ, ka skaidrības labad, bet 1484 01:11:04,320 --> 01:11:05,735 nav noteikti nepieciešams. 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 Viņi visi izrunājamu manā galvā. 1488 01:11:13,410 --> 01:11:15,940 1489 01:11:15,940 --> 01:11:19,110 >> ROB BOWDEN: Tātad pirmais jautājums ir bināro koku problēma. 1490 01:11:19,110 --> 01:11:22,140 Tātad, pirmais jautājums ir, mēs esam ņemot vērā, ka šie skaitļi. 1491 01:11:22,140 --> 01:11:27,160 Un mēs vēlamies, lai kaut kā ievietot tos šiem mezgliem tā, ka tas ir 1492 01:11:27,160 --> 01:11:30,110 derīgs bināro meklēšanas koku. 1493 01:11:30,110 --> 01:11:36,260 Tātad viena lieta atcerēties par bināro meklēšanas koku ir tas, ka tas nav 1494 01:11:36,260 --> 01:11:39,800 tikai, ka lieta, pa kreisi ir mazāks, un lieta 1495 01:11:39,800 --> 01:11:41,120 tiesības ir lielāka. 1496 01:11:41,120 --> 01:11:44,580 Tā ir jābūt, ka visa koku kreisā ir mazāks, un visu koku 1497 01:11:44,580 --> 01:11:45,740 pa labi, ir lielāka. 1498 01:11:45,740 --> 01:11:55,260 >> Tātad, ja man 34 here augšdaļā, un pēc tam Man 20 šeit, tā ka ir spēkā tik 1499 01:11:55,260 --> 01:11:56,970 tālu, jo 34 šeit. 1500 01:11:56,970 --> 01:11:57,920 20 būs pa kreisi. 1501 01:11:57,920 --> 01:11:58,950 Tātad tas ir mazāk. 1502 01:11:58,950 --> 01:12:03,640 Bet es nevaru tad ielieciet 59 šeit, jo pat tad, ja 59 atrodas pa labi 20, 1503 01:12:03,640 --> 01:12:06,140 tas joprojām ir pa kreisi no 34. 1504 01:12:06,140 --> 01:12:10,760 Tātad ar šo ierobežojumu prātā, Vieglākais veids, kā iespējams atrisināt šo 1505 01:12:10,760 --> 01:12:14,330 problēma ir tikai sava no šiem numuriem - 1506 01:12:14,330 --> 01:12:18,720 līdz 20, 34, 36, 52, 59, 106. 1507 01:12:18,720 --> 01:12:21,640 Un pēc tam ievietojiet tos no kreisās puses uz labo. 1508 01:12:21,640 --> 01:12:23,390 >> Tātad, 20 iet šeit. 1509 01:12:23,390 --> 01:12:24,630 34 iet šeit. 1510 01:12:24,630 --> 01:12:25,830 36 iet šeit. 1511 01:12:25,830 --> 01:12:29,360 52, 59, 106. 1512 01:12:29,360 --> 01:12:34,730 Un jūs arī varētu būt izpētījuši, ar daži tapām un realizējot, 1513 01:12:34,730 --> 01:12:38,830 Ak, pagaidiet, man nav pietiekami daudz numurus aizpildīt to vairāk nekā šeit. 1514 01:12:38,830 --> 01:12:42,170 Tāpēc man ir nepieciešams, lai reshift ko manu maršruta piezīme būs. 1515 01:12:42,170 --> 01:12:47,490 Bet paziņo, ka gala trīs, ja jūs lasīt no kreisās uz labo pusi, tas ir 1516 01:12:47,490 --> 01:12:48,740 augošā secībā. 1517 01:12:48,740 --> 01:12:52,150 1518 01:12:52,150 --> 01:12:56,540 >> Tāpēc tagad, mēs vēlamies paziņot, kāda struktūrai būs par 1519 01:12:56,540 --> 01:12:58,300 mezgliem šo koku. 1520 01:12:58,300 --> 01:13:02,720 Tātad, ko mums vajag ar bināro koku? 1521 01:13:02,720 --> 01:13:05,830 Tātad, mēs vērtība ir tipa int, tāpēc daži int vērtību. 1522 01:13:05,830 --> 01:13:07,220 Es nezinu, ko mēs saucām tā šķīdumā - 1523 01:13:07,220 --> 01:13:08,500 int n. 1524 01:13:08,500 --> 01:13:13,570 Mums ir nepieciešams rādītāju pa kreisi bērnam un rādītāju uz labo bērnam. 1525 01:13:13,570 --> 01:13:17,540 Tātad, tas notiek, lai izskatās šādi. 1526 01:13:17,540 --> 01:13:20,510 Un tas būs tiešām izskatās pirms kad bija divkārt saistīts 1527 01:13:20,510 --> 01:13:25,090 sarakstu stuff, tāpēc paziņojums - 1528 01:13:25,090 --> 01:13:27,860 Es esmu nāksies, lai ritinātu visu ceļu atpakaļ uz leju, lai problēmu 11. 1529 01:13:27,860 --> 01:13:30,980 1530 01:13:30,980 --> 01:13:36,390 >> Tāpēc pamanāt, ka tas izskatās identiski tam, izņemot mēs vienkārši izsaucat šos 1531 01:13:36,390 --> 01:13:38,590 dažādi nosaukumi. 1532 01:13:38,590 --> 01:13:41,440 Mums vēl ir vesels skaitlis vērtību un divas norādes. 1533 01:13:41,440 --> 01:13:44,850 Tas ir tikai, ka tā vietā, lai ārstētu norādes, kā norādot uz nākamo lieta 1534 01:13:44,850 --> 01:13:47,955 un iepriekšējā lieta, mēs esam apstrādājot uz norādes, lai norādītu uz kreiso bērnam 1535 01:13:47,955 --> 01:13:49,205 un labais bērns. 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 Tātad tas ir mūsu struct mezglā. 1539 01:13:59,650 --> 01:14:03,920 Un tagad, vienīgā funkcija mums īstenot tam ir traversa, kas 1540 01:14:03,920 --> 01:14:08,320 mēs gribam iet pa koku, drukāšanas out vērtībām no koka, lai. 1541 01:14:08,320 --> 01:14:15,241 >> Tātad meklē šeit, mēs gribētu, lai drukātu out 20, 34, 36, 52, 59 un 106. 1542 01:14:15,241 --> 01:14:17,970 Kā mēs to paveiktu? 1543 01:14:17,970 --> 01:14:18,890 Tātad, tas ir diezgan līdzīgs. 1544 01:14:18,890 --> 01:14:22,910 Ja redzējāt pagājušajā eksāmenu problēmu kas jums vēlējās izdrukāt 1545 01:14:22,910 --> 01:14:25,940 viss koks ar komatiem starp viss, faktiski tas bija pat 1546 01:14:25,940 --> 01:14:27,320 vieglāk, nekā to. 1547 01:14:27,320 --> 01:14:30,950 Tātad, šeit ir risinājums. 1548 01:14:30,950 --> 01:14:33,110 Tas bija ievērojami atvieglo ja jūs to rekursīvi. 1549 01:14:33,110 --> 01:14:36,650 Es nezinu, ja kāds mēģināja to darīt iteratīvi. 1550 01:14:36,650 --> 01:14:38,340 >> Bet vispirms mums ir mūsu vispārējo gadījumu. 1551 01:14:38,340 --> 01:14:39,660 Ko darīt, ja sakne ir nulle? 1552 01:14:39,660 --> 01:14:40,610 Tad mēs esam tikai gatavojas atgriezties. 1553 01:14:40,610 --> 01:14:42,300 Mēs nevēlamies, lai drukāt neko. 1554 01:14:42,300 --> 01:14:45,940 Citādi mēs ejam, lai šķērsotu rekursīvi leju. 1555 01:14:45,940 --> 01:14:48,140 Drukāt visu kreiso apakškoka. 1556 01:14:48,140 --> 01:14:51,440 Tāpēc drukāt visu mazāk par manu pašreizējo vērtību. 1557 01:14:51,440 --> 01:14:53,930 Un tad es esmu gatavojas drukāt sevi. 1558 01:14:53,930 --> 01:14:57,310 Un tad es esmu gatavojas recurse leju manu viss labais subtree, lai viss 1559 01:14:57,310 --> 01:14:58,810 lielāka par manu vērtību. 1560 01:14:58,810 --> 01:15:03,870 Un tas notiek, lai drukātu out viss kārtībā. 1561 01:15:03,870 --> 01:15:05,860 Jautājumi par to, kā tas patiesībā accomplishes šo? 1562 01:15:05,860 --> 01:15:09,892 1563 01:15:09,892 --> 01:15:12,545 >> Mērķauditorija: Man ir jautājums gada [nedzirdama]. 1564 01:15:12,545 --> 01:15:15,090 1565 01:15:15,090 --> 01:15:23,550 >> ROB BOWDEN: Tik viens veids, kā tuvojas jebkurš rekursīvas problēma ir tikai domāt 1566 01:15:23,550 --> 01:15:26,275 par to, piemēram, jums ir jādomā par visiem stūru gadījumos. 1567 01:15:26,275 --> 01:15:32,150 1568 01:15:32,150 --> 01:15:38,110 Tāpēc uzskatu, ka mēs vēlamies, lai izdrukāt visu šo koku. 1569 01:15:38,110 --> 01:15:42,030 Tāpēc viss, ko mēs gribam pievērsties tas ir īpaši mezglu - 1570 01:15:42,030 --> 01:15:43,740 36. 1571 01:15:43,740 --> 01:15:47,420 Rekursīvie zvanus, mēs izliekamies tie vienkārši strādāt. 1572 01:15:47,420 --> 01:15:54,000 Tātad šeit tas rekursīvas zvans gaitas, mēs pat bez domāšanas 1573 01:15:54,000 --> 01:15:58,640 par to, tikai šķērso pa kreisi trīs, iedomājieties, ka jau drukā 20 1574 01:15:58,640 --> 01:16:00,730 un 34 mums. 1575 01:16:00,730 --> 01:16:03,350 Un tad, kad mēs beidzot rekursīvi zvaniet traversa par 1576 01:16:03,350 --> 01:16:07,890 labi, ka būs pareizi drukāt 52, 59 un 106 par mums. 1577 01:16:07,890 --> 01:16:13,620 >> Tātad, ņemot vērā, ka tas var drukāt 20, 34, un citi var izdrukāt 52, 59, 108, 1578 01:16:13,620 --> 01:16:17,180 viss, kas mums ir nepieciešams, lai varētu to izdarīt, ir drukāt ourself vidū, kas. 1579 01:16:17,180 --> 01:16:21,250 Tāpēc izdrukāt visu pirms mums. 1580 01:16:21,250 --> 01:16:27,710 Drukāt ourself, tāpēc pašreizējā mezglā print 36, regulāri Printf, un pēc tam 1581 01:16:27,710 --> 01:16:31,170 drukāt visu pēc mums. 1582 01:16:31,170 --> 01:16:32,730 >> DAVID J. Malan: Tas ir, ja rekursija izpaužas tiešām skaista. 1583 01:16:32,730 --> 01:16:36,270 Tā tas ir pārsteidzošs lēciens ticības, kur jūs visniecīgākās mazliet darba. 1584 01:16:36,270 --> 01:16:38,460 Un tad jūs let kāds cits darīt pārējo. 1585 01:16:38,460 --> 01:16:40,180 Un, ka kāds cits ir ironiski, jūs. 1586 01:16:40,180 --> 01:16:44,260 1587 01:16:44,260 --> 01:16:48,360 Tik nopietnu gariņš punktiem, ja ritinot augšup uz jautājumiem - 1588 01:16:48,360 --> 01:16:50,530 >> ROB BOWDEN: Uz jautājumiem? 1589 01:16:50,530 --> 01:16:53,490 >> DAVID J. Malan: Un uz leju, maz skaitļi, vai kāds zina, kur 1590 01:16:53,490 --> 01:16:55,190 šie skaitļi ir no? 1591 01:16:55,190 --> 01:16:56,610 >> ROB BOWDEN: Man ir burtiski ne jausmas. 1592 01:16:56,610 --> 01:16:59,794 >> DAVID J. Malan: Tie parādās visā viktorīnas. 1593 01:16:59,794 --> 01:17:01,150 >> Mērķauditorija: Vai tie paši skaitļi? 1594 01:17:01,150 --> 01:17:01,910 >> DAVID J. Malan: Šie skaitļi. 1595 01:17:01,910 --> 01:17:03,260 Maz Lieldienu olu. 1596 01:17:03,260 --> 01:17:08,100 Tātad tiem no jums skatīties tiešsaistē mājās, ja jūs varat pateikt mums pa e-pastu 1597 01:17:08,100 --> 01:17:12,680 heads@CS50.net kāda nozīme no šīs atkārtojas sešas skaitļi ir 1598 01:17:12,680 --> 01:17:18,560 Visā Viktorīna 1, mēs duša jūs ar pārsteidzošu uzmanību galīgo 1599 01:17:18,560 --> 01:17:21,610 lekciju un stress bumbu. 1600 01:17:21,610 --> 01:17:25,460 1601 01:17:25,460 --> 01:17:27,790 Jauki, smalks. 1602 01:17:27,790 --> 01:17:29,570 >> ROB Bowden: Kādi pēdējie jautājumi par kaut ko viktorīnu? 1603 01:17:29,570 --> 01:17:32,608