1 00:00:00,000 --> 00:00:02,860 [Powered by Google Translate] [Недеља 5] 2 00:00:02,860 --> 00:00:04,860 [Давид Ј. Малан - Универзитет Харвард] 3 00:00:04,860 --> 00:00:07,260 [Ово је ЦС50. - ЦС50.ТВ] 4 00:00:07,260 --> 00:00:09,740 >> Ово је ЦС50, 5 недеља. 5 00:00:09,740 --> 00:00:12,900 Данас и ове недеље, уводимо мало света форензике 6 00:00:12,900 --> 00:00:14,850 у контексту проблема Сет 4. 7 00:00:14,850 --> 00:00:18,480 Данас ће бити скраћени предавање јер након тога је посебан догађај овде. 8 00:00:18,480 --> 00:00:21,940 Тако ћемо завирити и зафркавати и студенте и родитеље слично данас 9 00:00:21,940 --> 00:00:24,600 са неким стварима које су на хоризонту. 10 00:00:24,600 --> 00:00:29,050 >> Међу њима, од понедељка, имаћете још неколико другова. 11 00:00:29,050 --> 00:00:32,980 ЕДКС, Харвард и МИТ нови онлине иницијатива за ОпенЦоурсеВаре и више, 12 00:00:32,980 --> 00:00:36,730 лансира на кампусу харвардском у понедељак, што значи долазе понедељак 13 00:00:36,730 --> 00:00:40,930 ћете имати, као и последњег пребројавања, 86.000 додатних другове 14 00:00:40,930 --> 00:00:43,680 који ће пратити уз ЦС50 је предавања и секција 15 00:00:43,680 --> 00:00:45,890 и сцреенсхотс и проблем сетова. 16 00:00:45,890 --> 00:00:51,870 И као део тога, ви ћете постати чланови оснивачке класе ЦС50 и сад ЦС50к. 17 00:00:51,870 --> 00:00:56,150 Као део овог сада, схватају да ће бити неких упсидес као добро. 18 00:00:56,150 --> 00:01:00,620 Да бисте добили спреман за ово, за масовно броја ученика, 19 00:01:00,620 --> 00:01:03,820 Довољно је рећи да, иако имамо 108 поздрав и ЦАС, 20 00:01:03,820 --> 00:01:07,560 то није баш најбољи ученик-наставник однос када смо погодили 80.000 студената. 21 00:01:07,560 --> 00:01:09,830 Нећемо бити класирање толико проблем поставља ручно, 22 00:01:09,830 --> 00:01:13,050 па увели ове недеље у проблему скупа ће бити ЦС50 хотела, 23 00:01:13,050 --> 00:01:15,410 која ће бити командне линије алат унутар апарата 24 00:01:15,410 --> 00:01:17,880 да ћете добити када га ажурирати касније овај викенд. 25 00:01:17,880 --> 00:01:21,030 Моћи ћете да покренете команду, цхецк50, на сопственом псет, 26 00:01:21,030 --> 00:01:24,770 а ви ћете добити инстант повратне информације о томе да ли ваш програм је тачно или нетачно 27 00:01:24,770 --> 00:01:27,980 према различитим спецификацијама дизајна које смо обезбедили. 28 00:01:27,980 --> 00:01:30,310 Више о томе у спецификацији проблема сет. 29 00:01:30,310 --> 00:01:34,220 Тхе ЦС50к школски другови ће користити ово као добро. 30 00:01:34,220 --> 00:01:36,170 >> Проблем Сет 4 је све о форензици, 31 00:01:36,170 --> 00:01:38,630 и ово је заиста псет инспирисан неким реалним стварима 32 00:01:38,630 --> 00:01:41,210 где, када сам био на постдипломским студијама сам интерниран за време 33 00:01:41,210 --> 00:01:45,270 са Миддлесек Цоунти је Окружно јавно тужилаштво ради форензичку посао 34 00:01:45,270 --> 00:01:47,660 са својим оловним форензичким истражитеља. 35 00:01:47,660 --> 00:01:50,280 Шта ово износио, као што мислим да сам споменуо неколико недеља прошлост, 36 00:01:50,280 --> 00:01:52,720 је маса Државна полиција или други ће доћи, 37 00:01:52,720 --> 00:01:56,150 они би отпасти ствари као што су хард дискови и ЦД и флопи дискова и слично, 38 00:01:56,150 --> 00:01:58,770 и онда је циљ канцеларије форензике је био да се утврди 39 00:01:58,770 --> 00:02:01,470 да ли је било или није било доказа о некој врсти. 40 00:02:01,470 --> 00:02:04,730 Ово је специјални истраге јединица, тако да је било бело-оковратника криминала. 41 00:02:04,730 --> 00:02:10,949 То је било више забрињава врста злочина, укључујући све неки дигиталних медија. 42 00:02:10,949 --> 00:02:16,450 Испоставило се да то није много људи напишу емаил каже, "Ја сам то урадио." 43 00:02:16,450 --> 00:02:20,490 Тако често, ове судске претраге нису појавили све то много воћа, 44 00:02:20,490 --> 00:02:22,820 али понекад би људи пишу такве мејлове. 45 00:02:22,820 --> 00:02:25,240 Тако понекад, напори су награђени. 46 00:02:25,240 --> 00:02:31,210 >> Али да доведе до ове судску псет ћемо представити у псет4 мало графике. 47 00:02:31,210 --> 00:02:35,410 Вероватно ове ствари здраво за готово - ЈПЕГ, ГИФ, и као - ових дана. 48 00:02:35,410 --> 00:02:38,320 Али ако заиста мисле о томе, слика, баш као Робов лице, 49 00:02:38,320 --> 00:02:41,270 може бити моделиран као низ тачака или пиксела. 50 00:02:41,270 --> 00:02:43,380 У случају лица Робов, ту је све врсте боја, 51 00:02:43,380 --> 00:02:46,760 и ми смо почели да видите појединачне тачке, иначе познат као пиксела, 52 00:02:46,760 --> 00:02:48,610 када смо почели да Зоом ин 53 00:02:48,610 --> 00:02:54,660 Али, ако смо поједноставили свету мало и само да кажем да је ово овде је Роб у црној и белој боји, 54 00:02:54,660 --> 00:02:57,490 да представљају црно и бело, можемо само да користимо бинарни. 55 00:02:57,490 --> 00:03:01,660 А ако ћемо користити бинарни, 1 или 0, можемо изразити ту исту слику 56 00:03:01,660 --> 00:03:06,140 од Робов насмејано лице са овом обрасцу бита. 57 00:03:06,140 --> 00:03:12,100 11000011 представља бела, сива, црна, бела, сива, црна, бела, црвена. 58 00:03:12,100 --> 00:03:16,150 И тако то није велики скок онда почнем да причам о шареним фотографијама, 59 00:03:16,150 --> 00:03:18,600 ствари које желите видети на Фацебоок-у или узети са дигиталном камером. 60 00:03:18,600 --> 00:03:21,410 Али свакако, када је у питању боја, треба више бита. 61 00:03:21,410 --> 00:03:25,690 И сасвим уобичајене у свету фотографије је да се користе не 1-битну боју, 62 00:03:25,690 --> 00:03:29,560 јер то сугерише, али 24-битне боје, где ви у ствари добијате милионе боја. 63 00:03:29,560 --> 00:03:32,250 Дакле, као иу случају када смо зумирао Робов оку, 64 00:03:32,250 --> 00:03:36,370 то је било који број од милиона различитих шареним могућности. 65 00:03:36,370 --> 00:03:39,040 Тако ћемо увести ово Проблем Сет 4, као и на објашњења, 66 00:03:39,040 --> 00:03:43,370 која ће бити данас у 3:30 уместо уобичајеног 2:30 због предавања у петак овде. 67 00:03:43,370 --> 00:03:46,620 Али видео ће бити онлине као и обично сутра. 68 00:03:46,620 --> 00:03:48,820 >> Такође ћемо вас упознати са другом формату. 69 00:03:48,820 --> 00:03:51,270 Ово је намерно требало да изгледа застрашујуће на први поглед, 70 00:03:51,270 --> 00:03:55,670 али то је само нека документација за Ц струцт. 71 00:03:55,670 --> 00:03:58,940 Испоставило се да Мицрософт пре неколико година помогао популаризацији овај формат 72 00:03:58,940 --> 00:04:05,150 назвао битмап формат, БМП, и то је супер једноставан, шарене графички формат 73 00:04:05,150 --> 00:04:10,150 који је коришћен за дуже време, а понекад и даље за тапете на десктоп. 74 00:04:10,150 --> 00:04:14,760 Ако помислим на Виндовс КСП и брежуљке и плавог неба, 75 00:04:14,760 --> 00:04:17,170 то је обично бмп или растерска слика. 76 00:04:17,170 --> 00:04:19,959 Сличице су забава за нас, јер они имају мало више комплексност. 77 00:04:19,959 --> 00:04:22,610 Није баш тако једноставно као овај табелу од 0с и 1с. 78 00:04:22,610 --> 00:04:27,510 Уместо тога, имате ствари као заглавље на почетку фајла. 79 00:04:27,510 --> 00:04:31,990 Другим речима, унутар једног бмп фајл. Се гомила 0с и 1с, 80 00:04:31,990 --> 00:04:34,910 али постоје неки додатни 0с и 1с тамо. 81 00:04:34,910 --> 00:04:38,220 И испоставило се да је оно што смо вероватно узели здраво за готово годинама - 82 00:04:38,220 --> 00:04:45,170 Формати попут доц или.. клс или мп3,. мп4,. без обзира на формате 83 00:04:45,170 --> 00:04:48,480 да сте упознати са - шта то уопште значи бити формат, 84 00:04:48,480 --> 00:04:52,480 јер на крају дана све ове датотеке користимо имају само 0с и 1с. 85 00:04:52,480 --> 00:04:56,810 А можда они 0с и 1с представљају АБЦ преко АСЦИИ или слично, 86 00:04:56,810 --> 00:04:58,820 али на крају крајева, то је још увек само 0с и 1с. 87 00:04:58,820 --> 00:05:02,100 Дакле, људи само повремено одлучују да измисле нови формат датотеке 88 00:05:02,100 --> 00:05:06,420 где стандардизује шта ће обрасци бита заправо значи. 89 00:05:06,420 --> 00:05:09,220 И у овом случају овде су људи који је пројектовао битмап формат 90 00:05:09,220 --> 00:05:15,620 рекао је да је на првом бајта у битмап датотеке, као што је означено офсет 0 тамо, 91 00:05:15,620 --> 00:05:18,940 тамо ће бити неки загонетно назван променљива зове бфТипе, 92 00:05:18,940 --> 00:05:23,080 која само стоји на битмап тип датотеке, која врста битмап фајла је ово. 93 00:05:23,080 --> 00:05:27,700 Можете да можда закључити из другог реда који офсет 2, бајт број 2, 94 00:05:27,700 --> 00:05:33,740 има образац 0с и 1с, који представља шта? Величина нечега. 95 00:05:33,740 --> 00:05:35,310 А то иде одатле. 96 00:05:35,310 --> 00:05:37,410 Дакле, у сету проблема 4, бићете ходали кроз неке од тих ствари. 97 00:05:37,410 --> 00:05:39,520 Нећемо завршити брине о свима њима. 98 00:05:39,520 --> 00:05:47,510 Али приметите да почне да се занимљива око 54 бајта: ргбтБлуе, зелена и црвена. 99 00:05:47,510 --> 00:05:52,110 Ако сте икада чули акроним РГБ - црвена, плава, зелена - ово је референца на то 100 00:05:52,110 --> 00:05:54,610 јер испада да могу да сликам све боје дуге 101 00:05:54,610 --> 00:05:58,180 са неким комбинацији црвене и плаве и зелене. 102 00:05:58,180 --> 00:06:03,320 А у ствари, родитељи у соби могу сетити неких од најранијих пројектора. 103 00:06:03,320 --> 00:06:05,890 Ових дана, ви само погледајте једну од светлих тачака излази од објектива, 104 00:06:05,890 --> 00:06:09,800 али назад у дан сте имали црвену сочива, плаву сочиво и зелено сочиво, 105 00:06:09,800 --> 00:06:13,380 и заједно су усмерена на екрану и формирао шарене слике. 106 00:06:13,380 --> 00:06:16,270 И врло често, средње школе и гимназије би имали те објективе 107 00:06:16,270 --> 00:06:19,720 икада тако нешто накриво, тако да су били нека врста виде дупле или троструке слике. 108 00:06:19,720 --> 00:06:24,100 Али то је била идеја. Имали сте црвено и зелено и плаво светло премазивали слику. 109 00:06:24,100 --> 00:06:26,590 А тај исти принцип се користи у рачунарима. 110 00:06:26,590 --> 00:06:30,230 >> Дакле, међу изазовима тада за вас у проблему Сет 4 ће бити неколико ствари. 111 00:06:30,230 --> 00:06:34,800 Један је да се заиста променили величину слике, да се у обрасцу 0с и 1с, 112 00:06:34,800 --> 00:06:40,200 схвати који комади 0с и 1с представљају оно у структури овако, 113 00:06:40,200 --> 00:06:43,630 и онда схватим како да понове пиксела - Црвени, блуз, Зелених - 114 00:06:43,630 --> 00:06:46,660 унутра, тако да када слика изгледа овако почетку, 115 00:06:46,660 --> 00:06:49,210 она може да изгледа овако, уместо после тога. 116 00:06:49,210 --> 00:06:53,640 Међу другим изазовима превише ће бити да ћете бити уручена форензичку слику 117 00:06:53,640 --> 00:06:56,030 стварног датотеке са дигиталног фотоапарата. 118 00:06:56,030 --> 00:06:58,960 И на тој камери, некада давно, били гомила фотографија. 119 00:06:58,960 --> 00:07:03,760 Проблем је када смо случајно избрисана или је слика оштећена некако. 120 00:07:03,760 --> 00:07:05,750 Лоше ствари се дешавају са дигиталним камерама. 121 00:07:05,750 --> 00:07:09,150 И тако смо се брзо копирају све 0с и 1с офф тог картице за вас, 122 00:07:09,150 --> 00:07:13,610 чувају их све у једном великом фајлу, и онда ћемо их предати вама у Проблем Сет 4 123 00:07:13,610 --> 00:07:19,320 тако да можете написати програм у Ц са којима се опорави све те ЈПЕГ, идеално. 124 00:07:19,320 --> 00:07:23,330 И испоставило се да су ЈПЕГ, иако су донекле су сложене формату - 125 00:07:23,330 --> 00:07:26,360 они су много сложенији од овог насмејано лице овде - 126 00:07:26,360 --> 00:07:31,160 испада да сваки ЈПЕГ почиње са истим обрасцима 0с и 1с. 127 00:07:31,160 --> 00:07:35,630 Дакле коришћење, на крају, док петља или за петљу или слично, 128 00:07:35,630 --> 00:07:38,880 можете прелазили преко свега 0с и 1с у форензичке слици, 129 00:07:38,880 --> 00:07:43,150 и сваки пут кад видим посебан образац који је дефинисан у спецификацији проблема сет, 130 00:07:43,150 --> 00:07:47,880 Овде можете претпоставити је, са врло великом вероватноћом, почетак ЈПЕГ. 131 00:07:47,880 --> 00:07:51,230 И чим вам исти образац известан број бајтова 132 00:07:51,230 --> 00:07:55,430 или килобајта или мегабајта касније, овде можете претпоставити је друга ЈПЕГ, 133 00:07:55,430 --> 00:07:57,380 фотографија сам после првог. 134 00:07:57,380 --> 00:08:01,370 Дозволите ми да престану да читају тај први фајл, почнем да пишем овај нови, 135 00:08:01,370 --> 00:08:06,310 и излаз вашег програма за псет4 ће бити чак 50 ЈПЕГ. 136 00:08:06,310 --> 00:08:09,270 А ако то није 50 ЈПЕГ, имате мало петље. 137 00:08:09,270 --> 00:08:12,490 Ако имате неограничен број ЈПЕГ, имате бесконачну петља. 138 00:08:12,490 --> 00:08:14,910 Тако да ће, такође, бити веома чест случај. 139 00:08:14,910 --> 00:08:16,600 Дакле, то је оно што је на хоризонту. 140 00:08:16,600 --> 00:08:21,310 >> Квиз 0 иза нас, остварују по мом поште да увек постоје људи који су обоје срећни, 141 00:08:21,310 --> 00:08:23,640 некако неутралан, и тужно око квиза 0 време. 142 00:08:23,640 --> 00:08:26,800 И молим те немој се допре до мене, глава ТФ Замила, ваша ТФ, 143 00:08:26,800 --> 00:08:31,180 или један од ЦАС да знате ако желите да разговарају о томе како су ствари ишле. 144 00:08:31,180 --> 00:08:35,539 >> Тако да импресионира родитеље овде у соби, шта је ЦС50 библиотека? 145 00:08:36,429 --> 00:08:40,390 [Смех] Добар посао. 146 00:08:40,390 --> 00:08:48,340 Шта је ЦС50 библиотека? Да. >> [Ученик] То је унапред написан сет кода [нечујан] 147 00:08:48,340 --> 00:08:49,750 Добро, добро. 148 00:08:49,750 --> 00:08:53,240 То је унапред написан сет кода који смо запослени написао, обезбедили смо на вас, 149 00:08:53,240 --> 00:08:55,030 који даје неке заједничке функције, 150 00:08:55,030 --> 00:08:59,020 ствари попут донеси ми низ, узмем инт - све функције које су овде наведене. 151 00:08:59,020 --> 00:09:02,260 >> Почевши од сада, почнемо да се заиста узме ове точкове обуке искључен. 152 00:09:02,260 --> 00:09:05,050 Ми ћемо почети да одузме ниску од тебе, 153 00:09:05,050 --> 00:09:08,870 што опозив био само синоним за оно што стварни тип података? >> [Више студената] Цхар *. 154 00:09:08,870 --> 00:09:12,730 Цхар *. За родитеље, то је вероватно [чини вхоосхинг звук]. То је добро. 155 00:09:12,730 --> 00:09:17,550 Цхар * ћемо почети да видите на екрану све више као што смо уклонили жицу из нашег речника, 156 00:09:17,550 --> 00:09:19,730 бар када је у питању заправо писања кода. 157 00:09:19,730 --> 00:09:22,840 Слично томе, ми ћемо престати користећи неке од ових функција колико 158 00:09:22,840 --> 00:09:25,280 јер наши програми ће добити више софистициран. 159 00:09:25,280 --> 00:09:28,480 Уместо само пишу програме који седе тамо са одзивник трепери, 160 00:09:28,480 --> 00:09:31,870 чекајући корисника да откуцате нешто у, добићете своје инпуте од другде. 161 00:09:31,870 --> 00:09:35,490 На пример, добићете их од низа битова на локалном хард диску. 162 00:09:35,490 --> 00:09:38,580 Уместо тога ћете их у будућности са мрежном везом, 163 00:09:38,580 --> 00:09:40,230 неки сајт негде. 164 00:09:40,230 --> 00:09:44,110 >> Дакле, хајде да одлепите овом слоју по први пут и повуците ЦС50 Апплианце 165 00:09:44,110 --> 00:09:49,010 а овај фајл се зове цс50.х, који сте # укључујући недеље, 166 00:09:49,010 --> 00:09:51,140 али хајде да ствари видимо шта је унутра овога. 167 00:09:51,140 --> 00:09:54,430 На врху фајла у плавом је само гомила коментарише: 168 00:09:54,430 --> 00:09:57,050 Информације о гаранцији и лиценцирање. 169 00:09:57,050 --> 00:09:59,050 То је нека врста заједничког парадигме у софтверу 170 00:09:59,050 --> 00:10:01,580 јер доста софтвера ових дана је оно што се зове опен соурце, 171 00:10:01,580 --> 00:10:05,220 што значи да је неко написао код и учинио слободно доступан 172 00:10:05,220 --> 00:10:10,470 не само да ради и да се користе, али да се заиста чита и мења и интегришу у свој рад. 173 00:10:10,470 --> 00:10:14,660 Дакле, то је оно што сам користио, опен соурце софтвер, иако у веома малом облику. 174 00:10:14,660 --> 00:10:18,560 Ако сам доле помицати прошлости коментарима, мада ћемо почети да видимо још неке познате ствари. 175 00:10:18,560 --> 00:10:25,010 Обавештење на врху овде да цс50.х датотека садржи гомилу хеадер фајлова. 176 00:10:25,010 --> 00:10:28,560 Већина од њих, нисмо видели раније, али једно је познато. 177 00:10:28,560 --> 00:10:32,270 Који од ових смо видели, мада кратко, тако далеко? >> [Ученик] Стандардна библиотека. 178 00:10:32,270 --> 00:10:35,810 Да, стандардна библиотека. стдлиб.х има маллоц. 179 00:10:35,810 --> 00:10:38,320 Када смо почели да причамо о динамичким меморијским средстава, 180 00:10:38,320 --> 00:10:41,650 којима ћемо се вратити на следећу недељу, као и ми почели укључујући тог фајла. 181 00:10:41,650 --> 00:10:46,640 Испоставило се да воид и истинито и лажно заправо не постоји у Ц по себи 182 00:10:46,640 --> 00:10:49,440 уколико сте укључили овај фајл овде. 183 00:10:49,440 --> 00:10:52,710 Ми смо недељама су, укључујући стдбоол.х 184 00:10:52,710 --> 00:10:55,620 тако да можете користити појам боол, тачно или нетачно. 185 00:10:55,620 --> 00:10:58,620 Без тога, морали бисте да сортирате лажних томе и користи инт 186 00:10:58,620 --> 00:11:02,610 и само произвољно претпоставити да је лажно 0 и 1 је истина. 187 00:11:02,610 --> 00:11:07,150 Ако смо доле помицати даље, овде је наша дефиниција ниске. 188 00:11:07,150 --> 00:11:11,390 Испоставило се, као што смо рекли раније, да тамо где је ова звезда је не битно. 189 00:11:11,390 --> 00:11:13,720 Можете чак и да имамо простора за све. 190 00:11:13,720 --> 00:11:16,740 Ми смо овај семестар су га промовишу као да је то јасно 191 00:11:16,740 --> 00:11:18,620 да звезда има везе са типом, 192 00:11:18,620 --> 00:11:21,700 али схватају само као заједнички, ако не и мало више заједничког, 193 00:11:21,700 --> 00:11:24,430 је да га стави тамо, али то је функционално иста ствар. 194 00:11:24,430 --> 00:11:27,720 Али сада, ако смо прочитали доле даље, хајде да погледамо ГетИнт 195 00:11:27,720 --> 00:11:32,190 јер смо користили да је можда пре него било шта друго ово семестра. 196 00:11:32,190 --> 00:11:37,440 Овде је ГетИнт. То је шта? >> [Ученик] прототип. >> Ово је само прототип. 197 00:11:37,440 --> 00:11:41,410 Често смо ставили прототипове на врховима наших ц датотеке., 198 00:11:41,410 --> 00:11:46,690 али такође можете ставити прототипова у хеадер фајловима, Х фајлове., као овај овде 199 00:11:46,690 --> 00:11:50,840 тако да када пишеш неке функције које желите да други људи буду могли да користите, 200 00:11:50,840 --> 00:11:53,550 што је управо случај са ЦС50 библиотеци, 201 00:11:53,550 --> 00:11:57,040 Ви не само да спроведе своје функције у нешто попут цс50.ц, 202 00:11:57,040 --> 00:12:02,790 такође ставио прототипова није на врху тог фајла, али на врху заглавља датотеке. 203 00:12:02,790 --> 00:12:07,170 Онда је заглавље датотеке је оно пријатељи и колеге укључују 204 00:12:07,170 --> 00:12:09,760 са # укључе у сопственом коду. 205 00:12:09,760 --> 00:12:12,210 Дакле, све ово време, ви сте били, укључујући све ове прототипове, 206 00:12:12,210 --> 00:12:16,580 ефективно на врху фајла али путем ове # инцлуде механизам, 207 00:12:16,580 --> 00:12:20,070 која у суштини копија и пасте овај фајл на свој. 208 00:12:20,070 --> 00:12:23,070 Ево неких прилично детаљна документација. 209 00:12:23,070 --> 00:12:25,640 Ми смо прилично узети здраво за готово да ГетИнт добија инт, 210 00:12:25,640 --> 00:12:27,640 али се испоставило да су неки кутак случајеви. 211 00:12:27,640 --> 00:12:31,810 Шта ако корисник упише у броју који је сувише велики, куинтиллион, 212 00:12:31,810 --> 00:12:35,490 то једноставно не може да стане унутар једног инт? Шта је очекивано понашање? 213 00:12:35,490 --> 00:12:38,020 У идеалном случају, то је предвидљив. 214 00:12:38,020 --> 00:12:40,280 Дакле, у овом случају, ако сте заиста прочитали ситним словима, 215 00:12:40,280 --> 00:12:44,500 ћете заиста видети да ли линија не може да се чита, тај повратак ИНТ_МАКС. 216 00:12:44,500 --> 00:12:48,320 Никада нисмо причали о овоме, али на основу његове капитализације, што је вероватно? 217 00:12:48,320 --> 00:12:50,640 [Ученик] константа. >> То је константа. 218 00:12:50,640 --> 00:12:54,770 То је нека посебна константа која је вероватно проглашена у једној од тих фајлова заглавља 219 00:12:54,770 --> 00:13:00,090 то се више у датотеци и ИНТ_МАКС је вероватно нешто око 2 милијарде долара, 220 00:13:00,090 --> 00:13:04,990 идеја је да због тога треба да се некако означи да је нешто кренуло наопако, 221 00:13:04,990 --> 00:13:10,700 ми, да, има 4 милијарде бројева на располагању: -2 милијарде на до 2 милијарде евра, дати или узети. 222 00:13:10,700 --> 00:13:14,710 Па, оно што је заједничко у програмирању је само украсти један од тих бројева, 223 00:13:14,710 --> 00:13:18,920 мозда 0, мозда 2 милијарде, можда -2 милијарди, 224 00:13:18,920 --> 00:13:23,280 тако да проведете један од ваших могућих вредности, тако да можете да се посвете свету 225 00:13:23,280 --> 00:13:26,820 да ако нешто крене наопако, ја ћу вратити овај супер велику вредност. 226 00:13:26,820 --> 00:13:31,030 Али ви не желите да куцате нешто корисник шифровану као 234 ..., заиста велики број. 227 00:13:31,030 --> 00:13:34,060 Ти генерализовати га уместо као константа. 228 00:13:34,060 --> 00:13:38,060 Па стварно, ако сте као анални протеклих неколико недеља, сваки пут када се зове ГетИнт, 229 00:13:38,060 --> 00:13:42,900 требало је проверио са, ако услов није корисник тип у ИНТ_МАКС, 230 00:13:42,900 --> 00:13:46,590 или, тачније, да ли ГетИнт повратка ИНТ_МАКС, јер ако јесте, 231 00:13:46,590 --> 00:13:51,830 То заправо значи да то није тип. Нешто је пошло наопако у овом случају. 232 00:13:51,830 --> 00:13:56,080 Дакле, то је оно што је опште позната као сентинел вредности, што само значи посебан. 233 00:13:56,080 --> 00:13:58,120 >> Хајде да се сада осврнем на ц датотеку.. 234 00:13:58,120 --> 00:14:01,340 Ц Фајл је постојала у апарату за неко време. 235 00:14:01,340 --> 00:14:06,840 А у ствари, апарат има оно претходно сачињен за вас у тој ствари зовемо објектног кода, 236 00:14:06,840 --> 00:14:09,540 али то једноставно није битно за вас, где то је зато систем зна 237 00:14:09,540 --> 00:14:11,730 у овом случају је: апарат. 238 00:14:11,730 --> 00:14:17,400 Хајде дођите сада ГетИнт и видети како ГетИнт је радио све ово време. 239 00:14:17,400 --> 00:14:19,460 Овде имамо сличне коментаре пре. 240 00:14:19,460 --> 00:14:21,660 Дозволите ми да увећате само кода дела. 241 00:14:21,660 --> 00:14:23,900 И шта имамо за ГетИнт је следећи. 242 00:14:23,900 --> 00:14:25,700 Она не узима улаз. 243 00:14:25,700 --> 00:14:29,510 Она враћа инт, док (истина), тако да имамо намерно бесконачну петљу, 244 00:14:29,510 --> 00:14:33,180 али ваљда ћемо разбити од овога некако врати из овога. 245 00:14:33,180 --> 00:14:34,870 >> Хајде да видимо како то ради. 246 00:14:34,870 --> 00:14:39,240 Изгледа да се користе ГетСтринг у овој првој линији унутар петље, 166. 247 00:14:39,240 --> 00:14:43,780 Ово је сада добра пракса, јер под којим околностима може да се врати ГетСтринг 248 00:14:43,780 --> 00:14:47,660 посебна кључна реч НУЛЛ? >> [Ученик] Ако нешто крене наопако. 249 00:14:47,660 --> 00:14:51,630 Ако нешто крене наопако. А шта би могло да крене наопако када зовете тако нешто ГетСтринг? 250 00:14:54,960 --> 00:14:57,640 Да. >> [Ученик] Маллоц не да га дају Интс. 251 00:14:57,640 --> 00:14:59,150 Да. Можда маллоц успе. 252 00:14:59,150 --> 00:15:03,190 Негде испод хаубе, ГетСтринг зове маллоц, који додељује меморију, 253 00:15:03,190 --> 00:15:06,020 која омогућава рачунара продавницу свих знакова 254 00:15:06,020 --> 00:15:07,750 да корисник укуцава у тастатури. 255 00:15:07,750 --> 00:15:11,590 И претпоставимо корисник имао много слободног времена и откуцао више, на пример, 256 00:15:11,590 --> 00:15:16,160 преко 2 милијарде карактера, више знакова него што је компјутер има чак РАМ-а. 257 00:15:16,160 --> 00:15:19,250 ГетСтринг мора бити у стању да значи да са вама. 258 00:15:19,250 --> 00:15:22,560 Чак и ако је ово супер, супер неуобичајено кутак случај, 259 00:15:22,560 --> 00:15:24,340 то мора некако бити у стању да средим ово, 260 00:15:24,340 --> 00:15:28,750 па ГетСтринг, ако смо се вратили и чита своју документацију, да ли у ствари НУЛЛ повратка. 261 00:15:28,750 --> 00:15:34,460 Па сад, ако ГетСтринг не враћајући НУЛЛ, ГетИнт ће успети враћањем ИНТ_МАКС 262 00:15:34,460 --> 00:15:37,690 само као Сентинел. Ово су само људске конвенције. 263 00:15:37,690 --> 00:15:41,450 Једини начин да би знали да је ово случај читајући документацију. 264 00:15:41,450 --> 00:15:45,040 >> Хајде дођите до места где инт заправо стечен. 265 00:15:45,040 --> 00:15:51,160 Ако сам идите доле мало даље, у складу 170, имамо коментар изнад ових редова. 266 00:15:51,160 --> 00:15:55,100 Ми проглашавамо године 172 инт, Н и знак, Ц, а затим тај нови функцију, 267 00:15:55,100 --> 00:15:58,930 које неки од вас су наишао пре, ссцанф. 268 00:15:58,930 --> 00:16:00,870 То је скраћеница за гудачки сцанф. 269 00:16:00,870 --> 00:16:05,700 Другим речима, ми дају ниску и ја ћу га скенирати за делове информација од интереса. 270 00:16:05,700 --> 00:16:07,360 Шта то значи? 271 00:16:07,360 --> 00:16:11,800 Претпоставимо да куцам у, буквално, 123 на тастатури, а затим притисните Ентер. 272 00:16:11,800 --> 00:16:16,470 Шта је тип података од 123, када је вратио ГетСтринг? >> [Ученик] Стринг. 273 00:16:16,470 --> 00:16:18,380 Очигледно је ниска, зар не? Имам ниску. 274 00:16:18,380 --> 00:16:23,220 Дакле, 123 је заиста, цитирам-завршити цитат, 123 са \ 0 на крају. 275 00:16:23,220 --> 00:16:27,110 То није инт. То није број. Изгледа као број, али то није стварно. 276 00:16:27,110 --> 00:16:29,080 Дакле, шта ГетИнт треба да урадим? 277 00:16:29,080 --> 00:16:35,750 Она мора да скенира ту ниску лево на десно - 123 \ 0 - и некако претворити у стварном цео број. 278 00:16:35,750 --> 00:16:37,850 Ти могао да схватим како то да урадите. 279 00:16:37,850 --> 00:16:41,450 Ако помислим на псет2, ти вероватно имаш мало пријатно Цезара 280 00:16:41,450 --> 00:16:44,820 или Вигенере, тако да можете да прелазите преко ниске, можете да конвертујете знакова да Интс. 281 00:16:44,820 --> 00:16:46,710 Али врага, то је много посла. 282 00:16:46,710 --> 00:16:49,860 Зашто не позовете функцију као ссцанф који ради за тебе? 283 00:16:49,860 --> 00:16:54,230 Дакле ссцанф очекује аргумент - у овом случају назива линија, која је ниска. 284 00:16:54,230 --> 00:17:01,840 Затим одредите у наводницима, врло сличан иф, шта сте очекивали да видите у овом низу. 285 00:17:01,840 --> 00:17:09,000 И оно што сам ја овде говорим је да очекујем да видим децимални број и можда карактер. 286 00:17:09,000 --> 00:17:12,000 И ми ћемо видети зашто је то случај у само једном тренутку. 287 00:17:12,000 --> 00:17:15,869 И испоставило се да је овај запис је сада подсећа на ствари почели смо да причамо о 288 00:17:15,869 --> 00:17:17,619 пре нешто више од недељу дана. 289 00:17:17,619 --> 00:17:21,740 Шта је и н и ц и раде за нас овде? >> [Ученик] Адреса н и адреса ц. 290 00:17:21,740 --> 00:17:25,400 Да. То ми даје адресу н и адресу ц. Зашто је то важно? 291 00:17:25,400 --> 00:17:30,220 Ви знате да са функције у Ц, увек можете да се вратите вредност или никакву вредност уопште. 292 00:17:30,220 --> 00:17:34,530 Можете да врати инт, стринг, флоат, цхар, шта год, или можете да се вратите празнину, 293 00:17:34,530 --> 00:17:38,030 али само да се максимално врати једну ствар. 294 00:17:38,030 --> 00:17:42,760 Али, овде желимо да ме врати ссцанф мозда инт, децимални број, 295 00:17:42,760 --> 00:17:46,220 и знак, а ја ћу објаснити зашто знак у тренутку. 296 00:17:46,220 --> 00:17:51,460 Ви желите ефикасно ссцанф да се врате две ствари, али то једноставно није могуће у Ц. 297 00:17:51,460 --> 00:17:55,200 Можете радити око тога проласком у две адресе 298 00:17:55,200 --> 00:17:57,370 јер чим предате у функцији две адресе, 299 00:17:57,370 --> 00:18:00,470 Шта могу да функционишу са њима? >> [Ученик] Пиши тих адреса. 300 00:18:00,470 --> 00:18:02,010 То може писати на те адресе. 301 00:18:02,010 --> 00:18:05,770 Можете да користите операцију звезда и иду тамо, да се сваки од тих адреса. 302 00:18:05,770 --> 00:18:11,260 То је врста овог леђа врата механизам али веома уобичајена за промену вредности променљивих 303 00:18:11,260 --> 00:18:14,870 више него само једном месту - у овом случају, два. 304 00:18:14,870 --> 00:18:21,340 Сада сам приметио проверу == 1, а затим враћа н ако се то, у ствари, процењују на истина. 305 00:18:21,340 --> 00:18:26,170 Дакле, шта се дешава? Технички, сви заиста желимо да се деси у ГетИнт је ово. 306 00:18:26,170 --> 00:18:30,740 Ми желимо да анализирамо, да тако кажемо, ми желимо да чита стринг - цитирам-завршити цитат 123 - 307 00:18:30,740 --> 00:18:34,560 и ако изгледа као да је број тамо, шта ми говориш ссцанф да урадите 308 00:18:34,560 --> 00:18:38,190 стави тај број - 123 - у овом променљива н за мене. 309 00:18:38,190 --> 00:18:42,090 Па зашто онда ја стварно имам и ово? 310 00:18:42,090 --> 00:18:48,220 Каква је улога ссцанф кажу можда ћете овде добити карактер? 311 00:18:48,220 --> 00:18:53,470 [Нечујан ученик одговор] >> децимална тачка заправо могао да ради. 312 00:18:53,470 --> 00:18:56,330 Идемо сматрају да размисли за тренутак. Шта друго? 313 00:18:56,330 --> 00:18:59,270 [Ученик] То може бити НУЛЛ. >> Добра мисао. То би могао да буде нула карактер. 314 00:18:59,270 --> 00:19:01,660 То заправо није у овом случају. Да. >> [Ученик] АСЦИИ. 315 00:19:01,660 --> 00:19:04,340 АСЦИИ. Или да ми генерализујемо још даље. 316 00:19:04,340 --> 00:19:06,640 % Ц је само за проверавање грешака. 317 00:19:06,640 --> 00:19:09,300 Ми тамо не жели да буде знак после броја, 318 00:19:09,300 --> 00:19:11,870 али шта то ми омогућава да урадите је следеће. 319 00:19:11,870 --> 00:19:18,210 Испада да ссцанф, поред чувања вредности у н и ц у овом примеру овде, 320 00:19:18,210 --> 00:19:24,890 шта је то такође нема је то враћа број променљивих ставила вредности за 321 00:19:24,890 --> 00:19:30,260 Дакле, ако само укуцате 123, онда само% д ће се поклапају, 322 00:19:30,260 --> 00:19:33,880 и само н добија складишти у вредности као 123, 323 00:19:33,880 --> 00:19:35,640 и ништа не стави у ц. 324 00:19:35,640 --> 00:19:37,620 Ц остаје смеће вредност, тако да кажем - 325 00:19:37,620 --> 00:19:40,730 смеће, јер никада није иницијализован неком вредношћу. 326 00:19:40,730 --> 00:19:45,520 Дакле, у том случају, ссцанф даје 1 јер сам насељен 1 од тих показивача, 327 00:19:45,520 --> 00:19:50,190 у ком случају сјајно, имам инт па сам ослободи линију да бисте ослободили меморију 328 00:19:50,190 --> 00:19:54,000 да ГетСтринг заиста издваја, а онда сам се врати н, 329 00:19:54,000 --> 00:19:58,500 друго, ако се икада запитали где је Понављати изјава долази, она долази од овде. 330 00:19:58,500 --> 00:20:04,390 Дакле, ако је, напротив, куцам у 123фоо - само су неки случајни редослед текста - 331 00:20:04,390 --> 00:20:08,490 ссцанф ће да види број, број, број, Ф, 332 00:20:08,490 --> 00:20:16,410 и то ће ставити на 123 н, то ће ставити ф у Ц, а затим се вратите 2. 333 00:20:16,410 --> 00:20:20,640 Тако смо, користећи само основну дефиницију понашања ссцанф је, врло једноставан начин - 334 00:20:20,640 --> 00:20:23,900 добро, комплекс на први поглед, али на крају дана прилично једноставан механизам - 335 00:20:23,900 --> 00:20:28,320 да кажу да ли постоји инт и ако је тако, да је једина ствар коју сам нашао? 336 00:20:28,320 --> 00:20:29,860 И овде је белина намерно. 337 00:20:29,860 --> 00:20:34,000 Ако сте прочитали документацију за ссцанф, то вам говори да ако укључите комад белине 338 00:20:34,000 --> 00:20:38,810 на почетку или на крају, ссцанф такође ће омогућити кориснику, из било ког разлога, 339 00:20:38,810 --> 00:20:41,860 да удари 123 размак и то ће бити легитимна. 340 00:20:41,860 --> 00:20:44,150 Нећете викати на корисника, само зато што је погодио размакницу 341 00:20:44,150 --> 00:20:48,640 на почетку или на крају, што је само мало више разумљив. 342 00:20:48,640 --> 00:20:52,300 >> Сва питања онда он ГетИнт? Да. >> [Ученик] Шта ако се само стави у знак? 343 00:20:52,300 --> 00:20:54,030 Добро питање. 344 00:20:54,030 --> 00:20:59,890 Шта ако сте управо уписали у знак као ф и притисните Ентер без икаквог куцања 123? 345 00:20:59,890 --> 00:21:02,420 Шта мислите понашање ове линије кода би онда било? 346 00:21:02,420 --> 00:21:04,730 [Нечујан ученик одговор] 347 00:21:04,730 --> 00:21:08,790 Да, тако ссцанф може да покрије то превише, јер у том случају, то неће да испуни н или ц. 348 00:21:08,790 --> 00:21:15,310 То ће уместо врати 0, у ком случају ја слушам тај сценарио 349 00:21:15,310 --> 00:21:18,750 јер очекивана вредност желим је 1. 350 00:21:18,750 --> 00:21:22,000 Желим само једну и само једну ствар да се попуни. Добро питање. 351 00:21:22,000 --> 00:21:24,290 >> Остали? У реду. 352 00:21:24,290 --> 00:21:26,250 >> Немојмо ићи кроз све функције у овде, 353 00:21:26,250 --> 00:21:29,500 али онај који изгледа да можда буде од преосталог интереса ГетСтринг 354 00:21:29,500 --> 00:21:32,790 јер испада да ГетФлоат, ГетИнт, ГетДоубле, ГетЛонгЛонг 355 00:21:32,790 --> 00:21:36,260 Све пунта доста њихове функционалности за ГетСтринг. 356 00:21:36,260 --> 00:21:39,750 Па хајде да погледамо како се овде спроводи. 357 00:21:39,750 --> 00:21:43,630 Ово изгледа мало комплекс, али користи исте основе 358 00:21:43,630 --> 00:21:45,670 да смо почели да причају о прошлој седмици. 359 00:21:45,670 --> 00:21:49,490 У ГетСтринг, која не узима аргумент по празнини овде 360 00:21:49,490 --> 00:21:53,730 и враћа ниску, ја сам очигледно проглашења ниску зове бафер. 361 00:21:53,730 --> 00:21:56,270 Ја стварно не знам шта да ће да се користи за још, али ћемо видети. 362 00:21:56,270 --> 00:21:58,390 Изгледа капацитет је подразумевано 0. 363 00:21:58,390 --> 00:22:01,350 Није баш сигуран где ово иде, не знам шта се дешава н да се користи за још, 364 00:22:01,350 --> 00:22:03,590 али сада је то све мало интересантније. 365 00:22:03,590 --> 00:22:06,520 У складу 243, изјављујемо инт, ц. 366 00:22:06,520 --> 00:22:08,800 То је врста глупог детаљ. 367 00:22:08,800 --> 00:22:15,820 Цхар је 8 бита, а 8 битова може да ускладишти колико различите вредности? >> [Ученик] 256. >> 256. 368 00:22:15,820 --> 00:22:20,730 Проблем је ако желите да имате 256 различите АСЦИИ знакове, које постоје 369 00:22:20,730 --> 00:22:23,340 ако помислим - а то није нешто што се памти. 370 00:22:23,340 --> 00:22:25,710 Али ако помислим на те велике АСЦИИ табели смо имали недеља пре, 371 00:22:25,710 --> 00:22:30,600 било у том случају 128 или 256 АСЦИИ знакова. 372 00:22:30,600 --> 00:22:32,940 Ми смо користили све обрасце 0с и 1с горе. 373 00:22:32,940 --> 00:22:36,210 То је проблем ако желите да будете у стању да детектује грешку 374 00:22:36,210 --> 00:22:40,190 јер ако већ користите 256 вредности за своје ликове, 375 00:22:40,190 --> 00:22:43,050 ниси стварно планирају унапред, јер сада немају начина да каже, 376 00:22:43,050 --> 00:22:46,270 ово није легит лик, ово је нека погрешна порука. 377 00:22:46,270 --> 00:22:50,270 Дакле, шта свет ради је они користе следећу највећу вредност, нешто као инт, 378 00:22:50,270 --> 00:22:54,720 тако да имате лудог број битова, 32, за 4 милијарде могућих вредности 379 00:22:54,720 --> 00:22:58,860 тако да можете једноставно завршити коришћењем суштини 257 од њих, 380 00:22:58,860 --> 00:23:01,720 1 који има неки посебан смисао као грешка. 381 00:23:01,720 --> 00:23:03,120 >> Дакле, хајде да видимо како ово функционише. 382 00:23:03,120 --> 00:23:07,760 У складу 246, имам велику вхиле петљу која се позива фгетц, 383 00:23:07,760 --> 00:23:11,090 ф значење фајл, па гетц, а онда стдин. 384 00:23:11,090 --> 00:23:15,520 Испоставило се да је ово само још прецизнији начин да се каже чита улаз са тастатуре. 385 00:23:15,520 --> 00:23:19,300 Стандардни улаз значи тастатура, стандардни излаз значи екран, 386 00:23:19,300 --> 00:23:23,310 и стандардна грешка, која ћемо видети у псет4 значи екран 387 00:23:23,310 --> 00:23:27,490 али посебан део екрана, тако да то није спојени са стварним излазом 388 00:23:27,490 --> 00:23:30,750 који сте намеравали да одштампате. Али више о томе у будућности. 389 00:23:30,750 --> 00:23:34,440 Дакле фгетц само значи прочитао један карактер са тастатуре и чувајте га где? 390 00:23:34,440 --> 00:23:37,350 Чувајте га у ц. 391 00:23:37,350 --> 00:23:41,360 А онда проверите - тако да сам само ја овде користи неке Булових везника - 392 00:23:41,360 --> 00:23:46,000 проверите да се то не деси једнаки - \ н, па корисник ударио Ентер, желимо да се заустави у том тренутку, 393 00:23:46,000 --> 00:23:49,850 крај петље - и такође желимо да проверите за посебне сталном ЕОФ, 394 00:23:49,850 --> 00:23:53,610 који ако знате или погодити, шта то станд фор? >> [Ученик] Крај фајла. >> Енд оф филе. 395 00:23:53,610 --> 00:23:56,560 То је врста бесмислено, јер ако ја куцам на тастатури, 396 00:23:56,560 --> 00:23:58,870 Стварно нема датотека укључени у ово, 397 00:23:58,870 --> 00:24:01,150 али ово је само нека врста генеричке термин користи да означи 398 00:24:01,150 --> 00:24:04,220 да ништа друго не долази из прстију цовека. 399 00:24:04,220 --> 00:24:06,460 ЕОФ - крај фајла. 400 00:24:06,460 --> 00:24:09,920 Као на страну, ако сте икада погодио Цонтрол Д на вашој тастатури, а не да би тек треба - 401 00:24:09,920 --> 00:24:15,230 Ударили сте Контролна Ц - Контрола Д шаље овај посебан константа назива ЕОФ. 402 00:24:15,230 --> 00:24:19,850 Дакле, сада имамо само мало динамичку алокацију меморије. 403 00:24:19,850 --> 00:24:23,440 >> Дакле, ако је (н + 1> капацитет). Сада ћу објаснити н. 404 00:24:23,440 --> 00:24:26,100 Није се само колико бајтова су тренутно у бафер, 405 00:24:26,100 --> 00:24:28,620 стринг који сте тренутно гради од корисника. 406 00:24:28,620 --> 00:24:33,450 Ако имате више знакова у свом баферу него што имају капацитет у бафер, 407 00:24:33,450 --> 00:24:37,410 интуитивно шта треба да урадите је издвојити више капацитета. 408 00:24:37,410 --> 00:24:43,330 Зато ћу да загребете преко неке од аритметике овде и фокусирати се само на ову функцију овде. 409 00:24:43,330 --> 00:24:46,070 Знаш шта маллоц, или су бар генерално познато. 410 00:24:46,070 --> 00:24:48,970 Погоди шта реаллоц ради. >> [Ученик] Додаје меморију. 411 00:24:48,970 --> 00:24:52,920 То није сасвим додавање меморије. Она поново додељује меморију као што следи. 412 00:24:52,920 --> 00:24:57,220 Ако још увек има места на крају стринга да вам дају више од тог сећања 413 00:24:57,220 --> 00:25:00,000 него што је то првобитно вам даје, онда ћете добити ту додатну меморију. 414 00:25:00,000 --> 00:25:03,460 Тако да само може да стављањем знакова стринг назад враћа се назад ка позади. 415 00:25:03,460 --> 00:25:05,830 Али ако то није случај, јер сте чекали предуго 416 00:25:05,830 --> 00:25:07,940 и нешто случајно добио плоппед у меморији постоји 417 00:25:07,940 --> 00:25:10,290 али постоји додатна меморија овде доле, то је у реду. 418 00:25:10,290 --> 00:25:13,100 Реаллоц ће учинити све тешке подизање за вас, 419 00:25:13,100 --> 00:25:16,750 померите ниску сте прочитали у тако далеко одавде, спусти га тамо, 420 00:25:16,750 --> 00:25:19,460 и онда вам дати још неке писте у том тренутку. 421 00:25:19,460 --> 00:25:22,550 >> Тако је и са таласом руке, дозволите ми да кажем да је оно што ради ГетСтринг 422 00:25:22,550 --> 00:25:26,330 је то почиње са малом бафер, можда једна карактера, 423 00:25:26,330 --> 00:25:30,820 а ако корисник упише у два знака, ГетСтринг завршава позивом реаллоц и каже 424 00:25:30,820 --> 00:25:33,150 један карактер није било довољно, дајте ми два знака. 425 00:25:33,150 --> 00:25:35,950 Онда, ако читате логици петље, то ће рећи 426 00:25:35,950 --> 00:25:39,600 корисник откуцао у 3 карактера, дајте ми сада не 2, али 4 карактера, 427 00:25:39,600 --> 00:25:42,320 онда ми 8, онда дај ми 16 и 32. 428 00:25:42,320 --> 00:25:45,000 Чињеница да сам удвостручити капацитете сваки пут 429 00:25:45,000 --> 00:25:48,570 значи да бафер неће да полако расте, то ће расти супер брзо. 430 00:25:48,570 --> 00:25:51,380 А шта може бити предност тога? 431 00:25:51,380 --> 00:25:54,600 Зашто сам удвостручује величину бафера 432 00:25:54,600 --> 00:25:58,020 иако корисник може само треба један додатни знак са тастатуре? 433 00:25:58,020 --> 00:26:01,750 [Нечујан ученик одговор] >> Шта је то? >> [Ученик] Не морате да расте тако често. 434 00:26:01,750 --> 00:26:03,300 Управо тако. Не морате да расте тако често. 435 00:26:03,300 --> 00:26:05,510 А ово је само љубазно од вас овде хеџинг своје улоге, 436 00:26:05,510 --> 00:26:10,850 идеја је била да не желим да зовем реаллоц много јер има тенденцију да буде спора. 437 00:26:10,850 --> 00:26:12,910 Сваки пут када питате оперативни систем за меморију, 438 00:26:12,910 --> 00:26:16,990 као да ћете ускоро видети у неком будућем проблем сету, она тежи да потраје. 439 00:26:16,990 --> 00:26:20,010 Дакле, смањење тог времена, чак и ако губите неки простор, 440 00:26:20,010 --> 00:26:21,900 тенденцију да буде добра ствар. 441 00:26:21,900 --> 00:26:24,060 >> Али ако читамо кроз завршном делу ГетСтринг овде - 442 00:26:24,060 --> 00:26:27,950 и опет разумевање овде сваки ред није толико важно данас - 443 00:26:27,950 --> 00:26:30,530 Приметићете да се на крају позива маллоц поново 444 00:26:30,530 --> 00:26:33,880 и управо издваја онолико бајтова колико треба за ниску 445 00:26:33,880 --> 00:26:38,060 и онда баца позивом на бесплатан претерано велики бафер 446 00:26:38,060 --> 00:26:40,080 ако је заиста добио дупло превише пута. 447 00:26:40,080 --> 00:26:42,730 Дакле укратко, то је како ГетСтринг је радио све ово време. 448 00:26:42,730 --> 00:26:47,060 Све то се чита један карактер у време опет и опет и опет, 449 00:26:47,060 --> 00:26:50,750 и сваки пут је потребно неко додатно меморију, она пита оперативни систем за њу 450 00:26:50,750 --> 00:26:53,670 позивањем реаллоц. 451 00:26:53,670 --> 00:26:57,890 >> Има ли питања? У реду. 452 00:26:57,890 --> 00:26:59,270 >> Напад. 453 00:26:59,270 --> 00:27:04,060 Сада када смо разумели смернице, или барем све су упознати са показивачима, 454 00:27:04,060 --> 00:27:06,700 размотримо како цео свет почиње да се руши 455 00:27:06,700 --> 00:27:10,030 ако не баш одбранити адверсијалног корисника, 456 00:27:10,030 --> 00:27:11,850 људи који покушавају да пијук у вашем систему, 457 00:27:11,850 --> 00:27:16,890 људи који покушавају да украду ваш софтвер заобилажењем неки регистрациони код 458 00:27:16,890 --> 00:27:19,090 да они иначе ћете морати да откуцате унутра 459 00:27:19,090 --> 00:27:22,990 >> Узмите овде погледајте на овом примеру, који је само Ц код који има функцију главног на дну 460 00:27:22,990 --> 00:27:26,380 која позива функцију фоо. А шта се то пролази на фоо? 461 00:27:26,380 --> 00:27:29,680 [Ученик] један аргумент. >> [Малан] један аргумент. 462 00:27:29,680 --> 00:27:33,450 Дакле, аргв [1], што значи да је прва реч корисник уписали у командној линији 463 00:27:33,450 --> 00:27:36,360 после а.оут или шта програм се зове. 464 00:27:36,360 --> 00:27:41,680 Дакле, трла на врху узима у цхар *. Али цхар је само шта? >> [Ученик] ниска. 465 00:27:41,680 --> 00:27:43,350 [Малан] ниска, тако да овде нема ничег новог. 466 00:27:43,350 --> 00:27:45,420 Тај стринг је арбитрарно се зове трака. 467 00:27:45,420 --> 00:27:51,430 У овој линији овде, цхар ц [12], у врсти полу-техничке енглеском, шта је ова линија ради? 468 00:27:51,430 --> 00:27:55,220 [Ученик] низ - >> Низ? >> [Ученик] карактера. >> Ликови. 469 00:27:55,220 --> 00:27:58,870 Дајте ми један низ од 12 знакова. Тако смо могли назвати ово бафер. 470 00:27:58,870 --> 00:28:02,920 Је технички се назива Ц, али бафер у програмирању само значи гомилу простора 471 00:28:02,920 --> 00:28:04,800 да можете ставити неке ствари унутра 472 00:28:04,800 --> 00:28:07,940 Онда на крају, мемцпи нисмо користили смо и пре, али вероватно можете погодити шта ради. 473 00:28:07,940 --> 00:28:10,480 Она копира меморију. Шта то радиш? 474 00:28:10,480 --> 00:28:19,270 То је очигледно копира бар, њен улаз, у Ц али само до дужине бара. 475 00:28:19,270 --> 00:28:24,930 Али постоји буг овде. >> [Ученик] Потребно је сизеоф карактер. >> Реду. 476 00:28:24,930 --> 00:28:30,860 Технички, ми заиста треба да урадите стрлен (бар) * сизеоф (цхар)). То је тачно. 477 00:28:30,860 --> 00:28:33,930 Али, у најгорем случају овде, хајде да претпоставимо да је то је - 478 00:28:33,930 --> 00:28:35,950 Ок. Затим, ту су два бубе. 479 00:28:35,950 --> 00:28:39,160 Дакле, сизеоф (инт)); 480 00:28:39,160 --> 00:28:41,290 Хајде да ово мало шире. 481 00:28:41,290 --> 00:28:44,910 Дакле, сада постоји још буба, која је шта? >> [Нечујан ученик одговор] 482 00:28:44,910 --> 00:28:46,990 Проверите шта? >> [Ученик] Проверите НУЛЛ. 483 00:28:46,990 --> 00:28:50,270 Ми генерално треба проверавати НУЛЛ, јер лоше ствари се дешавају 484 00:28:50,270 --> 00:28:53,200 када показивач НУЛЛ јер можда завршити иде тамо, 485 00:28:53,200 --> 00:28:57,630 и не би требало никада да се иде на НУЛЛ тако да дереференцинг са звезде оператера. 486 00:28:57,630 --> 00:29:01,050 Дакле, то је добро. А шта друго да радимо? Логично, ту је грешка овде. 487 00:29:01,050 --> 00:29:04,450 [Ученик] Проверите да ли је аргц> = до 2. 488 00:29:04,450 --> 00:29:10,550 Дакле, проверите да ли је аргц> = 2. Ок, па овде има три грешке у овом програму. 489 00:29:10,550 --> 00:29:16,630 Ми сада проверава да ли корисник заиста уписали у чему у аргв [1]. Добро. 490 00:29:16,630 --> 00:29:20,950 Дакле, шта је трећа буг? Да. >> [Ученик] Ц не може бити довољно велики. 491 00:29:20,950 --> 00:29:23,320 Добро. Проверили смо један сценарио. 492 00:29:23,320 --> 00:29:29,520 Ми имплицитно проверили не копирајте више меморије него премашиће дужину бара. 493 00:29:29,520 --> 00:29:32,510 Дакле, ако стринг корисник откуцао у је 10 знакова, 494 00:29:32,510 --> 00:29:36,020 ово рекавши само копира 10 знакова. И то је у реду. 495 00:29:36,020 --> 00:29:39,940 Али шта ако корисник откуцао у промпту речи у као 20-карактера речи? 496 00:29:39,940 --> 00:29:44,900 То говори примерак 20 ликова из бара у шта? 497 00:29:44,900 --> 00:29:49,750 Ц, иначе познат као наш бафера, што значи да управо написао податке 498 00:29:49,750 --> 00:29:52,540 до 8 бајтова локацијама које не поседујете, 499 00:29:52,540 --> 00:29:54,870 а ви их не поседују, у смислу да их никад није додељена. 500 00:29:54,870 --> 00:30:00,370 Дакле, то је оно што је опште позната као напад тампон преливања или тампон Прекорачење напада. 501 00:30:00,370 --> 00:30:05,580 И то је напад у смислу да ако корисник или програм који се зове ваш функцију 502 00:30:05,580 --> 00:30:10,490 ради злонамерно ово, шта се заправо дешава следећа могла заправо бити прилично лоше. 503 00:30:10,490 --> 00:30:12,450 >> Па хајде да узмемо овде погледамо ову слику. 504 00:30:12,450 --> 00:30:16,060 Ова слика представља своју гомилу меморије. 505 00:30:16,060 --> 00:30:19,580 Подсетимо се да сваки пут када позовете функцију вам овај мали оквир на стеку 506 00:30:19,580 --> 00:30:21,520 и онда други и затим још и још. 507 00:30:21,520 --> 00:30:24,300 И до сада, ми смо некако апстрахује их као правоугаоници 508 00:30:24,300 --> 00:30:26,290 или на табли или на екрану овде. 509 00:30:26,290 --> 00:30:30,580 Али, ако смо увећали на једном од тих правоугаоника, када позовете функцију фоо, 510 00:30:30,580 --> 00:30:35,880 Испоставило се да има више на стек унутрашњости тог оквира у тој правоугаоника 511 00:30:35,880 --> 00:30:40,060 не само к и и и и б, као што смо то говори о свап. 512 00:30:40,060 --> 00:30:44,410 Испоставило се да има неких нижих нивоа детаља, међу њима повратна адреса. 513 00:30:44,410 --> 00:30:49,550 Тако испада када је главни позива фоо, главни мора да обавести фоо 514 00:30:49,550 --> 00:30:53,520 Које главне адреса је у меморији рачунара 515 00:30:53,520 --> 00:30:57,770 јер у супротном, чим фоо врши извршавање, као у овом случају овде, 516 00:30:57,770 --> 00:31:00,830 када стигнете до овог затвореног коврџаву протезу на крају фоо, 517 00:31:00,830 --> 00:31:05,310 Како дођавола не трла знам где је контрола програма треба да иде? 518 00:31:05,310 --> 00:31:08,970 Испоставило се да је одговор на то питање је у том црвеном правоугаонику овде. 519 00:31:08,970 --> 00:31:12,670 Ово представља показивач, и то је до рачунара да привремено складиштење 520 00:31:12,670 --> 00:31:17,030 на такозваном стеку адреса главна, тако да чим фоо врши извршавање, 521 00:31:17,030 --> 00:31:21,120 рачунар зна где и шта линија у главни да се вратим. 522 00:31:21,120 --> 00:31:23,940 Сачуване Фраме показивач односи слично овоме. 523 00:31:23,940 --> 00:31:26,310 Цхар * бар овде представља шта? 524 00:31:26,310 --> 00:31:31,350 Сада овај плави сегмент овде је фоо је рам. Шта је бар? 525 00:31:31,570 --> 00:31:35,010 Бар је само аргумент да фоо функцију. 526 00:31:35,010 --> 00:31:37,500 Дакле, сада смо поново на врсту познати слике. 527 00:31:37,500 --> 00:31:39,850 Има још ствари и више ометања на екрану, 528 00:31:39,850 --> 00:31:43,380 али ово светло плави сегмент је само оно што смо цртеж на табли 529 00:31:43,380 --> 00:31:45,790 за нешто попут замене. То је оквир за фоо. 530 00:31:45,790 --> 00:31:51,490 И једина ствар у томе сада налази бар, што је овај параметар. 531 00:31:51,490 --> 00:31:55,220 Али шта још треба да буде у складу са овим стек код овде? 532 00:31:55,220 --> 00:31:57,760 [Ученик] цхар ц [12]. >> [Малан] цхар ц [12]. 533 00:31:57,760 --> 00:32:02,810 Такође, треба видети 12 квадрата меморије додељена променљивој зове ц 534 00:32:02,810 --> 00:32:04,970 и заиста имамо то на екрану. 535 00:32:04,970 --> 00:32:08,480 Самом врху постоји ц [0], а затим аутор овог дијаграма 536 00:32:08,480 --> 00:32:11,850 није сметало цртеж све квадрате, али заиста постоје 12 постоје 537 00:32:11,850 --> 00:32:16,590 јер ако погледате на доњем десном, ц [11] ако рачунамо од 0 је 12. такав бајт. 538 00:32:16,590 --> 00:32:18,400 Али овде је проблем. 539 00:32:18,400 --> 00:32:22,390 У ком правцу се ц расте? 540 00:32:22,390 --> 00:32:27,080 Нешто одозго ако почне на врху и расте до дна. 541 00:32:27,080 --> 00:32:30,110 То не изгледа као да смо себи оставили много писте овде уопште. 542 00:32:30,110 --> 00:32:32,090 Смо некако смо се сликао у углу, 543 00:32:32,090 --> 00:32:36,940 и да је ц [11] је у праву против бара, што је право против Сачувани Фраме показивача, 544 00:32:36,940 --> 00:32:39,960 што је право против повратна адреса. Нема више места. 545 00:32:39,960 --> 00:32:42,810 Па шта је онда импликација ако забрљаш 546 00:32:42,810 --> 00:32:46,500 а ви покушајте да читате 20 бајтова у 12-бајтова бафера? 547 00:32:46,500 --> 00:32:50,060 Где су ти 8 додатних бајтова отићи? >> [Ученик] Инсиде - 548 00:32:50,060 --> 00:32:53,200 Унутра све остало, од којих неке је супер важно. 549 00:32:53,200 --> 00:32:57,260 И најважнија ствар, потенцијално, је црвени оквир постоји, повратна адреса, 550 00:32:57,260 --> 00:33:03,560 зато претпостављам да сте случајно или адверсариалли преписали оне 4 бајта, 551 00:33:03,560 --> 00:33:07,260 да показивач адреса, не само са смећем, али са бројним 552 00:33:07,260 --> 00:33:09,810 што се дешава представља стварну адресу у меморији. 553 00:33:09,810 --> 00:33:13,880 Шта је импликација, логично? >> [Ученик] Функција ће да се врати на друго место. 554 00:33:13,880 --> 00:33:15,250 Управо тако. 555 00:33:15,250 --> 00:33:19,170 Када фоо повратак и хитове који коврџаве браце, програм ће се наставити 556 00:33:19,170 --> 00:33:25,060 да се не врати у главни, да ће да се врати све што је адреса у тој црвеној кутији. 557 00:33:25,060 --> 00:33:28,600 >> У случају заобилажење софтвера регистрације, 558 00:33:28,600 --> 00:33:32,260 шта ако је адреса која се враца је функција која обично бива назван 559 00:33:32,260 --> 00:33:35,690 након што сте платили за софтвер и уноси свој регистрациони код? 560 00:33:35,690 --> 00:33:39,870 Можете да сортирате трик је рачунар у не иде овде, али уместо да иде овде. 561 00:33:39,870 --> 00:33:45,100 Или ако си стварно паметан, противник заправо може уписати на тастатури, на пример, 562 00:33:45,100 --> 00:33:50,690 Није стварна реч, а не 20 знакова, али претпостављам да он или она заправо типови у 563 00:33:50,690 --> 00:33:52,770 неки ликови који представљају шифру. 564 00:33:52,770 --> 00:33:55,320 И то неће бити Ц код, то је заправо ће бити ликови 565 00:33:55,320 --> 00:33:59,290 који представљају бинарни код машина, 0с и 1с. 566 00:33:59,290 --> 00:34:01,290 Али претпостављам да су довољно паметни да се то уради, 567 00:34:01,290 --> 00:34:06,500 некако налепите у ГетСтринг линији нешто што је суштински састављен код, 568 00:34:06,500 --> 00:34:09,980 а последње 4 бајта препише ту повратну адресу. 569 00:34:09,980 --> 00:34:13,360 А шта адресу то улаз ради? 570 00:34:13,360 --> 00:34:18,630 То је заправо чува у овом црвеном правоугаонику адресу првог бајта у бафер. 571 00:34:18,630 --> 00:34:23,070 Дакле, морате бити веома паметан, а то је много покушаја и грешке за лоше људе тамо, 572 00:34:23,070 --> 00:34:25,639 али ако можете да схватите како је то велики бафер 573 00:34:25,639 --> 00:34:28,820 тако да у последњих неколико бајтова у уноса да достави програм 574 00:34:28,820 --> 00:34:33,540 се деси да буде еквивалент на адресу почетка свог бафера, можете да урадите ово. 575 00:34:33,540 --> 00:34:39,320 Ако кажемо нормално здраво и \ 0, то је оно што завршава у бафер. 576 00:34:39,320 --> 00:34:44,420 Али, ако смо паметнији и пунимо тај бафер са оним што смо уопштено ћу позвати код напада - 577 00:34:44,420 --> 00:34:48,860 ААА, напад, напад, напад - где је то нешто што ради нешто лоше, 578 00:34:48,860 --> 00:34:51,820 шта се дешава ако сте заиста паметни, можете да урадите. 579 00:34:51,820 --> 00:34:58,610 У црвеном пољу овде је низ бројева - 80, Ц0, 35, 08. 580 00:34:58,610 --> 00:35:01,610 Приметимо да је одговара броју који је овде. 581 00:35:01,610 --> 00:35:04,430 То је у обрнутом редоследу, али у том неком другом приликом. 582 00:35:04,430 --> 00:35:08,140 Обратите пажњу да је ово повратак адреса је намерно промењен 583 00:35:08,140 --> 00:35:12,020 на једнаку адресу овде, а не адресу главног. 584 00:35:12,020 --> 00:35:17,500 Дакле, ако негативац је супер паметан, он или она ће укључити у том нападу код 585 00:35:17,500 --> 00:35:20,930 нешто као брисање свих фајлова корисникових или копирајте лозинки 586 00:35:20,930 --> 00:35:24,680 или да направите кориснички налог који онда могу да се пријавим да - ништа. 587 00:35:24,680 --> 00:35:26,950 >> А ово је и опасност и моћ Ц. 588 00:35:26,950 --> 00:35:29,840 Зато имате приступ меморији преко показивача 589 00:35:29,840 --> 00:35:32,520 и стога може писати шта год желите у меморију рачунара, 590 00:35:32,520 --> 00:35:35,080 можете да рачунар уради шта год желите 591 00:35:35,080 --> 00:35:39,550 једноставно што скаче около у свом меморијског простора. 592 00:35:39,550 --> 00:35:44,650 И тако до данас толико и толико програма вебсајтови који су компромитовани 593 00:35:44,650 --> 00:35:46,200 своде на људе који искористе ово. 594 00:35:46,200 --> 00:35:50,760 И ово може изгледати као супер софистицираном нападу, али не увек почињу на тај начин. 595 00:35:50,760 --> 00:35:53,560 Реалност је да је оно лоше ће људи обично урадите је, 596 00:35:53,560 --> 00:35:58,200 да ли је програм на командној линији или ГУИ програм или сајт, 597 00:35:58,200 --> 00:35:59,940 почнете да пружа глупости. 598 00:35:59,940 --> 00:36:03,980 Куцате у заиста великом речи у поље за претрагу и притиснете Ентер, 599 00:36:03,980 --> 00:36:05,780 и чекам да видим да ли сајт срушио 600 00:36:05,780 --> 00:36:09,990 или чекате да видите да ли програм манифестује неку поруку о грешци 601 00:36:09,990 --> 00:36:14,330 јер ако се посреци као лош момак и обезбедити неки луди улаз 602 00:36:14,330 --> 00:36:18,980 да сруши програм, то значи да програмер није предвидео своју лоше понашање, 603 00:36:18,980 --> 00:36:23,630 што значи да вероватно можете са довољно труда, довољно покушаја и грешке, 604 00:36:23,630 --> 00:36:26,650 схватим како да воде прецизније напад. 605 00:36:26,650 --> 00:36:31,410 Дакле, колико део безбедности није само избегавање сасвим ове нападе 606 00:36:31,410 --> 00:36:34,100 али откривање их и стварно гледа трупаца 607 00:36:34,100 --> 00:36:36,780 и видети шта луди улаза имамо људе откуцане на свој сајт, 608 00:36:36,780 --> 00:36:38,960 шта термини за претрагу су људи уписали у ваш сајт 609 00:36:38,960 --> 00:36:42,870 у нади да ће неко преливања буффер. 610 00:36:42,870 --> 00:36:45,500 И ово све се своди на просту основама онога што је низ 611 00:36:45,500 --> 00:36:49,080 и шта то значи за доделу и коришћење меморије. 612 00:36:49,080 --> 00:36:51,710 >> Везано за то онда превише је ово. 613 00:36:51,710 --> 00:36:54,280 Хајде само да погледају унутар чврстог диска опет. 614 00:36:54,280 --> 00:36:58,440 Сећате од недељу или две пре да када превучете фајлове на ваш Бин рецицле или канта за смеће, 615 00:36:58,440 --> 00:37:03,710 шта се дешава? >> [Ученик] Ништа. >> Апсолутно ништа, зар не? 616 00:37:03,710 --> 00:37:05,740 На крају, ако наиђете ниско на диску, 617 00:37:05,740 --> 00:37:08,190 Виндовс или Мац ОС ће почети брисање фајлова за вас. 618 00:37:08,190 --> 00:37:10,390 Али ако вучете нешто тамо, то уопште није сигурно. 619 00:37:10,390 --> 00:37:13,800 Све ваше цимер или пријатељ или члан породице треба да урадите је дупли клик, и воила, 620 00:37:13,800 --> 00:37:16,310 ту је све површно датотеке које сте покушали да избришете. 621 00:37:16,310 --> 00:37:19,590 Већина од нас барем знате да морате да десним тастером или контролише клик 622 00:37:19,590 --> 00:37:22,310 и празан смеће или нешто слично томе. 623 00:37:22,310 --> 00:37:25,000 Али чак и тада не сасвим учинити трик 624 00:37:25,000 --> 00:37:28,010 јер оно што се дешава када имате фајл на вашем хард диску 625 00:37:28,010 --> 00:37:32,770 који представља неку Ворд документ или неку ЈПЕГ, и то представља ваш хард диск, 626 00:37:32,770 --> 00:37:35,350 и рецимо овај одсјај овде представља тај фајл, 627 00:37:35,350 --> 00:37:38,390 и то чине гомилу 0с и 1с. 628 00:37:38,390 --> 00:37:42,470 Шта се дешава када не само да превучете тај фајл у канту може или Рецицле Бин 629 00:37:42,470 --> 00:37:48,020 али га испразнити? Некако ништа. 630 00:37:48,020 --> 00:37:49,640 Није сад апсолутно ништа. 631 00:37:49,640 --> 00:37:54,290 Сада је то само зато што ништа Нешто се дешава у виду ове табеле. 632 00:37:54,290 --> 00:37:58,370 Дакле, постоји нека врста базе података или табели унутар меморије рачунара 633 00:37:58,370 --> 00:38:03,850 који у суштини има једну колону за фајлове 'имена и једну колону за фајлове' локацији, 634 00:38:03,850 --> 00:38:07,720 када би ово могло да буде локација 123, само случајни број. 635 00:38:07,720 --> 00:38:14,560 Дакле, можда ћемо имати нешто слично к.јпег и локације 123. 636 00:38:14,560 --> 00:38:18,800 Шта се дешава онда када заправо испразните смеће? 637 00:38:18,800 --> 00:38:20,330 То иде даље. 638 00:38:20,330 --> 00:38:23,610 Али, оно што не иде далеко је 0с и 1с. 639 00:38:23,610 --> 00:38:26,270 >> Па шта је онда веза псет4? 640 00:38:26,270 --> 00:38:31,240 Па, са псет4, само зато што смо случајно избрисао Цомпацт Фласх картица 641 00:38:31,240 --> 00:38:35,750 која је имала све од ових фотографија, или само то јер је пех постао корумпиран 642 00:38:35,750 --> 00:38:38,000 не значи да 0с и 1с се још увек не постоји. 643 00:38:38,000 --> 00:38:40,410 Можда неке од њих су изгубили зато што нешто добио оштећен 644 00:38:40,410 --> 00:38:43,320 у смислу да су неки постали 0с 1с и 1с постао 0с. 645 00:38:43,320 --> 00:38:47,240 Лоше ствари се може десити због бугги софтвера или хардвера неисправни. 646 00:38:47,240 --> 00:38:50,370 Али, многи од тих битова, можда чак и 100% њих су још увек тамо. 647 00:38:50,370 --> 00:38:55,050 То је само да компјутер или камера не зна где је почео ЈПЕГ1 648 00:38:55,050 --> 00:38:56,910 и где ЈПЕГ2 почела. 649 00:38:56,910 --> 00:39:01,070 Али, ако вас, програмер, знам уз мало памет где су ЈПЕГ су 650 00:39:01,070 --> 00:39:06,010 или шта личе, тако да можете анализирати 0с и 1с и кажу ЈПЕГ, ЈПЕГ, 651 00:39:06,010 --> 00:39:09,440 можете да напишете програм са суштини само за или вхиле петље 652 00:39:09,440 --> 00:39:12,820 да опорави сваки од тих фајлова. 653 00:39:12,820 --> 00:39:16,030 Дакле, поука је, дакле, да почне безбедно брисање фајлова 654 00:39:16,030 --> 00:39:18,340 ако желите да избегнете ово заједно. Да. 655 00:39:18,340 --> 00:39:21,010 >> [Ученик] Како доћи пише на рачунару 656 00:39:21,010 --> 00:39:23,550 да имате више меморије него што сте урадили раније? 657 00:39:23,550 --> 00:39:27,820 Имају више меморије него што сте урадили раније - >> [ученик] Више меморије. 658 00:39:27,820 --> 00:39:29,630 О. Добро питање. 659 00:39:29,630 --> 00:39:32,360 Па зашто онда, након пражњења отпада нема рачунар вам кажем 660 00:39:32,360 --> 00:39:34,910 да имате више слободног простора него што сте урадили раније? 661 00:39:34,910 --> 00:39:36,770 У суштини, јер лаже. 662 00:39:36,770 --> 00:39:40,740 Више технички, имате више простора, јер сада сте рекли 663 00:39:40,740 --> 00:39:43,680 можете ставити и друге ствари где је фајл некад био. 664 00:39:43,680 --> 00:39:45,450 Али то не значи да су битови су одлазила, 665 00:39:45,450 --> 00:39:48,590 и то не значи да су битови се мењају на све 0с, на пример, 666 00:39:48,590 --> 00:39:50,150 за заштиту. 667 00:39:50,150 --> 00:39:54,640 Дакле Насупрот томе, ако се безбедно избришете фајлове или физички уништити уређај, 668 00:39:54,640 --> 00:39:57,300 то је стварно једини начин понекад око тога. 669 00:39:57,300 --> 00:40:02,020 >> Па зашто не одемо на том полу-застрашујући напомену, а ми ћемо вас видети у понедељак. 670 00:40:02,020 --> 00:40:07,000 [Аплауз] 671 00:40:07,780 --> 00:40:10,000 >> [ЦС50.ТВ]