Моя жена подарила мне ПОЦЕЛУЙ, прежде чем я начал свою речь, она имела в виду «Короче, глупо». - анонимный

Практически всем организациям необходимо создавать и обмениваться документами / URL-адресами / ссылками для разных целей. Хотя создавать и обмениваться URL-адресами не так уж сложно, это становится немного уродливым, когда ссылка становится слишком большой и превышает 40 символов. Хотели бы вы, чтобы все субдомены и суб-субподразделы отображались вместе с названиями ваших отделов и т. Д. Вместе с вашим URL-адресом, который содержит блестящий тезис? Нет ? Тогда, возможно, вам нужно подумать о сокращении URL-адреса. Если вы не хотите использовать какие-либо сторонние ресурсы (например, Bit.ly), вы можете создать свой собственный bitly.

Для начала вам потребуется:

  1. DNS, указывающий на вашу систему, предпочтительно через сертификат wild card - например, если домен вашей компании - xyz.com, вы можете попросить своего администратора (конечно, после прохождения необходимых согласований) указать xyz.com/ ( ваше уникальное имя, скажем короткое). Итак, https://xyz.com/short - это ваш базовый URL.
  2. Вам понадобится хранилище для сокращенного индекса и длинного URL-адреса. (Любая база данных MySQL / Mongo, ElasticSearch и т. Д., Вы можете использовать огромные постоянные хэш-таблицы. В этой статье не обсуждается реализация) и другие параметры.

Теперь давайте сначала рассмотрим сокращенный код. Если вы планируете использовать комбинацию заглавных или строчных букв, цифр, то вы должны помнить, что существует 62 буквы (A-Z, a-z и 0–9). Если вы планируете использовать 5-буквенный сокращенный код, это означает, что для каждого места вы можете иметь любую из 62 букв. Итак, для 5 мест у вас может быть комбинация 62 * 62 * 62 * 62 * 62, что составляет более 916 миллионов уникальных 5-буквенных комбинаций. Опустите несколько слов, которые вы не хотите использовать в своих комбинациях, вы все равно получите более 900 миллионов комбинаций.

(С 6 местами для короткого URL-адреса у вас может быть 62 * 62 * 62 * 62 * 62 * 62, 56,8 миллиарда коротких URL-адресов.)

Теперь давайте разберемся с техническими деталями. (Тем, кто читал о двоичной и шестнадцатеричной системе, это будет немного легче понять.)

На мгновение давайте рассмотрим десятичную систему счисления. Вы создаете двухзначное число (10), когда у вас заканчиваются цифры (0–9), трехзначное число, когда у вас заканчиваются 2 цифры, и так далее. Если вы можете представить себе одометр, где зубцы откалиброваны как 0–9, вы получите 10, когда вы пересечете 9, до 100, когда вы пересечете 99 и так далее. Если у вас шестнадцатеричная система счисления, колесо одометра будет иметь 16 зубцов (0–15). Для короткой ссылки нам нужно будет рассмотреть одометр с 62 зубцами.

Допустим, это ваш уникальный набор. Вы можете захотеть рандомизировать это и использовать рандомизированный массив вместо приведенного ниже в вашей реальной реализации:

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

В этом списке (на языке C / Java) «0» занимает 0-е место, «1» - 1-е место, «a» - десятое место, «A» - третье место и так далее. Итак, если вы определяете свои короткие URL-адреса, числовой эквивалент будет следующим:

“00000” ==> 0

“00001” ==> 1

“00009” ==>9

“0000a” ==>10

“0000b” ==> 11

“0000A” ==>36

“0000B” ==> 37

“0000Z” ==>61

“00010” ==> 62

Если задуматься, мы обсуждаем систему счисления с основанием 62 (десятичная система с основанием 10, шестнадцатеричная с основанием 16 и т. Д.). Следовательно, любая комбинация из 5 букв в этой системе счисления однозначно идентифицирует уникальное десятичное число. Давайте использовать это в примере.

«Https://xyz.com/short/h3DOy где h3DOy - это короткий код (буква O - заглавная, а не нуль)

Сравнивая со списком, мы имеем:

h - 17-я буква

3–3 буква

D- 39-я буква

O - 50-я буква

y - 34 буква

Таким образом, десятичный эквивалент этой комбинации букв: 17 * 6²⁴ + 3 * 6²³ + 39 * 6²² + 50 * 6²¹ + 34 * 6²⁰ = 251197712 + 714984 + 149916 + 3100 + 34.

Таким образом, для баз данных становится легко выбрать уникальный длинный URL-адрес (или хэш-карты и т. Д., Любой числовой поиск быстрее, чем поиск по строкам) из соответствующего короткого URL-адреса.

Легко, правда?

Теперь, когда мы знаем, как создавать собственные биты, давайте посмотрим на другие варианты его использования:

  1. Создайте отдельные короткие URL-адреса для людей, которым вы хотите отправить электронное письмо / SMS. Запрограммируйте свое приложение таким образом, чтобы, как только кто-нибудь попадает в него (и, конечно, до того, как оно будет перенаправлено за доли секунды), вы записываете этот бит, чтобы его использовали. Теперь вы знаете, кто читал вашу статью, а кто нет.
  2. Зарезервированные слова или статические URL-адреса. Интересно, почему вы почти никогда не видите словарного слова или имени или чего-то еще, с чем вы можете идентифицироваться, когда используете общедоступный сокращатель URL-адресов (например, https://bit.ly)? Потому что они оставляют за собой эти слова. Есть ли какие-нибудь причудливые слова, которые вы бы хотели оставить для себя?
  3. Вы также можете повторно использовать короткие URL-адреса, так как через некоторое время использование этих URL-адресов будет потеряно, что даст вам гибкость для повторного использования.