Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Вот некоторые большие ответы и обеспеченные указатели:
Много подготовленное хранение данных, обработка и извлечение
ЭФФЕКТИВНОЕ Распределение (100's 1000-х машин) вышеупомянутых задач
Хорошая платформа, чтобы хранить необработанные данные и обработанные результаты
Хорошая платформа для получения результатов
, Как точно все они сделаны, получена в итоге всеми ссылками, которые Вы имеете в сводке
вопросаЗадержка уничтожается доступами к диску. Следовательно разумно полагать, что все данные, используемые для ответа на запросы, сохранены в памяти. Это подразумевает тысячи серверов, каждый копирующий один из многих черепков. Поэтому критический путь для поиска вряд ли поразит любую из их ведущих технологий распределенных систем GFS, MapReduce или BigTable. Они будут использоваться для обработки результатов поискового робота, грубо.
удобная вещь о поиске состоит в том, что нет никакой потребности иметь или решительно последовательные результаты или абсолютно актуальные данные, таким образом, Google не препятствуют ответить на запрос, потому что более актуальный результат поиска стал доступным.
, Таким образом, возможная архитектура довольно проста: серверы фронтэнда обрабатывают запрос, нормализуя его (возможно путем снятия стоп-слов и т.д.) тогда распределение, это к любому подмножеству копий владеет той частью пространства запроса (альтернативная архитектура должна разделить данные веб-страницами, так, чтобы одна из каждой копии установила потребности, с которыми свяжутся для каждого запроса). Многие, много копий, вероятно, запрашиваются, и самая быстрая победа ответов. Каждая копия имеет индекс, отображающий запросы (или условия отдельного запроса) к документам, которые они могут использовать для поиска результатов в памяти очень быстро. Если различные результаты возвращаются из других источников, сервер фронтенда может оценить их, поскольку он выкладывает HTML.
Примечание, что это - вероятно, длинный путь, отличающийся от того, что Google на самом деле делает - они спроектируют жизнь из этой системы, таким образом, сможет быть больше кэшей в странных областях, странных индексах и некоторой броской схеме выравнивания нагрузки среди других возможных различий.
Если Вам будет интересно более подробно о том, как кластер Google работает, я предложу эту реализацию с открытым исходным кодом их HDFS.
Это основано Mapreduce Google.
HenryR, вероятно, корректен.
Карта Уменьшает, не играет роль для самого поиска, но только используется для индексации. Проверьте , это видео интервью с Картой Уменьшает изобретателей .
TraumaPony является правильным. Тонны серверов и умной архитектуры для выравнивания нагрузки / кэширование и вуаля Вы можете выполнение запросов за менее чем 1 секунду. Было много статей о сетевой архитектуре сервисов Google описания. Я уверен, что можно найти их через Google:)
Эта ссылка это также очень информативный Негласно запроса Google
Аппаратные средства.
Партии и много аппаратных средств. Они используют значительные кластеры товарных ПК как их ферма сервера.
Можно найти в домашняя страница исследования Google некоторые указатели о научно-исследовательских работах записанный некоторыми парнями Google. Необходимо запустить с explanatio , файловая система Google и эти отображает/уменьшает алгоритм , чтобы попытаться понять то, что продолжается позади страниц Google.
Google нанимает лучший из лучших. Некоторые самые умные люди в IT работают в Google. У них есть фактически бесконечные деньги для броска в аппаратные средства и инженеров.
Они используют высоко оптимизированные механизмы хранения для задач, которые они выполняют.
Они географически определили местоположение ферм сервера.
Все знают, что это - потому что они используют голубей , конечно!
, О, да, это и Mapreduce.
У них в значительной степени есть локальная копия Интернета, кэшируемого на тысячах ПК в пользовательских файловых системах.
Одна из самых важных задержек является веб-серверами, получает Ваш запрос к веб-серверу и ответ назад. Эта задержка связывается скоростью света, которой даже должен повиноваться Google. Однако у них есть центры обработки данных во всем мире. В результате среднее расстояние до любого из них ниже. Это подавляет задержку. Несомненно, различие измеряется в миллисекундах, но имеет значение, если ответ должен прибыть в 1 000 миллисекунд.
Они реализовали хороший, распределенный, алгоритмы, работающие на огромном количестве аппаратных средств.
Одно то, что у меня есть aways, найденный забавным, - то, что Google на самом деле выполняется биоинформатикой (’kay, я нахожу это забавным, потому что я - bioinf†¦ штука). Позвольте мне объяснить.
Биоинформатика вначале имела проблему искать мелкие тексты в гигантских строках очень быстро. Для нас “gigantic string” является, конечно, DNA. Часто ни один DNA, но база данных нескольких ДНК от различных разновидностей/людей. Мелкие тексты являются белками или их генетическим дубликатом, геном. Большая часть первой работы специалистов в области вычислительной биологии была ограничена для нахождения гомологий между генами. Это сделано для установления функции недавно найденных генов путем замечания общих черт генам, которые уже известны.
Теперь, эти строки DNA становятся очень большими действительно и (с потерями!) поиск должен быть сделан чрезвычайно эффективно. Большая часть современной теории строкового поиска была таким образом разработана в контексте вычислительной биологии.
Однако некоторое время назад, стандартный текстовый поиск был исчерпан. Новый подход был необходим, который позволил искать большие строки в подлинейное время, то есть, не смотря на каждый отдельный символ. Это было обнаружено, что это может быть решено путем предварительной обработки большой строки и создания специальной индексной структуры данных по нему. Многие отличающиеся такие структуры данных были предложены. У каждого есть их достоинства и недостатки, но существует тот, который особенно замечателен, потому что он позволяет поиск в постоянное время. Теперь, в порядках величины, в которых работает Google, это больше не строго верно, потому что выравнивание нагрузки через серверы, предварительная обработка и некоторый другой сложный материал должны быть приняты во внимание.
, Но в сущности, так называемое индекс q-грамма позволяет поиск в постоянное время. Единственный недостаток: структура данных становится смехотворно большой. По существу, для обеспечения поиска строк с [максимум 112] q символы (отсюда имя) это требует таблицы, которая имеет одно поле для каждой возможной комбинации буквы q (то есть, <глоток> q S глоток>, где S является размером алфавита, скажите 36 (= 26 + 10)). Кроме того, должно быть одно поле для каждого положения буквы в строке, которая была индексирована (или в случае Google для каждого веб-сайта).
Для смягчения чистого размера Google будет, вероятно, использовать несколько индексов (на самом деле, они делают , для предложения услуг как исправление орфографических ошибок). Самые верхние не будут работать на символьном уровне, но на уровне слова вместо этого. Это уменьшает q, но он делает S бесконечно больше, таким образом, они должны будут использовать хеширование и таблицы коллизии для преодоления бесконечного числа различных слов.
На следующем уровне, эти хешированные слова укажут на другие индексные структуры данных, которые, в свою очередь, хешируют символы, указывающие на веб-сайты.
, Короче говоря, эти q - индексные структуры данных грамма являются возможно самой центральной частью алгоритма поиска Google. К сожалению, нет никаких хороших нетехнических документов, объясняющих, как q - индексы грамма работают. Единственная публикация, что я знаю это, содержит описание того, как такой индекс работает, †¦ увы, мой тезис бакалавра .
Это немного слишком много для помещения его в один ответ. http://en.wikipedia.org/wiki/Google_platform
Попытка обобщенного списка (который не зависит от Вас имеющий доступ к внутренним инструментам Google):