Клиент-сервер
- централизованность.Peer-to-Peer
- децентрализованность.Как уже стало понятно, в централизованных системах всегда есть "центр" - главный сервер, хранящий всю информацию.
В случае децентрализованных систем - компьютеры (ноды) соединены друг с другом и поддерживают консесус.
Плюсы таких систем:
➕ Все, что попало в блокчейн не может быть изменено или удалено
➕ Если любой из компьютеров отключится от сети, сгорит или будет украден, то у остальных участников по прежнему останется свой экземпляр базы данных.
➕ Прозрачность. В открытых блокчейнах все данные могут быть просмотренны любым другим участником.
У таких систем также есть минусы и возможности взлома, но до этого дойдем немного позже 🙊
👍6
Консенсус
Каждый блокчейн основан на протоколе, а учитывая то, что каждый из блокчейнов служит своей цели, то и количество протоколов явно больше одного. Кстати, блокчейн – это не только про криптовалюты, эти «базы данных» используются и в других сферах и только набирают обороты.
У каждого блокчейна есть свой протокол как некий свод правил и действий, направленных на передачу данных. Блокчейн-протокол – это тот же набор правил, благодаря которому обеспечивается безопасность транзакций в сети того или иного блокчейна. Сети блокчейнов функционируют, потому что они децентрализованы. Это означает, что каждый узел в сети должен проверять транзакции. Узел обычно представляет собой компьютер или подобную систему.
В свою очередь существует алгоритм консенсуса – это механизм, который проверяет верность тех или иных правил, то есть он проверяет, что транзакция верна и протокол соблюден.
Существуют различные механизмы консенсуса:
Proof-of-Work(PoW) - Bitcoin;
Proof-of-Stake(PoS) - Ethereum, Solana;
Delegated Proof-of-Stake(DPoS) - Lisk, Steem;
Proof-of-Action(PoA) - Decred, Espers
Proof-of-Authority(PoA) - VeChain, Ethereum Kovan
А также многие другие механизмы о которых поговорим подробнее в следующих постах.
Каждый блокчейн основан на протоколе, а учитывая то, что каждый из блокчейнов служит своей цели, то и количество протоколов явно больше одного. Кстати, блокчейн – это не только про криптовалюты, эти «базы данных» используются и в других сферах и только набирают обороты.
У каждого блокчейна есть свой протокол как некий свод правил и действий, направленных на передачу данных. Блокчейн-протокол – это тот же набор правил, благодаря которому обеспечивается безопасность транзакций в сети того или иного блокчейна. Сети блокчейнов функционируют, потому что они децентрализованы. Это означает, что каждый узел в сети должен проверять транзакции. Узел обычно представляет собой компьютер или подобную систему.
В свою очередь существует алгоритм консенсуса – это механизм, который проверяет верность тех или иных правил, то есть он проверяет, что транзакция верна и протокол соблюден.
Существуют различные механизмы консенсуса:
Proof-of-Work(PoW) - Bitcoin;
Proof-of-Stake(PoS) - Ethereum, Solana;
Delegated Proof-of-Stake(DPoS) - Lisk, Steem;
Proof-of-Action(PoA) - Decred, Espers
Proof-of-Authority(PoA) - VeChain, Ethereum Kovan
А также многие другие механизмы о которых поговорим подробнее в следующих постах.
👍6
Proof-Of-Stake (PoS)
Proof-Of-Stake - Самый популярный механизм консенсуса в блокчейне, на его основе построены многие криптовалюты:
Solana, Cardano, Tezos, Algoran, а после недавнего обновления и Ethereum.
С механизмом PoS участникам сети нет необходимости иметь дорогое обарудование для майнинга, ведь заработок осуществляется через стейкинг.
Также из приемуществ можно отметить малое потребление энергии для генерации блоков и обеспечения безопасности блокчейна.
При разработке архитектуры блокчейна, который является децентрализованным протоколом для переводов с постоянно обновляемой базой данных, возникает два ключевых вопроса:
1. Кому и по какому принципу предоставить право генерировать новые блоки;
2. Как будут одобряться транзакции для обеспечения защиты от двойных трат и прочих злоупотреблений.
Решение этих вопросов привело к появлению нескольких механизмов консенсуса, то есть наборов правил, по которым участники децентрализованной сети договариваются о том, как именно транзакции могут быть утверждены и включены в новые блоки.
Принцип работы Proof-Of-Stake:
Данный механизм дает право на управление блокчейном всем участникам в соответсвии с долей монет, которой они владеют.
Например, в криптовалюте Nxt с ее «каноническим» механизмом PoS шанс сформировать очередной блок есть у всех пользователей, имеющих в официальном кошельке NXT Client не менее 1002 NXT.
Чем больше монет в кошельке NXT, тем больше вероятность, что он получит право сформировать новый блок, и тогда пользователю достанутся все комиссии за транзакции, попавшие в данный блок. В идеальном случае кошелек, который владеет 1% монет, будет формировать 1% всех новых блоков.
Proof-Of-Stake - Самый популярный механизм консенсуса в блокчейне, на его основе построены многие криптовалюты:
Solana, Cardano, Tezos, Algoran, а после недавнего обновления и Ethereum.
С механизмом PoS участникам сети нет необходимости иметь дорогое обарудование для майнинга, ведь заработок осуществляется через стейкинг.
Также из приемуществ можно отметить малое потребление энергии для генерации блоков и обеспечения безопасности блокчейна.
При разработке архитектуры блокчейна, который является децентрализованным протоколом для переводов с постоянно обновляемой базой данных, возникает два ключевых вопроса:
1. Кому и по какому принципу предоставить право генерировать новые блоки;
2. Как будут одобряться транзакции для обеспечения защиты от двойных трат и прочих злоупотреблений.
Решение этих вопросов привело к появлению нескольких механизмов консенсуса, то есть наборов правил, по которым участники децентрализованной сети договариваются о том, как именно транзакции могут быть утверждены и включены в новые блоки.
Принцип работы Proof-Of-Stake:
Данный механизм дает право на управление блокчейном всем участникам в соответсвии с долей монет, которой они владеют.
Например, в криптовалюте Nxt с ее «каноническим» механизмом PoS шанс сформировать очередной блок есть у всех пользователей, имеющих в официальном кошельке NXT Client не менее 1002 NXT.
Чем больше монет в кошельке NXT, тем больше вероятность, что он получит право сформировать новый блок, и тогда пользователю достанутся все комиссии за транзакции, попавшие в данный блок. В идеальном случае кошелек, который владеет 1% монет, будет формировать 1% всех новых блоков.
👍5
Proof-Of-Work (PoW)
Сатоши Накомото использовал концепцию PoW в первой криптовалюте - bitcoin.
PoW — алгоритм, который позволяет всем нодам договориться о единой версии блокчейна (достичь консенсуса),
кроме того он отвечает за эмиссию(создание) новых монет в блокчейне.
Все слышали о майнинге, так вот майнинг - одна из главных частей Proof-Of-Work алогритма.
Этот алгоритм организовывает добычу новых блоков в блокчейне (помните, что такое блоки?).
Концепция помогает подтверждать транзакции и верифицировать данные блокчейна на компьютерах участников системы.
В чем суть Proof-of-Work
PoW помогает организовать работу сети. Процесс невозможно запустить без майнеров — участников рынка, которые подсоединяют свое вычислительное оборудование к сети криптовалюты, чтобы решать сетевые задачи в обмен на награду (комиссионные, плюс сетевая награда за добычу каждого блока). Такую работу называют майнингом.
Как работает PoW в контектсе криптовалют:
1. Пользователь создает заявку на транзакцию и устонавливают комиссию (награду для майнера, который проведет операцию).
Чем больше комиссия - тем быстрее обработают его заявку.
2. Вычислительное оборудование майнеров проводит операцию. Проверкой достоверности транзакций занимаются специальные сетевые узлы — ноды.
В случае, если все верно, операцию включают в блок, который, в свою очередь, становится частью общего блокчейна криптовалюты.
Чем больше у майнера вычислительных мощностей — тем выше будет его доход.
Майнинг - тема для отдельного поста, до этого еще доберемся, а о Proof-Of-Work пока достаточно знать этого, в будущем будем возращаться к нему и другим механизмам консенсуса.
Сатоши Накомото использовал концепцию PoW в первой криптовалюте - bitcoin.
PoW — алгоритм, который позволяет всем нодам договориться о единой версии блокчейна (достичь консенсуса),
кроме того он отвечает за эмиссию(создание) новых монет в блокчейне.
Все слышали о майнинге, так вот майнинг - одна из главных частей Proof-Of-Work алогритма.
Этот алгоритм организовывает добычу новых блоков в блокчейне (помните, что такое блоки?).
Концепция помогает подтверждать транзакции и верифицировать данные блокчейна на компьютерах участников системы.
В чем суть Proof-of-Work
PoW помогает организовать работу сети. Процесс невозможно запустить без майнеров — участников рынка, которые подсоединяют свое вычислительное оборудование к сети криптовалюты, чтобы решать сетевые задачи в обмен на награду (комиссионные, плюс сетевая награда за добычу каждого блока). Такую работу называют майнингом.
Как работает PoW в контектсе криптовалют:
1. Пользователь создает заявку на транзакцию и устонавливают комиссию (награду для майнера, который проведет операцию).
Чем больше комиссия - тем быстрее обработают его заявку.
2. Вычислительное оборудование майнеров проводит операцию. Проверкой достоверности транзакций занимаются специальные сетевые узлы — ноды.
В случае, если все верно, операцию включают в блок, который, в свою очередь, становится частью общего блокчейна криптовалюты.
Чем больше у майнера вычислительных мощностей — тем выше будет его доход.
Майнинг - тема для отдельного поста, до этого еще доберемся, а о Proof-Of-Work пока достаточно знать этого, в будущем будем возращаться к нему и другим механизмам консенсуса.
👍4🔥2
Механизмы Консесуса
Надеюсь главную суть из последних постов вы поняли, но в кратце напомню:
Блокчейн - это база-данных, которая хранится на большом кол-ве компьютеров (нодах) и этим компьютерам необходимо приходить к консесусу (другими словами, они должны содержать "правильные" и "одинаковые" данные), для этого необходимы механизмы консесуса и в зависимости от задач блокчейна они могут быть разными🤔
PoS и PoW описаные выше - самые популярные механизмы консенсуса, поэтому они стоили отдельных постов.
Сейчас, когда стало понятно, что это и для чего они нужны мы пробежимся по некоторым другим механизмам (их на самом деле достаточно много и каждый имеет свою плюсы и минусы).
Delegated Proof-of-Stake (DPoS)
Похож на Proof-of-Stake, за исключением того, что он включает в себя механизм голосования и делегирования, чтобы стимулировать пользователей защищать сеть и проверять блоки с помощью монет, оставленных в качестве залога. Благодаря данному залогу пользователи могут участвовать в голосовании, где выбирают делегатов, которые будут ответственны за все аспекты проведения транзакций
Блокчейны с DPoS - Cosmos, Tron, EOS.
Proof-of-Action (PoA)
Доказательство активности (PoA) - это гибрид механизмов консенсуса PoW и PoS.
В системах PoA процесс майнинга начинается, как и в PoW, когда майнеры соревнуются в решении сложной математической задачи, используя огромные вычислительные мощности. Однако после того, как блок добыт, система переключается на PoS, при этом успешно сгенерированный заголовок блока транслируется в сеть PoA. Затем случайным образом выбирается группа валидаторов, которые подписывают хэш, подтверждая новый блок.
Блокчейны с PoA - Decred, Espers
Proof-of-Authority (PoA)
В PoA валидаторы не делают блокируют свои монеты в стейкинге. Вместо этого они должны поставить на кон свою репутацию за право подтверждать блоки. Это сильно отличается от большинства протоколов блокчейна, которые обычно не требуют раскрытия личности для участия.
Блокчейны с PoA - JP Morgan, VeChain
Proof of Burn (PoB)
В PoB майнеры получают право добывать блок, "сжигая" (уничтожая) заранее определенное количество токенов проверяемым способом - а именно, отправляя их на "адрес сжигателя", где их нельзя восстановить или потратить. Чем больше монет сожжено, тем больше шансов быть выбранным случайным образом.
Блокчейны с PoB - Slimcoin, Counterparty, Factom
Proof of Space (PoSpace)
PoSpace - основывает свой алгоритм майнинга на количестве свободного места на жестком диске майнера.
Майнеры заранее генерируют список всех возможных хэшей в процессе, называемом "планированием". Затем эти схемы хранятся на жестком диске. Чем больше объем памяти у майнера, тем больше возможных решений. Чем больше решений, тем выше шансы получить правильную комбинацию хэшей и выиграть вознаграждение.
Блокчейны с PoS - Chia, Burstcoin, Signum, Storj
На этом мы закончим краткий экскурс по механизмам консенсуса и будем продвигаться дальше и прыгать в кроличью нору 😅
Надеюсь главную суть из последних постов вы поняли, но в кратце напомню:
Блокчейн - это база-данных, которая хранится на большом кол-ве компьютеров (нодах) и этим компьютерам необходимо приходить к консесусу (другими словами, они должны содержать "правильные" и "одинаковые" данные), для этого необходимы механизмы консесуса и в зависимости от задач блокчейна они могут быть разными🤔
PoS и PoW описаные выше - самые популярные механизмы консенсуса, поэтому они стоили отдельных постов.
Сейчас, когда стало понятно, что это и для чего они нужны мы пробежимся по некоторым другим механизмам (их на самом деле достаточно много и каждый имеет свою плюсы и минусы).
Delegated Proof-of-Stake (DPoS)
Похож на Proof-of-Stake, за исключением того, что он включает в себя механизм голосования и делегирования, чтобы стимулировать пользователей защищать сеть и проверять блоки с помощью монет, оставленных в качестве залога. Благодаря данному залогу пользователи могут участвовать в голосовании, где выбирают делегатов, которые будут ответственны за все аспекты проведения транзакций
Блокчейны с DPoS - Cosmos, Tron, EOS.
Proof-of-Action (PoA)
Доказательство активности (PoA) - это гибрид механизмов консенсуса PoW и PoS.
В системах PoA процесс майнинга начинается, как и в PoW, когда майнеры соревнуются в решении сложной математической задачи, используя огромные вычислительные мощности. Однако после того, как блок добыт, система переключается на PoS, при этом успешно сгенерированный заголовок блока транслируется в сеть PoA. Затем случайным образом выбирается группа валидаторов, которые подписывают хэш, подтверждая новый блок.
Блокчейны с PoA - Decred, Espers
Proof-of-Authority (PoA)
В PoA валидаторы не делают блокируют свои монеты в стейкинге. Вместо этого они должны поставить на кон свою репутацию за право подтверждать блоки. Это сильно отличается от большинства протоколов блокчейна, которые обычно не требуют раскрытия личности для участия.
Блокчейны с PoA - JP Morgan, VeChain
Proof of Burn (PoB)
В PoB майнеры получают право добывать блок, "сжигая" (уничтожая) заранее определенное количество токенов проверяемым способом - а именно, отправляя их на "адрес сжигателя", где их нельзя восстановить или потратить. Чем больше монет сожжено, тем больше шансов быть выбранным случайным образом.
Блокчейны с PoB - Slimcoin, Counterparty, Factom
Proof of Space (PoSpace)
PoSpace - основывает свой алгоритм майнинга на количестве свободного места на жестком диске майнера.
Майнеры заранее генерируют список всех возможных хэшей в процессе, называемом "планированием". Затем эти схемы хранятся на жестком диске. Чем больше объем памяти у майнера, тем больше возможных решений. Чем больше решений, тем выше шансы получить правильную комбинацию хэшей и выиграть вознаграждение.
Блокчейны с PoS - Chia, Burstcoin, Signum, Storj
На этом мы закончим краткий экскурс по механизмам консенсуса и будем продвигаться дальше и прыгать в кроличью нору 😅
👍4👏1
Первое видео на канале о паттернах проектирования 👾
https://youtu.be/RtiAvBTDdzw
Полезные ссылки для изучения паттернов проектирования:
https://refactoring.guru/design-patterns
https://youtu.be/RtiAvBTDdzw
Полезные ссылки для изучения паттернов проектирования:
https://refactoring.guru/design-patterns
YouTube
Топ шаблонов проектирования, которые должен знать КАЖДЫЙ разработчик!
Tg: https://t.me/+z4BRlLtV4GI3OWUy
Inst: instagram.com/alextech.io
00:00 - Вступление
01:25 - Factory
02:48 - Observer
03:51 - Builder
04:35 - Singleton
06:10 - Strategy
07:18 - Adapter
08:10 - Facade
Полезные ссылки для изучения паттернов проектирования:…
Inst: instagram.com/alextech.io
00:00 - Вступление
01:25 - Factory
02:48 - Observer
03:51 - Builder
04:35 - Singleton
06:10 - Strategy
07:18 - Adapter
08:10 - Facade
Полезные ссылки для изучения паттернов проектирования:…
❤4👍1🔥1
Новое видео о 20 ключевых концепций системного проектирования, начиная от вертикального и горизонтального масштабирования, балансировщика нагрузок и кэширования до более сложных тем, таких как gRPC, WebSockets, SQL и NoSQL.
https://youtu.be/Qk6sVSLjHFo
Полезные ссылки:
Алгоритмы балансировки нагрузки: https://habr.com/ru/companies/ruvds/articles/732648/
https://youtu.be/Qk6sVSLjHFo
Полезные ссылки:
Алгоритмы балансировки нагрузки: https://habr.com/ru/companies/ruvds/articles/732648/
YouTube
20 концептов System Design за 10 минут
Tg: https://t.me/+z4BRlLtV4GI3OWUy
Inst: instagram.com/alextech.io
Таймкоды:
00:00 Вступление
00:18 Вертикальное масштабирование
00:40 Горизонтальное масштабирование
00:51 Балансировщик нагрузок
01:15 Кеширование
02:01 IP-адрес
02:38 TCP/IP
03:05 DNS
03:40…
Inst: instagram.com/alextech.io
Таймкоды:
00:00 Вступление
00:18 Вертикальное масштабирование
00:40 Горизонтальное масштабирование
00:51 Балансировщик нагрузок
01:15 Кеширование
02:01 IP-адрес
02:38 TCP/IP
03:05 DNS
03:40…
👍5🔥1
В какие дни?
Anonymous Poll
35%
Понедельник
10%
Вторник
15%
Среда
25%
Четверг
30%
Пятница
20%
Суббота
30%
Воскресенье
Сделал ролик с лайв кодингом, где будем писать свой балансировщик нагрузок, с 3-мя видами алгоритмов балансировки:
Ознакомительное видео, для того, чтобы глубже понять, как они работают под капотом.
Пока пытаюсь выяснить в какие дни недели лучше выкладывать видео?
(Можно выбрать несколько вариантов ответа)
Round Robin, Weighted Round Robin и IP Hash
Ознакомительное видео, для того, чтобы глубже понять, как они работают под капотом.
Пока пытаюсь выяснить в какие дни недели лучше выкладывать видео?
(Можно выбрать несколько вариантов ответа)
👍5🌭1
Алгоритмы балансировки нагрузки и как они работают!
Видео с лайвкодингом на канале! 🖖
https://www.youtube.com/watch?v=JX74ZtaRzes
Видео с лайвкодингом на канале! 🖖
https://www.youtube.com/watch?v=JX74ZtaRzes
YouTube
Пишем СВОЙ балансировщик нагрузки на Node.js и TypeScript! | Алгоритмы балансировки
Какие есть алгоритмы балансировки нагрузки и как они работают?
Оставь комментарий о чем бы тебе хотелось новое видео, комментарии помогают продвижению канала!)
Tg: https://t.me/+z4BRlLtV4GI3OWUy
20 Концепций System Design - https://www.youtube.com/wa…
Оставь комментарий о чем бы тебе хотелось новое видео, комментарии помогают продвижению канала!)
Tg: https://t.me/+z4BRlLtV4GI3OWUy
20 Концепций System Design - https://www.youtube.com/wa…
❤5👍1🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
Как насчет подобных видео?
Поразбираем интересные задачи с собеседований Google, Apple, Amazon и тд
Поразбираем интересные задачи с собеседований Google, Apple, Amazon и тд
👏7❤1👍1💩1
Новое видео о том как работает автозаполнение в Google поиске и зачем там префиксное дерево😌
https://www.youtube.com/watch?v=2bvUCTspCZs
https://www.youtube.com/watch?v=2bvUCTspCZs
YouTube
Как бы я сделал Google | Префиксное дерево (Trie)
Tg: https://t.me/+z4BRlLtV4GI3OWUy
В данном видео мы разберем, как один из крупнейших технологических гигантов - Google, использует современные алгоритмы и структуры данных для оптимизации процесса автозаполнения поисковых запросов.
Таймкоды:
00:00 - Вступление…
В данном видео мы разберем, как один из крупнейших технологических гигантов - Google, использует современные алгоритмы и структуры данных для оптимизации процесса автозаполнения поисковых запросов.
Таймкоды:
00:00 - Вступление…
👍4🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Есть такая интересная штука:
Игра «Жизнь» — клеточный автомат, придуманный английским математиком Джоном Конвеем в 1970 году. Это игра без игроков, в которой человек создаёт начальное состояние, а потом лишь наблюдает за её развитием.
Решил накидать вариант этой игры,выглядит прикольно позалипать, можно запустить в любом браузере, выбрать случайное начальное состояние или мышкой самому накликать 🐈
Дает не предсказуемые и интересные варианты
Игра «Жизнь» — клеточный автомат, придуманный английским математиком Джоном Конвеем в 1970 году. Это игра без игроков, в которой человек создаёт начальное состояние, а потом лишь наблюдает за её развитием.
Решил накидать вариант этой игры,выглядит прикольно позалипать, можно запустить в любом браузере, выбрать случайное начальное состояние или мышкой самому накликать 🐈
Дает не предсказуемые и интересные варианты
👍5
Turbofan - важнейшая часть движка v8, на котором работает (Node.js, Google Chrome, Yandex и др.)
Благодаря нему, часто используемые части кода в вашем приложении компилируется и исполняется в несколько раз быстрее.
Поэтому важно писать код так, чтобы помогать движку ускорять ваш код правильно.
Вот несколько советов, как не помешать JIT-компилятору улучшить производительность:⚡️
Изменение типов переменных:
Изменение шейпов объектов:
Об устройстве объектов в javascript расскажу позже, но стоит знать, что у каждого объекта есть shape.
Несколько объектов могу иметь одинаковый shape.
shape - форма объекта (какие у объекта есть ключи)
Поэтому любое динамическое добавление/удаление ключей в объекты изменяет его shape
и тем самым ухудшает оптимизацию кода.
#javascript #v8 #turbofan
Благодаря нему, часто используемые части кода в вашем приложении компилируется и исполняется в несколько раз быстрее.
Поэтому важно писать код так, чтобы помогать движку ускорять ваш код правильно.
Вот несколько советов, как не помешать JIT-компилятору улучшить производительность:
Изменение типов переменных:
function add(a, b) {
return a + b; // Если сначала передаются числа, а потом строки — Turbofan сбросит оптимизацию
}
let i = 0
for (let i = 0; i < 1000; i++){
add(1, 2);
} // код оптимизировался (Байт код -> Машинный код)
add("1", "2");
// код деоптимизировался (Машинный код -> Байт код)
Изменение шейпов объектов:
Об устройстве объектов в javascript расскажу позже, но стоит знать, что у каждого объекта есть shape.
Несколько объектов могу иметь одинаковый shape.
shape - форма объекта (какие у объекта есть ключи)
Поэтому любое динамическое добавление/удаление ключей в объекты изменяет его shape
и тем самым ухудшает оптимизацию кода.
const obj = { x: 1, y: 2 };
obj.z = 3; // Добавление ключа = изменение shape
delete obj.x; // Удаление ключа = изменение shape
#javascript #v8 #turbofan
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3👏3
"На самом деле в JavaScript не существует массивов!"
Звучит как кликбейт, но это правда. Во всех учебниках говорится, что массивы в JS есть, но под капотом — это всего лишь абстракция.
Вспомним из чего состоят настоящие массивы:
- Указатель на начало памяти.
- Длина известна заранее.
- Значения расположены друг за другом в памяти.
❗️ ❗️ ❗️ ❗️ ❗️ ❗️ ❗️ ❗️ ❗️
А в JS массив — это обычный объект
У которого есть `length` — специальное свойство, которое автоматически обновляется при добавлении элементов.
Ключи — это индексы (числа от
И значения которые могут быть любого типа.
Именно поэтому мы можем итерироваться **
Но так делать не нужно.
Не стоит также забывать, что в V8 есть оптимизации: если массив «нормальный», он хранится как настоящий массив и следовательно более производителен!
Ссылка на доклад разработчиков javascript v8 на тему массивов, объектов и их внутренних устройств:
ДОКЛАД
Звучит как кликбейт, но это правда. Во всех учебниках говорится, что массивы в JS есть, но под капотом — это всего лишь абстракция.
Вспомним из чего состоят настоящие массивы:
- Указатель на начало памяти.
- Длина известна заранее.
- Значения расположены друг за другом в памяти.
А в JS массив — это обычный объект
У которого есть `length` — специальное свойство, которое автоматически обновляется при добавлении элементов.
Ключи — это индексы (числа от
0
до `2³² - 2`)И значения которые могут быть любого типа.
Именно поэтому мы можем итерироваться **
for...in
** по массиву и будем получать индексы в виде ключей.
const arr = ['a', 'r', 'r']
for (const key in arr) {
console.log(typeof key)
// 'string'
console.log(key)
// '0','1','2',
}
Но так делать не нужно.
Не стоит также забывать, что в V8 есть оптимизации: если массив «нормальный», он хранится как настоящий массив и следовательно более производителен!
Ссылка на доклад разработчиков javascript v8 на тему массивов, объектов и их внутренних устройств:
ДОКЛАД
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2