1 00:00:00,000 --> 00:00:02,270 >> [Apžvalga: Viktorina 1] 2 00:00:02,270 --> 00:00:04,620 [Ali Nahm, Oreoluwa Barbarinsa Lucas Freitas Rob Bowden] [Harvardo universiteto] 3 00:00:04,620 --> 00:00:07,660 [Tai CS50.] [CS50.TV] 4 00:00:07,660 --> 00:00:11,610 [Lucas Freitas] Sveiki visi. Tai peržiūra viktorina 1. 5 00:00:11,610 --> 00:00:15,040 Lygiai taip pat dėl ​​atsakomybės atsisakymo, tai - aš turiu galvoje, mes ketiname bandyti padengti 6 00:00:15,040 --> 00:00:17,770 kiek medžiaga, kaip įmanoma, tačiau tai nereiškia, kad 7 00:00:17,770 --> 00:00:20,780 mes ketiname padengti visų dalykų, kad gali būti viktorina 1. 8 00:00:20,780 --> 00:00:25,270 Taigi, įsitikinkite, kad jūs taip pat pažvelgti į paskaitą išvaizdą, profiliuočiai, viską, ką gali. 9 00:00:25,270 --> 00:00:28,240 Viktorina 1 bus trečiadienį, kitą trečiadienį. 10 00:00:28,240 --> 00:00:33,800 Todėl įsitikinkite, kad mokytis. Tai bus, gana daug, kaip ir pirmasis viktorinoje 11 00:00:33,800 --> 00:00:36,390 dėl savo formato, bet tai tikriausiai bus daug sunkiau. 12 00:00:36,390 --> 00:00:39,600 Bent jau pernai, kai aš paėmė 50, aš maniau jis buvo daug sunkiau. 13 00:00:39,600 --> 00:00:42,410 Taigi mokytis daug. 14 00:00:42,410 --> 00:00:45,190 >> Aš ruošiuosi padengti duomenų struktūras ir Huffman kodavimas. 15 00:00:45,190 --> 00:00:47,910 Tai yra kažkas, kad daug žmonių mano, yra sudėtinga, 16 00:00:47,910 --> 00:00:51,930 bet aš ruošiuosi pabandyti padaryti tai taip paprasta, kaip įmanoma. 17 00:00:51,930 --> 00:00:56,330 Pirmiausia, ką mes norime jus vaikinai žinoti viktorina 1 yra 18 00:00:56,330 --> 00:01:00,970 suprasti konceptualią aprašymai kiekvienam iš duomenų struktūrų, kad aš ketina pateikti. 19 00:01:00,970 --> 00:01:03,960 Tai reiškia, kad jūs neturite iš tikrųjų 20 00:01:03,960 --> 00:01:07,020 įgyvendinti maišos lentelę jūsų viktorina 1. 21 00:01:07,020 --> 00:01:10,250 Mes nenorime, kad jums įgyvendinti visą maišos lentelę, gal mes pasistengsime 22 00:01:10,250 --> 00:01:13,090 kad jums įgyvendinti tam tikras funkcijas, 23 00:01:13,090 --> 00:01:16,940 dažniausiai operacijas, tačiau mes neketiname, kad jums įgyvendinti viską. 24 00:01:16,940 --> 00:01:21,010 Todėl labai svarbu, kad jūs suprantate už kiekvieno duomenų struktūros koncepcija 25 00:01:21,010 --> 00:01:23,510 ir taip pat, kad jūs galėsite koduoti C, 26 00:01:23,510 --> 00:01:27,880 tik dažniausiai operacijos jie turi kiekvienam duomenų struktūra. 27 00:01:27,880 --> 00:01:30,090 Ir taip pat galės peržiūrėti patarimų ir structs, 28 00:01:30,090 --> 00:01:33,470 nes jie atrodo daug šių duomenų struktūros. 29 00:01:33,470 --> 00:01:37,380 >> Pirma, susiję sąrašus. Susiję sąrašai yra iš tikrųjų labai panašus į masyvų, 30 00:01:37,380 --> 00:01:39,930 bet tarp susietą sąrašą ir masyvo skirtumas, 31 00:01:39,930 --> 00:01:45,160 visų pirma, tai, kad susijęs sąrašas turi labai lanksčią dydį, 32 00:01:45,160 --> 00:01:50,060 o masyvų jūs turite pasirinkti arba labai didelį dydį masyvo, 33 00:01:50,060 --> 00:01:53,710 taip, jūs žinote, kad jūs ketinate turėti galimybę laikyti visus savo duomenis toje matricoje, 34 00:01:53,710 --> 00:01:59,370 ar turite naudoti malloc turėti lanksčią ilgį masyvo. 35 00:01:59,370 --> 00:02:03,680 Iš susijusių sąrašų tai labai lengva tiesiog gauti daugiau elementų, 36 00:02:03,680 --> 00:02:07,210 įdėti daugiau elementų, susijusioje sąrašo arba pašalinti elementus. 37 00:02:07,210 --> 00:02:09,370 Ir iš tikrųjų, jei jūs nenorite susieti sąrašas turi būti išspręstos, 38 00:02:09,370 --> 00:02:13,950 Jūs galite ieškoti ir pašalinti elementus pastoviu metu 39 00:02:13,950 --> 00:02:16,800 taip O (1) laikas, todėl labai patogu. 40 00:02:16,800 --> 00:02:20,660 Jūs tiesiog turite būti atsargūs, visada atminkite, kad malloc ir be mazgų, 41 00:02:20,660 --> 00:02:25,510 tik todėl, kad jei jūs neturite, jums teks Atminties nutekėjimas. 42 00:02:25,510 --> 00:02:31,480 Taigi susiję sąrašai - iš mazgo apibrėžimas yra tiesiog patinka tai, ką mes turime teisę ten. 43 00:02:31,480 --> 00:02:35,110 Aš įdėti int n, bet jūs galite saugoti visus duomenis, kuriuos norite. 44 00:02:35,110 --> 00:02:37,280 Taigi, jei norite išsaugoti eilutę, tai gerai. 45 00:02:37,280 --> 00:02:41,690 Jei norite išsaugoti struct, tai gerai, dviguba, ką tik norite. 46 00:02:41,690 --> 00:02:44,630 Aš tiesiog įdėti int n, čia pavyzdžių. 47 00:02:44,630 --> 00:02:46,800 Ir jūs turite žymeklį į kitą mazgą. 48 00:02:46,800 --> 00:02:51,940 Taigi, iš esmės, susijęs sąrašas turi tam tikrus duomenis, ir tada ji atkreipia dėmesį į kitą mazgą. 49 00:02:51,940 --> 00:02:56,710 Jei tai paskutinis elementas susijęs sąrašą, jis ketina atkreipti dėmesį į NULL. 50 00:02:56,710 --> 00:02:59,060 Taigi tai iš susietą sąrašo pavyzdys. 51 00:02:59,250 --> 00:03:05,960 >> Gerai, kad dabar pažiūrėkime, ką mes turėtume daryti, jei noriu įterpti į susietą sąrašo elementą. 52 00:03:05,960 --> 00:03:08,810 Pirma, funkcija įterpti bus tipo tuščia 53 00:03:08,810 --> 00:03:11,350 nes aš nenoriu grįžti nieko. 54 00:03:11,350 --> 00:03:14,200 Ir aš ruošiuosi imtis int kaip argumentą, 55 00:03:14,200 --> 00:03:17,090 nes aš noriu žinoti, ką aš noriu įterpti. 56 00:03:17,090 --> 00:03:21,840 Taigi, kas yra pirmas dalykas, kurį turėtų daryti? Na, turėčiau malloc ant newnode, 57 00:03:21,840 --> 00:03:24,240 kad yra pirmoji eilutė. 58 00:03:24,240 --> 00:03:27,580 Aš tiesiog sukurti naują mazgą įdėti į susietą sąrašą. 59 00:03:27,580 --> 00:03:32,360 Taigi, ką aš galiu padaryti? Na, mes žinome, kad mūsų realizavimo susijusių sąrašus 60 00:03:32,360 --> 00:03:38,180 klasėje, mes visada įdėti į galvą kaip pasaulinį kintamąjį. 61 00:03:38,180 --> 00:03:41,800 Taigi, ką mes galime padaryti, tai pakeisti galvą. 62 00:03:41,800 --> 00:03:44,300 Galiu padaryti ši nauja mazgas bus naujas vadovas, 63 00:03:44,300 --> 00:03:46,670 ir jis ketina atkreipti dėmesį į ankstesniame galvos. 64 00:03:46,670 --> 00:03:50,390 Kaip mes galime tai padaryti? Pirmas dalykas, ką turite padaryti, 65 00:03:50,390 --> 00:03:54,770 yra pakeisti "n" į naują mazgas vertės, 66 00:03:54,770 --> 00:03:57,530 kuri buvo perduota funkcija. 67 00:03:57,530 --> 00:04:01,050 Tada newnode yra šalia bus galva. 68 00:04:01,050 --> 00:04:05,800 Vadovas bus newnode. Taigi, tai gana paprasta. 69 00:04:05,800 --> 00:04:10,090 Išbraukiant mazgas, mes galime padaryti, tai kaip - 70 00:04:10,090 --> 00:04:14,790 Vienas iš būdų mes galime padaryti, ty, 71 00:04:14,790 --> 00:04:18,160 gerai, jei aš norėjau ištrinti, pavyzdžiui, 3, 72 00:04:18,160 --> 00:04:24,850 ką aš galėčiau padaryti, tai tiesiog nukreipkite ankstesnę mazgas 73 00:04:24,850 --> 00:04:27,580 prie kito mazgo 3. 74 00:04:27,580 --> 00:04:29,400 Taigi, aš tiesiog padaryti kažką panašaus. 75 00:04:29,400 --> 00:04:33,400 Bet kas yra su tai daro problema? 76 00:04:33,400 --> 00:04:37,400 Turiu Atminties nutekėjimas, todėl aš neturiu prieigos prie skaičiaus 3 nebėra. 77 00:04:37,400 --> 00:04:42,480 Su, kad problema yra, kad aš nesiruošia galės nemokamai, kad mazgas. 78 00:04:42,480 --> 00:04:45,360 Aš ruošiuosi Atminties nutekėjimas ir (nesuprantamas) ketina manęs nekenčia. 79 00:04:45,360 --> 00:04:49,370 Taigi, užuot, kad aš tikriausiai turėtų turėti laikiną rodyklę. 80 00:04:49,370 --> 00:04:53,210 Todėl aš įdėti temp. Ji ketina atkreipti dėmesį į mazgą, kad aš noriu ištrinti. 81 00:04:53,210 --> 00:04:58,170 Ir tada aš galiu perkelti ankstesnių mazgų taško iki kito mazgo 82 00:04:58,170 --> 00:05:00,390 mazgas, kad aš noriu ištrinti. 83 00:05:00,390 --> 00:05:02,730 Ir, pagaliau, galiu nemokamai žymiklį. 84 00:05:02,730 --> 00:05:07,480 Ar turiu nemokamai žymiklį, kad aš sukūriau teisę ten? 85 00:05:07,480 --> 00:05:09,560 Aš neturiu, paprasčiausiai todėl, kad - 86 00:05:09,560 --> 00:05:13,430 Skirtumas tas, kad šis mazgas buvo sukurtas naudojant malloc, 87 00:05:13,430 --> 00:05:17,280 todėl krūvą, o tai vienas buvo tiesiog deklaruoti kaip NULL jungiklis kamino. 88 00:05:17,280 --> 00:05:20,000 Taigi aš neturiu išlaisvinti ją. 89 00:05:20,000 --> 00:05:22,030 >> Gerai. Taigi, dabar pakalbėkime apie kaminus. 90 00:05:22,030 --> 00:05:24,680 Kaminai yra gana paprasta. 91 00:05:24,680 --> 00:05:29,540 Mes padarėme kaminai ir eiles klasėje tiesiog naudojant matricas, 92 00:05:29,540 --> 00:05:32,820 bet jums turėtų būti pažįstamas - tiesiog reikia žinoti 93 00:05:32,820 --> 00:05:40,740 kad jūs taip pat gali tai padaryti šūsnis eilėse naudojant susijusius sąrašus taip pat. 94 00:05:40,740 --> 00:05:44,460 Taigi, jei turite masyvą, kas būtų kamino? 95 00:05:44,460 --> 00:05:46,810 Kamino, pirma, turės turėti dydį. 96 00:05:46,810 --> 00:05:49,950 Jūs turite saugoti tai, kas iš kamino, kad jūs turite dabar dydis. 97 00:05:49,950 --> 00:05:52,980 Taip pat jums reikės masyvą, šiuo atveju skaičių, 98 00:05:52,980 --> 00:05:55,120 bet jei norite, tai gali būti masyvas 99 00:05:55,120 --> 00:06:00,380 eilučių, iš struct masyvas, nieko, kad norite išsaugoti. 100 00:06:00,380 --> 00:06:03,240 Apie kamino: tarp kamino ir susietą sąrašą skirtumas 101 00:06:03,240 --> 00:06:08,590 yra tai, kad kamino turite tik patekti į paskutinį elementą, kuris buvo įdėti į steką. 102 00:06:08,590 --> 00:06:11,770 Tai vadinama paskutinė, first out. 103 00:06:11,770 --> 00:06:15,090 Tiesiog kaip jūs turite padėklai kaminą, 104 00:06:15,090 --> 00:06:17,670 jei jūs įtraukėte dėklą ant kamino viršaus, 105 00:06:17,670 --> 00:06:22,670 jūs turite pirmiausia pašalinti šį dėklą turėti prieigą prie kitų padėklai. 106 00:06:22,670 --> 00:06:26,310 Tai tas pats, su šūsnis. 107 00:06:26,310 --> 00:06:31,220 Taigi, jei aš noriu, pavyzdžiui, pridėti elementą į steką, ką turėčiau daryti? 108 00:06:31,220 --> 00:06:34,070 Tai vadinama stumti, ir tai gana paprasta. 109 00:06:34,070 --> 00:06:37,130 Pirmas dalykas, kurį turite padaryti, tai patikrinti, ar kamino dydis 110 00:06:37,130 --> 00:06:40,150 nėra didesnis arba lygus kamino pajėgumus. 111 00:06:40,150 --> 00:06:45,810 Nes jei jau yra visu pajėgumu, jūs negalite pridėti ką nors kita. 112 00:06:45,810 --> 00:06:51,140 Ir tada jei ne, jums tereikia pridėti elementą į steką. 113 00:06:51,140 --> 00:06:54,530 Ir, pagaliau, prieaugio dydį. Taigi, tai gana paprasta. 114 00:06:54,530 --> 00:06:57,140 Taigi aš tiesiog pridėkite numerį 2. 115 00:06:57,140 --> 00:07:00,350 Ir jei aš noriu, kad pop, o tai reiškia, kad aš noriu pašalinti 116 00:07:00,350 --> 00:07:03,870 paskutinis elementas, kurį buvo įtraukta ir grąžina elemento vertę, 117 00:07:03,870 --> 00:07:09,180 Pirmas dalykas, aš turiu patikrinti, kad kamino nėra tuščias. 118 00:07:09,180 --> 00:07:11,510 Nes jei ji tuščia, aš negaliu grįžti nieko. 119 00:07:11,510 --> 00:07:14,820 Tokiu atveju, aš grįžti -1. 120 00:07:14,820 --> 00:07:18,960 Priešingu atveju, aš ruošiuosi Mažėja iš spec dydį, 121 00:07:18,960 --> 00:07:22,510 ir grįžti numerius (s.size). 122 00:07:22,510 --> 00:07:27,230 Kodėl aš Mažėja dydį ir tada grįžti s.size? 123 00:07:27,230 --> 00:07:30,930 Taip, nes šiuo atveju, Spec dydis 4, 124 00:07:30,930 --> 00:07:33,810 ir aš noriu grįžti ketvirtą elementą, tiesa? 125 00:07:33,810 --> 00:07:36,030 Bet kas yra ketvirto elemento indeksas? Trys. 126 00:07:36,030 --> 00:07:44,510 Kadangi aš dydis - tai bus 3, aš galiu tik grąžinti s.numbers (s.size) 127 00:07:44,510 --> 00:07:48,410 nes tai 3. Taigi tai tiesiog rodyklė. 128 00:07:48,410 --> 00:07:50,380 >> Dabar eilės. Eilės yra beveik tas pats dalykas. 129 00:07:50,380 --> 00:07:54,950 Vienintelis skirtumas yra tas, kad vietoj to, kad yra paskutinė, first out, 130 00:07:54,950 --> 00:07:57,480 jūs turite pirmiausia, first out. 131 00:07:57,480 --> 00:07:59,460 Tikriausiai, jei jūs laukia eiti į koncertą, 132 00:07:59,460 --> 00:08:04,260 jums nebus laimingas, jei jums turėjo krūvą vietoj eilėje. 133 00:08:04,260 --> 00:08:07,730 Būdamas paskutinis žmogus ateiti bus pirmasis asmuo įvesti koncertą. 134 00:08:07,730 --> 00:08:09,760 Jūs tikriausiai negali būti laimingas. 135 00:08:09,760 --> 00:08:15,020 Eilėje, pirmasis asmuo, gauti taip pat yra pirmasis asmuo išeiti. 136 00:08:15,020 --> 00:08:18,720 Taigi į eilę apibrėžimą, be kurių dydį masyvo, 137 00:08:18,720 --> 00:08:23,360 Jūs taip pat turite turėti galvą, kuri yra prie kamino galvos indeksas. 138 00:08:23,360 --> 00:08:29,000 Taigi pirmasis elementas dabar. 139 00:08:29,000 --> 00:08:32,710 Įtraukti į eilę yra tas pats, kaip siekti kaminai. 140 00:08:32,710 --> 00:08:34,980 Jei buvo labai naivus, tai būtų tiesiog pasakyti, 141 00:08:34,980 --> 00:08:39,289 gerai, aš galiu tik daryti lygiai tą patį, kaip aš padariau paspaudimu. 142 00:08:39,289 --> 00:08:44,030 Galiu tik patikrinti, ar jis nėra nei talpa. 143 00:08:44,030 --> 00:08:48,760 Jei taip, tai aš return false, priešingu atveju aš galiu tik eksportuoti naują vertę 144 00:08:48,760 --> 00:08:50,630 ir tada prieaugio dydį. 145 00:08:50,630 --> 00:08:52,750 Bet kodėl tai yra blogai? 146 00:08:52,750 --> 00:08:55,010 Pažiūrėkime šį pavyzdį. 147 00:08:55,010 --> 00:08:57,020 Bandau į eilę daiktų krūva, 148 00:08:57,020 --> 00:08:58,390 ir tada aš ruošiuosi dequeue ir į eilę. 149 00:08:58,390 --> 00:09:00,550 Yra komandų daug, bet tai labai paprasta. 150 00:09:00,550 --> 00:09:04,790 Aš ruošiuosi į eilę 5, todėl pridėti 5, tada 7, 151 00:09:04,790 --> 00:09:09,310 1, 4, 6, ir tada aš noriu dequeue kažką, 152 00:09:09,310 --> 00:09:12,000 o tai reiškia, kad aš ruošiuosi pašalinti pirmąjį elementą. 153 00:09:12,000 --> 00:09:14,640 Taigi, aš ruošiuosi pašalinti numerį 3, tiesa? 154 00:09:14,640 --> 00:09:17,320 Pirmasis elementas. Gerai. 155 00:09:17,320 --> 00:09:21,450 Dabar, jei aš stengiuosi į eilę kažkas, kas nutiks? 156 00:09:21,450 --> 00:09:24,290 Pagal mano įgyvendinimą, 157 00:09:24,290 --> 00:09:31,040 Aš buvau ketinate daryti kitą numerį indekso q.size. 158 00:09:31,040 --> 00:09:35,140 Šiuo atveju, dydis 8, 159 00:09:35,140 --> 00:09:38,640 taip 8 puslapis bus čia paskutinėje vietoje. 160 00:09:38,640 --> 00:09:43,900 Jei aš stengiuosi į eilę 1 čia, aš norėčiau būti perrašyti paskutinę poziciją 161 00:09:43,900 --> 00:09:45,870 numeriu 1, kuris yra visiškai neteisinga. 162 00:09:45,870 --> 00:09:49,870 Ką aš noriu padaryti, tai apsukti ir eiti į pirmąją poziciją. 163 00:09:49,870 --> 00:09:52,870 Gal jūs tiesiog pasakyti, gerai, aš tiesiog patikrinti 164 00:09:52,870 --> 00:09:55,600 jei aš iš tikrųjų galite įdėti ką nors ten. 165 00:09:55,600 --> 00:09:58,560 Jei ne, aš tiesiog pasakyti, oh, nauji visu pajėgumu 166 00:09:58,560 --> 00:10:02,010 iš tikrųjų talpa - 1, ir jūs negalite įdėti elementą ten. 167 00:10:02,010 --> 00:10:06,150 Bet kas yra problema? Problema ta, kad jei aš tiesiog dequeue viską čia 168 00:10:06,150 --> 00:10:08,240 ir tada bandau pridėti ką nors kita, tai tik pasakyti, 169 00:10:08,240 --> 00:10:11,210 gerai, tu buvai ne visu pajėgumu, kuris yra 0. 170 00:10:11,210 --> 00:10:13,620 Taigi jūsų eilė dingo. 171 00:10:13,620 --> 00:10:16,990 Jūs turite wrap aplink, ir vyniojimo aplink būdas 172 00:10:16,990 --> 00:10:22,040 kad jūs vaikinai išmoko viziją ir kitų psets naudoju mod. 173 00:10:22,040 --> 00:10:29,090 Galite pabandyti jį namuose suprasti, kodėl jūs darytumėte q.size + q.head 174 00:10:29,090 --> 00:10:31,080 mod talpa, bet jei jums patikrinti čia, 175 00:10:31,080 --> 00:10:34,760 matome, kad tai veikia. 176 00:10:34,760 --> 00:10:37,760 Taigi paskutiniame pavyzdyje, q.size buvo 8 177 00:10:37,760 --> 00:10:47,590 ir galva buvo 1, nes ji buvo tokia pozicija čia masyvo. 178 00:10:47,590 --> 00:10:51,970 Taigi, tai bus 8 + 1, 9. Mod talpa 9 būtų 0. 179 00:10:51,970 --> 00:10:56,640 Tai būtų eiti į indeksą 0. Mes reikiamoje padėtyje. 180 00:10:56,640 --> 00:10:59,750 Ir bandykite eilę namuose. 181 00:10:59,750 --> 00:11:04,950 Kai kurie svarbūs dalykai: pabandykite suprasti skirtumą tarp kamino ir eilės skirtumą. 182 00:11:04,950 --> 00:11:11,620 Namuose, pasistenkite labai gerai susipažinęs su įgyvendinimo į eilę, dequeue, push ir pop. 183 00:11:11,620 --> 00:11:16,560 Ir taip pat suprasti, kai norite naudoti kiekvieną iš jų. 184 00:11:16,560 --> 00:11:22,830 >> Taigi leiskite pailsėti 10 sekundes iš pokemons krūva. 185 00:11:22,830 --> 00:11:26,080 O dabar grįžkime prie duomenų struktūros. 186 00:11:26,080 --> 00:11:29,770 Hash lenteles. Daug žmonių bijojo hash lenteles. 187 00:11:29,770 --> 00:11:33,650 ir problema nustatyti 6, rašybos tikrintuvas. 188 00:11:33,650 --> 00:11:35,980 Maišos lentelės ir bando, daug žmonių bijo jų. 189 00:11:35,980 --> 00:11:38,540 Jie galvoja, kad jie taip sunku suprasti. Taip? 190 00:11:38,540 --> 00:11:41,490 [Rob Bowden] Problema nustatyti 5. >> Problema nustatyti 5, taip. Ačiū Rob. 191 00:11:41,490 --> 00:11:43,370 Taip. Šeši buvo Huff n Puff, taip. 192 00:11:43,370 --> 00:11:49,340 Problema nustatyti 5 buvo Rašybos tikrintuvas, ir jums teko naudoti arba maišos lentelę arba pabandyti. 193 00:11:49,340 --> 00:11:55,360 Daug žmonių manė, kad jie buvo super sunku suprasti, bet jie iš tikrųjų labai paprasta. 194 00:11:55,360 --> 00:12:01,290 Kas yra maišos lentelė, iš esmės? Maišos lentelė sujungtų sąrašų masyvo. 195 00:12:01,290 --> 00:12:06,730 Vienintelis skirtumas tarp masyvo ir maišos lentelė 196 00:12:06,730 --> 00:12:09,730 yra tai, kad maišos lentelė turite kažką vadinama maišos funkcija. 197 00:12:09,730 --> 00:12:12,080 Kas yra maišos funkcija? 198 00:12:12,080 --> 00:12:13,970 Aš nežinau, jei jus vaikinai gali skaityti čia. 199 00:12:13,970 --> 00:12:16,090 Tai iš maišos lentelės pavyzdys. 200 00:12:16,090 --> 00:12:19,220 Taigi, jūs galite pamatyti, kad turite su 31 elementų masyvas. 201 00:12:19,220 --> 00:12:22,440 O ką mes galime padaryti, maišos lentelės turi maišos funkcija 202 00:12:22,440 --> 00:12:26,660 kad ketina išversti raktą, kiekvienas int į indeksą. 203 00:12:26,660 --> 00:12:31,740 Jei, pavyzdžiui, jei aš noriu pasirinkti B. Harrison, 204 00:12:31,740 --> 00:12:34,190 Norėčiau įdėti B. Harrison mano maišos funkcijas, 205 00:12:34,190 --> 00:12:36,960 ir maišos funkcija sugrįš 24. 206 00:12:36,960 --> 00:12:40,930 Taigi aš žinau, kad norite išsaugoti B. Harrison 24. 207 00:12:40,930 --> 00:12:46,580 Štai tarp tiesiog masyvą ir turintys maišos lentelę skirtumas. 208 00:12:46,580 --> 00:12:48,740 Maišos lentelės jūs turite funkcija, kuri ketina papasakoti 209 00:12:48,740 --> 00:12:54,740 kur laikyti duomenis, kuriuos norite išsaugoti. 210 00:12:54,740 --> 00:12:57,040 Dėl maišos funkcija, jūs norite ieškoti maišos funkcija 211 00:12:57,040 --> 00:13:00,600 tai yra determinuota ir gerai pasiskirsto. 212 00:13:00,600 --> 00:13:07,810 Kaip matote čia, matote, kad duomenų, kuriais norėjau parduotuvėje daug iš tikrųjų buvo 19 213 00:13:07,810 --> 00:13:12,470 , o ne naudojant 31 ir 30 ir 29, kurie buvo nemokamai. 214 00:13:12,470 --> 00:13:16,920 Taigi maišos funkcija, kad aš nebuvo labai gerai pasiskirsto. 215 00:13:16,920 --> 00:13:20,710 Kai mes sakome, gerai pasiskirsto, tai reiškia, kad mes norime turėti, 216 00:13:20,710 --> 00:13:26,520 maždaug, bent 1 ar 2 kiekvienam - 217 00:13:26,520 --> 00:13:32,190 patinka, 1 arba 2 skirtumas kiekvienai iš masyvų indeksai. 218 00:13:32,190 --> 00:13:43,950 Jūs norite turėti, maždaug, tą patį skaičių elementų kiekvieną susietą sąrašas masyve. 219 00:13:43,950 --> 00:13:48,600 Ir tai lengva patikrinti, ar tai galioja maišos lentelės matyti, kaip maišos lenteles. 220 00:13:48,600 --> 00:13:51,770 >> Tada medžiai. Tai medis. 221 00:13:51,770 --> 00:13:56,400 Medžiai informatikos yra aukštyn kojom dėl kokios nors priežasties. 222 00:13:56,400 --> 00:14:00,150 Taigi čia jūs turite medžio šaknį ir tada lapai. 223 00:14:00,150 --> 00:14:05,630 Jūs tiesiog reikia žinoti, kad tėvų ir vaikų nomenklatūrą. 224 00:14:05,630 --> 00:14:12,880 Kiekvienas mazgas turi savo vaikus, kurie yra mazgai, kurie yra žemiau tėvų. 225 00:14:12,880 --> 00:14:19,660 Taigi, pavyzdžiui, 2 bus tėvų už 3 ir kitų vaiko teisę ten, 226 00:14:19,660 --> 00:14:25,290 o 3 bus už 1 tėvų ir kiti vaikai, kurie yra ten. 227 00:14:25,290 --> 00:14:29,990 Ir 1 bus 3 vaikas, ir pan. 228 00:14:29,990 --> 00:14:34,610 Mes turime kažką daug įdomesnis, vadinamas dvejetainis paieškos medis, 229 00:14:34,610 --> 00:14:39,040 , kurioje visos panaudotos dėl mazgo dešinėje reikšmės 230 00:14:39,040 --> 00:14:41,660 ketiname būti dešinėje, čia - į dešinę, 231 00:14:41,660 --> 00:14:46,780 ketinate būti didesnė nei šaknų elementas. 232 00:14:46,780 --> 00:14:49,780 Taigi, jei aš turiu skaičių 5 čia dešinės pusės, visi elementai 233 00:14:49,780 --> 00:14:51,940 ketinate būti didesnis nei 5, o kairėje 234 00:14:51,940 --> 00:14:56,770 visi elementai bus mažesnis nei 5. 235 00:14:56,770 --> 00:14:58,780 Kodėl tai naudinga? 236 00:14:58,780 --> 00:15:01,660 Na, jei aš noriu patikrinti, ar skaičius 7 yra čia, pavyzdžiui, 237 00:15:01,660 --> 00:15:05,960 Aš tiesiog eikite į 5 pirmas ir aš pamatyti, yra 7 didesnis arba mažesnis nei 5? 238 00:15:05,960 --> 00:15:09,540 Tai didesnis, todėl aš žinau, tai teks būti medžio dešinėje. 239 00:15:09,540 --> 00:15:13,980 Taigi turiu daug mažiau dalykų pažvelgti. 240 00:15:13,980 --> 00:15:19,520 Įgyvendinant dvejetainis paieškos medis, mazgas, aš tik ketina turėti duomenis, 241 00:15:19,520 --> 00:15:21,750 taip int n, jūs taip pat galėtų turėti eilutę 242 00:15:21,750 --> 00:15:23,630 ar kas nors norėjo. 243 00:15:23,630 --> 00:15:28,100 Jūs tiesiog turite būti atsargūs, apibrėžiančius, kas yra didesnis, kas mažesnis. 244 00:15:28,100 --> 00:15:30,390 Taigi, jei jūs turėjote sekas, pavyzdžiui, galima nustatyti 245 00:15:30,390 --> 00:15:34,690 kad visi tie dalykai, dėl teisės ketinate turėti didesnį ilgį, 246 00:15:34,690 --> 00:15:40,940 kairėje teks mažesnes ilgio, todėl tikrai ne jums. 247 00:15:40,940 --> 00:15:44,930 >> Kaip aš galiu įgyvendinti suras BST? 248 00:15:44,930 --> 00:15:47,840 Pirmas dalykas, mes turime padaryti, tai patikrinti, ar šaknis yra NULL. 249 00:15:47,840 --> 00:15:50,920 Jei tai NULL, tai reiškia, kad dalykas, ten nėra 250 00:15:50,920 --> 00:15:53,330 nes jūs neturite net medį, tiesa? 251 00:15:53,330 --> 00:15:55,790 Taigi aš return false. 252 00:15:55,790 --> 00:15:58,740 Priešingu atveju, aš ruošiuosi patikrinti, ar skaičius yra didesnis 253 00:15:58,740 --> 00:16:01,720 nei į šaknies vertės. 254 00:16:01,720 --> 00:16:04,250 Aš ruošiuosi pabandyti surasti elementą dešinėje 255 00:16:04,250 --> 00:16:08,590 iš medžio. 256 00:16:08,590 --> 00:16:11,310 Jūs matote, kad aš naudoju rekursija čia. 257 00:16:11,310 --> 00:16:14,150 Ir tada, jei tai yra mažiau, aš pažvelgti į kairę. 258 00:16:14,150 --> 00:16:18,330 Ir, pagaliau, kitaip, jei tai ne mažiau ar ne daugiau, 259 00:16:18,330 --> 00:16:20,660 tai reiškia, kad ji pati vertė. 260 00:16:20,660 --> 00:16:23,010 Taigi aš tiesiog grąžina true. 261 00:16:23,010 --> 00:16:26,360 Jūs galite pamatyti, kad čia aš, jei jei jei. 262 00:16:26,360 --> 00:16:30,820 Ir atminkite, kad viktorina 0, mes turėjome problemą, kad turėjo, jei, jei, jei, 263 00:16:30,820 --> 00:16:32,780 ir jums turėjo rasti neefektyvumą, 264 00:16:32,780 --> 00:16:35,180 ir neefektyvumas buvo, kad jums naudoti, jei. 265 00:16:35,180 --> 00:16:39,060 Jūs turite naudoti, jei, nors, jei kitur, jei ir kitur. 266 00:16:39,060 --> 00:16:44,240 Taigi, man reikia naudoti if ir else if ir dar čia? 267 00:16:44,240 --> 00:16:46,200 Ar kas nors - Tikrai? 268 00:16:46,200 --> 00:16:51,140 [Studentų kalbant, nesigirdi] 269 00:16:51,140 --> 00:16:53,480 Tai puiku. Taigi, ji sako, kad nesvarbu, 270 00:16:53,480 --> 00:16:55,930 tik todėl, kad neefektyvumas, kad mes turėjome prieš 271 00:16:55,930 --> 00:16:59,550 buvo ta, kad, nes, galbūt, jei kai sąlyga buvo patenkinta, 272 00:16:59,550 --> 00:17:03,570 todėl jūs turite atlikti veiksmą, bet tada jūs ketinate patikrinti visas kitas sąlygas. 273 00:17:03,570 --> 00:17:06,319 Tačiau šiuo atveju, jis grįžo iš karto, todėl nesvarbu. 274 00:17:06,319 --> 00:17:09,220 Taigi jūs neturite naudoti if. 275 00:17:09,220 --> 00:17:11,740 >> Ir pagaliau, pakalbėkime apie tai, bando, 276 00:17:11,740 --> 00:17:13,800 kuris yra visiems mėgstamiausia. 277 00:17:13,800 --> 00:17:15,980 Bandymas yra masyvus medis. 278 00:17:15,980 --> 00:17:20,369 Tai labai greitai ieškoti vertybes, bet ji naudoja daug atminties. 279 00:17:20,369 --> 00:17:22,530 Ir tai paprastai filtruoti žodžius, todėl, kai jūs 280 00:17:22,530 --> 00:17:27,920 nori įgyvendinti, pavyzdžiui, aš nežinau, kaip telefonų knygos jūsų telefone 281 00:17:27,920 --> 00:17:30,440 , ir jūs norite, kad būtų galima B tipo 282 00:17:30,440 --> 00:17:32,510 ir tiesiog žmonių pavardes, kurie B. 283 00:17:32,510 --> 00:17:37,960 Tai labai paprasta įgyvendinti, kad naudojant pabandyti, pvz. 284 00:17:37,960 --> 00:17:39,820 Kaip Jūs apibrėžtumėte mazgas pabandyti? 285 00:17:39,820 --> 00:17:43,910 Jūs tiesiog turite turėti bool, kad ketina būti is_word. 286 00:17:43,910 --> 00:17:48,660 Tai rodo, kad, naudojant visus simbolius iki tos mazgas, 287 00:17:48,660 --> 00:17:51,920 Jums buvo suteikta galimybė sudaryti žodį 288 00:17:51,920 --> 00:17:57,230 ir tada jūs turėsite rodykles masyvo mazgų. 289 00:17:57,230 --> 00:18:03,120 Ar matote, kad mes turime patronuojančių mazgų masyvas, todėl mazgas * masyvas? Taip? 290 00:18:03,120 --> 00:18:06,050 Taigi, pažiūrėkime, kaip kad veiks. Dėl patikrinti rašybą, 291 00:18:06,050 --> 00:18:08,230 mes turime apie 27 elementų masyvas, 292 00:18:08,230 --> 00:18:12,150 nes mes turime visus laiškus plius kabutes. 293 00:18:12,150 --> 00:18:17,800 Prieš čia aš tik ketina naudoti 2, nes aš noriu, kad būtų galima rašyti ant lentos. 294 00:18:17,800 --> 00:18:20,230 Gerai. Taigi tai iš bandymas pavyzdys. 295 00:18:20,230 --> 00:18:25,600 Jei aš tiesiog nustatyti pirmą mazgas, aš turiu apie 2 elementų masyvas 296 00:18:25,600 --> 00:18:29,290 kurie yra 2 patarimų nulis, todėl aš tiesiog įdėti "a" ir "b". 297 00:18:29,290 --> 00:18:32,430 Ir aš ruošiuosi turėti bool, kad sako is_word. 298 00:18:32,430 --> 00:18:34,420 Tai bus false pirmąjį, 299 00:18:34,420 --> 00:18:37,370 tik todėl, kad prieš tai jūs neturite jokių simbolių. 300 00:18:37,370 --> 00:18:40,900 Taigi tuščias žodis žodis. Taigi, tai klaidinga. 301 00:18:40,900 --> 00:18:46,320 Jei aš noriu pridėti "a" į šį žodyną, ką man daryti? 302 00:18:46,320 --> 00:18:49,760 Norėčiau tiesiog malloc naują mazgas "a", 303 00:18:49,760 --> 00:18:54,630 ir tada pridėti savo žodį tiesa. 304 00:18:54,630 --> 00:19:00,180 Taigi, tai tik reiškia, kad to, "" bus tiesa. Prasmės? 305 00:19:00,180 --> 00:19:04,120 Tada, jei noriu pridėti "ba", aš turiu malloc 1 už "b", 306 00:19:04,120 --> 00:19:07,550 ir tada aš ruošiuosi įkurti boolean false, 307 00:19:07,550 --> 00:19:10,160 nes "b" pats savaime nėra žodis. 308 00:19:10,160 --> 00:19:13,010 Tada aš ruošiuosi malloc dar vieną "a", todėl "ba", 309 00:19:13,010 --> 00:19:16,290 ir tada aš ruošiuosi įkurti tai žodis tiesa. 310 00:19:16,290 --> 00:19:18,950 Kadangi "ba" yra žodis. 311 00:19:18,950 --> 00:19:21,910 Ir tada jei aš noriu pamatyti, jei "b" yra šio žodyno 312 00:19:21,910 --> 00:19:26,730 Galiu tik eiti į pirmąjį, "b". Aš einu žemyn, ir aš pažvelgti į tai žodis, ir ji sako klaidinga. 313 00:19:26,730 --> 00:19:30,110 Taigi tai nėra žodis. Jei aš noriu patikrinti "ba", 314 00:19:30,110 --> 00:19:38,010 Aš einu į pirmąjį, "b", tada eikite į "a", ir matau, tiesa, todėl žodis. Prasmės? 315 00:19:38,010 --> 00:19:41,950 Daug žmonių gauti painioti bando. Ar ne? 316 00:19:41,950 --> 00:19:44,740 >> Galiausiai Huffman kodavimas. Huffman kodavimas yra labai naudinga 317 00:19:44,740 --> 00:19:47,550 išsaugoti atmintį ir suspausti tekstinius failus, 318 00:19:47,550 --> 00:19:52,270 tik dėl to, kiek kartų jūs naudojate "a" ir "e", pavyzdžiui, daug, 319 00:19:52,270 --> 00:19:57,710 savo dokumentų, bet aš nežinau, jei jūs vaikinai naudoti "Q" arba "Z", kaip daug. 320 00:19:57,710 --> 00:20:02,040 Atsižvelgdama tik 1 baitas už kiekvieną požymį, 321 00:20:02,040 --> 00:20:08,520 kiekvienas - į 256 simbolių, kad mes turime ASCII lentelės nėra labai optimalus, 322 00:20:08,520 --> 00:20:11,410 tik todėl, kad yra keletas ženklų, kad jūs naudojate, tuo labiau, 323 00:20:11,410 --> 00:20:15,180 todėl jūs tikriausiai turėtų naudoti tuos mažiau atminties. 324 00:20:15,180 --> 00:20:17,560 Kaip naudotis Huffman kodavimas? 325 00:20:17,560 --> 00:20:20,010 Mes turime padaryti Huffman medį. 326 00:20:20,010 --> 00:20:23,370  Huffman medis mazgai 327 00:20:23,370 --> 00:20:27,760 kurie turi simbolį, kuris ketina būti, pavyzdžiui, "a", "b", "c" raidė, 328 00:20:27,760 --> 00:20:32,990 kokia raidė turite, dažnis, kad yra dažnis, kad žodis yra tekste, 329 00:20:32,990 --> 00:20:36,280 kad jums buvo sukurti Huffman medį, 330 00:20:36,280 --> 00:20:41,800 ir tada mazgas, kuris ketina atkreipti į Huffman medžio kairėje 331 00:20:41,800 --> 00:20:47,210 ir dar vienas mazgas, kad ketina atkreipti į dešinę. Taigi tiesiog norėčiau medį. 332 00:20:47,210 --> 00:20:49,440 Kaip jums sukurti Huffman medį? 333 00:20:49,440 --> 00:20:54,020 Jūs ketinate pasiimti 2 mazgų, kurie turi mažiausią dažnį. 334 00:20:54,020 --> 00:20:56,490 Jei turite kaklaraištį jūs ketinate pasiimti 2 mazgų 335 00:20:56,490 --> 00:20:59,870 kurie turi mažiausias ASCII reikšmes, taip pat. 336 00:20:59,870 --> 00:21:02,420 Tada jūs ketinate sukurti naują medį iš tų 2 mazgų 337 00:21:02,420 --> 00:21:08,030 kad ketina turėti bendrą dažnį patronuojančios mazgas. 338 00:21:08,030 --> 00:21:13,240 Ir tada jūs ketinate pašalinti 2 vaikus iš miško 339 00:21:13,240 --> 00:21:15,570 ir pakeisti juos su tėvu. 340 00:21:15,570 --> 00:21:18,930 Ir jūs ketinate pakartoti, kad, kol jūs turite tik 1 medį miške. 341 00:21:18,930 --> 00:21:23,840 Taigi pažiūrėkime, kaip galėtumėte padaryti Huffman medį ZAMYLA. 342 00:21:23,840 --> 00:21:29,220 Jūs galite pamatyti čia, kad visi laiškai turi dažnį 1, išskyrus "A", tai yra dažnis 2. 343 00:21:29,220 --> 00:21:34,090 Taigi, aš sukūriau mazgai visų laiškų, kuriuos aš dedu tvarka ASCII reikšmė ir dažnį. 344 00:21:34,090 --> 00:21:40,090 Taigi, jei aš noriu kurti pirmąjį medį, tai bus su raide "L" ir "M". 345 00:21:40,090 --> 00:21:43,100 Taigi čia. Iš poros dažnis bus 2 346 00:21:43,100 --> 00:21:49,470 nes tai 1 + 1, tada kitas 2 su mažiausių dažnių yra "Y" ir "Z". 347 00:21:49,470 --> 00:21:53,180 Ir tada aš turiu juos visus yra - turime 2 dažnį. 348 00:21:53,180 --> 00:22:00,470 Taigi, kuris iš jų yra tie, kurie turi mažiausią ASCII vertės kito? 349 00:22:00,470 --> 00:22:04,830 "A" ir "L". Taigi, aš sukurti naują mazgą, 350 00:22:04,830 --> 00:22:09,930 ir pagaliau, tai 4 ir 2, todėl 2 bus kairėje pusėje. 351 00:22:09,930 --> 00:22:12,430 Ir tai Huffman medis. 352 00:22:12,430 --> 00:22:16,060 Tada, jei aš noriu parašyti tekstą, 353 00:22:16,060 --> 00:22:24,440 kaip ir dvejetainiai konvertuoti į tekstą, naudojant Huffman medis yra labai lengva. 354 00:22:24,440 --> 00:22:30,220 Pavyzdžiui, jeigu aš sakau, kad juda į kairę yra 0 ir juda į dešinę yra 1, 355 00:22:30,220 --> 00:22:32,410 Kas yra, kad ketina atstovauti? 356 00:22:32,410 --> 00:22:35,530 Taigi, pavyzdžiui, 1, 1, labai teisingas, teisus, 357 00:22:35,530 --> 00:22:40,370 ir tada 0, todėl paliko būtų L, tada 1, 0, 0. 358 00:22:40,370 --> 00:22:43,950 Taigi, 1, 0, kad tik 1, 0, '". 359 00:22:43,950 --> 00:22:47,540 Ir tada 0, 1, todėl "Z". 360 00:22:47,540 --> 00:22:52,170 Ir tada 1, 0, 0 - ne. 361 00:22:52,170 --> 00:22:56,780 0, 0 bus "Y", todėl tingus. 362 00:22:56,780 --> 00:23:06,060 Taigi, kad viskas man, Rob ketina perimti. 363 00:23:06,060 --> 00:23:08,400 >> [Rob Bowden] Taigi, savaitė 7 dalykų. 364 00:23:08,400 --> 00:23:11,390 Mes turime daug eiti per tikrai greitai. 365 00:23:11,390 --> 00:23:13,430 Bitinis operatoriai, buferio, 366 00:23:13,430 --> 00:23:16,760 CS50 biblioteka, tada, HTML, HTTP, CSS. 367 00:23:16,760 --> 00:23:20,990 Visi kaip nuo 15 iki 20 minučių. 368 00:23:20,990 --> 00:23:24,330 Bitinis operatoriai. Yra 6 iš jų, kad jums reikia žinoti. 369 00:23:24,330 --> 00:23:31,200 Bitinis ir finansų įstaigos Mokėjimo arba XOR, kairysis SHIFT, dešiniuoju Shift ir ne. 370 00:23:31,200 --> 00:23:35,420 Teisė perkelti, o ne jūs vos matė paskaitą visiems. 371 00:23:35,420 --> 00:23:40,480 Mes eiti per jį greitai čia, bet tai gera žinoti, kad tai yra 6, kad egzistuoja. 372 00:23:40,480 --> 00:23:45,070 Atminkite, kad Bitinis operatoriai, pavyzdžiui, kai jūs darote, 3 + 4. 373 00:23:45,070 --> 00:23:49,420 Jūs nesate susijusius su 3 ir 4 dvejetainiai. 374 00:23:49,420 --> 00:23:56,550 Su Bitinis operatorių jūs iš tikrųjų susiduriame su atskirais bitai ir skaičiais 3 4. 375 00:23:56,550 --> 00:23:59,120 >> Taigi pirmasis, kad mes pasakyti Bitinis ne, 376 00:23:59,120 --> 00:24:02,340 ir visi, tai yra apversti visus bitus. 377 00:24:02,340 --> 00:24:05,500 Taigi čia, jei rašote tai C, tai būtų ne rašyti 378 00:24:05,500 --> 00:24:09,380 kaip ~ 11.011 ar kas, jums parašys tau patinka ~ 4, 379 00:24:09,380 --> 00:24:12,970 ir tada jis būtų apversti dvejetainis 4. 380 00:24:12,970 --> 00:24:24,800 Taigi čia, ~ kai kurių dvejetainis skaičius 1101101 ketina tiksliai apversti visas 1-ųjų iki 0 "ir visi 0 ųjų iki 1 s. 381 00:24:24,800 --> 00:24:27,600 Kaip ten sako, dažną tai, 382 00:24:27,600 --> 00:24:30,830 ir mes pamatyti jį šiek tiek, tai kaip mes norime sugalvoti kai skaičius 383 00:24:30,830 --> 00:24:35,460 kur visi bitai yra 1, išskyrus vieną iš jų. 384 00:24:35,460 --> 00:24:38,560 Todėl paprastai lengviau išreikšti numerį 385 00:24:38,560 --> 00:24:40,630 kur tik, kad vienas bitas yra nustatytas, 386 00:24:40,630 --> 00:24:44,650 ir tada imtis jį ~, todėl kiekvienas kitas bitas yra nustatytas, išskyrus tą vieną. 387 00:24:44,650 --> 00:24:50,300 Taigi, tai, ką mes ketiname naudoti daugiau bitų. 388 00:24:50,300 --> 00:24:58,220 >> Bitinis arba. Čia yra 2 dvejetainiai skaičiai, ir šie 2 numeriai 389 00:24:58,220 --> 00:25:00,780 yra gana tipiškas, nes jie sudaro visas įmanomas 390 00:25:00,780 --> 00:25:07,290 derinys bitų jums gali prireikti veikti. 391 00:25:07,290 --> 00:25:13,540 Čia kai aš or'd kiekvieną šiek tiek, mes tiesiog vyksta palyginti tiesiai žemyn. 392 00:25:13,540 --> 00:25:15,410 Taigi kairėje pusėje turime 1 ir 1. 393 00:25:15,410 --> 00:25:20,510 Kai aš Bitinis | tiems, ką aš ketina gauti? Vienas. 394 00:25:20,510 --> 00:25:25,320 Tada Bitinis | 0 ir 1 ketina duoti man? Vienas. 395 00:25:25,320 --> 00:25:27,840 Bitinis 1 ir 0 bus tas pats, vienas. 396 00:25:27,840 --> 00:25:31,880 Bitinis 0 | 0 ketina duoti man 0. 397 00:25:31,880 --> 00:25:37,300 Taigi tik tuo atveju, kai gaunu 0 yra 0 | 0 atvejis. 398 00:25:37,300 --> 00:25:40,020 Ir jūs galite galvoti, kad, kaip savo loginių atokiausių regionų. 399 00:25:40,020 --> 00:25:44,830 Taigi, jei manote, 1 kaip tiesa ir 0 kaip klaidingą, tas pats taikoma čia. 400 00:25:44,830 --> 00:25:50,040 Taigi tiesa, ar tiesa yra tiesa, teisingas ar klaidingas, yra tiesa. 401 00:25:50,040 --> 00:25:57,150 Neteisinga ar tiesa yra tiesa, melagingą arba klaidingą yra vienintelis dalykas, kuris tikrai klaidinga. 402 00:25:57,150 --> 00:26:00,100 Štai pavyzdys, kad jūs turėtumėte žinoti, 403 00:26:00,100 --> 00:26:05,160 kaip gana geras pavyzdys, kai Bitinis operatoriai naudojami. 404 00:26:05,160 --> 00:26:08,660 Čia jei mes ar kapitalas "" su Ox20, 405 00:26:08,660 --> 00:26:11,830 ir mes pažvelgti į juos per sekundę, kurią mes gauname kažką. 406 00:26:11,830 --> 00:26:16,020 Ir jei mes arba mažosiomis raidėmis "a" su Ox20, kurią mes gauname kažką. 407 00:26:16,020 --> 00:26:26,750 Taigi galime atsigriebti ASCII lentelę. 408 00:26:26,750 --> 00:26:34,000 Gerai. Čia mes matome, kad "A" yra - 409 00:26:34,000 --> 00:26:36,920 čia mes turime "A" yra dešimtainis 65. 410 00:26:36,920 --> 00:26:45,120 Bet aš eisiu su šešioliktainis, kuris Ox41. 411 00:26:45,120 --> 00:26:48,280 Tikime, kad mes matėme jį klasėje. Manau, mes matėme tai savo klasėje 412 00:26:48,280 --> 00:26:52,730 kad tai gana lengva paversti šešioliktainį į dvejetainį. 413 00:26:52,730 --> 00:26:55,280 Taigi čia, jei norite įdėti į 4 dvejetainiai 414 00:26:55,280 --> 00:26:59,550 tai tiesiog bus 0100. 415 00:26:59,550 --> 00:27:03,620 Tai 1 vieta, 2 vieta, 4 vieta, todėl tai yra 4. 416 00:27:03,620 --> 00:27:08,550 Tada galite padalyti 1 į dvejetainės, kuri ketina būti 0001. 417 00:27:08,550 --> 00:27:14,280 Ir todėl tai bus "A" dvejetainėje atstovavimas. 418 00:27:14,280 --> 00:27:22,720 Atsižvelgiant mažosiomis raidėmis "a", tai dabar bus Ox61, 419 00:27:22,720 --> 00:27:27,050 jei, skirstant juos į viršų į savo dvejetainiu, todėl 6 - 420 00:27:27,050 --> 00:27:37,830 Leiskite iš tikrųjų tai padaryti - nėra jokio trintukas? Trintukas. 421 00:27:37,830 --> 00:27:48,220 Ox61. Taigi padalijant 6 dvejetainiais bus 0 + 4 + 2 + 0. 422 00:27:48,220 --> 00:27:54,610 Ir padalijimas 1 bus 0001. 423 00:27:54,610 --> 00:27:56,520 Pažvelgus tarp šių 2 skirtumų, 424 00:27:56,520 --> 00:28:04,250 matome, kad vienintelis skirtumas tarp mažosios ir kapitalo "A" tai vienas bitas. 425 00:28:04,250 --> 00:28:11,810 Taigi, grįžtant prie čia - gerai. 426 00:28:11,810 --> 00:28:15,920 Grįžtant prie čia, jei pažvelgsime į tai, ką tiek Ox20 yra 427 00:28:15,920 --> 00:28:22,210 taip padalijimas Ox20 į savo binary, 428 00:28:22,210 --> 00:28:27,310 yra 0010, 0000. 429 00:28:27,310 --> 00:28:33,470 Ox20, tik tiek, kad yra nustatyta tai yra tiek, kad mes esame susiję su, 430 00:28:33,470 --> 00:28:38,210 su perjungti kapitalo ir mažosiomis raidėmis "A". 431 00:28:38,210 --> 00:28:47,610 Jei aš arba "A", kuri yra tai viena, "', 432 00:28:47,610 --> 00:28:50,580 jei aš arba "" su Ox20, 433 00:28:50,580 --> 00:28:53,490 ką aš ketina gauti? 434 00:28:53,490 --> 00:28:58,960 [Studentų, nesigirdi] >> mažosiomis '', nes jis ketina apversti šį šiek tiek į 1. 435 00:28:58,960 --> 00:29:04,170 Ir jei aš, arba "" su Ox20, ką aš ketina gauti? 436 00:29:04,170 --> 00:29:08,780 Mažosiomis raidėmis, nes tik ORING "" su Ox20, 437 00:29:08,780 --> 00:29:14,580 Aš tiesiog bus ORING šį vieną tiek į 1, tai jau 1, todėl nesvarbu. 438 00:29:14,580 --> 00:29:17,960 Taigi, mes turime "A" ir "A". 439 00:29:17,960 --> 00:29:24,820 >> Bitinis ir. Vėlgi, mes galime galvoti apie tai, kaip mūsų logiškai ir kolega. 440 00:29:24,820 --> 00:29:28,180 Kairėje pusėje mes turime tikra ir teisinga. 441 00:29:28,180 --> 00:29:31,160 Tai bus teisinga, ir visais atvejais, 442 00:29:31,160 --> 00:29:36,270 klaidinga ir teisinga, ar tiesa ir klaidinga, arba false & klaidinga, 443 00:29:36,270 --> 00:29:38,550 nė vienas iš šių dalykų yra tiesa. 444 00:29:38,550 --> 00:29:44,170 Taigi, ką mes galų gale gauti 1000. 445 00:29:44,170 --> 00:29:48,830 Taigi, dabar, čia, čia, kur aš naudojamas patikimas Bitinis ne, 446 00:29:48,830 --> 00:29:52,230 kur mes turėjome Ox20. 447 00:29:52,230 --> 00:29:54,350 Taigi tai yra Ox20. 448 00:29:54,350 --> 00:29:59,570 Dabar tai, ką noriu daryti, Bitinis ~ iš Ox20. 449 00:29:59,570 --> 00:30:03,600 Tai vyksta apversti visus bitus. 450 00:30:03,600 --> 00:30:09,330 Taigi turiu 1101, 1111. 451 00:30:09,330 --> 00:30:18,940 Ir taip "" anded su ~ Ox20 ketina duoti man, ką? 452 00:30:18,940 --> 00:30:22,430 Tik tiek mums tikrai reikia galvoti apie tai, tai viena, 453 00:30:22,430 --> 00:30:26,020 nes jei visi šie bitai yra nustatyti 1, 454 00:30:26,020 --> 00:30:29,000 tada mes ketiname gauti būtent tai, kas "buvo 455 00:30:29,000 --> 00:30:31,260 išskyrus, galbūt, ką šis bitas yra. 456 00:30:31,260 --> 00:30:34,460 Nes jei tai buvo 1, dabar jis bus nustatytas į 0, 457 00:30:34,460 --> 00:30:39,810 nes kokia tai, anded su tai bus 0. 458 00:30:39,810 --> 00:30:43,280 Taigi, kas yra "A" ir ~ Ox20 ketina duoti man? 459 00:30:43,280 --> 00:30:48,200 [Studentai atsakyti, nesigirdi] >> O kas yra "" ir - tai "A". 460 00:30:48,200 --> 00:30:52,170 Ir kas yra "" & ~ Ox20 ketina duoti man? 461 00:30:52,170 --> 00:30:56,720 "A." Kadangi tai yra šiuo metu 1. 462 00:30:56,720 --> 00:30:59,570 Anding su šiuo 0 ketina padaryti tai 0, 463 00:30:59,570 --> 00:31:02,530 ir dabar mes ketiname gauti "A". 464 00:31:02,530 --> 00:31:06,600 >> Abu yra "", ir paskutinis, bet ne mažiau kaip tokio tipo, 465 00:31:06,600 --> 00:31:10,830 mes turime XOR. Tai labai panašus arba 466 00:31:10,830 --> 00:31:14,400 išskyrus tai reiškia tik arba. 467 00:31:14,400 --> 00:31:18,420 Tai, ką jūs paprastai galvojame, kaip ir realiame pasaulyje. 468 00:31:18,420 --> 00:31:23,190 Taigi, jūs arba "x" ar "y", o ne abu. 469 00:31:23,190 --> 00:31:28,700 Čia 1 ^ 1 bus 0. 470 00:31:28,700 --> 00:31:33,650 Kadangi tiesa, tai - jis neveikia, taip pat su logiška true ir false 471 00:31:33,650 --> 00:31:37,150 kaip finansų įstaigos Mokėjimo ir ir arba padaryti, 472 00:31:37,150 --> 00:31:40,100 bet tiesa ^ tiesa yra klaidinga. 473 00:31:40,100 --> 00:31:44,810 Kadangi mes tik norime grąžina true, jei tik vienas iš jų yra tiesa. 474 00:31:44,810 --> 00:31:50,950 Taigi 1 ^ 1 yra 0. Ką apie 0 ^ 1? 475 00:31:50,950 --> 00:31:56,010 Yra 1. 1 ^ 0 yra 1, 0 ^ 0 yra 0. 476 00:31:56,010 --> 00:32:03,890 Taigi visais atvejais, 0 Bitinis kažkas 0 bus 0. 477 00:32:03,890 --> 00:32:10,270 1 Bitinis kažkas 0 arba 0 Bitinis 1, 478 00:32:10,270 --> 00:32:14,660 jei ji | arba ^, tai bus 1, o jei tai ir tai bus 0. 479 00:32:14,660 --> 00:32:20,850 Ir tik tuo atveju, kai 1 Bitinis 1 nėra 1 yra su išskirtiniu ar. 480 00:32:20,850 --> 00:32:24,580 Štai 0110. 481 00:32:24,580 --> 00:32:36,520 Taigi čia dabar, naudojant XOR - todėl mes atgal į 20. 482 00:32:36,520 --> 00:32:43,480 "" ^ Ox20 yra šių 2 bitai mes palyginti. 483 00:32:43,480 --> 00:32:50,020 Taigi 1 ^ 0 ketina duoti man, ką? Vienas. 484 00:32:50,020 --> 00:32:58,430 "" ^ Ox20 ketina duoti man? Mažosiomis raidėmis. 485 00:32:58,430 --> 00:33:04,010 "" ^ Ox20 ketina duoti man? Kapitalo A. 486 00:33:04,010 --> 00:33:09,310 Nes viskas, ką šis daro, tai XORing su Ox20 487 00:33:09,310 --> 00:33:15,380 veiksmingai prakeiktas ką šis bitas yra. 488 00:33:15,380 --> 00:33:21,240 Jei tai yra 0, tai dabar taps 1. 489 00:33:21,240 --> 00:33:26,160 Kadangi tai yra 1, 1 ^ 1 yra 0. 490 00:33:26,160 --> 00:33:33,280 Taigi, mūsų "" tapo "", o mūsų '"tapo" ". 491 00:33:33,280 --> 00:33:36,910 Taigi XOR yra tikrai patogus būdas tik prakeiktas bylos. 492 00:33:36,910 --> 00:33:39,960 Jūs tiesiog norite pakartoti per raidžių eilutę 493 00:33:39,960 --> 00:33:44,330 ir pakaitomis į kiekvieną simbolį bylą, 494 00:33:44,330 --> 00:33:50,680 jūs tiesiog XOR viskas su Ox20. 495 00:33:50,680 --> 00:33:55,220 >> Dabar mes palikome pamainą. Kairysis SHIFT yra tik ketina, iš esmės, 496 00:33:55,220 --> 00:34:01,250 stumti visus numerius į, ar į kairę, ir įdėkite 0 aisiais už jų. 497 00:34:01,250 --> 00:34:05,550 Taigi čia mes turime 00.001.101. 498 00:34:05,550 --> 00:34:08,560 Mes ketiname siekti 3 0 anketa iš dešinės, 499 00:34:08,560 --> 00:34:13,580 ir mes 01.101.000. 500 00:34:13,580 --> 00:34:16,380 Be nonbinary požiūriu, 501 00:34:16,380 --> 00:34:24,699 matome, kad tai tikrai susiduriame 13 kairę persikėlė su 3, kuris suteikia mums 104. 502 00:34:24,699 --> 00:34:32,530 Taigi kairėje perjungimas, matome čia x << y yra iš esmės x * 2 ^ m. 503 00:34:32,530 --> 00:34:40,139 13 * 2 ^ 3, 2 ^ 3 yra 8, tai 13 * 8 yra 104. 504 00:34:40,139 --> 00:34:45,679 Jei tiesiog galvoti apie dvejetainius apskritai, kaip kiekvienas skaitmuo, 505 00:34:45,679 --> 00:34:49,530 jei mes pradėsime iš dešinės, tai 1 vieta, tada 2 vieta, tada 4 vieta. 506 00:34:49,530 --> 00:34:51,330 Taigi stumdami 0 aisiais iš dešinės 507 00:34:51,330 --> 00:34:55,080 mes tiesiog stumia dalykus, kurie buvo į 4 vietą į 8 vietą, 508 00:34:55,080 --> 00:34:57,920 ir tai, kad buvo ir su 8 vietą su 16 vietą. 509 00:34:57,920 --> 00:35:01,280 Kiekvieną pamainą tiesiog daugina iš 2. Taip? 510 00:35:01,280 --> 00:35:05,210 [Studentų] Kas atsitinka, jei pastumiama 5? 511 00:35:05,210 --> 00:35:10,790 [Bowden] Jei atitraukiama 5 jums tiesiog prarasti skaitmenų. 512 00:35:10,790 --> 00:35:15,410 Neišvengiamai, tai tas pats. Kaip, sveikieji skaičiai yra tik 32 bitų, 513 00:35:15,410 --> 00:35:20,750 todėl, jei jūs įtraukiate 2 tikrai didelius sveikuosius skaičius, jis tiesiog netelpa į sveikasis skaičius. 514 00:35:20,750 --> 00:35:23,660 Taigi, tai tas pats čia. Jei atitraukiama 5, 515 00:35:23,660 --> 00:35:25,650 mes tiesiog prarasti, kad vienas. 516 00:35:25,650 --> 00:35:28,820 Ir tai tipo, ką reiškia "beveik" 517 00:35:28,820 --> 00:35:37,470 kur, jei jums pereiti per toli, jūs prarasite bitai. 518 00:35:37,470 --> 00:35:39,830 >> Teisė perėjimas bus atvirkščiai, 519 00:35:39,830 --> 00:35:43,090 kur mes einame įgrūsti 0 išjungta, galų gale, 520 00:35:43,090 --> 00:35:48,400 ir mūsų tikslais, užpildykite 0 aisiais iš kairės. 521 00:35:48,400 --> 00:35:52,910 Taigi, kaip tai padaryti, mes iš esmės eigos, ką mes jau padaryta. 522 00:35:52,910 --> 00:35:57,780 Ir mes matome, kad trys 0 naujo dešinėje ką tik nenukrito, 523 00:35:57,780 --> 00:36:02,020 ir mes jau stumdosi 1101 visą kelią į dešinę. 524 00:36:02,020 --> 00:36:08,380 Tai daro 104 >> 3, kuris yra efektyviai, x / 2 ^ m. 525 00:36:08,380 --> 00:36:11,200 Taigi, dabar, čia, tai panaši idėja. 526 00:36:11,200 --> 00:36:18,720 Kodėl tai tik grubiai x / 2 ^ m, o ne iš tikrųjų x / 2 ^ y? 527 00:36:18,720 --> 00:36:22,240 Nes jei aš atitraukiama 4, būčiau prarado 1. 528 00:36:22,240 --> 00:36:25,950 Iš esmės, ką galvoti, tiesiog manau, sveikasis skaičius pasidalijimas apskritai. 529 00:36:25,950 --> 00:36:31,070 Taigi, pavyzdžiui, 5/2 yra 2. Tai ne 2,5. 530 00:36:31,070 --> 00:36:35,000 Tai pati idėja čia. Kai mes padalinti iš 2, 531 00:36:35,000 --> 00:36:39,910 mes galime prarasti nelyginis bitai pakeliui. 532 00:36:39,910 --> 00:36:43,870 Taigi dabar - viskas už Bitinis. Tai viskas, ką reikia žinoti. 533 00:36:43,870 --> 00:36:46,340 Prisiminti naudojimo atvejais matėme klasėje, 534 00:36:46,340 --> 00:36:49,340 kaip tiek kaukė naudinga Bitinis operatorių, 535 00:36:49,340 --> 00:36:53,220 ar jūs juos naudoti bitų kaukes. 536 00:36:53,220 --> 00:36:58,620 Didžiosios raidės ir mažosios raidės, perdirbimas yra gana prototipu pavyzdys. 537 00:36:58,620 --> 00:37:01,640 >> Gerai, kad buferio perpildymo atakų. 538 00:37:01,640 --> 00:37:05,110 Kas nors prisimena, kas buvo negerai su šia funkcija? 539 00:37:05,110 --> 00:37:10,140 Atkreipkite dėmesį, mes paskelbėme apie 12 baitų masyvas, 12 simbolių, 540 00:37:10,140 --> 00:37:18,510 ir tada mes nukopijuoti į mūsų buferis 12 simbolių visą eilutę baro. 541 00:37:18,510 --> 00:37:25,080 Taigi, kas yra problema čia? 542 00:37:25,080 --> 00:37:32,270 Magiškas skaičius 12 turi gana daug iš karto iškrenta kaip - Kodėl 12? 543 00:37:32,270 --> 00:37:35,050 Ką daryti, jei juosta būna, kad daugiau nei 12 simbolių? 544 00:37:35,050 --> 00:37:41,200 Ką daryti, jei juosta yra milijonai simbolių? 545 00:37:41,200 --> 00:37:46,010 Čia klausimas yra memcpy. Jei juosta yra pakankamai ilgas, 546 00:37:46,010 --> 00:37:50,330 tai bus tik visiškai - "c", "c" nerūpi, kad tai buvo tik 12 simbolių; 547 00:37:50,330 --> 00:37:53,280 "C" nerūpi, kad ji netelpa, kad daug baitų. 548 00:37:53,280 --> 00:37:58,250 Jis tiesiog visiškai perrašyti char, kad 12 baitų mes skirti už jį, 549 00:37:58,250 --> 00:38:01,830 ir viskas pro jį atmintyje, kad iš tikrųjų nėra priklauso tai buferio 550 00:38:01,830 --> 00:38:06,520 su kokia eilutė baras. 551 00:38:06,520 --> 00:38:09,780 Taigi tai buvo vaizdas matėme klasės 552 00:38:09,780 --> 00:38:12,220 kur mes turime kamino auga. 553 00:38:12,220 --> 00:38:16,040 Jūs turite būti naudojami šių nuotraukų ar susipažinti su jais dar kartą. 554 00:38:16,040 --> 00:38:21,260 Mes turime kamino auga, atminties adresai prasideda 0 viršuje 555 00:38:21,260 --> 00:38:26,270 ir augti žemyn patinka 4 milijardus apačioje. 556 00:38:26,270 --> 00:38:28,820 Mes turime masyvo "c" kažkur atmintyje, 557 00:38:28,820 --> 00:38:32,260 tada mes turime žymiklį Baras teisė po juo, 558 00:38:32,260 --> 00:38:38,720 ir tada mes turime šį išsaugotą kadro rodyklės mūsų atgalinio adreso ir mūsų pagrindinė rutina savo kamino. 559 00:38:38,720 --> 00:38:40,800 Prisiminti, ką atgalinis adresas yra? 560 00:38:40,800 --> 00:38:45,360 Tai kai pagrindinis vadina funkcija foo ragina funkciją juostą, 561 00:38:45,360 --> 00:38:48,100 neišvengiamai, baras grąžą. 562 00:38:48,100 --> 00:38:52,610 Taigi, kai baro grįžta, jie turi žinoti, kad jis grįžta į foo, kad pavadino jį. 563 00:38:52,610 --> 00:39:01,360 Taigi, atgalinis adresas yra funkcija, kad ji adresas grįžti kada funkcija grąžina. 564 00:39:01,360 --> 00:39:05,830 Todėl, kad tai svarbu, buferio perpildymo atakų yra todėl, patogiai 565 00:39:05,830 --> 00:39:09,580 hakeriai norite pakeisti tą atgalinį adresą. 566 00:39:09,580 --> 00:39:14,950 Vietoj grįžta į foo, aš ruošiuosi grįžti ten, kur įsilaužėlis nori man grįžti. 567 00:39:14,950 --> 00:39:17,760 Ir, patogiai, kur hakeris dažnai nori grįžti į 568 00:39:17,760 --> 00:39:22,400 yra buferio, kad mes iš pradžių turėjo pradžia. 569 00:39:22,400 --> 00:39:26,170 Taigi pastebėti, vėlgi, Little Indian. 570 00:39:26,170 --> 00:39:28,490 Prietaisas yra iš Mažosios Indijos sistemos pavyzdys, 571 00:39:28,490 --> 00:39:34,140 taip sveikasis skaičius arba rodyklė saugomi su baitais poliais. 572 00:39:34,140 --> 00:39:38,980 Taigi čia matome - tai yra? Taip. 573 00:39:38,980 --> 00:39:45,660 Matome Ox80, OxC0, Ox35, OxO8. 574 00:39:45,660 --> 00:39:48,250 Prisiminti šešioliktainius skaitmenis? 575 00:39:48,250 --> 00:39:50,640 Mes neturime atvirkštinės šešioliktainius skaitmenis Little Indian, 576 00:39:50,640 --> 00:39:56,110 nes 2 šešioliktainius skaitmenis sudaro vieną baitą, ir mes pakeisti baitų. 577 00:39:56,110 --> 00:40:00,300 Štai kodėl mes ne aukštesnėje, kaip, 80530CO8. 578 00:40:00,300 --> 00:40:07,520 Mes saugoti, vietoj to, kiekvieną 2 skaitmenų pora, pradedant iš dešinės. 579 00:40:07,520 --> 00:40:10,880 Kad adresas nurodo pradžios adresą 580 00:40:10,880 --> 00:40:15,190 mūsų buferis, kad mes iš tikrųjų norėjo nukopijuoti į pirmąją vietą. 581 00:40:15,190 --> 00:40:19,230 Todėl, kad tai naudinga, nes ką daryti, jei užpuolikas 582 00:40:19,230 --> 00:40:24,100 atsitiko, užuot eilutę, kuri buvo ką tik 583 00:40:24,100 --> 00:40:27,060 nekenksmingas eilutę kaip, jų pavadinimas ar kažkas, 584 00:40:27,060 --> 00:40:33,900 ką daryti, jei, vietoj to, kad eilutė buvo tik keletas abejotinam kodui 585 00:40:33,900 --> 00:40:38,610 kad padarė viską, ką norėjo, kad ji daryti? 586 00:40:38,610 --> 00:40:45,630 Taigi, jie gali - Aš negaliu galvoti apie bet vėsioje kodą. 587 00:40:45,630 --> 00:40:47,780 Tai gali būti bet kas, nors. Bet katastrofiškas kodas. 588 00:40:47,780 --> 00:40:51,440 Jei jie nori, jie gali tiesiog padaryti kažką ne SEG gedimus, bet tai būtų beprasmiška. 589 00:40:51,440 --> 00:40:54,950 Jie paprastai padaryti jį nulaužti savo sistemą. 590 00:40:54,950 --> 00:40:59,930 >> Gerai. CS50 biblioteka. 591 00:40:59,930 --> 00:41:04,800 Tai, iš esmės, getInt, getString, visi šios funkcijos mes Jums pateikti. 592 00:41:04,800 --> 00:41:10,630 Taigi, mes turime char * string, ir tai abstrakcija, kad mes susprogdino toli 593 00:41:10,630 --> 00:41:12,450 tam tikru metu semestro klausimu. 594 00:41:12,450 --> 00:41:18,220 Atminkite, kad eilutė yra tik simbolių masyvas. 595 00:41:18,220 --> 00:41:23,240 Taigi čia matome sutrumpintą versiją getString. 596 00:41:23,240 --> 00:41:25,920 Jūs turėtumėte pažvelgti atgal į jį prisiminti, kaip jis iš tiesų įgyvendinti. 597 00:41:25,920 --> 00:41:30,950 Pagrindiniai duomenys yra, pastebėsite, mes gauname vieną simbolį vienu metu 598 00:41:30,950 --> 00:41:34,570 nuo standartu, kuris yra kaip mums rašyti į klaviatūrą. 599 00:41:34,570 --> 00:41:37,890 Taigi vieną simbolį vienu metu, ir jei mes per daug simbolių, 600 00:41:37,890 --> 00:41:40,580 todėl, jei n + 1 yra didesnis nei pajėgumų, 601 00:41:40,580 --> 00:41:44,140 tada mes turime didinti savo buferio talpą. 602 00:41:44,140 --> 00:41:47,780 Taigi čia mes padvigubinti mūsų buferio dydį. 603 00:41:47,780 --> 00:41:51,840 Ir tai nuolat vyksta, mes įterpti simbolį į mūsų buferis 604 00:41:51,840 --> 00:41:56,220 kol mes gausime naują eilutę ar failo pabaigą ar kas, 605 00:41:56,220 --> 00:41:59,380 Tokiu atveju, mes baigsite su eilutę ir tada realus getString 606 00:41:59,380 --> 00:42:05,120 traukiasi atmintį, pavyzdžiui, jei mes skiriama per daug atminties jis bus grįžti ir trauktis truputį. 607 00:42:05,120 --> 00:42:08,830 Taigi, mes rodo, kad ne, tačiau pagrindinė idėja yra 608 00:42:08,830 --> 00:42:11,960 jis turi skaityti vienas simbolis vienu metu. 609 00:42:11,960 --> 00:42:17,140 Jis gali ne tik skaityti visą dalyką vienu metu, 610 00:42:17,140 --> 00:42:19,550 nes jų buferis yra tik tam tikro dydžio. 611 00:42:19,550 --> 00:42:26,590 Taigi, jei seka, kad jis bando įterpti į buferį yra per didelis, tada jis būtų perkrautas. 612 00:42:26,590 --> 00:42:28,940 Taigi čia mes užkirsti kelią, kad tik skaityti vieną charakterį 613 00:42:28,940 --> 00:42:33,750 tuo metu ir auga kai mes turime. 614 00:42:33,750 --> 00:42:40,270 Taigi getInt ir kiti CS50 bibliotekos funkcijas linkę naudoti getString 615 00:42:40,270 --> 00:42:42,310 jų diegimas. 616 00:42:42,310 --> 00:42:45,370 Taigi, aš pabrėžė svarbius dalykus čia. 617 00:42:45,370 --> 00:42:49,460 Ji ragina getString gauti eilutę. 618 00:42:49,460 --> 00:42:51,710 Jei getString negrąžino atminties, 619 00:42:51,710 --> 00:42:54,270 prisiminti, kad getString mallocs kažką, todėl kai tik galite skambinti getString 620 00:42:54,270 --> 00:42:57,820 jūs neturėtumėte (neįskaitomai) nemokamai, kad seka, kad jūs turite. 621 00:42:57,820 --> 00:43:02,870 Taigi čia, jeigu jai nepavyko malloc kažką, mes grįžtame INT_MAX kaip tik vėliavą, 622 00:43:02,870 --> 00:43:05,650 ei, mes ne iš tikrųjų galėtų gauti sveikąjį skaičių. 623 00:43:05,650 --> 00:43:10,830 Jūs turėtumėte ignoruoti, ką aš sugrįšiu pas tave, arba 624 00:43:10,830 --> 00:43:15,540 jūs neturėtumėte laikyti tai galiojantį įėjimo. 625 00:43:15,540 --> 00:43:21,360 Galiausiai, darant prielaidą, kad pavyko, mes naudojame sscanf su šia specialia vėliava, 626 00:43:21,360 --> 00:43:23,820 o tai reiškia, pirmosios rungtynės sveikasis skaičius, 627 00:43:23,820 --> 00:43:26,770 tada atitiktų bet kokius simbolius po to sveikojo skaičiaus. 628 00:43:26,770 --> 00:43:29,070 Taigi pastebėsite mes norime, kad ji lygi 1. 629 00:43:29,070 --> 00:43:32,940 Taigi sscanf grįžta kiek atitikmuo, jei sėkmingai padarė? 630 00:43:32,940 --> 00:43:37,010 Jis grįš 1, jei jis sėkmingai atitiko sveikasis skaičius, 631 00:43:37,010 --> 00:43:40,890 jis grįš 0, jei jis neatitiko sveikasis skaičius, ir jis grįš 2 632 00:43:40,890 --> 00:43:45,920 jei ji atitiko sveikasis skaičius po tam tikru simboliu. 633 00:43:45,920 --> 00:43:49,780 Taigi pastebėsite mes pakartoti, jei mes atitiktų nieko, bet 1. 634 00:43:49,780 --> 00:43:55,230 Taigi, jei mes įrašytas 1, 2, 3, C arba 1, 2, 3, X, 635 00:43:55,230 --> 00:43:57,400 tada 1, 2, 3 gaus saugomi sveikojo skaičiaus, 636 00:43:57,400 --> 00:43:59,620 X gaus saugomi pobūdžio, 637 00:43:59,620 --> 00:44:06,410 sscanf sugrįš 2, ir mes norėtume pakartoti, nes mes tik norime sveikasis skaičius. 638 00:44:06,410 --> 00:44:09,810 >> Greitai pučia per HTML, HTTP, CSS. 639 00:44:09,810 --> 00:44:15,340 Hypertext Markup Language yra struktūra ir semantika iš interneto. 640 00:44:15,340 --> 00:44:19,960 Štai pavyzdys iš paskaitos, kurioje mes turime HTML žymes. 641 00:44:19,960 --> 00:44:22,110 Mes turime galvos žymeles, kūno žymes 642 00:44:22,110 --> 00:44:27,770 mes turime pavyzdžių, tuščių žymeles, kur mes iš tikrųjų neturi pradžios ir glaudžiai tegus, 643 00:44:27,770 --> 00:44:30,820 mes tiesiog nuorodą ir įvaizdį. 644 00:44:30,820 --> 00:44:38,480 Nėra uždarymo paveikslėlio žymelę, ten tik vienas tegus kad įvykdo viską tegus reikia daryti. 645 00:44:38,480 --> 00:44:41,950 Ryšys yra pavyzdys, mes pamatyti, kaip jums nuorodą į CSS, 646 00:44:41,950 --> 00:44:45,910 Scenarijus, kaip jums nuorodą į išorinį JavaScript pavyzdys. 647 00:44:45,910 --> 00:44:53,100 Tai gana paprasta, ir nepamirškite, kad HTML nėra programavimo kalba. 648 00:44:53,100 --> 00:44:58,250 Čia prisimenu, kaip jūs nustatyti formą arba bent jau kas tai darys? 649 00:44:58,250 --> 00:45:01,740 Tokia forma yra veiksmų ir metodą. 650 00:45:01,740 --> 00:45:06,210 Metodai bus tik kada nors matyti yra GET ir POST. 651 00:45:06,210 --> 00:45:09,040 Taigi gauti yra versija, kur dalykas bus įdėti į URL. 652 00:45:09,040 --> 00:45:11,680 PO, kur ji nėra įdėti į URL. 653 00:45:11,680 --> 00:45:18,520 Vietoj to, bet iš formos duomenų įterpiamas daugiau paslėptas HTTP užklausos. 654 00:45:18,520 --> 00:45:22,390 Taigi čia, veiksmo apibrėžia kur HTTP užklausa eina. 655 00:45:22,390 --> 00:45:27,490 Kur jis vyksta yra google.com / paieškos. 656 00:45:27,490 --> 00:45:32,890 Metodas. Prisiminti tarp GET ir POST skirtumus, 657 00:45:32,890 --> 00:45:37,200 ir tiesiog pasakyti, kaip, pavyzdžiui, jei norite žymę kažką. 658 00:45:37,200 --> 00:45:40,660 Jūs niekada galės žymę POST URL 659 00:45:40,660 --> 00:45:44,970 nes duomenys nėra įtraukti į URL. 660 00:45:44,970 --> 00:45:49,790 >> HTTP, dabar yra hiperteksto perdavimo protokolas. 661 00:45:49,790 --> 00:45:54,080 Hiperteksto perdavimo protokolas, galima tikėtis, kad ji perkelti 662 00:45:54,080 --> 00:45:57,710 Hypertext Markup Language, ir ji veikia. 663 00:45:57,710 --> 00:46:00,170 Tačiau ji taip pat perduoda visus vaizdus jums rasti internete, 664 00:46:00,170 --> 00:46:05,400 bet parsisiųsti galite padaryti pradėti kaip HTTP užklausos. 665 00:46:05,400 --> 00:46:10,350 Taigi HTTP tik iš World Wide Web kalba. 666 00:46:10,350 --> 00:46:15,610 Ir čia reikia pripažinti šią HTTP prašymą natūra. 667 00:46:15,610 --> 00:46:19,300 Čia HTTP/1.1 pusėje tiesiog sako tai versija 668 00:46:19,300 --> 00:46:21,570 protokolo aš naudoju. 669 00:46:21,570 --> 00:46:25,770 Tai gana daug, visada bus HTTP/1.1, kaip jūs jį pamatyti. 670 00:46:25,770 --> 00:46:30,110 Tada mes matome, kad tai buvo GET, alternatyva yra POST, kad jūs galite pamatyti. 671 00:46:30,110 --> 00:46:40,790 Ir adresą, kad aš bandžiau aplankyti buvo www.google.com/search?q = bla, bla, bla. 672 00:46:40,790 --> 00:46:44,240 Taigi, nepamirškite, kad tai, klaustukas q = blah blah blah, 673 00:46:44,240 --> 00:46:49,040 yra daiktų, pateiktų pagal forma rūšiuoti. 674 00:46:49,040 --> 00:46:51,830 Atsakas gali grįžti į mane atrodytų kažką panašaus į tai. 675 00:46:51,830 --> 00:46:54,050 Vėlgi, pradedant nuo protokolo, kuris ketina būti, kad 676 00:46:54,050 --> 00:46:59,190 Po būsenos kodą. Čia tai 200 Gerai. 677 00:46:59,190 --> 00:47:05,060 Ir, pagaliau, interneto puslapis, kuriame aš iš tikrųjų paprašė bus laikomasi. 678 00:47:05,060 --> 00:47:08,210 Galimas statusas kodas galite pamatyti, ir jūs turėtumėte žinoti keletą iš jų. 679 00:47:08,210 --> 00:47:12,770 200 Gerai jūs tikriausiai matė anksčiau. 680 00:47:12,770 --> 00:47:17,830 403 Forbidden, 404 Not Found, 500 vidinė serverio klaida 681 00:47:17,830 --> 00:47:22,140 paprastai, jei jūs einate į svetainę, ir kažkas tai susmulkintos arba jų PHP kodas sugenda, 682 00:47:22,140 --> 00:47:24,930 kadangi, atsižvelgiant į prietaiso turime, kad didelis Orange Box 683 00:47:24,930 --> 00:47:27,830 kad ateina ir sako, pavyzdžiui, kad kažkas yra negerai, šis kodas neveikia 684 00:47:27,830 --> 00:47:30,380 ar ši funkcija yra blogai. 685 00:47:30,380 --> 00:47:33,230 Paprastai svetainių nenoriu žinoti, ką veikia tikrai neblogai, 686 00:47:33,230 --> 00:47:37,880 todėl vietoj jie tiesiog suteikti jums 500 vidinė serverio klaidos. 687 00:47:37,880 --> 00:47:43,050 >> TCP / IP yra 1 sluoksnis pagal HTTP. 688 00:47:43,050 --> 00:47:47,550 Atminkite, kad yra internetas ne iš World Wide Web. 689 00:47:47,550 --> 00:47:52,270 Pavyzdžiui, jei jums žaisti online žaidimas, kuris neturi eiti per HTTP, 690 00:47:52,270 --> 00:47:55,740 jis išgyvena kitoks - jis vis dar naudojasi internetu, 691 00:47:55,740 --> 00:47:58,900 bet jis nenaudoja HTTP. 692 00:47:58,900 --> 00:48:02,470 HTTP yra tik vienas pavyzdys, protokolo pastatytas ant TCP / IP. 693 00:48:02,470 --> 00:48:07,820 IP pažodžiui reiškia "Internet Protocol. 694 00:48:07,820 --> 00:48:11,500 Kiekvienas kompiuteris turi IP adresą, jie yra tie 4 skaitmenų dalykai 695 00:48:11,500 --> 00:48:16,510 kaip 192.168.2.1 ar kas, kad yra linkęs būti vietinis. 696 00:48:16,510 --> 00:48:23,390 Bet tai IP adreso modelis. 697 00:48:23,390 --> 00:48:29,060 Taigi, DNS, Domain Name Service, 698 00:48:29,060 --> 00:48:33,410 kad tai, ką reiškia tokie dalykai kaip google.com realų IP adresą. 699 00:48:33,410 --> 00:48:37,700 Taigi, jei rašote, kad IP adresą į URL, 700 00:48:37,700 --> 00:48:40,850 kad būtų tave "Google", tačiau nėra linkę prisiminti tuos dalykus. 701 00:48:40,850 --> 00:48:45,470 Jūs linkę vietoj prisiminti google.com. 702 00:48:45,470 --> 00:48:51,560 Paskutinis dalykas, mes turime, yra uostai, jei tai yra TCP IP dalis. 703 00:48:51,560 --> 00:48:54,880 TCP ar daugiau. Pagalvokite apie, pavyzdžiui, jūs turite savo interneto naršyklės veikimą. 704 00:48:54,880 --> 00:48:58,670 Gal turite kokių nors pašto programa veikia; 705 00:48:58,670 --> 00:49:02,150 O gal jūs turite kokį nors kitą programą, kuri naudoja interneto veikia. 706 00:49:02,150 --> 00:49:05,090 Jie visi turi prieigą prie interneto, 707 00:49:05,090 --> 00:49:08,100 bet jūsų kompiuteris turi tik 1 WiFi kortelę ar whatever. 708 00:49:08,100 --> 00:49:10,780 Taigi uostai yra taip, kad mes galime padalinti 709 00:49:10,780 --> 00:49:13,550 kaip šios paraiškos gali naudotis internetu. 710 00:49:13,550 --> 00:49:17,230 Kiekviena paraiška gauna 1 konkretų uostą, kad jis gali klausytis, 711 00:49:17,230 --> 00:49:19,670 ir pagal nutylėjimą, HTTP naudoja portą 80. 712 00:49:19,670 --> 00:49:22,410 Kai kurie elektroninio pašto tarnybos naudoja 25. 713 00:49:22,410 --> 00:49:24,490 Žemos sunumeruoti tie linkę būti saugomos. 714 00:49:24,490 --> 00:49:29,270 Jūs paprastai galima gauti didesnės sunumeruoti tie patys. 715 00:49:29,270 --> 00:49:32,010 >> CSS, Cascading Style Sheets. 716 00:49:32,010 --> 00:49:36,030 Mes stiliaus tinklalapius su CSS, o ne HTML. 717 00:49:36,030 --> 00:49:38,440 Yra 3 vietos galite įdėti savo CSS. 718 00:49:38,440 --> 00:49:46,300 Jis gali būti Inline tarp stiliaus žymeles, arba visiškai atskirą failą ir tada susieti in 719 00:49:46,300 --> 00:49:48,470 Ir čia yra tik CSS pavyzdys. 720 00:49:48,470 --> 00:49:50,450 Jūs turite pripažinti, šį modelį, 721 00:49:50,450 --> 00:49:54,310 kur pirmasis pavyzdys mes atitikimo kūno tegus, 722 00:49:54,310 --> 00:49:56,680 ir čia mes centravimo kūno tegus. 723 00:49:56,680 --> 00:50:00,420 Antrasis pavyzdys, mes suderinimo dalykas 724 00:50:00,420 --> 00:50:04,740 su ID apačią, ir mes taikant kai stilių, kad. 725 00:50:04,740 --> 00:50:07,310 Atkreipkite dėmesį, kad asmens tapatybės poraštės teksto suderina į kairę, 726 00:50:07,310 --> 00:50:09,840 o tekste-išlygina centras. 727 00:50:09,840 --> 00:50:13,180 Apačia yra kūno viduje. 728 00:50:13,180 --> 00:50:16,470 Ji, priešingai, text-align į kairę, nors kūnas sako text-align centrą. 729 00:50:16,470 --> 00:50:18,880 Tai visa pakopinių dalis. 730 00:50:18,880 --> 00:50:22,110 Jūs galite turėti - galite nurodyti stilių kūno, 731 00:50:22,110 --> 00:50:25,320 ir tada viskas organizme galite nurodyti daugiau konkrečių stilių, 732 00:50:25,320 --> 00:50:28,160 ir viskas veikia taip, kaip tikitės. 733 00:50:28,160 --> 00:50:34,420 Labiau specifiniai CSS specifiers viršesnės. 734 00:50:34,420 --> 00:50:46,140 Manau, kad viskas. 735 00:50:46,140 --> 00:50:49,260 >> [Ali Nahm] Sveiki visi. Jei aš galėčiau tik gauti jūsų dėmesį. 736 00:50:49,260 --> 00:50:53,990 Aš Ali ir aš ruošiuosi eiti per PHP ir SQL tikrai greitai. 737 00:50:53,990 --> 00:51:00,310 Taigi, mes galime pradėti. PHP yra trumpas PHP: Hypertext Preprocessor. 738 00:51:00,310 --> 00:51:03,730 Ir kaip jūs visi turėtumėte žinoti, tai server-side scripting language, 739 00:51:03,730 --> 00:51:06,800 ir mes ją naudoti nugaros pabaigoje interneto svetainėse, 740 00:51:06,800 --> 00:51:12,540 ir kaip jis atlieka daug skaičiavimų, už-scenos dalis daug. 741 00:51:12,540 --> 00:51:17,510 Sintaksė. Tai nėra, kaip C, staigmena, siurprizas. 742 00:51:17,510 --> 00:51:22,060 Jis visada turi prasidėti, jei matote, - aš negaliu judėti į priekį. 743 00:51:22,060 --> 00:51:31,340 Jūs galite pamatyti, jums reikia naujų rūšių petnešos ir tada jums taip pat reikia? Php. 744 00:51:31,340 --> 00:51:35,780 Tai visada, kaip jums reikia įrėminti PHP tekstą, savo PHP kodą. 745 00:51:35,780 --> 00:51:39,180 Taigi jis gali būti ne tik kaip C, kur rūšies įdėti jį pirmas. 746 00:51:39,180 --> 00:51:42,290 Jūs turite visada aplink jį. 747 00:51:42,290 --> 00:51:47,610 Ir dabar pagrindinis sintaksė yra tai, kad visi kintamieji turi pradėti su $ ženklu. 748 00:51:47,610 --> 00:51:49,490 Ką jums reikia padaryti, kai jūs juos apibrėžiant; jums reikia padaryti, tai 749 00:51:49,490 --> 00:51:51,860 kai jūs kalbate su jais vėliau. 750 00:51:51,860 --> 00:51:56,510 Jūs visada reikia, kad $. Tai jūsų naujas geriausias draugas, gana daug. 751 00:51:56,510 --> 00:52:01,690 Jūs neturite - skirtingai nei C, jums nereikia įdėti kokia kintamojo tipo, ji yra. 752 00:52:01,690 --> 00:52:04,940 Taigi, nors jūs turite $, jums nereikia įdėti, pavyzdžiui, 753 00:52:04,940 --> 00:52:09,470 int x arba eilutė y taip toliau, taip toliau. 754 00:52:09,470 --> 00:52:11,490 Taigi, šiek tiek skiriasi. 755 00:52:11,490 --> 00:52:15,590 Kaip šio rezultato, tai reiškia, kad PHP yra silpnai tipo. 756 00:52:15,590 --> 00:52:19,310 PHP yra silpnai tipo kalba, ir ji silpnai įvedėte kintamuosius. 757 00:52:19,310 --> 00:52:24,020 Kitaip tariant, tai reiškia, kad jūs galite perjungti įvairių kintamųjų tipus. 758 00:52:24,020 --> 00:52:27,230 Galite išsaugoti savo numerį 1 kaip int, 759 00:52:27,230 --> 00:52:29,650 jūs galite laikyti jį kaip eilutę, ir jūs galite laikyti jį kaip plūdės, 760 00:52:29,650 --> 00:52:33,550 ir viskas bus, kad numeris 1. 761 00:52:33,550 --> 00:52:36,080 Net jei jūs ją saugoti įvairių formų, 762 00:52:36,080 --> 00:52:39,120 jis vis dar - kintamasis rūšys vis dar turintis pabaigos. 763 00:52:39,120 --> 00:52:41,540 Taigi, jei jums atrodo čia, jei pamenate iš pset 7, 764 00:52:41,540 --> 00:52:43,500 daugelis iš jūsų tikriausiai turėjo problemų su šiuo klausimu. 765 00:52:43,500 --> 00:52:47,280 Dvi lygios ženklai, 3 lygių požymiai, 4 lygių požymiai. 766 00:52:47,280 --> 00:52:49,990 Gerai, nėra 4 lygių požymių, bet yra 2 ir 3. 767 00:52:49,990 --> 00:52:53,320 Galite naudoti 2 lygias ženklus patikrinti vertybes. 768 00:52:53,320 --> 00:52:55,830 Tai galite patikrinti per tipams. 769 00:52:55,830 --> 00:52:58,770 Taigi, jei jūs galite pamatyti pirmajame pavyzdyje, 770 00:52:58,770 --> 00:53:02,210 Turiu num_int == num_string. 771 00:53:02,210 --> 00:53:06,710 Taigi jūsų int ir jūsų eilutė yra tiek techniškai, 1, 772 00:53:06,710 --> 00:53:10,790 bet jie skirtingų rūšių. Tačiau dvigubas lygių, tai bus dar praeiti. 773 00:53:10,790 --> 00:53:15,510 Tačiau trigubų lygiųjų, jis pasitikrina vertę, taip pat įvairių rūšių. 774 00:53:15,510 --> 00:53:18,760 Tai reiškia, kad jis nesiruošia perduoti toje Antruoju atveju čia 775 00:53:18,760 --> 00:53:22,350 kur jūs naudojate 3 lygias ženklus vietoj. 776 00:53:22,350 --> 00:53:26,590 Štai esminis skirtumas, kad jūs visi turėtų parodė dabar. 777 00:53:26,590 --> 00:53:31,570 >> Styginių sąryšis yra dar vienas galingas dalykas, kad jūs galite naudoti PHP. 778 00:53:31,570 --> 00:53:34,080 Tai iš esmės tik tai patogus taškas ženklinimą, 779 00:53:34,080 --> 00:53:36,230 ir tai, kaip galite susieti eilutes kartu. 780 00:53:36,230 --> 00:53:40,800 Taigi, jei turite katę, ir jūs turite šunį, ir jūs norite įdėti 2 eilutes kartu, 781 00:53:40,800 --> 00:53:44,080 galite naudoti laikotarpį, o tai tipo kaip ji veikia. 782 00:53:44,080 --> 00:53:46,660 Jūs taip pat galite tiesiog įdėti juos šalia vienas kito, 783 00:53:46,660 --> 00:53:49,030 kaip matote čia, apačioje, pavyzdžiui, 784 00:53:49,030 --> 00:53:51,610 kur aš echo eilutę 1, tarpo eilutę 2. 785 00:53:51,610 --> 00:53:56,930 PHP žinosite pakeisti juos tokiais. 786 00:53:56,930 --> 00:53:59,780 Masyvai. Dabar, PHP, yra 2 skirtingų rūšių matricos. 787 00:53:59,780 --> 00:54:03,180 Jūs galite turėti reguliariai masyvus, ir jūs taip pat gali turėti Association matricos, 788 00:54:03,180 --> 00:54:06,040 ir mes ketiname eiti per juos dabar. 789 00:54:06,040 --> 00:54:08,280 Nuolatinis matricos yra tik tai C, 790 00:54:08,280 --> 00:54:11,240 ir todėl jūs turite indeksai, sunumeruoti. 791 00:54:11,240 --> 00:54:13,160 Dabar mes tik ketina sukurti vieną ir įdėti - 792 00:54:13,160 --> 00:54:15,500 todėl tai, kaip mes sukurti tuščią masyvą, tada mes ketiname 793 00:54:15,500 --> 00:54:17,310 įdėti į indekso numeris 0. 794 00:54:17,310 --> 00:54:19,200 Mes ketiname įdėti numeris 6, reikšmę 6. 795 00:54:19,200 --> 00:54:21,500 Galite pamatyti jį apačioje čia. 796 00:54:21,500 --> 00:54:24,240 Where's - ne indekso numerį 1 mes ketiname įdėti vertė metų skaičių 4, 797 00:54:24,240 --> 00:54:26,720 ir todėl jūs galite pamatyti ten 6, yra 4, 798 00:54:26,720 --> 00:54:29,160 ir tada kaip mes spausdinti dalykus, 799 00:54:29,160 --> 00:54:33,550 kai mes bandome ir atspausdins reikšmę, saugomą indekso numerį 0, 800 00:54:33,550 --> 00:54:36,900 tada mes pamatysime vertės 6 yra atspausdintas. Kietas? 801 00:54:36,900 --> 00:54:40,160 Štai įprastas matricos jums. 802 00:54:40,160 --> 00:54:42,750 Kitas būdas galite taip pat pridėti dalykų reguliariai masyvų dabar 803 00:54:42,750 --> 00:54:44,780 tai galite tiesiog pridėti juos pabaigoje. 804 00:54:44,780 --> 00:54:47,240 Tai reiškia, kad jūs neturite nurodyti konkretų indeksą. 805 00:54:47,240 --> 00:54:51,000 Jūs galite pamatyti skaičių, tada laužtiniuose skliaustuose nėra nurodyta indeksas. 806 00:54:51,000 --> 00:54:56,270 Ir tai žino - PHP žinos tik pridėti jį prie sąrašo, kitam vietos pabaigos. 807 00:54:56,270 --> 00:54:59,190 Taigi galite pamatyti 1 teisę ten tuo 0 vietoje, 808 00:54:59,190 --> 00:55:02,690 2 nuskriejo tiesiai ten pirmą vietą. 809 00:55:02,690 --> 00:55:04,690 3 eina - papildoma ten taip pat. 810 00:55:04,690 --> 00:55:06,720 Taigi, kad šios rūšies prasmę. Jūs tiesiog nuolat pridedant jį, 811 00:55:06,720 --> 00:55:09,360 ir tada, kai mes pakartodamas skaičiaus 1 puslapis, 812 00:55:09,360 --> 00:55:13,080 jis bus išspausdinti vertę 2. 813 00:55:13,080 --> 00:55:16,800 >> Tada mes turime masyvus, kurie Association masyvai. 814 00:55:16,800 --> 00:55:19,370 Association masyvai, o turintys skaitmeninius rodiklius, 815 00:55:19,370 --> 00:55:23,630 kas jie yra, jie turi indeksus, kurie pagal eilutę. 816 00:55:23,630 --> 00:55:25,670 Jūs galite pamatyti, o ne - aš atsikratė visų tų skaičių rodiklių, 817 00:55:25,670 --> 00:55:32,140 ir dabar atėjo key1, key2, Key3, ir jie tarp dvigubų kabučių, reiškia, kad jie visi stygos. 818 00:55:32,140 --> 00:55:34,470 Taigi, mes galime turėti, šiame pavyzdyje. 819 00:55:34,470 --> 00:55:38,790 To pavyzdys yra tai, kad mes turime tf, ir tai puslapis, pavadinimas. 820 00:55:38,790 --> 00:55:42,030 Mes ketiname daryti "Ali", kaip pavadinimas, tuo indeksu, kalorijų valgyti, 821 00:55:42,030 --> 00:55:47,640 mes galime įdėti int šį kartą vietoj eilutę, 822 00:55:47,640 --> 00:55:52,240 ir tada indekso patinka, mes galime įdėti visą spektrą jo viduje. 823 00:55:52,240 --> 00:55:55,490 Taigi tai yra natūra - tai panaši sąvoka kaip mes turėjome 824 00:55:55,490 --> 00:55:58,930 indeksai su skaičiais, bet dabar mes galime pakeisti indeksus aplink 825 00:55:58,930 --> 00:56:03,890 juos kaip stygos, o ne. 826 00:56:03,890 --> 00:56:06,070 Jūs taip pat galite tai padaryti, be to, tik tai daryti atskirai, 827 00:56:06,070 --> 00:56:09,400 jūs galite padaryti jį visą į vieną gabalą. Taigi, galite matyti, kad masyvo, tf, 828 00:56:09,400 --> 00:56:13,350 ir tada mes nustatome juos visus į vieną milžinišką kvadratinį apkabos rinkiniu. 829 00:56:13,350 --> 00:56:15,220 Taigi, kad gali pagreitinti. 830 00:56:15,220 --> 00:56:19,730 Tai daugiau stilistinės pasirinkimas nei ne. 831 00:56:19,730 --> 00:56:21,550 Mes taip pat turime kilpas. 832 00:56:21,550 --> 00:56:26,020 C mes turime kilpas, kad darbas, kaip šis. 833 00:56:26,020 --> 00:56:29,690 Mes turėjome savo masyvą, ir mes nuėjome nuo 0 indekso sąrašo pabaigoje, 834 00:56:29,690 --> 00:56:31,740 ir mes spausdinti visus, tiesa? 835 00:56:31,740 --> 00:56:33,880 Išskyrus problema yra, Association masyvai, 836 00:56:33,880 --> 00:56:36,610 mes nebūtinai žinome tuos skaitmeninius rodiklius 837 00:56:36,610 --> 00:56:39,610 nes dabar mes turime styginių indeksus. 838 00:56:39,610 --> 00:56:44,800 Dabar mes naudojame foreach kilpos, kurios, vėlgi, jūs, tikiuosi, naudojamų pset 7. 839 00:56:44,800 --> 00:56:48,930 Foreach kilpos bus tiesiog žinau, kiekvieną dalį, sąrašą. 840 00:56:48,930 --> 00:56:52,450 Ir tai nebūtinai turi tiksliai žinoti, skaitmeninis indeksas, kad jūs turite. 841 00:56:52,450 --> 00:56:56,490 Taigi, jūs turite foreach sintaksė, todėl foreach, jūs įtraukėte masyvo. 842 00:56:56,490 --> 00:57:00,430 Taigi, mano matrica vadinama pset, tada kaip, žodį kaip, 843 00:57:00,430 --> 00:57:04,530 ir tada įdėti šią vietos laikiną kintamąjį, kad jūs ketinate naudoti 844 00:57:04,530 --> 00:57:10,690 tik konkretaus daikto, kad ketina surengti specifinis - 845 00:57:10,690 --> 00:57:14,770 vienas egzempliorius arba vieną skyrių masyvo. 846 00:57:14,770 --> 00:57:18,350 Pset skaičius rengs 1, tada gal eis skaičius 6, 847 00:57:18,350 --> 00:57:20,410 ir tada jis laikys numerį 2. 848 00:57:20,410 --> 00:57:26,630 Bet tai garantuoja, kad eiti per kiekvieną vertės, kad yra masyve. 849 00:57:26,630 --> 00:57:30,530 Naudingos funkcijos, kad jums reikia žinoti, PHP yra reikalaujama, 850 00:57:30,530 --> 00:57:35,880 kad leidžia užtikrinti, kad jūs taip pat tam tikrus failus, echo, išeiti, tuščias. 851 00:57:35,880 --> 00:57:40,490 Aš labai rekomenduoju jums pažvelgti pset 7 ir pažvelgti šių funkcijų. 852 00:57:40,490 --> 00:57:42,810 Galbūt turite žinoti tiems, 853 00:57:42,810 --> 00:57:47,060 todėl aš tikrai žinau, kas, būtent, tie visi daro. 854 00:57:47,060 --> 00:57:50,080 >> O dabar mes ketiname eiti per apimtį tikrai greitai. 855 00:57:50,080 --> 00:57:53,490 Apimties, PHP yra natūra funky dalykas, skirtingai nuo C 856 00:57:53,490 --> 00:57:56,170 ir todėl mes tiesiog ketinate eiti per jį greitai. 857 00:57:56,170 --> 00:57:58,930 Taigi galime sakyti, kad mes pradėti tuo rodyklę, kad mes turime ten. 858 00:57:58,930 --> 00:58:02,900 Ir mes ketiname pradėti $ i. Taigi kintamojo "i" bus 0, 859 00:58:02,900 --> 00:58:06,730 ir mes tik ketina išlaikyti spausdinimo jį, kad didelis baltas langas ten. 860 00:58:06,730 --> 00:58:09,220 Mes ketiname pradėti I0, ir tada mes ketiname pakartoti jį. 861 00:58:09,220 --> 00:58:12,670 Taigi, čia yra 0. 862 00:58:12,670 --> 00:58:15,210 Ir tada mes ketiname prieaugio jį už kilpos, 863 00:58:15,210 --> 00:58:17,810 ir tada tai bus vertė 1. 864 00:58:17,810 --> 00:58:20,070 Vienas iš jų yra mažesnis nei 3, todėl jis ketina kirsti, kad linijos, 865 00:58:20,070 --> 00:58:23,230 ir tada mes ketiname pamatyti vėl spausdinti. 866 00:58:23,230 --> 00:58:25,520 Mes ketiname prieaugio jį vėl 2, 867 00:58:25,520 --> 00:58:29,860 ir 2 yra mažesnis nei 3, todėl jis bus perduoti už linijos, ir jis bus išspausdinti 2. 868 00:58:29,860 --> 00:58:35,100 Tada jums dėmesį, kad 3 yra ne mažesnis kaip 3, todėl mes išeiti iš už linijos. 869 00:58:35,100 --> 00:58:40,050 Taigi dabar mes jau išėjo, tada mes ketiname eiti į Nutraukimas funkcijos. 870 00:58:40,050 --> 00:58:45,010 Gerai. Taigi jūs turite pažymėti, kad šis kintamasis, mes sukūrėme, 871 00:58:45,010 --> 00:58:48,270 "i" kintamasis, yra ne vietoje scoped. 872 00:58:48,270 --> 00:58:50,280 Tai reiškia, kad tai nėra vietos ir kilpos, 873 00:58:50,280 --> 00:58:58,060 ir kad kintamasis mes vis dar galite prisijungti ir keisti po to, o ji vis dar bus veiksminga. 874 00:58:58,060 --> 00:59:02,160 Taigi, jei jūs einate į funkciją dabar pamatysite, kad mes taip pat naudoti "i" kintamasis, 875 00:59:02,160 --> 00:59:05,320 ir mes ketiname prieaugio "i" + +. 876 00:59:05,320 --> 00:59:09,410 Jūs, manyčiau, pirmiausia, remiantis C, kad tai, kad "i" kintamasis kopija. 877 00:59:09,410 --> 00:59:12,830 Tai visiškai skirtingas dalykas, kuris yra teisingas. 878 00:59:12,830 --> 00:59:16,560 Taigi, kai mes jį atspausdinti, mes ketiname spausdinti "i" + +, kuri ketinate spausdinti, kad 4, 879 00:59:16,560 --> 00:59:19,640 ir tada mes ketiname - atsiprašau. 880 00:59:19,640 --> 00:59:22,030 Tada mes ketiname baigti iš tos funkcijos, 881 00:59:22,030 --> 00:59:24,820 ir mes ketiname būti ten, kur, kad rodyklė yra dabar. 882 00:59:24,820 --> 00:59:29,190 Tai reiškia, kad po to, tačiau, nors funkcija pasikeitė "i" reikšmė, 883 00:59:29,190 --> 00:59:32,620 jis nesikeitė ne funkcija, 884 00:59:32,620 --> 00:59:35,060 nes funkcija turi atskirą taikymo sritį. 885 00:59:35,060 --> 00:59:38,960 Tai reiškia, kad, kai mes echo "i", ji negali keisti atsižvelgiant į funkcijos taikymo sritį, 886 00:59:38,960 --> 00:59:43,660 ir taip, tada mes ketiname vėl spausdinti 3. 887 00:59:43,660 --> 00:59:47,520 Įvairių dalykų apie taikymo sritį PHP nei C 888 00:59:47,520 --> 00:59:51,130 >> Dabar PHP ir HTML. 889 00:59:51,130 --> 00:59:53,510 PHP yra naudojama, kad tinklalapiai dinamiškas. 890 00:59:53,510 --> 00:59:58,660 Jis rūšies daro ką skiriasi. 891 00:59:58,660 --> 01:00:02,090 Mes turime ji skiriasi nuo HTML. 892 01:00:02,090 --> 01:00:05,230 Su HTML, mes visada tik turėti tą patį statinį dalyką, pavyzdžiui, kaip Rob parodė, 893 01:00:05,230 --> 01:00:09,370 o PHP, galite pakeisti dalykus pagal tai, kas yra vartotojas. 894 01:00:09,370 --> 01:00:11,830 Taigi, jei aš turiu tai, aš, "Jūs esate prisijungęs kaip -" o po to vardas, 895 01:00:11,830 --> 01:00:14,420 ir aš galiu pakeisti pavadinimą. Taigi dabar vardas Juozapas, 896 01:00:14,420 --> 01:00:18,880 ir ji turi "apie mane", bet tada aš taip pat gali pakeisti pavadinimą, kad Tommy. 897 01:00:18,880 --> 01:00:21,700 Ir tai būtų kitas dalykas. 898 01:00:21,700 --> 01:00:23,840 Taigi mes taip pat galime keisti įvairių dalykų apie jį, 899 01:00:23,840 --> 01:00:27,070 ir jis bus parodyti kitokį turinį remiantis pavadinimu. 900 01:00:27,070 --> 01:00:31,430 Taigi, PHP gali natūra pakeisti tai, kas vyksta jūsų svetainėje. 901 01:00:31,430 --> 01:00:33,540 Tas pats čia. Vis dėlto pažymi, kad jie turi kitokį turinį, 902 01:00:33,540 --> 01:00:38,870 net jei yra techniškai dar susipažinimo tą patį tinklalapį ant paviršiaus. 903 01:00:38,870 --> 01:00:43,450 Generatoriniai HTML. Yra 2 skirtingų būdų, kad galite tai padaryti. 904 01:00:43,450 --> 01:00:48,980 Taigi mes pereiti per šią teisę dabar. Pirmasis būdas yra, jūs turite - taip, atsiprašau. 905 01:00:48,980 --> 01:00:51,150 Taigi, jums tereikia savo Regular kilpa PHP programavimo kalba, 906 01:00:51,150 --> 01:00:56,270 ir tada echo PHP ir jums echo iš HTML. 907 01:00:56,270 --> 01:00:58,720 Naudojant kas Rob jums parodė, HTML scenarijų 908 01:00:58,720 --> 01:01:04,030 ir tada naudojant PHP spausdinti tiesiog atsispausdinti jį į tinklalapį. 909 01:01:04,030 --> 01:01:09,520 Alternatyvus būdas yra daryti taip, jei atskirti PHP ir HTML. 910 01:01:09,520 --> 01:01:11,940 Taigi jūs galite turėti PHP eilutę, kuri prasideda už linijos, 911 01:01:11,940 --> 01:01:16,020 tada jums gali turėti HTML eilutę atskiroje dalykas, 912 01:01:16,020 --> 01:01:19,700 ir tada baigti kilpą, vėl su PHP. 913 01:01:19,700 --> 01:01:21,800 Taigi, tai tipo atskirti jį. 914 01:01:21,800 --> 01:01:24,020 Kairėje pusėje, jūs galite, kad turite visus - 915 01:01:24,020 --> 01:01:26,360 tai tik 1 riekė PHP. 916 01:01:26,360 --> 01:01:28,510 Dešinėje matote, kad jūs turite PHP linija, 917 01:01:28,510 --> 01:01:32,540 turite HTML liniją, ir jūs turite PHP replikos. 918 01:01:32,540 --> 01:01:36,870 Taigi, atskiriant jį į tai, ką jie daro. 919 01:01:36,870 --> 01:01:39,330 Ir jums dėmesį, kad bet kuriuo atveju, už vieną iš jų, 920 01:01:39,330 --> 01:01:41,980 jie vis dar atsispausdinti paveikslėlį, vaizdo, vaizdo, 921 01:01:41,980 --> 01:01:44,540 kad HTML dar atspausdintas tokiu pačiu būdu. 922 01:01:44,540 --> 01:01:49,870 Ir tada jūs vis dar galėsite pamatyti 3 vaizdai rodomi jūsų svetainėje. 923 01:01:49,870 --> 01:01:52,820 Taigi tai 2 skirtingi būdai daro tą patį. 924 01:01:52,820 --> 01:01:55,060 >> Dabar mes turime formas ir prašymus. Kaip Rob jums parodė, 925 01:01:55,060 --> 01:01:59,400 yra formų HTML, ir mes tiesiog vėjas per tai. 926 01:01:59,400 --> 01:02:02,040 Turite ieškinį ir jūs turite būdą, ir jūsų veiksmai 927 01:02:02,040 --> 01:02:04,350 tipo rodo jums, kur jūs ketinate siųsti, ir metodas ar 928 01:02:04,350 --> 01:02:06,960 tai bus GET arba POST. 929 01:02:06,960 --> 01:02:11,220 Ir GET užklausa, kaip sakė Rob, reiškia, kad jūs ketinate įdėti jį į formą 930 01:02:11,220 --> 01:02:15,760 ir pamatysite, kaip URL, o POST prašymo jūs nematysite į URL. 931 01:02:15,760 --> 01:02:17,840 Taigi, šiek tiek skiriasi. 932 01:02:17,840 --> 01:02:19,950 Tačiau vienas dalykas, kad panašus dalykas 933 01:02:19,950 --> 01:02:22,560 yra tai, kad POST ir GET yra vienodai nesaugus. 934 01:02:22,560 --> 01:02:26,430 Taigi jūs manote, kad tik todėl, kad nematote jį į URL, 935 01:02:26,430 --> 01:02:28,790 tai reiškia, kad žinutė yra saugesnis, 936 01:02:28,790 --> 01:02:34,420 bet jūs vis dar galite pamatyti savo slapukų informaciją, kad jūs siunčiate. 937 01:02:34,420 --> 01:02:38,260 Taigi nemanau, kad apie vieną ar kitą. 938 01:02:38,260 --> 01:02:42,160 Kitas dalykas, reikia pažymėti, kad jūs taip pat turite skyriuje kintamuosius. 939 01:02:42,160 --> 01:02:45,850 Vaikinai naudoti tai pset 7 gauti savo vartotojo ID informacija. 940 01:02:45,850 --> 01:02:48,550 Kas nutiko, kad jūs galite naudoti šį masyvą, 941 01:02:48,550 --> 01:02:53,310 $ _SESSION, ir tada Jūs galėsite prieiti prie skirtingų dalykų 942 01:02:53,310 --> 01:02:57,720 ir laikyti skirtingus dalykus visoje puslapių. 943 01:02:57,720 --> 01:03:00,750 Paskutinis >> dalykas yra tai, kad mes turime SQL, struktūrizuotų užklausų kalbą, 944 01:03:00,750 --> 01:03:04,360 ir tai yra programavimo kalba, valdyti duomenų bazes. 945 01:03:04,360 --> 01:03:08,220 Kas tiksliai yra duomenų bazės? Jie kolekcijos stalų, 946 01:03:08,220 --> 01:03:10,630 ir kiekviena lentelė gali turėti panašių rūšių objektus. 947 01:03:10,630 --> 01:03:14,990 Taigi mes turėjome vartotojų lentelę jūsų finansų pset. 948 01:03:14,990 --> 01:03:20,610 Ir kodėl jie naudingi? Nes tai iš nuolat saugoti informaciją būdas. 949 01:03:20,610 --> 01:03:22,840 Tai sekimo dalykus ir valdyti dalykų būdas 950 01:03:22,840 --> 01:03:25,890 ir iš tikrųjų matyti, kad skirtingų puslapių ir sekti. 951 01:03:25,890 --> 01:03:29,930 Kadangi, jei jūs tiesiog laikyti jį, kad vienas iš karto metu 952 01:03:29,930 --> 01:03:33,720 ir tada naudokite jį vėliau, jūs negalėsite prisijungti prie nieko, kad jūs išsaugojote. 953 01:03:33,720 --> 01:03:37,660 Mes turime 4 pagrindinių dalykų, kad mes naudojame SQL komandas. 954 01:03:37,660 --> 01:03:40,190 Mes turime pasirinkti, įterpti, ištrinti ir atnaujinti. 955 01:03:40,190 --> 01:03:42,880 Tai yra tikrai svarbu, kad jus vaikinai žinoti jūsų viktorinoje. 956 01:03:42,880 --> 01:03:45,990 >> Mes greitai pereiti pasirinkite dabar. 957 01:03:45,990 --> 01:03:48,540 Iš esmės, jūs pasirinkdami eilučių iš duomenų bazės. 958 01:03:48,540 --> 01:03:52,400 Taigi, jei turite, čia - 959 01:03:52,400 --> 01:03:56,740 mes turime šiuos 2 skirtingus dalykus, ir mes norime, kad pasirinktumėte iš klasių lentelę 960 01:03:56,740 --> 01:04:01,480 kur nuostabus - kur nuostabus stulpelio reikšmė yra 1. 961 01:04:01,480 --> 01:04:04,460 Taigi galite pamatyti čia, mes turime šiuos 2 dalykus klasės pavadinimas, 962 01:04:04,460 --> 01:04:08,490 CS50 ir Stat110, ir mes turime klasės ID ir šūkį. 963 01:04:08,490 --> 01:04:13,150 Taigi, mes norime pasirinkti visus tos informacijos. 964 01:04:13,150 --> 01:04:17,480 Tada jūs galite pamatyti čia, kad tai rūšies skinti iš tos nuostabus skiltyje 965 01:04:17,480 --> 01:04:25,170 kur visi dalykai yra 1, tada ji turi identifikatorius klasės, klasės pavadinimą ir šūkį, kad gali pasirinkti iš. 966 01:04:25,170 --> 01:04:28,100 Kaip tiksliai tai padaryti kodą? Jūs turite naudoti PHP. 967 01:04:28,100 --> 01:04:33,830 Taigi, tai tipo kaip PHP ir SQL yra susiję vieni su kitais. 968 01:04:33,830 --> 01:04:38,130 Dabar mes turime kodą, ir mes ketiname naudoti mūsų užklausos funkcija 969 01:04:38,130 --> 01:04:41,370 kaip tai darėme pset 7, ir mes ketiname paleisti SQL užklausą. 970 01:04:41,370 --> 01:04:43,870 Tada mes ketiname turėti - 971 01:04:43,870 --> 01:04:46,280 mes visada turime patikrinti, ar eilės numeriai trigubas lygi, jei klaidinga. 972 01:04:46,280 --> 01:04:49,010 Taigi dar kartą, jūs norite patikrinti rūšį ir vertę, 973 01:04:49,010 --> 01:04:53,880 ir tada, jei jis neveikia, tada jūs norite atsiprašyti, kaip įprasta, kaip tai darėme pset 7. 974 01:04:53,880 --> 01:04:55,870 Priešingu atveju, jūs norite kilpos per visa su tais patogu 975 01:04:55,870 --> 01:04:59,410 foreach kilpos, kad mes tiesiog perėjo. 976 01:04:59,410 --> 01:05:01,280 Dabar, kad mes apsisukimo per ir mes padarėme tai praeityje, 977 01:05:01,280 --> 01:05:05,080 Tarkime, kad mūsų užklausos praėjo, dabar mes turime foreach ciklą. 978 01:05:05,080 --> 01:05:11,050 Ir pirmoje eilėje jis turi, kad čia eilė, čia, tai supakuota. 979 01:05:11,050 --> 01:05:14,010 Ji ketina atsispausdinti visą informaciją, kad jis įgytas. 980 01:05:14,010 --> 01:05:18,070 Taigi jis ketina išspausdinti apačioje "Nori išmokti HTML?" 981 01:05:18,070 --> 01:05:23,370 Tada jis ketina pereiti į kitą eilutę, nes jis baigtas pirmasis už linijos, 982 01:05:23,370 --> 01:05:26,510 ir taip, tada jis ketina spausdinti antroje eilutėje jį, 983 01:05:26,510 --> 01:05:32,120 kuris bus STAT110, Surasti visas akimirkas. 984 01:05:32,120 --> 01:05:34,290 >> Ir paskutinis dalykas yra SQL pažeidžiamumų. 985 01:05:34,290 --> 01:05:37,300 Žinau Davidas palietė šis šiek tiek per paskaitą. 986 01:05:37,300 --> 01:05:40,730 Galite skaityti tai vėliau. Tai tikrai juokinga. 987 01:05:40,730 --> 01:05:45,320 SQL injekcija yra keblus dalykas natūra. 988 01:05:45,320 --> 01:05:49,890 Tarkime, kad jūs tiesiog klijuoti tuos kintamuosius tiesiai į jūsų užklausą, 989 01:05:49,890 --> 01:05:52,290 kaip matote toje pirmoje eilutėje. 990 01:05:52,290 --> 01:05:54,520 Taigi, atrodo gerai, tiesa? Jūs tiesiog išleisti vartotojo vardą 991 01:05:54,520 --> 01:05:58,820 ir slaptažodį į savo SQL užklausą ir norite išsiųsti jį išjungti ir gauti viską, kas yra jūsų duomenų lentelėje. 992 01:05:58,820 --> 01:06:01,450 Tai atrodo gana paprasta. Taigi, tarkim kažkas pasiuntė, 993 01:06:01,450 --> 01:06:04,910 slaptažodžio, tai AR tekstas čia - 994 01:06:04,910 --> 01:06:06,780 iš tiesų turėtų būti raudonas langelis. 995 01:06:06,780 --> 01:06:11,920 Taigi galime sakyti, kad jie įdėti, kad slaptažodį į - tai, ką jie patenka. 996 01:06:11,920 --> 01:06:16,520 Taigi jie išleisti ARBA "1" = 1. 997 01:06:16,520 --> 01:06:20,880 Rūšies kvailas slaptažodį turėti. 998 01:06:20,880 --> 01:06:25,070 Dabar galime tik pakeisti jį, ir jums dėmesį, kad tame SQL užklausoje dabar 999 01:06:25,070 --> 01:06:29,090 jis bus vertinamas kaip visada tiesa, nes jūs dėmesį, kad 1000 01:06:29,090 --> 01:06:32,240 galite SQL užklausos pasirinkti visą šią informaciją 1001 01:06:32,240 --> 01:06:35,420 arba galite tiesiog 1 = 1. 1002 01:06:35,420 --> 01:06:41,030 Taigi, tai visada bus įvertinti true. 1003 01:06:41,030 --> 01:06:46,610 Kad nesiruošia tikrai veikia, nes tai reiškia, kad įsilaužėlis gali įsilaužti į jūsų sistemą. 1004 01:06:46,610 --> 01:06:49,300 Sprendimas yra tai, kad turite naudoti SKVN sistema, 1005 01:06:49,300 --> 01:06:51,360 tai reiškia, kad turite naudoti klaustukų, 1006 01:06:51,360 --> 01:06:53,350 o tai, ką jūs vaikinai naudojami pset 7, 1007 01:06:53,350 --> 01:06:57,620 kur jūs ketinate naudoti klaustuką vietoj kur norite įdėti ką nors, 1008 01:06:57,620 --> 01:07:01,430 ir tada jūs ketinate turėti kablelį, tada turėsite po to, 1009 01:07:01,430 --> 01:07:07,610 po savo eilutę, įvairūs kintamieji, kuriuos norite pakeisti į savo klaustuku. 1010 01:07:07,610 --> 01:07:10,330 Taigi jums pažymėti, kad čia dabar turiu šiuos raudonos klaustukų. 1011 01:07:10,330 --> 01:07:15,420 Tada aš įdėti po mano stygos kintamuosius taip, aš žinau, kad pakeisti juos ta pačia tvarka vėliau. 1012 01:07:15,420 --> 01:07:18,470 Tai leis įsitikinti, kad, jei kas nors ją, kaip tai, 1013 01:07:18,470 --> 01:07:24,050 ir jie turi arba 1 = 1 situaciją, kad bus įsitikinkite, 1014 01:07:24,050 --> 01:07:30,490 iš nugaros pabaigoje, įsitikinkite, kad ji nėra iš tikrųjų nutraukti SQL užklausą. 1015 01:07:30,490 --> 01:07:33,660 Gerai, kad yra gana daug, PHP ir SQL viesulas. 1016 01:07:33,660 --> 01:07:41,520 Geriausios kloties jums visiems, ir dabar Ore 1017 01:07:41,520 --> 01:07:44,270 >> [Oreoluwatomiwa Babarinsa] Gerai visiems. Laikas eiti per tam tikrą JavaScript 1018 01:07:44,270 --> 01:07:48,840 ir keletas kitų dalykų, labai greitai, todėl mes negalime turėti jums iki vakarą. 1019 01:07:48,840 --> 01:07:56,930 "JavaScript". Taip. JavaScript yra natūra cool dalykas, esą. 1020 01:07:56,930 --> 01:07:59,090 Tai, ką jūs iš tikrųjų reikia žinoti apie JavaScript, tai tarsi 1021 01:07:59,090 --> 01:08:03,810 kliento pusėje pabaigoje, ką jūsų interneto app ketinate daryti. 1022 01:08:03,810 --> 01:08:08,280 Yra keletas dalykų, jūs tiesiog nenorite rūpintis visą laiką serverio pusėje. 1023 01:08:08,280 --> 01:08:12,880 Visi mažai sąveika, pabrėžiant vieną dalyką, todėl kažkas dingsta. 1024 01:08:12,880 --> 01:08:15,340 Jūs tikrai nenorite turėti pasikalbėti su savo serverio visas tuo metu. 1025 01:08:15,340 --> 01:08:18,069 Ir kai tai nėra net įmanoma padaryti serverio pusėje. 1026 01:08:18,069 --> 01:08:21,899 Tai kodėl mes turime kažką panašaus į "JavaScript". 1027 01:08:21,899 --> 01:08:24,359 Cool dalykų apie "JavaScript": Tai yra dinamiškai įvedėte. 1028 01:08:24,359 --> 01:08:27,149 Ką tai reiškia, kad jūsų programa nereikia žinoti 1029 01:08:27,149 --> 01:08:30,970 kas, būtent, yra šie kintamieji kai rašote jį. 1030 01:08:30,970 --> 01:08:34,510 Tai bus tiesiog tarsi figure it out, kaip jis veikia. 1031 01:08:34,510 --> 01:08:37,520 Kitų dalykų, kurie yra kietas apie tai: Tai garbanotas petnešomis kalba, 1032 01:08:37,520 --> 01:08:41,359 o tai reiškia, sintaksė panaši į C ir PHP. 1033 01:08:41,359 --> 01:08:47,050 Jūs neturite daryti daug perdaryti, kai jūs mokotės JavaScript. 1034 01:08:47,050 --> 01:08:49,180 Čia mes turime šiek tiek "JavaScript". 1035 01:08:49,180 --> 01:08:52,560 Įdomus dalykas čia yra tai, kad, jei jūs žiūrite į jį, 1036 01:08:52,560 --> 01:08:56,330 mes turime JavaScript tiek teisę ten galvos žyma. 1037 01:08:56,330 --> 01:08:59,479 Kas yra nėra iš esmės tiesiog įtraukti "JavaScript" failą. 1038 01:08:59,479 --> 01:09:02,260 Tai vienas iš būdų, galite įtraukti "JavaScript" į savo programą. 1039 01:09:02,260 --> 01:09:06,910 Tada antrasis šiek tiek yra iš tikrųjų kai Inline Javaskriptą, 1040 01:09:06,910 --> 01:09:10,790 labai panašus į inline stiliaus su CSS, 1041 01:09:10,790 --> 01:09:16,180 ir jūs tik raštu tam tikrą kodą labai greitai ten. 1042 01:09:16,180 --> 01:09:18,120 JavaScript turi masyvų. 1043 01:09:18,120 --> 01:09:20,850 Tiesiog dar vienas būdas išlaikyti duomenis apie labai naudinga. 1044 01:09:20,850 --> 01:09:25,180 Labai malonu ir lengva sintaksė. 1045 01:09:25,180 --> 01:09:29,870 Galite naudoti skliaustus prieiti viską ir išlaikyti viskas kartu. 1046 01:09:29,870 --> 01:09:35,020 Nieko pernelyg sudėtinga. 1047 01:09:35,020 --> 01:09:38,630 The cool dalykas apie JavaScript ir skriptų kalba apskritai 1048 01:09:38,630 --> 01:09:40,920 yra tai, kad jūs neturite jaudintis dėl matricų dydžių. 1049 01:09:40,920 --> 01:09:43,880 Jūs galite tiesiog naudoti array.length ir sekti juo, 1050 01:09:43,880 --> 01:09:46,960 taip pat masyvas gali augti arba mažėti, kaip jums reikia jį. 1051 01:09:46,960 --> 01:09:49,279 Taigi jums nereikia net nerimauti bet rūšiuoti, 1052 01:09:49,279 --> 01:09:57,050 O ne, man reikia skirti daugiau dalykų, ar ko nors panašaus. 1053 01:09:57,050 --> 01:10:00,090 >> Cool dalykas čia yra tai, kad "JavaScript" turi kažką vadinama objektus. 1054 01:10:00,090 --> 01:10:04,800 Tai Objektinis kalba, todėl tai, ką ji yra, iš esmės, 1055 01:10:04,800 --> 01:10:10,100 būdas jums grupės duomenis kartu, šiek tiek panašus į struct, 1056 01:10:10,100 --> 01:10:17,280 , bet jūs galite ja naudotis kaip struct arba masyvą sintaksė. 1057 01:10:17,280 --> 01:10:22,520 Tai gana paprasta, ir ką jūs galite padaryti su tai grupė duomenų kartu 1058 01:10:22,520 --> 01:10:24,810 jei turite duomenų krūva, kad manimi susijusią. 1059 01:10:24,810 --> 01:10:26,850 Nes tai visų dalykų, kuriuos reikia apibūdinti automobilį, 1060 01:10:26,850 --> 01:10:29,050 Jums nereikia turėti jį skirtingose ​​vietose krūva. 1061 01:10:29,050 --> 01:10:35,300 Jūs galite tiesiog klijuoti jį į 1 objektą JavaScript. 1062 01:10:35,300 --> 01:10:39,090 Kaip jūs turbūt žinote, Iteracja yra vienas iš tų varginančių užduotis. 1063 01:10:39,090 --> 01:10:43,810 Jūs tiesiog padaryti jį virš vėl. Jums reikia pasikalbėti su kiekvieno objekto į automobilį, 1064 01:10:43,810 --> 01:10:47,340 ar jums reikia eiti per kiekvieną sąrašo elementą ar kažką panašaus. 1065 01:10:47,340 --> 01:10:51,770 Taigi, "JavaScript" yra panaši į PHP foreach sintaksė. 1066 01:10:51,770 --> 01:10:54,590 Šiuo atveju, tai pagal kilpą. 1067 01:10:54,590 --> 01:10:57,300 Norite naudoti šį tik objektus. 1068 01:10:57,300 --> 01:11:01,030 Yra keletas problemų, kurios atsiranda, jei jūs naudojate tai ant matricos. 1069 01:11:01,030 --> 01:11:03,750 Jis paprastai yra vienas iš tų dalykų, nors, kad yra labai naudinga, 1070 01:11:03,750 --> 01:11:06,590 nes jums pašalinti važtaraščius daug 1071 01:11:06,590 --> 01:11:10,270 nes jūs neturite traukti viską į savo objektą patys. 1072 01:11:10,270 --> 01:11:12,300 Jūs neturite prisiminti visus pagrindinius pavadinimus. 1073 01:11:12,300 --> 01:11:18,270 Jūs tiesiog tarsi gauti juos atgal šioje sintaksė. 1074 01:11:18,270 --> 01:11:21,500 Be to, su, jūs tiesiog norite prisiminti 1075 01:11:21,500 --> 01:11:27,180 kad jūs gaunate atgal visus raktus, labai panašiai kaip maišos lentelė. 1076 01:11:27,180 --> 01:11:30,880 Jei prisimenate to, kai jūs įdėti į eilutę galite gauti kažką iš 1077 01:11:30,880 --> 01:11:33,840 kad būtų susietą vertę su juo. 1078 01:11:33,840 --> 01:11:36,360 Ką jūs galite padaryti su tai galite pasakyti, viskas gerai, 1079 01:11:36,360 --> 01:11:42,120 Aš įdėti į automobilį, ir aš jį pavadino "Ferrari". 1080 01:11:42,120 --> 01:11:45,290 Taigi, galite įdėti į styginių Ferrari dar kartą vėliau, ir jūs galite gauti, kad iš. 1081 01:11:45,290 --> 01:11:50,000 Ir jūs galite padaryti, kad kilpa, su į kilpą. 1082 01:11:50,000 --> 01:11:53,320 Taigi tik daugiau apie objektus. Svarbiausias dalykas iš to, ką jums reikia prisiminti, 1083 01:11:53,320 --> 01:12:00,340 yra tai, kad galite naudoti objekto struct kaip sintaksės, jei norite su jais, 1084 01:12:00,340 --> 01:12:04,590 išskyrus atvejus, kai tai, ką jūsų ketina naudoti kaip eilutę yra neteisingas kintamojo vardas. 1085 01:12:04,590 --> 01:12:07,650 Taigi, jei jums pažvelgti, kad mes turime raktą su tarpais. 1086 01:12:07,650 --> 01:12:12,500 Na, jei jūs įdėti object.key, erdvė, su, erdvė, erdvės, 1087 01:12:12,500 --> 01:12:15,320 kad tik nebūtų prasmės sintaksiškai. 1088 01:12:15,320 --> 01:12:22,730 Taigi, jūs tik galite padaryti, kad su šio kronšteino sintaksė rūšiuoti. 1089 01:12:22,730 --> 01:12:26,520 >> Be to, "JavaScript" yra labai apimtis-protinga PHP. 1090 01:12:26,520 --> 01:12:29,050 Jūs turite 2 būdus, kaip spręsti apimtį. 1091 01:12:29,050 --> 01:12:31,960 Jūs negalite turėti var priešais kintamąjį, 1092 01:12:31,960 --> 01:12:34,060 ir kad tik reiškia, kad tai yra globali. 1093 01:12:34,060 --> 01:12:37,050 Galite pamatyti jį iš bet kur. Net jei buvo įdėti šią nuorodą į if, 1094 01:12:37,050 --> 01:12:42,430 niekur kitur kodą po šiuo klausimu galima pamatyti, kad kintamasis. 1095 01:12:42,430 --> 01:12:46,730 Kitas dalykas, nors tai su var, tai tik kokia funkcija esate in 1096 01:12:46,730 --> 01:12:48,870 Jei nesate funkcija, gerai, tai globali. 1097 01:12:48,870 --> 01:12:53,900 Bet jei esate funkciją jis matomas tik per tą funkciją. 1098 01:12:53,900 --> 01:12:56,420 Aš neturiu pavyzdį, bet taip. Tai vienas iš tų dalykų, kur 1099 01:12:56,420 --> 01:12:59,900 galite valdyti ką kintamieji norite būti pasaulinė, 1100 01:12:59,900 --> 01:13:03,810 Kokie kintamieji norite būti vietos, bet jūs turite būti atsargūs, apie tai, 1101 01:13:03,810 --> 01:13:06,890 nes jūs neturite smulkių grūdelių kontrole, ką daryti C tipo, 1102 01:13:06,890 --> 01:13:15,820 kur, jei kažkas yra deklaruota už linijos, jis ketina likti, kad kilpa. 1103 01:13:15,820 --> 01:13:18,790 Dalykas, mes iš tikrųjų rūpi, naudojant JavaScript manipuliuoja tinklalapius, tiesa? 1104 01:13:18,790 --> 01:13:21,800 Aš turiu galvoje, tai kodėl mes darome tai. 1105 01:13:21,800 --> 01:13:23,840 >> Norėdami tai padaryti, mes naudojame kažką vadinama DOM. 1106 01:13:23,840 --> 01:13:25,850 Document Object Model. 1107 01:13:25,850 --> 01:13:29,430 Iš esmės, ką ji daro, tai trunka visą savo HTML 1108 01:13:29,430 --> 01:13:34,110 ir modeliai jį į objektų, kurie yra įdėtos per viena kitai krūva. 1109 01:13:34,110 --> 01:13:37,080 Jūs pradedate su kažką panašaus į tai. 1110 01:13:37,080 --> 01:13:44,770 Jūs turite, dešinėje man kodo krūva ten tai tarsi - 1111 01:13:44,770 --> 01:13:46,640 Galima būtų galvoti, kad būčiau labai sunku manipuliuoti, 1112 01:13:46,640 --> 01:13:48,700 nes norite būti apdorojant per teksto krūva 1113 01:13:48,700 --> 01:13:52,080 ir turintys gabalas be dalykų. O kas, jei jis nebuvo tinkamai suformatuotas? 1114 01:13:52,080 --> 01:13:54,880 Blogi dalykai įvyktų. 1115 01:13:54,880 --> 01:13:58,140 Taigi JavaScript rūpinasi tai už jus, ir jūs gaunate gražią duomenų struktūra, 1116 01:13:58,140 --> 01:14:01,390 kaip vienas ant mano kairę, kur jūs tiesiog turite dokumentą, 1117 01:14:01,390 --> 01:14:03,530 ir viduje, kad jūs turite kažką vadinama HTML 1118 01:14:03,530 --> 01:14:05,600 ir viduje, kad jūs turite galvą ir kūną, 1119 01:14:05,600 --> 01:14:08,420 ir viduje, kad galvos turite pavadinimą, taip toliau, taip toliau, taip toliau. 1120 01:14:08,420 --> 01:14:11,810 Tai supaprastina manipuliuoti tinklalapį, kad tai tik, 1121 01:14:11,810 --> 01:14:14,190 oh, aš tik noriu pasikalbėti su šio objekto. 1122 01:14:14,190 --> 01:14:21,340 Rūšiuoti labai panašiai taip, kaip norėtumėte pasikalbėti su kito objekto galite padaryti patys. 1123 01:14:21,340 --> 01:14:25,980 Kaip ir sakiau, visi DOM yra dokumento objektas. 1124 01:14:25,980 --> 01:14:29,290 Bet tai tik viena vieta, ir tada jūs galite eiti per jį rasti dalykų, 1125 01:14:29,290 --> 01:14:33,880 ir jūs galite padaryti - tai senas stilius daro, ten, 1126 01:14:33,880 --> 01:14:38,130 kur jūs document.getElementById, tada vardas, 1127 01:14:38,130 --> 01:14:42,420 ir kaip jūs galite tikriausiai pasakys, tai pasireiškia labai griozdiškas po kurio laiko. 1128 01:14:42,420 --> 01:14:44,480 Taigi, jūs tikriausiai nenorite daryti. Štai kodėl mes turime 1129 01:14:44,480 --> 01:14:48,760 Kitas dalykas, mes ketiname kalbėti apie po to. 1130 01:14:48,760 --> 01:14:52,510 Svarbiausias dalykas čia yra tai, kad viskas gerai, kad turite visus šiuos elementus, tiesa? 1131 01:14:52,510 --> 01:14:56,400 Taigi gal aš galiu pakeisti kažką, kai puslapis apkrovoms spalvą. 1132 01:14:56,400 --> 01:14:58,380 Na ir kas? Ką daryti, jei mano vartotojas paspaudžia kažką? 1133 01:14:58,380 --> 01:15:00,540 Noriu padaryti kažką įdomaus, kai jie paspaudžia kažką. 1134 01:15:00,540 --> 01:15:02,600 Štai kodėl mes turime renginius. 1135 01:15:02,600 --> 01:15:05,330 Galite iš esmės, rasti bet kokį jūsų DOM elementas, 1136 01:15:05,330 --> 01:15:08,560 ir tada sako, ei. Kai tai įkelia ar kas nors jį paspaudžia 1137 01:15:08,560 --> 01:15:11,410 arba kai jie pelė per jį, kažką daryti su juo. 1138 01:15:11,410 --> 01:15:15,330 O kas jums yra, jūs turite funkcijas, tvarkyti tai už jus. 1139 01:15:15,330 --> 01:15:17,980 Šios funkcijos yra renginių krautuvai. 1140 01:15:17,980 --> 01:15:20,440 Kas they're - tai tik išgalvotas būdas pasakyti, 1141 01:15:20,440 --> 01:15:23,500 ši funkcija vykdoma tik tada, kai šis renginys vyksta. 1142 01:15:23,500 --> 01:15:28,070 Taigi ji tvarko renginį, kuris vyksta. 1143 01:15:28,070 --> 01:15:30,810 Tai kaip jums būtų išdėstyti įvykio prižiūrėtojas. 1144 01:15:30,810 --> 01:15:34,750 Turiu šiek mygtuką, kai jūs spustelėkite, ji sprogsta. 1145 01:15:34,750 --> 01:15:40,560 Taigi ne spustelėkite mygtuką. 1146 01:15:40,560 --> 01:15:42,910 Tai yra vienas iš būdų artėja, tiesa? 1147 01:15:42,910 --> 01:15:46,430 Jūs turite mygtuką tegus, ir spustelėkite turite eilutę, kad sako, 1148 01:15:46,430 --> 01:15:50,460 Oh, beje, aš man tai sprogstamasis dalykas. 1149 01:15:50,460 --> 01:15:53,990 Priešingu atveju, tai tik kaip įprastas mygtuko ką tik padarė. 1150 01:15:53,990 --> 01:15:56,550 Jūs taip pat gali tai padaryti kitu būdu, 1151 01:15:56,550 --> 01:16:02,770 greiferiniai DOM elementas, bet mes išsaugosime, kad, kai mes kalbame apie jQuery. 1152 01:16:02,770 --> 01:16:07,580 >> JQuery: Tai biblioteka, kuri yra kryžminio naršyklės. 1153 01:16:07,580 --> 01:16:09,580 Jūs galite naudoti ją beveik nieko. 1154 01:16:09,580 --> 01:16:12,090 Ir tai tik suteikia jums įrankius, dirbti su daug. 1155 01:16:12,090 --> 01:16:15,850 Kadangi Javaskriptą, o galingas, neturi visų įrankius, jūs turite 1156 01:16:15,850 --> 01:16:20,550 out of the box, kad tikrai kovai web app galbūt norėsite daryti. 1157 01:16:20,550 --> 01:16:24,650 Todėl supaprastina dalykų, suteikia Jums daug funkcijų 1158 01:16:24,650 --> 01:16:28,760 out of the box, kad galėtumėte paprastai turi rašyti sau, vėl ir vėl ir vėl. 1159 01:16:28,760 --> 01:16:31,600 Ir tik daro ką labai paprasta. 1160 01:16:31,600 --> 01:16:35,780 Jūs taip pat turite selektoriai, kurie leidžia priimti visus tuos elementus 1161 01:16:35,780 --> 01:16:42,800 iš DOM daug daugiau tiesiog, vietoj to, kad naudoti šiuos labai ilgas funkcija skambučius. 1162 01:16:42,800 --> 01:16:46,630 Daugiau apie šias selektoriai. Jūs turite, ten jūs, tarkime, 1163 01:16:46,630 --> 01:16:49,800 Noriu gauti elementą su ID "uola". 1164 01:16:49,800 --> 01:16:56,450 Na, jQuery, tai tik $ ir tada seka, turi svarą, ir tada "uola". 1165 01:16:56,450 --> 01:17:01,960 Tai labai paprasta ir daug greičiau nei tradicinių JavaScript būdas spręsti šią problemą. 1166 01:17:01,960 --> 01:17:06,120 Ir jūs turite panašių dalykų klasių ir elementų tipų. 1167 01:17:06,120 --> 01:17:08,140 JQuery yra - viena iš įdomių funkcijų yra, galite rūšiuoti suspausti 1168 01:17:08,140 --> 01:17:14,350 žemyn jūsų klausimus apie savo DOM labai, labai greitai. 1169 01:17:14,350 --> 01:17:18,980 Dabar mes grįžome į renginio tvarkymo, ir tai, kaip jums tvarkyti vieną įvykį JQuery. 1170 01:17:18,980 --> 01:17:23,090 Taigi, ką mes ketiname čia mes norim pasakyti, viskas gerai. Turiu scenarijaus žymą, tiesa? 1171 01:17:23,090 --> 01:17:25,400 Taigi turiu šį inline JavaScript. 1172 01:17:25,400 --> 01:17:27,750 Ką mes ketiname padaryti, tai mes ketiname pasakyti, viskas gerai. 1173 01:17:27,750 --> 01:17:30,860 Kai dokumentas yra paruoštas, o tai reiškia, kad dokumentas įkeltas, 1174 01:17:30,860 --> 01:17:34,660 mes ketiname eiti į tą funkciją, ir mes ketiname pasakyti, viskas gerai, 1175 01:17:34,660 --> 01:17:37,060 ši funkcija iš tikrųjų daryti ką nors kita. 1176 01:17:37,060 --> 01:17:42,320 Tai iš esmės sakydamas, viskas gerai, man gauti su ID elementas "myid." 1177 01:17:42,320 --> 01:17:47,960 Ir tada duokite funkciją prižiūrėtojas kad vykdančiai kai jūs spustelėkite jį. 1178 01:17:47,960 --> 01:17:49,820 Iš esmės, ką tai daro, yra, ji sako, viskas gerai. 1179 01:17:49,820 --> 01:17:52,630 Puslapis pakrautas, todėl aš ruošiuosi į, rasti šį elementą, 1180 01:17:52,630 --> 01:17:56,420 suteikti jai šį renginį prižiūrėtojas, ir jis iš esmės nustato savo puslapį už jus. 1181 01:17:56,420 --> 01:18:00,520 Ir tai, kaip jūs norite galvoti apie renginio valdymą. 1182 01:18:00,520 --> 01:18:06,310 Jūs tiesiog norite galvoti apie, viskas gerai, kai kažkas atsitinka, ką aš noriu, kad taip atsitiktų? 1183 01:18:06,310 --> 01:18:10,520 Jūs nenorite galvoti apie, gerai, man reikia įsitikinti, kad tai, ką derybas su šio dalyko, 1184 01:18:10,520 --> 01:18:14,660 šis dalykas bla bla bla, nes jums tiesiog nori pasikalbėti dalykas, kalbant apie įvykius. 1185 01:18:14,660 --> 01:18:17,650 Kai tai atsitiks, tai atsitiks. Kai tai atsitiks, tai atsitiks. 1186 01:18:17,650 --> 01:18:20,240 Ir jei viskas sukelti kitų dalykų, tai puiku. 1187 01:18:20,240 --> 01:18:22,150 Bet jūs nenorite pabandyti ir padaryti sudėtingą kodą 1188 01:18:22,150 --> 01:18:24,130 kur jūs suaktyvina daug dalykų tuo pačiu metu, 1189 01:18:24,130 --> 01:18:28,860 nes esate tik ketina suteikti sau galvos. 1190 01:18:28,860 --> 01:18:32,340 >> Gerai. Dabar mes galime gauti mūsų puslapis tvarkyti įvykių, 1191 01:18:32,340 --> 01:18:35,640 bet tarkim mano vartotojas paspaudžia mygtuką. 1192 01:18:35,640 --> 01:18:38,040 Ką daryti, jei aš noriu, kad siųsti šį prašymą į serverį, 1193 01:18:38,040 --> 01:18:41,100 bet aš nenoriu, kad atnaujinti puslapį, nes nereikėtų perkrauti naują puslapį 1194 01:18:41,100 --> 01:18:44,390 kiekvieną kartą gauna natūra varginantis, ir kodėl aš turiu 1195 01:18:44,390 --> 01:18:47,430 vėl traukti žemyn galva, ir vėl apačia, 1196 01:18:47,430 --> 01:18:49,670 ir visi puslapio elementai vėl 1197 01:18:49,670 --> 01:18:53,180 tiesiog atnaujinti sveikinimą ar laiko? 1198 01:18:53,180 --> 01:18:55,290 Štai kodėl mes turime kažką panašaus į "Ajax". 1199 01:18:55,290 --> 01:18:59,150 Ką mes galime padaryti čia su "Ajax" yra, mes galime pasakyti, viskas gerai, 1200 01:18:59,150 --> 01:19:01,290 Noriu siųsti kai kuriuos duomenis į serverį, 1201 01:19:01,290 --> 01:19:04,010 ir aš noriu gauti atsakymą atgal, kad aš galiu atnaujinti savo puslapį, 1202 01:19:04,010 --> 01:19:12,120 arba gal tiesiog ką nors algoritmą apskaičiuoti, kad nebūtinai parodyti nieko vartotojui. 1203 01:19:12,120 --> 01:19:15,500 Ką reikia padaryti? Na, jums reikia URL jums reikia pasikalbėti. 1204 01:19:15,500 --> 01:19:18,650 Jūsų serveris negali tiesiog stebuklingai klausytis iš niekur. 1205 01:19:18,650 --> 01:19:21,960 Jūs turite turėti tam tikrą vietą, jūs siunčiate šiuos duomenis. 1206 01:19:21,960 --> 01:19:26,240 Ir jums taip pat reikia kai kuriuos duomenis siųsti, o gal tai dataless užklausą. 1207 01:19:26,240 --> 01:19:31,380 Jūs tiesiog norite ping į serverį ir sako, ei, aš gyvas, ar kažkas panašaus. 1208 01:19:31,380 --> 01:19:35,150 Ir tada jūs norite funkciją, kuri iš esmės tvarko sėkmės. 1209 01:19:35,150 --> 01:19:38,250 Tarkime, jūs grįžti šiek tiek informacijos iš jūsų serverio, 1210 01:19:38,250 --> 01:19:42,960 , ir jūs norite pakeisti vartotojo vardą į savo puslapį. 1211 01:19:42,960 --> 01:19:44,930 Taigi, jūs galėtumėte gauti informaciją atgal, 1212 01:19:44,930 --> 01:19:48,860 ir jūs stumti, kad į ekraną. 1213 01:19:48,860 --> 01:19:51,170 Kas atsitinka, kai puslapis yra pasirengusi, 1214 01:19:51,170 --> 01:19:56,500 kuriate ant click funkciją šio mygtuko vadinamas pasveikinimo. 1215 01:19:56,500 --> 01:19:58,810 Ką tai tada tikrai yra, kai tas mygtukas nuspaustas, 1216 01:19:58,810 --> 01:20:03,700 kalbate greetings.php, jūs padaryti POST prašymo 1217 01:20:03,700 --> 01:20:07,290 ir jūs sakote, ei, man gauti kažką iš savo puslapio. 1218 01:20:07,290 --> 01:20:09,890 Mes tikrai nereikia aprašyti, kad bet greetings.php, 1219 01:20:09,890 --> 01:20:12,480 tegul tiesiog pasakyti, suteikia atgal "Hello world". 1220 01:20:12,480 --> 01:20:15,650 Taigi, mes grįžti šį "Hello World" ir sėkmės tai, 1221 01:20:15,650 --> 01:20:20,730 darant prielaidą, kad niekas negerai, tada mes tiesiog eiti į šią tikslinę vietą 1222 01:20:20,730 --> 01:20:25,720 kad mes nurodytas ir mes tiesiog klijuoti atsakymą ten. 1223 01:20:25,720 --> 01:20:31,560 Ir tai yra labai paprastas būdas sukurti Ajax prašymą. 1224 01:20:31,560 --> 01:20:34,340 >> Labai greitai, Rob tarsi paminėtas šis jau 1225 01:20:34,340 --> 01:20:37,170 kas gali suklysti, blogi dalykai gali atsitikti, 1226 01:20:37,170 --> 01:20:42,660 todėl jūs norite susipažinti su šiais HTTP atsakymo kodus. 1227 01:20:42,660 --> 01:20:46,030 Kas tai yra tik, kaip, 200, viskas buvo gerai. 1228 01:20:46,030 --> 01:20:48,670 Kažkas, blogų dalykų nutiko. 1229 01:20:48,670 --> 01:20:50,790 Tai paprastai dalykas, kurį norite prisiminti. 1230 01:20:50,790 --> 01:20:53,440 Bet tai malonu žinoti visiems. 1231 01:20:53,440 --> 01:20:55,970 Ir galiausiai, kai mes išgyveno visa tai, 1232 01:20:55,970 --> 01:20:58,680 turime labai greitai kalbėti apie dizainą, 1233 01:20:58,680 --> 01:21:00,620 ir tada mes galime jums viską palikti. 1234 01:21:00,620 --> 01:21:03,410 Dizainas. Ką jūs norite prisiminti. 1235 01:21:03,410 --> 01:21:06,950 Užduoti sau šiuos klausimus: Kas bus naudojant šią? 1236 01:21:06,950 --> 01:21:09,580 Ką jie jį naudoti? Ką mano vartotojai rūpi? 1237 01:21:09,580 --> 01:21:11,750 Ką jie rūpi? 1238 01:21:11,750 --> 01:21:14,500 Jūs tiesiog nenorite, kad app ir tegul jis tik auga 1239 01:21:14,500 --> 01:21:18,270 ir tapo šis milžinas, nežabotas dalykas, kad jūs net negalite užbaigti. 1240 01:21:18,270 --> 01:21:23,900 Jūs norite turėti atskirus tikslus ir planus ir dalykų, kuriuos norite pašalinti. 1241 01:21:23,900 --> 01:21:29,000 Padaryti pastangų. Visa tai sako, iš esmės, 1242 01:21:29,000 --> 01:21:34,950 kad būtų lengva, kad vartotojas galėtų jį naudoti; negalima daryti milžinišką lašelis iš teksto, kaip šios skaidrės yra iš tikrųjų. 1243 01:21:34,950 --> 01:21:38,020 Jūs tiesiog norite būti kažkas, kur jis yra labai lengva ką nors eiti 1244 01:21:38,020 --> 01:21:40,800 ir daryti tai, ką jie nori daryti. 1245 01:21:40,800 --> 01:21:42,920 Jūs nenorite, kad jie turi plaukti 5 puslapiai 1246 01:21:42,920 --> 01:21:45,460 gauti į savo pagrindine funkcija jūsų svetainę. 1247 01:21:45,460 --> 01:21:49,290 Jei "Google" turėjo 5 puslapių prieš galite net ieškoti ką nors, 1248 01:21:49,290 --> 01:21:53,080 niekas juo naudotis. 1249 01:21:53,080 --> 01:21:55,890 Ir galiausiai, popieriaus prototipas, tikslinė grupė. 1250 01:21:55,890 --> 01:21:59,220 Ar geras dizainas ir bandymų praktiką. 1251 01:21:59,220 --> 01:22:00,730 Tiesiog todėl, kad jūs manote, kad jis dirba už jus, 1252 01:22:00,730 --> 01:22:04,860 nereiškia, niekam mano, kad tai veikia. 1253 01:22:04,860 --> 01:22:14,490 Bet taip, kad viskas. 1254 01:22:14,490 --> 01:22:17,490 [CS50.TV]