1 00:00:00,000 --> 00:00:02,270 >> [Apskats: Quiz 1] 2 00:00:02,270 --> 00:00:04,620 [Ali Nahm, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Harvard University] 3 00:00:04,620 --> 00:00:07,660 [Tas ir CS50.] [CS50.TV] 4 00:00:07,660 --> 00:00:11,610 [Lucas Freitas] Laipni lūdzam ikvienu. Tas ir pārskats par viktorīnas 1. 5 00:00:11,610 --> 00:00:15,040 Tāpat kā atruna, tas ir - es domāju, mēs esam gatavojas izmēģināt, lai segtu 6 00:00:15,040 --> 00:00:17,770 tikpat daudz materiāla, cik vien iespējams, bet tas nenozīmē, ka 7 00:00:17,770 --> 00:00:20,780 Mēs ejam, lai segtu visas lietas, kas var būt viktorīnā 1. 8 00:00:20,780 --> 00:00:25,270 Tāpēc pārliecinieties, ka jūs arī to apskatīt lekciju, sekcijas, viss, kas ir iespējams. 9 00:00:25,270 --> 00:00:28,240 Viktorīna 1 būs trešdien, nākamo trešdien. 10 00:00:28,240 --> 00:00:33,800 Tāpēc pārliecinieties, lai izpētītu. Tas būs diezgan daudz, tāpat kā pirmajam viktorīnu 11 00:00:33,800 --> 00:00:36,390 par tā formātu, bet tas, iespējams, būs daudz grūtāk. 12 00:00:36,390 --> 00:00:39,600 Vismaz pagājušajā gadā, kad man bija 50, es domāju, ka tas bija daudz grūtāk. 13 00:00:39,600 --> 00:00:42,410 Tāpēc mācīties daudz. 14 00:00:42,410 --> 00:00:45,190 >> Es esmu gatavojas segt datu struktūras un Huffman kodēšanas. 15 00:00:45,190 --> 00:00:47,910 Tas ir kaut kas, ka daudzi cilvēki domā, ir sarežģīta, 16 00:00:47,910 --> 00:00:51,930 bet es esmu gatavojas, lai mēģinātu padarīt to pēc iespējas vienkāršāk. 17 00:00:51,930 --> 00:00:56,330 Pirmkārt, to, ko mēs vēlamies, lai jūs guys zināt par viktorīnu 1 ir 18 00:00:56,330 --> 00:01:00,970 saprastu konceptuālos apraksti par katru no datu struktūras, ka es esmu gatavojas sniegt. 19 00:01:00,970 --> 00:01:03,960 Tas nozīmē, ka jums nav faktiski 20 00:01:03,960 --> 00:01:07,020 īstenot hash tabulu jūsu viktorīnā 1. 21 00:01:07,020 --> 00:01:10,250 Mēs nevēlamies, lai jūs, lai īstenotu visu hash tabulu, varbūt mēs cenšamies 22 00:01:10,250 --> 00:01:13,090 lai jums ieviest dažas funkcijas, 23 00:01:13,090 --> 00:01:16,940 visbiežāk operācijas, bet mēs nebrauksim, lai jūs īstenotu visu. 24 00:01:16,940 --> 00:01:21,010 Tātad, tas ir svarīgi, ka jūs saprotat jēdzienu aiz katra datu struktūra 25 00:01:21,010 --> 00:01:23,510 un arī to, ka jums ir iespēja kodu C, 26 00:01:23,510 --> 00:01:27,880 tikai visbiežāk darbībām viņiem ir katram datu struktūra. 27 00:01:27,880 --> 00:01:30,090 Un arī būtu iespēja pārskatīt norādes un structs, 28 00:01:30,090 --> 00:01:33,470 tāpēc, ka tie parādās daudz šajās datu struktūras. 29 00:01:33,470 --> 00:01:37,380 >> Pirmkārt, saistībā sarakstus. Saistīti saraksti ir patiešām ļoti līdzīgi blokiem 30 00:01:37,380 --> 00:01:39,930 bet atšķirība starp saistīts sarakstu un masīva, 31 00:01:39,930 --> 00:01:45,160 pirmkārt, ir tāda, ka saistīts saraksts ir ļoti elastīga izmēru, 32 00:01:45,160 --> 00:01:50,060 bet masīvi jums ir vai nu jāizvēlas ļoti lielu izmēru masīva, 33 00:01:50,060 --> 00:01:53,710 lai jūs zināt, ka jūs gatavojas, lai varētu uzglabāt visus savus datus šajā masīvā, 34 00:01:53,710 --> 00:01:59,370 vai jums ir izmantot malloc lai būtu elastīga garumu masīvs. 35 00:01:59,370 --> 00:02:03,680 Kas saistītas sarakstos, tas ir ļoti viegli, lai tikai iegūtu vairāk elementiem, 36 00:02:03,680 --> 00:02:07,210 īstenot vairākus elementus saistītajā sarakstā vai noņemt elementus. 37 00:02:07,210 --> 00:02:09,370 Un faktiski, ja jūs nevēlaties saistīts saraksts tiks sakārtots, 38 00:02:09,370 --> 00:02:13,950 Jūs varat meklēt un noņemt elementus pastāvīgu laiku, 39 00:02:13,950 --> 00:02:16,800 tāpēc O (1) laiks, tāpēc tas ir ļoti ērti. 40 00:02:16,800 --> 00:02:20,660 Jums tikai jābūt uzmanīgiem, lai vienmēr atcerieties malloc un bez mezgliem, 41 00:02:20,660 --> 00:02:25,510 tikai tāpēc, ka, ja jums nav, jums ir atmiņas noplūde. 42 00:02:25,510 --> 00:02:31,480 Tātad, kas saistīti saraksti - definīcija mezglu ir tāpat kā tas, ko mēs esam turpat. 43 00:02:31,480 --> 00:02:35,110 Man int n, bet jūs varat saglabāt visus datus, ko vēlaties. 44 00:02:35,110 --> 00:02:37,280 Tātad, ja jūs vēlaties saglabāt virkni, tas ir labi. 45 00:02:37,280 --> 00:02:41,690 Ja jūs vēlaties saglabāt struct, tas ir labi, dubultā, ko jūs vēlaties. 46 00:02:41,690 --> 00:02:44,630 Es tikai izvirzīti int n, piemērus šeit. 47 00:02:44,630 --> 00:02:46,800 Un jums ir rādītāju uz nākamo mezglu. 48 00:02:46,800 --> 00:02:51,940 Tātad, būtībā, kas saistītas sarakstā ir daži dati, tad tas norāda uz nākamo mezglu. 49 00:02:51,940 --> 00:02:56,710 Ja tas ir pēdējais elements, kas saistīts sarakstā, tas notiek, lai norādītu uz nulles. 50 00:02:56,710 --> 00:02:59,060 Tātad šis ir piemērs saistīts saraksta. 51 00:02:59,250 --> 00:03:05,960 >> Labi, tāpēc tagad pieņemsim redzēt, kas mums ir jādara, ja es vēlos, lai ievietotu elementu saistītā sarakstā. 52 00:03:05,960 --> 00:03:08,810 Pirmkārt, funkcija ievietot būs tipa spēkā neesošu 53 00:03:08,810 --> 00:03:11,350 jo es nevēlos atgriezties neko. 54 00:03:11,350 --> 00:03:14,200 Un es esmu gatavojas veikt int kā argumentu, 55 00:03:14,200 --> 00:03:17,090 jo es gribu zināt, ko es gribu, lai ievietotu. 56 00:03:17,090 --> 00:03:21,840 Tātad, kas ir pirmā lieta, ko man vajadzētu darīt? Nu, es būtu malloc uz newnode, 57 00:03:21,840 --> 00:03:24,240 tāpēc, ka ir pirmā līnija. 58 00:03:24,240 --> 00:03:27,580 Es esmu tikai radot jaunu mezglu īstenot saistītajā sarakstā. 59 00:03:27,580 --> 00:03:32,360 Tātad, ko es varu darīt? Nu, mēs zinām, ka mūsu implementācijas saistīti sarakstu 60 00:03:32,360 --> 00:03:38,180 klasē, mēs vienmēr likt galvu kā globālo mainīgo. 61 00:03:38,180 --> 00:03:41,800 Tātad, ko mēs varam darīt, ir mainīt galvu. 62 00:03:41,800 --> 00:03:44,300 Es varu padarīt šo jauno mezglā būs jaunais vadītājs, 63 00:03:44,300 --> 00:03:46,670 un tas notiek, lai norādītu uz iepriekšējo galvu. 64 00:03:46,670 --> 00:03:50,390 Kā mēs varam darīt? Pirmā lieta, kas man ir jādara 65 00:03:50,390 --> 00:03:54,770 ir mainīt "n" jaunajā mezgla līdz vērtībai, 66 00:03:54,770 --> 00:03:57,530 kas tika nodots funkcijai. 67 00:03:57,530 --> 00:04:01,050 Tad newnode tālāk būs galvu. 68 00:04:01,050 --> 00:04:05,800 Galva būs newnode. Tātad, tas ir diezgan vienkārši. 69 00:04:05,800 --> 00:04:10,090 Dzēšanas mezglu, mēs varam darīt to, piemēram - 70 00:04:10,090 --> 00:04:14,790 Viens veids, kā mēs varētu darīt, proti, 71 00:04:14,790 --> 00:04:18,160 labi, ja es gribēju, lai dzēstu, piemēram, 3, 72 00:04:18,160 --> 00:04:24,850 ko es varētu darīt, ir vienkārši norādīt iepriekšējo mezglu 73 00:04:24,850 --> 00:04:27,580 uz nākamo mezglu 3. 74 00:04:27,580 --> 00:04:29,400 Tāpēc es vēlētos darīt kaut ko līdzīgu, ka. 75 00:04:29,400 --> 00:04:33,400 Bet kāda ir problēma ar to dara? 76 00:04:33,400 --> 00:04:37,400 Man ir atmiņas noplūde, tāpēc man nav piekļuves numuru 3 vairs. 77 00:04:37,400 --> 00:04:42,480 Problēma ar tas, ka es neesmu gatavojas, lai varētu atbrīvot šo mezglu. 78 00:04:42,480 --> 00:04:45,360 Es esmu nāksies atmiņas noplūde, un (nesaprotams) gatavojas ienīst mani. 79 00:04:45,360 --> 00:04:49,370 Tā vietā, lai to dara, es droši vien būtu pagaidu rādītājs. 80 00:04:49,370 --> 00:04:53,210 Tāpēc man temp. Tā gatavojas norādīt uz mezglu, ka es gribu, lai dzēstu. 81 00:04:53,210 --> 00:04:58,170 Un tad es varu pārvietot iepriekšējos mezglu punkta uz nākamo mezglu 82 00:04:58,170 --> 00:05:00,390 mezglā, ka es gribu, lai dzēstu. 83 00:05:00,390 --> 00:05:02,730 Un visbeidzot, es varu brīvi rādītāju. 84 00:05:02,730 --> 00:05:07,480 Vai man ir, lai atbrīvotu rādītāju, kas man radīja tieši tur? 85 00:05:07,480 --> 00:05:09,560 Man nav, tikai tāpēc, ka - 86 00:05:09,560 --> 00:05:13,430 Atšķirība ir tā, ka šis mezgls tika izveidots, izmantojot malloc, 87 00:05:13,430 --> 00:05:17,280 tāpēc tas ir kaudze, bet tas viens bija tikko paziņoja par NULL slēdzi kaudze. 88 00:05:17,280 --> 00:05:20,000 Tāpēc man nav, lai atbrīvotu to. 89 00:05:20,000 --> 00:05:22,030 >> Labi. Tāpēc tagad parunāsim par skursteņi. 90 00:05:22,030 --> 00:05:24,680 Skursteņi ir diezgan vienkārši. 91 00:05:24,680 --> 00:05:29,540 Mēs to darījām skursteņi un rindas klasē tikai izmantojot bloki, 92 00:05:29,540 --> 00:05:32,820 bet jums būtu jāzina - tikai jāapzinās 93 00:05:32,820 --> 00:05:40,740 ka jūs varat darīt, skursteņi rindās, izmantojot saistītos sarakstus, kā arī. 94 00:05:40,740 --> 00:05:44,460 Tātad, ja jums ir masīvs, kāds būtu kaudze? 95 00:05:44,460 --> 00:05:46,810 Kaudze, pirmkārt, būs jābūt izmēru. 96 00:05:46,810 --> 00:05:49,950 Jums ir, lai saglabātu to, kas ir lielums kaudze, ka jums ir tiesības tagad. 97 00:05:49,950 --> 00:05:52,980 Un arī jums būs masīvs, šajā gadījumā, kad numuri, 98 00:05:52,980 --> 00:05:55,120 bet, ja jūs vēlaties, tas var būt masīvs 99 00:05:55,120 --> 00:06:00,380 stīgas, masīvs struktūrai, kaut ko, ka jūs vēlaties saglabāt. 100 00:06:00,380 --> 00:06:03,240 Par kaudze: atšķirība starp kaudzi un saistītajā sarakstā 101 00:06:03,240 --> 00:06:08,590 ir tas, ka kaudze jums ir piekļuve pēdējo elementu, kas tika nodots kaudze tikai. 102 00:06:08,590 --> 00:06:11,770 To sauc pēdējais, pirmais ārā. 103 00:06:11,770 --> 00:06:15,090 Tāpat kā jums ir kaudze paplātes, 104 00:06:15,090 --> 00:06:17,670 ja jūs likts paplāti uz augšējās, 105 00:06:17,670 --> 00:06:22,670 Jums ir, lai novērstu, ka paplāti pirmais piekļūt citiem paplātes. 106 00:06:22,670 --> 00:06:26,310 Tas pats ar skursteņi. 107 00:06:26,310 --> 00:06:31,220 Tātad, ja es gribu, lai, piemēram, pievienot elementu kaudze, ko man darīt? 108 00:06:31,220 --> 00:06:34,070 To sauc push, un tas ir diezgan vienkārši. 109 00:06:34,070 --> 00:06:37,130 Pirmā lieta, kas jums jādara, ir pārbaudīt, ja lielums kaudze 110 00:06:37,130 --> 00:06:40,150 ir ne lielāks par vai vienāds ar jaudu krāvuma. 111 00:06:40,150 --> 00:06:45,810 Jo, ja jums jau ir uz pilnu jaudu, jūs nevarat pievienot kaut kas cits. 112 00:06:45,810 --> 00:06:51,140 Un tad, ja ne, jums vienkārši ir pievienot elementu kaudze. 113 00:06:51,140 --> 00:06:54,530 Un visbeidzot, pieauguma lielumu. Tāpēc tas ir diezgan vienkārši. 114 00:06:54,530 --> 00:06:57,140 Tāpēc es vienkārši pievienojiet numuru 2. 115 00:06:57,140 --> 00:07:00,350 Un, ja es gribu, lai pop, kas nozīmē, ka es vēlos, lai novērstu 116 00:07:00,350 --> 00:07:03,870 pēdējais elements, kas tika pievienots, un atgrieztu vērtību elementa 117 00:07:03,870 --> 00:07:09,180 Pirmā lieta, ko es būtu, lai pārbaudītu, ka kaudze nav tukšs. 118 00:07:09,180 --> 00:07:11,510 Jo, ja tas ir tukšs, es nevaru atgriezties neko. 119 00:07:11,510 --> 00:07:14,820 Tādā gadījumā, es esmu atpakaļ -1. 120 00:07:14,820 --> 00:07:18,960 Citādi, es esmu gatavojas Samazināt izmēru spec, 121 00:07:18,960 --> 00:07:22,510 un atgriezties numurus (s.size). 122 00:07:22,510 --> 00:07:27,230 Kāpēc es samazināšanās lielumu un pēc tam atgriezties s.size? 123 00:07:27,230 --> 00:07:30,930 Tas tādēļ, šajā gadījumā, spec ir lielums 4, 124 00:07:30,930 --> 00:07:33,810 un es gribu, lai atgrieztos ceturto elementu, vai ne? 125 00:07:33,810 --> 00:07:36,030 Bet kas ir indekss ceturtā elementa? Trīs. 126 00:07:36,030 --> 00:07:44,510 Tā kā man izmērs - būs 3, es varu tikai atgriezties s.numbers (s.size) 127 00:07:44,510 --> 00:07:48,410 jo tas ir 3. Tātad, tas ir tikai indekss. 128 00:07:48,410 --> 00:07:50,380 >> Tagad rindas. Rindas ir diezgan daudz to pašu. 129 00:07:50,380 --> 00:07:54,950 Vienīgā atšķirība ir tā, ka tā vietā, pēdējā, pirmais ārā, 130 00:07:54,950 --> 00:07:57,480 Jums ir pirmais iekšā, pirmais ārā. 131 00:07:57,480 --> 00:07:59,460 Iespējams, ja jūs gaida, lai dotos uz koncertu, 132 00:07:59,460 --> 00:08:04,260 jums nebūs laimīgs, ja jums bija kaudze, nevis rindā. 133 00:08:04,260 --> 00:08:07,730 Ir pēdējais cilvēks nākt būs pirmā persona, lai ievadītu koncertu. 134 00:08:07,730 --> 00:08:09,760 Jūs, iespējams, nebūs laimīgs. 135 00:08:09,760 --> 00:08:15,020 Rindā, pirmais cilvēks, lai saņemtu, ir arī pirmais cilvēks izkļūt. 136 00:08:15,020 --> 00:08:18,720 Tāpēc definīcijā rindā, turklāt ar izmēru masīvā, 137 00:08:18,720 --> 00:08:23,360 jums ir arī, lai būtu galva, kas ir indekss uz galvas skursteņa. 138 00:08:23,360 --> 00:08:29,000 Tātad pirmais elements tiesības tagad. 139 00:08:29,000 --> 00:08:32,710 Enqueue ir tas pats, kas push skursteņi. 140 00:08:32,710 --> 00:08:34,980 Ja tu būtu ļoti naivi, jūs vienkārši teikt, 141 00:08:34,980 --> 00:08:39,289 labi, es varu tikai darīt tieši to pašu, ko es darīju, lai push. 142 00:08:39,289 --> 00:08:44,030 Es varu tikai pārbaudīt, ja tas nav pēc jaudas. 143 00:08:44,030 --> 00:08:48,760 Ja tā ir, es atgriezties viltus, citādi es varu tikai eksportēt jaunu vērtību 144 00:08:48,760 --> 00:08:50,630 un tad pieauguma lielumu. 145 00:08:50,630 --> 00:08:52,750 Bet kāpēc tas ir nepareizi? 146 00:08:52,750 --> 00:08:55,010 Paskatīsimies šo piemēru. 147 00:08:55,010 --> 00:08:57,020 Es cenšos ierindod ķekars sīkumi, 148 00:08:57,020 --> 00:08:58,390 un tad es esmu gatavojas dequeue un ierindod. 149 00:08:58,390 --> 00:09:00,550 Tur ir daudz komandas, bet tas ir ļoti vienkārši. 150 00:09:00,550 --> 00:09:04,790 Es esmu gatavojas ierindod 5, lai pievienotu 5, tad 7, 151 00:09:04,790 --> 00:09:09,310 1, 4, 6, un tad es gribu dequeue kaut ko, 152 00:09:09,310 --> 00:09:12,000 kas nozīmē, ka es esmu gatavojas noņemt pirmo elementu. 153 00:09:12,000 --> 00:09:14,640 Tāpēc es esmu gatavojas, lai noņemtu numuru 3, vai ne? 154 00:09:14,640 --> 00:09:17,320 Pirmais elements. Labi. 155 00:09:17,320 --> 00:09:21,450 Tagad, ja es mēģinātu ierindod kaut ko citu, kas notiek varētu notikt? 156 00:09:21,450 --> 00:09:24,290 Saskaņā ar manu īstenošanu, 157 00:09:24,290 --> 00:09:31,040 Es biju gatavojas nodot nākamo numuru indeksa q.size. 158 00:09:31,040 --> 00:09:35,140 Šajā gadījumā izmērs ir 8, 159 00:09:35,140 --> 00:09:38,640 tā indekss 8 būs tepat pēdējā pozīcijā. 160 00:09:38,640 --> 00:09:43,900 Ja es mēģinātu ierindod 1 tieši šeit, es būtu pārrakstot pēdējo pozīciju 161 00:09:43,900 --> 00:09:45,870 ar numuru 1, kas ir pilnīgi nepareizi. 162 00:09:45,870 --> 00:09:49,870 Ko es gribu darīt, ir wrap ap un iet uz pirmo pozīciju. 163 00:09:49,870 --> 00:09:52,870 Varbūt jūs vienkārši teikt, labi, man vienkārši ir pārbaudīt 164 00:09:52,870 --> 00:09:55,600 ja es patiesībā var likt kaut ko tur. 165 00:09:55,600 --> 00:09:58,560 Ja tā nav, es tikai saku, ak, jaunais pilnu jaudu 166 00:09:58,560 --> 00:10:02,010 ir faktiski jauda - 1, un jūs nevarat nodot elements tur. 167 00:10:02,010 --> 00:10:06,150 Bet kāda ir problēma? Problēma ir tā, ka, ja es tikai dequeue viss tepat 168 00:10:06,150 --> 00:10:08,240 un tad es cenšos, lai pievienotu kaut ko citu, tas vienkārši teikt, 169 00:10:08,240 --> 00:10:11,210 labi, jums bija ar pilnu jaudu, kas ir 0. 170 00:10:11,210 --> 00:10:13,620 Tātad jūsu rinda ir pagājis. 171 00:10:13,620 --> 00:10:16,990 Jums ir, lai wrap ap, un veids, iesaiņojuma ap 172 00:10:16,990 --> 00:10:22,040 ka jūs guys iemācījušies sapņotājs un citās psets bija, izmantojot mod. 173 00:10:22,040 --> 00:10:29,090 Jūs varat mēģināt to mājās, lai saprastu, kāpēc jūs darītu q.size + q.head 174 00:10:29,090 --> 00:10:31,080 mod jaudu, bet, ja jūs pārbaudīt tieši šeit, 175 00:10:31,080 --> 00:10:34,760 mēs varam redzēt, ka tas darbojas. 176 00:10:34,760 --> 00:10:37,760 Tātad pēdējā piemēram, q.size bija 8 177 00:10:37,760 --> 00:10:47,590 un galva bija 1, jo tas bija šis amats šeit masīva. 178 00:10:47,590 --> 00:10:51,970 Tāpēc būs 8 + 1, 9. Mod jauda 9 būtu 0. 179 00:10:51,970 --> 00:10:56,640 Tas iet uz indeksu 0. Mums būs pareizā stāvoklī. 180 00:10:56,640 --> 00:10:59,750 Un tad mēģināt rindā mājās. 181 00:10:59,750 --> 00:11:04,950 Dažas svarīgas lietas: mēģināt saprast atšķirību starp kaudzi un rindā. 182 00:11:04,950 --> 00:11:11,620 Mājās, mēģināt iegūt ļoti pazīstams ar Rindu, dequeue, push un pop īstenošanā. 183 00:11:11,620 --> 00:11:16,560 Un arī saprast, ja jūs varētu izmantot katru no tiem. 184 00:11:16,560 --> 00:11:22,830 >> Tā ļauj atpūsties 10 sekundes ar ķekars pokemoniem. 185 00:11:22,830 --> 00:11:26,080 Un tagad iesim atpakaļ uz datu struktūras. 186 00:11:26,080 --> 00:11:29,770 Hash tabulas. Daudzi cilvēki bija bail no hash tabulu. 187 00:11:29,770 --> 00:11:33,650 jo problēma noteikti 6, pareizrakstības pārbaudītāju. 188 00:11:33,650 --> 00:11:35,980 Hash tabulas un cenšas, daudzi cilvēki bail no tiem. 189 00:11:35,980 --> 00:11:38,540 Viņi domā, ka viņi ir tik grūti saprast. Yeah? 190 00:11:38,540 --> 00:11:41,490 [Rob Bowden] Problēma noteikti 5. >> Problēma noteikti 5, jā. Paldies Rob. 191 00:11:41,490 --> 00:11:43,370 Jā. Seši bija Huff n "Puff, jā. 192 00:11:43,370 --> 00:11:49,340 Problēma noteikti 5 tika pareizrakstības pārbaudītāju, un jums bija izmantot vai nu hash tabulu vai izmēģināt. 193 00:11:49,340 --> 00:11:55,360 Daudzi cilvēki domā, ka viņi ir super grūti saprast, bet viņi faktiski ir diezgan vienkārši. 194 00:11:55,360 --> 00:12:01,290 Kas ir hash tabulu, pamatā? Hash tabulu ir masīvs saistītas sarakstiem. 195 00:12:01,290 --> 00:12:06,730 Vienīgā atšķirība starp masīvu un hash tabulu 196 00:12:06,730 --> 00:12:09,730 ir tā, ka hash tabulu, jums ir kaut ko sauc hash funkciju. 197 00:12:09,730 --> 00:12:12,080 Kas ir hash funkcija? 198 00:12:12,080 --> 00:12:13,970 Es nezinu, ja jūs guys var izlasīt šeit. 199 00:12:13,970 --> 00:12:16,090 Šis ir piemērs hash tabulu. 200 00:12:16,090 --> 00:12:19,220 Tātad jūs varat redzēt, ka jums ir masīvu ar 31 elementiem. 201 00:12:19,220 --> 00:12:22,440 Un tas, ko mēs darām hash tabulā ir jaucējfunkciju 202 00:12:22,440 --> 00:12:26,660 kas gatavojas tulkot taustiņu, katrs int uz indeksu. 203 00:12:26,660 --> 00:12:31,740 Ja, piemēram, ja es gribu izvēlēties B. Harrison, 204 00:12:31,740 --> 00:12:34,190 Es liktu B. Harisons manā hash funkciju, 205 00:12:34,190 --> 00:12:36,960 un hash funkciju varētu atgriezties 24. 206 00:12:36,960 --> 00:12:40,930 Tāpēc es zinu, ka es vēlos, lai saglabātu B. Harrison 24. 207 00:12:40,930 --> 00:12:46,580 Tā ka ir starpība starp tikai ar masīvu un ar hash tabulu. 208 00:12:46,580 --> 00:12:48,740 Hash tabulu, jums ir funkcija, kas ir tev pastāstīšu 209 00:12:48,740 --> 00:12:54,740 kur glabāt datus, kurus vēlaties saglabāt. 210 00:12:54,740 --> 00:12:57,040 Par hash funkciju, jūs vēlaties meklēt hash funkciju 211 00:12:57,040 --> 00:13:00,600 kas ir deterministisko un labi izplatīts. 212 00:13:00,600 --> 00:13:07,810 Kā jūs varat redzēt šeit, jūs redzēsiet, ka daudz datu, ka es gribēju veikalu patiesībā bija 19 213 00:13:07,810 --> 00:13:12,470 nevis izmantojot 31 un 30 un 29, kas bija bez maksas. 214 00:13:12,470 --> 00:13:16,920 Tāpēc hash funkciju, ka es bija ne ļoti labi sadalītas. 215 00:13:16,920 --> 00:13:20,710 Kad mēs sakām labi izplatīts, tas nozīmē, ka mēs vēlamies, lai būtu, 216 00:13:20,710 --> 00:13:26,520 aptuveni vismaz 1 vai 2, katrs no - 217 00:13:26,520 --> 00:13:32,190 piemēram, atšķirība 1 vai 2 katrā no indeksiem blokiem. 218 00:13:32,190 --> 00:13:43,950 Jūs vēlaties, lai būtu, apmēram, vienu un to pašu elementu skaitu katrā saistīts sarakstā masīvā. 219 00:13:43,950 --> 00:13:48,600 Un tas ir viegli, lai pārbaudītu, vai tas ir derīgs hash tabulu, apskatīt kā hash tabulas. 220 00:13:48,600 --> 00:13:51,770 >> Tad koki. Tas ir koks. 221 00:13:51,770 --> 00:13:56,400 Koki datorzinātnēs ir otrādi, lai kāda iemesla dēļ. 222 00:13:56,400 --> 00:14:00,150 Tātad, šeit jums ir par koku saknes un tad lapām. 223 00:14:00,150 --> 00:14:05,630 Jums tikai vajadzētu zināt nomenklatūru vecākiem un bērnu. 224 00:14:05,630 --> 00:14:12,880 Katrs mezgls ir savi bērni, kas ir mezgli, kas ir zemāka par vecākiem. 225 00:14:12,880 --> 00:14:19,660 Tā, piemēram, 2 būs vecāks par 3, un, no otras bērnu turpat, 226 00:14:19,660 --> 00:14:25,290 bet 3 būs mātes par 1, un citi bērni, kas ir tur. 227 00:14:25,290 --> 00:14:29,990 Un 1 būs 3 s bērns, un tā tālāk. 228 00:14:29,990 --> 00:14:34,610 Mums ir kaut kas daudz vairāk interesantu, ko sauc bināro meklēšanas koku, 229 00:14:34,610 --> 00:14:39,040 kurā visas vērtības par tiesībām mezglu 230 00:14:39,040 --> 00:14:41,660 būs labajā pusē, tieši šeit - labajā pusē, 231 00:14:41,660 --> 00:14:46,780 būs lielāks nekā elementa saknes. 232 00:14:46,780 --> 00:14:49,780 Tātad, ja man ir numurs 5 tepat, visi elementi, labajā pusē 233 00:14:49,780 --> 00:14:51,940 būs lielāks par 5, kā arī pa kreisi 234 00:14:51,940 --> 00:14:56,770 Visi elementi ir būs mazāka par 5. 235 00:14:56,770 --> 00:14:58,780 Kāpēc tas ir lietderīgi? 236 00:14:58,780 --> 00:15:01,660 Nu, ja es gribu, lai pārbaudītu, vai skaitlis 7 ir šeit, piemēram, 237 00:15:01,660 --> 00:15:05,960 Es tikai iet uz 5 pirmais un es esmu dodas, lai redzētu, ir 7 lielāks vai mazāks par 5? 238 00:15:05,960 --> 00:15:09,540 Tas ir lielāks, tāpēc es zinu, tas būs jābūt labajā pusē no koka. 239 00:15:09,540 --> 00:15:13,980 Tāpēc man ir daudz mazāk stuff apskatīt. 240 00:15:13,980 --> 00:15:19,520 Ieviešanā bināro meklēšanas koku, mezglā, es esmu tikai nāksies iegūt datus, 241 00:15:19,520 --> 00:15:21,750 tāpēc int n, jūs varētu būt arī virkni 242 00:15:21,750 --> 00:15:23,630 vai kaut ko gribēja. 243 00:15:23,630 --> 00:15:28,100 Jums tikai jābūt uzmanīgiem, kas definē to, kas ir lielāks, kas ir mazāk. 244 00:15:28,100 --> 00:15:30,390 Tātad, ja jums bija stīgas, piemēram, jūs varētu definēt 245 00:15:30,390 --> 00:15:34,690 ka visas šīs lietas par tiesībām nāksies lielāku garumu, 246 00:15:34,690 --> 00:15:40,940 kreisās nāksies zemākas garumi, lai tas tiešām atkarīgs no jums. 247 00:15:40,940 --> 00:15:44,930 >> Kā es varu īstenot atrast par BST? 248 00:15:44,930 --> 00:15:47,840 Pirmā lieta, mums nāksies darīt, ir pārbaudīt, vai sakne ir NULL. 249 00:15:47,840 --> 00:15:50,920 Ja tas ir NULL, tas nozīmē, ka lieta nav tur 250 00:15:50,920 --> 00:15:53,330 tāpēc, ka jums nav pat ir koks, vai ne? 251 00:15:53,330 --> 00:15:55,790 Tāpēc es atgriezties viltus. 252 00:15:55,790 --> 00:15:58,740 Citādi, es esmu gatavojas, lai pārbaudītu, vai skaitlis ir lielāks 253 00:15:58,740 --> 00:16:01,720 nekā vērtība saknes. 254 00:16:01,720 --> 00:16:04,250 Es esmu gatavojas izmēģināt, lai atrastu elementu labajā pusē 255 00:16:04,250 --> 00:16:08,590 no koka. 256 00:16:08,590 --> 00:16:11,310 Tu redzi, ka es esmu, izmantojot rekursijas šeit. 257 00:16:11,310 --> 00:16:14,150 Un tad, ja tas ir mazāk, es esmu gatavojas apskatīt kreisi. 258 00:16:14,150 --> 00:16:18,330 Un, visbeidzot, pretējā gadījumā, ja tas nav mazāks vai lielāks, 259 00:16:18,330 --> 00:16:20,660 tas nozīmē, ka tā ir vērtība pati par sevi. 260 00:16:20,660 --> 00:16:23,010 Tāpēc es vienkārši atgriezties true. 261 00:16:23,010 --> 00:16:26,360 Jūs varat redzēt šeit, ka es izmantoti, ja, ja, ja. 262 00:16:26,360 --> 00:16:30,820 Un atcerēties, kas viktorīnā 0, mums bija problēmas, kas bija, ja, ja, ja, 263 00:16:30,820 --> 00:16:32,780 un jūs vajadzēja atrast neefektivitāti, 264 00:16:32,780 --> 00:16:35,180 un neefektivitāte bija, ka jūs izmantojāt, ja. 265 00:16:35,180 --> 00:16:39,060 Jums vajadzēja izmantot, ja cits, ja, kas cits, ja, un cits. 266 00:16:39,060 --> 00:16:44,240 Tātad, ja es izmantot cits, ja, un cits, ja, un vēl šeit? 267 00:16:44,240 --> 00:16:46,200 Vai kāds - jā? 268 00:16:46,200 --> 00:16:51,140 [Student runājot, dzirdams] 269 00:16:51,140 --> 00:16:53,480 Tas ir nevainojami. Tāpēc viņa saka, ka tas nav svarīgi, 270 00:16:53,480 --> 00:16:55,930 tikai tāpēc, neefektivitāti, kas mums bija pirms 271 00:16:55,930 --> 00:16:59,550 bija tas, ka, jo, varbūt, ja kāds nosacījums ir izpildīts, 272 00:16:59,550 --> 00:17:03,570 tāpēc esat veicis darbību, bet tad jūs gatavojas pārbaudīt visiem citiem apstākļiem. 273 00:17:03,570 --> 00:17:06,319 Bet šajā gadījumā, tas atgriezās uzreiz, tāpēc tas nav svarīgi. 274 00:17:06,319 --> 00:17:09,220 Tātad jums nav jāizmanto cits ja. 275 00:17:09,220 --> 00:17:11,740 >> Un visbeidzot, parunāsim par mēģinājumiem, 276 00:17:11,740 --> 00:17:13,800 kas ir ikviena mīļākie. 277 00:17:13,800 --> 00:17:15,980 Mēģināt ir koks masīvi. 278 00:17:15,980 --> 00:17:20,369 Tas ir ļoti ātri, lai meklētu vērtības, bet tā izmanto daudz atmiņas. 279 00:17:20,369 --> 00:17:22,530 Un tas parasti filtrēt vārdus, tad, kad jūs 280 00:17:22,530 --> 00:17:27,920 vēlamies īstenot, piemēram, es nezinu, kā tālruņu katalogā tālrunī 281 00:17:27,920 --> 00:17:30,440 un jūs vēlaties, lai varētu B tipa 282 00:17:30,440 --> 00:17:32,510 un vienkārši ir cilvēku vārdus, kuri ir B. 283 00:17:32,510 --> 00:17:37,960 Tas ir ļoti viegli īstenot, izmantojot izmēģināt, piemēram,. 284 00:17:37,960 --> 00:17:39,820 Kā jūs definētu mezglu izmēģināt? 285 00:17:39,820 --> 00:17:43,910 Jums vienkārši ir jābūt bool, kas būs is_word. 286 00:17:43,910 --> 00:17:48,660 Tas apliecina, ka, izmantojot visus burtus pirms minētā mezglā, 287 00:17:48,660 --> 00:17:51,920 Jums bija iespēja, lai veidotu vārdu, 288 00:17:51,920 --> 00:17:57,230 un tad jums ir masīvs norādes uz mezgliem. 289 00:17:57,230 --> 00:18:03,120 Vai jūs varat redzēt, ka mums ir masīvs mātes mezglu, tāpēc mezglu * masīvu? Yeah? 290 00:18:03,120 --> 00:18:06,050 Tātad, pieņemsim redzēt, kā tas darbosies. Par pareizrakstības pārbaude, 291 00:18:06,050 --> 00:18:08,230 mums ir masīvs 27 elementiem, 292 00:18:08,230 --> 00:18:12,150 jo mums ir visi burti plus apostrofu. 293 00:18:12,150 --> 00:18:17,800 Pirms šeit es esmu tikai gatavojas izmantot 2, jo es gribu, lai varētu rakstīt uz tāfeles. 294 00:18:17,800 --> 00:18:20,230 Labi. Tātad šis ir piemērs mēģināt. 295 00:18:20,230 --> 00:18:25,600 Ja es vienkārši definēt pirmā mezglā, es ņemšu masīvs 2 elementiem 296 00:18:25,600 --> 00:18:29,290 ka ir 2 norādes uz NULL, tāpēc es vienkārši ielieciet "a" un "b". 297 00:18:29,290 --> 00:18:32,430 Un es esmu nāksies bool, kas saka is_word. 298 00:18:32,430 --> 00:18:34,420 Tas būs viltus par pirmo, 299 00:18:34,420 --> 00:18:37,370 tikai tāpēc, pirms, ka jums nav nekādu rakstzīmes. 300 00:18:37,370 --> 00:18:40,900 Tik tukšs vārds nav vārds. Tātad, tas ir nepatiess. 301 00:18:40,900 --> 00:18:46,320 Ja es gribu piebilst, "A", lai šajā vārdnīcā, ko man darīt? 302 00:18:46,320 --> 00:18:49,760 Man vienkārši ir malloc jaunu mezglu "a", 303 00:18:49,760 --> 00:18:54,630 un tad pievienot savu vārdu taisnība. 304 00:18:54,630 --> 00:19:00,180 Tāpēc tas tikai apliecina, ka tam "", būs taisnība. Jēga? 305 00:19:00,180 --> 00:19:04,120 Tad, ja es vēlos, lai pievienotu "BA", es ņemšu malloc 1 par "b", 306 00:19:04,120 --> 00:19:07,550 un tad es esmu gatavojas izveidot boolean uz nepatiesu, 307 00:19:07,550 --> 00:19:10,160 jo "b", pats par sevi nav vārds. 308 00:19:10,160 --> 00:19:13,010 Tad es esmu gatavojas malloc vēl vienu "a", tāpēc "BA", 309 00:19:13,010 --> 00:19:16,290 un tad es esmu gatavojas izveidot tas ir vārds, kas ir taisnība. 310 00:19:16,290 --> 00:19:18,950 Jo "ba", ir vārds. 311 00:19:18,950 --> 00:19:21,910 Un tad, ja es gribu, lai redzētu, vai "b" ir šajā vārdnīcā, 312 00:19:21,910 --> 00:19:26,730 Es varu tikai iet ar pirmo, "b". Es iet uz leju, un es paskatos, ir vārds, un tā saka viltus. 313 00:19:26,730 --> 00:19:30,110 Tāpēc tas nav vārds. Ja es gribu, lai pārbaudītu "BA", 314 00:19:30,110 --> 00:19:38,010 Es eju uz pirmo, "b", un tad doties uz "a", un es redzu taisnība, tāpēc tas ir vārds. Jēga? 315 00:19:38,010 --> 00:19:41,950 Daudzi cilvēki saņemt sajaukt ar mēģinājumiem. Nē? 316 00:19:41,950 --> 00:19:44,740 >> Visbeidzot, Huffman kodēšana. Huffman kodēšana ir ļoti noderīga 317 00:19:44,740 --> 00:19:47,550 lai saglabātu atmiņu un saspiest teksta failus, 318 00:19:47,550 --> 00:19:52,270 tikai tāpēc, ka daudz reizes jūs izmantojat "a" un "e", piemēram, 319 00:19:52,270 --> 00:19:57,710 jūsu dokumentiem, bet es nezinu, vai jūs guys izmantot "Q" vai "Z", tik daudz. 320 00:19:57,710 --> 00:20:02,040 Ņemot tikai 1 baitu par katru rakstzīmi, 321 00:20:02,040 --> 00:20:08,520 katrs - ar 256 rakstzīmes, kas mums ir ASCII tabulā nav ļoti optimāls, 322 00:20:08,520 --> 00:20:11,410 tikai tāpēc, ka ir daži simboli, ko izmanto daudz vairāk, 323 00:20:11,410 --> 00:20:15,180 tāpēc jums, iespējams, izmanto mazāk atmiņas par tiem. 324 00:20:15,180 --> 00:20:17,560 Kā es varu izmantot Huffman kodēšana? 325 00:20:17,560 --> 00:20:20,010 Mums ir jādara Huffman koku. 326 00:20:20,010 --> 00:20:23,370  Huffman koks ir mezglus 327 00:20:23,370 --> 00:20:27,760 kas ir simbols, kas notiek, ir, piemēram, "", "b", "c", vēstules, 328 00:20:27,760 --> 00:20:32,990 kāds burts ir, frekvence, kas ir frekvence, ka vārds parādās tekstā, 329 00:20:32,990 --> 00:20:36,280 ka jums bija radīt Huffman koku, 330 00:20:36,280 --> 00:20:41,800 un tad mezglu, kas gatavojas uzsvērt pa kreisi no Huffman koku 331 00:20:41,800 --> 00:20:47,210 un cits mezgls, kas notiek, lai norādītu uz labo pusi. Tātad, tāpat kā koks. 332 00:20:47,210 --> 00:20:49,440 Kā jūs veidot Huffman koku? 333 00:20:49,440 --> 00:20:54,020 Jūs gatavojas izvēlēties 2 mezgliem, kas ir zemākās frekvences. 334 00:20:54,020 --> 00:20:56,490 Ja jums ir kaklasaiti jūs gatavojas izvēlēties 2 mezgliem 335 00:20:56,490 --> 00:20:59,870 , kas ir zemākais ASCII vērtības, kā arī. 336 00:20:59,870 --> 00:21:02,420 Tad jūs gatavojas izveidot jaunu koku, no tiem 2 mezgliem 337 00:21:02,420 --> 00:21:08,030 ka nāksies kombinēto biežums mātes mezglā. 338 00:21:08,030 --> 00:21:13,240 Un tad jūs gatavojas, lai novērstu 2 bērnus no meža 339 00:21:13,240 --> 00:21:15,570 un aizstāt tos ar vecākiem. 340 00:21:15,570 --> 00:21:18,930 Un jūs gatavojas atkārtot, ka līdz brīdim, kad jums ir tikai 1 koku mežā. 341 00:21:18,930 --> 00:21:23,840 Tātad, pieņemsim redzēt, kā jūs varētu darīt Huffman koku ZAMYLA. 342 00:21:23,840 --> 00:21:29,220 Jūs varat redzēt šeit, ka visi burti ir biežums 1, izņemot "A", kas ir frekvenci 2. 343 00:21:29,220 --> 00:21:34,090 Tāpēc es izveidojis mezglu visām vēstulēm man, lai ASCII vērtību un biežumu. 344 00:21:34,090 --> 00:21:40,090 Tātad, ja es vēlos, lai izveidotu pirmo koku, tas būs ar "L" un "M". 345 00:21:40,090 --> 00:21:43,100 Tātad, tas ir šeit. No pāra biežums būs 2 346 00:21:43,100 --> 00:21:49,470 tāpēc, ka tas ir 1 + 1, tad nākamais 2 ar zemāko frekvences ir "Y" un "Z". 347 00:21:49,470 --> 00:21:53,180 Un tad man ir visi no tiem ir - ir frekvenci 2. 348 00:21:53,180 --> 00:22:00,470 Tātad, kādi ir tie, kas ir zemākais ASCII vērtību nākamo? 349 00:22:00,470 --> 00:22:04,830 "A" un "L". Tāpēc es izveidoju jaunu mezglu, 350 00:22:04,830 --> 00:22:09,930 un, visbeidzot, tas ir 4 un 2, tāpēc 2 būs pa kreisi. 351 00:22:09,930 --> 00:22:12,430 Un tas ir Huffman koks. 352 00:22:12,430 --> 00:22:16,060 Tad, ja es gribu uzrakstīt kādu tekstu, 353 00:22:16,060 --> 00:22:24,440 piemēram, binārā, lai pārvērstu par tekstu, izmantojot Huffman koks ir ļoti viegli. 354 00:22:24,440 --> 00:22:30,220 Piemēram, ja es saku, ka pārvietojas pa kreisi, ir 0, un pārvietojas pa labi, ir 1, 355 00:22:30,220 --> 00:22:32,410 Kas ir tas, ka gatavojas pārstāvēt? 356 00:22:32,410 --> 00:22:35,530 Tātad, piemēram, 1, 1, tik labi, labi, 357 00:22:35,530 --> 00:22:40,370 un tad 0, lai pa kreisi būtu L, un pēc tam 1, 0, 0. 358 00:22:40,370 --> 00:22:43,950 Tātad 1, 0, lai tikai 1, 0, "". 359 00:22:43,950 --> 00:22:47,540 Un pēc tam ir 0, 1, tāpēc "Z". 360 00:22:47,540 --> 00:22:52,170 Un tad 1, 0, 0 - nav. 361 00:22:52,170 --> 00:22:56,780 0, 0 būs "Y", lai slinks. 362 00:22:56,780 --> 00:23:06,060 Tātad tas ir viss, kas man, Rob ir gatavojas pārņemt. 363 00:23:06,060 --> 00:23:08,400 >> [Rob Bowden] Tātad, nedēļa 7 sīkumi. 364 00:23:08,400 --> 00:23:11,390 Mēs esam ieguvuši daudz, lai iet pa ļoti ātri. 365 00:23:11,390 --> 00:23:13,430 Bitu līmeņa operatoriem, bufera pārpildes, 366 00:23:13,430 --> 00:23:16,760 CS50 bibliotēka, tad HTML, HTTP, CSS. 367 00:23:16,760 --> 00:23:20,990 Viss tāpat kā 15 līdz 20 minūtes. 368 00:23:20,990 --> 00:23:24,330 Bitu līmeņa operatoriem. Ir 6 no tiem, kas jums ir jāzina. 369 00:23:24,330 --> 00:23:31,200 Bitu līmeņa un Bitu līmeņa vai, XOR, pa kreisi maiņu, pa labi maiņu, un ne. 370 00:23:31,200 --> 00:23:35,420 Tiesības maiņu, un jūs tikko redzēju lekciju vispār. 371 00:23:35,420 --> 00:23:40,480 Mēs iet pār to ātri šeit, bet tas ir labi zināt, ka tie ir 6, kas pastāv. 372 00:23:40,480 --> 00:23:45,070 Atcerieties, ka Bitu līmeņa uzņēmēji, piemēram, kad jūs 3 + 4. 373 00:23:45,070 --> 00:23:49,420 Jums nav darīšana ar bināro 3 un 4. 374 00:23:49,420 --> 00:23:56,550 Ar Bitu līmeņa operatoriem, jūs faktiski nodarbojas ar individuālo biti skaitļu 3 un 4. 375 00:23:56,550 --> 00:23:59,120 >> Tātad pirmais, kas mēs sakām, ir Bitu līmeņa nav, 376 00:23:59,120 --> 00:24:02,340 un visiem tas ir uzsist visas bitiem. 377 00:24:02,340 --> 00:24:05,500 Tātad šeit, ja jūs esat rakstiski to C, jums nav rakstīt 378 00:24:05,500 --> 00:24:09,380 kā ~ 11011 vai neatkarīgi, jūs varētu rakstīt to kā ~ 4, 379 00:24:09,380 --> 00:24:12,970 un tad tas būtu uzsist bināro pārstāvību 4. 380 00:24:12,970 --> 00:24:24,800 Tātad šeit, ~ daži bināro numuru 1101101 gatavojas tieši uzsist visas 1 s līdz 0 un visi 0 s līdz 1 s. 381 00:24:24,800 --> 00:24:27,600 Kā es saku, ka, bieži izmantojot to, 382 00:24:27,600 --> 00:24:30,830 un mēs redzēsim to mazliet, ir, piemēram, mēs vēlamies nākt klajā ar kādu numuru 383 00:24:30,830 --> 00:24:35,460 kur visi no bitiem ir 1, izņemot vienu no tiem. 384 00:24:35,460 --> 00:24:38,560 Tāpēc tas parasti ir vieglāk izteikt numuru 385 00:24:38,560 --> 00:24:40,630 ja tikai, ka vienu bitu ir noteikts, 386 00:24:40,630 --> 00:24:44,650 un tad ~ tā, lai katru otro bit ir noteikts, izņemot vienu. 387 00:24:44,650 --> 00:24:50,300 Tāpēc, ka tas, ko mēs gatavojamies izmantot vairāk mazliet. 388 00:24:50,300 --> 00:24:58,220 >> Bitu līmeņa vai. Šeit ir 2 binārie skaitļi, un šie 2 skaitļi 389 00:24:58,220 --> 00:25:00,780 ir diezgan reprezentatīvi, jo tie ir visi iespējamie 390 00:25:00,780 --> 00:25:07,290 kombinācija bitu jūs varētu nepieciešams darboties. 391 00:25:07,290 --> 00:25:13,540 Lūk, kad es or'd katru bitu, mēs esam tikai gatavojas salīdzināt taisni uz leju. 392 00:25:13,540 --> 00:25:15,410 Tātad, no otras puses, mums ir 1 un 1. 393 00:25:15,410 --> 00:25:20,510 Kad es Bitu līmeņa | tiem, ko es esmu gatavojas saņemt? Viens. 394 00:25:20,510 --> 00:25:25,320 Tad Bitu līmeņa | 0 un 1 ir gatavojas sniegt man? Viens. 395 00:25:25,320 --> 00:25:27,840 Bitu līmeņa 1 un 0 būs tas pats, vienu. 396 00:25:27,840 --> 00:25:31,880 Bitu līmeņa 0 | 0 gatavojas sniegt man 0. 397 00:25:31,880 --> 00:25:37,300 Tāpēc vienīgais gadījums, kad man 0 atrodas 0 | 0 gadījums. 398 00:25:37,300 --> 00:25:40,020 Un jūs varat iedomāties, ka, tāpat kā jūsu loģisko tālākajos reģionos. 399 00:25:40,020 --> 00:25:44,830 Tātad, ja jūs domājat par 1 kā patiesu un 0 kā viltus, tas pats attiecas šeit. 400 00:25:44,830 --> 00:25:50,040 Tātad taisnība, vai patiess ir taisnība, patiess vai nepatiess ir taisnība. 401 00:25:50,040 --> 00:25:57,150 Nepatiesa vai patiess ir patiess, nepatiess vai nepatiess ir vienīgā lieta, kas ir faktiski nepatiesa. 402 00:25:57,150 --> 00:26:00,100 Lūk, piemērs, ka jums vajadzētu zināt 403 00:26:00,100 --> 00:26:05,160 kā diezgan labs piemērs, kad tiek izmantoti Bitu līmeņa operatoriem. 404 00:26:05,160 --> 00:26:08,660 Lūk, ja mēs vai kapitāls "" ar Ox20, 405 00:26:08,660 --> 00:26:11,830 un mēs apskatīt šos sekundē, mēs kaut ko. 406 00:26:11,830 --> 00:26:16,020 Un, ja mēs vai mazie "" ar Ox20, mēs kaut ko. 407 00:26:16,020 --> 00:26:26,750 Tā ļauj uzvilkt ASCII tabulu. 408 00:26:26,750 --> 00:26:34,000 Labi. Šeit mēs redzam, ka "" ir - 409 00:26:34,000 --> 00:26:36,920 Šeit mums ir "" ir decimāls 65. 410 00:26:36,920 --> 00:26:45,120 Bet es iešu ar heksadecimālo, kas ir Ox41. 411 00:26:45,120 --> 00:26:48,280 Diezgan pārliecināts, ka mēs redzējām klasē. Es domāju, ka mēs redzējām to klasē 412 00:26:48,280 --> 00:26:52,730 ka tas ir diezgan viegli pārveidot no heksadecimālo uz bināro. 413 00:26:52,730 --> 00:26:55,280 Tātad šeit, ja es gribu, lai 4 uz bināro, 414 00:26:55,280 --> 00:26:59,550 tas ir tikai būs 0100. 415 00:26:59,550 --> 00:27:03,620 Tas ir 1 ir vieta, 2 ir vieta, 4 s vietu, tāpēc tas ir 4. 416 00:27:03,620 --> 00:27:08,550 Tad es varu sadalīt 1 uz bināro, kas gatavojas par 0001. 417 00:27:08,550 --> 00:27:14,280 Un tā tas būs pārstāvniecība "A", kas bināro. 418 00:27:14,280 --> 00:27:22,720 Ņemot mazos "", tas tagad notiek, lai būtu Ox61, 419 00:27:22,720 --> 00:27:27,050 ja, sadalot tos līdz savā bināro, lai 6 - 420 00:27:27,050 --> 00:27:37,830 Pieņemsim patiesībā to dara - tur nav dzēšgumija? Dzēšgumija. 421 00:27:37,830 --> 00:27:48,220 Ox61. Tātad, sadalot 6 uz bināro būs 0 + 4 + 2 + 0. 422 00:27:48,220 --> 00:27:54,610 Un sadalīšana 1 būs 0001. 423 00:27:54,610 --> 00:27:56,520 Aplūkojot starpību starp šīm 2, 424 00:27:56,520 --> 00:28:04,250 mēs redzam, ka vienīgā atšķirība starp mazajiem un kapitāla "A", tas ir vienu bitu. 425 00:28:04,250 --> 00:28:11,810 Tātad, atgriežoties šeit - labi. 426 00:28:11,810 --> 00:28:15,920 Atgriežoties šeit, ja mēs skatāmies uz to, kas mazliet Ox20 ir, 427 00:28:15,920 --> 00:28:22,210 tāpēc sadalīšana Ox20 savā bināro, 428 00:28:22,210 --> 00:28:27,310 ir 0010, 0000. 429 00:28:27,310 --> 00:28:33,470 Ox20, tikai mazliet, kas ir noteikts tas ir nedaudz, ka mēs esam saistīti ar, 430 00:28:33,470 --> 00:28:38,210 ar pārslēgšanās starp kapitālu un mazos burtus "A". 431 00:28:38,210 --> 00:28:47,610 Ja I vai 'A', kurā tas ir viens, "A", 432 00:28:47,610 --> 00:28:50,580 ja es vai "" ar Ox20, 433 00:28:50,580 --> 00:28:53,490 ko es esmu gatavojas saņemt? 434 00:28:53,490 --> 00:28:58,960 [Student, dzirdams] >> mazie burti "a", jo tas notiek, lai uzsist šo mazliet uz 1. 435 00:28:58,960 --> 00:29:04,170 Un, ja es vai "" ar Ox20, ko es esmu gatavojas saņemt? 436 00:29:04,170 --> 00:29:08,780 Mazajiem burtiem, jo ​​tikai Oring "" ar Ox20, 437 00:29:08,780 --> 00:29:14,580 Es esmu tikai būs Oring šo vienu bitu uz 1, tas jau ir 1, tāpēc tas nav svarīgi. 438 00:29:14,580 --> 00:29:17,960 Lai mēs iegūtu "A" un "A". 439 00:29:17,960 --> 00:29:24,820 >> Bitu līmeņa un. Atkal, mēs varam domāt par to kā mūsu loģiski un kolēģi. 440 00:29:24,820 --> 00:29:28,180 Kreisajā pusē, mums ir taisnība, un taisnība. 441 00:29:28,180 --> 00:29:31,160 Tas notiek, lai būtu patiesība, un par visiem gadījumiem, 442 00:29:31,160 --> 00:29:36,270 viltus un patiesa vai true un false, vai nepatiesa un nepatiess, 443 00:29:36,270 --> 00:29:38,550 neviena no šīm lietām ir taisnība. 444 00:29:38,550 --> 00:29:44,170 Tātad, ko mēs galu galā kļūst ir 1000. 445 00:29:44,170 --> 00:29:48,830 Tāpēc tagad, šeit, šeit, kur es esmu, ko izmanto drošs Bitu līmeņa nav, 446 00:29:48,830 --> 00:29:52,230 kur mums bija Ox20. 447 00:29:52,230 --> 00:29:54,350 Tāpēc tas ir Ox20. 448 00:29:54,350 --> 00:29:59,570 Tagad tas, ko es gribu darīt, Bitu līmeņa ~ no Ox20. 449 00:29:59,570 --> 00:30:03,600 Kas notiek, lai uzsist visas bitiem. 450 00:30:03,600 --> 00:30:09,330 Tāpēc man ir 1101, 1111. 451 00:30:09,330 --> 00:30:18,940 Un tā "" anded ar ~ Ox20 gatavojas sniegt man to, ko? 452 00:30:18,940 --> 00:30:22,430 Tikai mazliet mums tiešām ir nepieciešams domāt par ir tas viens, 453 00:30:22,430 --> 00:30:26,020 jo, ja visi no šiem bitiem ir iestatīts uz 1, 454 00:30:26,020 --> 00:30:29,000 tad mēs esam gatavojas saņemt tieši to, ko "" bija 455 00:30:29,000 --> 00:30:31,260 izņemot, iespējams, kāds tas mazliet ir. 456 00:30:31,260 --> 00:30:34,460 Jo, ja tas bija 1, tagad tas būs jānosaka līdz 0, 457 00:30:34,460 --> 00:30:39,810 jo neatkarīgi no tā, anded ar to būs 0. 458 00:30:39,810 --> 00:30:43,280 Tātad, kas ir "" un ~ Ox20 gatavojas sniegt man? 459 00:30:43,280 --> 00:30:48,200 [Studenti atbildēs dzirdams] >> Un, kas ir "", un - tas ir "." 460 00:30:48,200 --> 00:30:52,170 Un kas ir "" un ~ Ox20 gatavojas sniegt man? 461 00:30:52,170 --> 00:30:56,720 "A." Jo tas ir pašlaik 1. 462 00:30:56,720 --> 00:30:59,570 Anding šīs 0 gatavojas, lai padarītu to 0, 463 00:30:59,570 --> 00:31:02,530 un tagad mēs esam gatavojas iegūt "A". 464 00:31:02,530 --> 00:31:06,600 >> Abi ir "", un pēdējais, bet ne mazāk par šāda veida 465 00:31:06,600 --> 00:31:10,830 mums ir XOR. Tas ir ļoti daudz, piemēram, vai, 466 00:31:10,830 --> 00:31:14,400 izņemot tas nozīmē tikai vai. 467 00:31:14,400 --> 00:31:18,420 Tas ir tāpat kā tas, ko jūs parasti domā par vai reālajā pasaulē. 468 00:31:18,420 --> 00:31:23,190 Tātad, jūs vai nu "x" vai "y", bet ne abas. 469 00:31:23,190 --> 00:31:28,700 Šeit 1 ^ 1 būs 0. 470 00:31:28,700 --> 00:31:33,650 Jo taisnība, tas ir - tas nedarbojas, kā arī ar loģisku patieso un viltus 471 00:31:33,650 --> 00:31:37,150 kā Bitu līmeņa un, un vai arī, 472 00:31:37,150 --> 00:31:40,100 bet taisnība ^ true, ir nepatiess. 473 00:31:40,100 --> 00:31:44,810 Jo mēs tikai vēlamies, lai atgrieztos taisnība, ja tikai viens no viņiem ir taisnība. 474 00:31:44,810 --> 00:31:50,950 Tātad 1 ^ 1 ir 0. Kas par 0 ^ 1? 475 00:31:50,950 --> 00:31:56,010 Ir 1. 1 ^ 0, 1, 0 ^ 0 0. 476 00:31:56,010 --> 00:32:03,890 Tāpēc visos gadījumos 0 Bitu līmeņa kaut 0 būs 0. 477 00:32:03,890 --> 00:32:10,270 1 Bitu līmeņa kaut 0 vai 0 Bitu līmeņa 1, 478 00:32:10,270 --> 00:32:14,660 ja tas ir | un ^, tas būs 1, un, ja tas ir un tas būs 0. 479 00:32:14,660 --> 00:32:20,850 Un vienīgais gadījums, kad 1 Bitu līmeņa 1 nav 1 ir ar ekskluzīvu vai. 480 00:32:20,850 --> 00:32:24,580 Tas ir 0110. 481 00:32:24,580 --> 00:32:36,520 Tātad šeit tagad, izmantojot XOR - tāpēc mēs esam atpakaļ uz 20. 482 00:32:36,520 --> 00:32:43,480 "" ^ Ox20 ir šie 2 biti mēs salīdzināja. 483 00:32:43,480 --> 00:32:50,020 Tātad 1 ^ 0 gatavojas sniegt man to, ko? Vienu. 484 00:32:50,020 --> 00:32:58,430 "" ^ Ox20 gatavojas sniegt man? Mazajiem burtiem. 485 00:32:58,430 --> 00:33:04,010 "" ^ Ox20 gatavojas sniegt man? Kapitāls A. 486 00:33:04,010 --> 00:33:09,310 Tāpēc, ka kāds to dara, tas XORing ar Ox20 487 00:33:09,310 --> 00:33:15,380 efektīvi flipping kāds šis bits ir. 488 00:33:15,380 --> 00:33:21,240 Ja tas ir 0, tas ir tagad gatavojas kļūt par 1. 489 00:33:21,240 --> 00:33:26,160 Tā kā tas ir 1, 1 ^ 1 ir 0. 490 00:33:26,160 --> 00:33:33,280 Tātad, mūsu "a" ir kļuvusi "A", un mūsu "A" ir kļuvusi "". 491 00:33:33,280 --> 00:33:36,910 Tātad XOR ir ļoti ērts veids, kā vienkārši flipping lietu. 492 00:33:36,910 --> 00:33:39,960 Jūs vienkārši vēlaties atkārtot pār virkni vēstuļu 493 00:33:39,960 --> 00:33:44,330 un pārmaiņus lietu katru rakstzīmi, 494 00:33:44,330 --> 00:33:50,680 jūs vienkārši XOR visu ar Ox20. 495 00:33:50,680 --> 00:33:55,220 >> Tagad mēs esam atstājuši maiņu. Kreisi pāreja ir tikai gatavojas, būtībā, 496 00:33:55,220 --> 00:34:01,250 push visus numurus, vai pa kreisi, un ievietojiet 0 aiz viņiem. 497 00:34:01,250 --> 00:34:05,550 Tāpēc šeit mēs esam 00001101. 498 00:34:05,550 --> 00:34:08,560 Mēs ejam, lai push 3 0 ir no labās puses, 499 00:34:08,560 --> 00:34:13,580 un mēs 01101000. 500 00:34:13,580 --> 00:34:16,380 In nonbinary izteiksmē, 501 00:34:16,380 --> 00:34:24,699 mēs redzam, ka tas ir patiešām nodarbojas 13 kreiso nobīdi ar 3, kas dod mums 104. 502 00:34:24,699 --> 00:34:32,530 Tātad pa kreisi mainās, mēs redzam šeit, x << y būtībā x * 2 ^ y. 503 00:34:32,530 --> 00:34:40,139 13 * 2 ^ 3, 2 ^ 3 ir 8, lai 13 * 8 ir 104. 504 00:34:40,139 --> 00:34:45,679 Ja jūs vienkārši domājat par bināro vispār, cik katra cipara, 505 00:34:45,679 --> 00:34:49,530 ja mēs sākam no labās puses, tas ir 1 ir vieta, tad 2 ir vieta, tad 4 vietā. 506 00:34:49,530 --> 00:34:51,330 Tātad, nospiežot 0 ir no labās puses, 507 00:34:51,330 --> 00:34:55,080 mēs esam tikai stumšanas lietas, kas bija gada 4 vietā uz 8 vietu, 508 00:34:55,080 --> 00:34:57,920 un lietām, kas bija par 8 vietā uz 16 vietu. 509 00:34:57,920 --> 00:35:01,280 Katra maiņa vienkārši reizina ar 2. Yeah? 510 00:35:01,280 --> 00:35:05,210 [Student] Kas notiek, ja jūs nobīdīts par 5? 511 00:35:05,210 --> 00:35:10,790 [Bowden] Ja nobīdīts 5 jūs tikai zaudēt cipariem. 512 00:35:10,790 --> 00:35:15,410 Neizbēgami, tas pats. Tāpat, veseli skaitļi ir tikai 32 biti, 513 00:35:15,410 --> 00:35:20,750 tādēļ, ja jūs pievienojat 2 patiešām lielas skaitļu, tas vienkārši neiederas veselam skaitlim. 514 00:35:20,750 --> 00:35:23,660 Tātad, tas ir tas pats šeit. Ja jūs nobīdīts 5, 515 00:35:23,660 --> 00:35:25,650 mēs tikai zaudēt, ka viens. 516 00:35:25,650 --> 00:35:28,820 Un tas ir veids, ko es domāju ar "aptuveni" 517 00:35:28,820 --> 00:35:37,470 kur, ja jūs maiņās pārāk tālu, jūs zaudējat bitiem. 518 00:35:37,470 --> 00:35:39,830 >> Tiesības pāreja būs pretējs, 519 00:35:39,830 --> 00:35:43,090 kur mēs ejam, lai bāzt 0 s pie beigām, 520 00:35:43,090 --> 00:35:48,400 un par mūsu mērķiem, aizpildiet 0 ir no kreisās puses. 521 00:35:48,400 --> 00:35:52,910 Tā darot, mēs būtībā atpakaļgaitā, ko mēs jau darīts. 522 00:35:52,910 --> 00:35:57,780 Un mēs redzam, ka trīs 0 ir labajā pusē ir tikai samazinājies off, 523 00:35:57,780 --> 00:36:02,020 un mēs uzstājām 1101 visu ceļu pa labi. 524 00:36:02,020 --> 00:36:08,380 To dara 104 >> 3, kas ir, faktiski, x / 2 ^ y. 525 00:36:08,380 --> 00:36:11,200 Tāpēc tagad, šeit, tā ir līdzīga ideja. 526 00:36:11,200 --> 00:36:18,720 Kāpēc tas ir tikai apmēram x / 2 ^ y, un faktiski nav x / 2 ^ y? 527 00:36:18,720 --> 00:36:22,240 Jo, ja man bija nobīdīts par 4, es būtu zaudējis 1. 528 00:36:22,240 --> 00:36:25,950 Būtībā, ko jūs domājat, tikai domāju, ka skaitlim sadalījumu kopumā. 529 00:36:25,950 --> 00:36:31,070 Tātad, piemēram, 5/2, ir 2. Tas nav 2.5. 530 00:36:31,070 --> 00:36:35,000 Tā ir pati ideja šeit. Kad mēs to izdalot ar 2, 531 00:36:35,000 --> 00:36:39,910 mēs varam zaudēt nepāra biti gar ceļu. 532 00:36:39,910 --> 00:36:43,870 Tāpēc tagad - tas ir tas, lai Bitu līmeņa. Tas ir viss, kas jums ir jāzina. 533 00:36:43,870 --> 00:36:46,340 Atcerieties izmantot gadījumos mēs redzējām klasē, 534 00:36:46,340 --> 00:36:49,340 piemēram, mazliet maska ​​ir noderīga Bitu līmeņa operatoriem, 535 00:36:49,340 --> 00:36:53,220 vai arī izmantot tos bitu maskas. 536 00:36:53,220 --> 00:36:58,620 Lielie burti un mazie burti, pārrēķini ir diezgan prototipu piemērs. 537 00:36:58,620 --> 00:37:01,640 >> Labi, lai bufera pārpildes uzbrukumiem. 538 00:37:01,640 --> 00:37:05,110 Kāds atceras, kas bija nepareizi ar šo funkciju? 539 00:37:05,110 --> 00:37:10,140 Jāatzīmē, mums paziņoja, masīvs 12 baitu, 12 simboli, 540 00:37:10,140 --> 00:37:18,510 un tad mēs kopēt mūsu bufera 12 rakstzīmēm visa virkne bāru. 541 00:37:18,510 --> 00:37:25,080 Tātad, kāda ir problēma šeit? 542 00:37:25,080 --> 00:37:32,270 Maģiskais skaitlis 12 ir diezgan daudz nekavējoties pop no kā - Kāpēc 12? 543 00:37:32,270 --> 00:37:35,050 Ko darīt, ja josla notiek, ir vairāk nekā 12 rakstzīmes? 544 00:37:35,050 --> 00:37:41,200 Ko darīt, ja bārs ir miljoniem rakstzīmes? 545 00:37:41,200 --> 00:37:46,010 Šeit jautājums ir memcpy. Ja josla ir pietiekami ilgi, 546 00:37:46,010 --> 00:37:50,330 tas būs tikai pilnīgi - "c", "c" nav vienalga, ka tas bija tikai 12 rakstzīmes; 547 00:37:50,330 --> 00:37:53,280 "C" nav vienalga, ka tā nevar fit, ka daudzi baiti. 548 00:37:53,280 --> 00:37:58,250 Tas būs tikai pilnīgi pārrakstīt char, 12 baiti mēs esam piešķirti to, 549 00:37:58,250 --> 00:38:01,830 un viss pagātnē to atmiņu, kas nav faktiski pieder šim buferis 550 00:38:01,830 --> 00:38:06,520 ar kāda string josla ir. 551 00:38:06,520 --> 00:38:09,780 Tāpēc tas bija, mēs redzējām klasē attēlu 552 00:38:09,780 --> 00:38:12,220 kur mums ir mūsu kaudze aug. 553 00:38:12,220 --> 00:38:16,040 Jums vajadzētu izmantot, lai šos attēlus vai iepazīties ar tiem vēlreiz. 554 00:38:16,040 --> 00:38:21,260 Mums ir mūsu kaudze aug, atmiņas adreses sākas ar 0 augšā 555 00:38:21,260 --> 00:38:26,270 un augt uz leju, lai, piemēram, 4 miljardus apakšā. 556 00:38:26,270 --> 00:38:28,820 Mums ir mūsu Bloks "c" kaut kur atmiņā, 557 00:38:28,820 --> 00:38:32,260 tad mums ir mūsu rādītāju bar tieši zem tā, 558 00:38:32,260 --> 00:38:38,720 un tad mums ir šī saglabātas kadru rādītājs mūsu atgriešanās adresi un mūsu mātes rutīnas ir kaudze. 559 00:38:38,720 --> 00:38:40,800 Atcerieties, ko atgriešanās adrese ir? 560 00:38:40,800 --> 00:38:45,360 Tas ir, kad galvenais izsauc funkciju foo aicina funkciju bārs, 561 00:38:45,360 --> 00:38:48,100 neizbēgami, bārs atdevi. 562 00:38:48,100 --> 00:38:52,610 Tātad, kad bārs atgriežas, viņiem ir jāzina, ka tas atgriežās foo ka sauc to. 563 00:38:52,610 --> 00:39:01,360 Tāpēc atgriešanās adrese ir adrese, funkcijas, kas tai ir, lai atgrieztos, ja funkcija atgriež. 564 00:39:01,360 --> 00:39:05,830 Iemesla dēļ, ka ir svarīgi, lai bufera pārpildes uzbrukumiem ir tāpēc, ka ērti, 565 00:39:05,830 --> 00:39:09,580 hakeri gribētu mainīt šo atpakaļadresi. 566 00:39:09,580 --> 00:39:14,950 Tā vietā, lai dodas atpakaļ uz foo, es iešu atpakaļ kur hakeris grib doties atpakaļ uz. 567 00:39:14,950 --> 00:39:17,760 Un, ērti, ja hakeris bieži vēlas doties atpakaļ uz 568 00:39:17,760 --> 00:39:22,400 ir sākums bufera, ka mēs sākotnēji bija. 569 00:39:22,400 --> 00:39:26,170 Tātad paziņojums, atkal maz Indijas. 570 00:39:26,170 --> 00:39:28,490 Ierīce ir piemērs Little Indijas sistēma, 571 00:39:28,490 --> 00:39:34,140 tāpēc skaitlis vai rādītājs tiek saglabāts ar baitu samazināti. 572 00:39:34,140 --> 00:39:38,980 Tāpēc šeit mēs redzam - tas ir? Jā. 573 00:39:38,980 --> 00:39:45,660 Mēs redzam Ox80, OxC0, Ox35, OxO8. 574 00:39:45,660 --> 00:39:48,250 Atcerieties heksadecimālo cipari? 575 00:39:48,250 --> 00:39:50,640 Mums nav mainīt heksadecimālo cipari Little Indijas, 576 00:39:50,640 --> 00:39:56,110 jo 2 heksadecimālcipariem veido vienu baitu, un mēs mainīt baiti. 577 00:39:56,110 --> 00:40:00,300 Tieši tāpēc mums nav uzglabāt, piemēram, 80530CO8. 578 00:40:00,300 --> 00:40:07,520 Mēs glabāt, nevis, katru 2 cipariem pāri, sākot no labās puses. 579 00:40:07,520 --> 00:40:10,880 Ka adrese attiecas uz adresi sākuma 580 00:40:10,880 --> 00:40:15,190 mūsu bufera, ka mēs patiešām vēlējāmies, lai iekopēt pirmajā vietā. 581 00:40:15,190 --> 00:40:19,230 Iemesls tas ir noderīgi, ir tāpēc, kas notiks, ja uzbrucējs 582 00:40:19,230 --> 00:40:24,100 notika, tā vietā, virkni, kas bija tikko 583 00:40:24,100 --> 00:40:27,060 nekaitīgs virkne, piemēram, savu vārdu vai kaut ko, 584 00:40:27,060 --> 00:40:33,900 ko tad, ja tā vietā, lai string bija tikai daži patvaļīgu kodu 585 00:40:33,900 --> 00:40:38,610 kas bija neatkarīgi no viņi vēlas to darīt? 586 00:40:38,610 --> 00:40:45,630 Lai viņi varētu - es nevaru iedomāties nevienu atdzist kodu. 587 00:40:45,630 --> 00:40:47,780 Tas varētu būt kaut kas, lai gan. Jebkura postošas ​​kodu. 588 00:40:47,780 --> 00:40:51,440 Ja viņi vēlas, viņi var vienkārši darīt kaut ko SEG kļūdām, bet tas būtu bezjēdzīgi. 589 00:40:51,440 --> 00:40:54,950 Viņi parasti to dara kapāt jūsu sistēmā. 590 00:40:54,950 --> 00:40:59,930 >> Labi. CS50 bibliotēka. 591 00:40:59,930 --> 00:41:04,800 Tas ir, būtībā, getInt, getString visas tās funkcijas, mēs paredzēti jums. 592 00:41:04,800 --> 00:41:10,630 Tāpēc mums ir char * virkne, un tas ir abstrakcija, ka mēs pūta prom 593 00:41:10,630 --> 00:41:12,450 kādā brīdī semestra laikā. 594 00:41:12,450 --> 00:41:18,220 Atcerieties, ka virkne ir vienkārši masīvs rakstzīmes. 595 00:41:18,220 --> 00:41:23,240 Tāpēc šeit mēs redzam saīsinātu versiju getString. 596 00:41:23,240 --> 00:41:25,920 Jums vajadzētu atskatīties uz to atcerēties, kā tas ir faktiski īstenoti. 597 00:41:25,920 --> 00:41:30,950 Galvenās detaļas ir, ievērosiet mēs ar vienu rakstzīmi laikā 598 00:41:30,950 --> 00:41:34,570 no standarta, kas ir tāpat kā mums rakstīt uz klaviatūras. 599 00:41:34,570 --> 00:41:37,890 Tātad vienu rakstzīmi laikā, un, ja mēs pārāk daudz rakstzīmes, 600 00:41:37,890 --> 00:41:40,580 Tātad, ja n + 1 ir lielāks nekā jaudas, 601 00:41:40,580 --> 00:41:44,140 tad mums ir nepieciešams, lai palielinātu mūsu bufera. 602 00:41:44,140 --> 00:41:47,780 Tāpēc šeit mēs esam dubultojot apjomu mūsu bufera. 603 00:41:47,780 --> 00:41:51,840 Un ka tur notiek, mēs ievietotu rakstzīmi mūsu bufera 604 00:41:51,840 --> 00:41:56,220 līdz mēs saņemsim jaunu līniju vai beigu failu vai kāds, 605 00:41:56,220 --> 00:41:59,380 tādā gadījumā, mēs esam darīts ar stīgu un tad reālā getString 606 00:41:59,380 --> 00:42:05,120 samazinās atmiņu, piemēram, ja mēs piešķīra pārāk daudz atmiņas tā iešu atpakaļ un sarauties mazliet. 607 00:42:05,120 --> 00:42:08,830 Tāpēc mēs neparāda, ka, bet galvenā ideja ir 608 00:42:08,830 --> 00:42:11,960 tas ir lasīt vienā rakstura laikā. 609 00:42:11,960 --> 00:42:17,140 Tas var ne tikai lasīt visu lieta uzreiz, 610 00:42:17,140 --> 00:42:19,550 jo to buferis ir tikai noteiktu lielumu. 611 00:42:19,550 --> 00:42:26,590 Tātad, ja virkne, tā mēģina ievietot buferis ir pārāk liels, tad tas pārplūst. 612 00:42:26,590 --> 00:42:28,940 Tāpēc šeit mēs novērstu, ka, tikai lasot vienā rakstura 613 00:42:28,940 --> 00:42:33,750 laikā, un pieaug, kad mums ir nepieciešams. 614 00:42:33,750 --> 00:42:40,270 Tāpēc getInt un citas CS50 bibliotēkas funkcijas mēdz izmantot getString 615 00:42:40,270 --> 00:42:42,310 ar to īstenošanu. 616 00:42:42,310 --> 00:42:45,370 Tāpēc es uzsvēra svarīgas lietas šeit. 617 00:42:45,370 --> 00:42:49,460 Tā aicina getString saņemt virkni. 618 00:42:49,460 --> 00:42:51,710 Ja getString neizdevās atgriezties atmiņu, 619 00:42:51,710 --> 00:42:54,270 atcerieties, ka getString mallocs kaut ko, lai ikreiz, kad zvanīt getString 620 00:42:54,270 --> 00:42:57,820 Jums nevajadzētu (nesaprotams) atbrīvotu šo virkni, kas jums. 621 00:42:57,820 --> 00:43:02,870 Tātad šeit, ja tas nav malloc kaut ko, mēs atgriežamies INT_MAX kā tikai karogu, kas, 622 00:43:02,870 --> 00:43:05,650 hey, mēs faktiski nav iespējams saņemt veselam skaitlim. 623 00:43:05,650 --> 00:43:10,830 Jums vajadzētu ignorēt visu, es atgriežos pie jums, vai 624 00:43:10,830 --> 00:43:15,540 jums nevajadzētu uzskatīt to par derīgu ieguldījumu. 625 00:43:15,540 --> 00:43:21,360 Visbeidzot, pieņemot, ka izdosies, mēs izmantojam sscanf ar šo īpašo karogu, 626 00:43:21,360 --> 00:43:23,820 , kas nozīmē, ka vispirms atbilstu vesels skaitlis, 627 00:43:23,820 --> 00:43:26,770 pēc tam saskaņot visas rakstzīmes pēc šī skaitlim. 628 00:43:26,770 --> 00:43:29,070 Tāpēc ievērosiet, mēs gribam, lai vienāds 1. 629 00:43:29,070 --> 00:43:32,940 Tātad sscanf atgriežas cik daudz spēles, ja veiksmīgi? 630 00:43:32,940 --> 00:43:37,010 Tā atgriezīsies 1, ja tā veiksmīgi saskaņota vesels skaitlis, 631 00:43:37,010 --> 00:43:40,890 tas atgriezīsies 0, ja tas neatbilst veselam skaitlim, un tā atgriezīsies 2 632 00:43:40,890 --> 00:43:45,920 ja tas atbilstu skaitlis sekoja neliels raksturs. 633 00:43:45,920 --> 00:43:49,780 Tāpēc ievērosiet mēs mēģinātu vēlreiz, ja mēs saskaņojam kaut kas, bet 1. 634 00:43:49,780 --> 00:43:55,230 Tātad, ja mēs ievadīta 1, 2, 3, C vai 1, 2, 3, X, 635 00:43:55,230 --> 00:43:57,400 tad 1, 2, 3 varētu iegūt glabājas vesels skaitlis, 636 00:43:57,400 --> 00:43:59,620 X varētu saņemt uzglabāts raksturs, 637 00:43:59,620 --> 00:44:06,410 sscanf atgriezīsies 2, un mēs varētu mēģināt vēlreiz, jo mēs tikai vēlamies veselam skaitlim. 638 00:44:06,410 --> 00:44:09,810 >> Ātri pūš caur HTML, HTTP, CSS. 639 00:44:09,810 --> 00:44:15,340 Hiperteksta iezīmēšanas valoda, ir struktūra un semantika no interneta. 640 00:44:15,340 --> 00:44:19,960 Šeit ir piemērs, no lekciju, kur mums ir HTML tagus. 641 00:44:19,960 --> 00:44:22,110 Mums ir galvenais tagus, ķermeņa tagus, 642 00:44:22,110 --> 00:44:27,770 mums ir piemēri tukši birkas, kur mēs faktiski nav sākuma un ciešu tagu, 643 00:44:27,770 --> 00:44:30,820 mums vienkārši ir saites un attēlu. 644 00:44:30,820 --> 00:44:38,480 Nav beigu attēla tagu, tur ir tikai viena tagu, kas varētu sasniegt visu, tag ir jādara. 645 00:44:38,480 --> 00:44:41,950 Saite ir piemērs, mēs redzēsim, kā jums saiti uz CSS, 646 00:44:41,950 --> 00:44:45,910 skripts ir piemērs tam, kā saiti uz ārēju JavaScript. 647 00:44:45,910 --> 00:44:53,100 Tas ir diezgan vienkārši, un atcerieties, HTML nav programmēšanas valoda. 648 00:44:53,100 --> 00:44:58,250 Lūk, atcerieties, kā jūs definētu formu, vai vismaz to, ko tas dara? 649 00:44:58,250 --> 00:45:01,740 Šāda forma ir darbību un metodi. 650 00:45:01,740 --> 00:45:06,210 Metodes, jums būs tikai kādreiz redzēt ir GET un POST. 651 00:45:06,210 --> 00:45:09,040 Tātad iegūt, ir versija, kurā lieta tiek likts URL. 652 00:45:09,040 --> 00:45:11,680 POST ir, ja tas nav likts URL. 653 00:45:11,680 --> 00:45:18,520 Tā vietā, visus datus no veidlapas iekļauj vairāk slēpta no HTTP pieprasījumu. 654 00:45:18,520 --> 00:45:22,390 Tātad šeit, darbības nosaka, ja HTTP pieprasījums iet. 655 00:45:22,390 --> 00:45:27,490 Ja tas notiek, ir google.com / search. 656 00:45:27,490 --> 00:45:32,890 Metodi. Atcerieties atšķirības starp GET un POST, 657 00:45:32,890 --> 00:45:37,200 un, vienkārši pateikt, kā, piemēram, ja jūs vēlaties, lai grāmatzīmi kaut ko. 658 00:45:37,200 --> 00:45:40,660 Jums nekad nebūs iespēja grāmatzīmi POST URL 659 00:45:40,660 --> 00:45:44,970 jo dati nav iekļauti URL. 660 00:45:44,970 --> 00:45:49,790 >> HTTP, tagad ir hiperteksta pārsūtīšanas protokols. 661 00:45:49,790 --> 00:45:54,080 Hiperteksta pārsūtīšanas protokols, jūs varētu sagaidīt to nodot 662 00:45:54,080 --> 00:45:57,710 Hiperteksta iezīmēšanas valoda, un tā dara. 663 00:45:57,710 --> 00:46:00,170 Bet tas ir arī nodod jebkuru attēlu jūs atrast tīmeklī, 664 00:46:00,170 --> 00:46:05,400 jebkura lejupielāde veicat sākt, HTTP pieprasījumu. 665 00:46:05,400 --> 00:46:10,350 Tāpēc HTTP ir tikai valoda World Wide Web. 666 00:46:10,350 --> 00:46:15,610 Un šeit jums ir nepieciešams atzīt šāda veida HTTP pieprasījumu. 667 00:46:15,610 --> 00:46:19,300 Šeit HTTP/1.1 uz pusi vienkārši saka, ka ir versija 668 00:46:19,300 --> 00:46:21,570 Protokola es esmu, izmantojot. 669 00:46:21,570 --> 00:46:25,770 Tas ir diezgan daudz vienmēr būs HTTP/1.1, kā jūs to redzat. 670 00:46:25,770 --> 00:46:30,110 Tad mēs redzam, ka tas bija GET, alternatīva ir POST, ka jūs varētu redzēt. 671 00:46:30,110 --> 00:46:40,790 Un URL, ko es centos apmeklēt bija www.google.com/search?q = blah, blah, blah. 672 00:46:40,790 --> 00:46:44,240 Tāpēc atcerieties, ka tas, jautājuma zīme q = blah blah blah, 673 00:46:44,240 --> 00:46:49,040 ir sava veida sīkumi, kas ir iesniegusi veidlapu. 674 00:46:49,040 --> 00:46:51,830 Atbilde tā varētu atgriezties pie manis varētu izskatīties kaut kas līdzīgs šim. 675 00:46:51,830 --> 00:46:54,050 Again, sākot ar protokolu, kas tiek būs, ka, 676 00:46:54,050 --> 00:46:59,190 kam seko statusa kodu. Lūk, tas ir 200 OK. 677 00:46:59,190 --> 00:47:05,060 Un visbeidzot, mājas lapas, ka es tiešām lūdza sekos. 678 00:47:05,060 --> 00:47:08,210 Iespējams statusa kods, jūs varētu redzēt, un jums vajadzētu zināt, vairāki no tiem. 679 00:47:08,210 --> 00:47:12,770 200 Labi, jūs, iespējams, nav redzējis. 680 00:47:12,770 --> 00:47:17,830 403 Forbidden, 404 Not Found, 500 Iekšējā servera kļūda 681 00:47:17,830 --> 00:47:22,140 Parasti, ja jums iet uz mājas lapā un kaut kas ir bojāts vai to PHP kodu avārijām, 682 00:47:22,140 --> 00:47:24,930 tā kā ierīces mums ir tik liels Oranžā 683 00:47:24,930 --> 00:47:27,830 , kas nāk uz augšu, un saka, piemēram, kaut kas nav kārtībā, šis kods nedarbojas 684 00:47:27,830 --> 00:47:30,380 vai šī funkcija ir slikti. 685 00:47:30,380 --> 00:47:33,230 Parasti mājas lapas negribu, ka jūs zināt, kādas funkcijas ir patiešām slikti, 686 00:47:33,230 --> 00:47:37,880 tā vietā viņi būs tikai jums 500 Iekšējā servera kļūdas. 687 00:47:37,880 --> 00:47:43,050 >> TCP / IP ir 1 slānis zem HTTP. 688 00:47:43,050 --> 00:47:47,550 Atcerieties, ka ir internets ārpus World Wide Web. 689 00:47:47,550 --> 00:47:52,270 Tāpat kā, ja jūs spēlēt tiešsaistes spēli, kas nav iet caur HTTP, 690 00:47:52,270 --> 00:47:55,740 tas iet cauri dažādi - tas joprojām ir, izmantojot internetu, 691 00:47:55,740 --> 00:47:58,900 bet tas neizmanto HTTP. 692 00:47:58,900 --> 00:48:02,470 HTTP ir tikai viens piemērs no protokola pamatā ir TCP / IP. 693 00:48:02,470 --> 00:48:07,820 IP burtiski nozīmē interneta protokolu. 694 00:48:07,820 --> 00:48:11,500 Katram datoram ir IP adrese, tie ir tie 4 ciparu lietas 695 00:48:11,500 --> 00:48:16,510 piemēram, 192.168.2.1, vai kāds, kas mēdz būt vietējais. 696 00:48:16,510 --> 00:48:23,390 Bet tas ir modelis IP adresi. 697 00:48:23,390 --> 00:48:29,060 Tātad DNS, Domain Name Service, 698 00:48:29,060 --> 00:48:33,410 ka tas, ko pārveido lietas, piemēram, google.com ar faktisko IP adresi. 699 00:48:33,410 --> 00:48:37,700 Tātad, ja jūs tipa, ka IP adresi URL, 700 00:48:37,700 --> 00:48:40,850 , kas dos jums Google, bet jūs nemēdz atcerēties tās lietas. 701 00:48:40,850 --> 00:48:45,470 Jums ir tendence, nevis atcerēties google.com. 702 00:48:45,470 --> 00:48:51,560 Pēdējā lieta, mums ir ostas, kur tas ir TCP daļa IP. 703 00:48:51,560 --> 00:48:54,880 TCP ir kas vairāk. Domāt par, piemēram, jums ir jūsu interneta pārlūkprogrammā, kas darbojas. 704 00:48:54,880 --> 00:48:58,670 Varbūt jums ir kāda e-pasta lietojumprogramma; 705 00:48:58,670 --> 00:49:02,150 varbūt jums ir kāda cita programma, kas izmanto interneta darbību. 706 00:49:02,150 --> 00:49:05,090 Viņiem visiem ir pieejams internets, 707 00:49:05,090 --> 00:49:08,100 bet jūsu dators ir tikai 1 WiFi karti vai neatkarīgi. 708 00:49:08,100 --> 00:49:10,780 Tātad ostas ir tā, ka mēs esam spējīgi sadalīt 709 00:49:10,780 --> 00:49:13,550 kā šie pieteikumi ir iespēja izmantot internetu. 710 00:49:13,550 --> 00:49:17,230 Katrs pieteikums saņem 1 konkrētu portu, ka tā var klausīties tālāk, 711 00:49:17,230 --> 00:49:19,670 un pēc noklusējuma, HTTP izmanto portu 80. 712 00:49:19,670 --> 00:49:22,410 Daži e-pasta pakalpojumus izmanto 25. 713 00:49:22,410 --> 00:49:24,490 Zemas numurētas tiem mēdz būt aizsargātas. 714 00:49:24,490 --> 00:49:29,270 Jums parasti ir iespēja saņemt augstāku numurētas tiem pats. 715 00:49:29,270 --> 00:49:32,010 >> CSS, Cascading Style Sheets. 716 00:49:32,010 --> 00:49:36,030 Mēs stils interneta lapas ar CSS, nevis HTML. 717 00:49:36,030 --> 00:49:38,440 Ir 3 vietas, jūs varat ievietot savu CSS. 718 00:49:38,440 --> 00:49:46,300 Tas var būt inline starp stila tagiem, vai pilnīgi atsevišķā failā, un pēc tam saistīt iekšā 719 00:49:46,300 --> 00:49:48,470 Un šeit ir tikai piemērs CSS. 720 00:49:48,470 --> 00:49:50,450 Jums vajadzētu atzīt šo modeli, 721 00:49:50,450 --> 00:49:54,310 ja pirmais piemērs ir, mēs esam saskaņojot ķermeņa tag, 722 00:49:54,310 --> 00:49:56,680 un šeit mēs esam centrējot ķermeņa tag. 723 00:49:56,680 --> 00:50:00,420 Otrs piemērs, mēs esam saskaņojot lieta 724 00:50:00,420 --> 00:50:04,740 ar ID kājenes, un mēs esam piemērot dažus stilus, lai to. 725 00:50:04,740 --> 00:50:07,310 Ievērojiet, ka ID kājenes teksta biznesa plānā pa kreisi, 726 00:50:07,310 --> 00:50:09,840 tā pamattekstu-līdzina centru. 727 00:50:09,840 --> 00:50:13,180 Kolektors ir ķermeņa iekšpusē. 728 00:50:13,180 --> 00:50:16,470 Tā vietā, teksta saskaņot pa kreisi, lai gan ķermenis saka teksta Līdzināt uz centru. 729 00:50:16,470 --> 00:50:18,880 Tas ir visai kaskādes daļa no tā. 730 00:50:18,880 --> 00:50:22,110 Jums var būt - jūs varat norādīt stilus organismā, 731 00:50:22,110 --> 00:50:25,320 un tad viss, kas organismā var norādīt konkrētāki stilus, 732 00:50:25,320 --> 00:50:28,160 un viss strādā, kā jūs sagaida. 733 00:50:28,160 --> 00:50:34,420 Konkrētāki CSS tehnisko specifikāciju priekšroka. 734 00:50:34,420 --> 00:50:46,140 Es domāju, ka tas arī viss. 735 00:50:46,140 --> 00:50:49,260 >> [Ali Nahm] Sveiki visiem. Ja es varētu tikai iegūt jūsu uzmanību. 736 00:50:49,260 --> 00:50:53,990 Es esmu Ali un es iešu cauri PHP un SQL tiešām ātri. 737 00:50:53,990 --> 00:51:00,310 Tātad, mēs varam sākt. PHP ir īss PHP: Hiperteksta Preprocessor. 738 00:51:00,310 --> 00:51:03,730 Un, kā jūs visi vajadzētu zināt, tas ir servera puses skriptu valoda, 739 00:51:03,730 --> 00:51:06,800 un mēs to izmantot atpakaļ beigām mājas lapas, 740 00:51:06,800 --> 00:51:12,540 un cik tas daudz par aprēķinu, kas aiz-ainas daļu. 741 00:51:12,540 --> 00:51:17,510 Sintakse. Tas nav, piemēram, C, pārsteigums, pārsteigums. 742 00:51:17,510 --> 00:51:22,060 Tas vienmēr ir jāsāk ar, ja jūs varat redzēt, - es nevaru virzīties uz priekšu. 743 00:51:22,060 --> 00:51:31,340 Jūs varat redzēt, jums ir nepieciešams jauna veida lencēm, un tad jums arī ir nepieciešams? Php. 744 00:51:31,340 --> 00:51:35,780 Tas vienmēr kā jums kadrēt PHP tekstu, savu PHP kodu. 745 00:51:35,780 --> 00:51:39,180 Tāpēc tas var būt tikai, piemēram, C, kur jūs veida nodot to pirmo reizi. 746 00:51:39,180 --> 00:51:42,290 Jums ir nepieciešams, lai vienmēr surround to. 747 00:51:42,290 --> 00:51:47,610 Un tagad, galvenais sintakse ir tāda, ka visi mainīgie ir nepieciešams, lai sāktu ar $ raksturu. 748 00:51:47,610 --> 00:51:49,490 Jums ir nepieciešams to darīt, ja jūs tos definējot, jums ir nepieciešams, lai to izdarītu 749 00:51:49,490 --> 00:51:51,860 ja jūs, kas attiecas uz tiem vēlāk. 750 00:51:51,860 --> 00:51:56,510 Jums vienmēr ir nepieciešams, ka $. Tā ir jūsu jauno labāko draugu, diezgan daudz. 751 00:51:56,510 --> 00:52:01,690 Jums nav - atšķirībā no C, jums nav nepieciešams, lai kāda veida mainīgo veida tā ir. 752 00:52:01,690 --> 00:52:04,940 Tāpēc, kamēr jums ir nepieciešams $, jums nav nepieciešams, lai, piemēram, 753 00:52:04,940 --> 00:52:09,470 int x vai string y, etcetera, etcetera. 754 00:52:09,470 --> 00:52:11,490 Tāpēc neliela atšķirība. 755 00:52:11,490 --> 00:52:15,590 , Kā rezultātā, tas nozīmē, ka PHP ir vāji tipa. 756 00:52:15,590 --> 00:52:19,310 PHP ir vāji tipa valoda, un tā ir vāji drukāti mainīgos. 757 00:52:19,310 --> 00:52:24,020 Citiem vārdiem sakot, tas nozīmē, ka jūs varat pārslēgties starp dažādiem mainīgo tipiem. 758 00:52:24,020 --> 00:52:27,230 Jūs varat saglabāt savu numuru 1, kā int, 759 00:52:27,230 --> 00:52:29,650 jūs varat saglabāt to kā virkni, un jūs varat saglabāt to kā peldēt, 760 00:52:29,650 --> 00:52:33,550 un tas viss būs, ka skaitlis 1. 761 00:52:33,550 --> 00:52:36,080 Pat ja jūs uzglabāt to dažādos veidos, 762 00:52:36,080 --> 00:52:39,120 tas joprojām ir - mainīgās veidi joprojām turot beigās. 763 00:52:39,120 --> 00:52:41,540 Tātad, ja jūs meklēt šeit, ja jūs atceraties no PSET 7, 764 00:52:41,540 --> 00:52:43,500 daudzi no jums, iespējams, bija problēmas ar to. 765 00:52:43,500 --> 00:52:47,280 Divas vienādas zīmes, 3 vienādas zīmes, 4 vienādas zīmes. 766 00:52:47,280 --> 00:52:49,990 Labi, nav 4 vienādas pazīmes, bet ir 2 un 3. 767 00:52:49,990 --> 00:52:53,320 Jūs varat izmantot 2 vienādas zīmes, lai pārbaudītu vērtības. 768 00:52:53,320 --> 00:52:55,830 To var pārbaudīt dažādos tipos. 769 00:52:55,830 --> 00:52:58,770 Tātad, ja jūs varat redzēt pirmo piemēru, 770 00:52:58,770 --> 00:53:02,210 Man ir num_int == num_string. 771 00:53:02,210 --> 00:53:06,710 Tātad jūsu int un jūsu string ir gan tehniski, 1, 772 00:53:06,710 --> 00:53:10,790 bet viņi dažādi veidi. Bet par dubulto vienāds, tas būs vēl iet. 773 00:53:10,790 --> 00:53:15,510 Tomēr, lai triple vienlīdzīgiem, tā pārbauda vērtību, kā arī dažāda veida. 774 00:53:15,510 --> 00:53:18,760 Tas nozīmē, ka tas nav gatavojas iet šajā otrajā gadījumā šeit 775 00:53:18,760 --> 00:53:22,350 kur jūs izmantojat 3 vienādas zīmes vietā. 776 00:53:22,350 --> 00:53:26,590 Tā ka ir liela atšķirība, ka jums ir visi ir parādījuši tagad. 777 00:53:26,590 --> 00:53:31,570 >> String konkatenācija ir vēl viens spēcīgs lieta, jūs varat izmantot PHP. 778 00:53:31,570 --> 00:53:34,080 Tas ir būtībā tikai tas ērts dot apzīmējums, 779 00:53:34,080 --> 00:53:36,230 un tas, kā jūs varat saistīt virknes kopā. 780 00:53:36,230 --> 00:53:40,800 Tātad, ja jums ir kaķis, un jums ir suns, un jūs vēlaties, lai arī 2 stīgas kopā, 781 00:53:40,800 --> 00:53:44,080 Jūs varat izmantot šo periodu, un tas ir veids, kā tā darbojas. 782 00:53:44,080 --> 00:53:46,660 Kā arī var vienkārši novietot blakus viens otram, 783 00:53:46,660 --> 00:53:49,030 kā jūs varat redzēt šeit apakšā, piemēram, 784 00:53:49,030 --> 00:53:51,610 kur esmu atkārtoju virkni 1, telpas stīgu 2. 785 00:53:51,610 --> 00:53:56,930 PHP zinās, lai aizstātu tos kā tādu. 786 00:53:56,930 --> 00:53:59,780 Masīvi. Tagad, PHP, ir 2 dažādi masīvi. 787 00:53:59,780 --> 00:54:03,180 Jums var būt regulāri bloki, un jūs varat arī asociatīvas bloki, 788 00:54:03,180 --> 00:54:06,040 un mēs esam gatavojas iet caur tiem, tiesības tagad. 789 00:54:06,040 --> 00:54:08,280 Regulāras masīvi ir tikai tas C, 790 00:54:08,280 --> 00:54:11,240 , un tāpēc jums ir indeksi, kas ir numurētas. 791 00:54:11,240 --> 00:54:13,160 Tieši tagad mēs esam tikai gatavojas, lai radītu vienu un nodot - 792 00:54:13,160 --> 00:54:15,500 tā tas ir, kā mēs veidojam tukšu masīvu, tad mēs ejam uz 793 00:54:15,500 --> 00:54:17,310 laiž indeksa numuru 0. 794 00:54:17,310 --> 00:54:19,200 Mēs gatavojamies nodot skaits 6, vērtību 6. 795 00:54:19,200 --> 00:54:21,500 Jūs varat redzēt to apakšā šeit. 796 00:54:21,500 --> 00:54:24,240 Where's - pie indeksa numuru 1, mēs esam gatavojas nodot vērtību skaits 4, 797 00:54:24,240 --> 00:54:26,720 un lai jūs varētu redzēt, tur ir 6, tur ir 4, 798 00:54:26,720 --> 00:54:29,160 un tad kā mēs esam drukāšanas lietas, 799 00:54:29,160 --> 00:54:33,550 kad mēs cenšamies un izdrukāt vērtību glabājas indeksa numuru 0, 800 00:54:33,550 --> 00:54:36,900 Tad mēs redzēsim vērtību 6 to izdrukāt. Cool? 801 00:54:36,900 --> 00:54:40,160 Tātad tas ir regulāri bloki jums. 802 00:54:40,160 --> 00:54:42,750 Vēl viens veids, kā jūs varat pievienot arī lietas, kas regulāri masīvi tagad 803 00:54:42,750 --> 00:54:44,780 ir tā, jūs varat vienkārši pievienot tos beigās. 804 00:54:44,780 --> 00:54:47,240 Tas nozīmē, ka jums nav, lai norādītu konkrētu indeksu. 805 00:54:47,240 --> 00:54:51,000 Jūs varat redzēt numuru, un tad kvadrātiekavās nav indekss norādīts. 806 00:54:51,000 --> 00:54:56,270 Un tas zinās - PHP zinās tikai pievienot to saraksta beigās, nākamā bezmaksas vietas. 807 00:54:56,270 --> 00:54:59,190 Tātad jūs varat redzēt 1 turpat tajā 0 vietas 808 00:54:59,190 --> 00:55:02,690 2 devās tieši tur pirmajā vietā. 809 00:55:02,690 --> 00:55:04,690 3 iet - pievieno arī tur. 810 00:55:04,690 --> 00:55:06,720 Tātad šāda veida jēga. Jūs vienkārši pastāvīgi pievienojot to, 811 00:55:06,720 --> 00:55:09,360 un tad, kad mēs esam atsaucoties uz indeksu numuru 1, 812 00:55:09,360 --> 00:55:13,080 tas izdrukāt vērtību 2. 813 00:55:13,080 --> 00:55:16,800 >> Tad mums ir bloki, kas ir asociatīvas bloki. 814 00:55:16,800 --> 00:55:19,370 Asociatīvas bloki, tā vietā, skaitliskos rādītājus, 815 00:55:19,370 --> 00:55:23,630 ko viņi dara, ir, tie ir rādītāji, kas ir ar auklu. 816 00:55:23,630 --> 00:55:25,670 Jūs varat redzēt, nevis - es got atbrīvoties no visiem tiem numuru indeksu, 817 00:55:25,670 --> 00:55:32,140 un tagad tas ir taustiņš1, key2, key3, un viņi ir pēdiņās, lai norādītu, ka viņi visi stīgas. 818 00:55:32,140 --> 00:55:34,470 Tātad, mēs varam būt piemērs par to. 819 00:55:34,470 --> 00:55:38,790 Tas piemērs ir tas, ka mums ir TF, un tas ir rādītājs vārdu. 820 00:55:38,790 --> 00:55:42,030 Mēs ejam, lai "Ali", kā nosaukums, pēc indeksu, kalorijas ēst, 821 00:55:42,030 --> 00:55:47,640 mēs varam nodot int šoreiz nevis virknes, 822 00:55:47,640 --> 00:55:52,240 un tad pie indeksa patīk, mēs varam likt visu masīvu iekšpusē no tā. 823 00:55:52,240 --> 00:55:55,490 Tātad šis ir veids - tas ir līdzīgs jēdziens, kā mums bija 824 00:55:55,490 --> 00:55:58,930 indeksi ar skaitļiem, bet tagad mēs varam mainīt indeksus apkārt 825 00:55:58,930 --> 00:56:03,890 , lai tos kā stīgas vietā. 826 00:56:03,890 --> 00:56:06,070 Jūs varat arī izdarīt, turklāt tikai darot to individuāli, 827 00:56:06,070 --> 00:56:09,400 jūs varat darīt to visu vienā rieciens. Tātad jūs varat redzēt, ka TF šī masīva, 828 00:56:09,400 --> 00:56:13,350 un tad mēs noteikti tos visus vienā milzu kvadrātiekavas komplektu. 829 00:56:13,350 --> 00:56:15,220 Tā, ka var paātrināt lietas uz augšu. 830 00:56:15,220 --> 00:56:19,730 Tas ir vairāk par stilistisko izvēle nekā nav. 831 00:56:19,730 --> 00:56:21,550 Mums ir arī cilpas. 832 00:56:21,550 --> 00:56:26,020 C mums ir cilpas, kas darbojas kā šis. 833 00:56:26,020 --> 00:56:29,690 Mums bija mūsu masīva, un mēs devās no indeksa 0 līdz beigām saraksta, 834 00:56:29,690 --> 00:56:31,740 un mēs izdrukāt to visu, vai ne? 835 00:56:31,740 --> 00:56:33,880 Izņemot problēma ir, asociatīvo masīvu, 836 00:56:33,880 --> 00:56:36,610 mēs ne vienmēr zina šos skaitliskos rādītājus 837 00:56:36,610 --> 00:56:39,610 jo tagad mums ir virknes indeksu. 838 00:56:39,610 --> 00:56:44,800 Tagad mēs izmantojam foreach cilpas, kas, atkal, jūs, cerams, ko izmanto PSET 7. 839 00:56:44,800 --> 00:56:48,930 Foreach cilpas būs tikai zināt, katru daļu sarakstu. 840 00:56:48,930 --> 00:56:52,450 Un tas nav jāzina, tieši ciparu indeksu, kas jums ir. 841 00:56:52,450 --> 00:56:56,490 Tātad jums ir foreach sintaksi, tāpēc tas ir foreach, jūs varat ievietot masīvs. 842 00:56:56,490 --> 00:57:00,430 Tātad mans masīvs sauc PSET, un tad kā, vārdu, jo, 843 00:57:00,430 --> 00:57:04,530 un tad jūs nodot šo vietējo pagaidu mainīgo, ka jūs gatavojas izmantot 844 00:57:04,530 --> 00:57:10,690 tikai konkrētā lieta, kas notiek, lai tur īpašs - 845 00:57:10,690 --> 00:57:14,770 vienā gadījumā vai viena sadaļa no masīva. 846 00:57:14,770 --> 00:57:18,350 PSET skaits rīkos 1, un tad varbūt tas būs turēt numuru 6, 847 00:57:18,350 --> 00:57:20,410 un tad tas turēs numuru 2. 848 00:57:20,410 --> 00:57:26,630 Bet tas ir garantēta, lai iet caur katru vērtību, kas ir masīvā. 849 00:57:26,630 --> 00:57:30,530 Noderīgas funkcijas, kas jums būtu jāzina, PHP ir nepieciešama, 850 00:57:30,530 --> 00:57:35,880 tā, kas padara pārliecināts, ka jūs esat, ieskaitot dažus failus, atbalss, izvešanu, tukša. 851 00:57:35,880 --> 00:57:40,490 Es ļoti iesakām jums apskatīt PSET 7 un apskatīt šīm funkcijām. 852 00:57:40,490 --> 00:57:42,810 Jums, iespējams, ir jāzina tiem, 853 00:57:42,810 --> 00:57:47,060 tāpēc es noteikti zinu, ko, tieši tā, tie visi dara. 854 00:57:47,060 --> 00:57:50,080 >> Un tagad mēs esam gatavojas iet cauri jomu tiešām ātri. 855 00:57:50,080 --> 00:57:53,490 Joma, PHP ir sava veida bailīgs lieta, atšķirībā no C, 856 00:57:53,490 --> 00:57:56,170 un tāpēc mēs esam tikai gatavojas iet caur to ātri. 857 00:57:56,170 --> 00:57:58,930 Tātad pieņemsim, ka mēs sākam tajā bultiņu, kas mēs esam tur. 858 00:57:58,930 --> 00:58:02,900 Un mēs esam gatavojas sākt ar $ i. Tāpēc mainīgais "i" būs 0, 859 00:58:02,900 --> 00:58:06,730 un mēs esam tikai gatavojas glabāt drukāšanas to, ka liels baltā kastē tur. 860 00:58:06,730 --> 00:58:09,220 Mēs ejam, lai sāktu ar I0, un tad mēs ejam, lai echo to. 861 00:58:09,220 --> 00:58:12,670 Tātad tur ir 0. 862 00:58:12,670 --> 00:58:15,210 Un tad mēs ejam, lai pieauguma to, ka attiecībā uz cilpas, 863 00:58:15,210 --> 00:58:17,810 un tad tas būs vērtība 1. 864 00:58:17,810 --> 00:58:20,070 Viens no tiem ir mazāk nekā 3, tāpēc tas ir gatavojas iet cauri, ka cilpas, 865 00:58:20,070 --> 00:58:23,230 un tad mēs ejam, lai redzētu to izdrukāt vēlreiz. 866 00:58:23,230 --> 00:58:25,520 Mēs ejam, lai pieauguma to vēlreiz līdz 2, 867 00:58:25,520 --> 00:58:29,860 un 2 ir mazāks nekā 3, tāpēc tas būs caurlaide uz cilpas, un tas būs drukāt 2. 868 00:58:29,860 --> 00:58:35,100 Tad jūs, ņemiet vērā, ka 3 ir ne mazāk kā 3, lai mēs izkļūtu no cilpa. 869 00:58:35,100 --> 00:58:40,050 Tāpēc tagad mēs esam iziet, un tad mēs ejam, lai dotos uz aFunction. 870 00:58:40,050 --> 00:58:45,010 Labi. Tātad jums ir atzīmēt, ka šis mainīgais, ko mēs esam izveidojuši, 871 00:58:45,010 --> 00:58:48,270 "i" mainīgais, nav vietas scoped. 872 00:58:48,270 --> 00:58:50,280 Tas nozīmē, ka tas nav vietējā cilpa, 873 00:58:50,280 --> 00:58:58,060 un mainīgais mēs joprojām var piekļūt un mainīt pēc tam, un tas joprojām būs efektīva. 874 00:58:58,060 --> 00:59:02,160 Tātad, ja jūs iedziļināties funkciju tagad, jūs redzēsiet, ka mēs izmantot arī "i" mainīgo, 875 00:59:02,160 --> 00:59:05,320 un mēs esam gatavojas pieauguma 'i' + +. 876 00:59:05,320 --> 00:59:09,410 Jūs domājat, ka, pirmkārt, pamatojoties uz C, ka tas ir kopija no "i" mainīgo. 877 00:59:09,410 --> 00:59:12,830 Tā ir pilnīgi cita lieta, kas ir pareizs. 878 00:59:12,830 --> 00:59:16,560 Tātad, kad mēs drukāt, mēs ejam, lai drukātu "i" + +, kas gatavojas izdrukāt ka 4, 879 00:59:16,560 --> 00:59:19,640 un tad mēs ejam - sorry. 880 00:59:19,640 --> 00:59:22,030 Tad mēs ejam, lai izbeigtu no šīs funkcijas, 881 00:59:22,030 --> 00:59:24,820 un mēs gribam būt, ja tas bultiņa ir šobrīd. 882 00:59:24,820 --> 00:59:29,190 Tas nozīmē, ka tad, tomēr, kaut gan funkcija mainījusies vērtību "i", 883 00:59:29,190 --> 00:59:32,620 tas nemaina ārpus funkciju, 884 00:59:32,620 --> 00:59:35,060 tāpēc, ka funkcija ir atsevišķa joma. 885 00:59:35,060 --> 00:59:38,960 Tas nozīmē, ka tad, kad mēs atbalss "i", tā nav mainījusies darbības jomā funkciju, 886 00:59:38,960 --> 00:59:43,660 un tad mēs ejam, lai drukātu 3 vēlreiz. 887 00:59:43,660 --> 00:59:47,520 Dažādas lietas par jomu PHP nekā C. 888 00:59:47,520 --> 00:59:51,130 >> Tagad PHP un HTML. 889 00:59:51,130 --> 00:59:53,510 PHP tiek izmantots, lai padarītu mājas lapas dinamiska. 890 00:59:53,510 --> 00:59:58,660 Tā veida padara lietas atšķirīgi. 891 00:59:58,660 --> 01:00:02,090 Mums ir tas atšķiras no HTML. 892 01:00:02,090 --> 01:00:05,230 Ar HTML, mēs vienmēr vienkārši ir pats statiska lieta, tāpat kā Rob parādīja, 893 01:00:05,230 --> 01:00:09,370 tā kā PHP, jūs varat mainīt lietas, pamatojoties uz kuriem lietotājs. 894 01:00:09,370 --> 01:00:11,830 Tātad, ja man ir tā, es esmu, "Jūs esat pieteicies kā -" un tad vārds, 895 01:00:11,830 --> 01:00:14,420 un es varu mainīt nosaukumu. Tātad tagad nosaukums ir Jāzeps 896 01:00:14,420 --> 01:00:18,880 un tas ir "par mani", bet tad es varētu arī mainīt nosaukumu, lai Tommy. 897 01:00:18,880 --> 01:00:21,700 Un tas būtu cita lieta. 898 01:00:21,700 --> 01:00:23,840 Tad mēs varam arī mainīt dažādas lietas par viņu, 899 01:00:23,840 --> 01:00:27,070 un tas liecina atšķirīgu saturu, pamatojoties uz nosaukuma. 900 01:00:27,070 --> 01:00:31,430 Tātad, PHP var veida mainīt to, kas notiek jūsu mājas lapā. 901 01:00:31,430 --> 01:00:33,540 Pats šeit. Tomēr ņemiet vērā, ka viņiem ir atšķirīgs saturs, 902 01:00:33,540 --> 01:00:38,870 pat ja Jums ir tehniski joprojām piekļūt to pašu mājas lapu virsmas. 903 01:00:38,870 --> 01:00:43,450 Radīt HTML. Ir 2 dažādi veidi, kā jūs varat darīt. 904 01:00:43,450 --> 01:00:48,980 Tāpēc mēs iet caur šīs tiesības tagad. Pirmais veids ir, jums ir - jā, sorry. 905 01:00:48,980 --> 01:00:51,150 Tātad jums vienkārši ir jūsu regulāri, lai cilpa PHP, 906 01:00:51,150 --> 01:00:56,270 un tad jūs atbalss PHP, un jūs atbalss no HTML. 907 01:00:56,270 --> 01:00:58,720 Izmantojot to, Rob parādīja, HTML skriptu 908 01:00:58,720 --> 01:01:04,030 un tad, izmantojot PHP drukāt tikai to izdrukāt, lai mājas lapā. 909 01:01:04,030 --> 01:01:09,520 Alternatīvs veids ir darīt tā, it kā jūs atdalītu PHP un HTML. 910 01:01:09,520 --> 01:01:11,940 Lai jūs varētu būt līnija PHP, kas sākas uz cilpas, 911 01:01:11,940 --> 01:01:16,020 tad jūs varat būt līniju HTML atsevišķā lieta, 912 01:01:16,020 --> 01:01:19,700 un tad jūs galu cilpa, atkal, ar PHP. 913 01:01:19,700 --> 01:01:21,800 Tātad, tas ir sava veida atdalot to ārā. 914 01:01:21,800 --> 01:01:24,020 Kreisajā pusē, jūs varat, ka jums ir visas - 915 01:01:24,020 --> 01:01:26,360 tas ir tikai 1 gabals PHP. 916 01:01:26,360 --> 01:01:28,510 Labajā pusē, jūs varat redzēt, ka jums ir līnija PHP, 917 01:01:28,510 --> 01:01:32,540 Jums ir līnija HTML, un jums ir līnija PHP vēlreiz. 918 01:01:32,540 --> 01:01:36,870 Tāpēc atdalot to ārā, ko viņi dara. 919 01:01:36,870 --> 01:01:39,330 Un jūs, ņemiet vērā, ka nu tā, vai nu no tām, 920 01:01:39,330 --> 01:01:41,980 viņi joprojām izdrukāt attēlu, attēlu, attēlu, 921 01:01:41,980 --> 01:01:44,540 lai HTML joprojām tiek drukāts tāpat. 922 01:01:44,540 --> 01:01:49,870 Un tad jūs joprojām redzēt 3 attēli parādīsies uz jūsu mājas lapā. 923 01:01:49,870 --> 01:01:52,820 Tātad, tas ir 2 dažādi veidi, kā darīt to pašu. 924 01:01:52,820 --> 01:01:55,060 >> Tagad mums ir formas un lūgumus. Kā Rob parādīja jums, 925 01:01:55,060 --> 01:01:59,400 ir formas HTML, un mēs vienkārši brīze, izmantojot šo. 926 01:01:59,400 --> 01:02:02,040 Jums ir rīkoties un jums ir metode, un jūsu darbība 927 01:02:02,040 --> 01:02:04,350 veida parāda, kur jūs gatavojas nosūtīt, un metode ir, vai 928 01:02:04,350 --> 01:02:06,960 tas būs GET vai POST. 929 01:02:06,960 --> 01:02:11,220 Un GET pieprasījumu, kā teica Rob, nozīmē, ka jūs gatavojas nodot to formā 930 01:02:11,220 --> 01:02:15,760 un jūs redzēsiet to kā URL, bet POST pieprasījums jums nebūs redzēt URL. 931 01:02:15,760 --> 01:02:17,840 Tāpēc neliela atšķirība. 932 01:02:17,840 --> 01:02:19,950 Tomēr viena lieta, kas ir līdzīga lieta 933 01:02:19,950 --> 01:02:22,560 ir tas, ka POST un GET ir vienlīdz nedrošs. 934 01:02:22,560 --> 01:02:26,430 Tātad jūs domājat, ka tikai tāpēc, ka jūs neredzat to URL, 935 01:02:26,430 --> 01:02:28,790 tas nozīmē, ka POST ir drošāka, 936 01:02:28,790 --> 01:02:34,420 bet jūs joprojām var redzēt to jūsu cookies uz informāciju, kas jums sūtāt. 937 01:02:34,420 --> 01:02:38,260 Tāpēc nedomāju, ka par vienu vai otru. 938 01:02:38,260 --> 01:02:42,160 Vēl viena lieta ir tas, ka jums ir arī sadaļā mainīgie. 939 01:02:42,160 --> 01:02:45,850 Jūs puiši izmanto šo PSET 7, lai saņemtu savu lietotāja ID informāciju. 940 01:02:45,850 --> 01:02:48,550 Kas notika, bija tas, ka jūs varat izmantot šo asociatīvo masīvu, 941 01:02:48,550 --> 01:02:53,310 $ _SESSION, un tad jūs varat piekļūt dažādas lietas 942 01:02:53,310 --> 01:02:57,720 un uzglabāt dažādas lietas pāri lapām. 943 01:02:57,720 --> 01:03:00,750 >> Pēdējā lieta ir tā, ka mums ir SQL, Strukturēts Query Language, 944 01:03:00,750 --> 01:03:04,360 un tas ir programmēšanas valoda, lai pārvaldītu datu bāzes. 945 01:03:04,360 --> 01:03:08,220 Kas, tieši tā, ir datu bāzes? Viņi kolekcijas tabulas, 946 01:03:08,220 --> 01:03:10,630 un katrs tabulā var būt līdzīga veida objektiem. 947 01:03:10,630 --> 01:03:14,990 Tāpēc mums bija tabulu lietotājiem jūsu finanšu PSET. 948 01:03:14,990 --> 01:03:20,610 Un kāpēc tie ir noderīgi? Jo tas ir veids, kā pastāvīgi uzglabāt informāciju. 949 01:03:20,610 --> 01:03:22,840 Tas ir veids, kā izsekot lietām un pārvaldīt lietas 950 01:03:22,840 --> 01:03:25,890 un faktiski redzēt to uz dažādām lapām un sekotu. 951 01:03:25,890 --> 01:03:29,930 Tā kā, ja jūs vienkārši glabāt to, ka viens tūlītēju brīdī 952 01:03:29,930 --> 01:03:33,720 un pēc tam izmantot to vēlāk, jūs nevarēsiet piekļūt kaut ko, ka jūs esat saglabājis. 953 01:03:33,720 --> 01:03:37,660 Mums ir 4 galvenās lietas, ko mēs izmantojam, lai SQL komandas. 954 01:03:37,660 --> 01:03:40,190 Mums ir izvēlēties, ievietot, dzēst un atjaunināt. 955 01:03:40,190 --> 01:03:42,880 Tie ir ļoti svarīgi, lai jūs guys zināt jūsu viktorīnas. 956 01:03:42,880 --> 01:03:45,990 >> Mēs ātri iet pār izvēlieties tiesības tagad. 957 01:03:45,990 --> 01:03:48,540 Būtībā, jūs esat izvēloties rindas no datu bāzes. 958 01:03:48,540 --> 01:03:52,400 Tātad, ja jums ir, tieši šeit - 959 01:03:52,400 --> 01:03:56,740 mēs esam šos 2 dažādas lietas, un mēs vēlamies, lai izvēlētos no klasēm tabulas 960 01:03:56,740 --> 01:04:01,480 kur laba - kur awesome kolonnā vērtība ir 1. 961 01:04:01,480 --> 01:04:04,460 Tātad jūs varat redzēt šeit, mums ir šīs 2 lietas klases nosaukumu, 962 01:04:04,460 --> 01:04:08,490 CS50 un Stat110, un mums ir klases ID un saukli. 963 01:04:08,490 --> 01:04:13,150 Tāpēc mēs vēlamies, lai atlasītu visu šo informāciju. 964 01:04:13,150 --> 01:04:17,480 Tad jūs varat redzēt šeit, ka tas ir sava veida atrauti no šīs laba kolonnas, 965 01:04:17,480 --> 01:04:25,170 kur visas lietas ir 1, un tad tas ir klases ID, klases nosaukumu un devīzi, ka tā var izvēlēties no. 966 01:04:25,170 --> 01:04:28,100 Kā tieši jūs darīt to kodu? Jums ir izmantot PHP. 967 01:04:28,100 --> 01:04:33,830 Tātad tas ir veids, kā PHP un SQL ir saistīti viens ar otru. 968 01:04:33,830 --> 01:04:38,130 Tagad mums ir mūsu kodu, un mēs spēsim izmantot mūsu vaicājumu funkcijas 969 01:04:38,130 --> 01:04:41,370 kā mēs to darījām PSET 7, un mēs esam gatavojas palaist SQL vaicājumu. 970 01:04:41,370 --> 01:04:43,870 Tad mēs ejam, lai būtu - 971 01:04:43,870 --> 01:04:46,280 mums vienmēr ir pārbaudīt, vai rinda ir triple vienlīdzīgas, ja nepatiesa. 972 01:04:46,280 --> 01:04:49,010 Tātad vēlreiz, jūs vēlaties, lai pārbaudītu veidu un vērtību, 973 01:04:49,010 --> 01:04:53,880 un tad, ja tas nedarbojas, tad jūs vēlaties, lai atvainoties, kā parasti, kā mēs to darījām PSET 7. 974 01:04:53,880 --> 01:04:55,870 Pretējā gadījumā jūs vēlaties, lai cilpa ar visu, ar tiem ērts 975 01:04:55,870 --> 01:04:59,410 foreach cilpas, ka mēs vienkārši piegāja. 976 01:04:59,410 --> 01:05:01,280 Tagad, ka mēs esam looping, izmantojot un mēs esam to pagātnes, 977 01:05:01,280 --> 01:05:05,080 pieņemsim, ka mūsu vaicājumu pagājis, tagad mums ir mūsu foreach cilpa. 978 01:05:05,080 --> 01:05:11,050 Un pirmajā rindā tas ir, tāpēc šeit ir rinda, tieši šeit, tas ir liekami. 979 01:05:11,050 --> 01:05:14,010 Tas notiek, lai izdrukāt visu informāciju, ko tā ir gotten. 980 01:05:14,010 --> 01:05:18,070 Tātad, tas notiek, lai izdrukāt apakšā "Gribu mācīties HTML?" 981 01:05:18,070 --> 01:05:23,370 Tad tas notiek, lai dotos uz nākamo rindu, jo tas ir pabeigts pirmais cilpa, 982 01:05:23,370 --> 01:05:26,510 Un tad tas notiek, lai izdrukāt otrajā rindā no tā, 983 01:05:26,510 --> 01:05:32,120 kas būs STAT110, Atrast visus momentus. 984 01:05:32,120 --> 01:05:34,290 >> Viens no pēdējā lieta ir par SQL ievainojamības. 985 01:05:34,290 --> 01:05:37,300 Es zinu, David pieskārās par šo mazliet lekciju. 986 01:05:37,300 --> 01:05:40,730 Jūs varat izlasīt šo vēlāk. Tas ir patiešām smieklīgi. 987 01:05:40,730 --> 01:05:45,320 SQL injekcijas, ir sava veida grūts lieta. 988 01:05:45,320 --> 01:05:49,890 Pieņemsim, ka jūs vienkārši stick šos mainīgos tiesības uz jūsu jautājumu, 989 01:05:49,890 --> 01:05:52,290 kā jūs varat redzēt, ka pirmajā rindā. 990 01:05:52,290 --> 01:05:54,520 Tāpēc šķiet labi, vai ne? Jūs vienkārši liekot lietotājvārdu 991 01:05:54,520 --> 01:05:58,820 un paroli, lai Jūsu SQL vaicājumu, un jūs vēlaties, lai kuģis to off un saņemt kāds ir jūsu datu tabulā. 992 01:05:58,820 --> 01:06:01,450 Tas šķiet diezgan vienkārši. Tā ļauj teikt, kāds liek, 993 01:06:01,450 --> 01:06:04,910 parole, šo vai tekstu tieši šeit - 994 01:06:04,910 --> 01:06:06,780 faktiski būtu sarkanā lodziņā. 995 01:06:06,780 --> 01:06:11,920 Tātad pieņemsim, ka viņi laiž šo paroli uz - ka tas, ko viņi ieiet. 996 01:06:11,920 --> 01:06:16,520 Tāpēc viņi liekot vai "1" = 1. 997 01:06:16,520 --> 01:06:20,880 Veida dumjš paroli, lai ir. 998 01:06:20,880 --> 01:06:25,070 Tagad vienkārši aizstāt to, un jūs ņemt vērā, ka šajā SQL vaicājumu tagad, 999 01:06:25,070 --> 01:06:29,090 novērtējums ir vienmēr ir taisnība, jo jūs ņemt vērā, ka 1000 01:06:29,090 --> 01:06:32,240 Jūs varat SQL vaicājums atlasīt visu šo informāciju 1001 01:06:32,240 --> 01:06:35,420 vai arī varat vienkārši ir 1 = 1. 1002 01:06:35,420 --> 01:06:41,030 Tātad, tas vienmēr notiek, lai novērtētu taisnība. 1003 01:06:41,030 --> 01:06:46,610 Tas nav gatavojas, lai tiešām strādāt, jo tas nozīmē, ka hakeris var ielauzties jūsu sistēmā. 1004 01:06:46,610 --> 01:06:49,300 Risinājums ir tas, ka jums ir izmantot ACN sistēmu, 1005 01:06:49,300 --> 01:06:51,360 kas nozīmē, ka jums ir izmantot jautājuma zīmes, 1006 01:06:51,360 --> 01:06:53,350 kas ir tas, ko jūs guys izmantoti PSET 7, 1007 01:06:53,350 --> 01:06:57,620 kur jūs gatavojas izmantot jautājuma zīmi vietā, kur jūs vēlaties, lai kaut ko, 1008 01:06:57,620 --> 01:07:01,430 un tad jums nāksies komatu, un tad jums būs pēc tam, 1009 01:07:01,430 --> 01:07:07,610 Pēc jūsu virknes, dažādi mainīgie, ka jūs vēlaties, lai aizstātu jūsu jautājuma zīmi. 1010 01:07:07,610 --> 01:07:10,330 Tātad jūs piebilst, ka tagad man ir šīs sarkanās jautājuma zīmes. 1011 01:07:10,330 --> 01:07:15,420 Tad man mainīgos pēc manas stīgas, lai es zinu, lai aizstātu tos minētajā kārtībā pēc tam. 1012 01:07:15,420 --> 01:07:18,470 Tas nodrošinās, ka, ja kāds to dara, piemēram, tas, 1013 01:07:18,470 --> 01:07:24,050 un tie ir vai 1 = 1 situāciju, kas būs pārliecināties, 1014 01:07:24,050 --> 01:07:30,490 uz muguras beigās, pārliecinieties, ka tas nav reāli salauzt SQL vaicājumu. 1015 01:07:30,490 --> 01:07:33,660 Labi, tā tas ir diezgan daudz to, viesulis PHP un SQL. 1016 01:07:33,660 --> 01:07:41,520 Best of luck jums visiem, un tagad Ore 1017 01:07:41,520 --> 01:07:44,270 >> [Oreoluwatomiwa Babarinsa] Labi ikvienam. Laiks iet pār kādu JavaScript 1018 01:07:44,270 --> 01:07:48,840 un dažas citas lietas, ļoti ātri, tāpēc mums nav tur jums up šovakar. 1019 01:07:48,840 --> 01:07:56,930 JavaScript. Jā. JavaScript ir veida atdzist lieta, it kā. 1020 01:07:56,930 --> 01:07:59,090 Lietas, jums tiešām ir nepieciešams zināt par JavaScript, tas ir sava veida, piemēram, 1021 01:07:59,090 --> 01:08:03,810 klienta puses beigām, kas jūsu mājas app gatavojas darīt. 1022 01:08:03,810 --> 01:08:08,280 Ir dažas lietas, jūs vienkārši nevēlaties, lai rūpētos par visu laiku uz servera pusē. 1023 01:08:08,280 --> 01:08:12,880 Visi maz mijiedarbību, uzsverot viena lieta, padarot kaut pazūd. 1024 01:08:12,880 --> 01:08:15,340 Jūs tiešām nevēlaties, lai būtu runāt ar savu serveri, visu laiku par to. 1025 01:08:15,340 --> 01:08:18,069 Un daži, ka nav pat iespējams izdarīt uz servera pusē. 1026 01:08:18,069 --> 01:08:21,899 Tas ir iemesls, kāpēc mums ir nepieciešams kaut kas līdzīgs JavaScript. 1027 01:08:21,899 --> 01:08:24,359 Labas lietas par JavaScript: Tā ir dinamiski drukāti. 1028 01:08:24,359 --> 01:08:27,149 Ko tas nozīmē, ka jūsu programma nav nepieciešams zināt 1029 01:08:27,149 --> 01:08:30,970 ko, tieši tā, ka mainīgie ir, ja jūs rakstīt to ārā. 1030 01:08:30,970 --> 01:08:34,510 Tas būs tikai sava veida izdomāt, kā tas darbojas. 1031 01:08:34,510 --> 01:08:37,520 Citas lietas, kas ir cool par to: Tas ir cirtaini lencēm valodu, 1032 01:08:37,520 --> 01:08:41,359 kas nozīmē, sintakse ir līdzīga C un PHP. 1033 01:08:41,359 --> 01:08:47,050 Jums nav jādara daudz pārstrādāt, ja jūs mācīties JavaScript. 1034 01:08:47,050 --> 01:08:49,180 Šeit mums ir mazliet JavaScript. 1035 01:08:49,180 --> 01:08:52,560 Interesanta lieta šeit ir tas, ka, ja paskatās uz to, 1036 01:08:52,560 --> 01:08:56,330 mums ir mazliet JavaScript turpat galvas tag. 1037 01:08:56,330 --> 01:08:59,479 Kas ir tas ir būtībā tikai ietver JavaScript failu. 1038 01:08:59,479 --> 01:09:02,260 Tas ir viens veids, kā jūs varat iekļaut JavaScript savā programmā. 1039 01:09:02,260 --> 01:09:06,910 Tad otrais mazliet ir faktiski daži inline JavaScript, 1040 01:09:06,910 --> 01:09:10,790 ļoti līdzīgs inline stilu ar CSS, 1041 01:09:10,790 --> 01:09:16,180 un jūs tikai rakstiski daži kodu ļoti ātri tur. 1042 01:09:16,180 --> 01:09:18,120 JavaScript ir masīvi. 1043 01:09:18,120 --> 01:09:20,850 Tikai vēl viens veids, lai saglabātu datus apkārt, ir ļoti noderīga. 1044 01:09:20,850 --> 01:09:25,180 Ļoti jauki un viegli sintakse. 1045 01:09:25,180 --> 01:09:29,870 Jūs varat izmantot kvadrātiekavas, lai piekļūtu visu un glabāt visu kopā. 1046 01:09:29,870 --> 01:09:35,020 Nekas pārāk sarežģīts. 1047 01:09:35,020 --> 01:09:38,630 Cool lieta par JavaScript un skriptu valodas vispār 1048 01:09:38,630 --> 01:09:40,920 ir tas, ka jums nav jāuztraucas par masīva izmēru. 1049 01:09:40,920 --> 01:09:43,880 Jūs varat izmantot array.length un sekot līdzi to, 1050 01:09:43,880 --> 01:09:46,960 un arī masīvs var pieaugt vai sarukt, jo jums ir nepieciešams to. 1051 01:09:46,960 --> 01:09:49,279 Tātad jums nav pat jāuztraucas par jebkāda veida, 1052 01:09:49,279 --> 01:09:57,050 ak nē, man ir nepieciešams piešķirt vairāk lietas, vai kaut kā tā. 1053 01:09:57,050 --> 01:10:00,090 >> Cool lieta ir tā, ka JavaScript ir kaut ko sauc objektus. 1054 01:10:00,090 --> 01:10:04,800 Tā ir objektu orientētu valodu, tāpēc, kas tas ir, ir, būtībā, 1055 01:10:04,800 --> 01:10:10,100 veids, lai jūs varētu grupas datiem kopā, nedaudz līdzīga struktūrai, 1056 01:10:10,100 --> 01:10:17,280 bet jūs varat piekļūt to kā struktūrai vai asociatīvā masīva sintaksi. 1057 01:10:17,280 --> 01:10:22,520 Tas ir diezgan vienkārši, un to, ko jūs varat darīt ar to, ir grupas dati, kā arī 1058 01:10:22,520 --> 01:10:24,810 Ja jums ir ķekars datiem, kas ir saistīti. 1059 01:10:24,810 --> 01:10:26,850 Jo tas ir visas lietas, jums ir nepieciešams, lai aprakstītu auto, 1060 01:10:26,850 --> 01:10:29,050 Jums nav nepieciešams, lai būtu to ķekars dažādās vietās. 1061 01:10:29,050 --> 01:10:35,300 Jūs varat stick to 1 objekta JavaScript. 1062 01:10:35,300 --> 01:10:39,090 Kā jūs droši vien zināt, atkārtojot ir viens no šiem nogurdinošs uzdevumus. 1063 01:10:39,090 --> 01:10:43,810 Jūs vienkārši darīt to pa atkal. Jums ir nepieciešams, lai sarunātos ar katru objektu ar automašīnu, 1064 01:10:43,810 --> 01:10:47,340 vai jums ir nepieciešams, lai iet caur katru posteni sarakstā vai kaut kas tamlīdzīgs. 1065 01:10:47,340 --> 01:10:51,770 Tātad JavaScript ir, līdzīgi PHP, kā foreach sintaksi. 1066 01:10:51,770 --> 01:10:54,590 Šajā gadījumā, tas ir, lai cilpa. 1067 01:10:54,590 --> 01:10:57,300 Jūs vēlaties izmantot šo tikai uz objektiem. 1068 01:10:57,300 --> 01:11:01,030 Ir dažas problēmas, kas rodas, ja jūs izmantot šo par masīvu. 1069 01:11:01,030 --> 01:11:03,750 Tas parasti ir viena no tām lietām, lai gan, ka ir ļoti noderīga, 1070 01:11:03,750 --> 01:11:06,590 jo jums novērst daudz virs galvas 1071 01:11:06,590 --> 01:11:10,270 jo jums nav pull up visu jūsu objektā pats. 1072 01:11:10,270 --> 01:11:12,300 Jums nav atcerēties visas galvenās nosaukumiem. 1073 01:11:12,300 --> 01:11:18,270 Jūs vienkārši veida saņemt tos atpakaļ šajā sintaksi. 1074 01:11:18,270 --> 01:11:21,500 Šajā, ar, jūs vienkārši vēlaties, lai atcerēties 1075 01:11:21,500 --> 01:11:27,180 ka jūs saņemat atpakaļ visas atslēgas, kas ir ļoti līdzīgi kā hash tabulu. 1076 01:11:27,180 --> 01:11:30,880 Ja jūs atceraties no tā, ja jūs varētu īstenot virkni jūs varētu saņemt kaut ko 1077 01:11:30,880 --> 01:11:33,840 kas ir saistīts vērtību ar to. 1078 01:11:33,840 --> 01:11:36,360 Ko jūs varat darīt ar to ir varat teikt, visas tiesības, 1079 01:11:36,360 --> 01:11:42,120 Man mašīnā, un es to sauca Ferrari. 1080 01:11:42,120 --> 01:11:45,290 Tātad jūs varat ievietot virknes Ferrari atkal vēlāk, un jūs varat saņemt, ka out. 1081 01:11:45,290 --> 01:11:50,000 Un jūs varat darīt, ka pa apli, ar In cilpa. 1082 01:11:50,000 --> 01:11:53,320 Tik vienkārši vairāk par objektiem. Galvenais lieta no tā, jums ir nepieciešams atcerēties 1083 01:11:53,320 --> 01:12:00,340 ir tas, ka jūs varat izmantot objektu struct, piemēram, sintakse, ja jūs vēlaties ar šiem, 1084 01:12:00,340 --> 01:12:04,590 izņemot gadījumus, ja tas, ko jūsu gatavojas izmantot kā virkne nav derīgs mainīgā nosaukums. 1085 01:12:04,590 --> 01:12:07,650 Tātad, ja paskatās, ka mums ir atslēga ar telpām. 1086 01:12:07,650 --> 01:12:12,500 Nu, ja tu būtu, lai object.key, telpa, ar, telpas, telpas, 1087 01:12:12,500 --> 01:12:15,320 tas vienkārši nebūtu jēgas sintaktiski. 1088 01:12:15,320 --> 01:12:22,730 Lai jūs tikai varat darīt, ka ar šāda veida stiprinājuma sintaksi. 1089 01:12:22,730 --> 01:12:26,520 >> Arī JavaScript ir ļoti joma gudrs PHP. 1090 01:12:26,520 --> 01:12:29,050 Jums ir 2 veidi, kā risināt jomu. 1091 01:12:29,050 --> 01:12:31,960 Jūs nevarat būt VAR priekšā mainīgo, 1092 01:12:31,960 --> 01:12:34,060 un tas tikai nozīmē, ka šis ir globāla. 1093 01:12:34,060 --> 01:12:37,050 Jūs varat redzēt no jebkuras vietas. Pat tad, ja tu būtu, lai to, ja paziņojums, 1094 01:12:37,050 --> 01:12:42,430 jebkur citur savu kodu pēc šī punkta, jūs varētu redzēt, ka mainīgo. 1095 01:12:42,430 --> 01:12:46,730 Vēl viena lieta, lai gan, ir ar VAR, tas ir tikai uz kāda funkcija jūs collas 1096 01:12:46,730 --> 01:12:48,870 Ja jūs neesat funkciju, labi, tas ir globāls. 1097 01:12:48,870 --> 01:12:53,900 Bet, ja jums ir funkcijas, ko tā ir redzama tikai šo funkciju. 1098 01:12:53,900 --> 01:12:56,420 Man nav piemēru, bet, jā. Tā ir viena no tām lietām, kur 1099 01:12:56,420 --> 01:12:59,900 Jūs varat pārvaldīt to mainīgie jūs vēlaties būt globāls, 1100 01:12:59,900 --> 01:13:03,810 kādi mainīgie jūs vēlaties būt vietējā, bet jums ir jābūt uzmanīgiem par to, 1101 01:13:03,810 --> 01:13:06,890 jo jums nav smalku graudu kontroles jūs darāt C tipa, 1102 01:13:06,890 --> 01:13:15,820 kur, ja kaut kas tiek deklarēts par cilpu, tas būs palikt, ka cilpa. 1103 01:13:15,820 --> 01:13:18,790 Lieta, ko mēs patiesībā rūp izmantojot JavaScript ir manipulējot interneta lapas, vai ne? 1104 01:13:18,790 --> 01:13:21,800 Es domāju, ka ir iemesls, kāpēc mēs darām to. 1105 01:13:21,800 --> 01:13:23,840 >> Lai to izdarītu, mums ir izmantot kaut ko sauc DOM. 1106 01:13:23,840 --> 01:13:25,850 Dokumentu Object Model. 1107 01:13:25,850 --> 01:13:29,430 Būtībā, ko tas ir tas aizņem visu savu HTML 1108 01:13:29,430 --> 01:13:34,110 un modeļus, tā ārā ķekars objektiem, kas ligzdotu otru. 1109 01:13:34,110 --> 01:13:37,080 Jūs sākt ar kaut kas līdzīgs šim. 1110 01:13:37,080 --> 01:13:44,770 Jums ir, par tiesībām uz mani, ķekars kodu, kas tur, kas ir sava veida - 1111 01:13:44,770 --> 01:13:46,640 Jūs domājat, ka gribētu būt ļoti grūti manipulēt, 1112 01:13:46,640 --> 01:13:48,700 jo tu būsi analizējot caur ķekars teksta 1113 01:13:48,700 --> 01:13:52,080 un kam gabals intervālu lietas. Un ko tad, ja tas nav pareizi formatēts? 1114 01:13:52,080 --> 01:13:54,880 Sliktas lietas notiks. 1115 01:13:54,880 --> 01:13:58,140 Tāpēc JavaScript rūpējas par to, lai jūs, un jums jauku datu struktūru, 1116 01:13:58,140 --> 01:14:01,390 piemēram, viens no par manu kreiso, kur jums vienkārši ir dokuments, 1117 01:14:01,390 --> 01:14:03,530 un iekšā, ka jums ir kaut ko sauc par HTML, 1118 01:14:03,530 --> 01:14:05,600 un iekšā, ka jums ir galvu un ķermeni, 1119 01:14:05,600 --> 01:14:08,420 un iekšā, ka galvā jums nosaukumu, etcetera, etcetera, etcetera. 1120 01:14:08,420 --> 01:14:11,810 Tas vienkāršo manipulējot ar mājas lapu, lai tā ir tikai, 1121 01:14:11,810 --> 01:14:14,190 Ak, es tikai vēlos runāt ar šo objektu. 1122 01:14:14,190 --> 01:14:21,340 Kārtot ļoti līdzīgi kā jūs varētu runāt ar cita objekta veicāt sevi. 1123 01:14:21,340 --> 01:14:25,980 Tāpat kā es teicu, viss DOM ir dokumenta objektu. 1124 01:14:25,980 --> 01:14:29,290 Vai nu tā ir tikai viena vieta, un tad varat doties tajā, lai atrastu lietas, 1125 01:14:29,290 --> 01:14:33,880 un jūs varat darīt to - tā ir vecā stila, kā darīt to, tur, 1126 01:14:33,880 --> 01:14:38,130 kur jūs document.getElementById, un tad vārds, 1127 01:14:38,130 --> 01:14:42,420 un kā jūs varat droši pateikt, tas kļūst ļoti smagnēja pēc brītiņa. 1128 01:14:42,420 --> 01:14:44,480 Tātad, jūs, iespējams, nevēlaties, lai to izdarītu. Tieši tāpēc mēs esam 1129 01:14:44,480 --> 01:14:48,760 nākamā lieta, ko mēs esam gatavojas runāt par pēc tam. 1130 01:14:48,760 --> 01:14:52,510 Galvenais lieta šeit ir tas, ka, labi, jums ir visus šos elementus, vai ne? 1131 01:14:52,510 --> 01:14:56,400 Tāpēc varbūt es varu mainīt krāsu kaut kad lapa slodzēm. 1132 01:14:56,400 --> 01:14:58,380 Tātad, ko? Ko darīt, ja lietotājs noklikšķina uz kaut ko? 1133 01:14:58,380 --> 01:15:00,540 Es gribu to darīt, kaut ko interesantu, noklikšķinot kaut ko. 1134 01:15:00,540 --> 01:15:02,600 Tieši tāpēc mēs esam notikumus. 1135 01:15:02,600 --> 01:15:05,330 Jūs varat, būtībā, atrast jebkuru elementu savā DOM, 1136 01:15:05,330 --> 01:15:08,560 un tad saka, hey. Kad šis slodzes vai kāds noklikšķina uz to, 1137 01:15:08,560 --> 01:15:11,410 vai tad, kad viņi peli pār to, kaut ko darīt ar to. 1138 01:15:11,410 --> 01:15:15,330 Un kas jums ir, jums ir funkcijas, kas apstrādātu šo jums. 1139 01:15:15,330 --> 01:15:17,980 Šīs funkcijas ir notikumu apstrādes. 1140 01:15:17,980 --> 01:15:20,440 Kas tās ir bez - tas ir tikai iedomātā veids, kā pateikt, 1141 01:15:20,440 --> 01:15:23,500 šī funkcija tiek izpildīta tikai tad, ja šis pasākums notiek. 1142 01:15:23,500 --> 01:15:28,070 Tāpēc tas rokturi notikums, kas notiek. 1143 01:15:28,070 --> 01:15:30,810 Tas ir, kā jūs varētu likt no notikumu apdarinātājs. 1144 01:15:30,810 --> 01:15:34,750 Man ir dažas pogas, un, kad jūs noklikšķiniet uz tā, tā eksplodē. 1145 01:15:34,750 --> 01:15:40,560 Tāpēc neklikšķiniet uz pogas. 1146 01:15:40,560 --> 01:15:42,910 Tas ir viens veids, kā tuvojas to, labi? 1147 01:15:42,910 --> 01:15:46,430 Jums ir pogu tag, un par klikšķi, jums ir virkne, kas saka, 1148 01:15:46,430 --> 01:15:50,460 oh, starp citu, man šī sprāgstoša lieta par mani. 1149 01:15:50,460 --> 01:15:53,990 Pretējā gadījumā, tas ir tāpat kā regulārs pogu, jūs tikko veikts. 1150 01:15:53,990 --> 01:15:56,550 Jūs varat arī izdarīt vēl viens veids, 1151 01:15:56,550 --> 01:16:02,770 satveršanas DOM elementu, bet mēs ietaupītu, ka pēc tam, kad mēs runājam par jQuery. 1152 01:16:02,770 --> 01:16:07,580 >> JQuery: Tas ir bibliotēka, kas ir pārrobežu pārlūku. 1153 01:16:07,580 --> 01:16:09,580 Jūs varat to izmantot diezgan daudz neko. 1154 01:16:09,580 --> 01:16:12,090 Un tas tikai dod jums daudz instrumentu, lai strādāt ar jums. 1155 01:16:12,090 --> 01:16:15,850 Tāpēc, ka JavaScript, bet spēcīgs, nav visas rīki jums ir nepieciešams 1156 01:16:15,850 --> 01:16:20,550 no kastes, lai patiešām risinātu web app jūs varētu vēlēties darīt. 1157 01:16:20,550 --> 01:16:24,650 Tāpēc tas vienkāršo daudzas lietas, sniedz jums daudz funkciju 1158 01:16:24,650 --> 01:16:28,760 no kastes, ka jūs parasti ir rakstīt sevi, atkal un atkal un atkal. 1159 01:16:28,760 --> 01:16:31,600 Un tikai padara lietas ļoti vienkārši. 1160 01:16:31,600 --> 01:16:35,780 Jums ir arī pārslēdzējiem, kas ļauj jums veikt visus šos elementus 1161 01:16:35,780 --> 01:16:42,800 no DOM daudz vairāk vienkārši, tā vietā, lai izmantotu šo ļoti ilgi funkciju zvani. 1162 01:16:42,800 --> 01:16:46,630 Vairāk par šiem selektori. Jums ir, tur jums ir, teiksim 1163 01:16:46,630 --> 01:16:49,800 Es vēlos saņemt elementu ar ID "klints". 1164 01:16:49,800 --> 01:16:56,450 Nu, jQuery, tas ir tikai $ un tad virkne, kas ir mārciņu, un tad "rock". 1165 01:16:56,450 --> 01:17:01,960 Tas ir ļoti vienkāršs un daudz ātrāk, nekā tradicionālās JavaScript veids, kā risināt šo problēmu. 1166 01:17:01,960 --> 01:17:06,120 Un jums ir līdzīgas lietas, klases un elementu veidiem. 1167 01:17:06,120 --> 01:17:08,140 jQuery ir - viens no atdzist iezīmes ir varat veida saspiest 1168 01:17:08,140 --> 01:17:14,350 leju jūsu jautājumiem par savu DOM ļoti, ļoti ātri. 1169 01:17:14,350 --> 01:17:18,980 Tagad mēs esam atpakaļ uz notikumu apstrādi, un tas, kā jūs varētu rīkoties viens notikums jQuery. 1170 01:17:18,980 --> 01:17:23,090 Tātad, ko mēs ejam šeit ir, mēs esam sakot, viss ir labi. Man ir skriptu tag, vai ne? 1171 01:17:23,090 --> 01:17:25,400 Tāpēc man ir šī inline JavaScript. 1172 01:17:25,400 --> 01:17:27,750 Ko mēs gatavojamies darīt, ir, mēs ejam teikt, labi. 1173 01:17:27,750 --> 01:17:30,860 Ja dokuments ir sagatavots, kas nozīmē, dokuments ir piekrauts, 1174 01:17:30,860 --> 01:17:34,660 mēs gatavojamies iet uz šo funkciju, un mēs esam gatavojas teikt, visas tiesības, 1175 01:17:34,660 --> 01:17:37,060 Šī funkcija ir faktiski dara kaut ko citu. 1176 01:17:37,060 --> 01:17:42,320 Tas ir būtībā sakot, viss ir labi, atnesiet man elementu ar ID "myid." 1177 01:17:42,320 --> 01:17:47,960 Un pēc tam sniedz to funkciju kopējs, kas izpilda tad, kad jūs noklikšķiniet uz tā. 1178 01:17:47,960 --> 01:17:49,820 Būtībā, ko tas dara, ir, tā saka, viss ir labi. 1179 01:17:49,820 --> 01:17:52,630 Lapa tiek ielādēta, tāpēc es esmu gatavojas in, atrast šo elementu, 1180 01:17:52,630 --> 01:17:56,420 arī tā šo notikumu apdarinātājs, un tas būtībā izveido savu lapu, lai jums. 1181 01:17:56,420 --> 01:18:00,520 Un tas, kā jūs vēlaties, lai padomātu par notikumu apstrādi. 1182 01:18:00,520 --> 01:18:06,310 Jūs vienkārši vēlaties, lai padomātu par, labi, ja kaut kas notiek, ko es gribu, lai notiktu? 1183 01:18:06,310 --> 01:18:10,520 Jūs nevēlaties, lai padomātu par, labi, man ir nepieciešams, lai pārliecinātos, ka šī lieta sarunas, lai šo lietu, 1184 01:18:10,520 --> 01:18:14,660 šī lieta blah blah blah, jo jūs vienkārši vēlaties runāt lieta saistībā ar notikumiem. 1185 01:18:14,660 --> 01:18:17,650 Kad tas notiek, tas notiek. Kad tas notiek, tas notiek. 1186 01:18:17,650 --> 01:18:20,240 Un, ja viss izraisīt citas lietas, tas ir lieliski. 1187 01:18:20,240 --> 01:18:22,150 Bet jūs nevēlaties, lai mēģinātu darīt sarežģītu kodu 1188 01:18:22,150 --> 01:18:24,130 kur jūs izraisot vairākas lietas, tajā pašā laikā, 1189 01:18:24,130 --> 01:18:28,860 jo jūs esat tikai gatavojas sev galvassāpes. 1190 01:18:28,860 --> 01:18:32,340 >> Visas tiesības. Tagad mēs varam iegūt mūsu lapu, lai rīkotos pasākumus, 1191 01:18:32,340 --> 01:18:35,640 bet pieņemsim, ka mans lietotājs noklikšķina uz pogas. 1192 01:18:35,640 --> 01:18:38,040 Ko darīt, ja es vēlos, lai nosūtītu šo pieprasījumu atpakaļ uz serveri, 1193 01:18:38,040 --> 01:18:41,100 bet es nevēlos, lai pārlādētu lapu, jo, ņemot pārlādēt jaunu lapu 1194 01:18:41,100 --> 01:18:44,390 katru reizi kļūst veida garlaicīgs, un kāpēc man vajag 1195 01:18:44,390 --> 01:18:47,430 nojaukt galvenes atkal un kājenes atkal, 1196 01:18:47,430 --> 01:18:49,670 un visi elementi lapu vēlreiz 1197 01:18:49,670 --> 01:18:53,180 tikai, lai atsvaidzinātu sveicienu vai laiks? 1198 01:18:53,180 --> 01:18:55,290 Tātad, tāpēc mums ir kaut kas līdzīgs Ajax. 1199 01:18:55,290 --> 01:18:59,150 Ko mēs varam darīt šeit ar Ajax ir, mēs varam teikt, visas tiesības, 1200 01:18:59,150 --> 01:19:01,290 Es gribu nosūtīt dažus datus uz serveri, 1201 01:19:01,290 --> 01:19:04,010 un es vēlos saņemt atbildi atpakaļ, lai es varētu atjaunināt manu lapu, 1202 01:19:04,010 --> 01:19:12,120 vai varbūt vienkārši darīt kādu algoritmisko aprēķinu, kas nebūt neatspoguļo neko lietotājam. 1203 01:19:12,120 --> 01:19:15,500 Kas jums nepieciešams, lai to izdarītu? Nu, jums ir nepieciešams URL, jums ir nepieciešams runāt. 1204 01:19:15,500 --> 01:19:18,650 Jūsu serveris nevar vienkārši maģiski klausīties no nekurienes. 1205 01:19:18,650 --> 01:19:21,960 Jums ir nepieciešams, lai būtu īpaša vieta sūtāt šos datus. 1206 01:19:21,960 --> 01:19:26,240 Un jums ir vajadzīgs arī daži dati, lai nosūtītu, vai varbūt tā ir dataless vaicājumu. 1207 01:19:26,240 --> 01:19:31,380 Jūs vienkārši vēlaties, lai ping atpakaļ uz serveri un teikt, hey, es esmu dzīvs, vai kaut kas tamlīdzīgs. 1208 01:19:31,380 --> 01:19:35,150 Un tad jūs vēlaties funkciju, kas būtībā apstrādā ar panākumiem. 1209 01:19:35,150 --> 01:19:38,250 Pieņemsim, ka jūs saņemsiet atpakaļ kādu informāciju no servera, 1210 01:19:38,250 --> 01:19:42,960 un jūs vēlaties mainīt lietotāja nosaukumu savā lapā. 1211 01:19:42,960 --> 01:19:44,930 Lai jūs varētu saņemt informāciju atpakaļ, 1212 01:19:44,930 --> 01:19:48,860 un jūs push, ka uz ekrāna. 1213 01:19:48,860 --> 01:19:51,170 Kas notiek, ir, kad lapa ir gatava, 1214 01:19:51,170 --> 01:19:56,500 jums izveidot par klikšķi funkciju šai pogai sauc Sveicinātāja. 1215 01:19:56,500 --> 01:19:58,810 Kas šo, tad tas ir, ja tas spied pogu, 1216 01:19:58,810 --> 01:20:03,700 tu runā ar greetings.php veiciet POST pieprasījumu, 1217 01:20:03,700 --> 01:20:07,290 un jūs sakāt, hey, atnesiet man kaut ko no savas lapas. 1218 01:20:07,290 --> 01:20:09,890 Mums nav tiešām ir nepieciešams, lai aprakstītu to, bet greetings.php, 1219 01:20:09,890 --> 01:20:12,480 pieņemsim tikai teikt, dod atpakaļ "hello pasauli." 1220 01:20:12,480 --> 01:20:15,650 Tātad mēs saņemam atpakaļ šo "Hello World", kā arī par panākumiem to, 1221 01:20:15,650 --> 01:20:20,730 pieņemot, ka nekas noiet greizi, tad mēs tikai iet uz šo mērķa vietu 1222 01:20:20,730 --> 01:20:25,720 ka mēs noteikts, un mēs vienkārši stick atbildi tur. 1223 01:20:25,720 --> 01:20:31,560 Un tas ir ļoti vienkāršs veids, kā izveidot Ajax vaicājumu. 1224 01:20:31,560 --> 01:20:34,340 >> Ļoti ātri, Rob veida minēja šo jau, 1225 01:20:34,340 --> 01:20:37,170 lietas var noiet greizi, sliktas lietas var notikt, 1226 01:20:37,170 --> 01:20:42,660 lai jūs vēlaties, lai iepazītos ar šiem HTTP atbildes kodiem. 1227 01:20:42,660 --> 01:20:46,030 Kas tie ir, ir tikai, piemēram, 200, viss gāja labi. 1228 01:20:46,030 --> 01:20:48,670 Kaut kas cits, sliktas lietas notika. 1229 01:20:48,670 --> 01:20:50,790 Tas parasti ir lieta, ko vēlaties atcerēties. 1230 01:20:50,790 --> 01:20:53,440 Bet tas ir patīkami zināt, visi no tiem. 1231 01:20:53,440 --> 01:20:55,970 Un visbeidzot, kad mēs esam izgājuši cauri visiem, ka, 1232 01:20:55,970 --> 01:20:58,680 mums ir jārunā ļoti ātri par dizainu, 1233 01:20:58,680 --> 01:21:00,620 , un tad mēs varam jums visu atvaļinājumu. 1234 01:21:00,620 --> 01:21:03,410 Dizainu. Lietas, ko vēlaties atcerēties. 1235 01:21:03,410 --> 01:21:06,950 Uzdodiet sev šos jautājumus: Kas būs, izmantojot šo? 1236 01:21:06,950 --> 01:21:09,580 Ko viņi var izmantot to? Ko mans lietotājiem rūp? 1237 01:21:09,580 --> 01:21:11,750 Ko viņi rūp? 1238 01:21:11,750 --> 01:21:14,500 Jūs vienkārši nevēlaties, lai app, un ļaujiet tai tikai pieaugs 1239 01:21:14,500 --> 01:21:18,270 un kļūt par šo milzu, visu patērē lieta, ka jūs pat nevarat pabeigt. 1240 01:21:18,270 --> 01:21:23,900 Jūs vēlaties, lai būtu diskrēta mērķus un plānus, un lietas, ko vēlaties, lai risinātu. 1241 01:21:23,900 --> 01:21:29,000 Dara to bez piepūles. Tas viss saka, būtībā, 1242 01:21:29,000 --> 01:21:34,950 padara to viegli, lai lietotājs varētu izmantot to, nepadara to par milzu lāse teksta patīk šī slaida ir patiesībā. 1243 01:21:34,950 --> 01:21:38,020 Jūs vienkārši vēlaties, lai būtu kaut kas, ja tas ir ļoti viegli, lai kāds iet 1244 01:21:38,020 --> 01:21:40,800 un darīt to, ko viņi vēlas darīt. 1245 01:21:40,800 --> 01:21:42,920 Jūs nevēlaties, lai viņiem būtu orientēties 5 lapām 1246 01:21:42,920 --> 01:21:45,460 nokļūt jūsu galvenā funkcija jūsu vietā. 1247 01:21:45,460 --> 01:21:49,290 Ja Google bija 5 lapas pirms jūs pat varētu meklēt kaut ko, 1248 01:21:49,290 --> 01:21:53,080 neviens to izmantot. 1249 01:21:53,080 --> 01:21:55,890 Un visbeidzot, papīra prototips, fokusa grupu. 1250 01:21:55,890 --> 01:21:59,220 Ir labs dizains un testēšanas metodes. 1251 01:21:59,220 --> 01:22:00,730 Tikai tāpēc, ka jūs domājat, ka tas strādā priekš jums, 1252 01:22:00,730 --> 01:22:04,860 nenozīmē, ka kāds cits domā, ka tā darbojas. 1253 01:22:04,860 --> 01:22:14,490 Bet jā, tas arī viss. 1254 01:22:14,490 --> 01:22:17,490 [CS50.TV]