1 00:00:00,000 --> 00:00:12,610 2 00:00:12,610 --> 00:00:12,900 >> डेविड जे मालन: सब ठीक है. 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 >> डेविड जे मालन: ठीक है. 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 एक प्रारूप कोड,% की तरह, पढ़ने के लिए का हिस्सा में एक स्ट्रिंग 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 हम स्मृति में सी का उपयोग कर रहे हैं किसी भी समय, क्या आप एक 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 >> डेविड जे मालन: बिल्कुल. 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 >> तो वहाँ, heuristics किसी भी होना चाहिए आप निश्चित लंबाई मिल गया है समय, आपके पास 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 >> डेविड जे मालन: बिल्कुल. 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 स्थान में, उर्फ ​​अशक्त. 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 >> आरओबी 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 Struct node *, कि सचमुच है नोड स्टार के लिए समान. 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 >> आरओबी 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 तो क्यों एक सर्वर रिटर्न might स्थिति कोड 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 >> आरओबी 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 >> आरओबी 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 >> आरओबी 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 लेकिन यह एक अलग यूआरएल पर है. 223 00:10:21,070 --> 00:10:23,534 तो हे, आप वास्तव में यह चाहते हैं. 224 00:10:23,534 --> 00:10:26,950 >> डेविड जे मालन: यह कहा है कि एक टुकड़ा है हम तुम लोगों को एक रीडायरेक्ट दिया कि 225 00:10:26,950 --> 00:10:30,830 हैडर समारोह का इस्तेमाल किया है कि समारोह कि, बारी में, स्थान बाहर मुद्रित 226 00:10:30,830 --> 00:10:34,110 पेट के, और तब यूआरएल जो करने के लिए आप उपयोगकर्ता को अस्वीकार करना चाहते हैं. 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 >> आरओबी BOWDEN: ठीक है. 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 >> आरओबी 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 >> डेविड जे मालन: और तंत्र द्वारा इन समस्याओं को आमतौर पर जो कर रहे हैं 254 00:11:48,900 --> 00:11:53,100 सर्वर पर है हल क्या आदेश के माध्यम से? 255 00:11:53,100 --> 00:11:57,700 Chmod, अगर यह है, वास्तव में, एक अनुमतियाँ फाइल या निर्देशिका पर जारी करते हैं. 256 00:11:57,700 --> 00:11:59,220 >> आरओबी 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 >> डेविड जे मालन: हम segfault देखा कुछ लोगों के जवाब के बीच. 274 00:12:48,320 --> 00:12:49,490 और तकनीकी रूप से, यह हो सकता है. 275 00:12:49,490 --> 00:12:53,820 लेकिन यह है कि एक पीएचपी, कार्यक्रम होगा वास्तव में, अन्य लोगों द्वारा लिखे गए 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 के लिए, मैं मैंने ऐसा किया था जब मैं क्लिक एक बार लगता है 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 >> आरओबी BOWDEN: हाँ. 287 00:13:29,770 --> 00:13:31,180 >> दर्शक: चाहेंगे कि त्रुटि अभी भी ऊपर आ गए? 288 00:13:31,180 --> 00:13:34,290 >> आरओबी BOWDEN: तो आप कमाई नहीं होती इस त्रुटि क्योंकि सब कुछ 289 00:13:34,290 --> 00:13:36,930 वेब सर्वर के नजरिए से पूरी तरह से ठीक था. 290 00:13:36,930 --> 00:13:39,090 लेकिन आप index.html का अनुरोध किया. 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 ठीक है. 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 >> डेविड जे मालन: तो अगले ऊपर संख्या 11 थी. 301 00:14:04,120 --> 00:14:07,610 और 11 scariest था बहुत से लोगों के लिए. 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 जो आपको चेतावनी देना नहीं था कि सूची, वास्तव में, unsorted हो सकता है. 307 00:14:27,170 --> 00:14:29,640 >> सूची unsorted था ताकि तथ्य और उस शब्द था कि तथ्य 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 यह सूची में n सम्मिलित करता है एक तरीका है कि लगातार समय में, यह भी रेखांकित किया, 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 और यहाँ इस मामले में, मैं initialized क्योंकि इस नए, अशक्त करने के लिए पिछले 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 >> डेविड जे मालन: नहींं. 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 मैं नहीं - 382 00:18:14,980 --> 00:18:15,450 सिर्फ सूचीबद्ध करता है? 383 00:18:15,450 --> 00:18:16,400 >> डेविड जे मालन: बिल्कुल. 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 सूचक एन हो जाता है. 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 >> तो पिछली सूची पीटीआर हो जाता है. 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 यह 1,000 कदम हो सकता है. 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 इसलिए यदि आप एक छोटे से अधिक है wiggle कमरा अब. 467 00:21:48,740 --> 00:21:52,380 तुम्हें पता है, कि n मान सकते हैं कि अगर वर्तमान सूची में, उपस्थित रहेंगे 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 संरचना की iteratively ले रहा है डेटा का सामने करने के लिए एक सूचक 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 सूची और मैं 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 आगे और पीछे बातें crisscrossing एक दूसरे को. 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 तो इस पीटीआर है. 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 आप crisscrossing क्या करने की जरूरत नहीं है यहाँ बात. 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 >> डेविड जे मालन: बिल्कुल, बिल्कुल. 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 >> आरओबी BOWDEN: ठीक है. 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 अनुवाद की आवश्यकता एक आईपी पता करने के लिए, जो विशिष्ट रूप 622 00:29:44,120 --> 00:29:47,620 क्या मशीन हम वास्तव में पहचानती है इस अनुरोध भेजना चाहते हैं. 623 00:29:47,620 --> 00:29:49,310 आपका लैपटॉप एक आईपी पता है. 624 00:29:49,310 --> 00:29:52,240 इंटरनेट से जुड़ा कुछ भी एक आईपी पता है. 625 00:29:52,240 --> 00:29:59,030 >> तो DNS, डोमेन नाम प्रणाली, कि है क्या अनुवाद संभाल करने के लिए जा रहा है 626 00:29:59,030 --> 00:30:03,750 facebook.com से एक आईपी पता करने के लिए कि आप वास्तव में संपर्क करना चाहते हैं. 627 00:30:03,750 --> 00:30:08,075 इसलिए हम डीएनएस सर्वर से संपर्क करें और कहते हैं, facebook.com क्या है? 628 00:30:08,075 --> 00:30:16,560 यह ओह, यह आईपी पते 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 और फिर एक वेब ब्राउज़र में, मैं कर सकता 7000: मैन्युअल Facebook.com लिखें 665 00:32:19,090 --> 00:32:24,600 पोर्ट 7000 को अनुरोध भेज फेसबुक के वेब सर्वर की. 666 00:32:24,600 --> 00:32:26,820 >> डेविड जे मालन: और इस मामले में भी हम यह अपेक्षा नहीं की थी कि हालांकि लोग 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 >> आरओबी 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 >> डेविड जे मालन: आउटबाउंड ईमेल, 25, हां. 677 00:33:00,670 --> 00:33:03,760 >> आरओबी 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 >> आरओबी BOWDEN: क्योंकि एक आईपी पते में, अंकों के चार समूहों नहीं है. 682 00:33:18,820 --> 00:33:21,090 और वे 0-255 कर रहे हैं. 683 00:33:21,090 --> 00:33:28,060 तो 192.168.2.1 एक आम है स्थानीय नेटवर्क आईपी पता. 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 >> डेविड जे मालन: लेकिन उस मूर्ख क्लिप से - यह है कि वे एक था जहां सीएसआई, था 688 00:33:38,170 --> 00:33:39,970 संख्या कि बहुत बड़ा था आईपी ​​पते के लिए. 689 00:33:39,970 --> 00:33:42,940 690 00:33:42,940 --> 00:33:46,110 >> आरओबी 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 और हम एक unordered सूची है. 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 >> पहले चलना, घर पर Cabot घर होगा. 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 unordered सूची टैग. 708 00:34:50,770 --> 00:34:53,949 इसलिए हम PHP मोड से बाहर निकलने की जरूरत है यह करने के लिए आदेश में. 709 00:34:53,949 --> 00:35:00,280 या हम प्रतिध्वनित हो सकता था unordered सूची टैग को बंद करें. 710 00:35:00,280 --> 00:35:02,380 >> डेविड जे मालन: यहां भी ठीक होगा के लिए एक पुराने स्कूल का उपयोग करने के लिए किया गया है 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 >> डेविड जे मालन: बिल्कुल. 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 >> आरओबी BOWDEN: और कुछ? 721 00:35:27,900 --> 00:35:31,350 722 00:35:31,350 --> 00:35:32,010 >> डेविड जे मालन: सब ठीक है. 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 Telnet और वास्तव में करने के लिए नाटक मिल भेजकर एक ब्राउज़र हो 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 >> डेविड जे मालन [हंसते हुए] 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 >> आरओबी BOWDEN: यही होगा स्वीकार किया गया है. 770 00:37:44,480 --> 00:37:44,810 >> डेविड जे मालन: क्या? 771 00:37:44,810 --> 00:37:45,810 >> आरओबी BOWDEN: मैं इस समस्या को बनाया. 772 00:37:45,810 --> 00:37:46,735 यही स्वीकार कर लिया गया होता. 773 00:37:46,735 --> 00:37:47,220 >> डेविड जे मालन: हाँ. 774 00:37:47,220 --> 00:37:47,830 >> दर्शक: कूल. 775 00:37:47,830 --> 00:37:51,770 >> आरओबी 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 >> आरओबी BOWDEN: हाँ. 781 00:38:00,430 --> 00:38:03,000 यह एक स्वीकार किए जाते हैं जवाब था. 782 00:38:03,000 --> 00:38:06,300 >> डेविड जे मालन: हमने महसूस किया, जहां कुछ भी यह संभावना नहीं की तुलना में अधिक होने की संभावना थी 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 तो तुम हुप्स के माध्यम से कूदने की जरूरत नहीं है वास्तव में और अधिक स्मृति बनाने के लिए 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 >> डेविड जे मालन: बिल्कुल. 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 >> डेविड जे मालन: हाँ. 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 लेकिन वास्तविकता में, यदि आप भंडारण कर रहे हैं एक हो सकता है कि structs की लिंक सूची 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 तो उन दोनों में से किसी होता downsides के रूप में ठीक किया गया. 821 00:39:31,880 --> 00:39:32,110 >> 18. 822 00:39:32,110 --> 00:39:36,100 लिखने के लिए PHP के बजाय सी का उपयोग एक कमांड लाइन प्रोग्राम. 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 कार्यों के पानी के नल है, सी में, आप जबकि 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 और हम एक साथ प्रदर्शन देखा कि 3 से 0.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 डेटाबेस का उपयोग कर के बजाय डेटा स्टोर करने के लिए एक सीएसवी फाइल. 844 00:40:38,450 --> 00:40:40,230 तो SQL डेटाबेस pset7 के लिए प्रयोग किया जाता है. 845 00:40:40,230 --> 00:40:42,060 सीएसवी फाइल जिसे ज्यादा इस्तेमाल नहीं किया. 846 00:40:42,060 --> 00:40:45,960 लेकिन आप के रूप में pset7 में परोक्ष रूप से इसका इस्तेमाल किया अच्छी तरह से याहू वित्त से बात करके. 847 00:40:45,960 --> 00:40:49,330 >> लेकिन सीएसवी सिर्फ एक एक्सेल फाइल की तरह है लेकिन सुपर सरल, कॉलम कहाँ हैं 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 और तुम, शायद, अनुक्रमित मिलता है कि MySQL और जैसे अन्य डेटाबेस, 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 एक सीएसवी फाइल, आप कर सकते हैं जबकि 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 >> बजाय एक हैश तालिका के एक Trie का प्रयोग स्टोर करने के लिए अलग श्रृंखलन के साथ एक 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 लगातार समय, कम से कम आप कर रहे हैं व्यक्ति में से प्रत्येक पर hashing 871 00:41:46,380 --> 00:41:48,990 आप की तरह एक शब्द में पत्र, pset5 के लिए हो सकता है. 872 00:41:48,990 --> 00:41:52,720 यही कारण है कि पांच हैश, छह हो सकता है पांच या छह अगर वहाँ hashes 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 वास्तव में asymptotically निरंतर समय. 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 चेन इसी से भी तेज है Trie कार्यान्वयन. 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 >> आरओबी 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 यह 1 से 0 कि. 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 >> डेविड जे मालन: डोम डे डोम डोम. 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 >> आरओबी BOWDEN: मैं वास्तव में नहीं पता था. 911 00:43:50,400 --> 00:43:51,650 >> डेविड जे मालन: यह बनाया मेरे सिर में भावना. 912 00:43:51,650 --> 00:43:53,830 913 00:43:53,830 --> 00:43:57,580 >> आरओबी BOWDEN: मैं इस एक कर रहा हूँ. 914 00:43:57,580 --> 00:43:58,020 ठीक है. 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 तो एचटीएमएल नोड से, हम दो बच्चों, सिर और शरीर. 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 तो div, div, div और फिर पाठ उन divs के नोड बच्चे. 931 00:44:53,340 --> 00:44:55,900 यही कारण है कि यह बहुत सुंदर है सवाल है कि के लिए. 932 00:44:55,900 --> 00:44:57,860 >> डेविड जे मालन: और यह ध्यान देने योग्य है, हम इन पर ध्यान केन्द्रित करना नहीं है, भले ही 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 तो सिर में शरीर से पहले आता है एचटीएमएल, तो यह करने के लिए प्रकट करना चाहिए 936 00:45:06,330 --> 00:45:08,860 वास्तविक डोम में शरीर के लिए छोड़ दिया. 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 स्मृति में पेड़, ईमानदार हो, कि शायद intuitively क्या आप 941 00:45:20,960 --> 00:45:24,720 वैसे भी करते हैं - ऊपर से नीचे तक, सही करने के लिए छोड़ दिया है. 942 00:45:24,720 --> 00:45:26,116 >> आरओबी 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 >> डेविड जे मालन: यकीन है. 946 00:45:32,380 --> 00:45:33,810 >> आरओबी BOWDEN: ठीक है. 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 लेकिन सी केवल 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 >> इसलिए कि यहां याद मुख्य foo बुला रहा है. 963 00:46:34,910 --> 00:46:37,340 और यदि ऐसा है तो मुख्य कॉल foo. 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 कुछ बिंदु पर, मुख्य कॉल foo. 970 00:46:53,250 --> 00:46:55,390 खैर, तुरंत, मुख्य कॉल foo. 971 00:46:55,390 --> 00:46:57,130 और तो foo अपनी ही ढेर फ्रेम हो जाता है. 972 00:46:57,130 --> 00:46:59,650 973 00:46:59,650 --> 00:47:02,220 >> अब, कुछ बिंदु पर, foo वापस जाने के लिए जा रहा है. 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 हम एक पूरी से foo कॉल कर सकते हैं विभिन्न स्थानों का गुच्छा. 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 foo रिटर्न. 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 इस बफर सी संग्रहीत किया जाता है, चलो यहीं सी है, का कहना है. 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 और इस foo के ढेर अंगूठी है. 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 इस वापसी पता overwriting. 993 00:48:05,120 --> 00:48:08,310 तो एक बार हम वापसी पता अधिलेखित इसका मतलब यह है कि जब foo 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 तो अगला सवाल पूरा हो गया है ऐसे में foo की reimplementation 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 >> यह तय करने का एक और तरीका है के बजाय सी होने ही लंबाई 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 >> डेविड जे मालन: काफी नहीं आत्मा की सवाल है, लेकिन प्रति स्वीकार्य 1028 00:50:13,425 --> 00:50:15,580 फिर भी कल्पना. 1029 00:50:15,580 --> 00:50:18,260 >> आरओबी 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 ठीक है. 1035 00:50:33,320 --> 00:50:34,580 >> डेविड जे मालन: क्या आप चाहते हो इस शीर्षक का कहना है करने के लिए? 1036 00:50:34,580 --> 00:50:37,230 >> आरओबी BOWDEN: नहीं 1037 00:50:37,230 --> 00:50:40,470 >> डेविड जे मालन: तो यह एक में, इस अच्छी खबर है या बुरी खबर या तो था. 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 तो यहाँ सी कोड, जबकि सही सी में, पीएचपी के लिए सही नहीं. 1051 00:51:16,690 --> 00:51:17,940 लेकिन कोड वास्तव में एक ही है. 1052 00:51:17,940 --> 00:51:21,720 आप प्रश्नोत्तरी के लिए समाधान की तुलना प्रश्नोत्तरी 1 खिलाफ 0, आप पाएंगे कि 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 हम 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 >> और उसके बाद तो लाइन, बेशक, पीएचपी मोड में प्रवेश का मतलब है. 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 और फिर अपने उपयोगकर्ताओं के लिए है बस , इस कार्यक्रम को चलाने के लिए, ठीक है, याद मैं 1074 00:52:17,320 --> 00:52:22,320 टाइप करने के लिए "PHP अंतरिक्ष 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 >> तो आप पूरी तरह. PHP निकाल सकते हैं व्याख्यान से याद करते हैं. 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 तो chmod एक + X foo कि किया होता. 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, निश्चित रूप से कोई सी कोड, बस कुछ 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 और रसदार हिस्सा एचटीएमएल के लिहाज से नीचे था यहाँ, हम शरीर के अंदर है, जहां 1088 00:53:04,230 --> 00:53:09,160 आदानों की अद्वितीय पहचान है कि एक फार्म जो के अंदर दो आदानों, एक था 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 तुम सख्ती की जरूरत नहीं है इन ID के सभी. 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 >> तो आप ऐसा कर सकते हैं एक तरह से साथ है एक छोटे से लग रहा है जो jQuery, 1105 00:53:53,460 --> 00:53:56,880 पहली बार में वाक्य रचना से हैरान करनेवाला. 1106 00:53:56,880 --> 00:54:00,760 आप शुद्ध डोम कोड के साथ ऐसा कर सकते हैं - आईडी के आधार पर document.getelement. 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 >> और इसलिए, आप करने की कोशिश कुछ डोम अप करने के लिए यहाँ कोड में कुछ 1116 00:54:27,910 --> 00:54:31,560 तत्व, कुछ एचटीएमएल टैग, कि नीचे है यहाँ, आप भी जल्द ही यह कर रहे हैं, 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 लेकिन पूरे जब तक इस पर अमल नहीं करते दस्तावेज़ तैयार है, कि डोम है 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 कि क्या हैश टैग है , अद्वितीय पहचान को दर्शाता है. 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 . साधन प्रस्तुत जब इस फार्म के साथ इस आईडी से प्रस्तुत किया जाता है, पर अमल 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 यह तो उस आईडी हो जाता है और इसका मूल्य पाता है. 1144 00:55:50,920 --> 00:55:51,590 >> डेविड जे मालन: बिल्कुल. 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 ऐसा करने के लिए विभिन्न तरीके. jQuery बस एक छोटे से अधिक संक्षिप्त और हो जाता है 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 क्यों मैं झूठे अंदर वापसी इस अनाम समारोह का? 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 >> डेविड जे मालन: ठीक है. 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 >> डेविड जे मालन: केवल एक बार होता है. 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 >> डेविड जे मालन: बिल्कुल. 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 बदलकर महत्वपूर्ण मूल्य जोड़े के साथ सर्वर ऐसा कुछ हो यूआरएल 1205 00:58:22,800 --> 00:58:26,180 क्यू = बिल्लियों या जो कुछ भी हमने किया, उदाहरण के लिए, कक्षा में. 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 >> डेविड जे मालन: ध्यान में रखते हुए यह क्लाइंट साइड. 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 अगला ऊपर MySQL ओह मेरे था. 1219 00:58:55,757 --> 00:59:00,000 1220 00:59:00,000 --> 00:59:00,430 >> आरओबी BOWDEN: ठीक है. 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 तो INT एक मान्य नहीं था संख्या के लिए लिखें. 1227 00:59:24,430 --> 00:59:29,410 एक 12 अंकों खाते कारण किया जा रहा संख्या, एक पूर्णांक के लिए काफी बड़ा नहीं है 1228 00:59:29,410 --> 00:59:31,070 कुल अंक की दुकान. 1229 00:59:31,070 --> 00:59:36,570 तो एक मान्य विकल्प एक बड़ा हो गया होता आप जानते हैं कि करने के लिए होता है अगर int. 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 >> डेविड जे मालन: नकद. 1236 01:00:00,550 --> 01:00:01,060 >> आरओबी 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 >> डेविड जे मालन: और भी, भी, हालांकि यह अन्य में चतुर गया हो सकता है 1244 01:00:30,230 --> 01:00:32,760 सोचने के लिए संदर्भों, शायद इस एक पूर्णांक के लिए एक मौका है. 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 यह सिर्फ एक पूर्णांक हो सकता है इसका मतलब है. 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 लेकिन याद है कि MySQL में एक पूर्णांक, जैसे सी में, कम से कम में 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 >> आरओबी BOWDEN: ठीक है. 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 क्या एसक्यूएल क्वेरी सकता है बैंक के साथ भले ही, हर गिनती से 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 >> डेविड जे मालन: यहाँ एक आम गलती, हम कभी कभी यह माफ कर दिया है, भले ही 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 >> आरओबी BOWDEN: MySQL है कि याद रखें PHP से एक अलग भाषा. 1293 01:02:39,780 --> 01:02:42,410 हम PHP में MySQL लिख सकता हो. 1294 01:02:42,410 --> 01:02:46,180 और पीएचपी तो यह भेज रहा है सर्वर के लिए खत्म हो. 1295 01:02:46,180 --> 01:02:51,120 क्रम में लेकिन आप PHP की जरूरत नहीं है एक सर्वर के साथ संवाद. 1296 01:02:51,120 --> 01:02:51,730 >> डेविड जे मालन: बिल्कुल. 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 >> आरओबी BOWDEN: ठीक है. 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 क्या एसक्यूएल क्वेरी सकता है बैंक के साथ तो इसकी के खाता संख्या पुनः प्राप्त 1304 01:03:06,570 --> 01:03:09,300 सबसे अमीर ग्राहकों के साथ उन 1,000 से अधिक शेष? 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 जहां 1,000 से अधिक संतुलन. 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 क्या एसक्यूएल क्वेरी सकता है बैंक के साथ करीब, यानी, हर खाते को नष्ट कि 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 >> डेविड जे मालन: पंक्ति गाइड. 1333 01:04:11,200 --> 01:04:17,110 तो यह एक में, हम आपको एक कुछ दिया हम एक का पता लगाया है कि परिचित संरचना 1334 01:04:17,110 --> 01:04:20,450 structs की बगल वर्ग में बिट, एक डेटा था जो 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 तो फिर हम सामने हो कि प्रस्ताव शून्य करने के लिए और कहा कि initialized आकार 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 और हम पूरा करने के लिए आप से पूछना में नीचे enqueue का कार्यान्वयन 1367 01:05:50,910 --> 01:05:55,250 समारोह n करने के लिए कहते हैं कि इस तरह से है फिर क्यू के अंत और सच देता है. 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 लेकिन वे वास्तव में कार्यात्मक नहीं कर रहे हैं प्रासंगिक, कि बस bool मौजूद है, 1371 01:06:04,320 --> 01:06:06,690 तकनीकी तौर पर, bool नहीं करता है, क्योंकि आप शामिल जब तक सी में मौजूद एक 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 >> तो enqueue, हम नमूने में प्रस्तावित के रूप में निम्नानुसार समाधान को लागू करने के लिए. 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 wraparound संभाल करने के लिए बाहर निकालने के. 1386 01:06:43,000 --> 01:06:46,870 >> लेकिन विचार के रोगाणु कि यहाँ का है हमारे लिए ब्याज कि wraparound है 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 हम याद करने के लिए है कि हम सिर्फ कतार में एक पूर्णांक गयी. 1402 01:07:32,180 --> 01:07:35,850 और फिर हम सिर्फ सच वापसी. 1403 01:07:35,850 --> 01:07:38,560 इस बीच, विपंक्ति में, हम पूछा आपको निम्न कार्य करना. 1404 01:07:38,560 --> 01:07:42,260 ऐसे में इसे लागू कि यह dequeues, कि, हटा और रिटर्न है 1405 01:07:42,260 --> 01:07:44,190 कतार के सामने Int. 1406 01:07:44,190 --> 01:07:46,410 INT निकालने के लिए, यह suffices इसे भूल जाओ. 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 >> दर्शक: क्यू जमा कर रहा है सकारात्मक मूल्यों. 1416 01:08:05,070 --> 01:08:10,950 आप केवल सकारात्मक मूल्यों की दुकान के बाद क्यू में, नकारात्मक एक त्रुटि है. 1417 01:08:10,950 --> 01:08:11,510 >> डेविड जे मालन: ठीक है, सच. 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 >> डेविड जे मालन: बिल्कुल. 1427 01:08:36,630 --> 01:08:38,569 सी हो जाता है और जहां यह है सुंदर बाधा. 1428 01:08:38,569 --> 01:08:40,590 क्या आप जा रहे हैं कह रहे हैं एक पूर्णांक वापस जाने के लिए, आप मिल गया है 1429 01:08:40,590 --> 01:08:41,279 एक पूर्णांक वापस जाने के लिए. 1430 01:08:41,279 --> 01:08:43,689 आप कल्पना और लौट प्रारंभ नहीं कर सकता एक bool या एक नाव या एक 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 और कहा कि वास्तव में उपयोगी हो सकता है, जहां आप सकारात्मक ints, शून्य लौट सकता है, 1435 01:08:54,819 --> 01:08:59,439 नकारात्मक ints, या झूठी या अशक्त भी त्रुटि दर्शाता है. 1436 01:08:59,439 --> 01:09:01,890 लेकिन हमारे पास नहीं है कि सी. में बहुमुखी प्रतिभा 1437 01:09:01,890 --> 01:09:04,569 >> तो विपंक्ति साथ, क्या हम है क्या करने का प्रस्ताव है - 1438 01:09:04,569 --> 01:09:07,350 1439 01:09:07,350 --> 01:09:09,830 >> आरओबी 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 >> डेविड जे मालन: यह है यही कारण है कि मैं यह भी नहीं कहा. 1446 01:09:32,399 --> 01:09:36,450 >> आरओबी BOWDEN: लेकिन यह सच नहीं था आप गलत नहीं लौट सकते हैं. 1447 01:09:36,450 --> 01:09:37,700 >> डेविड जे मालन: यकीन है. 1448 01:09:37,700 --> 01:09:40,920 1449 01:09:40,920 --> 01:09:44,240 तो विपंक्ति, हम स्वीकार नोटिस अपने तर्क के रूप में शून्य. 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 और प्रभावी ढंग से आकार decrementing मैं भूल रहा है कि इसका मतलब है 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 मैं सिर्फ एक पूर्णांक में याद करने के लिए जा रहा हूँ. 1468 01:10:22,840 --> 01:10:27,310 >> और अब, मैं अद्यतन करना चाहते हैं q.front एक q.front किया जाना है. 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 लेकिन मुझे लगता है कि wraparound संभालना है. 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 और कहा कि यहां wraparound संभालती है. 1476 01:10:46,050 --> 01:10:48,950 और फिर मैं n लौटने के लिए आगे बढ़ें. 1477 01:10:48,950 --> 01:10:51,530 >> अब, सच पूछिये तो, मैं नहीं था n घोषित करने के लिए है. 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 लेकिन मैं सिर्फ यह और अधिक स्पष्ट किया गया था कि लगा वास्तव INT हड़पने के लिए, यह डाल 1483 01:11:01,850 --> 01:11:04,320 एन में, और उसके बाद उस लौटने स्पष्टता के लिए, लेकिन 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 अरे. 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 >> आरओबी 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 और तुम भी साथ पता चल सकता कुछ में plugging और साकार, 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 इसलिए हम प्रकार के एक मूल्य है INT, तो कुछ इंट मूल्य. 1522 01:13:05,830 --> 01:13:07,220 मुझे लगता है हम क्या कहा जाता है पता नहीं है समाधान में यह - 1523 01:13:07,220 --> 01:13:08,500 n int. 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 ठीक है. 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 किसी को भी प्रयास किया, तो मुझे नहीं पता iteratively यह करने के लिए. 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 कैसे यह वास्तव में पर सवाल कि accomplishes? 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 >> आरओबी 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 इसके बारे में, बस छोड़ दिया traversing तीन, पहले से ही 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 हम ऐसा करने में सक्षम होने की जरूरत है सभी प्रिंट है उस के बीच में ourself. 1579 01:16:17,180 --> 01:16:21,250 इसलिए हमारे सामने सब कुछ बाहर प्रिंट. 1580 01:16:21,250 --> 01:16:27,710 Ourself प्रिंट, इसलिए वर्तमान नोड प्रिंट 36, नियमित printf, और उसके बाद 1581 01:16:27,710 --> 01:16:31,170 हमें बाद सब कुछ प्रिंट. 1582 01:16:31,170 --> 01:16:32,730 >> डेविड जे मालन: यह जहां प्रत्यावर्तन है वास्तव में सुंदर हो जाता है. 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 >> आरओबी BOWDEN: सवालों पर? 1589 01:16:50,530 --> 01:16:53,490 >> डेविड जे मालन: और करने के लिए एक छोटे से नीचे जहां संख्या, किसी को पता नहीं 1590 01:16:53,490 --> 01:16:55,190 इन नंबरों से आते हैं? 1591 01:16:55,190 --> 01:16:56,610 >> आरओबी BOWDEN: मैं सचमुच पता नहीं है. 1592 01:16:56,610 --> 01:16:59,794 >> डेविड जे मालन: वे दिखाई देते हैं प्रश्नोत्तरी भर में. 1593 01:16:59,794 --> 01:17:01,150 >> दर्शक: वे एक ही नंबर हैं? 1594 01:17:01,150 --> 01:17:01,910 >> डेविड जे मालन: उन लोगों की संख्या. 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 >> आरओबी BOWDEN: कोई अंतिम सवाल प्रश्नोत्तरी पर कुछ के बारे में? 1603 01:17:29,570 --> 01:17:32,608