1 00:00:00,000 --> 00:00:12,610 2 00:00:12,610 --> 00:00:12,900 >> DAVID J. مالان: بسیار خوب. 3 00:00:12,900 --> 00:00:16,790 بنابراین برای اولین خوش آمدید مرگ CS50 برای یک مسابقه. 4 00:00:16,790 --> 00:00:18,340 ما فکر کردم ما افتتاح این سنت این سال است. 5 00:00:18,340 --> 00:00:20,960 و این فرصتی خواهد بود از طریق راه رفتن 6 00:00:20,960 --> 00:00:22,220 راه حل های به مسابقه. 7 00:00:22,220 --> 00:00:26,160 و ما به سرعت یا کم کردن سرعت بر اساس در بهره از آن را در اینجا. 8 00:00:26,160 --> 00:00:29,730 >> بنابراین شما احتمالا در اینجا چون تو علاقه مند چگونه می تواند داشته باشد و یا 9 00:00:29,730 --> 00:00:31,170 باید برخی از پاسخ از این مشکلات. 10 00:00:31,170 --> 00:00:33,300 پس چرا ما نه نگاهی در این بخش برای اولین بار؟ 11 00:00:33,300 --> 00:00:34,450 پس گرفتن رشته ها. 12 00:00:34,450 --> 00:00:37,600 این به شما داد سه نسخه های مختلف از برنامه ای که بود، در نهایت، 13 00:00:37,600 --> 00:00:39,650 به منظور دریافت یک رشته از کاربر. 14 00:00:39,650 --> 00:00:42,530 یا این که آیا آن را انجام داد که نبود از چپ به شما برای تعیین. 15 00:00:42,530 --> 00:00:45,150 >> و ما در سوال 0 پرسید: فرض کنید که نسخه 1 است 16 00:00:45,150 --> 00:00:46,400 وارد شده و اعدام شد. 17 00:00:46,400 --> 00:00:48,860 چرا ممکن است برنامه segfault؟ 18 00:00:48,860 --> 00:00:51,150 در نگاه اول، هر گونه پیشنهاد که چرا؟ 19 00:00:51,150 --> 00:00:54,012 20 00:00:54,012 --> 00:00:54,489 آره. 21 00:00:54,489 --> 00:00:59,260 >> یک مدعو: بنابراین من به خاطر دارم این در به عنوان مثال قبل از نگاه کردن به 22 00:00:59,260 --> 00:01:05,506 * کاراکتر ها و دیدن اسکن و دیدن دلیل آن را به یک اشاره گر، چگونه 23 00:01:05,506 --> 00:01:07,971 آن را تحت تاثیر قرار بود آنچه را که در اسکن شده؟ 24 00:01:07,971 --> 00:01:10,940 آیا آن را و یا آدرس ها؟ 25 00:01:10,940 --> 00:01:11,180 >> DAVID J. مالان: OK. 26 00:01:11,180 --> 00:01:11,480 خوب. 27 00:01:11,480 --> 00:01:14,830 پس در نهایت، منبع هر گونه مشکل احتمالا رفتن به کاهش 28 00:01:14,830 --> 00:01:16,210 به متغیر ها. 29 00:01:16,210 --> 00:01:17,280 و این در واقع یک متغیر. 30 00:01:17,280 --> 00:01:19,900 نوع داده آن متغیر است * کاراکتر، که به معنی آن را به 31 00:01:19,900 --> 00:01:22,570 شامل آدرس یک شخصیت. 32 00:01:22,570 --> 00:01:23,850 و در آن نهفته است بینش. 33 00:01:23,850 --> 00:01:28,330 آن را که شامل آدرس از یک کاراکتر یا، به طور کلی، 34 00:01:28,330 --> 00:01:32,110 آدرس اولین کاراکتر در بلوک کل از شخصیت های. 35 00:01:32,110 --> 00:01:36,680 >> اما گرفتن این است که بازدید کنندگان اسکن، هدف در زندگی، یک آدرس داده شده است و با توجه به 36 00:01:36,680 --> 00:01:40,960 کد فرمت مانند٪ s را، به عنوان خوانده شده یک رشته را به تکه از 37 00:01:40,960 --> 00:01:42,330 حافظه در آن آدرس. 38 00:01:42,330 --> 00:01:46,040 اما از آنجا که هیچ علامت مساوی قبل وجود دارد که نقطه و ویرگول در اولین 39 00:01:46,040 --> 00:01:49,310 خط از کد، از آنجا که ما در واقع نه اختصاص هر حافظه با 40 00:01:49,310 --> 00:01:53,020 malloc، به دلیل آن را نداشت در واقع تخصیص مجموعه ای از برخی از اندازه، همه 41 00:01:53,020 --> 00:01:57,620 شما در حال انجام است خواندن کاربر ورودی صفحه کلید را به برخی از کامل 42 00:01:57,620 --> 00:02:00,490 ارزش زباله، که است در بازدید کنندگان به طور پیش فرض. 43 00:02:00,490 --> 00:02:04,480 بنابراین شانس شما در حال رفتن به segfault اگر که آدرس نه تنها به طوری اتفاق می افتد 44 00:02:04,480 --> 00:02:08,009 به یک ارزش است که شما می توانید، در واقع، به نوشتن. 45 00:02:08,009 --> 00:02:10,889 بنابراین بد به اختصاص حافظه شما وجود دارد. 46 00:02:10,889 --> 00:02:13,150 >> بنابراین در سوال 1، از ما خواسته، فرض کنید که نسخه 2 است 47 00:02:13,150 --> 00:02:14,230 وارد شده و اعدام شد. 48 00:02:14,230 --> 00:02:15,900 چرا ممکن است این برنامه segfault؟ 49 00:02:15,900 --> 00:02:17,990 بنابراین یک حشره دار کمتر است. 50 00:02:17,990 --> 00:02:21,470 و واقعا وجود دارد تنها یک راه آشکار است که در آن شما می توانید 51 00:02:21,470 --> 00:02:22,810 باعث segfault در اینجا. 52 00:02:22,810 --> 00:02:23,730 و این موضوعی است. 53 00:02:23,730 --> 00:02:28,180 هر زمان ما با استفاده از C در حافظه، چه می توانید انجام دهید را القاء می segfault 54 00:02:28,180 --> 00:02:30,718 با نسخه 2؟ 55 00:02:30,718 --> 00:02:35,560 >> یک مدعو: اگر شما استفاده کنید که ورودی در یک رشته که بیش از 49 56 00:02:35,560 --> 00:02:35,975 شخصیت. 57 00:02:35,975 --> 00:02:37,260 >> DAVID J. مالان: دقیقا. 58 00:02:37,260 --> 00:02:41,420 هر بار که شما چیزی ثابت طول ببینید که آن را به یک آرایه می آید، خود را 59 00:02:41,420 --> 00:02:44,650 رادار باید خاموش به که این می تواند مشکل اگر شما در حال چک کردن نیست 60 00:02:44,650 --> 00:02:45,810 مرز یک آرایه. 61 00:02:45,810 --> 00:02:46,650 و این مشکل در اینجا است. 62 00:02:46,650 --> 00:02:47,910 ما هنوز در حال استفاده از scanf. 63 00:02:47,910 --> 00:02:52,200 ما هنوز در حال استفاده از٪ s را، که به معنی امتحان کنید برای خواندن یک رشته از کاربر. 64 00:02:52,200 --> 00:02:56,300 که که رفتن به به بازدید کنندگان خوانده شود،، در این نقطه، به طور موثر 65 00:02:56,300 --> 00:02:58,570 آدرس یک تکه از حافظه یا آن را معادل. 66 00:02:58,570 --> 00:03:02,080 این نام از یک آرایه است از شخصیت های از حافظه است. 67 00:03:02,080 --> 00:03:07,610 >> اما دقیقا همان است که، اگر شما به عنوان خوانده شده رشته که بیش از 49 کاراکتر، 49 68 00:03:07,610 --> 00:03:10,440 زیرا شما باید اتاق را برای بک اسلش 0، شما در حال رفتن به سرریز 69 00:03:10,440 --> 00:03:11,390 که بافر شده است. 70 00:03:11,390 --> 00:03:16,410 و شما ممکن است خوش شانس دریافت می شود و قادر به ارسال یک شخصیت 51، 52، 53. 71 00:03:16,410 --> 00:03:18,560 اما در برخی موارد، سیستم عامل در حال رفتن به می گویند، هیچ. 72 00:03:18,560 --> 00:03:21,270 این قطعا حافظه شما مجاز به لمس. 73 00:03:21,270 --> 00:03:23,380 و این برنامه در حال رفتن به segfault. 74 00:03:23,380 --> 00:03:26,650 >> بنابراین وجود دارد، فن آوری هوشمند باید هر است زمانی که شما طول ثابت کردم، شما باید 75 00:03:26,650 --> 00:03:30,150 مطمئن شوید که شما در حال چک کردن طول از هر چه باشد شما در تلاش هستید 76 00:03:30,150 --> 00:03:31,090 به خواندن را در آن. 77 00:03:31,090 --> 00:03:35,110 >> یک مدعو: بنابراین برای حل آن، شما می توانید از یک بیانیه چک کردن در واقع به حال 78 00:03:35,110 --> 00:03:37,140 بیشتر طول است از و یا کمتر از؟ 79 00:03:37,140 --> 00:03:37,730 >> DAVID J. مالان: کاملا. 80 00:03:37,730 --> 00:03:41,706 شما فقط یک وضعیت دارند که می گوید، اگر - 81 00:03:41,706 --> 00:03:46,080 و یا به جای شما لزوما نمی دانند در پیشبرد چگونگی بسیاری از شخصیت های 82 00:03:46,080 --> 00:03:49,060 کاربر در حال رفتن به تایپ، به دلیل شما باید مرغ و تخم مرغ. 83 00:03:49,060 --> 00:03:51,860 نه تا زمانی که شما آن را در با scanf خوانده ام می تواند به شما چطور مدت آن است. 84 00:03:51,860 --> 00:03:54,500 اما در آن نقطه، که خیلی دیر است، چرا که شما در حال حاضر آن را به عنوان خوانده شده 85 00:03:54,500 --> 00:03:55,710 برخی از بلوک از حافظه است. 86 00:03:55,710 --> 00:03:59,590 بنابراین به عنوان به کنار، اجتناب کتابخانه CS50 این موضوع در دسترس نباشد، فراخوان 87 00:03:59,590 --> 00:04:01,060 با استفاده از fgetc. 88 00:04:01,060 --> 00:04:05,390 و آن را می خواند یکی از شخصیت ها در یک زمان، نوک چرخش پا همراه، دانستن اینکه شما 89 00:04:05,390 --> 00:04:08,060 می توانید یک شخصیت اگر سرریز نمی شما یکی به عنوان خوانده شده در یک زمان. 90 00:04:08,060 --> 00:04:11,580 >> گرفتن است با فراخوان getstring است که ما باید به طور مداوم دوباره اندازه 91 00:04:11,580 --> 00:04:13,590 که تکه از حافظه که فقط یک درد است. 92 00:04:13,590 --> 00:04:15,310 این یک مقدار زیادی از خطوط است کد به انجام این کار. 93 00:04:15,310 --> 00:04:18,779 بنابراین روش دیگری می شود در واقع استفاده از یکی از بستگانم، بنابراین 94 00:04:18,779 --> 00:04:19,790 به صحبت می کنند، از scanf. 95 00:04:19,790 --> 00:04:22,820 انواع بسیاری از این وجود دارد توابع که در واقع بررسی 96 00:04:22,820 --> 00:04:25,870 طول چگونه بسیاری از شخصیت های شما ممکن است حداکثر به عنوان خوانده شده. 97 00:04:25,870 --> 00:04:29,430 و شما می توانید مشخص کنید، نمی خواند بیش از 50 حرف می باشد. 98 00:04:29,430 --> 00:04:34,110 به طوری که می تواند روش دیگری است اما انطباق کمتر از ورودی های بزرگتر. 99 00:04:34,110 --> 00:04:37,040 >> بنابراین سوال 2 می پرسد، فرض کنید که نسخه 3 وارد می شود و اجرا می شود. 100 00:04:37,040 --> 00:04:39,960 چرا ممکن است که برنامه segfault؟ 101 00:04:39,960 --> 00:04:42,650 پس این یکی است که در واقع همان پاسخ، حتی اگر آن را 102 00:04:42,650 --> 00:04:43,590 به نظر می رسد کمی خیال باف. 103 00:04:43,590 --> 00:04:46,440 ما با استفاده از malloc، که احساس می کند مانند ما در حال دادن به خود گزینه های بیشتر. 104 00:04:46,440 --> 00:04:48,030 و پس از آن ما آزاد است که حافظه در پایان. 105 00:04:48,030 --> 00:04:49,580 این هنوز تنها 50 بایت از حافظه است. 106 00:04:49,580 --> 00:04:53,620 بنابراین ما هنوز هم ممکن است سعی کنید به عنوان خوانده شده در 51، 52، 1000 کلمه در ادامه متن. 107 00:04:53,620 --> 00:04:55,830 آن را به segfault برای دقیقا به همین دلیل. 108 00:04:55,830 --> 00:04:57,530 >> اما دلیل دیگری نیز وجود دارد. 109 00:04:57,530 --> 00:05:03,890 چه چیز دیگری می تواند بازگشت علاوه بر malloc آدرس یک تکه از حافظه؟ 110 00:05:03,890 --> 00:05:04,920 این می تواند تهی گشت. 111 00:05:04,920 --> 00:05:07,560 و از آنجایی که ما برای چک کردن نمی که، ما ممکن است انجام کاری 112 00:05:07,560 --> 00:05:11,350 کامپیوتر و نرم افزار به دلیل دیگری، که این است که ما ممکن است گفتن scanf، به عنوان خوانده شده 113 00:05:11,350 --> 00:05:16,050 ورودی کاربر را از صفحه کلید به 0 محل، AKA تهی. 114 00:05:16,050 --> 00:05:18,890 و این، بیش از حد، قطعا خواهد شد باعث segfault. 115 00:05:18,890 --> 00:05:21,590 بنابراین برای هدف مسابقه، ما را یا از آن به عنوان یک پذیرفته شده اند 116 00:05:21,590 --> 00:05:22,740 دلیل معتبر. 117 00:05:22,740 --> 00:05:23,420 یکی یکسان است. 118 00:05:23,420 --> 00:05:25,720 یکی است که کمی متفاوت تر است. 119 00:05:25,720 --> 00:05:28,975 >> در نهایت، با توجه به برنامه استفاده از حافظه، چگونه می توانم نسخه 2 و 120 00:05:28,975 --> 00:05:30,350 نسخه 3 متفاوت است؟ 121 00:05:30,350 --> 00:05:35,070 پس برای چه آن را به ارزش، ما شاهد عرضه به ظاهر بی پایان از امکان 122 00:05:35,070 --> 00:05:35,770 پاسخ به این. 123 00:05:35,770 --> 00:05:39,300 و در پاسخ مردم، آنچه که ما بودند امید است، اما ما دیگر پذیرفته 124 00:05:39,300 --> 00:05:42,250 همه چیز، برخی اشاره ای بود واقعیت این است که نسخه 2 با استفاده از 125 00:05:42,250 --> 00:05:44,560 پشته به اصطلاح. 126 00:05:44,560 --> 00:05:46,710 نسخه 3 با استفاده از پشته. 127 00:05:46,710 --> 00:05:50,060 و عملکرد، این کار را واقعا نمی را تمام است که بسیاری از تفاوت. 128 00:05:50,060 --> 00:05:54,040 در پایان روز، ما هنوز هم فقط گرفتن 50 بایت از حافظه است. 129 00:05:54,040 --> 00:05:56,640 >> اما این یکی از پاسخ های ممکن بود که ما در دنبال شد. 130 00:05:56,640 --> 00:05:59,730 اما شما خواهید دید، به عنوان آزمون خود را دریافت کنید از TFS، که ما 131 00:05:59,730 --> 00:06:04,330 دیگر بحث از شرایط خود استفاده متفاوت از حافظه نیز هست. 132 00:06:04,330 --> 00:06:08,600 اما پشته و توده می شده اند پاسخ آسان به رفتن با. 133 00:06:08,600 --> 00:06:11,150 هر گونه سؤال؟ 134 00:06:11,150 --> 00:06:12,400 من به شما راب به من بدهید. 135 00:06:12,400 --> 00:06:18,360 136 00:06:18,360 --> 00:06:20,210 >> ROB BOWDEN: بنابراین مشکل 4. 137 00:06:20,210 --> 00:06:21,985 این یکی که در آن شما را مجبور به پر کردن است در تعداد بایت از همه 138 00:06:21,985 --> 00:06:23,460 این انواع مختلف استفاده می شود. 139 00:06:23,460 --> 00:06:24,830 پس اولین چیزی که ما می بینیم. 140 00:06:24,830 --> 00:06:27,930 فرض کنید یک معماری 32 بیتی، مثل این دستگاه CS50. 141 00:06:27,930 --> 00:06:33,530 بنابراین یکی از چیزهایی که اساسی در مورد معماری 32 بیتی، که به ما می گوید 142 00:06:33,530 --> 00:06:37,490 دقیقا چقدر بزرگ یک اشاره گر است که در معماری باشد. 143 00:06:37,490 --> 00:06:43,020 >> بنابراین بلافاصله، ما می دانیم که هر اشاره گر نوع 32 بیت و یا 4 بایت است. 144 00:06:43,020 --> 00:06:46,010 بنابراین به دنبال در این جدول، گره * نوع اشاره گر است. 145 00:06:46,010 --> 00:06:47,250 که برای رفتن به 4 بایت. 146 00:06:47,250 --> 00:06:51,640 گره ساختار *، که به معنای واقعی کلمه یکسان به ستاره گره. 147 00:06:51,640 --> 00:06:53,590 و به طوری که برای رفتن به 4 بایت. 148 00:06:53,590 --> 00:06:58,270 رشته، پس از آن مانند به نظر نمی آید اشاره گر است، اما typedef، 149 00:06:58,270 --> 00:07:01,590 رشته فقط یک کاراکتر *، که یک نوع اشاره گر است. 150 00:07:01,590 --> 00:07:03,550 به طوری که برای رفتن به 4 بایت. 151 00:07:03,550 --> 00:07:06,150 >> بنابراین این سه همه 4 بایت. 152 00:07:06,150 --> 00:07:09,350 در حال حاضر، گره و دانش آموز کمی پیچیده تر است. 153 00:07:09,350 --> 00:07:15,160 بنابراین به دنبال گره و دانش آموز، ما می بینیم گره به عنوان یک عدد صحیح و یک اشاره گر. 154 00:07:15,160 --> 00:07:18,050 و دانش آموز دو اشاره گر است در داخل آن است. 155 00:07:18,050 --> 00:07:23,340 بنابراین حداقل در مورد ما در اینجا، راه که ما تا پایان محاسبه اندازه 156 00:07:23,340 --> 00:07:27,020 این ساختار است فقط اضافه کردن تا همه چیز که در داخل ساختار است. 157 00:07:27,020 --> 00:07:30,690 >> بنابراین برای گره، ما باید یک عدد صحیح، که 4 بایت است. 158 00:07:30,690 --> 00:07:32,830 ما یک اشاره گر است که 4 بایت. 159 00:07:32,830 --> 00:07:35,820 و به این ترتیب یک گره در جریان است را به 8 بایت. 160 00:07:35,820 --> 00:07:39,490 و به همین ترتیب برای دانش آموزان، ما یک اشاره گر که 4 بایت و دیگری 161 00:07:39,490 --> 00:07:40,770 اشاره گر که 4 بایت. 162 00:07:40,770 --> 00:07:43,180 به طوری که رفتن برای پایان دادن به تا که 8 بایت. 163 00:07:43,180 --> 00:07:45,480 بنابراین گره و دانش آموز 8 بایت می باشد. 164 00:07:45,480 --> 00:07:48,950 و این سه همه 4 بایت. 165 00:07:48,950 --> 00:07:50,240 سوالات در آن؟ 166 00:07:50,240 --> 00:07:54,640 167 00:07:54,640 --> 00:07:54,990 بله. 168 00:07:54,990 --> 00:07:58,413 >> یک مدعو: آیا آن 64 بیتی بود معماری، خواهد بود که 169 00:07:58,413 --> 00:07:59,880 دو برابر همه آنها را؟ 170 00:07:59,880 --> 00:08:01,790 >> ROB BOWDEN: آن را نمی خواهد دو برابر همه آنها. 171 00:08:01,790 --> 00:08:05,830 بنابراین معماری 64 بیتی، از آن، دوباره، تغییراتی که چیزی اساسی است که 172 00:08:05,830 --> 00:08:08,910 اشاره گر در حال حاضر 64 بیت. 173 00:08:08,910 --> 00:08:09,290 آره. 174 00:08:09,290 --> 00:08:10,930 بنابراین یک اشاره گر 8 بایت است. 175 00:08:10,930 --> 00:08:15,420 پس از این که 4 بایت بود رفتن به 8 بایت. 176 00:08:15,420 --> 00:08:18,617 یک دانش آموز، که دو اشاره گر بود، خوب، اکنون آن را به 177 00:08:18,617 --> 00:08:19,800 است 8 بایت، 8 بایت. 178 00:08:19,800 --> 00:08:21,980 این اتفاق باعث شود که 16 بایت. 179 00:08:21,980 --> 00:08:25,710 >> اما یک گره است که هنوز هم 4 بایت. 180 00:08:25,710 --> 00:08:27,800 پس این اشاره گر است که به 8 بایت. 181 00:08:27,800 --> 00:08:28,930 این 4 بایت است. 182 00:08:28,930 --> 00:08:30,870 بنابراین یک گره فقط رفتن به 12 بایت. 183 00:08:30,870 --> 00:08:36,309 184 00:08:36,309 --> 00:08:39,280 هر گونه سؤال دیگر می کنید؟ 185 00:08:39,280 --> 00:08:44,500 بنابراین یک بعدی، این کدهای وضعیت HTTP. 186 00:08:44,500 --> 00:08:48,000 و شما تا به حال برای توصیف شرایط که تحت آن این قدرت 187 00:08:48,000 --> 00:08:49,810 به شما بازگشت. 188 00:08:49,810 --> 00:08:56,730 یک مشکل که من برخی از دانشجویان شنیده است که آنها تلاش کردند تا 189 00:08:56,730 --> 00:08:58,950 خطا در پایان مشتری باشد. 190 00:08:58,950 --> 00:09:02,320 بنابراین، هنگامی که ما سعی می کنیم به درخواست به سرور، چیزی می رود 191 00:09:02,320 --> 00:09:03,820 اشتباه در پایان ما. 192 00:09:03,820 --> 00:09:07,660 اما به طور کلی، این کد ها که توسط سرور بازگشت. 193 00:09:07,660 --> 00:09:11,720 بنابراین ما می خواهیم به شکل چه خبر است درست و غلط بر روی سرور است که 194 00:09:11,720 --> 00:09:14,280 باعث می شود این چیز ها می شود برگشت. 195 00:09:14,280 --> 00:09:18,670 پس چرا ممکن است بازده سرور کد وضعیت 200؟ 196 00:09:18,670 --> 00:09:19,920 هر گونه افکار؟ 197 00:09:19,920 --> 00:09:23,360 198 00:09:23,360 --> 00:09:23,730 >> آره. 199 00:09:23,730 --> 00:09:27,850 بنابراین چیزی در مورد موفقیت درخواست از طریق رفت. 200 00:09:27,850 --> 00:09:30,260 و آنها قادر به بازگشت هستید هر آنچه شما خواسته. 201 00:09:30,260 --> 00:09:32,240 پس همه چیز خوب بود. 202 00:09:32,240 --> 00:09:35,662 چه در مورد 302 در بر داشت؟ 203 00:09:35,662 --> 00:09:36,618 آره. 204 00:09:36,618 --> 00:09:39,008 >> یک مدعو: سرور به دنبال برای آنچه که مورد درخواست شما. 205 00:09:39,008 --> 00:09:40,442 اما می تواند از آن را پیدا کند. 206 00:09:40,442 --> 00:09:42,850 بنابراین یک خطا وجود دارد. 207 00:09:42,850 --> 00:09:47,720 >> ROB BOWDEN: بنابراین سرور به دنبال آنچه شما می خواهید. 208 00:09:47,720 --> 00:09:51,682 بنابراین فقط به دنبال در اینجا، 302 یافت، آن را قادر به پیدا کردن آن بود. 209 00:09:51,682 --> 00:09:53,035 >> یک مدعو: من متاسفم. 210 00:09:53,035 --> 00:09:54,388 یافت بدان معنی است که آنها پیدا کردن آن. 211 00:09:54,388 --> 00:09:55,638 متأسفم. 212 00:09:55,638 --> 00:09:58,120 213 00:09:58,120 --> 00:10:00,160 >> ROB BOWDEN: پس 302 در بر داشت. 214 00:10:00,160 --> 00:10:02,350 سرور قادر به پیدا کردن است آنچه شما می خواهید. 215 00:10:02,350 --> 00:10:04,640 >> رسید اما آن را نمایش نیست؟ 216 00:10:04,640 --> 00:10:08,180 >> ROB BOWDEN: تفاوت بین این 302 و 200 است که آن را 217 00:10:08,180 --> 00:10:09,280 می داند که آنچه شما می خواهید. 218 00:10:09,280 --> 00:10:12,000 اما این دقیقا همان جایی که نمی شما می خواستم بپرسم. 219 00:10:12,000 --> 00:10:14,580 بنابراین 302 تغییر مسیر معمولی است. 220 00:10:14,580 --> 00:10:16,510 پس درخواست یک صفحه شما. 221 00:10:16,510 --> 00:10:19,590 این می داند، آه، من می خواهم به شما بازگشت این. 222 00:10:19,590 --> 00:10:21,070 اما این در URL های مختلف. 223 00:10:21,070 --> 00:10:23,534 پس سلام، شما در واقع این می خواهم. 224 00:10:23,534 --> 00:10:26,950 >> DAVID J. مالان: این قطعه که گفت است که ما به شما بچه ها تغییر مسیر 225 00:10:26,950 --> 00:10:30,830 تابع که تابع ضربه سر استفاده می شود که، به نوبه خود، چاپ شده از محل، 226 00:10:30,830 --> 00:10:34,110 روده بزرگ، و پس از آن URL را که شما می خواهید به رد کاربر. 227 00:10:34,110 --> 00:10:37,480 حتی اگر شما به 302 نمی بینم به صراحت وجود دارد، که آنچه را که PHP است 228 00:10:37,480 --> 00:10:41,550 را به طرزی جادویی به عنوان هدر وارد گفت: دقیقا همان چیزی راب گفت: وجود دارد - 229 00:10:41,550 --> 00:10:41,930 یافت. 230 00:10:41,930 --> 00:10:43,180 اما به جای این صفحه بروید. 231 00:10:43,180 --> 00:10:45,960 232 00:10:45,960 --> 00:10:46,160 >> ROB BOWDEN: OK. 233 00:10:46,160 --> 00:10:47,630 بنابراین آنچه در مورد 403 ممنوع است؟ 234 00:10:47,630 --> 00:10:52,240 235 00:10:52,240 --> 00:10:57,120 >> یک مدعو: من فکر می کنم که سرور است که اساسا و گفت که به مشتری 236 00:10:57,120 --> 00:10:59,970 می توانید از صفحه اصلی دسترسی پیدا کنید. 237 00:10:59,970 --> 00:11:03,260 >> ROB BOWDEN: بله. 238 00:11:03,260 --> 00:11:07,670 خب، پاسخ معمول ما انتظار چیزی شبیه، فایل است 239 00:11:07,670 --> 00:11:08,920 مناسب chmodded نیست. 240 00:11:08,920 --> 00:11:11,590 که احتمالا تحت چه شرایطی شما آنها را دیدم. 241 00:11:11,590 --> 00:11:18,920 اما یک دلیل وجود دارد که مشتری می تواند در گسل در اینجا باشد. 242 00:11:18,920 --> 00:11:20,440 در واقع کد وضعیت دیگری وجود دارد - 243 00:11:20,440 --> 00:11:21,210 401. 244 00:11:21,210 --> 00:11:22,820 بنابراین این خیلی مشابه هستند. 245 00:11:22,820 --> 00:11:24,590 >> 401 غیر مجاز است. 246 00:11:24,590 --> 00:11:26,130 و 403 ممنوع است. 247 00:11:26,130 --> 00:11:31,890 و به این ترتیب غیر مجاز شما به طور انحصاری اگر شما وارد سایت نشده اید 248 00:11:31,890 --> 00:11:34,520 اما ورود به سیستم ممکن است به معنای که شما مجاز. 249 00:11:34,520 --> 00:11:37,930 اما اگر شما در حال حاضر به سیستم وارد شده و شما هنوز هم اجازه دسترسی ندارید، 250 00:11:37,930 --> 00:11:40,140 شما همچنین می توانید ممنوع است. 251 00:11:40,140 --> 00:11:45,320 بنابراین اگر شما به سیستم وارد شده و لازم نیست اجازه ممنوع است 252 00:11:45,320 --> 00:11:47,164 چیزی است که شما می توانید دریافت کنید. 253 00:11:47,164 --> 00:11:48,900 >> DAVID J. مالان و مکانیزم های که این مشکلات معمولا 254 00:11:48,900 --> 00:11:53,100 حل بر روی سرور است از طریق آنچه دستور؟ 255 00:11:53,100 --> 00:11:57,700 سطح دسترسی، اگر آن، در واقع، یک مجوز صدور در فایل یا دایرکتوری. 256 00:11:57,700 --> 00:11:59,220 >> ROB BOWDEN: پس از 404 یافت نشد. 257 00:11:59,220 --> 00:12:03,100 258 00:12:03,100 --> 00:12:03,470 آره. 259 00:12:03,470 --> 00:12:10,150 بنابراین بر خلاف 302 که در آن دقیقا نمی که در آن شما می گی اما می داند چه 260 00:12:10,150 --> 00:12:12,710 شما می خواهید، این، آن را فقط هیچ ایده چه چیزی می خواهید. 261 00:12:12,710 --> 00:12:15,648 و شما درخواست نمی چیزی معتبر است. 262 00:12:15,648 --> 00:12:18,580 263 00:12:18,580 --> 00:12:22,310 418 من یک قوری هستم و پس از آن 500 سرور داخلی. 264 00:12:22,310 --> 00:12:24,870 پس چرا ممکن است شما دریافت کنید که؟ 265 00:12:24,870 --> 00:12:26,120 >> بنابراین segfault - 266 00:12:26,120 --> 00:12:28,760 267 00:12:28,760 --> 00:12:30,640 من در واقع از درجه بندی را نمی دانم استاندارد برای این. 268 00:12:30,640 --> 00:12:34,850 اما اگر کد PHP خود را چیزی به حال اشتباه در آن، در تئوری، می تواند 269 00:12:34,850 --> 00:12:39,650 در واقع segfault، که در این صورت، این 500 سرور داخلی خطا، چیزی 270 00:12:39,650 --> 00:12:41,400 اشتباه سرور شما می باشد پیکربندی. 271 00:12:41,400 --> 00:12:44,320 و یا یک خطای نحوی وجود دارد در کد PHP خود را. 272 00:12:44,320 --> 00:12:46,095 و یا چیزی بد در جریان است. 273 00:12:46,095 --> 00:12:48,320 >> DAVID J. مالان: ما دیدن segfault در پاسخ به چند نفر است. 274 00:12:48,320 --> 00:12:49,490 و از لحاظ فنی، می تواند رخ دهد. 275 00:12:49,490 --> 00:12:53,820 اما این امر می تواند PHP، برنامه نوشته شده توسط افراد دیگر، در واقع 276 00:12:53,820 --> 00:12:57,790 segfaulted، که تنها کسانی که اگر مردم پیچ و کد حشره دار در نوشت 277 00:12:57,790 --> 00:13:00,680 مترجم خود را PHP خود را segfault. 278 00:13:00,680 --> 00:13:06,460 بنابراین حتی اگر 500 است مانند یک segfault در روح و روان، آن را تقریبا همیشه 279 00:13:06,460 --> 00:13:10,490 نتیجه یک مسئله فایل پیکربندی با وب سرور شما و یا، به عنوان راب گفت: 280 00:13:10,490 --> 00:13:13,200 یک خطای نحوی، مثل شما یک نقل قول نزدیک نیست. 281 00:13:13,200 --> 00:13:16,180 یا شما یک نقطه و ویرگول از دست رفته جایی. 282 00:13:16,180 --> 00:13:23,677 >> رسید بنابراین برای pset شاتل، I فکر می کنم زمانی که من این کار را کرد یک بار من کلیک 283 00:13:23,677 --> 00:13:26,300 مرورگر، اما هیچ چیز آمد، آنچه که آنها صفحه سفید می شود. 284 00:13:26,300 --> 00:13:28,056 اما به دلیل کد بود. 285 00:13:28,056 --> 00:13:29,440 من فکر می کنم که جاوا اسکریپت بود، درست است؟ 286 00:13:29,440 --> 00:13:29,770 >> ROB BOWDEN: آره. 287 00:13:29,770 --> 00:13:31,180 >> یک مدعو: آیا این خطا هنوز هم می آیند تا؟ 288 00:13:31,180 --> 00:13:34,290 >> ROB BOWDEN: پس می خواهی بدست نمی شده است این خطا به خاطر همه چیز 289 00:13:34,290 --> 00:13:36,930 از دیدگاه وب سرور کاملا خوب بود. 290 00:13:36,930 --> 00:13:39,090 اما شما درخواست میکنید. 291 00:13:39,090 --> 00:13:42,000 شما درخواست shuttle.js و service.js. 292 00:13:42,000 --> 00:13:44,580 و آن را قادر به موفقیت بازگشت بود به همه آن چیزهایی که شما - 293 00:13:44,580 --> 00:13:44,980 200. 294 00:13:44,980 --> 00:13:45,680 OK. 295 00:13:45,680 --> 00:13:49,330 این تنها زمانی که مرورگر شما سعی در تفسیر کد جاوا اسکریپت است که 296 00:13:49,330 --> 00:13:51,370 آن را مانند، صبر کنید، این است که خطا در جاوا اسکریپت معتبر است. 297 00:13:51,370 --> 00:13:55,720 298 00:13:55,720 --> 00:13:58,210 هر گونه سؤال دیگر؟ 299 00:13:58,210 --> 00:14:00,750 بسیار خوب. 300 00:14:00,750 --> 00:14:04,120 >> DAVID J. مالان: بنابراین بعدی تا عدد 11 بود. 301 00:14:04,120 --> 00:14:07,610 و 11 ترسناک ترین بود برای بسیاری از مردم است. 302 00:14:07,610 --> 00:14:14,620 303 00:14:14,620 --> 00:14:18,570 بنابراین مهم ترین نکته در اینجا این بود که این بود، در واقع، در مورد 304 00:14:18,570 --> 00:14:19,840 لیست مضاعف مرتبط است. 305 00:14:19,840 --> 00:14:23,160 اما این همان است که در سال گذشته نیست مشکل لیست مضاعف مرتبط است، 306 00:14:23,160 --> 00:14:27,170 که به شما اخطار نمی دهد که لیست می تواند، در واقع، جستجوی ساده و عادی باشد. 307 00:14:27,170 --> 00:14:29,640 >> بنابراین این واقعیت است که در لیست نامرتب بود و این واقعیت است که آن کلمه بود 308 00:14:29,640 --> 00:14:32,930 زیر خط دار برای انتقال وجود دارد به معنای شد که این در واقع ساده 309 00:14:32,930 --> 00:14:35,430 از آنچه در غیر این صورت می شده اند مشکل بیشتر به چالش کشیدن 310 00:14:35,430 --> 00:14:36,600 و یکی دیگر. 311 00:14:36,600 --> 00:14:40,760 بنابراین یک اشتباه معمول در اینجا بود تا قرار داده اند راه حل سال گذشته در یکی از خود را 312 00:14:40,760 --> 00:14:45,580 پیجر و پس از آن فقط کورکورانه کپی کنید که را به عنوان پاسخ، که حق است 313 00:14:45,580 --> 00:14:48,520 پاسخ به یک سوال متفاوت است در روح مشابه. 314 00:14:48,520 --> 00:14:51,340 اما پیچیدگی های خاص در اینجا به شرح زیر بود. 315 00:14:51,340 --> 00:14:55,200 >> به همین دلیل یک، ما یک گره اعلام کرد و تعریف شده به روش معمول در اینجا. 316 00:14:55,200 --> 00:14:59,230 سپس ما تعریف لیست از یک جهانی اشاره گر مقدار دهی اولیه تهی. 317 00:14:59,230 --> 00:15:02,150 سپس ظاهرا، این دو تابع وجود دارد ما نمونه های اولیه برای اینجا، درج 318 00:15:02,150 --> 00:15:03,240 و حذف. 319 00:15:03,240 --> 00:15:06,600 و سپس ما به برخی از نمونه کد در اینجا انجام یک دسته از اضافه. 320 00:15:06,600 --> 00:15:09,930 و پس از آن که از شما برای تکمیل اجرای قرار دادن زیر در چنین 321 00:15:09,930 --> 00:15:14,380 یک راه است که آن را درج نفر به لیست در زمان ثابت، همچنین تاکید، 322 00:15:14,380 --> 00:15:15,730 حتی اگر در حال حاضر حاضر. 323 00:15:15,730 --> 00:15:20,600 >> بنابراین زیبایی که قادر به وارد کردن در زمان ثابت است که آن را بیان می 324 00:15:20,600 --> 00:15:23,060 که شما مجبور به قرار دادن گره جدید که در آن؟ 325 00:15:23,060 --> 00:15:23,690 به جلو. 326 00:15:23,690 --> 00:15:27,760 پس آن را از بین می برد، خوشبختانه، حداقل یکی از موارد استفاده می شود که نیاز به 327 00:15:27,760 --> 00:15:30,520 خطوط و حتی بیشتر از کد، مانند آن را انجام داد در سال گذشته و حتی در کلاس هنگامی که ما 328 00:15:30,520 --> 00:15:34,040 از طریق این نوع از چیزی صحبت کردیم با انسان ها و با برخی از 329 00:15:34,040 --> 00:15:35,250 شبه کد کلامی. 330 00:15:35,250 --> 00:15:39,190 پس در راه حل در اینجا، اجازه دهید به جست و خیز بیش از به که فقط به یک در ویژوال 331 00:15:39,190 --> 00:15:40,480 صفحه نمایش. 332 00:15:40,480 --> 00:15:42,230 >> توجه داشته باشید که ما انجام می دهیم به شرح زیر است. 333 00:15:42,230 --> 00:15:45,140 و همچنین توجه به ساده سازی های دیگر این بود که حتی اگر آن را 334 00:15:45,140 --> 00:15:48,280 در حال حاضر در حال حاضر، بنابراین این بدان معنی است حتی اگر تعداد در حال حاضر وجود دارد، شما می توانید 335 00:15:48,280 --> 00:15:50,280 فقط کورکورانه دیگری وارد کپی از آن. 336 00:15:50,280 --> 00:15:52,560 و این، بیش از حد، به معنای شد ساده سازی، به طوری که شما می توانید 337 00:15:52,560 --> 00:15:54,940 تمرکز بر روی، واقعا، برخی از تر بخش فکری جالب و 338 00:15:54,940 --> 00:15:58,090 نه فقط برخی از خطا های اضافی چک با توجه به زمان محدود است. 339 00:15:58,090 --> 00:16:02,880 >> بنابراین در این راه حل نمونه، ما اختصاص یک اشاره گر بر روی دست چپ 340 00:16:02,880 --> 00:16:04,510 سمت در اینجا به یک گره. 341 00:16:04,510 --> 00:16:07,190 در حال حاضر، متوجه است که اشاره گر، به عنوان راب گفت: فقط 32 بیت است. 342 00:16:07,190 --> 00:16:09,060 و آن در واقع شامل نمی شود آدرس تا زمانی که شما 343 00:16:09,060 --> 00:16:09,970 آدرس اختصاص دهید. 344 00:16:09,970 --> 00:16:13,220 و ما انجام این کار در دست راست سمت طریق malloc. 345 00:16:13,220 --> 00:16:16,550 مانند یک شهروند خوب را چک می کنیم malloc است، در واقع، تهی، به طوری که 346 00:16:16,550 --> 00:16:18,690 ما به طور تصادفی ایجاد نمی کند segfault در اینجا. 347 00:16:18,690 --> 00:16:22,840 و هر زمان به شما استفاده از malloc در زندگی، شما باید برای چک کردن تهی، تا مبادا 348 00:16:22,840 --> 00:16:24,090 شما یک اشکال ظریف. 349 00:16:24,090 --> 00:16:28,460 >> سپس ما مقداردهی اولیه که تهی شده توسط اختصاص n و قبلی و بعدی. 350 00:16:28,460 --> 00:16:32,450 و در این مورد در اینجا، من مقدار دهی اولیه قبلی به تهی، چرا که این جدید 351 00:16:32,450 --> 00:16:34,780 گره در حال رفتن به جدید آغاز از لیست من. 352 00:16:34,780 --> 00:16:37,050 بنابراین برای رفتن به وجود دارد هیچ چیز قبل از آن. 353 00:16:37,050 --> 00:16:42,010 و من می خواهم به اصل اضافه فهرست موجود به گره جدید 354 00:16:42,010 --> 00:16:44,700 تنظیم بعدی برابر خود را فهرست می کنیم. 355 00:16:44,700 --> 00:16:47,120 اما من فقط هنوز انجام نشده است. 356 00:16:47,120 --> 00:16:51,780 بنابراین اگر لیست خود را در حال حاضر وجود داشته است، و حداقل یک گره وجود دارد 357 00:16:51,780 --> 00:16:57,070 در حال حاضر در محل، در صورتی که این لیست است در اینجا و من درج گره جدید در اینجا، من 358 00:16:57,070 --> 00:17:01,840 باید مطمئن شوید که گره سابق من اشاره به عقب به گره جدید من، 359 00:17:01,840 --> 00:17:04,260 دلیل این است که، دوباره، لیست مضاعف مرتبط است. 360 00:17:04,260 --> 00:17:05,460 >> بنابراین ما انجام بررسی سلامت عقل. 361 00:17:05,460 --> 00:17:10,109 اگر لیست تهی نیست، اگر در حال حاضر وجود دارد یک یا چند گره وجود دارد، پس 362 00:17:10,109 --> 00:17:12,470 اضافه کردن که پشت مرجع پس به صحبت می کنند. 363 00:17:12,470 --> 00:17:15,420 و پس از آن آخرین چیزی است که باید برای انجام این کار است که در واقع بروز رسانی جهانی 364 00:17:15,420 --> 00:17:20,329 لیست متغیر خود را به نقطه به آن گره جدید است. 365 00:17:20,329 --> 00:17:21,790 آره. 366 00:17:21,790 --> 00:17:26,579 >> رسید در اشاره گر فلش [نامفهوم] برابر تهی، انجام می دهد که 367 00:17:26,579 --> 00:17:30,420 مقابله با لیست به دلیل لیست تهی است؟ 368 00:17:30,420 --> 00:17:30,596 >> DAVID J. مالان: نه. 369 00:17:30,596 --> 00:17:34,500 این است که به سادگی من که فعالانه مراقب باشید، در صورتی که این من است 370 00:17:34,500 --> 00:17:38,730 فهرست اصلی با شاید برخی از گره در اینجا و من قرار دادن من 371 00:17:38,730 --> 00:17:42,380 گره جدید در اینجا، رفتن وجود دارد به چیزی بیش از اینجا. 372 00:17:42,380 --> 00:17:44,720 و من می خواهم را به تصرف است که ایده با تنظیم های قبلی به 373 00:17:44,720 --> 00:17:47,740 تهی در گره جدید. 374 00:17:47,740 --> 00:17:51,410 و احتمالا، اگر کد من درست است و هیچ راه دیگری برای وارد کردن وجود دارد 375 00:17:51,410 --> 00:17:54,970 گره های دیگر از این تابع، احتمالا، حتی اگر فهرست در حال حاضر دارای 376 00:17:54,970 --> 00:18:00,090 یک یا چند گره در آن است، احتمالا لیست، گره اول، باید 377 00:18:00,090 --> 00:18:02,750 اشاره گر های قبلی از تهی است. 378 00:18:02,750 --> 00:18:03,550 >> رسید و فقط یک پیگیری. 379 00:18:03,550 --> 00:18:08,139 دلیل شما قرار داده اشاره گر برابر بعدی لیست شما در حال ساخت اشاره گر 380 00:18:08,139 --> 00:18:13,579 قبل از لیست که در آن اشاره به بعد، من حدس می زنم - 381 00:18:13,579 --> 00:18:14,980 I don't - 382 00:18:14,980 --> 00:18:15,450 فقط لیست؟ 383 00:18:15,450 --> 00:18:16,400 >> DAVID J. مالان: دقیقا. 384 00:18:16,400 --> 00:18:19,400 و بنابراین، اجازه دهید در واقع دو مورد در نظر در اینجا در واقع، حتی اگر 385 00:18:19,400 --> 00:18:22,070 منظور ما آنها را در نظر نمی باشد. کاملا همان کد. 386 00:18:22,070 --> 00:18:26,250 اما در سطح بالا، در صورتی که این نشان دهنده لیست و 32 بیتی است 387 00:18:26,250 --> 00:18:29,560 اشاره گر، ساده ترین سناریو است که این تهی به طور پیش فرض است. 388 00:18:29,560 --> 00:18:33,010 حالا فرض کنید که من می خواهم برای قرار دادن تعداد 50 عدد اول است. 389 00:18:33,010 --> 00:18:37,640 من می خواهم به جلو بروید و تخصیص یک گره، است که رفتن به شامل 390 00:18:37,640 --> 00:18:38,770 سه رشته - 391 00:18:38,770 --> 00:18:42,070 نفر، قبلی و بعدی. 392 00:18:42,070 --> 00:18:44,580 >> من قصد دارم برای قرار دادن تعداد 50 در اینجا، چرا که این نفر خواهد بود. 393 00:18:44,580 --> 00:18:46,130 این آینده خواهد بود. 394 00:18:46,130 --> 00:18:48,530 و این قبل خواهد بود. 395 00:18:48,530 --> 00:18:50,910 و به این ترتیب آنچه را می توانم در این مورد انجام دهید؟ 396 00:18:50,910 --> 00:18:53,900 خوب، من فقط انجام داده ام خط 1 در اینجا. 397 00:18:53,900 --> 00:18:55,400 اشاره گر ازت می شود N. 398 00:18:55,400 --> 00:18:57,740 من پس از آن گفت: قبل باید تهی دریافت کنید. 399 00:18:57,740 --> 00:18:59,470 پس این است که رفتن به تهی باشد. 400 00:18:59,470 --> 00:19:01,365 سپس من قصد دارم برای گفتن بعدی رفتن به فهرست دریافت کنید. 401 00:19:01,365 --> 00:19:05,150 >> و این فقط کار می کند خوب. 402 00:19:05,150 --> 00:19:06,500 این تهی است. 403 00:19:06,500 --> 00:19:10,620 و به این ترتیب من گفت، گره جدید در آینده درست باید چه که هست. 404 00:19:10,620 --> 00:19:12,570 به طوری که قرار می دهد تهی دیگر وجود دارد. 405 00:19:12,570 --> 00:19:14,510 و سپس آخرین چیزی که من در حال بررسی است. 406 00:19:14,510 --> 00:19:17,870 اگر لیست به تهی برابر نیست، اما آن را به تهی برابر است، بنابراین ما به جست و خیز که 407 00:19:17,870 --> 00:19:18,470 در دسترس نباشد. 408 00:19:18,470 --> 00:19:23,520 و به این ترتیب تمام من بعدی لیست می شود اشاره گر که pictorially در نتایج 409 00:19:23,520 --> 00:19:25,570 یک عکس که می خواهم. 410 00:19:25,570 --> 00:19:26,620 به طوری که یک سناریو است. 411 00:19:26,620 --> 00:19:30,490 >> و یکی که شما را در مورد درخواست قرار گرفت به طور خاص وضعیت مثل این است، 412 00:19:30,490 --> 00:19:33,190 که در آن ما در حال حاضر یک لیست یک گره. 413 00:19:33,190 --> 00:19:36,240 و اگر من را به بالا و در اصلی بیانیه مشکل، در قسمت بعدی به 414 00:19:36,240 --> 00:19:39,320 وارد کردن مثلا 34 است، فقط برای به خاطر بحث. 415 00:19:39,320 --> 00:19:46,210 بنابراین من قصد دارم فقط به راحتی رسم است که بیش از اینجا. 416 00:19:46,210 --> 00:19:47,540 من فقط malloced ام. 417 00:19:47,540 --> 00:19:49,310 بیایید فرض کنیم من دارم برای تهی. 418 00:19:49,310 --> 00:19:51,870 >> در حال حاضر، من قصد دارم به مقداردهی اولیه N به 34. 419 00:19:51,870 --> 00:19:53,040 و این نفر خواهد بود. 420 00:19:53,040 --> 00:19:54,670 این آینده خواهد بود. 421 00:19:54,670 --> 00:19:57,100 و این قبل خواهد بود. 422 00:19:57,100 --> 00:19:59,370 اجازه دهید مطمئن شوید من نیست این عقب. 423 00:19:59,370 --> 00:20:01,110 قبلی می آید برای اولین بار در تعریف. 424 00:20:01,110 --> 00:20:03,070 اجازه بدهید من این را حل کنند. 425 00:20:03,070 --> 00:20:04,410 این قبلی است. 426 00:20:04,410 --> 00:20:05,780 این آینده. 427 00:20:05,780 --> 00:20:08,620 حتی اگر این یکسان هستند، اجازه دهید آن را سازگار نگه دارید. 428 00:20:08,620 --> 00:20:09,450 >> قبلی. 429 00:20:09,450 --> 00:20:11,030 این آینده. 430 00:20:11,030 --> 00:20:16,310 بنابراین من فقط malloced ام توجه داشته باشید من، بررسی می شود برای تهی، 34 به گره اختصاص داده است. 431 00:20:16,310 --> 00:20:17,570 قبلی تهی می شود. 432 00:20:17,570 --> 00:20:19,480 به طوری که به من می دهد که. 433 00:20:19,480 --> 00:20:21,010 بعدی می شود لیست. 434 00:20:21,010 --> 00:20:22,370 بنابراین این فهرست است. 435 00:20:22,370 --> 00:20:26,520 بنابراین این در حال حاضر همان است که طراحی این فلش، به طوری که آنها به یک نقطه 436 00:20:26,520 --> 00:20:27,940 در همان. 437 00:20:27,940 --> 00:20:30,400 و پس از آن من دارم اگر لیست است به تهی برابر نیست. 438 00:20:30,400 --> 00:20:31,740 و آن را در این زمان نیست. 439 00:20:31,740 --> 00:20:35,580 سپس من قصد دارم به کارهای می شود قبلی اشاره گر. 440 00:20:35,580 --> 00:20:39,700 >> بنابراین قبل می شود PTR. 441 00:20:39,700 --> 00:20:44,300 بنابراین این اثر از قرار دادن یک فلش گرافیکی در اینجا. 442 00:20:44,300 --> 00:20:46,930 و این کم کم مواج، خطوط. 443 00:20:46,930 --> 00:20:50,780 و سپس، در نهایت، من به روز رسانی لیست به نقطه را به اشاره گر. 444 00:20:50,780 --> 00:20:55,560 بنابراین در حال حاضر این اشاره به این پسر. 445 00:20:55,560 --> 00:20:57,170 و در حال حاضر، اجازه دهید سریع انجام ورود به سلامت عقل. 446 00:20:57,170 --> 00:20:59,470 >> در اینجا لیست است، که متغیر جهانی است. 447 00:20:59,470 --> 00:21:02,850 اولین گره است، در واقع، 34، به دلیل من دنبال می کنم که فلش. 448 00:21:02,850 --> 00:21:05,210 و این درست به این دلیل من می خواهم قرار دادن در ابتدای فهرست 449 00:21:05,210 --> 00:21:06,070 تمام گره های جدید. 450 00:21:06,070 --> 00:21:08,860 درست در کنار او به من به این پسر می شود. 451 00:21:08,860 --> 00:21:10,710 اگر من می خواهم نگه دارید، من ضربه بعدی تهی است. 452 00:21:10,710 --> 00:21:11,760 بنابراین هیچ لیستی وجود دارد. 453 00:21:11,760 --> 00:21:14,460 اگر من ضربه قبلی، من به جایی که من انتظار می رود. 454 00:21:14,460 --> 00:21:16,435 >> بنابراین هنوز هم وجود دارد چند اشاره گر، بدیهی است، برای دستکاری. 455 00:21:16,435 --> 00:21:19,870 اما این واقعیت که به شما گفته شد به انجام این در زمان ثابت معنی است که شما فقط 456 00:21:19,870 --> 00:21:22,910 یک تعداد متناهی از همه چیز شما مجاز به انجام. 457 00:21:22,910 --> 00:21:24,290 و چیزی که این تعداد است؟ 458 00:21:24,290 --> 00:21:25,185 این ممکن است یک گام. 459 00:21:25,185 --> 00:21:25,700 این ممکن است دو. 460 00:21:25,700 --> 00:21:26,820 این ممکن است به 1000 گام. 461 00:21:26,820 --> 00:21:30,500 اما آن را محدود، که به معنی شما می توانید نیست اند هر نوع حلقه در رفتن 462 00:21:30,500 --> 00:21:32,010 در اینجا، بدون بازگشت، بدون حلقه. 463 00:21:32,010 --> 00:21:37,390 این فقط به خطوط سخت رمزی از کد که ما در این نمونه است. 464 00:21:37,390 --> 00:21:42,330 >> بنابراین مشکل بعدی 12 ما را به خواست تکمیل اجرای حذف 465 00:21:42,330 --> 00:21:46,740 در زیر به گونه ای که آن را حذف n از لیست را در زمان خطی. 466 00:21:46,740 --> 00:21:48,740 بنابراین شما باید کمی بیشتر تکان دادن اتاق در حال حاضر. 467 00:21:48,740 --> 00:21:52,380 شما ممکن است که نفر فرض کنیم، در صورت وجود در این فهرست، حضور خواهد داشت 468 00:21:52,380 --> 00:21:53,340 بیش از یک بار. 469 00:21:53,340 --> 00:21:56,770 و بیش از حد که به معنای مبتنی بر آزمون فرض ساده است، بنابراین 470 00:21:56,770 --> 00:21:59,780 که اگر شما پیدا کردن شماره 50 در جایی در این لیست، شما نیز نمی 471 00:21:59,780 --> 00:22:02,890 باید در مورد ادامه به نگرانی تکرار، به دنبال هر ممکن 472 00:22:02,890 --> 00:22:06,990 کپی از 50، که فقط می محول به برخی از minutia در زمان محدود است. 473 00:22:06,990 --> 00:22:10,460 >> بنابراین با حذف، این یکی قطعا بود به چالش کشیدن بیشتر و بیشتر 474 00:22:10,460 --> 00:22:11,640 کد برای نوشتن. 475 00:22:11,640 --> 00:22:14,990 اما در نگاه اول، رک و پوست کنده، آن ممکن است نگاه چیزی قریب به اتفاق و مانند 476 00:22:14,990 --> 00:22:17,060 هیچ راهی برای شما می تواند داشته باشد وجود دارد آمد تا با در مسابقه. 477 00:22:17,060 --> 00:22:22,450 اما اگر ما در مراحل فردی تمرکز، امیدوارم، آن را به طور ناگهانی خواهد شد 478 00:22:22,450 --> 00:22:26,060 حمله به شما است که هر یک از این فرد مراحل را حس می کند آشکار 479 00:22:26,060 --> 00:22:27,080 در نگاه به گذشته. 480 00:22:27,080 --> 00:22:28,200 بنابراین اجازه دهید نگاهی به. 481 00:22:28,200 --> 00:22:32,570 >> پس اول، ما مقداردهی اولیه اشاره گر به خود را فهرست می کنیم. 482 00:22:32,570 --> 00:22:36,040 از آنجا که من می خواهم زمان خطی، که به معنی من قصد دارم به برخی از حلقه. 483 00:22:36,040 --> 00:22:39,730 و یک روش مشترک به تکرار بیش از گره در یک ساختار فهرست و یا هر نوع 484 00:22:39,730 --> 00:22:43,860 ساختار تکرار شونده است را به یک اشاره گر به جلو داده ها 485 00:22:43,860 --> 00:22:46,990 ساختار و پس از آن فقط شروع به به روز رسانی آن و راه رفتن راه خود را 486 00:22:46,990 --> 00:22:48,650 از طریق ساختار داده ها. 487 00:22:48,650 --> 00:22:50,040 من می خواهم به انجام این کار دقیقا همان است که. 488 00:22:50,040 --> 00:22:54,260 >> در حالی که اشاره گر، متغیر موقت من، است به تهی برابر نیست، اجازه دهید 489 00:22:54,260 --> 00:22:55,660 پیش بروید و تیک بزنید. 490 00:22:55,660 --> 00:22:56,910 آیا من خوش شانس کنید؟ 491 00:22:56,910 --> 00:23:01,740 آیا درست است نفر را در گره من در حال حاضر نگاه به برابر 492 00:23:01,740 --> 00:23:03,380 تعداد من به دنبال؟ 493 00:23:03,380 --> 00:23:05,410 و اگر چنین است، اجازه دهید کاری انجام دهد. 494 00:23:05,410 --> 00:23:10,020 در حال حاضر، این مقررات اگر شرایط احاطه کامل 495 00:23:10,020 --> 00:23:11,520 کدهای زیر. 496 00:23:11,520 --> 00:23:14,610 این تنها چیزی که من در مورد مراقبت است - پیدا کردن یک شماره در سوال. 497 00:23:14,610 --> 00:23:18,010 بنابراین هیچ چیز دیگری، که ساده وجود دارد همه چیز مفهومی کمی. 498 00:23:18,010 --> 00:23:22,040 >> اما در حال حاضر، من متوجه شدم، و شما ممکن است تنها این بعد از فکر کردن متوجه 499 00:23:22,040 --> 00:23:24,720 آن را از طریق یک بیت، وجود دارد در واقع دو مورد در اینجا. 500 00:23:24,720 --> 00:23:28,060 یکی این است که در آن گره است در ابتدای فهرست است، که یک 501 00:23:28,060 --> 00:23:31,040 کمی آزار دهنده است، چرا که مورد خاص، چرا که شما باید برای برخورد 502 00:23:31,040 --> 00:23:33,340 با این چیزی که تنها غیر عادی است. 503 00:23:33,340 --> 00:23:35,720 هر جای دیگر در لیست، آن هم همانطور است. 504 00:23:35,720 --> 00:23:38,050 یک گره قبلی و بعدی وجود دارد گره، گره های قبلی، گره بعدی. 505 00:23:38,050 --> 00:23:40,940 اما این پسر خاص کمی است اگر او در آغاز راه است. 506 00:23:40,940 --> 00:23:48,710 >> بنابراین اگر اشاره گر برابر با لیست خود را، تا اگر من در آغاز هستم 507 00:23:48,710 --> 00:23:53,960 لیست و I N پیدا کرده اند، من نیاز به انجام چند چیز. 508 00:23:53,960 --> 00:23:59,230 یکی، من نیاز به تغییر لیست اشاره به زمینه های بعدی، 50. 509 00:23:59,230 --> 00:24:01,270 بنابراین فرض کنید که من در تلاش حذف 34. 510 00:24:01,270 --> 00:24:03,560 پس این مرد را کردم برای رفتن دور در یک لحظه. 511 00:24:03,560 --> 00:24:07,210 >> من می خواهم بگویم، لیست می شود اشاره گر بعدی. 512 00:24:07,210 --> 00:24:08,570 خوب، این اشاره گر است. 513 00:24:08,570 --> 00:24:10,360 بعدی است با اشاره به بیش از اینجا. 514 00:24:10,360 --> 00:24:17,470 بنابراین این در حال تغییر است این فلش سمت راست در حال حاضر به نقطه را به این پسر اینجا. 515 00:24:17,470 --> 00:24:19,580 در حال حاضر، به یاد داشته باشید، ما یک متغیر موقت است. 516 00:24:19,580 --> 00:24:23,520 بنابراین ما هر گره اند یتیم نیست، چون من هم این پسر در داشته باشد من 517 00:24:23,520 --> 00:24:25,010 اجرای حذف. 518 00:24:25,010 --> 00:24:29,600 بنابراین در حال حاضر، اگر لیست خود است تهی نیست، من نیاز به تعمیر چیزی کم است. 519 00:24:29,600 --> 00:24:32,690 >> من نیاز به اطمینان حاصل کنید که این پیکان به حال را، است که قبلا اشاره 520 00:24:32,690 --> 00:24:36,830 50-34، این کردم تا به دور، چرا که اگر من در تلاش برای خلاص شدن از شر 521 00:24:36,830 --> 00:24:41,910 از 34، 50 بهتر است هر حفظ نیست نوع عقب اشاره به آن را به عنوان 522 00:24:41,910 --> 00:24:42,820 فلش پیشنهاد شده است. 523 00:24:42,820 --> 00:24:44,820 پس من فقط این خط. 524 00:24:44,820 --> 00:24:46,520 بنابراین پس از آن که من انجام داده ام. 525 00:24:46,520 --> 00:24:48,040 این پرونده است که در واقع بسیار آسان است. 526 00:24:48,040 --> 00:24:51,010 قطع کردن سر از لیست نسبتا سر راست است. 527 00:24:51,010 --> 00:24:52,980 >> متاسفانه، این وجود دارد بلوک آزار دهنده دیگری. 528 00:24:52,980 --> 00:24:56,170 بنابراین در حال حاضر، من به در نظر گرفتن مورد که در آن چیزی است که در وسط وجود دارد. 529 00:24:56,170 --> 00:24:59,880 اما آن را بیش از حد وحشتناک نیست، به جز برای سینتکس شبیه به این. 530 00:24:59,880 --> 00:25:03,080 پس اگر من در آغاز نه لیست، من در جایی در وسط هستم. 531 00:25:03,080 --> 00:25:08,160 و این خط را در اینجا می گوید، شروع در هر گره هستی. 532 00:25:08,160 --> 00:25:11,210 533 00:25:11,210 --> 00:25:18,550 برو به میدان بعدی گره قبل و نکته ای که در اشاره گر. 534 00:25:18,550 --> 00:25:20,390 >> اجازه دهید این کار را انجام pictorially. 535 00:25:20,390 --> 00:25:21,640 که در گرفتن پیچیده است. 536 00:25:21,640 --> 00:25:30,480 537 00:25:30,480 --> 00:25:37,990 بنابراین اگر من یک زمینه قبلی در اینجا - اجازه دهید این کار را - زمینه های بعدی در اینجا. 538 00:25:37,990 --> 00:25:41,200 من قصد دارم به ساده اشاره گر من نه از رسم یک دسته کامل از 539 00:25:41,200 --> 00:25:45,710 همه چیز به عقب و جلو متقاطع هر یک از دیگر. 540 00:25:45,710 --> 00:25:50,870 و در حال حاضر، اجازه دهید فقط می گویند این است 1، 2، 3 به خاطر بحث و گفتگو، حتی 541 00:25:50,870 --> 00:25:53,410 هر چند که به خط تا با مشکل در سوال. 542 00:25:53,410 --> 00:25:55,900 >> بنابراین در اینجا لیست پیوندی من است. 543 00:25:55,900 --> 00:25:59,300 من در تلاش برای حذف دو در این نسخه خاص از داستان. 544 00:25:59,300 --> 00:26:01,960 بنابراین من اشاره گر به روز شده ام شود با اشاره به این پسر. 545 00:26:01,960 --> 00:26:03,315 بنابراین این PTR است. 546 00:26:03,315 --> 00:26:04,530 او با اشاره به اینجا. 547 00:26:04,530 --> 00:26:07,170 این لیست است که وجود دارد در سطح جهانی مانند قبل. 548 00:26:07,170 --> 00:26:09,200 و او با اشاره در اینجا بدون توجه به آنچه. 549 00:26:09,200 --> 00:26:10,800 و در حال حاضر، من در تلاش برای حذف دو. 550 00:26:10,800 --> 00:26:13,850 >> بنابراین اگر اشاره گر اشاره در اینجا، من هستم به دنبال، ظاهرا، 551 00:26:13,850 --> 00:26:17,110 اشاره گر های قبلی، که من قرار می دهد 1. 552 00:26:17,110 --> 00:26:22,290 من پس از رفتن به می گویند که بعدی درست است که من به ارمغان می آورد بیش از این 553 00:26:22,290 --> 00:26:25,410 جعبه اینجا است، رفتن به اشاره گر برابر است. 554 00:26:25,410 --> 00:26:28,400 بنابراین اگر این اشاره گر، این بعدی است. 555 00:26:28,400 --> 00:26:31,840 این بدان معنی است که این فلش نیاز به نقطه را به این پسر. 556 00:26:31,840 --> 00:26:35,140 >> پس چه که خط از کد فقط انجام شده است کمی از این. 557 00:26:35,140 --> 00:26:37,500 و در حال حاضر، این است که به دنبال مانند گام به گام در مسیر درست. 558 00:26:37,500 --> 00:26:41,390 ما در اصل می خواهم به صدای تیک تیک 2 از وسط 1 و 3. 559 00:26:41,390 --> 00:26:44,400 پس از آن را حس می کند که ما به خواهید مسیر این اشاره گر در اطراف آن. 560 00:26:44,400 --> 00:26:50,400 بنابراین این خط بعدی این است که چک کردن اگر اشاره گر بعدی تهی نیست، وجود دارد 561 00:26:50,400 --> 00:26:54,200 در واقع کسی که در سمت راست 2، این بدان معناست که ما نیز باید انجام دهید 562 00:26:54,200 --> 00:26:55,850 کمی صدای تیک تیک در اینجا. 563 00:26:55,850 --> 00:27:00,590 >> بنابراین من در حال حاضر باید به دنبال این اشاره گر و به روز رسانی اشاره گر قبلی در 564 00:27:00,590 --> 00:27:05,410 این مرد برای انجام یک کمی از راهحل در اینجا نکته در اینجا. 565 00:27:05,410 --> 00:27:07,100 و اکنون، در دید این خوب است. 566 00:27:07,100 --> 00:27:11,930 این کمی کثیف در آن وجود دارد هیچ کس با اشاره به 2 دیگر. 567 00:27:11,930 --> 00:27:13,600 2 است با اشاره به سمت چپ. 568 00:27:13,600 --> 00:27:14,980 و 2 است با اشاره به سمت راست. 569 00:27:14,980 --> 00:27:17,480 اما او می تواند هر کاری که می خواهد انجام دهد، به دلیل او در مورد گرفتن آزاد شده است. 570 00:27:17,480 --> 00:27:19,480 و مهم نیست که چه این ارزش ها می باشد دیگر. 571 00:27:19,480 --> 00:27:23,040 >> آنچه که مهم است این است که باقی مانده بچه ها مسیر یابی بالا 572 00:27:23,040 --> 00:27:24,280 و در زیر او را در حال حاضر. 573 00:27:24,280 --> 00:27:25,810 و در واقع، این چیزی است که ما بعد. 574 00:27:25,810 --> 00:27:29,360 ما اشاره گر آزاد، که به معنی ما به سیستم عامل، قابلی ندارد 575 00:27:29,360 --> 00:27:30,906 به اصلاح این. 576 00:27:30,906 --> 00:27:34,900 و پس از آن در نهایت، بازگشت ما. 577 00:27:34,900 --> 00:27:37,220 دیگری به طور ضمنی، اگر ما اند بازگشت نشده است، 578 00:27:37,220 --> 00:27:38,290 ما باید به دنبال حفظ. 579 00:27:38,290 --> 00:27:41,485 پس اشاره گر برابر است با اشاره گر بعد فقط به معنی حرکت این پسر اینجا. 580 00:27:41,485 --> 00:27:42,600 حرکت این پسر اینجا. 581 00:27:42,600 --> 00:27:45,400 حرکت این پسر در اینجا اگر، در واقع، ما از شماره پیدا کند 582 00:27:45,400 --> 00:27:46,960 ما به دنبال نشده است. 583 00:27:46,960 --> 00:27:49,630 >> پس رک و پوست کنده، آن را به طور کامل به نظر می رسد قریب به اتفاق، من فکر می کنم، در ابتدا 584 00:27:49,630 --> 00:27:52,180 نگاه، به خصوص اگر شما تلاش با این در طول مسابقه پس از آن را مشاهده کنید 585 00:27:52,180 --> 00:27:52,850 چیزی شبیه به این. 586 00:27:52,850 --> 00:27:55,050 و شما خود را در پشت پت. 587 00:27:55,050 --> 00:27:57,080 خب، هیچ راهی برای من می تواند داشته باشد که این در مسابقه. 588 00:27:57,080 --> 00:28:00,470 اما می خواهم بگویم، شما می توانید اگر شما شکستن آن را به این فرد 589 00:28:00,470 --> 00:28:04,400 موارد و فقط از طریق آن راه رفتن دقت، البته، مسلما، تحت 590 00:28:04,400 --> 00:28:06,300 شرایط پر تنش باشد. 591 00:28:06,300 --> 00:28:09,470 >> خوشبختانه، تصویر ساخته شده همه چیز را شادتر. 592 00:28:09,470 --> 00:28:11,050 شما می توانید این را در رسم هر تعداد از راه. 593 00:28:11,050 --> 00:28:12,760 شما لازم نیست برای انجام متقاطع چیزی که در اینجا. 594 00:28:12,760 --> 00:28:14,520 شما می توانید آن را با مستقیم انجام خطوط شبیه به این. 595 00:28:14,520 --> 00:28:18,790 اما جان کلام این مشکل، در به طور کلی، این بود که متوجه است که 596 00:28:18,790 --> 00:28:22,060 تصویر در پایان باید کمی نگاه چیزی شبیه به این، به دلیل 597 00:28:22,060 --> 00:28:25,030 زمان ثابت ضمنی که شما در حفظ و متراکم و متراکم و متراکم 598 00:28:25,030 --> 00:28:29,900 گره های جدید در آغاز از لیست. 599 00:28:29,900 --> 00:28:31,960 هر گونه سؤال؟ 600 00:28:31,960 --> 00:28:34,565 شاید به چالش کشیدن بیشتر قطعا سوالات برنامه نویسی. 601 00:28:34,565 --> 00:28:37,690 >> رسید بنابراین لیست مشابه است سر در نمونه های قبلی. 602 00:28:37,690 --> 00:28:39,640 >> DAVID J. مالان: دقیقا، دقیقا. 603 00:28:39,640 --> 00:28:43,130 فقط نام های مختلف برای یک متغیر جهانی است. 604 00:28:43,130 --> 00:28:44,380 در سراسر جهان چه؟ 605 00:28:44,380 --> 00:28:48,880 606 00:28:48,880 --> 00:28:49,730 >> ROB BOWDEN: OK. 607 00:28:49,730 --> 00:28:52,020 پس این یکی که در آن شما است مجبور به نوشتن پاراگراف. 608 00:28:52,020 --> 00:28:56,060 برخی از افراد مقاله نوشت برای این سوال. 609 00:28:56,060 --> 00:29:00,230 اما شما فقط نیاز به استفاده از این شش نظر برای توصیف چیزی است که وقتی 610 00:29:00,230 --> 00:29:02,440 شما سعی می کنید برای تماس با facebook.com. 611 00:29:02,440 --> 00:29:07,930 بنابراین من فقط از طریق فرایند بحث با استفاده از تمام این شرایط. 612 00:29:07,930 --> 00:29:11,290 بنابراین در مرورگر ما، ما نوع facebook.com و آمار را وارد کنید. 613 00:29:11,290 --> 00:29:17,280 بنابراین مرورگر ما رفتن برای ساخت HTTP درخواست کنید که آن را به رفتن به ارسال 614 00:29:17,280 --> 00:29:22,220 از طریق برخی از مراحل به فیس بوک برای فیس بوک برای پاسخ دادن به ما با 615 00:29:22,220 --> 00:29:24,450 HTML از صفحه آن است. 616 00:29:24,450 --> 00:29:28,800 >> پس چه روند است که درخواست HTTP 617 00:29:28,800 --> 00:29:30,730 در واقع به فیس بوک می شود؟ 618 00:29:30,730 --> 00:29:32,790 پس اول، ما نیاز به ترجمه Facebook.com. 619 00:29:32,790 --> 00:29:38,780 پس فقط با توجه به نام Facebook.com، که در آن در واقع به درخواست HTTP 620 00:29:38,780 --> 00:29:39,940 نیاز به رفتن؟ 621 00:29:39,940 --> 00:29:44,120 بنابراین ما نیاز به ترجمه Facebook.com به یک آدرس IP، که منحصر به فرد 622 00:29:44,120 --> 00:29:47,620 شناسایی ماشین چیزی است که ما در واقع می خواهید برای ارسال این درخواست به. 623 00:29:47,620 --> 00:29:49,310 لپ تاپ شما دارای یک آدرس IP. 624 00:29:49,310 --> 00:29:52,240 هر چیزی متصل به اینترنت یک آدرس IP. 625 00:29:52,240 --> 00:29:59,030 >> بنابراین DNS، سیستم نام دامنه، است که چه خبر است که مسئولیت رسیدگی به ترجمه 626 00:29:59,030 --> 00:30:03,750 از facebook.com به یک آدرس IP که در واقع شما می خواهید برای تماس با. 627 00:30:03,750 --> 00:30:08,075 بنابراین تماس با ما سرورهای DNS و بگو، چه facebook.com است؟ 628 00:30:08,075 --> 00:30:16,560 این گزارش می گوید، آه، آن را به آدرس IP 190.212 است چیزی، چیزی، چیزی. 629 00:30:16,560 --> 00:30:16,900 بسیار خوب. 630 00:30:16,900 --> 00:30:18,850 در حال حاضر، من می دانم چه ماشین من می خواهم به تماس بگیرید. 631 00:30:18,850 --> 00:30:22,360 >> بنابراین پس از آن شما درخواست HTTP خود را ارسال به آن ماشین است. 632 00:30:22,360 --> 00:30:24,140 پس چگونه آن را به دستگاه می کنید؟ 633 00:30:24,140 --> 00:30:27,200 خوب، درخواست می رود از روتر به روتر تندرست. 634 00:30:27,200 --> 00:30:32,630 به یاد داشته باشید به عنوان مثال در کلاس، که در آن ما در واقع شاهد این مسیر که به 635 00:30:32,630 --> 00:30:35,340 بسته ها در زمان زمانی که ما سعی برای برقراری ارتباط. 636 00:30:35,340 --> 00:30:38,460 ما شاهد آن بر فراز اقیانوس اطلس پرش به اقیانوس در یک نقطه و یا هر چیز دیگری. 637 00:30:38,460 --> 00:30:42,820 >> بنابراین پورت مدت گذشته است. 638 00:30:42,820 --> 00:30:46,520 پس این است که در حال حاضر بر روی کامپیوتر شما. 639 00:30:46,520 --> 00:30:49,970 شما می توانید چیز های متعدد در حال حاضر برقراری ارتباط با اینترنت می باشد. 640 00:30:49,970 --> 00:30:53,730 بنابراین من می تواند در حال اجرا، می گویند، اسکایپ. 641 00:30:53,730 --> 00:30:55,670 من ممکن است یک مرورگر وب باز داشته باشد. 642 00:30:55,670 --> 00:30:59,010 من ممکن است چیزی که torrenting فایل. 643 00:30:59,010 --> 00:31:00,880 بنابراین همه این چیزها ارتباط با 644 00:31:00,880 --> 00:31:02,600 اینترنت در برخی از راه. 645 00:31:02,600 --> 00:31:08,070 >> بنابراین، هنگامی که کامپیوتر شما برخی از داده ها را دریافت از اینترنت، چگونه آن را 646 00:31:08,070 --> 00:31:10,130 می دانید چه برنامه در واقع می خواهد داده؟ 647 00:31:10,130 --> 00:31:12,610 چگونه آن را که آیا این خاص می دانند داده ها برای به معنای 648 00:31:12,610 --> 00:31:16,070 torrenting نرم افزار به عنوان مخالف به مرورگر وب؟ 649 00:31:16,070 --> 00:31:20,980 بنابراین این منظور از پورت در این است که همه این برنامه های کاربردی 650 00:31:20,980 --> 00:31:22,720 بر روی کامپیوتر خود ادعا کرد یک پورت. 651 00:31:22,720 --> 00:31:27,580 بنابراین مرورگر وب خود می گوید، با سلام، من گوش دادن به پورت 1000. 652 00:31:27,580 --> 00:31:32,240 و برنامه torrenting خود را می گوید، من گوش دادن به پورت 3000. 653 00:31:32,240 --> 00:31:34,770 و اسکایپ می گوید، من با استفاده از پورت 4000. 654 00:31:34,770 --> 00:31:41,950 >> بنابراین، هنگامی که شما برخی از داده ها را دریافت کنید که به آن تعلق به یکی از این برنامه های کاربردی، داده ها 655 00:31:41,950 --> 00:31:45,510 است که با پورت مشخص شده آن را در واقع باید به همراه ارسال می شود. 656 00:31:45,510 --> 00:31:47,950 پس این می گوید، آه، من تعلق به پورت 1000. 657 00:31:47,950 --> 00:31:50,950 من می دانم که پس از آن من نیاز به جلو در این به همراه مرورگر وب است. 658 00:31:50,950 --> 00:31:56,440 بنابراین به این دلیل آن را مربوط به اینجا این است که وب سرور تمایل به 659 00:31:56,440 --> 00:31:58,240 گوش دادن به پورت 80. 660 00:31:58,240 --> 00:32:02,420 بنابراین، هنگامی که Facebook.com تماس با من، من هستم برقراری ارتباط با برخی از دستگاه. 661 00:32:02,420 --> 00:32:06,390 اما من نیاز به گفتن نیست که پورت آن ماشین من می خواهم برای برقراری ارتباط با. 662 00:32:06,390 --> 00:32:09,160 و سرویس دهنده های وب تمایل دارند که گوش دادن روی پورت 80. 663 00:32:09,160 --> 00:32:14,010 >> اگر آنها می خواستند، آنها می توانند آن را تا پس از آن به عنوان بر روی پورت 7000 لیست. 664 00:32:14,010 --> 00:32:19,090 و پس از آن در مرورگر وب، من می توانم نوع دستی Facebook.com: 7000 تا 665 00:32:19,090 --> 00:32:24,600 ارسال درخواست به پورت 7000 وب سرور فیس بوک. 666 00:32:24,600 --> 00:32:26,820 >> DAVID J. مالان: و در این مورد، حتی اگر ما نیاز نیست که مردم 667 00:32:26,820 --> 00:32:30,000 ذکر این، در این مورد، چه پورت به درخواست در واقع برای رفتن؟ 668 00:32:30,000 --> 00:32:36,630 669 00:32:36,630 --> 00:32:37,880 دوباره سعی کنید. 670 00:32:37,880 --> 00:32:42,810 671 00:32:42,810 --> 00:32:44,300 دقیقا. 672 00:32:44,300 --> 00:32:47,960 به دنبال نه برای آن است، اما ظرافت که هیچ کدام آخرین وجود دارد. 673 00:32:47,960 --> 00:32:51,770 >> ROB BOWDEN: پس HTTPS، از آن گوش دادن به طور خاص برای 674 00:32:51,770 --> 00:32:55,180 رمزگذاری شده، آن را بر روی پورت 4430 است. 675 00:32:55,180 --> 00:32:57,680 >> رسید و ایمیل می 25، درست است؟ 676 00:32:57,680 --> 00:33:00,670 >> DAVID J. مالان: عازم ناحیه دور دست ایمیل، 25، بله. 677 00:33:00,670 --> 00:33:03,760 >> ROB BOWDEN: من حتی بیشتر می دانند - همه آنهایی که کمتر تمایل به 678 00:33:03,760 --> 00:33:06,310 برای همه چیز محفوظ می باشد. 679 00:33:06,310 --> 00:33:09,260 من فکر می کنم همه چیز را تحت 1024 سایت محفوظ است. 680 00:33:09,260 --> 00:33:13,450 >> یک مدعو: چرا به شما می گویند 3 تعداد اشتباه بود؟ 681 00:33:13,450 --> 00:33:18,820 >> ROB BOWDEN: از آنجا که در یک آدرس IP، این چهار گروه از اعداد وجود دارد. 682 00:33:18,820 --> 00:33:21,090 و آنها از 0 تا 255 است. 683 00:33:21,090 --> 00:33:28,060 بنابراین 192.168.2.1 مشترک است شبکه محلی آدرس IP. 684 00:33:28,060 --> 00:33:30,840 توجه داشته باشید همه کسانی که کمتر از 255 می باشد. 685 00:33:30,840 --> 00:33:33,570 بنابراین، هنگامی که من با 300 شروع شده، که نمی تواند احتمالا دارند 686 00:33:33,570 --> 00:33:35,210 یکی از اعداد بوده است. 687 00:33:35,210 --> 00:33:38,170 >> DAVID J. مالان: اما این کلیپ احمقانه از - آن CSI، جایی که آنها تا به حال بوده است 688 00:33:38,170 --> 00:33:39,970 تعداد که بیش از حد بزرگ بود برای آدرس IP است. 689 00:33:39,970 --> 00:33:42,940 690 00:33:42,940 --> 00:33:46,110 >> ROB BOWDEN: هر گونه سوال در مورد این؟ 691 00:33:46,110 --> 00:33:51,710 یک بعدی، تغییر تا کامل در موضوع، اما ما باید این آرایه PHP برای 692 00:33:51,710 --> 00:33:53,270 خانه ها در چهار. 693 00:33:53,270 --> 00:33:56,360 و ما یک لیست نامرتب. 694 00:33:56,360 --> 00:33:59,550 و ما می خواهیم برای چاپ کردن هر آیتم لیست فقط شامل نام خانه. 695 00:33:59,550 --> 00:34:09,090 696 00:34:09,090 --> 00:34:11,870 بنابراین ما باید یک حلقه foreach. 697 00:34:11,870 --> 00:34:17,540 بنابراین به یاد داشته باشید، نحو حلقه foreach است آرایه به عنوان قلم موجود در آرایه. 698 00:34:17,540 --> 00:34:22,360 پس از هر تکرار از حلقه، خانه در رفتن به یکی از را 699 00:34:22,360 --> 00:34:24,060 مقادیر داخل آرایه می شود. 700 00:34:24,060 --> 00:34:26,530 >> در تکرار اول، خانه خواهد کابوت خانه باشد. 701 00:34:26,530 --> 00:34:30,370 در تکرار دوم، خانه خواهد شد شود پیک خانه و غیره. 702 00:34:30,370 --> 00:34:34,370 بنابراین برای هر یک از چهار به عنوان خانه، ما فقط رفتن برای چاپ - 703 00:34:34,370 --> 00:34:37,250 شما همچنین می تواند تکرار کرده اند - 704 00:34:37,250 --> 00:34:42,199 قلم دوم از اقلام لیست و سپس نام خانه و سپس بستن آیتم از لیست. 705 00:34:42,199 --> 00:34:45,210 آکولاد در اینجا اختیاری هستند. 706 00:34:45,210 --> 00:34:49,480 >> و سپس ما نیز در پاسخ به سوال گفت: خود را، به یاد داشته باشید برای بستن 707 00:34:49,480 --> 00:34:50,770 لیست نامرتب برچسب. 708 00:34:50,770 --> 00:34:53,949 بنابراین ما نیاز به خروج از حالت PHP به منظور انجام این کار. 709 00:34:53,949 --> 00:35:00,280 یا ما می توانست تکرار بستن تگ لیست نامرتب. 710 00:35:00,280 --> 00:35:02,380 >> DAVID J. مالان: همچنین خوب است در اینجا به استفاده از یک مدرسه قدیمی برای است 711 00:35:02,380 --> 00:35:07,340 حلقه با $ من = 0 0 و با استفاده از شمارش به شکل از طول اشعه. 712 00:35:07,340 --> 00:35:09,240 در مجموع خوب است بیش از حد، فقط wordier کم است. 713 00:35:09,240 --> 00:35:12,170 714 00:35:12,170 --> 00:35:14,742 >> رسید بنابراین اگر میخواهید به شد [نامفهوم]، کار می کنید - 715 00:35:14,742 --> 00:35:16,734 من فراموش کرده ام آنچه حلقه [نامفهوم] است. 716 00:35:16,734 --> 00:35:21,380 آیا شما $ چهار براکت من؟ 717 00:35:21,380 --> 00:35:21,850 >> DAVID J. مالان: دقیقا. 718 00:35:21,850 --> 00:35:23,100 بله، دقیقا. 719 00:35:23,100 --> 00:35:26,650 720 00:35:26,650 --> 00:35:27,900 >> ROB BOWDEN: دیگر چه؟ 721 00:35:27,900 --> 00:35:31,350 722 00:35:31,350 --> 00:35:32,010 >> DAVID J. مالان: بسیار خوب. 723 00:35:32,010 --> 00:35:32,300 تجارت آف. 724 00:35:32,300 --> 00:35:38,290 پس بود مجموعه ای از پاسخ وجود دارد ممکن است برای هر یک از این. 725 00:35:38,290 --> 00:35:40,510 ما واقعا فقط به دنبال شدند چیزی قانع کننده برای حرکت صعودی و 726 00:35:40,510 --> 00:35:41,100 حرکت نزولی. 727 00:35:41,100 --> 00:35:44,830 و تعداد 16 پرسید، اعتبار سنجی کاربران ورودی های سمت سرویس گیرنده، به عنوان با جاوا اسکریپت، 728 00:35:44,830 --> 00:35:47,280 به جای سمت سرور، به عنوان با PHP. 729 00:35:47,280 --> 00:35:49,450 پس چه حرکت صعودی از این انجام سمت سرویس گیرنده؟ 730 00:35:49,450 --> 00:35:53,780 >> خوب، یکی از چیزهایی که ما پیشنهاد است که شما زمان تاخیر را کاهش دهد، به خاطر شما 731 00:35:53,780 --> 00:35:56,750 لازم نیست به زحمت از تماس با سرور، که ممکن است چند را 732 00:35:56,750 --> 00:36:00,390 میلی ثانیه و یا حتی چند ثانیه با اجتناب از که و فقط 733 00:36:00,390 --> 00:36:04,670 اعتبار سنجی کاربران ورودی های سمت سرویس گیرنده توسط راه اندازی کنترل در ارائه و 734 00:36:04,670 --> 00:36:06,650 فقط چک کردن، آیا آنها از نوع چیزی در نام؟ 735 00:36:06,650 --> 00:36:08,080 آیا آنها چیزی تایپ در آدرس ایمیل؟ 736 00:36:08,080 --> 00:36:10,950 آیا آنها خوابگاه از را انتخاب کنید منوی کشویی؟ 737 00:36:10,950 --> 00:36:14,360 >> شما می توانید آنها بازخورد آنی را با استفاده از کامپیوتر گیگاهرتز 738 00:36:14,360 --> 00:36:16,770 و یا هر آنچه که آنها که در واقع در روی میز کار خود را. 739 00:36:16,770 --> 00:36:19,310 پس این فقط یک کاربر بهتر تجربه به طور معمول. 740 00:36:19,310 --> 00:36:24,460 اما حرکت نزولی از انجام سمت سرویس گیرنده اعتبار سنجی، اگر شما آن را بدون انجام 741 00:36:24,460 --> 00:36:29,860 انجام اعتبار سنجی های سمت سرور است که بیشتر از هر کسی از CS50 آینده می داند 742 00:36:29,860 --> 00:36:33,980 که شما فقط می توانید ارسال هر گونه اطلاعات شما می خواهید به یک سرور هر تعداد از راه. 743 00:36:33,980 --> 00:36:37,030 صادقانه بگویم، در بسیاری از هر مرورگر، شما می توانید کلیک کنید به اطراف در تنظیمات و فقط 744 00:36:37,030 --> 00:36:40,110 غیر فعال کردن جاوااسکریپت، که هر، بنابراین، هر شکلی از غیر فعال کردن 745 00:36:40,110 --> 00:36:41,080 اعتبار سنجی. 746 00:36:41,080 --> 00:36:44,460 >> اما شما همچنین ممکن است به یاد آورید که حتی من برخی از چیزهایی محرمانه در کلاس با استفاده از انجام 747 00:36:44,460 --> 00:36:47,790 شبکه راه دور و در واقع به تظاهر یک مرورگر با ارسال دریافت 748 00:36:47,790 --> 00:36:49,240 درخواست ها به سرور. 749 00:36:49,240 --> 00:36:51,030 و این قطعا با استفاده از هر جاوا اسکریپت. 750 00:36:51,030 --> 00:36:53,290 که فقط به من تایپ کردن دستورات در صفحه کلید. 751 00:36:53,290 --> 00:36:57,410 پس در واقع، هر برنامه نویس در به اندازه کافی راحتی با وب و HTTP 752 00:36:57,410 --> 00:37:01,690 می تواند هر چه اطلاعات او می خواهد ارسال به یک سرور بدون اعتبار. 753 00:37:01,690 --> 00:37:05,470 و اگر سرور خود را نیز چک کردن نیست، به آنها یک نام به من بدهد، است 754 00:37:05,470 --> 00:37:08,930 این در واقع یک آدرس ایمیل معتبر، انجام آنها خوابگاه را انتخاب کنید، شما ممکن است در نهایت 755 00:37:08,930 --> 00:37:12,800 تا قرار دادن ساختگی یا فقط داده های خالی به پایگاه داده خود را، که احتمالا 756 00:37:12,800 --> 00:37:15,450 است که نمی تواند چیز خوبی است اگر شما فرض شد آنجا بود. 757 00:37:15,450 --> 00:37:16,770 >> بنابراین، این واقعیت آزار دهنده است. 758 00:37:16,770 --> 00:37:19,890 اما به طور کلی، سمت سرویس گیرنده اعتبار سنجی بزرگ است. 759 00:37:19,890 --> 00:37:21,810 اما به این معنی کار دو برابر. 760 00:37:21,810 --> 00:37:25,970 اگر چه انجام این کار وجود داشته باشد مختلف وجود دارد کتابخانه ها، کتابخانه های جاوا اسکریپت برای 761 00:37:25,970 --> 00:37:28,830 به عنوان مثال، که تا این حد، بسیار کمتر از سردرد. 762 00:37:28,830 --> 00:37:31,940 و شما می توانید برخی از کد استفاده مجدد سمت سرور، سمت سرویس گیرنده. 763 00:37:31,940 --> 00:37:35,980 اما متوجه آن است که به طور معمول کار اضافی. 764 00:37:35,980 --> 00:37:36,415 آره. 765 00:37:36,415 --> 00:37:37,792 >> رسید بنابراین اگر ما فقط گفت: کمتر امن - 766 00:37:37,792 --> 00:37:39,205 >> DAVID J. مالان: [می خندد] 767 00:37:39,205 --> 00:37:39,680 اوه. 768 00:37:39,680 --> 00:37:43,105 کسانی که همیشه سخت تر آنهایی که به داوری. 769 00:37:43,105 --> 00:37:44,480 >> ROB BOWDEN: که پذیرفته شده است. 770 00:37:44,480 --> 00:37:44,810 >> DAVID J. مالان: چه؟ 771 00:37:44,810 --> 00:37:45,810 >> ROB BOWDEN: من این مشکل را ایجاد کرده است. 772 00:37:45,810 --> 00:37:46,735 این امر پذیرفته شده است. 773 00:37:46,735 --> 00:37:47,220 >> DAVID J. مالان: آره. 774 00:37:47,220 --> 00:37:47,830 >> رسید داغ. 775 00:37:47,830 --> 00:37:51,770 >> ROB BOWDEN: اما ما را قبول نمی کند برای یکی از اولین - 776 00:37:51,770 --> 00:37:53,630 خوب، چیزی است که ما به دنبال است چیزی شبیه به شما را ندارد 777 00:37:53,630 --> 00:37:55,270 برقراری ارتباط با سرور. 778 00:37:55,270 --> 00:37:58,355 ما را قبول نمی کند فقط سریع تر است. 779 00:37:58,355 --> 00:38:00,080 >> یک مدعو: چه در مورد آیا صفحه را نیست؟ 780 00:38:00,080 --> 00:38:00,430 >> ROB BOWDEN: بله. 781 00:38:00,430 --> 00:38:03,000 این پاسخ پذیرفته شده بود. 782 00:38:03,000 --> 00:38:06,300 >> DAVID J. مالان: هر چیزی که در آن ما احساس به احتمال زیاد بیش از احتمال آن بود 783 00:38:06,300 --> 00:38:09,780 که شما می دانست چه چیزی شما گفت، که یک سخت 784 00:38:09,780 --> 00:38:13,500 خط را به منظور جلب گاهی اوقات. 785 00:38:13,500 --> 00:38:16,000 با استفاده از لیست پیوندی به جای از یک آرایه برای حفظ 786 00:38:16,000 --> 00:38:17,590 لیستی از اعداد صحیح طبقه بندی شده اند. 787 00:38:17,590 --> 00:38:21,000 بنابراین حرکت صعودی ما اغلب استناد با مرتبط لیست است که انگیزه کل خود 788 00:38:21,000 --> 00:38:22,370 معرفی بود شما پویایی دریافت کنید. 789 00:38:22,370 --> 00:38:23,030 آنها می توانند رشد می کنند. 790 00:38:23,030 --> 00:38:23,950 آنها می توانند به کوچک شدن. 791 00:38:23,950 --> 00:38:27,370 بنابراین شما لازم نیست که از طریق hoops پرش در واقع حافظه بیشتر ایجاد 792 00:38:27,370 --> 00:38:28,140 با یک آرایه. 793 00:38:28,140 --> 00:38:30,310 یا شما لازم نیست که فقط می گویند، با عرض پوزش، کاربر. 794 00:38:30,310 --> 00:38:31,410 آرایه پر شده است. 795 00:38:31,410 --> 00:38:35,850 رشد پس پویا از لیست. 796 00:38:35,850 --> 00:38:37,210 حرکت نزولی، هر چند از لیست های پیوندی؟ 797 00:38:37,210 --> 00:38:40,916 798 00:38:40,916 --> 00:38:43,356 >> یک مدعو: این خطی است. 799 00:38:43,356 --> 00:38:45,800 جستجو در لیست پیوندی خطی است به جای آن از آنچه که شما وارد شوید. 800 00:38:45,800 --> 00:38:46,360 >> DAVID J. مالان: دقیقا. 801 00:38:46,360 --> 00:38:50,160 جستجو در یک لیست پیوندی خطی است، حتی اگر آن را طبقه بندی شده اند، چرا که شما می توانید 802 00:38:50,160 --> 00:38:53,170 تنها این عدد خرده نان دنبال، این اشاره گر، از همان آغاز از لیست 803 00:38:53,170 --> 00:38:53,570 به پایان. 804 00:38:53,570 --> 00:38:57,970 شما می توانید اهرم نمی دسترسی تصادفی و، در نتیجه، جستجوی دودویی، حتی اگر آن را 805 00:38:57,970 --> 00:39:00,740 طبقه بندی شده اند، که شما می توانید با یک آرایه. 806 00:39:00,740 --> 00:39:02,390 و همچنین هزینه های دیگری وجود دارد. 807 00:39:02,390 --> 00:39:02,966 آره. 808 00:39:02,966 --> 00:39:03,800 >> یک مدعو: حافظه ناکارآمد؟ 809 00:39:03,800 --> 00:39:04,130 >> DAVID J. مالان: آره. 810 00:39:04,130 --> 00:39:06,940 خوب، من لزوما می گویند ناکارآمد. 811 00:39:06,940 --> 00:39:10,110 اما به شما حافظه بیشتر هزینه، زیرا شما باید 32 بیت برای هر 812 00:39:10,110 --> 00:39:13,400 گره برای اشاره گر اضافی، در حداقل برای یک لیست به تنهایی در ارتباط است. 813 00:39:13,400 --> 00:39:16,660 در حال حاضر، اگر شما فقط ذخیره سازی اعداد صحیح و شما با اضافه کردن اشاره گر، که 814 00:39:16,660 --> 00:39:17,830 در واقع نوع غیر بدیهی. 815 00:39:17,830 --> 00:39:19,340 این دو برابر مقدار حافظه. 816 00:39:19,340 --> 00:39:22,330 اما در واقعیت، اگر شما در حال ذخیره سازی لیست پیوندی از ساختمانها که ممکن است 817 00:39:22,330 --> 00:39:25,540 8 بایت، 16 بایت، حتی بیشتر از آن، شاید کمتر 818 00:39:25,540 --> 00:39:26,500 از هزینه های حاشیه ای. 819 00:39:26,500 --> 00:39:28,320 اما این هزینه را با این وجود. 820 00:39:28,320 --> 00:39:31,880 بنابراین هر کدام از این که ام خوب به عنوان جنبه های منفی بوده است. 821 00:39:31,880 --> 00:39:32,110 >> 18. 822 00:39:32,110 --> 00:39:36,100 با استفاده از PHP به جای C به ارسال یک برنامه خط فرمان. 823 00:39:36,100 --> 00:39:41,890 بنابراین در اینجا، آن را اغلب سریع تر به استفاده از زبان هایی مانند PHP یا روبی و پایتون. 824 00:39:41,890 --> 00:39:43,700 شما فقط سرعت باز کردن تا یک ویرایشگر متن. 825 00:39:43,700 --> 00:39:45,900 شما از بسیاری از توابع بیشتری را در دسترس شما. 826 00:39:45,900 --> 00:39:49,325 PHP دارای سینک آشپزخانه از توابع، در حالی که در C، شما 827 00:39:49,325 --> 00:39:50,420 بسیار، بسیار کم است. 828 00:39:50,420 --> 00:39:53,820 در واقع، بچه ها می دانم که راه سخت که شما جداول هش ندارد. 829 00:39:53,820 --> 00:39:55,000 شما لیست شده اند مرتبط است. 830 00:39:55,000 --> 00:39:57,470 اگر می خواهید آن، شما را به خود را پیاده سازی آنها. 831 00:39:57,470 --> 00:40:00,950 >> بنابراین یک حرکت صعودی از PHP و یا واقعا زبان تفسیر سرعت است 832 00:40:00,950 --> 00:40:02,920 که با آن شما می توانید کد ارسال. 833 00:40:02,920 --> 00:40:06,660 اما حرکت نزولی، ما با این دید وقتی که من سرعت شلاق تا misspeller 834 00:40:06,660 --> 00:40:11,780 پیاده سازی در سخنرانی با استفاده از PHP، است که با استفاده از یک زبان تفسیر شده 835 00:40:11,780 --> 00:40:13,570 معمولا کندتر است. 836 00:40:13,570 --> 00:40:18,420 و ما آشکارا با دیدم که افزایش در زمان از 0.3 ثانیه به 3 837 00:40:18,420 --> 00:40:24,440 ثانیه، به دلیل تفسیر که در واقع اتفاق می افتد. 838 00:40:24,440 --> 00:40:27,060 >> صعودی دیگر این بود که شما لازم نیست به کامپایل. 839 00:40:27,060 --> 00:40:30,130 پس از آن نیز به سرعت توسعه اتفاقا، دلیل این که شما لازم نیست 840 00:40:30,130 --> 00:40:31,360 دو مرحله برای اجرای یک برنامه. 841 00:40:31,360 --> 00:40:32,140 شما تنها با یک داشته باشد. 842 00:40:32,140 --> 00:40:35,260 و به طوری که بسیار قانع کننده نیز هست. 843 00:40:35,260 --> 00:40:38,450 با استفاده از یک پایگاه داده SQL به جای یک فایل CSV به ذخیره داده ها. 844 00:40:38,450 --> 00:40:40,230 پایگاه داده بنابراین SQL برای pset7 استفاده می شود. 845 00:40:40,230 --> 00:40:42,060 فایل CSV شما چیز زیادی استفاده نمی کند. 846 00:40:42,060 --> 00:40:45,960 اما شما آن را به طور غیر مستقیم در pset7 به عنوان استفاده می شود به خوبی با صحبت کردن به یاهو امور مالی. 847 00:40:45,960 --> 00:40:49,330 >> اما CSV است درست مثل یک فایل اکسل اما فوق العاده ساده است، که در آن ستون ها 848 00:40:49,330 --> 00:40:54,010 فقط با کاما از هم در داخل demarked یک فایل متنی در غیر این صورت. 849 00:40:54,010 --> 00:40:56,740 و با استفاده از یک پایگاه داده SQL است کمی قانع کننده تر. 850 00:40:56,740 --> 00:41:00,060 این یک حرکت صعودی است، چرا که شما همه چیز مانند انتخاب و درج و حذف کنید. 851 00:41:00,060 --> 00:41:03,790 و شما، احتمالا، شاخص که خروجی زیر و پایگاه داده های دیگر، مانند 852 00:41:03,790 --> 00:41:07,510 اوراکل، ساخت را برای شما در حافظه، که به معنی انتخاب شما احتمالا نمی 853 00:41:07,510 --> 00:41:09,000 رفتن به بالا خطی به پایین. 854 00:41:09,000 --> 00:41:11,300 این در واقع برای رفتن به چیزی مانند جستجوی دودویی یا چیزی 855 00:41:11,300 --> 00:41:12,520 در روح مشابه. 856 00:41:12,520 --> 00:41:13,930 به طوری که آنها به طور کلی سریع تر است. 857 00:41:13,930 --> 00:41:16,040 >> اما حرکت نزولی این است که آن را فقط کار بیشتری است. 858 00:41:16,040 --> 00:41:16,730 این تلاش بیشتر است. 859 00:41:16,730 --> 00:41:18,140 شما باید درک پایگاه داده ها. 860 00:41:18,140 --> 00:41:18,940 شما باید آن را راه اندازی. 861 00:41:18,940 --> 00:41:20,840 شما نیاز به یک سرور برای اجرای که پایگاه داده در. 862 00:41:20,840 --> 00:41:22,750 شما نیاز به درک چگونه آن را پیکربندی کنید. 863 00:41:22,750 --> 00:41:24,930 بنابراین این ها فقط این انواع تجارت آف. 864 00:41:24,930 --> 00:41:27,860 در حالی که یک فایل CSV، شما می توانید ایجاد آن را با نرمافزاری gedit. 865 00:41:27,860 --> 00:41:28,770 و شما خوب به آن بروید. 866 00:41:28,770 --> 00:41:31,550 هیچ پیچیدگی فراتر از آن وجود دارد. 867 00:41:31,550 --> 00:41:34,870 >> با استفاده از درخت به جای یک جدول هش با زنجیری شدن این جداگانه برای ذخیره 868 00:41:34,870 --> 00:41:37,490 فرهنگ لغت از کلمات یادآور از pset5. 869 00:41:37,490 --> 00:41:42,480 بنابراین تلاش می کند حرکت صعودی، در تئوری حداقل، چه است؟ 870 00:41:42,480 --> 00:41:46,380 زمان ثابت، حداقل اگر شما هش کردن در هر فرد 871 00:41:46,380 --> 00:41:48,990 حروف در یک کلمه، مثل شما ممکن است برای pset5 داشته باشد. 872 00:41:48,990 --> 00:41:52,720 که ممکن است پنج رشته هش، شش کردند اگر پنج یا شش وجود دارد 873 00:41:52,720 --> 00:41:53,900 حروف کلمه را. 874 00:41:53,900 --> 00:41:54,580 و این خیلی خوب است. 875 00:41:54,580 --> 00:41:56,910 و اگر حد بالا وجود دارد چگونه طولانی کلمات خود ممکن است، که 876 00:41:56,910 --> 00:41:59,320 زمان در واقع باقی ثابت است. 877 00:41:59,320 --> 00:42:05,180 >> در حالی که یک جدول هش را با جداگانه زنجیری شدن، این مشکل وجود دارد که با 878 00:42:05,180 --> 00:42:09,070 نوع ساختمان داده است که عملکرد الگوریتم های خود را معمولا 879 00:42:09,070 --> 00:42:12,700 بستگی دارد تعدادی از چیزهایی در حال حاضر در ساختار داده ها. 880 00:42:12,700 --> 00:42:15,660 و این قطعا مورد با زنجیره ای، که به موجب آن چیزهای بیشتری شما را 881 00:42:15,660 --> 00:42:18,800 به یک جدول هش، دیگر آن زنجیر بروید، که به معنی در بدترین 882 00:42:18,800 --> 00:42:21,960 مورد، چیزی که شما ممکن است به دنبال است تمام راه را در پایان یک 883 00:42:21,960 --> 00:42:26,000 از آن زنجیره، که به طور موثر devolves به چیزی خطی. 884 00:42:26,000 --> 00:42:29,450 >> در حال حاضر، در عمل، آن می تواند کاملا است این مورد است که یک جدول هش با 885 00:42:29,450 --> 00:42:32,820 زنجیره های سریع تر از یک متناظر است پیاده سازی درخت. 886 00:42:32,820 --> 00:42:35,570 اما این به دلایل مختلف، در میان که تلاش می کند با استفاده از تعداد زیادی از کل 887 00:42:35,570 --> 00:42:39,240 حافظه است که می تواند، در واقع، همه چیز آرام پایین، دلیل این که شما می کنید خوب نیست 888 00:42:39,240 --> 00:42:42,410 مزایای چیزی به نام ذخیره، که در آن چیزهایی که به هم نزدیک هستند 889 00:42:42,410 --> 00:42:45,420 در حافظه قابل دسترس است اغلب به سرعت بیشتر. 890 00:42:45,420 --> 00:42:48,180 و گاهی اوقات شما می توانید آمد تا با یک تابع هش واقعا خوب است. 891 00:42:48,180 --> 00:42:51,060 حتی اگر شما به هدر یک بیت از حافظه، شما ممکن است، در واقع، قادر به 892 00:42:51,060 --> 00:42:54,430 پیدا کردن چیزهایی سریع و نه به عنوان بد خطی. 893 00:42:54,430 --> 00:42:58,410 >> بنابراین در کوتاه مدت بود، وجود دارد لزوما با هر یک از این یک یا حتی دو 894 00:42:58,410 --> 00:43:00,050 چیز خاصی که ما به دنبال. 895 00:43:00,050 --> 00:43:03,080 واقعا هر چیزی متقاعد کننده به عنوان یک حرکت صعودی و نزولی 896 00:43:03,080 --> 00:43:04,800 به طور کلی گرفتار چشم ما. 897 00:43:04,800 --> 00:43:11,840 >> ROB BOWDEN: بنابراین برای حرکت صعودی، ما به خودی خود نه شرایط "سریع تر است." شما 898 00:43:11,840 --> 00:43:14,540 حال می گویند چیزی در مورد آن. 899 00:43:14,540 --> 00:43:17,910 حتی اگر شما گفت: به لحاظ نظری سریع تر، ما می دانستیم که شما نوع درک 900 00:43:17,910 --> 00:43:19,470 که این 0، از مجموع 1. 901 00:43:19,470 --> 00:43:22,820 و جدول هش، در تئوری، است 0، از مجموع 1 نیست. 902 00:43:22,820 --> 00:43:26,550 با اشاره به هر چیزی در مورد زمان اجرا به طور کلی شما نقاط است. 903 00:43:26,550 --> 00:43:32,640 اما "سریع تر،" بسیاری از راه حل در هیئت مدیره بزرگ است که تلاش می کند بودند 904 00:43:32,640 --> 00:43:34,990 عینی آهسته تر از راه حل های که جداول هش بود. 905 00:43:34,990 --> 00:43:37,250 بنابراین سریع تر به خودی خود واقعا درست نیست. 906 00:43:37,250 --> 00:43:41,550 907 00:43:41,550 --> 00:43:44,380 >> DAVID J. مالان: دم د DOM DOM. 908 00:43:44,380 --> 00:43:46,686 احتمالا من تنها کسی که متوجه این که چگونه است که به قرار 909 00:43:46,686 --> 00:43:47,500 توان تلفظ، درست است؟ 910 00:43:47,500 --> 00:43:50,400 >> ROB BOWDEN: من تا به حال در واقع هیچ ایده. 911 00:43:50,400 --> 00:43:51,650 >> DAVID J. مالان: این ساخته شده حس در سر من. 912 00:43:51,650 --> 00:43:53,830 913 00:43:53,830 --> 00:43:57,580 >> ROB BOWDEN: من برای انجام این کار است. 914 00:43:57,580 --> 00:43:58,020 OK. 915 00:43:58,020 --> 00:44:04,243 پس این یکی که در آن شما را مجبور به قرعه کشی است نمودار شبیه به شما ممکن 916 00:44:04,243 --> 00:44:06,040 در امتحانات گذشته دیده می شود. 917 00:44:06,040 --> 00:44:12,200 بنابراین اجازه دهید فقط به این نگاه کنید. 918 00:44:12,200 --> 00:44:18,170 پس از گره HTML، ما دو کودکان، سر و بدن است. 919 00:44:18,170 --> 00:44:20,570 بنابراین شعبه ما - سر و بدن. 920 00:44:20,570 --> 00:44:22,280 سر تا به تگ عنوان. 921 00:44:22,280 --> 00:44:23,710 بنابراین ما باید یک عنوان. 922 00:44:23,710 --> 00:44:28,450 >> در حال حاضر، آن چیزی است که بسیاری از مردم فراموش این است که این گره های متن 923 00:44:28,450 --> 00:44:30,430 عناصر در این درخت. 924 00:44:30,430 --> 00:44:36,260 بنابراین در اینجا ما اتفاق می افتد به آنها را جلب به عنوان بیضی به آنها را متمایز از این 925 00:44:36,260 --> 00:44:37,380 انواع گره. 926 00:44:37,380 --> 00:44:41,450 اما آگهی همچنین در اینجا ما باید بالا، متوسط، و پایین پایان خواهد رسید تا بودن 927 00:44:41,450 --> 00:44:42,560 گره های متن. 928 00:44:42,560 --> 00:44:46,250 بنابراین فراموش کردن آن تا حدودی بود یک اشتباه رایج است. 929 00:44:46,250 --> 00:44:48,770 >> بدن دارای سه فرزند - این سه divs. 930 00:44:48,770 --> 00:44:53,340 بنابراین دیو، دیو، دیو و سپس متن کودکان گره از آن divs. 931 00:44:53,340 --> 00:44:55,900 که تقریبا آن را برای این سوالات. 932 00:44:55,900 --> 00:44:57,860 >> DAVID J. مالان: و این ارزش ندارد، حتی اگر ما در این ساکن نیست 933 00:44:57,860 --> 00:45:01,040 جزئیات در آن زمان ما در صرف جاوا اسکریپت، که منظور می کند، در 934 00:45:01,040 --> 00:45:02,290 واقع، موضوع از لحاظ فنی. 935 00:45:02,290 --> 00:45:06,330 بنابراین اگر سر می آید قبل از بدن در HTML، سپس آن را باید به نظر می رسد 936 00:45:06,330 --> 00:45:08,860 سمت چپ بدن در DOM واقعی. 937 00:45:08,860 --> 00:45:12,265 که او است، به طور کلی، فقط FYI، چیزی به نام نظم سند، که در آن 938 00:45:12,265 --> 00:45:13,260 مهم. 939 00:45:13,260 --> 00:45:17,470 و اگر اجرا شد تجزیه کننده، برنامه ای است که بار خوانده شده HTML در ساختمان 940 00:45:17,470 --> 00:45:20,960 تا درخت در حافظه، به صداقت، که به طور مستقیم احتمالا آنچه شما 941 00:45:20,960 --> 00:45:24,720 انجام هر حال - بالا به پایین، از چپ به راست. 942 00:45:24,720 --> 00:45:26,116 >> ROB BOWDEN: سوالات در آن؟ 943 00:45:26,116 --> 00:45:29,080 944 00:45:29,080 --> 00:45:30,000 باید از یک بعد من انجام دهید؟ 945 00:45:30,000 --> 00:45:32,380 >> DAVID J. مالان: مطمئنا. 946 00:45:32,380 --> 00:45:33,810 >> ROB BOWDEN: OK. 947 00:45:33,810 --> 00:45:39,320 بنابراین این بافر تاخت و تاز است سوال حمله. 948 00:45:39,320 --> 00:45:43,740 نکته اصلی به رسمیت شناختن در اینجا این است، خوب، چگونه ممکن است یک ترفند دشمن 949 00:45:43,740 --> 00:45:46,170 این برنامه به اجرای کد های دلخواه؟ 950 00:45:46,170 --> 00:45:51,860 بنابراین argv1، خط فرمان اول بحث در این برنامه، که می تواند 951 00:45:51,860 --> 00:45:53,920 خودسرانه طولانی است. 952 00:45:53,920 --> 00:45:59,160 اما در اینجا ما با استفاده از memcpy برای کپی argv1، که در اینجا نوار است. 953 00:45:59,160 --> 00:46:00,165 ما آن را عبور به عنوان آرگومان. 954 00:46:00,165 --> 00:46:02,050 و پس از آن به مصرف در نوار نام. 955 00:46:02,050 --> 00:46:08,040 >> بنابراین ما memcpying نوار به این بافر ج. 956 00:46:08,040 --> 00:46:09,400 چگونه بسیاری از بایت کپی می کنیم؟ 957 00:46:09,400 --> 00:46:14,040 خب با این حال بسیاری بایت نوار به اتفاق می افتد با استفاده از طول که استدلال. 958 00:46:14,040 --> 00:46:17,930 اما C تنها 12 بایت گسترده است. 959 00:46:17,930 --> 00:46:22,280 بنابراین اگر ما نوع یک آرگومان خط فرمان که بیش از 12 کلمه در ادامه متن ما 960 00:46:22,280 --> 00:46:25,470 رفتن به سرریز این بافر خاص است. 961 00:46:25,470 --> 00:46:31,000 در حال حاضر، چگونه ممکن است دشمن فریب برنامه به اجرای کد های دلخواه؟ 962 00:46:31,000 --> 00:46:34,910 >> بنابراین به یاد داشته باشید که در اینجا اصلی تماس تولی. 963 00:46:34,910 --> 00:46:37,340 و به این ترتیب پس از آن تماس های اصلی غذایی 964 00:46:37,340 --> 00:46:40,408 اجازه دهید این قرعه کشی. 965 00:46:40,408 --> 00:46:44,720 966 00:46:44,720 --> 00:46:46,990 بنابراین ما باید پشته ما. 967 00:46:46,990 --> 00:46:49,090 و اصلی دارای یک قاب پشته در پایین. 968 00:46:49,090 --> 00:46:51,860 969 00:46:51,860 --> 00:46:53,250 در برخی موارد، تماس های اصلی غذایی 970 00:46:53,250 --> 00:46:55,390 خوب، بلافاصله، تماس های اصلی غذایی 971 00:46:55,390 --> 00:46:57,130 و به این ترتیب تولی می شود قاب پشته خود را دارد. 972 00:46:57,130 --> 00:46:59,650 973 00:46:59,650 --> 00:47:02,220 >> در حال حاضر، در برخی از نقطه، تولی است که به بازگشت. 974 00:47:02,220 --> 00:47:06,810 و بازده غذ رفت، ما نیاز به دانستن در چه خط از کد در داخل از ما اصلی 975 00:47:06,810 --> 00:47:10,610 به منظور شناخت بود که در آن ما باید در اصلی از سر گرفت. 976 00:47:10,610 --> 00:47:13,100 ما می توانیم تولی از یک کل تماس بگیرید دسته از مکان های مختلف. 977 00:47:13,100 --> 00:47:14,620 چگونه ما می دانیم که در آن به بازگشت؟ 978 00:47:14,620 --> 00:47:16,460 خب، ما نیاز به ذخیره است که در جایی. 979 00:47:16,460 --> 00:47:23,010 >> بنابراین در جایی درست در اینجا، ما ذخیره که در آن ما باید به یک بار بازگشت 980 00:47:23,010 --> 00:47:24,070 بازده غذایی 981 00:47:24,070 --> 00:47:26,350 و این آدرس برگشت است. 982 00:47:26,350 --> 00:47:30,490 پس چگونه دشمن ممکن است امکان استفاده این واقعیت این است که 983 00:47:30,490 --> 00:47:37,550 این بافر C ذخیره شده است، اجازه دهید می گویند، در اینجا C است. 984 00:47:37,550 --> 00:47:39,690 بنابراین ما 12 بایت برای ج کردم. 985 00:47:39,690 --> 00:47:40,540 این ج است. 986 00:47:40,540 --> 00:47:43,030 و این حلقه پشته تولی است. 987 00:47:43,030 --> 00:47:49,970 بنابراین اگر کاربر مخرب وارد تر بایت از 12 و یا آنها را وارد کنید یک دستور 988 00:47:49,970 --> 00:47:54,570 خط استدلال که دیگر از 12 حرف، پس از آن ما قصد داریم به 989 00:47:54,570 --> 00:47:57,540 سرریز این بافر شده است. 990 00:47:57,540 --> 00:47:59,910 >> ما می توانیم ادامه دهم. 991 00:47:59,910 --> 00:48:02,220 و در برخی از نقطه، ما دور به اندازه کافی است که ما شروع 992 00:48:02,220 --> 00:48:05,120 به جای نوشتن این آدرس بازگشت. 993 00:48:05,120 --> 00:48:08,310 بنابراین زمانی که ما بازنویسی آدرس برگشت، این بدان معنی است که هنگامی که تولی 994 00:48:08,310 --> 00:48:14,220 می گرداند، ما در حال بازگشت به هر کجا که کاربر مخرب است گفتن از آن به 995 00:48:14,220 --> 00:48:19,490 هر آنچه که ارزش آن وارد شده، و با هر شخصیت های کاربر وارد شده است. 996 00:48:19,490 --> 00:48:24,320 و به این ترتیب اگر کاربر مخرب است که به خصوص باهوش، او می تواند این را 997 00:48:24,320 --> 00:48:29,255 بازگشت به جایی در printDef تابع و یا در جایی در malloc 998 00:48:29,255 --> 00:48:31,830 تابع، فقط در هر نقطه دلخواه. 999 00:48:31,830 --> 00:48:38,420 >> اما حتی بیشتر هوشمندانه است اگر او کاربر بازگشت به حق در اینجا. 1000 00:48:38,420 --> 00:48:41,920 و پس از آن شما شروع به اجرای این به عنوان خط کد. 1001 00:48:41,920 --> 00:48:46,610 پس در آن نقطه، کاربر می تواند وارد هر آنچه که او را به این منطقه می خواهد. 1002 00:48:46,610 --> 00:48:52,210 و او تا به کنترل کامل بیش از برنامه شما. 1003 00:48:52,210 --> 00:48:53,460 سوالات در آن؟ 1004 00:48:53,460 --> 00:48:56,380 1005 00:48:56,380 --> 00:49:00,970 بنابراین سوال بعدی کامل است پیاده سازی مجدد مواد غذایی به گونه ای 1006 00:49:00,970 --> 00:49:02,620 که این دیگر آسیب پذیر است. 1007 00:49:02,620 --> 00:49:03,870 >> پس از دو راه وجود دارد شما می توانید از این انجام داده اند. 1008 00:49:03,870 --> 00:49:10,900 1009 00:49:10,900 --> 00:49:13,330 ما هنوز ج تنها بودن طول 12. 1010 00:49:13,330 --> 00:49:16,480 شما می توانید این تغییر به عنوان بخشی از راه حل خود را. 1011 00:49:16,480 --> 00:49:18,930 ما همچنین اضافه شده یک چک به مطمئن شوید که نوار بود تهی نیست. 1012 00:49:18,930 --> 00:49:24,460 اگر چه شما لازم نیست که برای اعتبار کامل. 1013 00:49:24,460 --> 00:49:27,690 بنابراین ما در حال چک کردن اول طول رشته از نوار. 1014 00:49:27,690 --> 00:49:31,650 اگر آن را بزرگتر از 12، پس از آن در واقع انجام این کار کپی نیست. 1015 00:49:31,650 --> 00:49:33,010 به طوری که یکی از راه های اصلاح آن است. 1016 00:49:33,010 --> 00:49:36,750 >> یکی دیگر از راه اصلاح آن است به جای داشتن C تنها در طول 12 است، آن را داشته باشد 1017 00:49:36,750 --> 00:49:39,310 از strlen طول (نوار) ​​است. 1018 00:49:39,310 --> 00:49:43,370 یکی دیگر از راه اصلاح آن است در واقع تنها بازگشت. 1019 00:49:43,370 --> 00:49:46,690 بنابراین اگر شما به تازگی بدست از تمام شدن از شر این، اگر شما فقط همه حذف شده بود 1020 00:49:46,690 --> 00:49:51,830 خط از کد، شما را بدست اعتبار کامل، از این تابع 1021 00:49:51,830 --> 00:49:54,150 در واقع هر چیزی انجام نمی شود. 1022 00:49:54,150 --> 00:49:57,650 این کپی کردن از خط فرمان استدلال به برخی از آرایه در 1023 00:49:57,650 --> 00:49:59,960 قاب پشته محلی آن است. 1024 00:49:59,960 --> 00:50:01,310 و پس از آن چیزی که از بازگشت است. 1025 00:50:01,310 --> 00:50:04,020 و هر آنچه در آن انجام شده از بین رفته است. 1026 00:50:04,020 --> 00:50:09,740 پس از بازگشت نیز کافی بود راه گرفتن اعتبار کامل. 1027 00:50:09,740 --> 00:50:13,425 >> DAVID J. مالان: کاملا روح نشده از سوال اما در قابل قبول 1028 00:50:13,425 --> 00:50:15,580 تنظیمات با این وجود. 1029 00:50:15,580 --> 00:50:18,260 >> ROB BOWDEN: سوالات مطرح شده در هر یک از آن؟ 1030 00:50:18,260 --> 00:50:22,270 آن چیزی است که شما حداقل نیاز به کامپایل کد. 1031 00:50:22,270 --> 00:50:24,810 بنابراین حتی اگر از نظر فنی شما نمی آسیب پذیر در صورت فعال می کند 1032 00:50:24,810 --> 00:50:29,130 کامپایل، ما قبول نمی. 1033 00:50:29,130 --> 00:50:31,350 سوالات؟ 1034 00:50:31,350 --> 00:50:33,320 OK. 1035 00:50:33,320 --> 00:50:34,580 >> DAVID J. مالان: آیا شما می خواهید می گویند این عنوان؟ 1036 00:50:34,580 --> 00:50:37,230 >> ROB BOWDEN: شماره 1037 00:50:37,230 --> 00:50:40,470 >> DAVID J. مالان: بنابراین در این یکی، این هر دو خبر خوب و خبر بد بود. 1038 00:50:40,470 --> 00:50:43,870 این است که به معنای واقعی کلمه مشکل مشابه به عنوان اولین مسابقه. 1039 00:50:43,870 --> 00:50:46,140 و این تقریبا همان مشکل به عنوان pset1. 1040 00:50:46,140 --> 00:50:49,980 اما آن را عمدا ساده شده باشد هرم ساده، که می تواند 1041 00:50:49,980 --> 00:50:52,330 حل با کمی تکرار ساده. 1042 00:50:52,330 --> 00:50:55,680 و واقعا، چیزی است که ما در گرفتن شد در اینجا بود خیلی منطق نیست، 1043 00:50:55,680 --> 00:50:58,100 چرا که احتمالا، این نقطه، شما راحت تر از شما بودند 1044 00:50:58,100 --> 00:51:01,850 در هفته با برای حلقه ها و یا چرا حلقه، اما واقعا به کسی را دست انداختن از هم جدا که 1045 00:51:01,850 --> 00:51:04,790 شما کمی راحت با هستی مفهوم است که PHP فقط در مورد چه چیزی نیست 1046 00:51:04,790 --> 00:51:05,290 برنامه نویسی. 1047 00:51:05,290 --> 00:51:07,820 این در واقع می تواند به عنوان زبان مورد استفاده برای نوشتن برنامه های خط فرمان. 1048 00:51:07,820 --> 00:51:10,060 >> و در واقع، این چیزی است که ما در تلاش بودند توجه شما را به. 1049 00:51:10,060 --> 00:51:12,060 این یک برنامه PHP خط فرمان است. 1050 00:51:12,060 --> 00:51:16,690 بنابراین کد C در اینجا، در حالی که درست در C، برای PHP درست نیست. 1051 00:51:16,690 --> 00:51:17,940 اما کد واقعا همان است. 1052 00:51:17,940 --> 00:51:21,720 اگر شما مقایسه راه حل برای امتحان 0 در برابر امتحان 1، پیدا خواهید کرد که 1053 00:51:21,720 --> 00:51:25,630 آن تقریبا یکسان است، به جز برخی از علائم دلار و برای 1054 00:51:25,630 --> 00:51:27,250 عدم وجود نوع داده. 1055 00:51:27,250 --> 00:51:31,720 به طور خاص، اگر ما نگاهی به اینجا، شما خواهید دید که ما تکرار، در این 1056 00:51:31,720 --> 00:51:33,730 مورد، از 1 تا 7 از طریق. 1057 00:51:33,730 --> 00:51:34,910 >> ما می تواند آن را انجام می شود 0 صفحه. 1058 00:51:34,910 --> 00:51:37,320 اما گاهی اوقات، من فکر می کنم آن را فقط روانی آسان تر به در مورد همه چیز فکر می کنم 1059 00:51:37,320 --> 00:51:38,200 از 1 تا 7. 1060 00:51:38,200 --> 00:51:40,300 اگر می خواهید یک بلوک، پس از آن دو بلوک، پس از آن سه، پس از آن 1061 00:51:40,300 --> 00:51:41,770 نقطه، نقطه، نقطه هفت. 1062 00:51:41,770 --> 00:51:45,960 ما j را به 1 مقدار دهی اولیه و سپس شمارش تا من. 1063 00:51:45,960 --> 00:51:48,150 و همه چیز در اینجا است در غیر این صورت یکسان. 1064 00:51:48,150 --> 00:51:49,790 اما در خور توجه داشته باشید چند چیز. 1065 00:51:49,790 --> 00:51:53,230 ما به شما این دو خط، اولین بار از این را یک، goofily به عنوان یک امر مورد علاقه نام 1066 00:51:53,230 --> 00:51:54,560 برای انفجار شدید. 1067 00:51:54,560 --> 00:51:58,770 و این فقط مسیر را تعیین کند، پوشه، که در آن یک برنامه می تواند 1068 00:51:58,770 --> 00:52:02,160 متوجه شد که شما می خواهید به استفاده از به تفسیر این فایل. 1069 00:52:02,160 --> 00:52:04,710 >> و سپس در خط بعد از آن، از البته، به معنی وارد کنید حالت PHP. 1070 00:52:04,710 --> 00:52:07,740 و خط در پایین به معنی حالت خروج PHP. 1071 00:52:07,740 --> 00:52:09,740 و این کار، به طور کلی، با زبان های تفسیر شده. 1072 00:52:09,740 --> 00:52:14,370 این نوع از آزار دهنده اگر شما ارسال برنامه در یک فایل با نام foo.php. 1073 00:52:14,370 --> 00:52:17,320 و پس از آن به کاربران شما باید فقط به یاد داشته باشید، OK، برای اجرای این برنامه، I 1074 00:52:17,320 --> 00:52:22,320 را به نوع "foo.php فضای پی اچ پی." نوع از آزار دهنده اگر هیچ چیز دیگری. 1075 00:52:22,320 --> 00:52:25,270 و آن را نیز نشان می دهد که برنامه های خود را در PHP است که تمام نمی شود نوشته شده است 1076 00:52:25,270 --> 00:52:27,060 که روشن برای کاربر. 1077 00:52:27,060 --> 00:52:30,100 >> بنابراین شما می توانید. پی اچ پی به کلی حذف به یاد بیاورید از سخنرانی. 1078 00:52:30,100 --> 00:52:35,690 و شما در واقع می توانید انجام دهید. / تولی اگر شما آن را با ساختن آن chmodded ام 1079 00:52:35,690 --> 00:52:36,500 اجرایی. 1080 00:52:36,500 --> 00:52:39,630 بنابراین سطح دسترسی + X تولی را انجام داده اند که. 1081 00:52:39,630 --> 00:52:41,460 و اگر شما نیز ابتکار در اینجا اضافه کنید. 1082 00:52:41,460 --> 00:52:45,320 اما در واقع، مشکل در گرفتن چاپ کردن چیزی شبیه به این. 1083 00:52:45,320 --> 00:52:51,100 بدون HTML، هیچ C-کد قطعا، فقط برخی از PHP. 1084 00:52:51,100 --> 00:52:54,100 بنابراین میلو پس از آن در مشکل 25 بازگشت. 1085 00:52:54,100 --> 00:52:58,050 و در 25، شما به شرح زیر داده شد کد اسکلت، که یک 1086 00:52:58,050 --> 00:52:59,730 صفحه وب خیلی ساده است. 1087 00:52:59,730 --> 00:53:04,230 و بخش آبدار HTML عاقلانه پایین بود در اینجا، جایی که ما در داخل از بدن 1088 00:53:04,230 --> 00:53:09,160 یک فرم است که دارای ID منحصر به فرد از ورودی ها که در داخل آن دو ورودی، یکی بود 1089 00:53:09,160 --> 00:53:11,950 با این ایده از نام، یک با یک ایده را فشار دهید. 1090 00:53:11,950 --> 00:53:14,240 >> اولین نوع متن بود، دوم از نوع ارسال کنید. 1091 00:53:14,240 --> 00:53:16,930 و بنابراین ما به شما داد، در واقع، بیش مواد تشکیل دهنده از شما مورد نیاز، فقط تا 1092 00:53:16,930 --> 00:53:19,230 شما بچه ها گزینه های که با آن حال برای حل این مشکل. 1093 00:53:19,230 --> 00:53:21,130 شما به شدت نیاز ندارد همه این شناسه. 1094 00:53:21,130 --> 00:53:23,580 اما آن را به شما اجازه می دهد برای حل آن را در راه های مختلف. 1095 00:53:23,580 --> 00:53:27,050 و در بالا، توجه کنید که هدف این بود به ماشه 1096 00:53:27,050 --> 00:53:27,960 یک پنجره شبیه به این - 1097 00:53:27,960 --> 00:53:28,780 خوش آمدید، میلو - 1098 00:53:28,780 --> 00:53:31,270 به ظاهر در مرورگر با استفاده از فوق العاده ساده است، اگر 1099 00:53:31,270 --> 00:53:33,190 زشت نیست، عملکرد هشدار. 1100 00:53:33,190 --> 00:53:37,480 و به این ترتیب، در نهایت، این جوش پایین مفهومی به نوعی برای گوش دادن 1101 00:53:37,480 --> 00:53:41,290 ارسالی از شکل های سمت سرویس گیرنده ، نه سمت سرور، به نحوی 1102 00:53:41,290 --> 00:53:45,640 در پاسخ به که تسلیم شده گرفتن ارزش است که کاربر تایپ 1103 00:53:45,640 --> 00:53:50,120 در قسمت نام، و سپس نمایش آن را در بدن از یک هشدار. 1104 00:53:50,120 --> 00:53:53,460 >> بنابراین یکی از راه های که شما می توانید انجام این کار با جی کوئری، که به نظر می رسد کمی 1105 00:53:53,460 --> 00:53:56,880 نحوی در ابتدا گیج کننده. 1106 00:53:56,880 --> 00:54:00,760 شما می توانید این کار را با کد DOM خالص انجام - document.getelement شده توسط ID. 1107 00:54:00,760 --> 00:54:02,530 اما اجازه دهید نگاهی به این نسخه. 1108 00:54:02,530 --> 00:54:05,110 من یک زن و شوهر از مهم خط اول. 1109 00:54:05,110 --> 00:54:09,460 بنابراین، ما باید این خط است، که مشابه به آنچه که شما ممکن است را دیده اند، 1110 00:54:09,460 --> 00:54:13,830 در، به اعتقاد من، form2.html از کلاس در هفته 9. 1111 00:54:13,830 --> 00:54:16,960 و این فقط و گفت: اجرا کد زیر را زمانی که 1112 00:54:16,960 --> 00:54:18,430 سند آماده است. 1113 00:54:18,430 --> 00:54:21,770 این مهم است که تنها به خاطر صفحات HTML هستند بالا به عنوان خوانده شده 1114 00:54:21,770 --> 00:54:23,280 پایین، چپ به راست. 1115 00:54:23,280 --> 00:54:27,910 >> و در نتیجه، اگر شما سعی می کنید برای انجام این کار چیزی در کد بالا در اینجا به برخی از DOM 1116 00:54:27,910 --> 00:54:31,560 عنصر، برخی از تگ HTML، که پایین در اینجا، شما در حال انجام آن خیلی زود، 1117 00:54:31,560 --> 00:54:34,220 دلیل این است که حتی شده در حافظه به عنوان خوانده شده. 1118 00:54:34,220 --> 00:54:37,740 پس با گفتن این document.ready در خط، ما در حال گفت، 1119 00:54:37,740 --> 00:54:39,040 در اینجا برخی از کد، مرورگر است. 1120 00:54:39,040 --> 00:54:42,440 اما این کار را تا زمانی که تمام اجرا نمی سند آماده است، که DOM است 1121 00:54:42,440 --> 00:54:44,320 درخت در حافظه وجود دارد. 1122 00:54:44,320 --> 00:54:47,110 این یکی کمی بیشتر ساده، اگر نحوی 1123 00:54:47,110 --> 00:54:51,890 کمی متفاوت است، که در آن من گفت، با شتاب این عنصر HTML است که منحصر به فرد 1124 00:54:51,890 --> 00:54:53,560 شناسه ورودی است. 1125 00:54:53,560 --> 00:54:56,220 این چیزی است که از تگ هش است نشان دهنده، ID منحصر به فرد. 1126 00:54:56,220 --> 00:54:58,070 و سپس من تماس. ارسال کنید. 1127 00:54:58,070 --> 00:55:01,660 >> بنابراین. ارسال در اینجا یک تابع است، در غیر این صورت شناخته شده به عنوان یک روش، که 1128 00:55:01,660 --> 00:55:05,850 در داخل این شی در دست چپ سمت وجود دارد که من هم برجسته نیست. 1129 00:55:05,850 --> 00:55:08,990 بنابراین اگر شما از ورودی فکر می کنم به عنوان یک شی در حافظه - و در واقع در آن است. 1130 00:55:08,990 --> 00:55:10,440 این یک گره در درخت است - 1131 00:55:10,440 --> 00:55:16,580 . ارائه ابزار در زمانی که این فرم با این ID است را مشاهده کنید، اجرا 1132 00:55:16,580 --> 00:55:17,700 کد زیر. 1133 00:55:17,700 --> 00:55:20,290 من اهمیتی نمی دهند چه نام تابع است که من اجرا. 1134 00:55:20,290 --> 00:55:23,760 بنابراین در اینجا من با استفاده از، مانند قبل، چه به نام تابع لامبدا و یا 1135 00:55:23,760 --> 00:55:24,720 تابع بی نام. 1136 00:55:24,720 --> 00:55:27,640 این در همه فکری ندارد جالب دیگر از آن هیچ نام، 1137 00:55:27,640 --> 00:55:30,220 که خوب اگر شما تنها هستید همیشه رفتن به آن را یک بار. 1138 00:55:30,220 --> 00:55:34,490 و در داخل وجود دارد من در واقع رسیدگی ارائه فرم. 1139 00:55:34,490 --> 00:55:36,810 من برای اولین بار یک متغیر اعلان به نام ارزش. 1140 00:55:36,810 --> 00:55:40,610 و پس از آن چه اثر از این است برجسته بخش در حال حاضر اینجا؟ 1141 00:55:40,610 --> 00:55:44,755 چه که کار را در سطح بالا برای من؟ 1142 00:55:44,755 --> 00:55:48,539 >> رسید این می شود ارزش که کاربر در HTML زیر را نداشت. 1143 00:55:48,539 --> 00:55:50,920 این می شود که ID و پس از آن پیدا کرد که ارزش آن. 1144 00:55:50,920 --> 00:55:51,590 >> DAVID J. مالان: دقیقا. 1145 00:55:51,590 --> 00:55:54,300 این کاغذ برداشته گره، که منحصر به فرد شناسه نام است. 1146 00:55:54,300 --> 00:55:56,900 این می شود ارزش آن، که است، احتمالا، آنچه را که کاربر 1147 00:55:56,900 --> 00:55:58,190 و یا او خودش تایپ. 1148 00:55:58,190 --> 00:56:01,020 و سپس آن را ذخیره می کند که در متغیر به نام ارزش. 1149 00:56:01,020 --> 00:56:03,720 همانطور که به کنار، شما نیز می توانند داشته باشند انجام این کمی متفاوت است. 1150 00:56:03,720 --> 00:56:09,250 در مجموع با انجام کاری قابل قبول ارزش دروغ ور می شود 1151 00:56:09,250 --> 00:56:10,500 document.getElementById. 1152 00:56:10,500 --> 00:56:12,860 1153 00:56:12,860 --> 00:56:15,460 و این دلیل آن را کمی خسته کننده از jQuery استفاده نیست. 1154 00:56:15,460 --> 00:56:16,710 "نام". ارزش. 1155 00:56:16,710 --> 00:56:18,330 1156 00:56:18,330 --> 00:56:19,620 بنابراین کاملا قابل قبول است. 1157 00:56:19,620 --> 00:56:22,770 روش های مختلف برای انجام این کار. جی کوئری فقط گرایش به کمی موجز تر و 1158 00:56:22,770 --> 00:56:25,230 قطعا محبوب تر در میان برنامه نویسان. 1159 00:56:25,230 --> 00:56:27,590 >> در حال حاضر، من انجام کمی از سلامت عقل بررسی کنید، چرا که در مشکل 1160 00:56:27,590 --> 00:56:30,820 بیانیه ما به صراحت گفت: اگر کاربر هنوز تایپ نشده خود را 1161 00:56:30,820 --> 00:56:32,580 نام، به هشدار را نشان نمی دهد. 1162 00:56:32,580 --> 00:56:35,390 اما شما می توانید برای که تنها با بررسی، برای چک کردن رشته خالی برای 1163 00:56:35,390 --> 00:56:37,850 نقل قول، نقل قول را تمام کردن اگر وجود دارد هیچ چیزی در واقع وجود دارد. 1164 00:56:37,850 --> 00:56:40,880 اما اگر آن را به نقل قول، نقل قول را تمام کردن برابر نیست، من می خواهم به هشدار تماس بگیرید. 1165 00:56:40,880 --> 00:56:45,610 و قسمت جالب اینجا است که ما با استفاده از اپراتور به علاوه، که 1166 00:56:45,610 --> 00:56:48,130 آنچه در جاوا اسکریپت؟ 1167 00:56:48,130 --> 00:56:48,740 الحاق. 1168 00:56:48,740 --> 00:56:50,690 بنابراین آن را مانند PHPs نقطه اپراتور است. 1169 00:56:50,690 --> 00:56:52,820 همان ایده، نحو کمی متفاوت است. 1170 00:56:52,820 --> 00:56:55,280 و من فقط ایجاد رشته ای که شما در ضربه روی صفحه نمایش را دیدم - 1171 00:56:55,280 --> 00:56:57,750 خوش آمدید، چنین و چنان. 1172 00:56:57,750 --> 00:56:59,200 >> و سپس آخرین و جزئیات این است. 1173 00:56:59,200 --> 00:57:04,970 چرا در داخل نادرست بازگشت I از این تابع ناشناس؟ 1174 00:57:04,970 --> 00:57:07,420 >> رسید هیچ ارزش وجود دارد. 1175 00:57:07,420 --> 00:57:09,380 شما آن را در فرم. 1176 00:57:09,380 --> 00:57:12,320 1177 00:57:12,320 --> 00:57:16,730 این فقط می گوید، اگر ارزش است به خالی برابر، سپس آن را انجام دهد. 1178 00:57:16,730 --> 00:57:20,040 1179 00:57:20,040 --> 00:57:20,940 بود خالی در آن ارسال وجود دارد. 1180 00:57:20,940 --> 00:57:21,170 >> DAVID J. مالان: OK. 1181 00:57:21,170 --> 00:57:21,640 مراقب باشید. 1182 00:57:21,640 --> 00:57:22,830 هیچ کس دیگر در اینجا وجود دارد. 1183 00:57:22,830 --> 00:57:25,510 و این نادرست بازگشت است در خارج از اگر شرایط. 1184 00:57:25,510 --> 00:57:29,470 پس این برجسته خط، بازگشت کاذب، اجرا بدون توجه به آنچه در هنگام 1185 00:57:29,470 --> 00:57:32,310 که فرم ارسال می شود. 1186 00:57:32,310 --> 00:57:36,810 چه از بازگشت در داخل نادرست از این کنترل رویدادها، به عنوان آن را به نام، 1187 00:57:36,810 --> 00:57:38,450 این رویداد در سوال در حال ارسال؟ 1188 00:57:38,450 --> 00:57:42,350 1189 00:57:42,350 --> 00:57:44,470 >> رسید آنجا که آن را تنها یک بار اتفاق می افتد. 1190 00:57:44,470 --> 00:57:45,320 >> DAVID J. مالان: فقط یک بار اتفاق می افتد. 1191 00:57:45,320 --> 00:57:46,821 نه کاملا. 1192 00:57:46,821 --> 00:57:47,292 آره؟ 1193 00:57:47,292 --> 00:57:50,589 >> یک مدعو: این مانع از فرم را از ارسال به رفتار به طور پیش فرض، 1194 00:57:50,589 --> 00:57:52,480 که بارگذاری صفحه را. 1195 00:57:52,480 --> 00:57:53,110 >> DAVID J. مالان: دقیقا. 1196 00:57:53,110 --> 00:57:56,490 پس من سربار واژه ارسال کنید در اینجا، به خاطر من گفت، فرم است 1197 00:57:56,490 --> 00:57:57,670 در حال کنید. 1198 00:57:57,670 --> 00:58:02,240 اما به شما نشان می دهد، آن را در واقع نمی در راه HTTP درست کنید. 1199 00:58:02,240 --> 00:58:06,870 هنگامی که شما با کلیک کردن، دلیل ما کنترل onSubmit، ما در حال رهگیری 1200 00:58:06,870 --> 00:58:09,040 که ارسال فرم تا به صحبت می کنند. 1201 00:58:09,040 --> 00:58:11,290 ما پس از آن در حال انجام چیزی که ما با کد جاوا اسکریپت. 1202 00:58:11,290 --> 00:58:14,070 اما من به عمد از بازگشت کاذب، چون چیزی که من نمی خواهم به اتفاق می افتد 1203 00:58:14,070 --> 00:58:18,430 قسمتی از ثانیه بعد برای تمام فرم خود را به وب را مشاهده کنید 1204 00:58:18,430 --> 00:58:22,800 سرور با جفت کلید با تغییر URL می شود چیزی شبیه 1205 00:58:22,800 --> 00:58:26,180 Q = گربه و یا هر آنچه ما انجام دادیم، به عنوان مثال، در کلاس. 1206 00:58:26,180 --> 00:58:29,640 من نمی خواهم که اتفاق می افتد، زیرا بدون گوش دادن به سرور برای این وجود دارد 1207 00:58:29,640 --> 00:58:30,690 فرم ارسال مقاله. 1208 00:58:30,690 --> 00:58:32,320 این صرفا در کد جاوا اسکریپت انجام می شود. 1209 00:58:32,320 --> 00:58:35,760 و به همین دلیل من حتی یک اقدام نسبت در فرم من، چون من 1210 00:58:35,760 --> 00:58:38,870 برای این که به قصد تا به حال به سرور بروید. 1211 00:58:38,870 --> 00:58:40,780 >> پس از آن در حال کنید. 1212 00:58:40,780 --> 00:58:44,340 اما ما در حال رهگیری است که به صورت ارسال و جلوگیری از پیش فرض 1213 00:58:44,340 --> 00:58:47,477 رفتار، که در واقع به تمام راه را به سرور. 1214 00:58:47,477 --> 00:58:48,730 >> رسید پس از آن حفظ سمت سرویس گیرنده. 1215 00:58:48,730 --> 00:58:49,780 >> DAVID J. مالان: نگه داشتن آن را به سمت سرویس گیرنده. 1216 00:58:49,780 --> 00:58:51,030 دقیقا درست است. 1217 00:58:51,030 --> 00:58:53,240 1218 00:58:53,240 --> 00:58:55,757 تا بعد من آه خروجی زیر بود. 1219 00:58:55,757 --> 00:59:00,000 1220 00:59:00,000 --> 00:59:00,430 >> ROB BOWDEN: OK. 1221 00:59:00,430 --> 00:59:04,990 بنابراین این سوال برای اولین بار به طور کلی بود خشن برای مردم است. 1222 00:59:04,990 --> 00:59:07,270 اگر چه آنهایی که بعد بهتر شد. 1223 00:59:07,270 --> 00:59:12,260 بنابراین شما مجبور به انتخاب کنید اطلاعات صحیح نوع برای هر دو از این ستون ها. 1224 00:59:12,260 --> 00:59:17,750 و هر دو از این برخی از همه چیز در مورد آنها که 1225 00:59:17,750 --> 00:59:20,620 را انتخاب دشوار است. 1226 00:59:20,620 --> 00:59:24,430 بنابراین اعضای هیات بود که معتبر نیست نوع برای تعداد. 1227 00:59:24,430 --> 00:59:29,410 دلیل بودن یک حساب 12 رقمی تعداد، یک int است به اندازه کافی بزرگ نشده 1228 00:59:29,410 --> 00:59:31,070 تعداد کل ارقام ذخیره کنید. 1229 00:59:31,070 --> 00:59:36,570 بنابراین یک گزینه معتبر را بزرگ بوده است اعضای هیات اگر شما اتفاق می افتد می دانیم که. 1230 00:59:36,570 --> 00:59:42,090 یکی دیگر از انتخاب می شده است یک رشته کاراکتر به طول 12. 1231 00:59:42,090 --> 00:59:44,560 بنابراین هر کدام از این که کار کرده اند. 1232 00:59:44,560 --> 00:59:46,100 بین المللی را ندارد. 1233 00:59:46,100 --> 00:59:50,170 >> در حال حاضر، تعادل، فکر می کنم به pset7. 1234 00:59:50,170 --> 00:59:59,540 بنابراین ما به طور خاص اعشاری استفاده می شود ذخیره ارزش سهام و یا - 1235 00:59:59,540 --> 01:00:00,550 >> DAVID J. مالان: نقدی. 1236 01:00:00,550 --> 01:00:01,060 >> ROB BOWDEN: نقدی. 1237 01:00:01,060 --> 01:00:05,710 با استفاده از اعشار برای ذخیره مقدار نقدی که کاربر در حال حاضر است. 1238 01:00:05,710 --> 01:00:10,950 بنابراین به این دلیل که ما انجام این کار است چرا که، به یاد داشته باشید، شناور. 1239 01:00:10,950 --> 01:00:12,480 نقطه شناور در دقیق. 1240 01:00:12,480 --> 01:00:18,200 این دقیقا نمی تواند ذخیره پول نقد ارزش مانند ما در اینجا می خواهم. 1241 01:00:18,200 --> 01:00:23,630 بنابراین اعشاری قادر به دقیقا فروشگاه چیزی به، می گویند، دو رقم اعشار. 1242 01:00:23,630 --> 01:00:27,630 به همین دلیل تعادل، ما آن را می خواهم به اعشاری و شناور نیست. 1243 01:00:27,630 --> 01:00:30,230 >> DAVID J. مالان: و همچنین، بیش از حد، هر چند آن ممکن است هوشمندانه در دیگر بوده است 1244 01:00:30,230 --> 01:00:32,760 زمینه فکر می کنم، شاید این شانس یک int است. 1245 01:00:32,760 --> 01:00:34,420 من فقط پیگیری همه چیز در سکه. 1246 01:00:34,420 --> 01:00:38,670 از آنجا که ما به صراحت به طور پیش فرض نشان داد ارزش بودن 100.00، که 1247 01:00:38,670 --> 01:00:40,380 بدان معنی است که فقط می تواند از نوع int. 1248 01:00:40,380 --> 01:00:45,310 و ظرافت دیگر بیش از حد با تعداد این بود که قرار نبود 1249 01:00:45,310 --> 01:00:46,180 به یک سوال ترفند. 1250 01:00:46,180 --> 01:00:49,860 اما به یاد می آورند که یک int در پایگاه، مانند C، حداقل در 1251 01:00:49,860 --> 01:00:51,440 لوازم خانگی، 32 بیتی است. 1252 01:00:51,440 --> 01:00:53,960 و حتی اگر ما شما را به انتظار نیست دقیقا می دانند که چگونه بسیاری از عددی که 1253 01:00:53,960 --> 01:00:56,910 ابزار، به یاد می آورند که بیشترین تعداد شما به طور بالقوه می تواند نشان دهنده 1254 01:00:56,910 --> 01:01:00,710 با یک عدد 32 بیتی تقریبا آن چیزی است؟ 1255 01:01:00,710 --> 01:01:02,760 >> چه تعداد ما همیشه می گویند؟ 1256 01:01:02,760 --> 01:01:04,530 2 به 32 است، که چه حدود؟ 1257 01:01:04,530 --> 01:01:07,492 1258 01:01:07,492 --> 01:01:08,780 شما لازم نیست که دقیقا می دانیم. 1259 01:01:08,780 --> 01:01:10,580 اما تقریبا در زندگی مفید است. 1260 01:01:10,580 --> 01:01:12,200 این تقریبا 4 میلیارد. 1261 01:01:12,200 --> 01:01:14,430 بنابراین ما می گفت که چند بار. 1262 01:01:14,430 --> 01:01:16,360 من می دانم من گفته اند که چند بار. 1263 01:01:16,360 --> 01:01:17,670 و این است که تقریبا 4 میلیارد. 1264 01:01:17,670 --> 01:01:19,710 و این یک قانون خوب است از انگشت شست به می دانم. 1265 01:01:19,710 --> 01:01:21,880 اگر شما 8 بیت، 256 تعداد سحر و جادو است. 1266 01:01:21,880 --> 01:01:24,160 اگر شما 32 بیت، 4 میلیارد دادن یا گرفتن. 1267 01:01:24,160 --> 01:01:27,140 بنابراین اگر شما فقط پایین 4 میلیارد ارسال، شما خواهید دید که این رقم کمتر از 1268 01:01:27,140 --> 01:01:30,970 12، که بدان معنی است که به وضوح نمی بیان به اندازه کافی برای گرفتن یک 1269 01:01:30,970 --> 01:01:34,220 شماره حساب 12 رقمی. 1270 01:01:34,220 --> 01:01:34,940 >> ROB BOWDEN: OK. 1271 01:01:34,940 --> 01:01:38,520 بنابراین آنهایی که بهتر رفت. 1272 01:01:38,520 --> 01:01:40,900 بنابراین فرض کنید که بانک تحمیل 20 دلار ماهانه 1273 01:01:40,900 --> 01:01:42,400 هزینه تعمیر و نگهداری را در همه حساب. 1274 01:01:42,400 --> 01:01:45,506 با چه پرس و جو SQL می تواند بانک ، کسر $ 20 از هر تعداد حتی اگر 1275 01:01:45,506 --> 01:01:47,520 آن را در برخی از توازن منفی نتایج: از شماره؟ 1276 01:01:47,520 --> 01:01:50,380 بنابراین اساسا، چهار وجود دارد نوع اصلی از نمایش داده شد - 1277 01:01:50,380 --> 01:01:52,840 قرار دادن، انتخاب، بروز رسانی و حذف کنید. 1278 01:01:52,840 --> 01:01:56,080 بنابراین چه چیزی فکر می کنم ما ما رفتن به استفاده از در اینجا؟ 1279 01:01:56,080 --> 01:01:57,000 به روز رسانی. 1280 01:01:57,000 --> 01:01:58,260 >> بنابراین اجازه دهید نگاهی به. 1281 01:01:58,260 --> 01:02:04,290 1282 01:02:04,290 --> 01:02:05,870 بنابراین در اینجا ما در حال به روز رسانی. 1283 01:02:05,870 --> 01:02:09,900 چه جدول به روز رسانی ما حساب؟ 1284 01:02:09,900 --> 01:02:11,670 بنابراین به روز رسانی حساب. 1285 01:02:11,670 --> 01:02:15,390 و پس از آن نحو می گوید، چه در حساب های به روز رسانی می کنیم؟ 1286 01:02:15,390 --> 01:02:19,520 خب، ما در حال تنظیم تعادل به برابر ارزش فعلی تعادل منفی 20. 1287 01:02:19,520 --> 01:02:22,860 پس این همه ردیف ها به روز رسانی حساب های، کم کردن 1288 01:02:22,860 --> 01:02:26,250 $ 20 از تعادل می باشد. 1289 01:02:26,250 --> 01:02:29,260 >> DAVID J. مالان: یک اشتباه معمول در اینجا، حتی اگر ما گاهی اوقات آن را بخشید، 1290 01:02:29,260 --> 01:02:32,990 این بود که در واقع کد PHP را در اینجا فراخوانی تابع پرس و جو و یا قرار دادن 1291 01:02:32,990 --> 01:02:35,460 نقل قول در اطراف هر چیزی که نیازی به وجود داشته باشد. 1292 01:02:35,460 --> 01:02:39,780 >> ROB BOWDEN: به یاد داشته باشید که خروجی زیر است یک زبان مجزا از PHP. 1293 01:02:39,780 --> 01:02:42,410 ما اتفاق می افتد به نوشتن خروجی زیر در PHP. 1294 01:02:42,410 --> 01:02:46,180 و PHP است و سپس ارسال آن را به سرور MySQL. 1295 01:02:46,180 --> 01:02:51,120 اما شما PHP به منظور نیاز ندارد برقراری ارتباط با سرور خروجی زیر. 1296 01:02:51,120 --> 01:02:51,730 >> DAVID J. مالان: دقیقا. 1297 01:02:51,730 --> 01:02:54,240 بنابراین به هیچ متغیر با علائم دلار باید در این زمینه باشد. 1298 01:02:54,240 --> 01:02:59,550 این فقط می توانید تمام محاسبات ریاضی را انجام دهد در پایگاه داده خود دارد. 1299 01:02:59,550 --> 01:03:00,080 >> ROB BOWDEN: OK. 1300 01:03:00,080 --> 01:03:01,300 بنابراین یک بعدی. 1301 01:03:01,300 --> 01:03:02,731 آیا این یک بعدی؟ 1302 01:03:02,731 --> 01:03:03,210 آره. 1303 01:03:03,210 --> 01:03:06,570 پس با چه پرس و جو SQL می تواند بانک بازیابی شماره حساب از آن 1304 01:03:06,570 --> 01:03:09,300 ثروتمندترین مشتریان، کسانی که با توازن بیشتر از 1000؟ 1305 01:03:09,300 --> 01:03:13,280 پس کدام یک از چهار نوع اصلی می خواهیم می خواهید در اینجا؟ 1306 01:03:13,280 --> 01:03:14,430 را انتخاب کنید. 1307 01:03:14,430 --> 01:03:16,650 بنابراین ما می خواهیم را انتخاب کنید. 1308 01:03:16,650 --> 01:03:17,610 ما چه می خواهیم را انتخاب کنید؟ 1309 01:03:17,610 --> 01:03:19,380 چه ستون را می خواهیم را انتخاب کنید؟ 1310 01:03:19,380 --> 01:03:20,970 ما به طور خاص می خواهد تعداد را انتخاب کنید. 1311 01:03:20,970 --> 01:03:23,910 اما اگر شما می گفت: ستاره، ما نیز پذیرفته شده است که. 1312 01:03:23,910 --> 01:03:25,820 >> بنابراین تعدادی از چه جدول را انتخاب کنید؟ 1313 01:03:25,820 --> 01:03:26,640 حساب های. 1314 01:03:26,640 --> 01:03:28,370 و پس از آن شرایط ما می خواهیم؟ 1315 01:03:28,370 --> 01:03:30,140 که در آن تعادل بیشتر از 1000. 1316 01:03:30,140 --> 01:03:31,720 ما نیز پذیرفته شده بیشتر از یا برابر. 1317 01:03:31,720 --> 01:03:35,230 1318 01:03:35,230 --> 01:03:36,190 یکی از آخرین. 1319 01:03:36,190 --> 01:03:42,940 با چه پرس و جو SQL می تواند بانک نزدیک، یعنی حذف هر حساب که 1320 01:03:42,940 --> 01:03:44,480 تا به یک تعادل $ 0؟ 1321 01:03:44,480 --> 01:03:47,620 پس که از چهار ما رفتن به می خواهید استفاده کنید؟ 1322 01:03:47,620 --> 01:03:48,320 حذف. 1323 01:03:48,320 --> 01:03:50,180 بنابراین نحو برای که؟ 1324 01:03:50,180 --> 01:03:51,890 از چه جدول حذف کنید؟ 1325 01:03:51,890 --> 01:03:53,550 حساب های. 1326 01:03:53,550 --> 01:03:55,790 و پس از آن شرایط که در آن ما می خواهیم را حذف کنید - 1327 01:03:55,790 --> 01:03:57,280 که در آن تعادل برابر صفر است. 1328 01:03:57,280 --> 01:04:03,050 بنابراین از حساب حذف تمام ردیف که در آن تعادل صفر است. 1329 01:04:03,050 --> 01:04:04,300 سوالات مطرح شده در هر یک از این؟ 1330 01:04:04,300 --> 01:04:08,840 1331 01:04:08,840 --> 01:04:10,260 آیا می خواهید به صف؟ 1332 01:04:10,260 --> 01:04:11,200 >> DAVID J. مالان: راهنمای صف. 1333 01:04:11,200 --> 01:04:17,110 بنابراین در این یکی، ما به شما داد تا حدودی ساختار آشنا است که ما به بررسی 1334 01:04:17,110 --> 01:04:20,450 کمی در کلاس در کنار ساختمانها، که داده بود 1335 01:04:20,450 --> 01:04:21,910 ساختار مربوط به آن در روح. 1336 01:04:21,910 --> 01:04:24,670 تفاوت هر چند با یک صف است که ما تا به حال به نوعی به یاد داشته باشید که 1337 01:04:24,670 --> 01:04:27,900 در جلوی صف بود، در بزرگ بخشی به طوری که ما می تواند تر 1338 01:04:27,900 --> 01:04:30,530 استفاده بهینه از حافظه، حداقل اگر ما یک آرایه با استفاده از. 1339 01:04:30,530 --> 01:04:35,460 >> از آنجا که به یاد بیاورید، اگر ما یک آرایه، اگر، به عنوان مثال، این جلو است 1340 01:04:35,460 --> 01:04:38,470 صف، اگر من به صف اینجا، و پس از آن کسی می شود در خط 1341 01:04:38,470 --> 01:04:42,710 پشت سر من، پشت سر من، پشت سر من، و یک نفر قدم از خط، شما 1342 01:04:42,710 --> 01:04:45,930 می تواند، به عنوان ما به برخی از انسان ما را داوطلبان در کلاس، همه دارند 1343 01:04:45,930 --> 01:04:47,100 تغییر در این راه. 1344 01:04:47,100 --> 01:04:50,880 اما به طور کلی، با هر کس انجام چیزی است که بهترین استفاده را از زمان نیست 1345 01:04:50,880 --> 01:04:54,600 در یک برنامه، این یعنی شما الگوریتم در حال اجرا است در چه 1346 01:04:54,600 --> 01:04:56,520 زمان در حال اجرا مجانبی؟ 1347 01:04:56,520 --> 01:04:57,420 این خطی. 1348 01:04:57,420 --> 01:04:59,600 >> و احساس می کنم مثل این نوع احمقانه. 1349 01:04:59,600 --> 01:05:02,890 اگر شخصی که در کنار در خط بعدی است کسی که قرار است برای رفتن به 1350 01:05:02,890 --> 01:05:04,660 فروشگاه، نه همه آنها داشته باشد به حرکت با هم. 1351 01:05:04,660 --> 01:05:08,200 اجازه بدهید که این شخص می شود کنده خاموش هنگامی که زمان می آید، به عنوان مثال. 1352 01:05:08,200 --> 01:05:09,870 بنابراین ما می توانیم کمی از زمان وجود دارد را نجات دهد. 1353 01:05:09,870 --> 01:05:14,840 و به این ترتیب به انجام این کار هر چند، که به معنی که سر صف یا 1354 01:05:14,840 --> 01:05:18,060 جلوی صف در حال رفتن به به تدریج عمیق تر و عمیق تر حرکت 1355 01:05:18,060 --> 01:05:23,340 به آرایه و در نهایت ممکن است در واقع در اطراف بسته بندی کردن اگر ما با استفاده از 1356 01:05:23,340 --> 01:05:25,790 آرایه برای ذخیره مردم در این صف. 1357 01:05:25,790 --> 01:05:28,390 بنابراین شما تقریبا می توانید از فکر می کنم آرایه به عنوان داده های دایره ای 1358 01:05:28,390 --> 01:05:29,880 ساختار به این معنا. 1359 01:05:29,880 --> 01:05:33,970 >> بنابراین شما به نوعی مجبور به پیگیری از اندازه آن و یا واقعا پایان آن 1360 01:05:33,970 --> 01:05:36,250 و پس از آن که در آغاز آن است. 1361 01:05:36,250 --> 01:05:39,490 بنابراین ما پیشنهاد می کنیم که به شما اعلام یک صف از جمله، مکالمه 1362 01:05:39,490 --> 01:05:41,330 آن پرسش، فقط یک نامه. 1363 01:05:41,330 --> 01:05:44,570 سپس ما پیشنهاد می کنیم که جلوی شود مقدار دهی اولیه به صفر است و اندازه 1364 01:05:44,570 --> 01:05:45,470 به صفر مقداردهی اولیه. 1365 01:05:45,470 --> 01:05:47,770 >> بنابراین در حال حاضر، هیچ چیز وجود دارد داخل که صف. 1366 01:05:47,770 --> 01:05:50,910 و ما از شما بخواهد در اجرای نوبت قراردادن زیر در 1367 01:05:50,910 --> 01:05:55,250 به گونه ای که تابع می افزاید نفر به در پایان پرسش ها و بازگشت درست است. 1368 01:05:55,250 --> 01:05:58,690 اما اگر پرسش کامل و یا منفی است، تابع به جای باید نادرست بازگشت. 1369 01:05:58,690 --> 01:06:01,060 و ما شما را به یک زن و شوهر از مفروضات. 1370 01:06:01,060 --> 01:06:04,320 اما آنها واقعا عملکرد نه مربوطه، درست است که بولی وجود دارد، 1371 01:06:04,320 --> 01:06:06,690 به این دلیل، از نظر فنی، بولی نمی کند در C وجود داشته باشد مگر اینکه شما شامل 1372 01:06:06,690 --> 01:06:07,310 فایل هدر خاص. 1373 01:06:07,310 --> 01:06:09,350 به طوری که فقط مطمئن شوید که وجود دارد را گرفت بدون این ترفند این است شدند 1374 01:06:09,350 --> 01:06:10,940 نوع سوال از چیزی. 1375 01:06:10,940 --> 01:06:16,280 >> بنابراین در نوبت قراردادن، ما در نمونه ارائه شده راه حل برای پیاده سازی به شرح زیر است. 1376 01:06:16,280 --> 01:06:20,420 یکی از ما در مرحله اول بررسی سهولت، میوه کم حلق آویز. 1377 01:06:20,420 --> 01:06:23,820 اگر صف کامل و یا تعداد است که شما در حال تلاش برای وارد کردن کمتر است 1378 01:06:23,820 --> 01:06:26,380 از صفر، که ما در گفت مشخصات مشکل باید 1379 01:06:26,380 --> 01:06:30,320 نه اجازه داده می شود، چرا که ما فقط می خواهید مقادیر غیر منفی است، پس شما باید به 1380 01:06:30,320 --> 01:06:31,640 فقط بازگشت کاذب بلافاصله. 1381 01:06:31,640 --> 01:06:33,820 بنابراین برخی نسبتا آسان چک کردن خطا. 1382 01:06:33,820 --> 01:06:38,720 اگر هر چند شما می خواهید برای اضافه کردن که واقعی شماره، شما را مجبور به انجام یک بیت از 1383 01:06:38,720 --> 01:06:39,440 فکر کردن در اینجا. 1384 01:06:39,440 --> 01:06:41,330 و این جایی است که آن را کمی آزار دهنده ذهنی، چرا که شما به 1385 01:06:41,330 --> 01:06:43,000 شکل از چگونه که مسئولیت رسیدگی به کمر بند یا چیزی که دور بدن شخصی بسته باشند. 1386 01:06:43,000 --> 01:06:46,870 >> اما از جوانه ایده در اینجا این است که از علاقه به ما که شال است 1387 01:06:46,870 --> 01:06:51,480 اغلب بیان حساب های مدولار و اپراتور وزارت دفاع، سمت درصد، 1388 01:06:51,480 --> 01:06:55,140 که در آن شما می توانید از یک مقدار بزرگتر به به صفر و سپس یک و دو و 1389 01:06:55,140 --> 01:06:58,650 سه و پس از آن در اطراف به صفر، یک و دو و سه و غیره 1390 01:06:58,650 --> 01:06:59,380 دوباره و دوباره. 1391 01:06:59,380 --> 01:07:02,880 پس راه ما پیشنهاد می کنیم برای انجام این کار است که ما نمی خواهیم به صفحه اول به 1392 01:07:02,880 --> 01:07:05,850 آرایه به نام شماره ای که اعداد صحیح ما نهفته است. 1393 01:07:05,850 --> 01:07:10,740 اما برای رسیدن به آنجا، ما برای اولین بار می خواهید انجام دهید هر اندازه صف است، اما 1394 01:07:10,740 --> 01:07:14,080 پس از آن به که اضافه کردن به هر جلوی این فهرست است. 1395 01:07:14,080 --> 01:07:17,880 و اثر آن این است که ما را در سمت راست در صف و 1396 01:07:17,880 --> 01:07:20,970 فرض کنیم که فرد برای اولین بار در خط است در آغاز، که او و یا 1397 01:07:20,970 --> 01:07:24,130 او کاملا می تواند اگر ما همچنین تغییر همه شد. 1398 01:07:24,130 --> 01:07:26,710 اما ما فقط ایجاد کار برای خودمان اگر ما در زمان 1399 01:07:26,710 --> 01:07:27,800 این مسیر خاص است. 1400 01:07:27,800 --> 01:07:29,330 >> بنابراین ما می توانیم آن را نگه دارید نسبتا ساده است. 1401 01:07:29,330 --> 01:07:32,180 ما باید به یاد داشته باشید که ما فقط یک int که به صف اضافه شده است. 1402 01:07:32,180 --> 01:07:35,850 و پس از آن ما فقط به راست. 1403 01:07:35,850 --> 01:07:38,560 در همین حال، در dequeue، از ما خواسته شما را به انجام موارد زیر است. 1404 01:07:38,560 --> 01:07:42,260 پیاده سازی آن به گونه ای است که آن را dequeues، که حذف و بازده است، 1405 01:07:42,260 --> 01:07:44,190 هوشمند در مقابل صف. 1406 01:07:44,190 --> 01:07:46,410 برای حذف بین المللی، کافی به آن را فراموش کرده ام. 1407 01:07:46,410 --> 01:07:47,650 شما لازم نیست به نادیده گرفتن کمی آن است. 1408 01:07:47,650 --> 01:07:48,820 پس از آن هنوز هم در واقع وجود دارد. 1409 01:07:48,820 --> 01:07:51,930 درست مانند داده ها بر روی دیسک سخت، ما فقط نادیده گرفتن این واقعیت 1410 01:07:51,930 --> 01:07:52,970 که آن را در حال حاضر وجود دارد. 1411 01:07:52,970 --> 01:07:55,520 و اگر پرسش خالی است، ما باید به جای منفی 1 بازگشت. 1412 01:07:55,520 --> 01:07:56,750 پس این احساس دلخواه. 1413 01:07:56,750 --> 01:08:01,640 چرا بازگشت منفی 1 به جای غلط؟ 1414 01:08:01,640 --> 01:08:02,620 آره. 1415 01:08:02,620 --> 01:08:05,070 >> یک مدعو: Q ذخیره سازی ارزش مثبت است. 1416 01:08:05,070 --> 01:08:10,950 از آنجا که شما فقط مقادیر مثبت ذخیره در پرسش، منفی یک خطا است. 1417 01:08:10,950 --> 01:08:11,510 >> DAVID J. مالان: OK، درست است. 1418 01:08:11,510 --> 01:08:14,850 پس چون ما فقط ذخیره سازی مثبت ارزش ها و یا صفر است، سپس آن را خوب به 1419 01:08:14,850 --> 01:08:18,050 ارزش منفی به عنوان یک نگهبان بازگشت ارزش، یک نماد خاص است. 1420 01:08:18,050 --> 01:08:21,630 اما شما در حال بازنویسی تاریخ وجود دارد، چرا که به این دلیل ما تنها هستیم 1421 01:08:21,630 --> 01:08:25,890 بازگشت به ارزش های غیر منفی دلیل است که ما به خواهید 1422 01:08:25,890 --> 01:08:27,670 ارزش نگهبان. 1423 01:08:27,670 --> 01:08:32,617 بنابراین به طور خاص، چرا که نه فقط بازگشت کاذب در موارد خطا؟ 1424 01:08:32,617 --> 01:08:33,099 آره. 1425 01:08:33,099 --> 01:08:35,510 >> یک مدعو: شما شکست خورده ام برای بازگشت به یک عدد صحیح. 1426 01:08:35,510 --> 01:08:36,630 >> DAVID J. مالان: دقیقا. 1427 01:08:36,630 --> 01:08:38,569 و این است که در آن C می شود محدود بسیار. 1428 01:08:38,569 --> 01:08:40,590 اگر شما می گویید که شما قصد برای بازگشت به یک int، تو 1429 01:08:40,590 --> 01:08:41,279 برای بازگشت به یک int. 1430 01:08:41,279 --> 01:08:43,689 شما می توانید فانتزی می کنید و شروع به بازگشت بولی و یا شناور و یا یک 1431 01:08:43,689 --> 01:08:45,040 رشته یا چیزی شبیه به آن. 1432 01:08:45,040 --> 01:08:49,370 در حال حاضر، در عین حال، جاوا اسکریپت و PHP و برخی از زبان های دیگر می تواند، در واقع، 1433 01:08:49,370 --> 01:08:51,310 به شما بازگشت مختلف نوع ارزش. 1434 01:08:51,310 --> 01:08:54,819 و این در واقع می تواند مفید باشد، که در آن شما می توانید نوع داده int مثبت، صفر بازگشت، 1435 01:08:54,819 --> 01:08:59,439 نوع داده int منفی و یا کاذب یا تهی حتی به معنی خطا. 1436 01:08:59,439 --> 01:09:01,890 اما ما لازم نیست که تطبیق پذیری در C. 1437 01:09:01,890 --> 01:09:04,569 >> بنابراین با dequeue، آنچه که ما پیشنهاد برای انجام این کار است - 1438 01:09:04,569 --> 01:09:07,350 1439 01:09:07,350 --> 01:09:09,830 >> ROB Bowden: شما می توانید نادرست بازگشت. 1440 01:09:09,830 --> 01:09:13,189 این درست است که نادرست مخلوط است تعریف نادرست به صفر است. 1441 01:09:13,189 --> 01:09:16,000 بنابراین اگر شما بازگشت کاذب، شما صفر بازگشت. 1442 01:09:16,000 --> 01:09:25,470 و صفر یک چیز معتبر در صف ما، در حالی که منفی 1 است اگر 1443 01:09:25,470 --> 01:09:27,000 نادرست رخ داده است به منفی 1. 1444 01:09:27,000 --> 01:09:29,972 اما شما باید حتی باید بدانید که. 1445 01:09:29,972 --> 01:09:32,399 >> DAVID J. مالان: که به همین دلیل من آن را می گویند نیست. 1446 01:09:32,399 --> 01:09:36,450 >> ROB BOWDEN: اما این درست نیست که شما نمی توانید بازگشت کاذب. 1447 01:09:36,450 --> 01:09:37,700 >> DAVID J. مالان: مطمئنا. 1448 01:09:37,700 --> 01:09:40,920 1449 01:09:40,920 --> 01:09:44,240 بنابراین dequeue، توجه ما را قبول از درجه اعتبار ساقط عنوان آرگومان می گیرد. 1450 01:09:44,240 --> 01:09:45,479 و این به خاطر ما نیست عبور از هر چیزی شوید 1451 01:09:45,479 --> 01:09:48,359 ما فقط می خواهیم به حذف عنصر در جلوی صف. 1452 01:09:48,359 --> 01:09:49,819 پس چگونه ممکن است که ما در مورد انجام این کار؟ 1453 01:09:49,819 --> 01:09:51,290 خب، اول، اجازه دهید این کار را انجام ورود به سلامت عقل سریع است. 1454 01:09:51,290 --> 01:09:53,350 اگر به اندازه صف 0 است، وجود دارد هیچ کار باید انجام شود. 1455 01:09:53,350 --> 01:09:54,210 بازگشت منفی 1. 1456 01:09:54,210 --> 01:09:54,800 انجام می شود. 1457 01:09:54,800 --> 01:09:56,340 به طوری که چند خط از برنامه من است. 1458 01:09:56,340 --> 01:09:58,180 بنابراین تنها چهار خط باقی می ماند. 1459 01:09:58,180 --> 01:10:01,310 >> بنابراین در اینجا من تصمیم به واحد کم میکنیم به اندازه. 1460 01:10:01,310 --> 01:10:04,620 طرح ساده اندازه به طور موثر بدان معنی است که من فراموش 1461 01:10:04,620 --> 01:10:06,010 چیزی است که در آن وجود دارد. 1462 01:10:06,010 --> 01:10:09,910 اما من هم برای به روز رسانی که در آن جلوی اعداد. 1463 01:10:09,910 --> 01:10:11,620 بنابراین برای انجام این کار، من نیاز به انجام دو چیز. 1464 01:10:11,620 --> 01:10:16,390 من برای اولین بار باید به خاطر داشته باشید که چه تعداد در جلوی صف، 1465 01:10:16,390 --> 01:10:17,860 چون من نیاز به بازگشت آن چیز. 1466 01:10:17,860 --> 01:10:20,910 بنابراین من نمی خواهم به طور تصادفی را فراموش کرده ام در مورد آن و سپس آن را بازنویسی. 1467 01:10:20,910 --> 01:10:22,840 من فقط به خاطر داشته باشید در یک int. 1468 01:10:22,840 --> 01:10:27,310 >> و در حال حاضر، من می خواهم برای به روز رسانی q.front به q.front شود 1. 1469 01:10:27,310 --> 01:10:30,070 بنابراین اگر این اولین کسی بود خط، در حال حاضر، من می خواهم به انجام این کار به علاوه 1 به 1470 01:10:30,070 --> 01:10:31,930 اشاره به فرد در خط بعدی. 1471 01:10:31,930 --> 01:10:33,420 اما من که مسئولیت رسیدگی به که کمر بند یا چیزی که دور بدن شخصی بسته باشند. 1472 01:10:33,420 --> 01:10:37,270 و اگر ظرفیت ثابت جهانی است، که رفتن به من اجازه می دهد تا مطمئن شوید 1473 01:10:37,270 --> 01:10:41,140 که من به شخص بسیار گذشته در نقطه خط، بهره برداری باقی مانده به ارمغان خواهد آورد 1474 01:10:41,140 --> 01:10:43,840 من به صفر در جلوی صف. 1475 01:10:43,840 --> 01:10:46,050 و این دسته کمر بند یا چیزی که دور بدن شخصی بسته باشند در اینجا. 1476 01:10:46,050 --> 01:10:48,950 و بعد من ادامه به بازگشت N. 1477 01:10:48,950 --> 01:10:51,530 >> در حال حاضر، صرفا صحبت کردن، من نمی مجبور به اعلام نفر. 1478 01:10:51,530 --> 01:10:53,880 من نیست که آن را گرفتن و ذخیره آن به طور موقت، به دلیل ارزش است 1479 01:10:53,880 --> 01:10:54,740 هنوز هم وجود دارد. 1480 01:10:54,740 --> 01:10:57,490 بنابراین من فقط می تواند انجام حسابی سمت راست برای بازگشت به رئیس سابق 1481 01:10:57,490 --> 01:10:58,450 از صف. 1482 01:10:58,450 --> 01:11:01,850 اما من فقط احساس کردند که این روشن تر بود در واقع گرفتن بین المللی، آن را 1483 01:11:01,850 --> 01:11:04,320 در N، و سپس بازگشت که به خاطر وضوح، اما 1484 01:11:04,320 --> 01:11:05,735 به شدت ضروری نیست. 1485 01:11:05,735 --> 01:11:09,313 1486 01:11:09,313 --> 01:11:12,130 PSST. 1487 01:11:12,130 --> 01:11:13,410 همه آنها قابل تلفظ در سر من هستی. 1488 01:11:13,410 --> 01:11:15,940 1489 01:11:15,940 --> 01:11:19,110 >> ROB BOWDEN: بنابراین سوال اول مشکل درخت دودویی است. 1490 01:11:19,110 --> 01:11:22,140 سوال پس اول است، ما با توجه به این اعداد. 1491 01:11:22,140 --> 01:11:27,160 و ما می خواهیم به نوعی آنها را در قرار دادن این گره مانند آن است که 1492 01:11:27,160 --> 01:11:30,110 معتبر درخت جستجوی دودویی. 1493 01:11:30,110 --> 01:11:36,260 بنابراین آن چیزی که در مورد به یاد داشته باشید درخت جستجوی دودویی است که آن را نمی 1494 01:11:36,260 --> 01:11:39,800 درست است که چیزی که به سمت چپ کمتر و چیزی که به است 1495 01:11:39,800 --> 01:11:41,120 سمت راست بیشتر است. 1496 01:11:41,120 --> 01:11:44,580 این نیاز به این باشد که کل درخت به سمت چپ کل درخت کمتر است، و 1497 01:11:44,580 --> 01:11:45,740 به سمت راست بیشتر است. 1498 01:11:45,740 --> 01:11:55,260 >> بنابراین اگر من در اینجا در بالا قرار داده است 34، و پس از آن من قرار 20 در اینجا، به طوری که معتبر تا 1499 01:11:55,260 --> 01:11:56,970 تا کنون، به دلیل 34 تا اینجا. 1500 01:11:56,970 --> 01:11:57,920 20 در حال رفتن به سمت چپ. 1501 01:11:57,920 --> 01:11:58,950 به طوری که کمتر است. 1502 01:11:58,950 --> 01:12:03,640 اما من پس از آن نمی تواند قرار داده 59 در اینجا، به دلیل حتی اگر 59 در سمت راست است از 20، 1503 01:12:03,640 --> 01:12:06,140 هنوز هم در سمت چپ 34. 1504 01:12:06,140 --> 01:12:10,760 بنابراین با توجه به محدودیت در ذهن، ساده ترین راه احتمالا حل این 1505 01:12:10,760 --> 01:12:14,330 مشکل این است که فقط مرتب کردن بر اساس از این اعداد - 1506 01:12:14,330 --> 01:12:18,720 تا 20، 34، 36، 52، 59، 106. 1507 01:12:18,720 --> 01:12:21,640 و پس از آن وارد از چپ به راست. 1508 01:12:21,640 --> 01:12:23,390 >> بنابراین 20 در اینجا می رود. 1509 01:12:23,390 --> 01:12:24,630 34 در اینجا می رود. 1510 01:12:24,630 --> 01:12:25,830 36 در اینجا می رود. 1511 01:12:25,830 --> 01:12:29,360 52، 59، 106. 1512 01:12:29,360 --> 01:12:34,730 و شما همچنین می توانست با نمیفهمد برخی از متصل کردن و تحقق، 1513 01:12:34,730 --> 01:12:38,830 اوه، صبر کنید، من اصلا اعداد را به اندازه کافی ندارد برای پر کردن این در اینجا. 1514 01:12:38,830 --> 01:12:42,170 بنابراین من نیاز به reshift چه من مسیر توجه داشته باشید برای رفتن به. 1515 01:12:42,170 --> 01:12:47,490 اما توجه کنید که در فینال سه، اگر شما خواندن از چپ به راست، آن را در است 1516 01:12:47,490 --> 01:12:48,740 جهت افزایش است. 1517 01:12:48,740 --> 01:12:52,150 1518 01:12:52,150 --> 01:12:56,540 >> بنابراین در حال حاضر، ما می خواهیم به اعلام چه ساختار است برای است 1519 01:12:56,540 --> 01:12:58,300 گره ها در این درخت. 1520 01:12:58,300 --> 01:13:02,720 پس چه که ما در یک درخت دودویی نیاز دارید؟ 1521 01:13:02,720 --> 01:13:05,830 بنابراین ما باید یک مقدار از نوع هوشمند، به طوری که برخی از ارزش بین المللی. 1522 01:13:05,830 --> 01:13:07,220 من نمی دانم آنچه که ما به نام آن را در راه حل - 1523 01:13:07,220 --> 01:13:08,500 اعضای هیات N. 1524 01:13:08,500 --> 01:13:13,570 ما نیاز به یک اشاره گر به کودک سمت چپ و یک اشاره گر به کودک سمت راست. 1525 01:13:13,570 --> 01:13:17,540 بنابراین آن را به شبیه به این. 1526 01:13:17,540 --> 01:13:20,510 و آن را در واقع شما قبل از نگاه هنگامی که با پیوند مضاعف بود 1527 01:13:20,510 --> 01:13:25,090 فهرست مسائل، تا اطلاع - 1528 01:13:25,090 --> 01:13:27,860 من قصد دارم که به حرکت همه راه به پایین به مشکل 11. 1529 01:13:27,860 --> 01:13:30,980 1530 01:13:30,980 --> 01:13:36,390 >> بنابراین توجه به نظر می رسد مشابه به این، به جز ما فقط اتفاق می افتد به تماس این 1531 01:13:36,390 --> 01:13:38,590 نام های مختلف. 1532 01:13:38,590 --> 01:13:41,440 ما هنوز هم یک عدد صحیح داشته باشند ارزش و دو اشاره گر. 1533 01:13:41,440 --> 01:13:44,850 این درست است که به جای درمان اشاره گر به اشاره به چیزی که بعد از 1534 01:13:44,850 --> 01:13:47,955 و چیزی که گذشته، ما در حال درمان اشاره گر به نقطه را به یک کودک سمت چپ 1535 01:13:47,955 --> 01:13:49,205 و کودک سمت راست. 1536 01:13:49,205 --> 01:13:57,372 1537 01:13:57,372 --> 01:13:57,860 OK. 1538 01:13:57,860 --> 01:13:59,650 به طوری که گره ساختار ماست. 1539 01:13:59,650 --> 01:14:03,920 و در حال حاضر، تنها تابع ما نیاز به اجرای این تراورس است، که 1540 01:14:03,920 --> 01:14:08,320 ما می خواهیم به بیش از درخت، چاپ بروید از ارزش های درخت به منظور. 1541 01:14:08,320 --> 01:14:15,241 >> بنابراین به دنبال در اینجا، ما می خواهیم برای چاپ از 20، 34، 36، 52، 59، و 106. 1542 01:14:15,241 --> 01:14:17,970 چگونه می توانیم انجام است که؟ 1543 01:14:17,970 --> 01:14:18,890 پس از آن بسیار مشابه است. 1544 01:14:18,890 --> 01:14:22,910 اگر در امتحان گذشته دیدم مشکل که شما می خواستم برای چاپ کردن 1545 01:14:22,910 --> 01:14:25,940 کل درخت را با کاما از هم در بین همه چیز، آن را در واقع حتی بود 1546 01:14:25,940 --> 01:14:27,320 ساده تر از آن. 1547 01:14:27,320 --> 01:14:30,950 بنابراین در اینجا راه حل است. 1548 01:14:30,950 --> 01:14:33,110 این به طور قابل توجهی آسان تر بود اگر شما آن را به صورت بازگشتی انجام داد. 1549 01:14:33,110 --> 01:14:36,650 من نمی دانم اگر کسی تلاش این کار را انجام تکرار. 1550 01:14:36,650 --> 01:14:38,340 >> اما در ابتدا، ما باید مورد پایگاه ما. 1551 01:14:38,340 --> 01:14:39,660 اگر ریشه تهی است؟ 1552 01:14:39,660 --> 01:14:40,610 سپس ما فقط رفتن به بازگشت. 1553 01:14:40,610 --> 01:14:42,300 ما نمی خواهیم برای چاپ هر چیزی. 1554 01:14:42,300 --> 01:14:45,940 دیگری که ما در حال رفتن به گذشتن به صورت بازگشتی است. 1555 01:14:45,940 --> 01:14:48,140 چاپ کردن کل زیر درخت سمت چپ. 1556 01:14:48,140 --> 01:14:51,440 بنابراین همه چیز کمتر چاپ از ارزش فعلی من. 1557 01:14:51,440 --> 01:14:53,930 و سپس من قصد دارم خودم را چاپ کنید. 1558 01:14:53,930 --> 01:14:57,310 و سپس من قصد دارم به RECURSE کردن من کل زیر درخت راست، بنابراین همه چیز 1559 01:14:57,310 --> 01:14:58,810 بیشتر از ارزش من. 1560 01:14:58,810 --> 01:15:03,870 و این است که برای چاپ از همه چیز در جهت. 1561 01:15:03,870 --> 01:15:05,860 سوالات در مورد چگونگی این در واقع انجام که؟ 1562 01:15:05,860 --> 01:15:09,892 1563 01:15:09,892 --> 01:15:12,545 >> یک مدعو: من یک سوال در [نامفهوم]. 1564 01:15:12,545 --> 01:15:15,090 1565 01:15:15,090 --> 01:15:23,550 >> ROB BOWDEN: بنابراین یکی از راه های نزدیک شدن به هر گونه مشکل بازگشتی این است که فقط فکر می کنم 1566 01:15:23,550 --> 01:15:26,275 در مورد آن را می خواهم شما را به فکر می کنم در مورد تمام موارد گوشه. 1567 01:15:26,275 --> 01:15:32,150 1568 01:15:32,150 --> 01:15:38,110 بنابراین در نظر بگیرید که ما به خواهید چاپ کل این درخت. 1569 01:15:38,110 --> 01:15:42,030 پس همه ما می رویم به تمرکز بر روی این گره خاص است - 1570 01:15:42,030 --> 01:15:43,740 36. 1571 01:15:43,740 --> 01:15:47,420 تماس بازگشتی، ما وانمود کسانی که فقط کار می کنند. 1572 01:15:47,420 --> 01:15:54,000 بنابراین در اینجا، این تماس بازگشتی به تراورس، ما حتی بدون فکر کردن 1573 01:15:54,000 --> 01:15:58,640 در مورد آن، فقط تراورس به سمت چپ سه، تصور کنید که در حال حاضر چاپ 20 1574 01:15:58,640 --> 01:16:00,730 و 34 برای ما. 1575 01:16:00,730 --> 01:16:03,350 و پس از آن زمانی که ما در نهایت به صورت بازگشتی گذشتن تماس بگیرید 1576 01:16:03,350 --> 01:16:07,890 راست، که به درستی چاپ 52، 59، و 106 برای ما. 1577 01:16:07,890 --> 01:16:13,620 >> بنابراین با توجه به اینکه این می تواند 20، 34، چاپ و از سوی دیگر می تواند چاپ 52، 59، 108، 1578 01:16:13,620 --> 01:16:17,180 همه ما باید قادر به انجام چاپ خودمان را در وسط آن. 1579 01:16:17,180 --> 01:16:21,250 پس از چاپ همه چیز را قبل از ما. 1580 01:16:21,250 --> 01:16:27,710 چاپ خودت هستی، پس از چاپ گره فعلی 36، چون printf به طور منظم، و پس از آن 1581 01:16:27,710 --> 01:16:31,170 همه چیز بعد از ما را چاپ کنید. 1582 01:16:31,170 --> 01:16:32,730 >> DAVID J. مالان: این که در آن بازگشت است واقعا زیبا. 1583 01:16:32,730 --> 01:16:36,270 این جهش شگفت انگیز از ایمان است که در آن شما انجام اندک کمی کار می کنند. 1584 01:16:36,270 --> 01:16:38,460 و پس از آن به شما اجازه کسی دیگری انجام دهید بقیه. 1585 01:16:38,460 --> 01:16:40,180 و که شخص دیگری است، از قضا، شما. 1586 01:16:40,180 --> 01:16:44,260 1587 01:16:44,260 --> 01:16:48,360 بنابراین برای نقاط یکجور دوربین عکاسی جدی است، اگر شما رفته تا در سوالات - 1588 01:16:48,360 --> 01:16:50,530 >> ROB BOWDEN: در سوال؟ 1589 01:16:50,530 --> 01:16:53,490 >> DAVID J. مالان: و پایین کمی به اعداد، آیا کسی می دانم که در آن 1590 01:16:53,490 --> 01:16:55,190 این اعداد از کجا آمده؟ 1591 01:16:55,190 --> 01:16:56,610 >> ROB BOWDEN: من به معنای واقعی کلمه هیچ نظری ندارم. 1592 01:16:56,610 --> 01:16:59,794 >> DAVID J. مالان: به نظر می رسد در طول مسابقه. 1593 01:16:59,794 --> 01:17:01,150 >> یک مدعو: آیا آنها همان تعداد؟ 1594 01:17:01,150 --> 01:17:01,910 >> DAVID J. مالان: این اعداد. 1595 01:17:01,910 --> 01:17:03,260 تخم مرغ کمی عید پاک. 1596 01:17:03,260 --> 01:17:08,100 بنابراین برای کسانی از شما تماشای آنلاین در خانه، اگر شما می توانید با ما از طریق ایمیل برای گفتن 1597 01:17:08,100 --> 01:17:12,680 heads@CS50.net اهمیت از این شش شماره در محدوده زمانی معین می باشد 1598 01:17:12,680 --> 01:17:18,560 در طول امتحان 1، ما شما را دوش با توجه شگفت انگیز در فینال 1599 01:17:18,560 --> 01:17:21,610 سخنرانی و یک توپ استرس. 1600 01:17:21,610 --> 01:17:25,460 1601 01:17:25,460 --> 01:17:27,790 زیبا و لطیف است. 1602 01:17:27,790 --> 01:17:29,570 >> ROB BOWDEN: هر گونه سؤال آخرین در مورد هر چیزی در مسابقه؟ 1603 01:17:29,570 --> 01:17:32,608