Можно ли сжать URL? - PullRequest
       12

Можно ли сжать URL?

0 голосов
/ 20 апреля 2019

Можно ли сжать случайный URL

https://a.scdn.gr/images/sku_main_images/014650/14650949/20180416114151_amd_ryzen_5_2600.jpeg

в гораздо меньший текст, как этот?

ta7f^*(GD&FY6FTGsdfsfYHU(*

Если бы вам приходилось иметь дело с миллионами URL, которые разделяют какую-то часть, как бы вы их сжали?

https://a.scdn.gr/images/sku_main_images/014650/14650949/20180416114151_amd_ryzen_5_2600.jpeg
https://a.scdn.gr/images/sku_main_images/014650/14650949/20180416114151_amd_ryzen_5_2700.jpeg
https://a.scdn.gr/images/sku_main_images/014650/14650949/20180416114151_amd_ryzen_5_2700x.jpeg
...

Мой способ будет:

  1. Сделать счетчик base-256.

Base-10 может считать до 9999 с 4 цифрами.

1 байт может представлять 256 символов

Base-256 может считать до 4 294 967 296 с 4 цифрами.

  1. Разбейте каждый URL на части и проиндексируйте его, используя base-256.

Например, "http://" находится под номером 0 ," a.scdn.gr"находится под номером 56762835 , который представлен как % & r в base-256.

  1. Сохранить каждый URL как последовательность индексов.

Например,

https://a.scdn.gr/images/sku_main_images/014650/14650949/20180416114151_amd_ryzen_5_2700.jpeg

преобразуется в 7 частей:

0/&^T/&^Y/&^e/*JE/(E*U/*EHG

Мне нужно будет сделать 7 отдельных выборок частей, но мне все равно, поскольку я буду выполнять критическую обработку для нескольких URL-адресов одновременно, проблема заключается в их хранении.

Я сохраню миллион раз текст " & ^ T / " и один раз текст " index: & ^ T, content: a.scdn.gr/" вместо сохранить миллион раз текст " a.scdn.gr / "

~ 50% сжатия.

* 1 058 * * Пример 1 059 *

1 байт 8 бит 256 символов

base-10: 1943 = 0x10 ^ 4 + 1x10 ^ 3 + 9x10 ^ 2 + 4x10 ^ 1 + 3x10 ^ 0 = "1", "9", "4", "3"

base-256: 1943 = 0x256 ^ 3 + 0x256 ^ 3 + 0x256 ^ 2 + 7x256 ^ 1 + 151x256 ^ 0 = "$", "*" ($ = 7, * = 151)

...