1 00:00:00,000 --> 00:00:12,610 2 00:00:12,610 --> 00:00:12,900 >> DAVID J. MALAN: Selvä. 3 00:00:12,900 --> 00:00:16,790 Joten tervetuloa ensimmäinen CS50 jälkipuinti varten tietokilpailu. 4 00:00:16,790 --> 00:00:18,340 Ajattelimme vihkiä Tämän perinteen tänä vuonna. 5 00:00:18,340 --> 00:00:20,960 Ja tämä on tilaisuus kulkea 6 00:00:20,960 --> 00:00:22,220 ratkaisuja tietokilpailuun. 7 00:00:22,220 --> 00:00:26,160 Ja me nopeuttaa tai hidastaa perustuu korko näistä täällä. 8 00:00:26,160 --> 00:00:29,730 >> Joten olet luultavasti täällä, koska olet kiinnostuneita siitä, miten olisit voinut tai 9 00:00:29,730 --> 00:00:31,170 olisi pitänyt vastata joidenkin näistä ongelmista. 10 00:00:31,170 --> 00:00:33,300 Joten miksi emme katsomaan tässä osassa ensin? 11 00:00:33,300 --> 00:00:34,450 Niin saa jouset. 12 00:00:34,450 --> 00:00:37,600 Tämä antoi sinulle kolme eri versiota ohjelma, joka oli lopulta 13 00:00:37,600 --> 00:00:39,650 tarkoitus saada merkkijono käyttäjä. 14 00:00:39,650 --> 00:00:42,530 Onko se teki sitä oli vasemmalle voit päättää. 15 00:00:42,530 --> 00:00:45,150 >> Ja pyysimme kysymyksessä 0, Oletetaan, että versio 1 on 16 00:00:45,150 --> 00:00:46,400 käännetty ja teloitettiin. 17 00:00:46,400 --> 00:00:48,860 Miksi voisi ohjelman Segfault? 18 00:00:48,860 --> 00:00:51,150 Ensi silmäyksellä, mitään ehdotuksia miksi? 19 00:00:51,150 --> 00:00:54,012 20 00:00:54,012 --> 00:00:54,489 Joo. 21 00:00:54,489 --> 00:00:59,260 >> Yleisö: Niin Muistan nähneeni tämän Edellisen esimerkin tarkastella 22 00:00:59,260 --> 00:01:05,506 char * s ja nähdä skannaus s ja nähdä, koska se on osoitin, miten 23 00:01:05,506 --> 00:01:07,971 ei se vaikuta siihen, mitä skannataan? 24 00:01:07,971 --> 00:01:10,940 Onko se s tai osoitteen s? 25 00:01:10,940 --> 00:01:11,180 >> DAVID J. MALAN: OK. 26 00:01:11,180 --> 00:01:11,480 Hyvä. 27 00:01:11,480 --> 00:01:14,830 Joten lopulta, lähde mitään ongelmaa on oletettavasti menossa vähentää 28 00:01:14,830 --> 00:01:16,210 kyseiseen muuttuja s. 29 00:01:16,210 --> 00:01:17,280 Ja se on todellakin muuttuja. 30 00:01:17,280 --> 00:01:19,900 Tietotyyppi, että muuttuja on char *, mikä tarkoittaa, että se tulee 31 00:01:19,900 --> 00:01:22,570 sisältää osoitteen luonne. 32 00:01:22,570 --> 00:01:23,850 Ja siinä piilee oivallus. 33 00:01:23,850 --> 00:01:28,330 Se tulee sisältämään osoite merkin tai yleisemmin 34 00:01:28,330 --> 00:01:32,110 osoitteen ensimmäisen merkin koko lohko merkkiä. 35 00:01:32,110 --> 00:01:36,680 >> Mutta saalis on, että scan s, tarkoitukseen elämä, annetaan osoite ja annetaan 36 00:01:36,680 --> 00:01:40,960 muotoilukoodi, kuten% s, lue string kimpale 37 00:01:40,960 --> 00:01:42,330 muisti kyseisessä osoitteessa. 38 00:01:42,330 --> 00:01:46,040 Mutta koska ei ole mitään yhtäläisyysmerkkiä ennen että puolipiste ensimmäisenä 39 00:01:46,040 --> 00:01:49,310 koodiriviä, koska emme oikeastaan ohjattava kaikki muisti 40 00:01:49,310 --> 00:01:53,020 malloc, koska se ei oikeastaan jakaa joukko joitakin koko, jotka kaikki 41 00:01:53,020 --> 00:01:57,620 teet lukee käyttäjän näppäimistöä johonkin täydellinen 42 00:01:57,620 --> 00:02:00,490 roskat arvo, joka on s oletuksena. 43 00:02:00,490 --> 00:02:04,480 Joten kertoimet ovat aiot Segfault jos että osoite ei vain niin tapahdu 44 00:02:04,480 --> 00:02:08,009 olla arvo, jonka voit, itse asiassa kirjoittaa. 45 00:02:08,009 --> 00:02:10,889 Niin paha olla jakamatta muistiasi siellä. 46 00:02:10,889 --> 00:02:13,150 >> Joten kysymyksessä 1, pyysimme, Oletetaan, että versio 2 on 47 00:02:13,150 --> 00:02:14,230 käännetty ja teloitettiin. 48 00:02:14,230 --> 00:02:15,900 Mistä tämä voisi ohjelman Segfault? 49 00:02:15,900 --> 00:02:17,990 Joten tämä on vähemmän buginen. 50 00:02:17,990 --> 00:02:21,470 Ja siellä oikeastaan ​​vain yksi ilmeinen tapa, jossa voit 51 00:02:21,470 --> 00:02:22,810 laukaista segfault täällä. 52 00:02:22,810 --> 00:02:23,730 Ja tämä on temaattinen. 53 00:02:23,730 --> 00:02:28,180 Aina käytämme c muistiin, mitä voisit tehdä aiheuttaa segfault 54 00:02:28,180 --> 00:02:30,718 2. version? 55 00:02:30,718 --> 00:02:35,560 >> Yleisö: Jos käytät että panostus merkkijono, joka on pidempi kuin 49 56 00:02:35,560 --> 00:02:35,975 merkkiä. 57 00:02:35,975 --> 00:02:37,260 >> DAVID J. MALAN: Aivan. 58 00:02:37,260 --> 00:02:41,420 Aina kun näet jotain kiinteä pituus kun se tulee array, sinun 59 00:02:41,420 --> 00:02:44,650 tutka pitäisi mennä pois, että tämä voisi olla ongelmallista, jos et ole tarkkailun 60 00:02:44,650 --> 00:02:45,810 rajat array. 61 00:02:45,810 --> 00:02:46,650 Ja se on ongelma. 62 00:02:46,650 --> 00:02:47,910 Olemme edelleen käytössä scanf. 63 00:02:47,910 --> 00:02:52,200 Olemme edelleen käytössä% s, mikä tarkoittaa, kokeile lukea merkkijonon käyttäjä. 64 00:02:52,200 --> 00:02:56,300 Se menee luettavaksi osaksi s, joka tässä vaiheessa, on tehokkaasti 65 00:02:56,300 --> 00:02:58,570 osoite kimpale muisti tai sen vastaavan. 66 00:02:58,570 --> 00:03:02,080 Se on nimi array merkkien muistia. 67 00:03:02,080 --> 00:03:07,610 >> Mutta juuri näin, jos olet lukenut merkkijono joka on pidempi kuin 49 merkkiä, 49 68 00:03:07,610 --> 00:03:10,440 koska tarvitset tilaa kenoviiva 0, olet menossa ylivuoto 69 00:03:10,440 --> 00:03:11,390 että puskuri. 70 00:03:11,390 --> 00:03:16,410 Ja saatat saada onnekas ja pystyä kirjoittaa 51st hahmo, 52., 53.. 71 00:03:16,410 --> 00:03:18,560 Mutta jossain vaiheessa, OS aikoo sanoa mitään. 72 00:03:18,560 --> 00:03:21,270 Tämä varmasti ei ole muistia olet saanut koskea. 73 00:03:21,270 --> 00:03:23,380 Ja ohjelma on menossa Segfault. 74 00:03:23,380 --> 00:03:26,650 >> Joten ei, heuristiikka pitäisi olla kun olet saanut kiinteää pituutta, sinulla on 75 00:03:26,650 --> 00:03:30,150 varmista, että olet tarkkailun pituus mitä se on, jota yrität 76 00:03:30,150 --> 00:03:31,090 lukea sitä. 77 00:03:31,090 --> 00:03:35,110 >> Yleisö: Niin ratkaista, että voisit on ollut selvitys tarkkailun todella 78 00:03:35,110 --> 00:03:37,140 on pituus suurempi tai pienempi kuin? 79 00:03:37,140 --> 00:03:37,730 >> DAVID J. MALAN: Ehdottomasti. 80 00:03:37,730 --> 00:03:41,706 Sinulla on vain kunnossa joka sanoo, jos - 81 00:03:41,706 --> 00:03:46,080 tai pikemminkin et välttämättä tiedä etukäteen, kuinka monta merkkiä 82 00:03:46,080 --> 00:03:49,060 käyttäjä on menossa kirjoittaa, koska sinulla on kana ja muna. 83 00:03:49,060 --> 00:03:51,860 Vasta olet lukenut sen kanssa scanf voit selvittää, miten kauan se on. 84 00:03:51,860 --> 00:03:54,500 Mutta siinä vaiheessa, se on liian myöhäistä, koska olet jo lukenut sen 85 00:03:54,500 --> 00:03:55,710 jonkin lohkon muistia. 86 00:03:55,710 --> 00:03:59,590 Niin syrjään, CS50 kirjasto välttelee tämän ongelman kokonaan, Recall 87 00:03:59,590 --> 00:04:01,060 käyttämällä fgetc. 88 00:04:01,060 --> 00:04:05,390 Ja se lukee yhden merkin kerrallaan, tip-toeing pitkin, tietäen, että olet 89 00:04:05,390 --> 00:04:08,060 ei voi ylivuoto merkki, jos luet yksi kerrallaan. 90 00:04:08,060 --> 00:04:11,580 >> Saalis on kanssa getString Recall on että meidän on jatkuvasti uudelleen koko 91 00:04:11,580 --> 00:04:13,590 että kimpale muistia, joka on vain kipua. 92 00:04:13,590 --> 00:04:15,310 Se on paljon riviä koodin tehdä. 93 00:04:15,310 --> 00:04:18,779 Joten toinen vaihtoehto olisi todella käyttää serkku, joten 94 00:04:18,779 --> 00:04:19,790 sanotusti scanf. 95 00:04:19,790 --> 00:04:22,820 On olemassa muunnelmia paljon näitä toimintoja, jotka itse tarkistaa 96 00:04:22,820 --> 00:04:25,870 pituus, kuinka monta merkkiä saatat lukea maksimaalisesti. 97 00:04:25,870 --> 00:04:29,430 Ja voit määrittää, älä lue yli 50 merkkiä. 98 00:04:29,430 --> 00:04:34,110 Jotta olisi toinen lähestymistapa, mutta vähemmän otollinen suurempia panoksia. 99 00:04:34,110 --> 00:04:37,040 >> Joten kysymys 2 kysyy, olettaa, että versio 3 on käännetty ja teloitettiin. 100 00:04:37,040 --> 00:04:39,960 Miksi se mahtaa ohjelma Segfault? 101 00:04:39,960 --> 00:04:42,650 Joten tämä on itse asiassa sama vastata, vaikka se 102 00:04:42,650 --> 00:04:43,590 näyttää hieman harrastaja. 103 00:04:43,590 --> 00:04:46,440 Käytämme malloc, joka tuntuu annamme itsellemme enemmän vaihtoehtoja. 104 00:04:46,440 --> 00:04:48,030 Ja sitten me vapauttaa että muisti lopussa. 105 00:04:48,030 --> 00:04:49,580 Se on edelleen vain 50 tavua muistia. 106 00:04:49,580 --> 00:04:53,620 Joten saatamme silti yrittää lukea 51, 52, 1000 tavua. 107 00:04:53,620 --> 00:04:55,830 Se tulee Segfault varten täsmälleen samasta syystä. 108 00:04:55,830 --> 00:04:57,530 >> Mutta on toinenkin syy liian. 109 00:04:57,530 --> 00:05:03,890 Mitä muuta voisi malloc paluun lisäksi osoitteen kimpale muisti? 110 00:05:03,890 --> 00:05:04,920 Se voisi palata null. 111 00:05:04,920 --> 00:05:07,560 Ja koska emme tarkistamalla että voisimme tehdä jotain 112 00:05:07,560 --> 00:05:11,350 tyhmä muusta syystä, joka on se, että saatamme olla kertomatta scanf, lue 113 00:05:11,350 --> 00:05:16,050 käyttäjän näppäinsyötteisin osaksi 0 sijainti, AKA null. 114 00:05:16,050 --> 00:05:18,890 Ja sekin varmasti laukaista segfault. 115 00:05:18,890 --> 00:05:21,590 Joten tietokilpailu tarkoitus, olisimme ovat hyväksyneet kumpaakaan näistä kuin 116 00:05:21,590 --> 00:05:22,740 pätevää syytä. 117 00:05:22,740 --> 00:05:23,420 Yksi on sama. 118 00:05:23,420 --> 00:05:25,720 Yksi on hieman vivahteikas. 119 00:05:25,720 --> 00:05:28,975 >> Lopuksi suhteessa ohjelman muistin käyttö, miten versio 2 ja 120 00:05:28,975 --> 00:05:30,350 versio 3 eroavat toisistaan? 121 00:05:30,350 --> 00:05:35,070 Joten mitä se kannattaa, näimme loputtomalta tarjonta mahdollista 122 00:05:35,070 --> 00:05:35,770 vastauksia tähän. 123 00:05:35,770 --> 00:05:39,300 Ja joukossa ihmisten vastauksia, mitä olimme toivoen, mutta me hyväksyimme muut 124 00:05:39,300 --> 00:05:42,250 asioita, oli noin maininta Se, että versio 2 käyttää 125 00:05:42,250 --> 00:05:44,560 ns pino. 126 00:05:44,560 --> 00:05:46,710 Versio 3 käyttää kasaan. 127 00:05:46,710 --> 00:05:50,060 Ja toiminnallisesti, tämä ei oikeastaan tehdä kaikki, että paljon eroa. 128 00:05:50,060 --> 00:05:54,040 Lopussa päivän, olemme yhä juuri 50 tavua muistia. 129 00:05:54,040 --> 00:05:56,640 >> Mutta se oli yksi mahdollisista vastauksista että me tarkastelemme. 130 00:05:56,640 --> 00:05:59,730 Mutta näet, kun saat tietokilpailuja takaisin TF: ille, että teimme 131 00:05:59,730 --> 00:06:04,330 hyväksyä muita keskusteluja niiden erilaisia ​​käyttötapoja muistia samoin. 132 00:06:04,330 --> 00:06:08,600 Mutta pino ja keko olisi ollut helppo vastaus mennä. 133 00:06:08,600 --> 00:06:11,150 Kaikki kysymykset? 134 00:06:11,150 --> 00:06:12,400 Annan sinulle Rob. 135 00:06:12,400 --> 00:06:18,360 136 00:06:18,360 --> 00:06:20,210 >> ROB BOWDEN: Eli ongelma 4. 137 00:06:20,210 --> 00:06:21,985 Tämä on yksi, jossa piti täyttää on tavujen pois kaikki 138 00:06:21,985 --> 00:06:23,460 nämä erilaiset käyttää. 139 00:06:23,460 --> 00:06:24,830 Joten ensimmäinen asia näemme. 140 00:06:24,830 --> 00:06:27,930 Oletetaan 32-bittinen arkkitehtuuri, näin CS50 laitetta. 141 00:06:27,930 --> 00:06:33,530 Joten yksi perustavista asioita 32-bittisessä arkkitehtuurissa, joka kertoo meille, 142 00:06:33,530 --> 00:06:37,490 kuinka suuri osoitin on menossa olevan arkkitehtuurin. 143 00:06:37,490 --> 00:06:43,020 >> Joten heti, me tiedämme, että osoitin tyyppi on 32-bittiä tai 4 tavua. 144 00:06:43,020 --> 00:06:46,010 Niin etsivät tässä pöydässä, solmu * on osoitin tyyppiä. 145 00:06:46,010 --> 00:06:47,250 Se tulee olemaan 4 tavua. 146 00:06:47,250 --> 00:06:51,640 Struct solmu *, joka on kirjaimellisesti identtinen solmuun tähden. 147 00:06:51,640 --> 00:06:53,590 Ja niin, että tulee olemaan 4 tavua. 148 00:06:53,590 --> 00:06:58,270 String, joten se ei näytä osoitin vielä, mutta typedef, 149 00:06:58,270 --> 00:07:01,590 merkkijono on vain char *, joka on osoitin tyyppiä. 150 00:07:01,590 --> 00:07:03,550 Niin, että tulee olemaan 4 tavua. 151 00:07:03,550 --> 00:07:06,150 >> Joten nämä kolme ovat kaikki 4 tavua. 152 00:07:06,150 --> 00:07:09,350 Nyt, solmu ja opiskelija ovat hieman monimutkaisempi. 153 00:07:09,350 --> 00:07:15,160 Joten etsit solmu ja opiskelija, näemme solmu kokonaisluku ja osoitin. 154 00:07:15,160 --> 00:07:18,050 Ja opiskelija on kaksi osoitinta sen sisälle. 155 00:07:18,050 --> 00:07:23,340 Joten ainakin meidän tapauksessa täällä, tapa että päädymme koon laskemista 156 00:07:23,340 --> 00:07:27,020 tämä struct on vain täsmää kaiken se sisällä struct. 157 00:07:27,020 --> 00:07:30,690 >> Joten solmulle, meillä on kokonaisluku, , joka on 4 tavua. 158 00:07:30,690 --> 00:07:32,830 Meillä on osoitin, joka on 4 tavua. 159 00:07:32,830 --> 00:07:35,820 Ja niin yksi solmu on menossa ryhtyä 8 tavua. 160 00:07:35,820 --> 00:07:39,490 Ja vastaavasti opiskelija, meillä on osoitin, joka on 4 tavua ja toinen 161 00:07:39,490 --> 00:07:40,770 osoitin, joka on 4 tavua. 162 00:07:40,770 --> 00:07:43,180 Niin että menee loppuun asti on 8 tavua. 163 00:07:43,180 --> 00:07:45,480 Niin solmu ja opiskelija ovat 8 tavua. 164 00:07:45,480 --> 00:07:48,950 Ja nämä kolme ovat kaikki 4 tavua. 165 00:07:48,950 --> 00:07:50,240 Kysymyksiä siitä? 166 00:07:50,240 --> 00:07:54,640 167 00:07:54,640 --> 00:07:54,990 Kyllä. 168 00:07:54,990 --> 00:07:58,413 >> Yleisö: Onko se oli 64-bittinen arkkitehtuuri, jospa 169 00:07:58,413 --> 00:07:59,880 kaksinkertaistaa ne kaikki? 170 00:07:59,880 --> 00:08:01,790 >> ROB BOWDEN: Se ei olisi kaksinkertaistaa ne kaikki. 171 00:08:01,790 --> 00:08:05,830 Joten 64-bittinen arkkitehtuuri, se taas muutoksia, että perusoikeuksia asia, että 172 00:08:05,830 --> 00:08:08,910 Osoitin on nyt 64 bittiä. 173 00:08:08,910 --> 00:08:09,290 Joo. 174 00:08:09,290 --> 00:08:10,930 Joten osoitin on 8 tavua. 175 00:08:10,930 --> 00:08:15,420 Joten nämä, jotka olivat 4 tavua tulevat olemaan 8 tavua. 176 00:08:15,420 --> 00:08:18,617 Opiskelija, joka oli kaksi osoitinta, No, nyt se tulee 177 00:08:18,617 --> 00:08:19,800 olla 8 tavua, 8 tavua. 178 00:08:19,800 --> 00:08:21,980 Se tulee tehdä 16 tavua. 179 00:08:21,980 --> 00:08:25,710 >> Mutta solmu on edelleen 4 tavua. 180 00:08:25,710 --> 00:08:27,800 Joten tämä osoitin on menossa olla 8 tavua. 181 00:08:27,800 --> 00:08:28,930 Tämä on 4 tavua. 182 00:08:28,930 --> 00:08:30,870 Niin solmu on vain menee olla 12 tavua. 183 00:08:30,870 --> 00:08:36,309 184 00:08:36,309 --> 00:08:39,280 Muita kysymyksiä, että yksi? 185 00:08:39,280 --> 00:08:44,500 Joten seuraava, nämä ovat HTTP-tilakoodien. 186 00:08:44,500 --> 00:08:48,000 Ja sinun pitäisi kuvailla olosuhteita joiden mukaisesti nämä voimin 187 00:08:48,000 --> 00:08:49,810 palautetaan sinulle. 188 00:08:49,810 --> 00:08:56,730 yksi ongelma, että kuulin jotkut opiskelijat on se, että he yrittivät tehdä 189 00:08:56,730 --> 00:08:58,950 virheitä olla asiakkaan loppuun. 190 00:08:58,950 --> 00:09:02,320 Joten kun yritämme tehdä pyynnön palvelimeen, jokin menee 191 00:09:02,320 --> 00:09:03,820 väärin meidän loppua. 192 00:09:03,820 --> 00:09:07,660 Mutta yleensä nämä koodit ovat palautetaan palvelimen. 193 00:09:07,660 --> 00:09:11,720 Joten haluamme selvittää, mitä tapahtuu oikeassa tai väärässä palvelimeen, 194 00:09:11,720 --> 00:09:14,280 aiheuttaa nämä asiat palautetaan. 195 00:09:14,280 --> 00:09:18,670 Joten miksi pitää palvelin palauttaa tilakoodi 200? 196 00:09:18,670 --> 00:09:19,920 Mitään ajatuksia? 197 00:09:19,920 --> 00:09:23,360 198 00:09:23,360 --> 00:09:23,730 >> Joo. 199 00:09:23,730 --> 00:09:27,850 Joten jotain onnistuneesti pyyntö meni läpi. 200 00:09:27,850 --> 00:09:30,260 Ja he voivat palata mitä pyysit. 201 00:09:30,260 --> 00:09:32,240 Joten kaikki oli kunnossa. 202 00:09:32,240 --> 00:09:35,662 Entä 302 löytyi? 203 00:09:35,662 --> 00:09:36,618 Joo. 204 00:09:36,618 --> 00:09:39,008 >> Yleisö: palvelin oli etsimässä mitä pyysit. 205 00:09:39,008 --> 00:09:40,442 Mutta se ei löytänyt sitä. 206 00:09:40,442 --> 00:09:42,850 Joten ei ole virhe. 207 00:09:42,850 --> 00:09:47,720 >> ROB BOWDEN: Eli palvelin oli etsivät mitä halusi. 208 00:09:47,720 --> 00:09:51,682 Joten katson tässä, 302 löytyy, se oli löytänyt sitä. 209 00:09:51,682 --> 00:09:53,035 >> Yleisö: Olen pahoillani. 210 00:09:53,035 --> 00:09:54,388 Löytyi tarkoittaa, että he löysivät sen. 211 00:09:54,388 --> 00:09:55,638 Anteeksi. 212 00:09:55,638 --> 00:09:58,120 213 00:09:58,120 --> 00:10:00,160 >> ROB BOWDEN: So 302 löytynyt. 214 00:10:00,160 --> 00:10:02,350 Palvelin pystyy löytämään mitä halusit. 215 00:10:02,350 --> 00:10:04,640 >> Yleisö: Mutta se ei ole se näytetään? 216 00:10:04,640 --> 00:10:08,180 >> ROB BOWDEN: ero Tämän 302 ja 200 on se, että 217 00:10:08,180 --> 00:10:09,280 tietää, mitä haluat. 218 00:10:09,280 --> 00:10:12,000 Mutta se ei ole tarkalleen missä halusit kysyä. 219 00:10:12,000 --> 00:10:14,580 Joten 302 on tyypillinen uudelleenohjaus. 220 00:10:14,580 --> 00:10:16,510 Joten pyysit sivun. 221 00:10:16,510 --> 00:10:19,590 Se tietää, oh, haluan palata sinulle tämän. 222 00:10:19,590 --> 00:10:21,070 Mutta tämä on eri URL. 223 00:10:21,070 --> 00:10:23,534 Joten hei, te todella haluavat tätä. 224 00:10:23,534 --> 00:10:26,950 >> DAVID J. MALAN: Se on pala, joka sanoi että annoimme teille uudelleenohjaus 225 00:10:26,950 --> 00:10:30,830 toiminto, joka käyttää header-toiminto että puolestaan ​​tulostaa sijainti, 226 00:10:30,830 --> 00:10:34,110 paksusuoli, ja sitten URL-osoitteen, joka haluat hylätä käyttäjälle. 227 00:10:34,110 --> 00:10:37,480 Vaikka et näe 302 nimenomaisesti siellä, sitähän PHP 228 00:10:37,480 --> 00:10:41,550 piti taianomaisesti aseta otsikkomääränpääosoitteena selvää, mitä Rob sanoi, että - 229 00:10:41,550 --> 00:10:41,930 löytyi. 230 00:10:41,930 --> 00:10:43,180 Mutta täältä sijaan. 231 00:10:43,180 --> 00:10:45,960 232 00:10:45,960 --> 00:10:46,160 >> ROB BOWDEN: OK. 233 00:10:46,160 --> 00:10:47,630 Entä 403 kiellettyä? 234 00:10:47,630 --> 00:10:52,240 235 00:10:52,240 --> 00:10:57,120 >> Yleisö: Minusta se on, että palvelin on pohjimmiltaan sanomalla, että asiakkaan 236 00:10:57,120 --> 00:10:59,970 ei voi käyttää etusivulle. 237 00:10:59,970 --> 00:11:03,260 >> ROB BOWDEN: Joten kyllä. 238 00:11:03,260 --> 00:11:07,670 No, tyypillinen vastaus olimme Odotetaan on jotain, tiedostot 239 00:11:07,670 --> 00:11:08,920 ei chmodded asianmukaisesti. 240 00:11:08,920 --> 00:11:11,590 Se on luultavasti missä olosuhteissa näit ne. 241 00:11:11,590 --> 00:11:18,920 Mutta on syy, että asiakas voisi olla syyllinen täällä. 242 00:11:18,920 --> 00:11:20,440 Siellä on todella toinen tila koodi - 243 00:11:20,440 --> 00:11:21,210 401. 244 00:11:21,210 --> 00:11:22,820 Joten nämä ovat hyvin samankaltaisia. 245 00:11:22,820 --> 00:11:24,590 >> 401 on luvaton. 246 00:11:24,590 --> 00:11:26,130 Ja 403 on kielletty. 247 00:11:26,130 --> 00:11:31,890 Ja niin luvattoman sinua yksinomaan saada, jos et ole kirjautunut sisään 248 00:11:31,890 --> 00:11:34,520 Mutta kirjautumalla saattaa tarkoittaa että sinulla on oikeus. 249 00:11:34,520 --> 00:11:37,930 Mutta jos olet jo kirjautunut sisään ja vieläkään ei ole lupaa, niin 250 00:11:37,930 --> 00:11:40,140 voit myös saada kielletty. 251 00:11:40,140 --> 00:11:45,320 Joten jos olet kirjautunut sisään ja ei ole lupaa, kielletty myös 252 00:11:45,320 --> 00:11:47,164 jotain voit saada. 253 00:11:47,164 --> 00:11:48,900 >> DAVID J. MALAN: Ja mekanismi nämä ongelmat ovat yleensä 254 00:11:48,900 --> 00:11:53,100 ratkaistaan ​​palvelin on millaisin komento? 255 00:11:53,100 --> 00:11:57,700 Chmod, jos se on todellakin käyttöoikeudet antavat tiedoston tai hakemiston. 256 00:11:57,700 --> 00:11:59,220 >> ROB BOWDEN: Sitten 404 ei löytynyt. 257 00:11:59,220 --> 00:12:03,100 258 00:12:03,100 --> 00:12:03,470 Joo. 259 00:12:03,470 --> 00:12:10,150 Joten toisin kuin 302, jos se ei ollut täsmälleen jos kysyt, mutta se tietää, mitä 260 00:12:10,150 --> 00:12:12,710 haluat, tämä, se vain on ei ole aavistustakaan, mitä haluat. 261 00:12:12,710 --> 00:12:15,648 Ja et ole vaatinut jotain voimassa. 262 00:12:15,648 --> 00:12:18,580 263 00:12:18,580 --> 00:12:22,310 418 Olen teekannu ja sitten 500 internal server. 264 00:12:22,310 --> 00:12:24,870 Joten miksi saattaa sait sen? 265 00:12:24,870 --> 00:12:26,120 >> Joten Segfault - 266 00:12:26,120 --> 00:12:28,760 267 00:12:28,760 --> 00:12:30,640 En oikeastaan ​​tiedä luokittelu standardi tätä. 268 00:12:30,640 --> 00:12:34,850 Mutta jos PHP-koodin oli jotain väärässä siinä, teoriassa se voisi 269 00:12:34,850 --> 00:12:39,650 itse asiassa Segfault, jolloin tämä 500 internal server error, jotain 270 00:12:39,650 --> 00:12:41,400 vikaa palvelimen kokoonpano. 271 00:12:41,400 --> 00:12:44,320 Tai siellä syntaksivirheen oman PHP-koodin. 272 00:12:44,320 --> 00:12:46,095 Tai jotain pahaa tapahtuu. 273 00:12:46,095 --> 00:12:48,320 >> DAVID J. MALAN: Emme katso segfault keskuudessa harvat vastauksia. 274 00:12:48,320 --> 00:12:49,490 Ja teknisesti, se voisi tapahtua. 275 00:12:49,490 --> 00:12:53,820 Mutta se olisi PHP, ohjelma kirjoittanut muita ihmisiä, oikeastaan 276 00:12:53,820 --> 00:12:57,790 segfaulted, joista vain jos ne ihmiset mokasi ja kirjoitti buginen koodi 277 00:12:57,790 --> 00:13:00,680 niiden tulkki olisi PHP itse Segfault. 278 00:13:00,680 --> 00:13:06,460 Joten vaikka 500 on kuin segfault hengessä, se on lähes aina 279 00:13:06,460 --> 00:13:10,490 tulos asetustiedosto kysymys Web-palvelimen tai, kuten Rob sanoi, 280 00:13:10,490 --> 00:13:13,200 syntaksivirhe, kuten sinäkin ei sulje lainaus. 281 00:13:13,200 --> 00:13:16,180 Tai olet menettänyt puolipiste jonnekin. 282 00:13:16,180 --> 00:13:23,677 >> Yleisö: Joten Shuttle PSET, I ajattelevat, kun tein sen kerran klikkasin 283 00:13:23,677 --> 00:13:26,300 selain, mutta mitään ei tullut ylös, mitä he kutsuivat valkoinen sivu. 284 00:13:26,300 --> 00:13:28,056 Mutta se johtui koodin. 285 00:13:28,056 --> 00:13:29,440 Mielestäni oli JavaScript, eikö? 286 00:13:29,440 --> 00:13:29,770 >> ROB BOWDEN: Joo. 287 00:13:29,770 --> 00:13:31,180 >> Yleisö: Jospa virhe vielä keksiä? 288 00:13:31,180 --> 00:13:34,290 >> ROB BOWDEN: Joten sinulla ei olisi saanut tämän virheen, koska kaikki 289 00:13:34,290 --> 00:13:36,930 web-palvelimen näkökulmasta oli täysin kunnossa. 290 00:13:36,930 --> 00:13:39,090 Mutta pyysit index.html. 291 00:13:39,090 --> 00:13:42,000 Pyysit shuttle.js ja service.js. 292 00:13:42,000 --> 00:13:44,580 Ja se kykeni palaamaan teille kaikki nuo asiat - 293 00:13:44,580 --> 00:13:44,980 200. 294 00:13:44,980 --> 00:13:45,680 OK. 295 00:13:45,680 --> 00:13:49,330 Vasta kun selaimen yritti tulkitsevat JavaScript-koodia, joka 296 00:13:49,330 --> 00:13:51,370 Se on kuin, odota, tämä ei ole voimassa JavaScript virhe. 297 00:13:51,370 --> 00:13:55,720 298 00:13:55,720 --> 00:13:58,210 Muuta kysyttävää? 299 00:13:58,210 --> 00:14:00,750 Selvä. 300 00:14:00,750 --> 00:14:04,120 >> DAVID J. MALAN: Joten seuraavan up oli numero 11. 301 00:14:04,120 --> 00:14:07,610 Ja 11 oli pelottavin ja paljon ihmisiä. 302 00:14:07,610 --> 00:14:14,620 303 00:14:14,620 --> 00:14:18,570 Joten tärkein asia huomata tässä oli, että tämä oli todellakin noin 304 00:14:18,570 --> 00:14:19,840 kaksinkertaisesti linkitetty lista. 305 00:14:19,840 --> 00:14:23,160 Mutta tämä ei ollut sama kuin viime vuonna kaksin verroin linkitetty lista ongelma, 306 00:14:23,160 --> 00:14:27,170 joka ei anna sinulle varoitus, että Listaa voisi itse asiassa olla lajittelemattoman. 307 00:14:27,170 --> 00:14:29,640 >> Niin, että luettelo on lajittelematonta ja se, että kyseinen sana oli 308 00:14:29,640 --> 00:14:32,930 alleviivattu siellä on tarkoitus välittää että tämä on todella yksinkertaistaminen 309 00:14:32,930 --> 00:14:35,430 mitä muuten olisi ollut enemmän haastava ongelma 310 00:14:35,430 --> 00:14:36,600 ja pidempi. 311 00:14:36,600 --> 00:14:40,760 Niin yleinen virhe täällä oli ryhtyneen viime vuoden ratkaisu ONE 312 00:14:40,760 --> 00:14:45,580 hakulaite ja sitten vain sokeasti kopioida, että alas kuin vastaus, mikä on oikea 313 00:14:45,580 --> 00:14:48,520 vastaus eri kysymykseen hengeltään samanlainen. 314 00:14:48,520 --> 00:14:51,340 Mutta vivahteet täällä olivat seuraavat. 315 00:14:51,340 --> 00:14:55,200 >> Joten, olemme solmun ilmoitettu ja määritellään tavalliseen tapaan tässä. 316 00:14:55,200 --> 00:14:59,230 Sitten määritellään luettelo olla maailmanlaajuinen osoitin alustetaan nollaksi. 317 00:14:59,230 --> 00:15:02,150 Niin ilmeisesti siellä on kaksi tehtävää meillä on prototyyppejä täällä, insert 318 00:15:02,150 --> 00:15:03,240 ja poista. 319 00:15:03,240 --> 00:15:06,600 Ja sitten meillä on joitakin näyte koodi tähän tehdä joukko lisäyksiä. 320 00:15:06,600 --> 00:15:09,930 Ja sitten pyydämme sinua täyttämään täytäntöönpanoa insert alla tällaisissa 321 00:15:09,930 --> 00:15:14,380 siten, että se lisää n listaan jatkuvassa aikaan myös korosti, 322 00:15:14,380 --> 00:15:15,730 vaikka jo läsnä. 323 00:15:15,730 --> 00:15:20,600 >> Joten kauneus pysty lisäämään jatkuvassa aika on, että se merkitsee 324 00:15:20,600 --> 00:15:23,060 että sinun täytyy lisätä uusi solmu missä? 325 00:15:23,060 --> 00:15:23,690 Etuosaan. 326 00:15:23,690 --> 00:15:27,760 Niin se poistaa, onneksi, ainakin yksi niistä tapauksista, joihin ennen tarvittiin 327 00:15:27,760 --> 00:15:30,520 vieläkin riviä koodia, kuten se teki viime vuonna ja jopa luokassa, kun me 328 00:15:30,520 --> 00:15:34,040 puhui läpi tällainen asia ihmisiin ja joidenkin 329 00:15:34,040 --> 00:15:35,250 sanallinen pseudo koodia. 330 00:15:35,250 --> 00:15:39,190 Joten ratkaisu täällä, hypätään yli tähän vain on näköyhteys 331 00:15:39,190 --> 00:15:40,480 näytön. 332 00:15:40,480 --> 00:15:42,230 >> Huomaa, että teemme seuraavan. 333 00:15:42,230 --> 00:15:45,140 Ja myös huomata muuta yksinkertaistamista oli se, että vaikka se on 334 00:15:45,140 --> 00:15:48,280 jo läsnä, joten tämä tarkoittaa, vaikka numero on jo olemassa, voit 335 00:15:48,280 --> 00:15:50,280 vain sokeasti lisää toinen kopio. 336 00:15:50,280 --> 00:15:52,560 Ja sekin oli tarkoitus olla yksinkertaistamista, jotta voisitte 337 00:15:52,560 --> 00:15:54,940 keskittyä, todella, jotkut enemmän älyllisesti mielenkiintoinen osa ja 338 00:15:54,940 --> 00:15:58,090 ei vain joitakin ylimääräisiä virheentarkistusmenetelmiä annetaan rajoitetun ajan. 339 00:15:58,090 --> 00:16:02,880 >> Joten tässä näyteliuoksessa, myönnämme osoitin vasen 340 00:16:02,880 --> 00:16:04,510 sivulle tästä solmuun. 341 00:16:04,510 --> 00:16:07,190 Nyt ymmärtää, että osoitin, koska Rob sanoi, on vain 32 bittiä. 342 00:16:07,190 --> 00:16:09,060 Ja se ei varsinaisesti sisällä osoitetta, kunnes 343 00:16:09,060 --> 00:16:09,970 määrittää sen osoite. 344 00:16:09,970 --> 00:16:13,220 Ja teemme sen oikealla kädellä puoli kautta malloc. 345 00:16:13,220 --> 00:16:16,550 Kuten hyvä kansalainen, tarkistamme, että malloc ei ole itse asiassa nolla, niin että 346 00:16:16,550 --> 00:16:18,690 emme vahingossa luo segfault täällä. 347 00:16:18,690 --> 00:16:22,840 Ja milloin käytät malloc elämässä, sinun pitäisi olla tarkistamatta null, ettei 348 00:16:22,840 --> 00:16:24,090 sinulla on hienovarainen bugi. 349 00:16:24,090 --> 00:16:28,460 >> Sitten alustaa että null by määrittämällä n ja edellinen ja seuraava. 350 00:16:28,460 --> 00:16:32,450 Ja tässä tapauksessa täällä, olen alustettu ennen null, koska tämä uusi 351 00:16:32,450 --> 00:16:34,780 solmu tulee olemaan uuden alussa listallani. 352 00:16:34,780 --> 00:16:37,050 Joten siellä tulee olemaan mitään ennen sitä. 353 00:16:37,050 --> 00:16:42,010 Ja haluan olennaisesti liittää luodun luettelon uuteen solmuun 354 00:16:42,010 --> 00:16:44,700 asettamalla vieressä yhtä luetteloa. 355 00:16:44,700 --> 00:16:47,120 Mutta en ole tehnyt vielä. 356 00:16:47,120 --> 00:16:51,780 Joten jos luettelo itse jo olemassa, ja siellä oli ainakin yhden solmun 357 00:16:51,780 --> 00:16:57,070 jo olemassa, jos tämä on luettelo täällä ja asetan uuden solmun täällä, en 358 00:16:57,070 --> 00:17:01,840 täytyy varmistaa, että minun entinen solmu huomauttaa taaksepäin minun uusi solmu, 359 00:17:01,840 --> 00:17:04,260 koska tämä on jälleen kaksinkertaisesti linkitetty lista. 360 00:17:04,260 --> 00:17:05,460 >> Joten emme järki tarkistaa. 361 00:17:05,460 --> 00:17:10,109 Jos lista ei ole nolla, jos on jo yhden tai useamman solmun siellä, niin 362 00:17:10,109 --> 00:17:12,470 lisätä, että sivuväli niin sanotusti. 363 00:17:12,470 --> 00:17:15,420 Ja sitten aivan viimeinen asia, jota tarvitsemme vain todella päivittää maailmanlaajuisen 364 00:17:15,420 --> 00:17:20,329 muuttujalista itse osoittamaan sen, että uusi solmu. 365 00:17:20,329 --> 00:17:21,790 Joo. 366 00:17:21,790 --> 00:17:26,579 >> Yleisö: Kun osoitin nuoli [Äänetön] on yhtä suuri kuin nolla, tekee sen 367 00:17:26,579 --> 00:17:30,420 käsitellä luettelosta, koska lista on nolla? 368 00:17:30,420 --> 00:17:30,596 >> DAVID J. MALAN: Ehei. 369 00:17:30,596 --> 00:17:34,500 Se on yksinkertaisesti minulle on ennakoivasti Varo, että jos tämä on minun 370 00:17:34,500 --> 00:17:38,730 alkuperäinen lista ehkä hieman enemmän solmuja tänne ja olen lisäämällä minun 371 00:17:38,730 --> 00:17:42,380 uusi solmu tänne, siellä tulee olevan mitään tänne. 372 00:17:42,380 --> 00:17:44,720 Ja haluan kaapata ajatus asettamalla ennen 373 00:17:44,720 --> 00:17:47,740 null uusi solmu. 374 00:17:47,740 --> 00:17:51,410 Ja oletettavasti, jos koodi on oikea ja ei ole muuta keinoa lisätä 375 00:17:51,410 --> 00:17:54,970 solmut muuta kuin tätä toimintoa, oletettavasti, vaikka lista on jo 376 00:17:54,970 --> 00:18:00,090 yhden tai useamman solmun se, oletettavasti lista, ensimmäinen solmu, olisi 377 00:18:00,090 --> 00:18:02,750 edellinen osoitin null itse. 378 00:18:02,750 --> 00:18:03,550 >> Yleisö: Ja juuri seurannan. 379 00:18:03,550 --> 00:18:08,139 Syynä laitat osoittimen vieressä tasavertaisina Lista on teet osoitin 380 00:18:08,139 --> 00:18:13,579 ennen alalta, että se on suunnattu seuraavaan, luulisin - 381 00:18:13,579 --> 00:18:14,980 I älkää - 382 00:18:14,980 --> 00:18:15,450 vain luetellaan? 383 00:18:15,450 --> 00:18:16,400 >> DAVID J. MALAN: Aivan. 384 00:18:16,400 --> 00:18:19,400 Ja niin katsotaanpa todella tarkastelemme tilannetta, täällä todella, vaikka 385 00:18:19,400 --> 00:18:22,070 Jotta me pitävät heitä ei ole aivan sama kuin koodi. 386 00:18:22,070 --> 00:18:26,250 Mutta korkealla tasolla, jos se on luetella ja tämä on 32-bittinen 387 00:18:26,250 --> 00:18:29,560 osoitin, yksinkertaisin tilanteessa on että tämä on null oletuksena. 388 00:18:29,560 --> 00:18:33,010 Ja kai haluan lisätä numero 50 oli ensimmäinen numero. 389 00:18:33,010 --> 00:18:37,640 Joten aion mennä eteenpäin ja jakaa solmu, joka tulee sisältämään 390 00:18:37,640 --> 00:18:38,770 kolme kenttää - 391 00:18:38,770 --> 00:18:42,070 n, edellinen ja seuraava. 392 00:18:42,070 --> 00:18:44,580 >> Aion laittaa numero 50 täällä, koska tämä on n. 393 00:18:44,580 --> 00:18:46,130 Tämä on ensi. 394 00:18:46,130 --> 00:18:48,530 Ja tämä on edellinen. 395 00:18:48,530 --> 00:18:50,910 Ja niin mitä voin tehdä tässä tapauksessa? 396 00:18:50,910 --> 00:18:53,900 No, olen juuri tehnyt linja 1 täällä. 397 00:18:53,900 --> 00:18:55,400 Pointer n saa n. 398 00:18:55,400 --> 00:18:57,740 En sitten sanomalla, edellinen pitäisi saada null. 399 00:18:57,740 --> 00:18:59,470 Joten tämä tulee olemaan nolla. 400 00:18:59,470 --> 00:19:01,365 Sitten aion sanoa seuraavaksi on menossa luetteloon. 401 00:19:01,365 --> 00:19:05,150 >> Ja tämä vain toimii hyvin. 402 00:19:05,150 --> 00:19:06,500 Tämä on null. 403 00:19:06,500 --> 00:19:10,620 Ja niin minä sanon, uusi solmu seuraava kentän pitäisi saada mitä tämä on. 404 00:19:10,620 --> 00:19:12,570 Niin, että tuo toinen null siellä. 405 00:19:12,570 --> 00:19:14,510 Ja sitten viimeinen asia En on tarkistaa täältä. 406 00:19:14,510 --> 00:19:17,870 Jos luettelo ei ole yhtä suuri kuin nolla, mutta se on yhtä kuin nolla, joten jätä että 407 00:19:17,870 --> 00:19:18,470 kokonaan. 408 00:19:18,470 --> 00:19:23,520 Ja niin kaikki mitä teen seuraavaksi on lista saa osoitin, joka kuvallisesti johtaa 409 00:19:23,520 --> 00:19:25,570 kuva niin. 410 00:19:25,570 --> 00:19:26,620 Joten se on yksi skenaario. 411 00:19:26,620 --> 00:19:30,490 >> Ja joka olit kysyä Erityisesti on tämänkaltaisessa tilanteessa, 412 00:19:30,490 --> 00:19:33,190 jossa meillä on jo yksi-yhtymäkohtalistassaan. 413 00:19:33,190 --> 00:19:36,240 Ja vaikka minä menen takaisin ylös alkuperäisessä ongelmalausekkeen Seuraavaksi voisi 414 00:19:36,240 --> 00:19:39,320 aseta sanoa on 34, vain vuoksi keskustelua. 415 00:19:39,320 --> 00:19:46,210 Joten aion vain kätevästi piirtää että tänne. 416 00:19:46,210 --> 00:19:47,540 Olen juuri malloced. 417 00:19:47,540 --> 00:19:49,310 Oletetaan Olen tarkistanut null. 418 00:19:49,310 --> 00:19:51,870 >> Nyt aion alustaa n olevan 34. 419 00:19:51,870 --> 00:19:53,040 Ja tämä on n. 420 00:19:53,040 --> 00:19:54,670 Tämä on ensi. 421 00:19:54,670 --> 00:19:57,100 Ja tämä on edellinen. 422 00:19:57,100 --> 00:19:59,370 Varmistetaan että en saat tämän taaksepäin. 423 00:19:59,370 --> 00:20:01,110 Edellinen tulee ensin määritelmään. 424 00:20:01,110 --> 00:20:03,070 Haluan korjata tämän. 425 00:20:03,070 --> 00:20:04,410 Tämä on vanha. 426 00:20:04,410 --> 00:20:05,780 Tämä on seuraava. 427 00:20:05,780 --> 00:20:08,620 Vaikka ne ovat identtisiä, Pidetään se johdonmukainen. 428 00:20:08,620 --> 00:20:09,450 >> Edellinen. 429 00:20:09,450 --> 00:20:11,030 Tämä on seuraava. 430 00:20:11,030 --> 00:20:16,310 Joten olen juuri malloced viestini, tarkastetaan for null, annettu 34 osaksi solmu. 431 00:20:16,310 --> 00:20:17,570 Edellinen saa null. 432 00:20:17,570 --> 00:20:19,480 Niin että antaa minulle. 433 00:20:19,480 --> 00:20:21,010 Seuraava saa luettelon. 434 00:20:21,010 --> 00:20:22,370 Joten lista on tämä. 435 00:20:22,370 --> 00:20:26,520 Joten tämä on nyt sama kuin piirustus tämä nuoli, niin että ne viittaavat yhteen 436 00:20:26,520 --> 00:20:27,940 samalla. 437 00:20:27,940 --> 00:20:30,400 Ja sitten olen tarkistaa, jos lista ei ole yhtä kuin nolla. 438 00:20:30,400 --> 00:20:31,740 Ja se ei ole tällä kertaa. 439 00:20:31,740 --> 00:20:35,580 Sitten aion tehdä luettelo Edellisen saa osoitin. 440 00:20:35,580 --> 00:20:39,700 >> Joten listaan ​​edellinen saa PTR. 441 00:20:39,700 --> 00:20:44,300 Joten tämä vaikutus on laskemisesta graafinen nuoli täällä. 442 00:20:44,300 --> 00:20:46,930 Ja se on tulossa hieman aaltoileva, linjat. 443 00:20:46,930 --> 00:20:50,780 Ja sitten lopuksi päivitän luetella osoittamaan osoitin. 444 00:20:50,780 --> 00:20:55,560 Joten nyt tämä viittaa tämä kaveri. 445 00:20:55,560 --> 00:20:57,170 Ja nyt, nyt tehdä nopeasti järki tarkistaa. 446 00:20:57,170 --> 00:20:59,470 >> Tässä lista, joka on globaali muuttuja. 447 00:20:59,470 --> 00:21:02,850 Ensimmäinen solmu on, todellakin, 34, koska Olen jälkeen, että nuoli. 448 00:21:02,850 --> 00:21:05,210 Ja se on oikein, koska haluan lisätä alussa luettelon 449 00:21:05,210 --> 00:21:06,070 kaikki uudet solmut. 450 00:21:06,070 --> 00:21:08,860 Hänen seuraava kenttä pääsenkin tämä kaveri. 451 00:21:08,860 --> 00:21:10,710 Jos pidän menossa, osuin seuraavaksi on null. 452 00:21:10,710 --> 00:21:11,760 Joten ei ole enää olemassa lista. 453 00:21:11,760 --> 00:21:14,460 Jos osuin edellinen, saan takaisin jos odotan. 454 00:21:14,460 --> 00:21:16,435 >> Joten on vielä muutaman vinkin, tietenkin, manipuloida. 455 00:21:16,435 --> 00:21:19,870 Mutta se, että lääkäri on määrännyt tehdä Tämän jatkuvasti, sitä vain 456 00:21:19,870 --> 00:21:22,910 on rajallinen määrä asioita et saa tehdä. 457 00:21:22,910 --> 00:21:24,290 Ja mikä on sen numero? 458 00:21:24,290 --> 00:21:25,185 Se voisi olla yksi askel. 459 00:21:25,185 --> 00:21:25,700 Se voi olla kaksi. 460 00:21:25,700 --> 00:21:26,820 Se voi olla 1000 askelta. 461 00:21:26,820 --> 00:21:30,500 Mutta se on rajallinen, mikä tarkoittaa, et voi ovat minkäänlaista silmukoiminen tekeillä 462 00:21:30,500 --> 00:21:32,010 täällä, ei rekursio, ole silmukoita. 463 00:21:32,010 --> 00:21:37,390 Se on vain pakko olla kovakoodatuilla linjat koodin kuten olemme tässä näytteessä. 464 00:21:37,390 --> 00:21:42,330 >> Niin seuraava ongelma 12 pyytäneet meitä täydellinen täytäntöönpano remove 465 00:21:42,330 --> 00:21:46,740 alle siten, että se poistaa n luettelosta lineaarisessa ajassa. 466 00:21:46,740 --> 00:21:48,740 Joten sinulla on hieman enemmän liikkumavaraa nyt. 467 00:21:48,740 --> 00:21:52,380 Voit olettaa, että n, jos käytössä luettelossa, on läsnä 468 00:21:52,380 --> 00:21:53,340 enintään kerran. 469 00:21:53,340 --> 00:21:56,770 Ja sekin on tarkoitus olla tietokilpailu-pohjainen yksinkertaistava oletus, joten 470 00:21:56,770 --> 00:21:59,780 että jos löydät numeron 50 jonnekin luettelossa, et myös 471 00:21:59,780 --> 00:22:02,890 tarvitse huolehtia edelleen kerrata, etsivät kaikki mahdolliset 472 00:22:02,890 --> 00:22:06,990 jäljennös 50, joka olisi vain siirtää johonkin erikoiskohtaa rajoitetun ajan. 473 00:22:06,990 --> 00:22:10,460 >> Joten poistaa, tämä oli ehdottomasti haastavampaa ja enemmän 474 00:22:10,460 --> 00:22:11,640 koodia kirjoittaa. 475 00:22:11,640 --> 00:22:14,990 Mutta ensi silmäyksellä, suoraan sanottuna, se saattaa haitata näyttää ylivoimainen ja jotain 476 00:22:14,990 --> 00:22:17,060 ei mitenkään sinulla voisi olla keksiä tietovisa. 477 00:22:17,060 --> 00:22:22,450 Mutta jos keskitymme yksittäisiä vaiheita, Toivottavasti se yhtäkkiä 478 00:22:22,450 --> 00:22:26,060 iskeä sinua että kukin näistä vaiheet tekee selvää järkeä 479 00:22:26,060 --> 00:22:27,080 jälkikäteen. 480 00:22:27,080 --> 00:22:28,200 Joten katsotaanpa katsomaan. 481 00:22:28,200 --> 00:22:32,570 >> Joten ensin, me alustaa osoitin olevan luetteloa. 482 00:22:32,570 --> 00:22:36,040 Koska haluan lineaarisen ajan, että välineet Aion olla silmukka. 483 00:22:36,040 --> 00:22:39,730 Ja yleinen tapa kerrata yli solmut Hakemistorakenteessa tai minkäänlaista 484 00:22:39,730 --> 00:22:43,860 Rakenteen iteratiivisesti on ottaa osoittimen edessä datan 485 00:22:43,860 --> 00:22:46,990 rakennetta ja sitten vain alkaa päivittää se ja kävellä tiesi 486 00:22:46,990 --> 00:22:48,650 kautta tietorakenne. 487 00:22:48,650 --> 00:22:50,040 Joten aion tehdä juuri näin. 488 00:22:50,040 --> 00:22:54,260 >> Vaikka osoitin, väliaikaiset muuttuja, ei ole sama kuin nolla, katsotaanpa 489 00:22:54,260 --> 00:22:55,660 mennä eteenpäin ja tarkistaa. 490 00:22:55,660 --> 00:22:56,910 Sainko onnekas? 491 00:22:56,910 --> 00:23:01,740 Onko n kentän solmuun olen tällä hetkellä tarkastellaan yhtä 492 00:23:01,740 --> 00:23:03,380 numero Etsin? 493 00:23:03,380 --> 00:23:05,410 Ja jos on, tehdään jotain. 494 00:23:05,410 --> 00:23:10,020 Nyt, huomaa tämä, jos ehto ympäröi koko 495 00:23:10,020 --> 00:23:11,520 Seuraavat riviä koodia. 496 00:23:11,520 --> 00:23:14,610 Tämä on ainoa asia välitän - löytää numero kyseessä. 497 00:23:14,610 --> 00:23:18,010 Joten ei ole mitään muuta, mikä yksinkertaistaa asioita käsitteellisesti hieman. 498 00:23:18,010 --> 00:23:22,040 >> Mutta nyt tajusin, ja saatat olla vain tajusi tämän jälkeen ajattelu 499 00:23:22,040 --> 00:23:24,720 sitä kautta vähän, siellä on oikeastaan ​​täällä kaksi asiaa. 500 00:23:24,720 --> 00:23:28,060 Yksi on, jos solmu on alussa lista, joka on 501 00:23:28,060 --> 00:23:31,040 vähän harmittaa, koska se on erikoistapaus, koska sinun täytyy käsitellä 502 00:23:31,040 --> 00:23:33,340 tämä asia, joka on ainoa poikkeus. 503 00:23:33,340 --> 00:23:35,720 Kaikkialla muualla luettelossa se on sama asia. 504 00:23:35,720 --> 00:23:38,050 Siellä edellisen solmun ja ensi solmu, edellisen solmun, seuraavaan solmuun. 505 00:23:38,050 --> 00:23:40,940 Mutta tämä kaveri on hieman erikoinen jos hän alussa. 506 00:23:40,940 --> 00:23:48,710 >> Joten jos osoitin vastaa luettelon itse, joten jos olen alussa 507 00:23:48,710 --> 00:23:53,960 luettelo ja olen löytänyt n, tarvitsen tehdä pari asiaa. 508 00:23:53,960 --> 00:23:59,230 Yksi, minun täytyy muuttaa luetteloa viittaavat seuraavaan kenttään 50. 509 00:23:59,230 --> 00:24:01,270 Joten olettaa, että olen yrittänyt poistaa 34. 510 00:24:01,270 --> 00:24:03,560 Joten tämä kaveri sai mennä pois vain hetken. 511 00:24:03,560 --> 00:24:07,210 >> Joten aion sanoa, lista saa osoitin seuraavaksi. 512 00:24:07,210 --> 00:24:08,570 No, tämä on osoitin. 513 00:24:08,570 --> 00:24:10,360 Seuraava osoittaa tänne. 514 00:24:10,360 --> 00:24:17,470 Joten tämä on muuttumassa tätä nuolta oikealle nyt osoittamaan tämä kaveri täällä. 515 00:24:17,470 --> 00:24:19,580 Muista nyt, meillä on väliaikainen muuttuja. 516 00:24:19,580 --> 00:24:23,520 Joten emme ole orpoja mitään solmuja, koska minulla on myös tämä kaveri minun 517 00:24:23,520 --> 00:24:25,010 täytäntöönpanon poistaa. 518 00:24:25,010 --> 00:24:29,600 Joten nyt, jos lista itsessään ei ole nolla, Minun täytyy korjata jotain. 519 00:24:29,600 --> 00:24:32,690 >> Minun täytyy nyt varmistaa, että tämä nuoli, joka on aikaisemmin osoittaa 520 00:24:32,690 --> 00:24:36,830 50-34, tämä on saanut mennä pois, koska jos yritän päästä eroon 521 00:24:36,830 --> 00:24:41,910 34, 50 oli parempi saa pitää eräänlainen takaisin viittaamalla sen 522 00:24:41,910 --> 00:24:42,820 nuoli ehdotti. 523 00:24:42,820 --> 00:24:44,820 Joten tein tätä linjaa. 524 00:24:44,820 --> 00:24:46,520 Niin sitten olen valmis. 525 00:24:46,520 --> 00:24:48,040 Tällöin on oikeastaan ​​aika helppoa. 526 00:24:48,040 --> 00:24:51,010 Paloittelu pään pois listalta on suhteellisen yksinkertaista. 527 00:24:51,010 --> 00:24:52,980 >> Valitettavasti tämä harmittaa muu lohko. 528 00:24:52,980 --> 00:24:56,170 Joten nyt minun on harkittava tapaus missä on jotain keskellä. 529 00:24:56,170 --> 00:24:59,880 Mutta se ei ole liian kauhea, paitsi syntaksille näin. 530 00:24:59,880 --> 00:25:03,080 Joten jos en ole alussa lista, olen jossain keskellä. 531 00:25:03,080 --> 00:25:08,160 Ja tämä linja täällä sanoo, alku minä tahansa solmussa olet. 532 00:25:08,160 --> 00:25:11,210 533 00:25:11,210 --> 00:25:18,550 Siirry edelliseen solmun seuraavaan kenttään ja osoittele osoitin. 534 00:25:18,550 --> 00:25:20,390 >> Tehdään tämä kuvallisesti. 535 00:25:20,390 --> 00:25:21,640 Että oli tulossa monimutkainen. 536 00:25:21,640 --> 00:25:30,480 537 00:25:30,480 --> 00:25:37,990 Joten jos minulla on edellisen Pellot - tehdään tämä - ensi aloilla täällä. 538 00:25:37,990 --> 00:25:41,200 Aion yksinkertaistaa minun viitteitä pikemminkin kuin vetää koko joukko 539 00:25:41,200 --> 00:25:45,710 asioita edestakaisin crisscrossing toisiaan. 540 00:25:45,710 --> 00:25:50,870 Ja nyt, haluan vain sanoa, tämä on 1, 2, 3 vuoksi keskustelua, jopa 541 00:25:50,870 --> 00:25:53,410 kuitenkin, että ei asetu kyseinen ongelma. 542 00:25:53,410 --> 00:25:55,900 >> Joten tässä on minun linkitetty lista. 543 00:25:55,900 --> 00:25:59,300 Yritän poistaa kaksi tässä Erityisesti versio tarinasta. 544 00:25:59,300 --> 00:26:01,960 Joten olen päivittänyt osoitin osoittavan tämä kaveri. 545 00:26:01,960 --> 00:26:03,315 Joten tämä on PTR. 546 00:26:03,315 --> 00:26:04,530 Hän osoittaa täällä. 547 00:26:04,530 --> 00:26:07,170 Tämä on lista, joka on olemassa maailmanlaajuisesti kuin ennen. 548 00:26:07,170 --> 00:26:09,200 Hän osoittaa täällä vaikka mitä. 549 00:26:09,200 --> 00:26:10,800 Ja nyt yritän poistaa kaksi. 550 00:26:10,800 --> 00:26:13,850 >> Joten jos osoitin osoittaa täällä, olen menossa seuraamaan, ilmeisesti, 551 00:26:13,850 --> 00:26:17,110 edellinen osoitin, joka asettaa minut 1. 552 00:26:17,110 --> 00:26:22,290 Olen niin menee sanoa, että seuraava kenttä, joka tuo minua tähän 553 00:26:22,290 --> 00:26:25,410 laatikko täällä on menossa yhtä osoittimen vieressä. 554 00:26:25,410 --> 00:26:28,400 Joten jos tämä osoitin, tämä on seuraava. 555 00:26:28,400 --> 00:26:31,840 Tämä tarkoittaa, että tätä nuolta tarpeisiin osoittamaan tämä kaveri. 556 00:26:31,840 --> 00:26:35,140 >> Niin mitä Koodirivin on juuri tehtävä on hieman tätä. 557 00:26:35,140 --> 00:26:37,500 Ja nyt, tämä on näköisenä askel oikeaan suuntaan. 558 00:26:37,500 --> 00:26:41,390 Olemme pääasiassa haluavat leikata 2 ulos ja keskellä 1 ja 3. 559 00:26:41,390 --> 00:26:44,400 Joten on järkevää, että haluamme Reitin tämä osoitin sen ympärille. 560 00:26:44,400 --> 00:26:50,400 Joten tämä seuraava rivi on tarkistaa, jos osoitin seuraava ei ole nolla, siellä 561 00:26:50,400 --> 00:26:54,200 todellakin joku oikealle 2, se tarkoittaa, että meidän on myös tehtävä 562 00:26:54,200 --> 00:26:55,850 pieni snip täällä. 563 00:26:55,850 --> 00:27:00,590 >> Joten minun täytyy nyt seurata tätä osoitinta ja päivittää edellisen osoittimen 564 00:27:00,590 --> 00:27:05,410 tämä kaveri tekemään hieman Voit kiertää täällä kohta täällä. 565 00:27:05,410 --> 00:27:07,100 Ja nyt, visuaalisesti tämä on mukavaa. 566 00:27:07,100 --> 00:27:11,930 Se on vähän sotkuinen, että siellä on kukaan suunnattu 2 enää. 567 00:27:11,930 --> 00:27:13,600 2 on osoittaa vasemmalle. 568 00:27:13,600 --> 00:27:14,980 Ja 2 on osoittaa oikealle. 569 00:27:14,980 --> 00:27:17,480 Mutta hän voi tehdä mitä hän haluaa, koska hän on saamassa vapautti. 570 00:27:17,480 --> 00:27:19,480 Ja se ei ole väliä, mitä nämä arvot ovat enää. 571 00:27:19,480 --> 00:27:23,040 >> Tärkeää on, että jäljellä kaverit reititys edellä 572 00:27:23,040 --> 00:27:24,280 ja hänen alapuolellaan nyt. 573 00:27:24,280 --> 00:27:25,810 Ja todellakin, sitähän me teemme seuraavaksi. 574 00:27:25,810 --> 00:27:29,360 Me vapaa osoitin, mikä tarkoittaa kerromme käyttöjärjestelmä, olet tervetullut 575 00:27:29,360 --> 00:27:30,906 perimään tätä. 576 00:27:30,906 --> 00:27:34,900 Ja sitten lopuksi palaamme. 577 00:27:34,900 --> 00:27:37,220 Else implisiittisesti, jos me eivät ole palautuneet vielä, 578 00:27:37,220 --> 00:27:38,290 meidän täytyy jatkaa etsimistä. 579 00:27:38,290 --> 00:27:41,485 Joten osoitin vastaa osoittimen vieressä vain tarkoittaa siirtää tämä kaveri täällä. 580 00:27:41,485 --> 00:27:42,600 Siirrä tämä kaveri täällä. 581 00:27:42,600 --> 00:27:45,400 Siirrä tämä kaveri täällä, jos asiassa emme löytäneet numero 582 00:27:45,400 --> 00:27:46,960 etsimme vielä. 583 00:27:46,960 --> 00:27:49,630 >> Joten rehellisesti, se näyttää täysin ylivoimainen, mielestäni ensin 584 00:27:49,630 --> 00:27:52,180 silmäyksellä, varsinkin jos kamppaillut Tämän aikana tietokilpailu sitten nähdä 585 00:27:52,180 --> 00:27:52,850 jotain tällaista. 586 00:27:52,850 --> 00:27:55,050 Ja voit taputtaa itseäsi selkään. 587 00:27:55,050 --> 00:27:57,080 No, ei voi enää mitenkään voisin olla keksiä, että tietokilpailu. 588 00:27:57,080 --> 00:28:00,470 Väittäisin kuitenkin, voit jos rikot se alas näihin yksittäisiin 589 00:28:00,470 --> 00:28:04,400 tapauksissa ja vain kävellä läpi huolellisesti, vaikkakin tosin alle 590 00:28:04,400 --> 00:28:06,300 stressaavaa olosuhteissa. 591 00:28:06,300 --> 00:28:09,470 >> Onneksi kuva tehty kaiken onnellisempi. 592 00:28:09,470 --> 00:28:11,050 Voisit piirtää tämän kuinka monella tavalla tahansa. 593 00:28:11,050 --> 00:28:12,760 Sinun ei tarvitse tehdä crisscrossing juttu täällä. 594 00:28:12,760 --> 00:28:14,520 Voisit tehdä sen suoraan linjat kuten tämä. 595 00:28:14,520 --> 00:28:18,790 Mutta ydin tämän ongelman Yleensä oli ymmärtää, että 596 00:28:18,790 --> 00:28:22,060 kuva lopulta näyttää hieman jotain tällaista, koska 597 00:28:22,060 --> 00:28:25,030 vakioaikaisia ​​ymmärtää, että pidät jammailua ja häirintä ja häirintä 598 00:28:25,030 --> 00:28:29,900 uudet solmut alussa luettelon. 599 00:28:29,900 --> 00:28:31,960 Kaikki kysymykset? 600 00:28:31,960 --> 00:28:34,565 Luultavasti kaikkein haastavin varmasti koodaus kysymyksiä. 601 00:28:34,565 --> 00:28:37,690 >> Yleisö: Niin on lista samanlainen pää edellisissä esimerkeissä. 602 00:28:37,690 --> 00:28:39,640 >> DAVID J. MALAN: Aivan, aivan. 603 00:28:39,640 --> 00:28:43,130 Vain toinen nimi globaali muuttuja. 604 00:28:43,130 --> 00:28:44,380 Maailmanlaajuinen mitä? 605 00:28:44,380 --> 00:28:48,880 606 00:28:48,880 --> 00:28:49,730 >> ROB BOWDEN: OK. 607 00:28:49,730 --> 00:28:52,020 Joten tämä on yksi, jossa voit piti kirjoittaa kohtaan. 608 00:28:52,020 --> 00:28:56,060 Jotkut ihmiset kirjoittivat esseitä tähän kysymykseen. 609 00:28:56,060 --> 00:29:00,230 Mutta sinun tarvitsee vain käyttää nämä kuusi termejä kuvaamaan, mitä tapahtuu, kun 610 00:29:00,230 --> 00:29:02,440 yrität ottaa yhteyttä facebook.com. 611 00:29:02,440 --> 00:29:07,930 Joten minä vain puhua läpi prosessin käyttäen kaikkia näitä ehtoja. 612 00:29:07,930 --> 00:29:11,290 Joten meidän selain, kirjoitamme facebook.com ja paina Enter. 613 00:29:11,290 --> 00:29:17,280 Joten meidän selain tulee rakentaa HTTP-pyynnön, että se tulee lähettää 614 00:29:17,280 --> 00:29:22,220 läpi joitakin prosessin Facebookiin Facebook vastata meille 615 00:29:22,220 --> 00:29:24,450 HTML sen sivun. 616 00:29:24,450 --> 00:29:28,800 >> Joten mikä on prosessi, joka HTTP-pyynnön 617 00:29:28,800 --> 00:29:30,730 todella saa Facebookiin? 618 00:29:30,730 --> 00:29:32,790 Ensin meidän täytyy kääntää Facebook.com. 619 00:29:32,790 --> 00:29:38,780 Joten juuri antanut nimen Facebook.com, jos todella tekee HTTP-pyynnön 620 00:29:38,780 --> 00:29:39,940 täytyy mennä? 621 00:29:39,940 --> 00:29:44,120 Joten meidän täytyy kääntää Facebook.com IP-osoite, joka yksiselitteisesti 622 00:29:44,120 --> 00:29:47,620 määritellään, mitä kone me oikeastaan haluat lähettää tämän pyynnön. 623 00:29:47,620 --> 00:29:49,310 Kannettava tietokone on IP-osoite. 624 00:29:49,310 --> 00:29:52,240 Mitään yhteydessä internetiin on IP-osoite. 625 00:29:52,240 --> 00:29:59,030 >> Joten DNS, Domain Name System, joka on mitä tulee käsitellä käännös 626 00:29:59,030 --> 00:30:03,750 alkaen facebook.com IP-osoitteen, joka te todella haluavat ottaa yhteyttä. 627 00:30:03,750 --> 00:30:08,075 Joten otamme yhteyttä DNS-palvelimet ja sanoa, mikä on facebook.com? 628 00:30:08,075 --> 00:30:16,560 Siinä sanotaan, oh, se on IP-osoite 190,212 jotain, jotain, jotain. 629 00:30:16,560 --> 00:30:16,900 Selvä. 630 00:30:16,900 --> 00:30:18,850 Nyt tiedän mitä kone Haluan yhteyden. 631 00:30:18,850 --> 00:30:22,360 >> Niin sitten lähetät HTTP-pyynnön yli automaatista. 632 00:30:22,360 --> 00:30:24,140 Joten miten se päästä, että kone? 633 00:30:24,140 --> 00:30:27,200 No, pyyntö menee reitittimen mukaan terhakka. 634 00:30:27,200 --> 00:30:32,630 Muista Esimerkiksi luokassa, jossa me itse nähnyt reitti, joka 635 00:30:32,630 --> 00:30:35,340 paketit otti kun yritimme kommunikoida. 636 00:30:35,340 --> 00:30:38,460 Näimme sen hypätä yli Atlantin Ocean jossain vaiheessa tai mitä tahansa. 637 00:30:38,460 --> 00:30:42,820 >> Joten viimeinen termi satamaan. 638 00:30:42,820 --> 00:30:46,520 Joten tämä on nyt tietokoneellesi. 639 00:30:46,520 --> 00:30:49,970 Sinulla voi olla useita asioita tällä hetkellä kommunikoida Internetissä. 640 00:30:49,970 --> 00:30:53,730 Joten en voi olla käynnissä, vaikkapa Skype. 641 00:30:53,730 --> 00:30:55,670 Saatan olla web-selain auki. 642 00:30:55,670 --> 00:30:59,010 Minulla saattaa olla jotain, torrenting tiedostoja. 643 00:30:59,010 --> 00:31:00,880 Joten kaikki nämä asiat ovat kommunikoida 644 00:31:00,880 --> 00:31:02,600 Internet jollakin tavalla. 645 00:31:02,600 --> 00:31:08,070 >> Joten kun tietokone vastaanottaa joitakin tietoja Internetistä, kuinka se 646 00:31:08,070 --> 00:31:10,130 tietää, mitä sovellus todella haluaa tietoa? 647 00:31:10,130 --> 00:31:12,610 Miten se tietää, onko tässä nimenomaisessa data on tarkoitettu 648 00:31:12,610 --> 00:31:16,070 torrenting sovellus vastakohtana Web-selaimeen? 649 00:31:16,070 --> 00:31:20,980 Joten tämä on tarkoitus satamien että Kaikki nämä sovellukset ovat 650 00:31:20,980 --> 00:31:22,720 väitti porttiin. 651 00:31:22,720 --> 00:31:27,580 Joten selaimessasi sanoo, hei, Olen kuuntelee porttia 1000. 652 00:31:27,580 --> 00:31:32,240 Ja torrenting ohjelma sanoo, Olen kuuntelee porttia 3000. 653 00:31:32,240 --> 00:31:34,770 Ja Skype sanoo, olen käyttäen portin 4000. 654 00:31:34,770 --> 00:31:41,950 >> Joten kun saat joitakin tietoja, joka kuuluu yksi näistä sovelluksista, data 655 00:31:41,950 --> 00:31:45,510 on merkitty, mihin satamaan se tosiasiallisesti tulee lähettää pitkin. 656 00:31:45,510 --> 00:31:47,950 Joten tämä kertoo, oh, minä kuulun porttiin 1000. 657 00:31:47,950 --> 00:31:50,950 Tiedän, silloin minun täytyy välittämään tämän pitkin minun selaimella. 658 00:31:50,950 --> 00:31:56,440 Niin syy on merkitystä tässä on, että web-palvelimet ovat yleensä 659 00:31:56,440 --> 00:31:58,240 tarkkaile porttia 80. 660 00:31:58,240 --> 00:32:02,420 Joten kun otan yhteyttä Facebook.com, olen tiedonsiirrossa joidenkin koneella. 661 00:32:02,420 --> 00:32:06,390 Mutta minun täytyy sanoa, mihin satamaan kyseisen kone Haluan kommunikoida. 662 00:32:06,390 --> 00:32:09,160 Ja web-palvelimet ovat yleensä kuuntelee porttia 80. 663 00:32:09,160 --> 00:32:14,010 >> Jos he halusivat, he voisivat asettaa sen niin se luettelee portissa 7000. 664 00:32:14,010 --> 00:32:19,090 Ja sitten web-selain, voisin manuaalisesti tyyppi Facebook.com: 7000 665 00:32:19,090 --> 00:32:24,600 lähetä pyyntö porttiin 7000 Facebookin web-palvelin. 666 00:32:24,600 --> 00:32:26,820 >> DAVID J. MALAN: Ja tässä tapauksessa, vaikka Vaikka emme edellytä, että ihmiset 667 00:32:26,820 --> 00:32:30,000 Mainitsen tämän, tässä tapauksessa mitä porttia olisi pyynnön itse mennä? 668 00:32:30,000 --> 00:32:36,630 669 00:32:36,630 --> 00:32:37,880 Yritä uudelleen. 670 00:32:37,880 --> 00:32:42,810 671 00:32:42,810 --> 00:32:44,300 Täsmälleen. 672 00:32:44,300 --> 00:32:47,960 Eivät etsi sitä, mutta hienovaraisuutta että siellä mikään viimeinen. 673 00:32:47,960 --> 00:32:51,770 >> ROB BOWDEN: Niin HTTPS, koska se on kuuntelee nimenomaan 674 00:32:51,770 --> 00:32:55,180 salattu, se on portissa 4430. 675 00:32:55,180 --> 00:32:57,680 >> Yleisö: Ja sähköpostit ovat 25, eikö? 676 00:32:57,680 --> 00:33:00,670 >> DAVID J. MALAN: Outbound sähköposteja, 25, jep. 677 00:33:00,670 --> 00:33:03,760 >> ROB BOWDEN: En edes tiedä useimmat - kaikki alemmat yleensä 678 00:33:03,760 --> 00:33:06,310 varattu asioita. 679 00:33:06,310 --> 00:33:09,260 Mielestäni kaikki alle 1024 on varattu. 680 00:33:09,260 --> 00:33:13,450 >> Yleisö: Miksi sanoit 3 oli väärä numero? 681 00:33:13,450 --> 00:33:18,820 >> ROB BOWDEN: Koska IP-osoitteen, siellä on neljä ryhmää numeroita. 682 00:33:18,820 --> 00:33:21,090 Ja he ovat 0-255. 683 00:33:21,090 --> 00:33:28,060 Joten 192.168.2.1 on yhteinen lähiverkon IP-osoite. 684 00:33:28,060 --> 00:33:30,840 Huomaa kaikki nämä ovat alle 255. 685 00:33:30,840 --> 00:33:33,570 Joten kun aloitin 300, että ei mitenkään ole voinut 686 00:33:33,570 --> 00:33:35,210 ollut yksi numeroita. 687 00:33:35,210 --> 00:33:38,170 >> DAVID J. MALAN: Mutta se typerä clip alkaen - oli se CSI, jossa heillä oli 688 00:33:38,170 --> 00:33:39,970 numero, joka oli liian suuri IP-osoitteen. 689 00:33:39,970 --> 00:33:42,940 690 00:33:42,940 --> 00:33:46,110 >> ROB BOWDEN: Kysyttävää tästä? 691 00:33:46,110 --> 00:33:51,710 Seuraava, niin täydellinen muutos topic, mutta meillä on tämä PHP array 692 00:33:51,710 --> 00:33:53,270 talot quad. 693 00:33:53,270 --> 00:33:56,360 Ja meillä on Järjestämätön lista. 694 00:33:56,360 --> 00:33:59,550 Ja haluamme tulostaa kunkin kohdan vain joka sisältää talon nimi. 695 00:33:59,550 --> 00:34:09,090 696 00:34:09,090 --> 00:34:11,870 Joten meillä on foreach silmukka. 697 00:34:11,870 --> 00:34:17,540 Muista siis, syntaksi on foreach array kohde array. 698 00:34:17,540 --> 00:34:22,360 Joten läpi kunkin iterointia silmukan, talo vie yksi 699 00:34:22,360 --> 00:34:24,060 arvojen sisällä array. 700 00:34:24,060 --> 00:34:26,530 >> On ensimmäistä iterointia, talo tulee Cabot House. 701 00:34:26,530 --> 00:34:30,370 On toinen variaatio, talo olla Courier talo ja niin edelleen. 702 00:34:30,370 --> 00:34:34,370 Joten jokaisen quad kuin talo, olemme juuri menossa painoon - 703 00:34:34,370 --> 00:34:37,250 voit myös voi ovat toistaneet - 704 00:34:37,250 --> 00:34:42,199 luettelon kohtaan ja sitten talon nimi ja sulje luettelon kohtaan. 705 00:34:42,199 --> 00:34:45,210 Aaltosulkeita ovat valinnaisia ​​täällä. 706 00:34:45,210 --> 00:34:49,480 >> Ja sitten me myös sanoi kyseessä itse, muista sulkea 707 00:34:49,480 --> 00:34:50,770 Järjestämätön lista tag. 708 00:34:50,770 --> 00:34:53,949 Joten meidän täytyy poistua PHP tilassa voidakseen tehdä tämän. 709 00:34:53,949 --> 00:35:00,280 Tai voisimme ovat toistaneet Sulje Järjestämätön lista tag. 710 00:35:00,280 --> 00:35:02,380 >> DAVID J. MALAN: Myös hieno tässä olisi on ollut käyttää vanhaa koulua 711 00:35:02,380 --> 00:35:07,340 silmukka $ i = 0 0 ja käyttämällä laskurien selvittää pituus säde. 712 00:35:07,340 --> 00:35:09,240 Täysin kunnossa myös, vain hieman wordier. 713 00:35:09,240 --> 00:35:12,170 714 00:35:12,170 --> 00:35:14,742 >> Yleisö: Joten jos olit menossa [Äänetön], tekisitkö - 715 00:35:14,742 --> 00:35:16,734 Unohdan mitä silmukka [kuultavissa] on. 716 00:35:16,734 --> 00:35:21,380 Voisitko $ quad kiinnike i? 717 00:35:21,380 --> 00:35:21,850 >> DAVID J. MALAN: Aivan. 718 00:35:21,850 --> 00:35:23,100 Joo, aivan. 719 00:35:23,100 --> 00:35:26,650 720 00:35:26,650 --> 00:35:27,900 >> ROB BOWDEN: Jotain muuta? 721 00:35:27,900 --> 00:35:31,350 722 00:35:31,350 --> 00:35:32,010 >> DAVID J. MALAN: Selvä. 723 00:35:32,010 --> 00:35:32,300 Kompromisseja. 724 00:35:32,300 --> 00:35:38,290 Joten oli risuryppäät vastauksia mahdollista, että kukin näistä. 725 00:35:38,290 --> 00:35:40,510 Olimme oikeastaan ​​vain etsimässä jotain pakottavia ylösalaisin ja 726 00:35:40,510 --> 00:35:41,100 kääntöpuolensa. 727 00:35:41,100 --> 00:35:44,830 Ja numero 16 kysyi, validointi käyttäjien input client-side, kuten JavaScript, 728 00:35:44,830 --> 00:35:47,280 sijasta server-side, kuten PHP. 729 00:35:47,280 --> 00:35:49,450 Joten mitä ylösalaisin tekee client-side? 730 00:35:49,450 --> 00:35:53,780 >> No, yksi niistä asioista, ehdotimme on että voit vähentää latenssi, koska olet 731 00:35:53,780 --> 00:35:56,750 ei tarvitse vaivautua yhteyttä palvelin, joka saattaa kestää muutaman 732 00:35:56,750 --> 00:36:00,390 millisekuntia tai jopa pari sekuntia välttämällä että ja vain 733 00:36:00,390 --> 00:36:04,670 validointi käyttäjien panos client-side by liipaisu paikan esittää ohjaajan ja 734 00:36:04,670 --> 00:36:06,650 vain tarkistaa, he kirjoita jotain nimelle? 735 00:36:06,650 --> 00:36:08,080 Oliko he kirjoittavat jotain in sähköpostiosoitetta? 736 00:36:08,080 --> 00:36:10,950 He valitsivat asuntolan alkaen pudotusvalikosta? 737 00:36:10,950 --> 00:36:14,360 >> Voit antaa heille hetkellinen palautetta käyttäen gigahertsin tietokone 738 00:36:14,360 --> 00:36:16,770 tai mitä ne ovat, että on itse asiassa niiden vastaanotto. 739 00:36:16,770 --> 00:36:19,310 Joten se on vain parempi käyttäjä kokevat tyypillisesti. 740 00:36:19,310 --> 00:36:24,460 Mutta haittapuoli tehdä client-side validointi, jos teet sen ilman myös 741 00:36:24,460 --> 00:36:29,860 tekee server-side validointi on, että useimmat kukaan tulossa ulos CS50 tietää 742 00:36:29,860 --> 00:36:33,980 että voit vain lähettää tietoja haluat palvelimeen monella tavalla tahansa. 743 00:36:33,980 --> 00:36:37,030 Suoraan sanottuna, useimmissa tahansa selaimella, voit klikkaa ympäri asetukset ja juuri 744 00:36:37,030 --> 00:36:40,110 sammutettava JavaScript, joka siinä tapauksessa, siis poistaa kaikenlainen 745 00:36:40,110 --> 00:36:41,080 validointi. 746 00:36:41,080 --> 00:36:44,460 >> Mutta voit myös ehkä muistaa, että vaikka en teki joitakin mystistä asioita luokassa käyttäen 747 00:36:44,460 --> 00:36:47,790 telnet ja todella teeskentelee olla selaimen lähettämällä get 748 00:36:47,790 --> 00:36:49,240 pyyntöjä palvelimelle. 749 00:36:49,240 --> 00:36:51,030 Ja se ei todellakaan ole jollakin JavaScript. 750 00:36:51,030 --> 00:36:53,290 Se on vain minun kirjoittamalla komentoja klo näppäimistö. 751 00:36:53,290 --> 00:36:57,410 Siis todella, mitä tahansa ohjelmoija sisällä tarpeeksi mukavuutta web ja HTTP 752 00:36:57,410 --> 00:37:01,690 voisi lähettää mitä tietoja hän haluaa palvelimeen ilman vahvistusta. 753 00:37:01,690 --> 00:37:05,470 Ja jos palvelin ei myös tarkistaa, he antoivat minulle nimi, on 754 00:37:05,470 --> 00:37:08,930 tämä todella toimiva sähköpostiosoite, teki he valitsevat asuntolan, saatat päätyä 755 00:37:08,930 --> 00:37:12,800 ylös työntämällä vääriä tai vain tyhjiä tiedot tietokantaan, joka todennäköisesti 756 00:37:12,800 --> 00:37:15,450 ei tule olemaan hyvä, jos olit olettaen, että se oli siellä. 757 00:37:15,450 --> 00:37:16,770 >> Joten tämä on ärsyttävää todellisuutta. 758 00:37:16,770 --> 00:37:19,890 Mutta yleensä, client-side validointi on suuri. 759 00:37:19,890 --> 00:37:21,810 Mutta se tarkoittaa kaksi kertaa niin paljon työtä. 760 00:37:21,810 --> 00:37:25,970 Vaikka ovat olemassa eri kirjastot, JavaScript kirjastot 761 00:37:25,970 --> 00:37:28,830 Esimerkiksi, jotka tekevät tästä paljon, paljon vähemmän päänsärkyä. 762 00:37:28,830 --> 00:37:31,940 Ja voit käyttää uudelleen joitakin koodi server-side, client-side. 763 00:37:31,940 --> 00:37:35,980 Mutta älä ymmärrä, että se on tyypillisesti lisätyötä. 764 00:37:35,980 --> 00:37:36,415 Joo. 765 00:37:36,415 --> 00:37:37,792 >> Yleisö: Eli jos me vain sanoi vähemmän turvallinen - 766 00:37:37,792 --> 00:37:39,205 >> DAVID J. MALAN: [LAUGHS] 767 00:37:39,205 --> 00:37:39,680 Ugh. 768 00:37:39,680 --> 00:37:43,105 Ne ovat aina vaikeampaa niitä ratkaista. 769 00:37:43,105 --> 00:37:44,480 >> ROB BOWDEN: Se olisi on hyväksytty. 770 00:37:44,480 --> 00:37:44,810 >> DAVID J. MALAN: Mitä? 771 00:37:44,810 --> 00:37:45,810 >> ROB BOWDEN: Loin tämän ongelman. 772 00:37:45,810 --> 00:37:46,735 Että olisi hyväksytty. 773 00:37:46,735 --> 00:37:47,220 >> DAVID J. MALAN: Joo. 774 00:37:47,220 --> 00:37:47,830 >> Yleisö: Cool. 775 00:37:47,830 --> 00:37:51,770 >> ROB BOWDEN: Mutta me emme hyväksy että ensimmäinen - 776 00:37:51,770 --> 00:37:53,630 No, mitä etsimme on jotain sinun ei tarvitse 777 00:37:53,630 --> 00:37:55,270 palvelimen kanssa. 778 00:37:55,270 --> 00:37:58,355 Emme hyväksy vain nopeammin. 779 00:37:58,355 --> 00:38:00,080 >> Yleisö: Entä älä enää käytä sivun? 780 00:38:00,080 --> 00:38:00,430 >> ROB BOWDEN: Kyllä. 781 00:38:00,430 --> 00:38:03,000 Se oli hyväksytty vastaus. 782 00:38:03,000 --> 00:38:06,300 >> DAVID J. MALAN: Anything jossa tunsimme se oli todennäköisempää kuin todennäköistä 783 00:38:06,300 --> 00:38:09,780 että tietäisit, mitä olit sanomalla, joka on kova 784 00:38:09,780 --> 00:38:13,500 line tehdä joskus. 785 00:38:13,500 --> 00:38:16,000 Käyttämällä linkitetyn listan sijaan array säilyttää 786 00:38:16,000 --> 00:38:17,590 lajiteltu kokonaislukujen lista. 787 00:38:17,590 --> 00:38:21,000 Joten ylösalaisin me usein mainitsevat kanssa sidoksissa luettelot, jotka motivoivat heidän koko 788 00:38:21,000 --> 00:38:22,370 käyttöönotto oli saat dynaamisuutta. 789 00:38:22,370 --> 00:38:23,030 Ne voivat kasvaa. 790 00:38:23,030 --> 00:38:23,950 Ne voivat kutistua. 791 00:38:23,950 --> 00:38:27,370 Joten sinun ei tarvitse hypätä kautta vanteet itse luoda enemmän muistia 792 00:38:27,370 --> 00:38:28,140 kanssa array. 793 00:38:28,140 --> 00:38:30,310 Tai sinun ei tarvitse vain sanoa, anteeksi, käyttäjän. 794 00:38:30,310 --> 00:38:31,410 Array on täynnä. 795 00:38:31,410 --> 00:38:35,850 Joten dynaaminen kasvu luettelosta. 796 00:38:35,850 --> 00:38:37,210 Huonona puolena tosin on linkitetty lista? 797 00:38:37,210 --> 00:38:40,916 798 00:38:40,916 --> 00:38:43,356 >> Yleisö: Se on lineaarinen. 799 00:38:43,356 --> 00:38:45,800 Haetaanko linkitetty lista on lineaarinen sen sijaan mitä kirjaudu sisään 800 00:38:45,800 --> 00:38:46,360 >> DAVID J. MALAN: Aivan. 801 00:38:46,360 --> 00:38:50,160 Hakuja linkitetty lista on lineaarinen, vaikka se lajitellaan, koska voit 802 00:38:50,160 --> 00:38:53,170 vain seuraa näitä korppujauhoja, nämä osoittimet, alusta alkaen luettelon 803 00:38:53,170 --> 00:38:53,570 loppuun. 804 00:38:53,570 --> 00:38:57,970 Et voi hyödyntää random access ja näin, binäärihaku, vaikka se on 805 00:38:57,970 --> 00:39:00,740 lajiteltu, että voisit tehdä array. 806 00:39:00,740 --> 00:39:02,390 Ja siellä on myös toinen kustannuksia. 807 00:39:02,390 --> 00:39:02,966 Joo. 808 00:39:02,966 --> 00:39:03,800 >> Yleisö: Muisti tehotonta? 809 00:39:03,800 --> 00:39:04,130 >> DAVID J. MALAN: Joo. 810 00:39:04,130 --> 00:39:06,940 No, en olisi välttämättä sanovat tehotonta. 811 00:39:06,940 --> 00:39:10,110 Mutta se maksaa enemmän muistia, koska tarvitset 32 ​​bittiä jokaisen 812 00:39:10,110 --> 00:39:13,400 solmu ylimääräisiä osoitin kello ainakin yksittäin linkitetty lista. 813 00:39:13,400 --> 00:39:16,660 Nyt, jos olet vain tallentaa kokonaislukuja ja lisäät osoitin, joka on 814 00:39:16,660 --> 00:39:17,830 oikeastaan ​​eräänlainen ei-triviaali. 815 00:39:17,830 --> 00:39:19,340 Se kaksinkertaistaa muistin määrä. 816 00:39:19,340 --> 00:39:22,330 Mutta todellisuudessa, jos olet tallentaa linkitetty lista structs, jotka saattavat olla 817 00:39:22,330 --> 00:39:25,540 8 tavua, 16 tavua, vielä kuin, että ehkä se on vähemmän 818 00:39:25,540 --> 00:39:26,500 of rajakustannus. 819 00:39:26,500 --> 00:39:28,320 Mutta se on kustannus kuitenkin. 820 00:39:28,320 --> 00:39:31,880 Joten joko näistä olis ollut hieno kuin haittoja. 821 00:39:31,880 --> 00:39:32,110 >> 18. 822 00:39:32,110 --> 00:39:36,100 PHP sijaan C kirjoittaa komentorivin ohjelma. 823 00:39:36,100 --> 00:39:41,890 Joten tässä, se on usein nopeampi käyttää kuten PHP tai Ruby tai Python. 824 00:39:41,890 --> 00:39:43,700 Sinä vain nopeasti avata up tekstieditori. 825 00:39:43,700 --> 00:39:45,900 Sinulla on paljon enemmän toimintoja käytössäsi. 826 00:39:45,900 --> 00:39:49,325 PHP on tiskiallas toimintoja, kun taas C, sinun 827 00:39:49,325 --> 00:39:50,420 on hyvin, hyvin vähän. 828 00:39:50,420 --> 00:39:53,820 Itse asiassa kaverit tietää kantapään kautta että sinulla ei ole hash taulukoita. 829 00:39:53,820 --> 00:39:55,000 Sinulla ei ole linkitettyjä listoja. 830 00:39:55,000 --> 00:39:57,470 Jos haluat ne, sinun täytyy toteuttaa ne itse. 831 00:39:57,470 --> 00:40:00,950 >> Joten yksi Ylösalaisin PHP tai oikeastaan ​​mitään tulkittu kieli on nopeus 832 00:40:00,950 --> 00:40:02,920 jolla voit kirjoittaa koodia. 833 00:40:02,920 --> 00:40:06,660 Mutta haittapuoli, näimme tämän, kun nopeasti lyöty jopa Misspeller 834 00:40:06,660 --> 00:40:11,780 täytäntöönpano luento PHP, on että käyttämällä tulkittava kieli 835 00:40:11,780 --> 00:40:13,570 on yleensä hitaampaa. 836 00:40:13,570 --> 00:40:18,420 Ja näimme, että todistettavasti kanssa kasvaa aika 0,3 sekuntia 3 837 00:40:18,420 --> 00:40:24,440 sekuntia, koska tulkinta että todella tapahtuu. 838 00:40:24,440 --> 00:40:27,060 >> Toinen ylösalaisin oli, että ei tarvitse kääntää. 839 00:40:27,060 --> 00:40:30,130 Niin se myös nopeuttaa kehitystä muuten, koska sinulla ei ole 840 00:40:30,130 --> 00:40:31,360 kaksi askelta käynnissä ohjelma. 841 00:40:31,360 --> 00:40:32,140 Sinulla on vain yksi. 842 00:40:32,140 --> 00:40:35,260 Ja niin se on aika pakottavia samoin. 843 00:40:35,260 --> 00:40:38,450 Käyttäen SQL-tietokannan sijasta CSV-tiedoston tallentamiseen. 844 00:40:38,450 --> 00:40:40,230 Joten SQL-tietokannan käytetään pset7. 845 00:40:40,230 --> 00:40:42,060 CSV-tiedostoja et käyttänyt paljon. 846 00:40:42,060 --> 00:40:45,960 Mutta käytit sitä välillisesti pset7 kuin hyvin puhumalla Yahoo Finance. 847 00:40:45,960 --> 00:40:49,330 >> Mutta CSV on aivan Excel-tiedoston, mutta Super yksinkertainen, jossa sarakkeet ovat 848 00:40:49,330 --> 00:40:54,010 vain demarked pilkuilla sisällä on muuten tekstitiedosto. 849 00:40:54,010 --> 00:40:56,740 Ja käyttämällä SQL-tietokanta on hieman enemmän pakottavia. 850 00:40:56,740 --> 00:41:00,060 Se on ylösalaisin, koska saat asiat kuten valita ja lisätä ja poistaa. 851 00:41:00,060 --> 00:41:03,790 Ja saat oletettavasti indeksien MySQL ja muita tietokantoja, kuten 852 00:41:03,790 --> 00:41:07,510 Oraakkeli, rakentaa sinulle muistiin, jossa tarkoittaa valitse ei luultavasti ole 853 00:41:07,510 --> 00:41:09,000 olemaan lineaarista ylhäältä alas. 854 00:41:09,000 --> 00:41:11,300 Se on oikeastaan ​​olemaan jotain kuten binäärihaku tai jotain 855 00:41:11,300 --> 00:41:12,520 hengeltään samanlainen. 856 00:41:12,520 --> 00:41:13,930 Joten he ovat yleensä nopeammin. 857 00:41:13,930 --> 00:41:16,040 >> Mutta haittapuoli on, että se on vain enemmän työtä. 858 00:41:16,040 --> 00:41:16,730 Se on enemmän vaivaa. 859 00:41:16,730 --> 00:41:18,140 Sinun täytyy ymmärtää tietokantoihin. 860 00:41:18,140 --> 00:41:18,940 Sinun täytyy asettaa se. 861 00:41:18,940 --> 00:41:20,840 Tarvitset palvelimen suoritettavaksi että tietokanta. 862 00:41:20,840 --> 00:41:22,750 Sinun täytyy ymmärtää miten määrittää se. 863 00:41:22,750 --> 00:41:24,930 Joten nämä ovat vain näitä erilaisia ​​kompromisseja. 864 00:41:24,930 --> 00:41:27,860 Ottaa huomioon, että CSV-tiedosto, voit luoda sitä gedit. 865 00:41:27,860 --> 00:41:28,770 Ja olet hyvä mennä. 866 00:41:28,770 --> 00:41:31,550 Ei ole monimutkaisia ​​pidemmälle. 867 00:41:31,550 --> 00:41:34,870 >> Käyttämällä triestä sijaan hajautustaulun erillisellä ketjutus tallentaa 868 00:41:34,870 --> 00:41:37,490 sanakirja sanoja mieleen of pset5. 869 00:41:37,490 --> 00:41:42,480 Joten yrittää ylösalaisin, teoriassa ainakin on mitä? 870 00:41:42,480 --> 00:41:46,380 Jatkuva aikaa, ainakin jos olet hajautus on kunkin yksittäisen 871 00:41:46,380 --> 00:41:48,990 kirjaimet sana, kuten sinäkin saattaa olla varten pset5. 872 00:41:48,990 --> 00:41:52,720 Se voisi olla viisi hash, kuusi hash jos on viisi tai kuusi 873 00:41:52,720 --> 00:41:53,900 sanan kirjainten. 874 00:41:53,900 --> 00:41:54,580 Ja se on aika hyvä. 875 00:41:54,580 --> 00:41:56,910 Ja jos on yläraja, miten pitkä sanasi voisi olla, se on 876 00:41:56,910 --> 00:41:59,320 todellakin asymptoottisesti vakioaikaisia. 877 00:41:59,320 --> 00:42:05,180 >> Ottaa huomioon, että tiiviste erillisellä ketjuttamalla ongelma siellä, että 878 00:42:05,180 --> 00:42:09,070 Tällainen tietorakenne on, että suorituskykyä algoritmien yleensä 879 00:42:09,070 --> 00:42:12,700 riippuu monia asioita jo tietorakennetta. 880 00:42:12,700 --> 00:42:15,660 Ja se on ehdottomasti tapauksessa ketjut, jolloin enemmän tavaraa laitat 881 00:42:15,660 --> 00:42:18,800 osaksi tiiviste, enää niitä ketjut mennä, mikä tarkoittaa pahimmassa 882 00:42:18,800 --> 00:42:21,960 tapauksessa asia, saatat olla etsimässä on aina lopussa yhden 883 00:42:21,960 --> 00:42:26,000 näistä ketjuista, joka tehokkaasti lankeaa jotain lineaarinen. 884 00:42:26,000 --> 00:42:29,450 >> Nyt käytännössä, se voisi aivan olla, että hash-taulukko, jossa on 885 00:42:29,450 --> 00:42:32,820 ketjut on nopeampi kuin vastaava trie täytäntöönpanoa. 886 00:42:32,820 --> 00:42:35,570 Mutta se on eri syistä, muun jotka yrittää käyttää paljon 887 00:42:35,570 --> 00:42:39,240 muistin, joka voi itse asiassa, hidas asioita alas, koska et saa mukavaa 888 00:42:39,240 --> 00:42:42,410 hyödyistä jotain kutsutaan välimuistin jos asioita, jotka ovat lähellä toisiaan 889 00:42:42,410 --> 00:42:45,420 muistia voidaan käyttää usein nopeammin. 890 00:42:45,420 --> 00:42:48,180 Ja joskus voi keksiä todella hyvä hajautusfunktio. 891 00:42:48,180 --> 00:42:51,060 Vaikka joudut tuhlaamaan hieman muistia, kyseessä saattaa todellakin pystyä 892 00:42:51,060 --> 00:42:54,430 löytää asioita nopeasti eikä niin paha kuin lineaarisesti. 893 00:42:54,430 --> 00:42:58,410 >> Joten lyhyt, ei ollut välttämättä mitään näistä yksi tai jopa kaksi 894 00:42:58,410 --> 00:43:00,050 tiettyjä asioita etsimme. 895 00:43:00,050 --> 00:43:03,080 Oikeastaan ​​mitään vakuuttava kuin positiiviset ja negatiiviset 896 00:43:03,080 --> 00:43:04,800 yleensä kiinni meidän silmään. 897 00:43:04,800 --> 00:43:11,840 >> ROB BOWDEN: Joten ylösalaisin, teimme ei hyväksy omasta "nopeammin." Sinua 898 00:43:11,840 --> 00:43:14,540 piti sanoa jotain. 899 00:43:14,540 --> 00:43:17,910 Vaikka sanoit teoreettisesti nopeammin, Tiesimme, että olet sellainen ymmärtänyt 900 00:43:17,910 --> 00:43:19,470 että se on 0 1. 901 00:43:19,470 --> 00:43:22,820 Ja tiiviste, teoriassa, ei ole 0 1. 902 00:43:22,820 --> 00:43:26,550 Viittaavat mitään runtime yleensä sai sinut pistettä. 903 00:43:26,550 --> 00:43:32,640 Mutta "nopeammin", useimmat ratkaisut iso board jotka yrittää olivat 904 00:43:32,640 --> 00:43:34,990 objektiivisesti hitaampaa ratkaisuja jotka olivat hash taulukoita. 905 00:43:34,990 --> 00:43:37,250 Joten nopeammin ja itse ei ole oikeasti totta. 906 00:43:37,250 --> 00:43:41,550 907 00:43:41,550 --> 00:43:44,380 >> DAVID J. MALAN: Dom de Dom dom. 908 00:43:44,380 --> 00:43:46,686 Olen luultavasti ainoa, joka tajuaa näin, joka on tarkoitus 909 00:43:46,686 --> 00:43:47,500 lausutaan, eikö? 910 00:43:47,500 --> 00:43:50,400 >> ROB BOWDEN: Minulla oli oikeastaan ​​aavistustakaan. 911 00:43:50,400 --> 00:43:51,650 >> DAVID J. MALAN: Se teki järkeä päähäni. 912 00:43:51,650 --> 00:43:53,830 913 00:43:53,830 --> 00:43:57,580 >> ROB BOWDEN: Teen tämän yhden. 914 00:43:57,580 --> 00:43:58,020 OK. 915 00:43:58,020 --> 00:44:04,243 Joten tämä on yksi, jossa piti piirtää kaavio samanlainen saatat 916 00:44:04,243 --> 00:44:06,040 nähneet viimeisen tentit. 917 00:44:06,040 --> 00:44:12,200 Joten katsokaa tätä. 918 00:44:12,200 --> 00:44:18,170 Joten HTML-solmu, meillä on kaksi lapset, pään ja kehon. 919 00:44:18,170 --> 00:44:20,570 Joten me haara - pään ja vartalon. 920 00:44:20,570 --> 00:44:22,280 Pää on otsikko tag. 921 00:44:22,280 --> 00:44:23,710 Joten meillä on otsikko. 922 00:44:23,710 --> 00:44:28,450 >> Nyt yksi asia paljon ihmisiä Unohdin on, että nämä teksti solmut ovat 923 00:44:28,450 --> 00:44:30,430 elementit tämä puu. 924 00:44:30,430 --> 00:44:36,260 Joten tässä satumme tehdä niitä ovaaleina erottamaan niitä näitä 925 00:44:36,260 --> 00:44:37,380 tyyppisiä solmuja. 926 00:44:37,380 --> 00:44:41,450 Mutta ilmoitus myös täällä meillä on top, keski-ja pohja on lopulta 927 00:44:41,450 --> 00:44:42,560 teksti solmut. 928 00:44:42,560 --> 00:44:46,250 Joten unohtamatta niitä oli jonkin verran of yleinen virhe. 929 00:44:46,250 --> 00:44:48,770 >> Elin on kolme lasta - Näiden kolmen divs. 930 00:44:48,770 --> 00:44:53,340 Joten div, div, div ja sitten teksti solmun lapset näiden divs. 931 00:44:53,340 --> 00:44:55,900 Se on aika paljon se että kysymyksiin. 932 00:44:55,900 --> 00:44:57,860 >> DAVID J. MALAN: Ja on syytä huomata, vaikka emme asua näissä 933 00:44:57,860 --> 00:45:01,040 yksityiskohtia käytämme aikaa JavaScript, että määräys ei, 934 00:45:01,040 --> 00:45:02,290 Itse asiassa teknisesti. 935 00:45:02,290 --> 00:45:06,330 Joten jos pää tulee ennen elimen HTML, sen pitäisi näyttää 936 00:45:06,330 --> 00:45:08,860 jäljellä kehon todellinen DOM. 937 00:45:08,860 --> 00:45:12,265 Että hänen on yleensä vain FYI, jotain kutsutaan asiakirja järjestyksessä, jossa 938 00:45:12,265 --> 00:45:13,260 sillä on väliä. 939 00:45:13,260 --> 00:45:17,470 Ja jos olit täytäntöön jäsennin, ohjelma, joka lukee HTML rakentamisessa 940 00:45:17,470 --> 00:45:20,960 ylös puuhun muistissa, ollakseni rehellinen, se intuitiivisesti luultavasti mitä 941 00:45:20,960 --> 00:45:24,720 tehdä joka tapauksessa - ylhäältä alas, vasemmalta oikealle. 942 00:45:24,720 --> 00:45:26,116 >> ROB BOWDEN: Kysymyksiä tähän? 943 00:45:26,116 --> 00:45:29,080 944 00:45:29,080 --> 00:45:30,000 Pitäisi tehdä seuraava? 945 00:45:30,000 --> 00:45:32,380 >> DAVID J. MALAN: Toki. 946 00:45:32,380 --> 00:45:33,810 >> ROB BOWDEN: OK. 947 00:45:33,810 --> 00:45:39,320 Joten tämä on puskurin ylivuoto hyökkäys kysymys. 948 00:45:39,320 --> 00:45:43,740 Tärkeintä on tunnistaa tässä, hyvin, miten voisi vastustaja temppu 949 00:45:43,740 --> 00:45:46,170 Tämä ohjelma täytäntöönpanosta mielivaltaisen koodin? 950 00:45:46,170 --> 00:45:51,860 Joten argv1, ensin komentoriviltä argumentti tähän ohjelmaan, joka voi olla 951 00:45:51,860 --> 00:45:53,920 mielivaltaisesti pitkiä. 952 00:45:53,920 --> 00:45:59,160 Mutta tässä käytämme memcpy kopioida argv1, joka tässä on baari. 953 00:45:59,160 --> 00:46:00,165 Jossa olemme sitä väitettä. 954 00:46:00,165 --> 00:46:02,050 Ja niin se on saamassa nimeä baarissa. 955 00:46:02,050 --> 00:46:08,040 >> Joten olemme memcpying bar tähän puskuriin c. 956 00:46:08,040 --> 00:46:09,400 Kuinka monta tavua me kopiointi? 957 00:46:09,400 --> 00:46:14,040 No kuitenkin monta tavua bar sattuu käyttää, pituus tämän väitteen. 958 00:46:14,040 --> 00:46:17,930 Mutta c on vain 12 tavua leveä. 959 00:46:17,930 --> 00:46:22,280 Jos siis kirjoitat Komentoriviargumentti joka on pidempi kuin 12 tavua, olemme 960 00:46:22,280 --> 00:46:25,470 menossa ylivuoto tämän Erityisesti puskuri. 961 00:46:25,470 --> 00:46:31,000 Nyt, miten voisi vastustaja huijata ohjelmoida täytäntöönpanovaltion mielivaltaisen koodin? 962 00:46:31,000 --> 00:46:34,910 >> Niin muista, että täällä Tärkein soittaa foo. 963 00:46:34,910 --> 00:46:37,340 Ja niin sitten tärkein puhelut fooksi. 964 00:46:37,340 --> 00:46:40,408 Katsotaanpa piirtää tämän. 965 00:46:40,408 --> 00:46:44,720 966 00:46:44,720 --> 00:46:46,990 Joten meillä on pino. 967 00:46:46,990 --> 00:46:49,090 Ja tärkein on pinokehyksen alareunassa. 968 00:46:49,090 --> 00:46:51,860 969 00:46:51,860 --> 00:46:53,250 Jossain vaiheessa, tärkeimmät puhelut fooksi. 970 00:46:53,250 --> 00:46:55,390 No, heti, tärkeimmät puhelut fooksi. 971 00:46:55,390 --> 00:46:57,130 Ja niin foo saa oman pinokehyksen. 972 00:46:57,130 --> 00:46:59,650 973 00:46:59,650 --> 00:47:02,220 >> Nyt, jossain vaiheessa, foo aikoo palata. 974 00:47:02,220 --> 00:47:06,810 Ja meni foo palaa, meidän on tiedettävä milloin mitä koodiriviä sisällä tärkein me 975 00:47:06,810 --> 00:47:10,610 olivat kunnossa tietää, missä meidän pitäisi jatkaa pää. 976 00:47:10,610 --> 00:47:13,100 Voimme soittaa foo alkaen koko joukko eri paikoissa. 977 00:47:13,100 --> 00:47:14,620 Mistä tiedämme minne palata? 978 00:47:14,620 --> 00:47:16,460 No, meidän täytyy tallentaa se jonnekin. 979 00:47:16,460 --> 00:47:23,010 >> Joten jossain täälläpäin Tallennamme jossa meidän pitäisi palata kerran 980 00:47:23,010 --> 00:47:24,070 foo palaa. 981 00:47:24,070 --> 00:47:26,350 Ja tämä on palautusosoite. 982 00:47:26,350 --> 00:47:30,490 Joten miten vastustaja voi hyödyntää tästä on se, että 983 00:47:30,490 --> 00:47:37,550 tämä puskuri C on tallennettu, katsotaanpa sanoa, täällä on c. 984 00:47:37,550 --> 00:47:39,690 Joten meillä 12 tavua c. 985 00:47:39,690 --> 00:47:40,540 Tämä on c. 986 00:47:40,540 --> 00:47:43,030 Ja tämä on foo pinon rengas. 987 00:47:43,030 --> 00:47:49,970 Joten jos ilkeä käyttäjä syöttää lisää tavut kuin 12 tai ne tulevat komento 988 00:47:49,970 --> 00:47:54,570 argumentti, joka on pidempi kuin 12 merkkejä, niin aiomme 989 00:47:54,570 --> 00:47:57,540 ylivuoto tämä puskuri. 990 00:47:57,540 --> 00:47:59,910 >> Voimme jatkaa. 991 00:47:59,910 --> 00:48:02,220 Ja jossain vaiheessa, menemme pitkälle riitä, että alamme 992 00:48:02,220 --> 00:48:05,120 päälle tämä palautusosoite. 993 00:48:05,120 --> 00:48:08,310 Kun siis korvata paluuosoite, Tämä tarkoittaa, että kun foo 994 00:48:08,310 --> 00:48:14,220 palaa, olemme palaamassa missä pahantahtoinen käyttäjä kertoo sen mukaan 995 00:48:14,220 --> 00:48:19,490 arvosta riippumatta se tuli, millä tahansa merkkiä käyttäjä kirjoittaa. 996 00:48:19,490 --> 00:48:24,320 Joten jos pahantahtoinen käyttäjä ollaan erityisen taitava, hän voi olla tässä 997 00:48:24,320 --> 00:48:29,255 palata jossain printDef toiminto tai jossain malloc 998 00:48:29,255 --> 00:48:31,830 toiminto, juuri missään mielivaltainen. 999 00:48:31,830 --> 00:48:38,420 >> Mutta vielä fiksu on mitä jos hänellä on käyttäjä palaa täällä. 1000 00:48:38,420 --> 00:48:41,920 Ja sitten aloitat täytäntöönpanosta näitä riviä koodia. 1001 00:48:41,920 --> 00:48:46,610 Joten tässä vaiheessa, käyttäjä voi syöttää mitä hän haluaa tälle alueelle. 1002 00:48:46,610 --> 00:48:52,210 Ja hän on täydellinen hallinta yli oman ohjelman. 1003 00:48:52,210 --> 00:48:53,460 Kysymyksiä siitä? 1004 00:48:53,460 --> 00:48:56,380 1005 00:48:56,380 --> 00:49:00,970 Joten seuraava kysymys on valmis uudelleen toteutus foo siten, 1006 00:49:00,970 --> 00:49:02,620 että se ei enää vaarassa. 1007 00:49:02,620 --> 00:49:03,870 >> Niin siellä pari tapaa olisit voinut tehdä tämän. 1008 00:49:03,870 --> 00:49:10,900 1009 00:49:10,900 --> 00:49:13,330 Meillä on vielä c vain on pituuden 12. 1010 00:49:13,330 --> 00:49:16,480 Olet olisivat saattaneet muuttaa tätä osana ratkaisua. 1011 00:49:16,480 --> 00:49:18,930 Lisäsimme myös tarkistaa, jotta Varmista baari ei ollut null. 1012 00:49:18,930 --> 00:49:24,460 Vaikka et tarvitse että täydet pisteet. 1013 00:49:24,460 --> 00:49:27,690 Joten me tarkastamme ensin merkkijonon pituus bar. 1014 00:49:27,690 --> 00:49:31,650 Jos se on yli 12, niin eivät itse tehdä kopio. 1015 00:49:31,650 --> 00:49:33,010 Joten se on yksi tapa vahvistaa sitä. 1016 00:49:33,010 --> 00:49:36,750 >> Toinen tapa vahvistaa on sen sijaan ottaa c vain olla pituudeltaan 12, on se 1017 00:49:36,750 --> 00:49:39,310 olla pituudeltaan strlen (bar). 1018 00:49:39,310 --> 00:49:43,370 Toinen tapa vahvistaa on todella vain palata. 1019 00:49:43,370 --> 00:49:46,690 Joten jos sinulla oli juuri päässyt eroon kaikista Tässä, jos olisit juuri poistanut kaikki 1020 00:49:46,690 --> 00:49:51,830 riviä koodia, olisit saanut täydet pisteet, sillä tämä toiminto 1021 00:49:51,830 --> 00:49:54,150 ei oikeastaan ​​mitään aikaiseksi. 1022 00:49:54,150 --> 00:49:57,650 Se kopioimalla komentoriviltä argumentti johonkin array 1023 00:49:57,650 --> 00:49:59,960 sen paikalliset pinokehyksen. 1024 00:49:59,960 --> 00:50:01,310 Ja sitten asia on palaamassa. 1025 00:50:01,310 --> 00:50:04,020 Ja mitä se aikaan on mennyt. 1026 00:50:04,020 --> 00:50:09,740 Joten paluu oli myös riittävä tapa saada täydet pisteet. 1027 00:50:09,740 --> 00:50:13,425 >> DAVID J. MALAN: Ei aivan henkeä kysymys, mutta hyväksyttävää kohti 1028 00:50:13,425 --> 00:50:15,580 spec kuitenkin. 1029 00:50:15,580 --> 00:50:18,260 >> ROB BOWDEN: Kysymyksiä mitään siitä? 1030 00:50:18,260 --> 00:50:22,270 Yksi asia, että olet ainakin tarvitaan on koota koodia. 1031 00:50:22,270 --> 00:50:24,810 Joten vaikka teknisesti et ole haavoittuvaisia, jos koodia ei 1032 00:50:24,810 --> 00:50:29,130 koota, emme hyväksy sitä. 1033 00:50:29,130 --> 00:50:31,350 Ei kysymyksiä? 1034 00:50:31,350 --> 00:50:33,320 OK. 1035 00:50:33,320 --> 00:50:34,580 >> DAVID J. MALAN: Haluatko sanoa tämän otsikon? 1036 00:50:34,580 --> 00:50:37,230 >> ROB BOWDEN: Ei. 1037 00:50:37,230 --> 00:50:40,470 >> DAVID J. MALAN: Joten tämä, tämä oli joko hyvä uutinen tai huono uutinen. 1038 00:50:40,470 --> 00:50:43,870 Tämä on kirjaimellisesti sama ongelma kuin ensimmäinen tietokilpailu. 1039 00:50:43,870 --> 00:50:46,140 Ja se on lähes sama ongelma pset1. 1040 00:50:46,140 --> 00:50:49,980 Mutta se oli tarkoituksella yksinkertaistettu olevan yksinkertaisempi pyramidi, joka voi olla 1041 00:50:49,980 --> 00:50:52,330 ratkaistu hieman yksinkertaisempi iterointia. 1042 00:50:52,330 --> 00:50:55,680 Ja oikeastaan, mitä olimme tulossa at tässä ei ollut niinkään logiikkaa, 1043 00:50:55,680 --> 00:50:58,100 koska luultavasti tässä vaiheessa, olet mukavampaa kuin olit 1044 00:50:58,100 --> 00:51:01,850 viikolla yksi silmukoita tai miksi silmukoita, mutta todella erottaa toisistaan, että 1045 00:51:01,850 --> 00:51:04,790 olet hieman mukava ajatus, että PHP ei ole vain siitä, mitä 1046 00:51:04,790 --> 00:51:05,290 ohjelmointi. 1047 00:51:05,290 --> 00:51:07,820 Se voi todella käyttää kieltä kirjoittaa komentoriviltä ohjelmia. 1048 00:51:07,820 --> 00:51:10,060 >> Ja todellakin, se mitä yritimme kiinnittää huomiota. 1049 00:51:10,060 --> 00:51:12,060 Tämä on komentoriviltä PHP-ohjelma. 1050 00:51:12,060 --> 00:51:16,690 Joten C-koodia täällä, kun oikea C, ei korjata PHP. 1051 00:51:16,690 --> 00:51:17,940 Mutta koodi todella on sama. 1052 00:51:17,940 --> 00:51:21,720 Jos vertaa ratkaisuja Quiz 0 vastaan ​​Quiz 1, huomaat, että 1053 00:51:21,720 --> 00:51:25,630 se on lähes identtinen, lukuun ottamatta jotkut dollarin merkkejä ja 1054 00:51:25,630 --> 00:51:27,250 puuttuessa tietotyyppi. 1055 00:51:27,250 --> 00:51:31,720 Erityisesti jos me katsomaan täällä, näet, että me kerrata tässä 1056 00:51:31,720 --> 00:51:33,730 tapauksessa 1 läpi 7. 1057 00:51:33,730 --> 00:51:34,910 >> Olisimme voineet tehdä sen 0-indeksi. 1058 00:51:34,910 --> 00:51:37,320 Mutta joskus, mielestäni se on vain henkisesti helpompi miettiä asioita 1059 00:51:37,320 --> 00:51:38,200 1-7. 1060 00:51:38,200 --> 00:51:40,300 Jos haluat yhden korttelin, sitten kaksi lohkot, sitten kolme, sitten 1061 00:51:40,300 --> 00:51:41,770 dot, piste, piste seitsemän. 1062 00:51:41,770 --> 00:51:45,960 Olemme j alustetaan 1 ja sitten luotan jopa i. 1063 00:51:45,960 --> 00:51:48,150 Ja täällä kaikki on muuten samanlainen. 1064 00:51:48,150 --> 00:51:49,790 Mutta huomionarvoisia ovat pari asiaa. 1065 00:51:49,790 --> 00:51:53,230 Annamme sinulle nämä kaksi riviä, tämä ensin yksi, goofily nimettiin shebang 1066 00:51:53,230 --> 00:51:54,560 terävät bang. 1067 00:51:54,560 --> 00:51:58,770 Ja että vain määrittää polun, kansio, jossa ohjelma voi olla 1068 00:51:58,770 --> 00:52:02,160 totesi, että haluat käyttää tulkita tämän tiedoston. 1069 00:52:02,160 --> 00:52:04,710 >> Ja sitten linja jälkeen, ja tarkoittaa tietenkin syötä PHP-tilaan. 1070 00:52:04,710 --> 00:52:07,740 Ja linja alareunaan tarkoittaa exit PHP tilassa. 1071 00:52:07,740 --> 00:52:09,740 Ja tämä toimii, yleisesti, ja tulkita kielillä. 1072 00:52:09,740 --> 00:52:14,370 Se on tavallaan ärsyttävää jos kirjoitat ohjelman tiedosto nimeltä foo.php. 1073 00:52:14,370 --> 00:52:17,320 Ja sitten käyttäjien tarvitsee vain muistaa, OK, ohjelman suorittamiseen, I 1074 00:52:17,320 --> 00:52:22,320 täytyy kirjoittaa "php tilaa foo.php." Laji harmittaa jos ei muuta. 1075 00:52:22,320 --> 00:52:25,270 Ja se paljastaa myös, että ohjelma on kirjoitettu PHP, joka ei ole kaikkien 1076 00:52:25,270 --> 00:52:27,060 että valaisevat käyttäjälle. 1077 00:52:27,060 --> 00:52:30,100 >> Joten voit poistaa. Php kokonaan muistamme luento. 1078 00:52:30,100 --> 00:52:35,690 Ja voit itse tehdä. / Foo jos olet chmodded sitä tekemällä siitä 1079 00:52:35,690 --> 00:52:36,500 executable. 1080 00:52:36,500 --> 00:52:39,630 Joten chmod + x foo olisi tehnyt niin. 1081 00:52:39,630 --> 00:52:41,460 Ja jos sinulla on myös lisätä roska täällä. 1082 00:52:41,460 --> 00:52:45,320 Mutta oikeasti, ongelma oli saada at tulostaa jotain tällaista. 1083 00:52:45,320 --> 00:52:51,100 Ei HTML, ei C-koodia varmasti, vain joitakin PHP. 1084 00:52:51,100 --> 00:52:54,100 Joten Milo palasi ongelmatilanteissa 25. 1085 00:52:54,100 --> 00:52:58,050 Ja 25, saitte seuraavan luuranko-koodi, joka oli 1086 00:52:58,050 --> 00:52:59,730 melko yksinkertaisia ​​web-sivulle. 1087 00:52:59,730 --> 00:53:04,230 Ja mehukas osa HTML-viisas laski täällä, missä meillä on rungon sisältä 1088 00:53:04,230 --> 00:53:09,160 lomake, jossa on yksilöllinen tunnus tuotantopanosten jonka sisällä oli kaksi tuloa, yksi 1089 00:53:09,160 --> 00:53:11,950 idean nimi yksi joiden ajatus-painiketta. 1090 00:53:11,950 --> 00:53:14,240 >> Ensimmäinen oli kirjoittaa tekstiä, toisen tyypin lähettävät. 1091 00:53:14,240 --> 00:53:16,930 Ja niin me annoimme teille, oikeastaan ​​enemmän ainesosia kuin mitä tarvitaan, juuri niin 1092 00:53:16,930 --> 00:53:19,230 te oli mahdollisuuksia, joita Tämän ongelman ratkaisemiseksi. 1093 00:53:19,230 --> 00:53:21,130 Sinun ei ehdottomasti tarvitse kaikki nämä tunnukset. 1094 00:53:21,130 --> 00:53:23,580 Mutta sen avulla voit ratkaista sitä eri tavoin. 1095 00:53:23,580 --> 00:53:27,050 Ja ylös huipulla, huomaa, että Tavoitteena oli käynnistää 1096 00:53:27,050 --> 00:53:27,960 ikkuna näin - 1097 00:53:27,960 --> 00:53:28,780 Hei, Milo! - 1098 00:53:28,780 --> 00:53:31,270 pop up-selaimen avulla Super yksinkertainen, jos 1099 00:53:31,270 --> 00:53:33,190 ei ruma, hälytystoiminto. 1100 00:53:33,190 --> 00:53:37,480 Ja niin lopulta tämä kuihtuu käsitteellisesti jotenkin kuuntelee 1101 00:53:37,480 --> 00:53:41,290 lausumat muodossa client-side , Ei server-side, jotenkin 1102 00:53:41,290 --> 00:53:45,640 vastata, että näkökannan tarttumalla Arvo, joka kirjoitetaan 1103 00:53:45,640 --> 00:53:50,120 sisään nimen kenttään ja se näytetään kielellä elin hälytys. 1104 00:53:50,120 --> 00:53:53,460 >> Joten yksi tapa voit tehdä tämä on kanssa jQuery, joka näyttää hieman 1105 00:53:53,460 --> 00:53:56,880 rakenteeltaan hämmentävää aluksi. 1106 00:53:56,880 --> 00:54:00,760 Voit tehdä tämän kanssa puhdasta DOM-koodi - document.getelement ID. 1107 00:54:00,760 --> 00:54:02,530 Mutta katsotaanpa katsomaan tätä versiota. 1108 00:54:02,530 --> 00:54:05,110 Minulla on pari tärkeää linjat ensin. 1109 00:54:05,110 --> 00:54:09,460 Joten meillä on tämä linja, joka on identtinen, mitä olet ehkä nähnyt 1110 00:54:09,460 --> 00:54:13,830 vuonna, uskon, form2.html luokan viikolla 9. 1111 00:54:13,830 --> 00:54:16,960 Ja tämä on vain sanoa, suorita seuraava koodi, kun 1112 00:54:16,960 --> 00:54:18,430 asiakirja on valmis. 1113 00:54:18,430 --> 00:54:21,770 Tämä on tärkeää vain siksi, HTML sivut luetaan ylhäältä 1114 00:54:21,770 --> 00:54:23,280 alhaalta, vasemmalta oikealle. 1115 00:54:23,280 --> 00:54:27,910 >> Ja siksi, jos yrität tehdä jotain koodin tänne jossain DOM 1116 00:54:27,910 --> 00:54:31,560 elementti, jotkut HTML-tunniste, se alas täällä, teet sen liian aikaisin, 1117 00:54:31,560 --> 00:54:34,220 koska tämä ei ole edes luettu muistiin. 1118 00:54:34,220 --> 00:54:37,740 Joten sanon tämän document.ready line, me sanomme, 1119 00:54:37,740 --> 00:54:39,040 tässä hieman koodia, selain. 1120 00:54:39,040 --> 00:54:42,440 Mutta eivät suorita tätä kunnes koko asiakirja on valmis, että on DOM 1121 00:54:42,440 --> 00:54:44,320 puu olemassa muistissa. 1122 00:54:44,320 --> 00:54:47,110 Tämä yksi on hieman yksinkertaista, jos syntaktisesti 1123 00:54:47,110 --> 00:54:51,890 vähän erilainen, jos sanon, tartu HTML-elementti, jonka ainutlaatuinen 1124 00:54:51,890 --> 00:54:53,560 tunniste on tuloa. 1125 00:54:53,560 --> 00:54:56,220 Sitähän hash-tunniste tarkoittaa, yksilöllinen tunnus. 1126 00:54:56,220 --> 00:54:58,070 Ja sitten soitan. Lähetä. 1127 00:54:58,070 --> 00:55:01,660 >> Joten. Esittää tässä funktio, toisin tunnetaan menetelmä, joka on 1128 00:55:01,660 --> 00:55:05,850 sisällä objektin vasen puolella, että en korosta. 1129 00:55:05,850 --> 00:55:08,990 Joten jos luulet tuotantopanosten esine muistiin - ja se todellakin on. 1130 00:55:08,990 --> 00:55:10,440 Se solmu puussa - 1131 00:55:10,440 --> 00:55:16,580 . Esittää keinoja, kun tämän lomakkeen tämä tunnus on toimitettu, suorita 1132 00:55:16,580 --> 00:55:17,700 seuraava koodi. 1133 00:55:17,700 --> 00:55:20,290 En välitä mitä nimi toiminto on olen täytäntöönpanosta. 1134 00:55:20,290 --> 00:55:23,760 Joten tässä olen käyttäen, kuten ennen, mikä on kutsutaan lambda-toiminto tai 1135 00:55:23,760 --> 00:55:24,720 Nimetön toiminto. 1136 00:55:24,720 --> 00:55:27,640 Se ei ole ollenkaan älyllisesti mielenkiintoinen muuta kuin se ei ole nimeä, 1137 00:55:27,640 --> 00:55:30,220 mikä on hienoa, jos olet vain ikinä kutsua sitä kerran. 1138 00:55:30,220 --> 00:55:34,490 Ja sisällä on olen itse hoitaa jättämisen muodossa. 1139 00:55:34,490 --> 00:55:36,810 Haluan ensin julistaa muuttuja nimeltään arvo. 1140 00:55:36,810 --> 00:55:40,610 Ja mitä sitten on vaikutus tämän korostettu osa täällä nyt? 1141 00:55:40,610 --> 00:55:44,755 Mitä tämä tekemistä korkeatasoinen minulle? 1142 00:55:44,755 --> 00:55:48,539 >> Yleisö: Se saa arvon, joka Käyttäjä ei itse HTML alla. 1143 00:55:48,539 --> 00:55:50,920 Se saa että tunnus ja sitten toteaa sen arvoa. 1144 00:55:50,920 --> 00:55:51,590 >> DAVID J. MALAN: Aivan. 1145 00:55:51,590 --> 00:55:54,300 Se tarttuu solmu, jonka ainutlaatuinen tunniste on nimi. 1146 00:55:54,300 --> 00:55:56,900 Se saa arvon osalta, joista on, oletettavasti, mitä käyttäjä 1147 00:55:56,900 --> 00:55:58,190 kirjoituskoneella itseään. 1148 00:55:58,190 --> 00:56:01,020 Ja sitten se tallentaa että muuttuja nimeltä arvoa. 1149 00:56:01,020 --> 00:56:03,720 Sivuhuomautuksena, sinulla voisi olla myös tehnyt tätä hieman eri tavalla. 1150 00:56:03,720 --> 00:56:09,250 Täysin hyväksyttävää tekemällä jotain valhe var arvo saa 1151 00:56:09,250 --> 00:56:10,500 document.getElementById. 1152 00:56:10,500 --> 00:56:12,860 1153 00:56:12,860 --> 00:56:15,460 Ja siksi se on vähän ikävä käytä jQuery. 1154 00:56:15,460 --> 00:56:16,710 "Nimi". Arvon. 1155 00:56:16,710 --> 00:56:18,330 1156 00:56:18,330 --> 00:56:19,620 Niin täysin hyväksyttävää. 1157 00:56:19,620 --> 00:56:22,770 Erilaisia ​​tapoja tehdä tätä. jQuery vain taipumus olla hieman täsmällisemmin ja 1158 00:56:22,770 --> 00:56:25,230 varmasti suositumpi keskuudessa ohjelmoijia. 1159 00:56:25,230 --> 00:56:27,590 >> Nyt olen tekemässä hieman järki tarkistaa, koska ongelma 1160 00:56:27,590 --> 00:56:30,820 lausuma me nimenomaan sanoi, jos Käyttäjä ei ole vielä kirjoittanut hänen 1161 00:56:30,820 --> 00:56:32,580 Nimi, älä näytä hälytyksiä. 1162 00:56:32,580 --> 00:56:35,390 Mutta voit tarkistaa, että vain tarkistamalla tyhjä merkkijono 1163 00:56:35,390 --> 00:56:37,850 quote-lainaus jos on mitään todella olemassa. 1164 00:56:37,850 --> 00:56:40,880 Mutta jos se ei ole sama kuin quote-lainaus, Haluan soittaa hälytykset. 1165 00:56:40,880 --> 00:56:45,610 Ja mielenkiintoinen osa tässä on se, että käytämme plus toimija, joka 1166 00:56:45,610 --> 00:56:48,130 tekee mitä JavaScript? 1167 00:56:48,130 --> 00:56:48,740 KETJUTA. 1168 00:56:48,740 --> 00:56:50,690 Joten se on kuin PHPs dot operaattori. 1169 00:56:50,690 --> 00:56:52,820 Sama idea, hieman eri syntaksia. 1170 00:56:52,820 --> 00:56:55,280 Ja olen vain luoda merkkijono, joka näit kuvakaappaus - 1171 00:56:55,280 --> 00:56:57,750 Hei, niin ja niin. 1172 00:56:57,750 --> 00:56:59,200 >> Ja sitten viimeistä yksityiskohtaa on tämä. 1173 00:56:59,200 --> 00:57:04,970 Miksi return false sisällä Tämän Nimetön toiminto? 1174 00:57:04,970 --> 00:57:07,420 >> Yleisö: Ei ole arvoa. 1175 00:57:07,420 --> 00:57:09,380 Laitat sen muodossa. 1176 00:57:09,380 --> 00:57:12,320 1177 00:57:12,320 --> 00:57:16,730 Se vain kertoo, jos arvo ei ole yhtä tyhjä, niin tee se. 1178 00:57:16,730 --> 00:57:20,040 1179 00:57:20,040 --> 00:57:20,940 Oli tyhjä tätä väitettä. 1180 00:57:20,940 --> 00:57:21,170 >> DAVID J. MALAN: OK. 1181 00:57:21,170 --> 00:57:21,640 Kuitenkin varovainen. 1182 00:57:21,640 --> 00:57:22,830 Ei kukaan muu täällä. 1183 00:57:22,830 --> 00:57:25,510 Ja että paluu vääriä ulkopuolella ja jos olosuhteet. 1184 00:57:25,510 --> 00:57:29,470 Joten tämä korostetun rivin, return false, toteuttaa mitä tahansa, kun 1185 00:57:29,470 --> 00:57:32,310 lomake lähetetään. 1186 00:57:32,310 --> 00:57:36,810 Mitä palaavat vääriä sisäosat Tapahtumakäsittelijän kuten sitä kutsutaan, 1187 00:57:36,810 --> 00:57:38,450 kyseiseen tapahtumaan ollessa jättämisestä? 1188 00:57:38,450 --> 00:57:42,350 1189 00:57:42,350 --> 00:57:44,470 >> Yleisö: Koska se tapahtuu vain kerran. 1190 00:57:44,470 --> 00:57:45,320 >> DAVID J. MALAN: tapahtuu vain kerran. 1191 00:57:45,320 --> 00:57:46,821 Ei aivan. 1192 00:57:46,821 --> 00:57:47,292 Joo? 1193 00:57:47,292 --> 00:57:50,589 >> Yleisö: Se estää lomakkeen toimittavat oletustoimintaa, 1194 00:57:50,589 --> 00:57:52,480 joka tekisi sivun reload. 1195 00:57:52,480 --> 00:57:53,110 >> DAVID J. MALAN: Aivan. 1196 00:57:53,110 --> 00:57:56,490 Joten olen ylikuormitusta aikavälillä esittää täällä, koska minä sanon, muoto on 1197 00:57:56,490 --> 00:57:57,670 esittämisestä. 1198 00:57:57,670 --> 00:58:02,240 Mutta kuten ehdotatte, se ei todellisuudessa ole jätetty tosi HTTP tavalla. 1199 00:58:02,240 --> 00:58:06,870 Kun valitset Lähetä, koska meidän onsubmit käsittelijä, olemme kuuntelua 1200 00:58:06,870 --> 00:58:09,040 että lomakkeen lähettäminen niin sanotusti. 1201 00:58:09,040 --> 00:58:11,290 Me sitten tekee meidän juttu JavaScript-koodin. 1202 00:58:11,290 --> 00:58:14,070 Mutta olen tietoisesti palaamassa vääriä, sillä se, mitä en halua tapahtuvan 1203 00:58:14,070 --> 00:58:18,430 Sekunnin murto myöhemmin on koko lomake itse toimitetaan web 1204 00:58:18,430 --> 00:58:22,800 palvelimelle keskeinen arvo pareja muuttamalla URL olla jotain 1205 00:58:22,800 --> 00:58:26,180 q = kissoja tai mitä teimme, esimerkiksi luokassa. 1206 00:58:26,180 --> 00:58:29,640 En halua että näin tapahtuu, koska ei ole palvelin kuuntelee tätä 1207 00:58:29,640 --> 00:58:30,690 lomakkeen lähettäminen. 1208 00:58:30,690 --> 00:58:32,320 Se on puhtaasti tapahtuu JavaScript-koodia. 1209 00:58:32,320 --> 00:58:35,760 Ja siksi en edes ole toiminta määritteen minun muodossa, koska olen 1210 00:58:35,760 --> 00:58:38,870 aio tähän kohteeseen koskaan mene palvelimelle. 1211 00:58:38,870 --> 00:58:40,780 >> Joten se on toimitettu. 1212 00:58:40,780 --> 00:58:44,340 Mutta emme kuuntelua, että lomake esittämisen ja estää oletuksena 1213 00:58:44,340 --> 00:58:47,477 käyttäytyminen, joka on todella mennä aina palvelimelle. 1214 00:58:47,477 --> 00:58:48,730 >> Yleisö: niin pitää se client-side. 1215 00:58:48,730 --> 00:58:49,780 >> DAVID J. MALAN: Keeping se client-side. 1216 00:58:49,780 --> 00:58:51,030 Aivan oikein. 1217 00:58:51,030 --> 00:58:53,240 1218 00:58:53,240 --> 00:58:55,757 Seuraavaksi oli minun oh MySQL. 1219 00:58:55,757 --> 00:59:00,000 1220 00:59:00,000 --> 00:59:00,430 >> ROB BOWDEN: OK. 1221 00:59:00,430 --> 00:59:04,990 Joten tämä ensimmäinen kysymys oli yleensä karkea ihmisille. 1222 00:59:04,990 --> 00:59:07,270 Vaikka myöhemmin niistä meni paremmin. 1223 00:59:07,270 --> 00:59:12,260 Joten sinulla oli valittava oikeat tiedot tyyppejä molemmat näistä sarakkeita. 1224 00:59:12,260 --> 00:59:17,750 Ja molemmat on joitakin asioita heille, että 1225 00:59:17,750 --> 00:59:20,620 tekevät valinnan vaikeaksi. 1226 00:59:20,620 --> 00:59:24,430 Joten int ei ollut voimassa kirjoita numeron. 1227 00:59:24,430 --> 00:59:29,410 Syynä on 12-numeroinen tunnus numero, int ei ole tarpeeksi suuri 1228 00:59:29,410 --> 00:59:31,070 tallentaa yhteensä numeroa. 1229 00:59:31,070 --> 00:59:36,570 Joten voimassa valinta olisi ollut iso int jos satut tietää, että. 1230 00:59:36,570 --> 00:59:42,090 Toinen vaihtoehto olisi voinut olla char alalla pituus 12. 1231 00:59:42,090 --> 00:59:44,560 Joten jompikumpi näistä olisi toiminut. 1232 00:59:44,560 --> 00:59:46,100 Int eivät. 1233 00:59:46,100 --> 00:59:50,170 >> Nyt, tasapaino, muistelen pset7. 1234 00:59:50,170 --> 00:59:59,540 Joten me nimenomaan käytetään desimaali tallentaa osakkeiden arvo tai - 1235 00:59:59,540 --> 01:00:00,550 >> DAVID J. MALAN: Cash. 1236 01:00:00,550 --> 01:00:01,060 >> ROB BOWDEN: Cash. 1237 01:00:01,060 --> 01:00:05,710 Käytimme desimaalin tallentaa määrä rahaa, että käyttäjä on tällä hetkellä. 1238 01:00:05,710 --> 01:00:10,950 Joten syy teemme joka on koska muistan, kellukkeet. 1239 01:00:10,950 --> 01:00:12,480 Ei liukuluku tarkkuus. 1240 01:00:12,480 --> 01:00:18,200 Se ei voi tarkasti tallentaa käteistä arvoja, kuten me haluamme täällä. 1241 01:00:18,200 --> 01:00:23,630 Joten desimaalin pystyy tarkasti tallentaa jotain, sano, kahden desimaalin tarkkuudella. 1242 01:00:23,630 --> 01:00:27,630 Siksi tasapaino, haluamme sen olla desimaalin eikä kellua. 1243 01:00:27,630 --> 01:00:30,230 >> DAVID J. MALAN: Ja myös, liian, vaikka se olisi voinut olla fiksu muissa 1244 01:00:30,230 --> 01:00:32,760 yhteyksissä ajatella, ehkä tämä on mahdollisuus int. 1245 01:00:32,760 --> 01:00:34,420 Otan vain seurata asioita penniä. 1246 01:00:34,420 --> 01:00:38,670 Koska me nimenomaan osoitti oletus arvo on 100,00, että 1247 01:00:38,670 --> 01:00:40,380 Sen voisi vain olla int. 1248 01:00:40,380 --> 01:00:45,310 Ja toinen hienovaraisuus liian kanssa numero oli, että se ei ollut tarkoitus 1249 01:00:45,310 --> 01:00:46,180 olla kompakysymys. 1250 01:00:46,180 --> 01:00:49,860 Mutta muistuttaa, että int MySQL, kuten C, ainakin 1251 01:00:49,860 --> 01:00:51,440 laite, on 32-bittinen. 1252 01:00:51,440 --> 01:00:53,960 Ja vaikka emme odota sinun tietää tarkalleen, kuinka monta numeroa että 1253 01:00:53,960 --> 01:00:56,910 keinot, älä muistaa, että eniten voit edustavat mahdollisesti 1254 01:00:56,910 --> 01:01:00,710 32-bittinen numero on suunnilleen mitä? 1255 01:01:00,710 --> 01:01:02,760 >> Mikä numero me aina sanoa? 1256 01:01:02,760 --> 01:01:04,530 2 32, joka on mitä suurin piirtein? 1257 01:01:04,530 --> 01:01:07,492 1258 01:01:07,492 --> 01:01:08,780 Sinun ei tarvitse tietää tarkasti. 1259 01:01:08,780 --> 01:01:10,580 Mutta karkeasti on hyödyllistä elämässä. 1260 01:01:10,580 --> 01:01:12,200 Se on noin 4 miljardia euroa. 1261 01:01:12,200 --> 01:01:14,430 Joten olemme sanoneet, että muutaman kerran. 1262 01:01:14,430 --> 01:01:16,360 Tiedän, että olen sanonut, että muutaman kerran. 1263 01:01:16,360 --> 01:01:17,670 Ja se on noin 4 miljardia euroa. 1264 01:01:17,670 --> 01:01:19,710 Ja se on hyvä sääntö peukalo tietää. 1265 01:01:19,710 --> 01:01:21,880 Jos sinulla on 8 bittiä, 256 on maaginen numero. 1266 01:01:21,880 --> 01:01:24,160 Jos sinulla on 32 bittiä, 4 miljardia antaa tai ottaa. 1267 01:01:24,160 --> 01:01:27,140 Joten jos vain kirjoittaa 4 miljardia, huomaat, että se on vähemmän numeroita kuin 1268 01:01:27,140 --> 01:01:30,970 12, mikä tarkoittaa, että ei selvästikään tarpeeksi ilmaisukyky kaapata 1269 01:01:30,970 --> 01:01:34,220 12-numeroinen tilinumero. 1270 01:01:34,220 --> 01:01:34,940 >> ROB BOWDEN: OK. 1271 01:01:34,940 --> 01:01:38,520 Joten toisilla meni paremmin. 1272 01:01:38,520 --> 01:01:40,900 Joten olettaa, että pankki asetetaan 20 dollaria kuukaudessa 1273 01:01:40,900 --> 01:01:42,400 Yhtiövastike kaikkiin tileihin. 1274 01:01:42,400 --> 01:01:45,506 Millä SQL-kysely voisi pankki vähentää 20 dollaria jokaisesta luottaa, vaikka 1275 01:01:45,506 --> 01:01:47,520 se johtaa joissakin negatiiviset saldot? 1276 01:01:47,520 --> 01:01:50,380 Joten periaatteessa on neljä päätyyppiä kyselyt - 1277 01:01:50,380 --> 01:01:52,840 lisätä, valitse, päivittää ja poistaa. 1278 01:01:52,840 --> 01:01:56,080 Niin mitä luulemme aio käyttää täällä? 1279 01:01:56,080 --> 01:01:57,000 Päivitä. 1280 01:01:57,000 --> 01:01:58,260 >> Joten katsotaanpa katsomaan. 1281 01:01:58,260 --> 01:02:04,290 1282 01:02:04,290 --> 01:02:05,870 Joten tässä olemme päivittää. 1283 01:02:05,870 --> 01:02:09,900 Mitä taulukossa me päivittää tilejä? 1284 01:02:09,900 --> 01:02:11,670 Joten päivittää tilejä. 1285 01:02:11,670 --> 01:02:15,390 Ja sitten syntaksin sanoo, mitä tileillä me päivittää? 1286 01:02:15,390 --> 01:02:19,520 No, olemme arvostelemassa tasapaino yhtä nykyinen arvo tasapaino miinus 20. 1287 01:02:19,520 --> 01:02:22,860 Joten tämä päivittää kaikki rivit Tilien, vähentämällä 1288 01:02:22,860 --> 01:02:26,250 20 dollaria tasapainoa. 1289 01:02:26,250 --> 01:02:29,260 >> DAVID J. MALAN: Yleinen virhe tässä, vaikka joskus anteeksi sitä, 1290 01:02:29,260 --> 01:02:32,990 oli oikeastaan ​​PHP täällä soittamalla hakutoiminto tai käyttöön 1291 01:02:32,990 --> 01:02:35,460 lainausmerkkeihin kaiken, ei tarvitse olla siellä. 1292 01:02:35,460 --> 01:02:39,780 >> ROB BOWDEN: Muista, että MySQL on erillinen kieli PHP. 1293 01:02:39,780 --> 01:02:42,410 Satumme olla kirjallisesti MySQL PHP. 1294 01:02:42,410 --> 01:02:46,180 Ja PHP on sitten sen lähettämistä yli MySQL-palvelimen. 1295 01:02:46,180 --> 01:02:51,120 Mutta sinun ei tarvitse PHP voidakseen kommunikoida MySQL-palvelimen. 1296 01:02:51,120 --> 01:02:51,730 >> DAVID J. MALAN: Aivan. 1297 01:02:51,730 --> 01:02:54,240 Joten ei muuttujat dollarin merkkejä tulisi olla tässä yhteydessä. 1298 01:02:54,240 --> 01:02:59,550 Se voi vain tehdä kaikki matematiikka tietokannassa itse. 1299 01:02:59,550 --> 01:03:00,080 >> ROB BOWDEN: OK. 1300 01:03:00,080 --> 01:03:01,300 Joten seuraava. 1301 01:03:01,300 --> 01:03:02,731 Onko tämä seuraava? 1302 01:03:02,731 --> 01:03:03,210 Joo. 1303 01:03:03,210 --> 01:03:06,570 Joten mitä SQL-kysely voisi pankki noutaa tilinumerot sen 1304 01:03:06,570 --> 01:03:09,300 rikkain asiakkaita, joilla on saldot yli 1000? 1305 01:03:09,300 --> 01:03:13,280 Joten mikä on neljä päätyyppiä aiomme haluat täällä? 1306 01:03:13,280 --> 01:03:14,430 Valitse. 1307 01:03:14,430 --> 01:03:16,650 Joten haluamme valita. 1308 01:03:16,650 --> 01:03:17,610 Mitä me haluamme valita? 1309 01:03:17,610 --> 01:03:19,380 Mitä sarake haluamme valita? 1310 01:03:19,380 --> 01:03:20,970 Me nimenomaan haluamme Valitse numero. 1311 01:03:20,970 --> 01:03:23,910 Mutta jos olet sanonut tähden, me myös, että. 1312 01:03:23,910 --> 01:03:25,820 >> Joten valitse numero mitä pöytään? 1313 01:03:25,820 --> 01:03:26,640 Tilit. 1314 01:03:26,640 --> 01:03:28,370 Ja sitten kunnon haluamme? 1315 01:03:28,370 --> 01:03:30,140 Jossa tasapaino on suurempi kuin 1000. 1316 01:03:30,140 --> 01:03:31,720 Olemme myös hyväksynyt suuremman tai yhtä suuri kuin. 1317 01:03:31,720 --> 01:03:35,230 1318 01:03:35,230 --> 01:03:36,190 Viimeinen. 1319 01:03:36,190 --> 01:03:42,940 Millä SQL-kysely voisi pankki lähellä, ts. poistaa jokaisen huomioon, että 1320 01:03:42,940 --> 01:03:44,480 on tasapaino 0 dollaria? 1321 01:03:44,480 --> 01:03:47,620 Joten mikä neljästä olemme menossa haluavat käyttää? 1322 01:03:47,620 --> 01:03:48,320 Poista. 1323 01:03:48,320 --> 01:03:50,180 Joten syntaksin? 1324 01:03:50,180 --> 01:03:51,890 Poista mitä pöytään? 1325 01:03:51,890 --> 01:03:53,550 Tilit. 1326 01:03:53,550 --> 01:03:55,790 Ja sitten, millä ehdolla haluamme poistaa - 1327 01:03:55,790 --> 01:03:57,280 jos saldo on nolla. 1328 01:03:57,280 --> 01:04:03,050 Joten poistaa kaikki rivit tilit jos saldo on nolla. 1329 01:04:03,050 --> 01:04:04,300 Kysymyksiä mitään näistä? 1330 01:04:04,300 --> 01:04:08,840 1331 01:04:08,840 --> 01:04:10,260 Haluatko jonoon? 1332 01:04:10,260 --> 01:04:11,200 >> DAVID J. MALAN: Jono opas. 1333 01:04:11,200 --> 01:04:17,110 Joten tässä yksi, me annoimme teille hieman tuttu rakenne, joka selvitimme 1334 01:04:17,110 --> 01:04:20,450 bittinen luokassa rinnalla structs, joka oli tiedot 1335 01:04:20,450 --> 01:04:21,910 rakenne liittyvät hengessä. 1336 01:04:21,910 --> 01:04:24,670 Ero joskin jono on että meidän piti jotenkin muistaa, kuka 1337 01:04:24,670 --> 01:04:27,900 oli jonon, suurissa osittain siten, että voisimme tehdä enemmän 1338 01:04:27,900 --> 01:04:30,530 tehokas käyttö muistia, ainakin jos käytimme array. 1339 01:04:30,530 --> 01:04:35,460 >> Koska muistaa, jos meillä on erilaisia, jos Esimerkiksi, tämä on edessä 1340 01:04:35,460 --> 01:04:38,470 jono, jos saan jonoon täällä, ja sitten joku saa linjassa 1341 01:04:38,470 --> 01:04:42,710 takanani, takanani, takanani, ja yksi henkilö astuu ulos linja, voit 1342 01:04:42,710 --> 01:04:45,930 voisi, kuten näimme joitakin ihmisen vapaaehtoisia luokassa, ovat kaikki 1343 01:04:45,930 --> 01:04:47,100 siirtää tällä tavalla. 1344 01:04:47,100 --> 01:04:50,880 Mutta yleensä, joilla jokainen tehdä jotain ei ole parasta aikaa 1345 01:04:50,880 --> 01:04:54,600 ohjelmassa, koska se tarkoittaa, että algoritmi on käynnissä missä 1346 01:04:54,600 --> 01:04:56,520 asymptoottinen ajoaika? 1347 01:04:56,520 --> 01:04:57,420 Se on lineaarinen. 1348 01:04:57,420 --> 01:04:59,600 >> Ja minusta tuntuu, että on typerää. 1349 01:04:59,600 --> 01:05:02,890 Jos seuraava henkilö on vuorossa seuraava henkilö, joka on tarkoitus mennä 1350 01:05:02,890 --> 01:05:04,660 myymälä, ne eivät kaikki ole liikkua yhdessä. 1351 01:05:04,660 --> 01:05:08,200 Päästä tämä henkilö repelin kun se aika tulee, esimerkiksi. 1352 01:05:08,200 --> 01:05:09,870 Jotta voimme säästää hieman aikaa siellä. 1353 01:05:09,870 --> 01:05:14,840 Ja niin tehdä, että kuitenkin, että keinot että jonon tai 1354 01:05:14,840 --> 01:05:18,060 jonon on menossa edetä asteittain syvemmälle ja syvemmälle 1355 01:05:18,060 --> 01:05:23,340 osaksi array ja lopulta ehkä todella kietoa jos käytämme 1356 01:05:23,340 --> 01:05:25,790 array tallentaa ihmisiä tässä jonossa. 1357 01:05:25,790 --> 01:05:28,390 Joten voit melkein ajatella array pyöreä tiedot 1358 01:05:28,390 --> 01:05:29,880 rakenne siinä mielessä. 1359 01:05:29,880 --> 01:05:33,970 >> Joten jotenkin täytyy seurata koko sitä tai oikeastaan ​​lopussa se 1360 01:05:33,970 --> 01:05:36,250 ja sitten jos alussa on. 1361 01:05:36,250 --> 01:05:39,490 Joten ehdotamme, että ilmoitatte Yksi tällainen jono, kutsuvan 1362 01:05:39,490 --> 01:05:41,330 se q, vain yksi kirjain. 1363 01:05:41,330 --> 01:05:44,570 Sitten ehdotamme, että edessä on alustetaan nollaksi, ja että koko 1364 01:05:44,570 --> 01:05:45,470 alustetaan nollaan. 1365 01:05:45,470 --> 01:05:47,770 >> Joten nyt, ei mitään sisällä jonoa. 1366 01:05:47,770 --> 01:05:50,910 Ja pyydämme sinua täyttämään täytäntöönpanoa enqueue alla 1367 01:05:50,910 --> 01:05:55,250 siten, että toiminto lisää n- loppuun q ja palauttaa sitten totta. 1368 01:05:55,250 --> 01:05:58,690 Mutta jos q on täynnä tai negatiivinen, toiminto pitäisi sen sijaan palauttaa false. 1369 01:05:58,690 --> 01:06:01,060 Ja me annoimme teille pari oletuksia. 1370 01:06:01,060 --> 01:06:04,320 Mutta ne todellisuudessa ole toiminnallisesti asiaa, vain että bool olemassa, 1371 01:06:04,320 --> 01:06:06,690 koska, teknisesti, bool ei olemassa C ellet sisällyttää 1372 01:06:06,690 --> 01:06:07,310 tietyt header-tiedosto. 1373 01:06:07,310 --> 01:06:09,350 Niin että oli vain varmistaa, ettei ollut tämä temppu 1374 01:06:09,350 --> 01:06:10,940 Kysymys sellainen asia. 1375 01:06:10,940 --> 01:06:16,280 >> Joten enqueue ehdotimme näytteessä ratkaisuja toteuttaa seuraavasti. 1376 01:06:16,280 --> 01:06:20,420 Yksi, tarkistamme ensin helppous, matalalla roikkuvat hedelmät. 1377 01:06:20,420 --> 01:06:23,820 Jos jono on täynnä tai numero yrität lisätä on vähemmän 1378 01:06:23,820 --> 01:06:26,380 kuin nolla, jonka totesimme erittely ongelma pitäisi 1379 01:06:26,380 --> 01:06:30,320 ei voida sallia, koska me vain haluamme ei-negatiivisia arvoja, niin kannattaa 1380 01:06:30,320 --> 01:06:31,640 vain return false välittömästi. 1381 01:06:31,640 --> 01:06:33,820 Joten jotkut suhteellisen helppoa virheentarkistukset. 1382 01:06:33,820 --> 01:06:38,720 Jos vaikka haluat lisätä, että todellinen numero, sinun piti tehdä vähän 1383 01:06:38,720 --> 01:06:39,440 Tarkoitan nyt. 1384 01:06:39,440 --> 01:06:41,330 Ja tässä se on vähän ärsyttävää henkisesti, koska sinun täytyy 1385 01:06:41,330 --> 01:06:43,000 selvittää, miten käsitellä kaareva. 1386 01:06:43,000 --> 01:06:46,870 >> Mutta alkiot Ideana se on etua meille on, että ympäröivä 1387 01:06:46,870 --> 01:06:51,480 edellyttää usein modulaarinen aritmeettinen ja mod-operaattori prosenttia puolella, 1388 01:06:51,480 --> 01:06:55,140 jossa voit siirtyä suuremman arvon takaisin nollaan ja sitten yksi ja kaksi ja 1389 01:06:55,140 --> 01:06:58,650 kolme ja sitten takaisin noin nollaan, yksi ja kaksi ja kolme ja niin edelleen 1390 01:06:58,650 --> 01:06:59,380 uudelleen ja uudelleen. 1391 01:06:59,380 --> 01:07:02,880 Joten miten me ehdotamme tehdä tämä on että haluamme indeksinä 1392 01:07:02,880 --> 01:07:05,850 array kutsutaan numerot meidän kokonaislukuja valehdella. 1393 01:07:05,850 --> 01:07:10,740 Mutta sinne, haluamme ensin tehdä koosta riippumatta jono, mutta 1394 01:07:10,740 --> 01:07:14,080 lisätään sitten, että mitä tahansa edessä lista on. 1395 01:07:14,080 --> 01:07:17,880 Ja vaikutus, joka on tehnyt meistä oikeaan asentoon jonossa ja 1396 01:07:17,880 --> 01:07:20,970 oleta, että ensimmäinen henkilö vastaa on alussa, jonka hän tai 1397 01:07:20,970 --> 01:07:24,130 hän ehdottomasti voisi olla, jos me Myös siirtymässä kaikille. 1398 01:07:24,130 --> 01:07:26,710 Mutta olemme vain työllistää itsellemme jos otimme 1399 01:07:26,710 --> 01:07:27,800 että tiettyä polkua. 1400 01:07:27,800 --> 01:07:29,330 >> Jotta voimme pitää sitä suhteellisen yksinkertainen. 1401 01:07:29,330 --> 01:07:32,180 Meillä täytyy muistaa, että me vain lisätty int jonoon. 1402 01:07:32,180 --> 01:07:35,850 Ja sitten me vain palata totta. 1403 01:07:35,850 --> 01:07:38,560 Samaan aikaan dequeue, pyysimme voit tehdä seuraavaa. 1404 01:07:38,560 --> 01:07:42,260 Toteuttaa se siten, että se dequeues, että on Poistaa ja palauttaa, 1405 01:07:42,260 --> 01:07:44,190 int edessä jonossa. 1406 01:07:44,190 --> 01:07:46,410 Voit poistaa int, riittää unohtaa sen. 1407 01:07:46,410 --> 01:07:47,650 Sinun ei tarvitse ohittaa sen vähän. 1408 01:07:47,650 --> 01:07:48,820 Joten se on silti todella olemassa. 1409 01:07:48,820 --> 01:07:51,930 Aivan kuten tiedot kiintolevyltä, me vain sivuutettu se tosiasia, 1410 01:07:51,930 --> 01:07:52,970 että se on nyt siellä. 1411 01:07:52,970 --> 01:07:55,520 Ja jos q on tyhjä, meidän pitäisi sen sijaan palata negatiivinen 1. 1412 01:07:55,520 --> 01:07:56,750 Joten tämä tuntuu mielivaltainen. 1413 01:07:56,750 --> 01:08:01,640 Miksi palata negatiivinen 1 sijasta vääriä? 1414 01:08:01,640 --> 01:08:02,620 Joo. 1415 01:08:02,620 --> 01:08:05,070 >> Yleisö: Q tallentaa positiivisia arvoja. 1416 01:08:05,070 --> 01:08:10,950 Koska sinulla on vain tallentaa positiivisia arvoja Q, negatiivinen on virhe. 1417 01:08:10,950 --> 01:08:11,510 >> DAVID J. MALAN: OK, totta. 1418 01:08:11,510 --> 01:08:14,850 Niin, koska olemme vain säilytykseen positiivinen arvoja tai nolla, niin se on hienoa 1419 01:08:14,850 --> 01:08:18,050 palautettava kielteinen arvo Sentinel arvo, erikoissymboli. 1420 01:08:18,050 --> 01:08:21,630 Mutta olet kirjoittamasta historiaa siellä, koska syy me olemme vain 1421 01:08:21,630 --> 01:08:25,890 paluu ei-negatiivisia arvoja on koska haluamme 1422 01:08:25,890 --> 01:08:27,670 on Sentinel arvoa. 1423 01:08:27,670 --> 01:08:32,617 Joten tarkemmin, miksi ei vain return false virhetapauksissa? 1424 01:08:32,617 --> 01:08:33,099 Joo. 1425 01:08:33,099 --> 01:08:35,510 >> Yleisö: Olet epäonnistui palata kokonaisluku. 1426 01:08:35,510 --> 01:08:36,630 >> DAVID J. MALAN: Aivan. 1427 01:08:36,630 --> 01:08:38,569 Ja tämä on C saa melko rajoittava. 1428 01:08:38,569 --> 01:08:40,590 Jos sanot aiot palata int, sinulla 1429 01:08:40,590 --> 01:08:41,279 palata int. 1430 01:08:41,279 --> 01:08:43,689 Et voi saada hienoja ja palautuvan bool tai float tai 1431 01:08:43,689 --> 01:08:45,040 merkkijono tai jotain. 1432 01:08:45,040 --> 01:08:49,370 Nyt puolestaan ​​JavaScript ja PHP ja joillakin muilla kielillä voi itse asiassa, 1433 01:08:49,370 --> 01:08:51,310 oletko palaamassa eri tyyppisiä arvoja. 1434 01:08:51,310 --> 01:08:54,819 Ja se voi todella olla hyötyä, jos voisit palata positiivinen ints, nollia, 1435 01:08:54,819 --> 01:08:59,439 negatiivinen ints tai vääriä tai null jopa merkitä virhe. 1436 01:08:59,439 --> 01:09:01,890 Mutta meillä ei ole, että monipuolisuutta C. 1437 01:09:01,890 --> 01:09:04,569 >> Joten dequeue, mitä me aikoo tehdä on - 1438 01:09:04,569 --> 01:09:07,350 1439 01:09:07,350 --> 01:09:09,830 >> ROB BOWDEN: Voit palauttaa false. 1440 01:09:09,830 --> 01:09:13,189 Se on vain, että väärä on hash määritellä vääriä nollaan. 1441 01:09:13,189 --> 01:09:16,000 Joten jos palaat vääriä, palaat nolla. 1442 01:09:16,000 --> 01:09:25,470 Ja nolla on voimassa asia meidän jonossa, Kielteisten 1 ei ole, jos 1443 01:09:25,470 --> 01:09:27,000 false sattui olemaan negatiivinen 1. 1444 01:09:27,000 --> 01:09:29,972 Mutta sinun ei pitäisi edes täytyy tietää, että. 1445 01:09:29,972 --> 01:09:32,399 >> DAVID J. MALAN: Tuo miksi en sano sitä. 1446 01:09:32,399 --> 01:09:36,450 >> ROB BOWDEN: Mutta se ei ollut totta että et voi palata vääriä. 1447 01:09:36,450 --> 01:09:37,700 >> DAVID J. MALAN: Toki. 1448 01:09:37,700 --> 01:09:40,920 1449 01:09:40,920 --> 01:09:44,240 Joten dequeue, huomaa hyväksymme mitätöidä argumenttina. 1450 01:09:44,240 --> 01:09:45,479 Ja se johtuu siitä emme ole ohimennen mitään sisään 1451 01:09:45,479 --> 01:09:48,359 Haluamme vain poistaa elementin edessä jonossa. 1452 01:09:48,359 --> 01:09:49,819 Joten miten me saatamme edetä näin? 1453 01:09:49,819 --> 01:09:51,290 No, ensinnäkin, tehdään tämä nopeasti järki tarkistaa. 1454 01:09:51,290 --> 01:09:53,350 Jos jonon koko on 0, siellä ei tehtävää. 1455 01:09:53,350 --> 01:09:54,210 Palata negatiivinen 1. 1456 01:09:54,210 --> 01:09:54,800 Valmis. 1457 01:09:54,800 --> 01:09:56,340 Niin, että muutaman rivin minun ohjelma. 1458 01:09:56,340 --> 01:09:58,180 Joten vain neljä riviä jäljellä. 1459 01:09:58,180 --> 01:10:01,310 >> Joten tässä päätän dekrementoidaan kokoa. 1460 01:10:01,310 --> 01:10:04,620 Ja pienentämällä kokoa tehokkaasti tarkoittaa sitä, että olen unohtanut 1461 01:10:04,620 --> 01:10:06,010 jotain on siellä. 1462 01:10:06,010 --> 01:10:09,910 Mutta minulla on myös päivittää, jos edessä numerot. 1463 01:10:09,910 --> 01:10:11,620 Niin tehdä, että tarvitsen tehdä kaksi asiaa. 1464 01:10:11,620 --> 01:10:16,390 Haluan ensin täytyy muistaa, mitä numero on jonon, 1465 01:10:16,390 --> 01:10:17,860 koska minun täytyy palata, että asia. 1466 01:10:17,860 --> 01:10:20,910 Joten en halua vahingossa unohtaa siitä ja sitten korvata sen. 1467 01:10:20,910 --> 01:10:22,840 Olen juuri menossa muistaa int. 1468 01:10:22,840 --> 01:10:27,310 >> Ja nyt haluan päivittää q.front voidaan q.front +1. 1469 01:10:27,310 --> 01:10:30,070 Joten jos tämä oli ensimmäinen henkilö linja, nyt haluan tehdä plus 1 1470 01:10:30,070 --> 01:10:31,930 osoitat seuraava henkilö linjassa. 1471 01:10:31,930 --> 01:10:33,420 Mutta minun täytyy käsitellä sitä ympäröivä. 1472 01:10:33,420 --> 01:10:37,270 Ja jos kapasiteetti on maailmanlaajuinen vakio, että menee saanen varmistaa 1473 01:10:37,270 --> 01:10:41,140 kuten Osoitan hyvin viimeinen henkilö linja, modulo-operaation tuo 1474 01:10:41,140 --> 01:10:43,840 minut takaisin nollaan jonon. 1475 01:10:43,840 --> 01:10:46,050 Ja joka käsittelee ympäröivä täällä. 1476 01:10:46,050 --> 01:10:48,950 Ja sitten lähden palata n. 1477 01:10:48,950 --> 01:10:51,530 >> Nyt, tarkkaan ottaen, en on julistaa n. 1478 01:10:51,530 --> 01:10:53,880 Minulla ei ollut napata se ja säilytä sitä väliaikaisesti, koska arvo on 1479 01:10:53,880 --> 01:10:54,740 edelleen olemassa. 1480 01:10:54,740 --> 01:10:57,490 Niin voisin vain tehdä oikea aritmeettinen palata entisen johtajan 1481 01:10:57,490 --> 01:10:58,450 jonon. 1482 01:10:58,450 --> 01:11:01,850 Mutta minä vain tuntui, että tämä oli selvempi todella napata int, laita se 1483 01:11:01,850 --> 01:11:04,320 N, ja palata sitten, että selvyyden vuoksi, mutta 1484 01:11:04,320 --> 01:11:05,735 ole ehdottoman välttämätöntä. 1485 01:11:05,735 --> 01:11:09,313 1486 01:11:09,313 --> 01:11:12,130 Psst. 1487 01:11:12,130 --> 01:11:13,410 He kaikki lausuttavia päähäni. 1488 01:11:13,410 --> 01:11:15,940 1489 01:11:15,940 --> 01:11:19,110 >> ROB BOWDEN: Eli ensimmäinen kysymys on binääripuu ongelma. 1490 01:11:19,110 --> 01:11:22,140 Joten ensimmäinen kysymys on, olemme antanut näitä numeroita. 1491 01:11:22,140 --> 01:11:27,160 Ja haluamme jotenkin lisätä ne nämä solmut siten, että se on 1492 01:11:27,160 --> 01:11:30,110 voimassa binäärihakupuu. 1493 01:11:30,110 --> 01:11:36,260 Joten yksi asia muistaa binäärihaku puita on, että se ei ole 1494 01:11:36,260 --> 01:11:39,800 vain, että asia vasemmalle on vähemmän ja asia 1495 01:11:39,800 --> 01:11:41,120 oikeus on suurempi. 1496 01:11:41,120 --> 01:11:44,580 Sen on oltava, että koko puun vasemmalla on vähemmän, ja koko puu 1497 01:11:44,580 --> 01:11:45,740 oikealla on suurempi. 1498 01:11:45,740 --> 01:11:55,260 >> Joten jos laitan 34 täällä huipulla, ja sitten Laitoin 20 täällä, niin se on voimassa niin 1499 01:11:55,260 --> 01:11:56,970 pitkälle, koska 34 täällä. 1500 01:11:56,970 --> 01:11:57,920 20 on menossa vasemmalle. 1501 01:11:57,920 --> 01:11:58,950 Niin, että vähemmän. 1502 01:11:58,950 --> 01:12:03,640 Mutta en voi sitten laittaa 59 täällä, koska vaikka 59 on oikealla puolella 20, 1503 01:12:03,640 --> 01:12:06,140 se on edelleen vasemmalla puolella 34. 1504 01:12:06,140 --> 01:12:10,760 Niin, että rajoitus mielessä, Helpoin tapa lienee ratkaista tämä 1505 01:12:10,760 --> 01:12:14,330 Ongelmana on vain eräänlainen näistä numeroista - 1506 01:12:14,330 --> 01:12:18,720 niin 20, 34, 36, 52, 59, 106. 1507 01:12:18,720 --> 01:12:21,640 Ja asenna ne vasemmalta oikealle. 1508 01:12:21,640 --> 01:12:23,390 >> Joten 20 menee täällä. 1509 01:12:23,390 --> 01:12:24,630 34 menee täällä. 1510 01:12:24,630 --> 01:12:25,830 36 menee täällä. 1511 01:12:25,830 --> 01:12:29,360 52, 59, 106. 1512 01:12:29,360 --> 01:12:34,730 Ja voit myös voinut tajunnut kanssa jotkut kytkemällä ja toteuttamisessa, 1513 01:12:34,730 --> 01:12:38,830 Odota, minulla ei ole tarpeeksi numeroita täyttämään tämän tänne. 1514 01:12:38,830 --> 01:12:42,170 Joten minun täytyy reshift mitä minun reitti huomautus tulee olemaan. 1515 01:12:42,170 --> 01:12:47,490 Mutta huomaa, että kolmessa viimeisessä, jos luet vasemmalta oikealle, se on 1516 01:12:47,490 --> 01:12:48,740 kasvavassa järjestyksessä. 1517 01:12:48,740 --> 01:12:52,150 1518 01:12:52,150 --> 01:12:56,540 >> Joten nyt haluamme julistaa mitä struct tulee olemaan varten 1519 01:12:56,540 --> 01:12:58,300 solmut tässä puussa. 1520 01:12:58,300 --> 01:13:02,720 Mitä me tarvitsemme binääripuun? 1521 01:13:02,720 --> 01:13:05,830 Joten meillä on arvo tyyppiä int, joten jotkut int arvo. 1522 01:13:05,830 --> 01:13:07,220 En tiedä, mitä me kutsutaan se ratkaisu - 1523 01:13:07,220 --> 01:13:08,500 int n. 1524 01:13:08,500 --> 01:13:13,570 Meidän osoitin vasen lapsi ja osoitin oikea lapsi. 1525 01:13:13,570 --> 01:13:17,540 Joten se tulee näyttää tältä. 1526 01:13:17,540 --> 01:13:20,510 Ja se tulee todella näyttävät ennen Milloin kaksinkertaisesti sidottu 1527 01:13:20,510 --> 01:13:25,090 lista tavaraa, joten ilmoitus - 1528 01:13:25,090 --> 01:13:27,860 Aion tarvitse vierittää kaikki Paluumatkalla alas ongelmaan 11. 1529 01:13:27,860 --> 01:13:30,980 1530 01:13:30,980 --> 01:13:36,390 >> Niin huomaa se näyttää identtinen tämän, paitsi me vain sattuvat kutsua näitä 1531 01:13:36,390 --> 01:13:38,590 eri nimiä. 1532 01:13:38,590 --> 01:13:41,440 Meillä on vielä kokonaisluku arvo ja kaksi osoitinta. 1533 01:13:41,440 --> 01:13:44,850 Se on vain, että sen sijaan hoitoon osoittimet viittaavat myös seuraava asia 1534 01:13:44,850 --> 01:13:47,955 ja edellinen asia, olemme hoitoon osoittimet osoittamaan vasen lapsi 1535 01:13:47,955 --> 01:13:49,205 ja oikea lapsi. 1536 01:13:49,205 --> 01:13:57,372 1537 01:13:57,372 --> 01:13:57,860 OK. 1538 01:13:57,860 --> 01:13:59,650 Niin, että meidän struct solmu. 1539 01:13:59,650 --> 01:14:03,920 Ja nyt, ainoa tehtävä meidän toteuttaa tähän on Traverse, joka 1540 01:14:03,920 --> 01:14:08,320 haluamme mennä yli puiden, tulostus ulos arvot puun järjestyksessä. 1541 01:14:08,320 --> 01:14:15,241 >> Joten katson tässä, me haluaisi tulostaa pois 20, 34, 36, 52, 59, ja 106. 1542 01:14:15,241 --> 01:14:17,970 Miten me sen aikaan? 1543 01:14:17,970 --> 01:14:18,890 Joten se on melko samanlainen. 1544 01:14:18,890 --> 01:14:22,910 Jos näit aiemmin tentti ongelma että halusit tulostaa 1545 01:14:22,910 --> 01:14:25,940 koko puun pilkuilla välillä kaikki, se oli itse asiassa jopa 1546 01:14:25,940 --> 01:14:27,320 helpompaa kuin se. 1547 01:14:27,320 --> 01:14:30,950 Joten tässä on ratkaisu. 1548 01:14:30,950 --> 01:14:33,110 Tämä oli huomattavasti helpompaa jos teit sen rekursiivisesti. 1549 01:14:33,110 --> 01:14:36,650 En tiedä, jos joku yritti tehdä se iteratiivisesti. 1550 01:14:36,650 --> 01:14:38,340 >> Mutta ensin meillä on perusta tapauksessa. 1551 01:14:38,340 --> 01:14:39,660 Entä jos juuri on nolla? 1552 01:14:39,660 --> 01:14:40,610 Sitten me vain aio palata. 1553 01:14:40,610 --> 01:14:42,300 Emme halua tulostaa mitään. 1554 01:14:42,300 --> 01:14:45,940 Else aiomme kulkea rekursiivisesti alas. 1555 01:14:45,940 --> 01:14:48,140 Tulosta koko vasemman alipuun. 1556 01:14:48,140 --> 01:14:51,440 Joten tulostaa kaiken vähemmän kuin minun nykyinen arvo. 1557 01:14:51,440 --> 01:14:53,930 Ja sitten aion tulostaa itse. 1558 01:14:53,930 --> 01:14:57,310 Ja sitten aion recurse alas minun koko oikea alipuu, joten kaikki 1559 01:14:57,310 --> 01:14:58,810 suurempi kuin minun arvo. 1560 01:14:58,810 --> 01:15:03,870 Ja tämä on menossa painoon ulos kaikki kunnossa. 1561 01:15:03,870 --> 01:15:05,860 Kysymyksiä siitä, miten tämä todella aikaan, että? 1562 01:15:05,860 --> 01:15:09,892 1563 01:15:09,892 --> 01:15:12,545 >> Yleisö: Minulla on kysymys on [kuultavissa]. 1564 01:15:12,545 --> 01:15:15,090 1565 01:15:15,090 --> 01:15:23,550 >> ROB BOWDEN: Joten yksi tapa lähestyä mitään rekursiivinen ongelma on ajatelkaa 1566 01:15:23,550 --> 01:15:26,275 siitä kuin sinun on ajateltava kaikista nurkassa tapauksissa. 1567 01:15:26,275 --> 01:15:32,150 1568 01:15:32,150 --> 01:15:38,110 Mieti siis, että haluamme tulosta tämä kokonaisen puun. 1569 01:15:38,110 --> 01:15:42,030 Joten kaikki aiomme keskittyä on tässä solmu - 1570 01:15:42,030 --> 01:15:43,740 36. 1571 01:15:43,740 --> 01:15:47,420 Rekursiokutsua, me teeskennellä nämä vain toimivat. 1572 01:15:47,420 --> 01:15:54,000 Joten tässä, tämä rekursiivinen kutsu poikittainen, me edes ajattelematta 1573 01:15:54,000 --> 01:15:58,640 siitä, vain liikkumisesta vasen kolme, kuvitella, että jo tulostaa 20 1574 01:15:58,640 --> 01:16:00,730 ja 34 meille. 1575 01:16:00,730 --> 01:16:03,350 Ja sitten kun me lopulta rekursiivisesti soittaa Traverse on 1576 01:16:03,350 --> 01:16:07,890 oikeus, joka oikein tulostaa 52, 59 ja 106 meille. 1577 01:16:07,890 --> 01:16:13,620 >> Joten koska tämä voi tulostaa 20, 34, ja muut voivat tulostaa 52, 59, 108, 1578 01:16:13,620 --> 01:16:17,180 kaikki mitä meidän tarvitsee pystyä tekemään on tulosta ourself keskellä sitä. 1579 01:16:17,180 --> 01:16:21,250 Joten tulostaa kaikki ennen meitä. 1580 01:16:21,250 --> 01:16:27,710 Tulosta itsestämme, joten nykyinen solmu tulosta 36, säännöllinen printf, ja sitten 1581 01:16:27,710 --> 01:16:31,170 tulostaa kaiken meidän jälkeemme. 1582 01:16:31,170 --> 01:16:32,730 >> DAVID J. MALAN: Täällä rekursio saa todella kaunista. 1583 01:16:32,730 --> 01:16:36,270 On tämä uskomaton harppaus uskosta, jossa teet pienimmätkin vähän työtä. 1584 01:16:36,270 --> 01:16:38,460 Ja sitten annat jonkun muu hoitaa loput. 1585 01:16:38,460 --> 01:16:40,180 Ja että joku muu on, ironista kyllä, voit. 1586 01:16:40,180 --> 01:16:44,260 1587 01:16:44,260 --> 01:16:48,360 Niin vakavia tonttu pistettä, jos selaat ylös kysymykset - 1588 01:16:48,360 --> 01:16:50,530 >> ROB BOWDEN: On kysymyksiä? 1589 01:16:50,530 --> 01:16:53,490 >> DAVID J. MALAN: Ja alas vähän numerot, ei kukaan tiedä, missä 1590 01:16:53,490 --> 01:16:55,190 nämä luvut tulevat? 1591 01:16:55,190 --> 01:16:56,610 >> ROB BOWDEN: Minulla ei kirjaimellisesti ole aavistustakaan. 1592 01:16:56,610 --> 01:16:59,794 >> DAVID J. MALAN: Ne näkyvät koko tietokilpailu. 1593 01:16:59,794 --> 01:17:01,150 >> Yleisö: Ovatko ne samat numerot? 1594 01:17:01,150 --> 01:17:01,910 >> DAVID J. MALAN: Nuo luvut. 1595 01:17:01,910 --> 01:17:03,260 Pikku pääsiäismunia. 1596 01:17:03,260 --> 01:17:08,100 Joten ne teistä katsomassa netissä kotiin, jos voit kertoa meille sähköpostitse 1597 01:17:08,100 --> 01:17:12,680 heads@CS50.net mitä merkitystä Näiden toistuvien kuusi numeroa ovat 1598 01:17:12,680 --> 01:17:18,560 koko Quiz 1, me suihku sinulle hämmästyttävän huomiota lopullisessa 1599 01:17:18,560 --> 01:17:21,610 luento ja stressipallo. 1600 01:17:21,610 --> 01:17:25,460 1601 01:17:25,460 --> 01:17:27,790 Kiva, hienovarainen. 1602 01:17:27,790 --> 01:17:29,570 >> ROB BOWDEN: Viimeisiä kysymykset noin mitään tietovisa? 1603 01:17:29,570 --> 01:17:32,608