предисловие
Хорошие братья, как и титул, Ань Цзян был оскорблен, и оскорбленное тело было неиссякаемым, оно сводится к блюду (настоящему блюду).
То, что произошло, было действительно горько-сладкой слезой. Справедливости ради, я все еще был очень уверен в себе, прежде чем снова поехал (это распирает от уверенности?). По ходу интервью я обнаружил, что больше не могу сдерживаться. Я действительно не знал основных принципов работы базы данных и сети.
Если вы берете интервью у компании, то говорят, что стартап был создан командой во главе с техническим боссом на Weibo (я не знаю, так ли это, во всяком случае, это большая фабрика) (конечно, это все еще в Гуанчжоу, у вас есть хороший брат, который хочет бросить ему вызов?Область комментариев скажите мне). Я вошел и задал вопрос для интервью, если быть точным, вопрос напрямую связан со стандартным байтом. Хороший парень смотрит на вопрос вероятности монеты, два алгоритма (помните, что один из них является алгоритмом на месте) и еще одинMysql
изMVCC
Принцип реализации (похоже, тут другойsynchronized
иvolatile
принцип). Сделано за 45 минут.
Думаете, это закончилось? Еще больше оскорблял меня интервьюер: я практически перебивал меня, если говорил какой-то технический момент. как следующееHttp 与 Netty 数据传输的区别
Эта тема изFeign
иDubbo
взято из разницы. Как бы это сказать, это всего лишь точка и деталь, перед этим режимом действительно сложно устоять! ! !
В теме я записал несколько хороших, на которые не ответили, и Ань Цзян не смог сказать, сложно это или нет (картинки все передвинул мой брат С, а в конце есть ссылка).
Какова основная структура данных индекса Mysql
Mysql
Структура данных, используемая индексом,B+
дерево (на фото ниже), сB树
Основное отличие в том, чтоB+
Дерево различает листовые узлы и нелистовые узлы. Только конечные узлы хранят данные, а нелистовые узлы хранят только значения ключей.
Двусторонние указатели используются для соединения конечных узлов, а нижние конечные узлы образуют двунаправленный упорядоченный связанный список.
Почему структура данных индекса Mysql выбирает дерево B+ вместо красно-черного дерева или других деревьев
Давайте поговорим об использовании этогоB+
Достаточно немного дерева, и тогда я снова ответил одиночеством (спросил меня в тот момент, я был немного смущен, на самом деле, я знал это, но я не сказал ему).
-
B+
Дерево представляет собой многостороннее сбалансированное бинарное дерево, по сравнению с красно-черным деревом и бинарным деревом высота всей древовидной структуры будет значительно уменьшена, что также означает, что количество поисков с использованием индекса будет уменьшено, тем самым повышая эффективность запросов. -
B+
Данные различаются между конечными узлами и нелистовыми узлами, и только конечные узлы фактически будут хранить данные. так какMysql
изInnoDB
механизм хранения один разIO
Объем данных, которые будут прочитаны на одной странице (по умолчанию 16 КБ).B树
И конечные узлы, и нелистовые узлы будут хранить реальные данные, то есть по мере увеличения количества столбцов занимаемое пространство будет увеличиваться, соответственно дерево будет становиться выше, а количество дисковых операций ввода-вывода будет увеличиваться. -
использовать
B+
Улучшенная поддержка поиска диапазона. Тут главное производительность.B树
Поиск по диапазону также поддерживается, но его нужно искать вниз или вверх по дереву.B+
Двунаправленный упорядоченный связанный список поддерживается в конечном узле, поэтому он, естественно, подходит для поиска по диапазону.
Как индексный файл Mysql загружается в память
Во время интервью здесь я не понял, что имел в виду интервьюер.Когда я вышел, чтобы сесть на автобус, чтобы просмотреть, я вдруг вспомнил. Что интервьюер должен знать, так это процесс использования поиска по индексу, который включает в себя загрузку файла индекса страницы (я слишком плохой).
Здесь необходимо подчеркнуть, что индексный файл загружается постранично.Например, я хочу сделатьid
(индекс первичного ключа) эквивалентный поиск, приблизительный процесс выглядит следующим образом:
Предположим, мы запрашиваем данные со значением, равным 9. путь запроса磁盘块1
->磁盘块2
->磁盘块6
.
Первый дисковый ввод-вывод: будет磁盘块1
загрузить в память, пройти сравнение в памяти с нуля,9 < 15
, налево, к адресации диска磁盘块2
.
Второй диск IO: будет磁盘块2
загрузить в память, пройти сравнение в памяти с нуля,7 < 9 < 12
, на диск, обращающийся к расположению磁盘块6
.
Третий диск IO: будет磁盘块6
Загрузить в память, пройти сравнение в памяти с начала, найти 9 в третьем индексе, получитьData
,еслиData
Сохраненные записи строк, выборкаData
, запрос заканчивается. Если адрес диска сохранен, данные должны быть извлечены с диска в соответствии с адресом диска, и запрос завершается. (Здесь следует различать, чтоInnoDB
серединаData
хранится как данные строки, аMyIsam
Хранится в адрес диска. )
Как TCP обеспечивает надежность передачи
Когда интервьюер спросил меня об этом, мой ответ был我不会
(Это правда, я действительно не)!!!
В этой статье я расскажу о нескольких моментах для обеспечения надежности, не делая глубокого анализа. Я тоже не буду, пора изучать сетевой материал.
-
TCP
Механизм управления соединением трехстороннего рукопожатия и четырехсторонней волны при установлении соединения (я ответил только на этот в свое время, а потом интервьюер спросил, безопасна ли и надежна ли передача из-за этого. Очень хочу ответить да из). -
Контрольная сумма.
TCP
Контрольная сумма вычисляется с помощьюUDP
то же, добавить в расчет12byte
Псевдозаголовок , объем проверки включаетTCP
заголовок и часть данных, ноUDP
Поле контрольной суммы является необязательным, аTCP
это должно быть. Метод расчета такой: у отправителя весь сегмент делится на несколько16位
Затем добавьте все сегменты и сохраните результат в поле контрольной суммы.Приемник использует тот же метод для расчета.Если окончательный результат состоит в том, что все биты контрольного поля равны 1, это правильно (0 в UDP является правильным), иначе будет ошибка. -
серийный номер.
TCP
Данные каждого байта нумеруются, что является порядковым номером. Эффект следующий:
- 3.1 Гарантированная достоверность (когда в полученных данных всегда отсутствует определенный порядковый номер, это можно узнать сразу).
- 3.2 Гарантировать упорядоченное поступление данных.
- 3.1 Для повышения эффективности он может реализовывать множественную отправку и одно подтверждение.
- 3.1 Удалить повторяющиеся данные.
-
механизм ответа подтверждения (
ACK
).TCP
Надежная передача данных достигается за счет механизма подтверждения. существуетTCP
В заголовке есть флаг -ACK
, этот бит флага указывает, действителен ли номер подтверждения. Приемник подтвердит поступление данных последовательно, когда бит флагаACK=1
При подтверждении того, что поле подтверждения заголовка действительно. При подтверждении значение поля подтверждения указывает, что данные до этого значения поступили по порядку. Если отправитель получит сообщение подтверждения для отправленных данных, он продолжит передачу следующей части данных, а если отправитель не получил сообщение подтверждения по истечении определенного периода времени, он запустит механизм повторной передачи. -
Механизм повторной передачи по тайм-ауту. При отправке сообщения без получения подтверждения от получателя в течение определенного периода времени отправитель осуществляет повторную передачу (обычно после отправки сегмента сообщения устанавливается будильник, а повторная передача выполняется, если в момент отправки ответа не получено). сообщение).
-
управление потоком. Скорость, с которой получатель может обрабатывать данные, ограничена.Если отправитель отправляет данные слишком быстро, буфер получателя будет заполнен, а отправитель продолжит отправку, что приведет к потере пакетов, что, в свою очередь, вызовет ряд цепных реакций такие как потеря пакетов и повторная передача.
-
контроль заторов. Управление потоком решает проблему потери пакетов, которая может быть вызвана скоростью передачи между двумя хостами, и, с одной стороны, обеспечивает надежность передачи данных TCP. Однако, если сеть сильно перегружена, отправка данных в это время увеличит нагрузку на сеть, поэтому отправленный сегмент данных, вероятно, превысит максимальное время существования и не достигнет получателя, что приведет к потере пакетов. к этому концу
TCP
Вводится механизм запуска, и сначала отправляется небольшой объем данных, как и в случае с Pathfinder, после определения текущего состояния перегрузки сети он решает, как быстро передавать данные. Здесь вводится окно перегрузки.
Разница между передачей данных Http и Netty
На самом деле вопросRPC
вывел. я спросилDubbo
иFeign
Какая разница? В это время Ань Цзян прыгнул в ловушку, потому чтоDubbo
используетNetty
транспорта, а затем вызвать собственный метод через отражение, в то время какFeign
черезRestTemplate
перечислитьHttp
способ интерфейса. Потом я попал в объятия интервьюера, что привело к этому вопросу, и я снова одиноко ответил.
Слова здесь в основном дляHttp
иScoket
,Netty
поддерживать себяHttp
из.
-
HTTP
Это объектно-ориентированный объект, принадлежащий прикладному уровню.协议
;иScoket
это приложение сTCP/IP
Протокол взаимодействия обеспечивает сокеты (Socket
)Интерфейс. -
HTTP
Относится к короткому соединению (хотя длинное соединение поддерживается, но время соединения определяется сервером);Scoket
Это долгое соединение, обычноSocket
соединениеTCP
соединение, так чтоSocket
Как только соединение установлено, обе стороны связи начинают отправлять содержимое данных друг другу до тех пор, пока обе стороны не разорвутся. -
HTTP
Он основан на режиме запрос/ответ.Server
конец иclient
Роли терминала не взаимозаменяемы;Scoket
Он относится к полнодуплексной связи,Server
конец иclient
могут общаться друг с другом.
Сравнительная метафора:Http
Это автомобиль, в котором предусмотрена определенная форма упаковки или отображения данных;Socket
Это движок, обеспечивающий возможность сетевого взаимодействия.
Ссылаться на: