Google выпустил новую версию фреймворка для создания веб-приложений Angular - Angular v20. Этот выпуск представляет собой значительное обновление фреймворка, сосредоточенное на повышении производительности, улучшении опыта разработчиков и стабилизации ранее внедрённых функций. Основной акцент сделан на доработке API реактивности, бесзонного (zoneless) подхода, инкрементальной гидратации и других улучшений.
Основные изменения:
- Стабилизация API реактивности:
API сигналов (Signals), включая effect, linkedSignal и toSignal, теперь полностью стабильны, что позволяет разработчикам использовать их для более реактивного и декларативного управления состоянием.
Введены улучшения в интеграции сигналов с основными пакетами Angular (формы, маршрутизация, HTTP), обеспечивая более удобный опыт разработки.
- Бесзонный Angular (Zoneless, Developer Preview):
Поддержка бесзонного подхода к обнаружению изменений (change detection) вышла в стадию Developer Preview. Это позволяет отказаться от Zone.js, уменьшая ненужные проверки DOM и повышая производительность.
Новый подход использует сигналы для точечного обновления, что улучшает отладку и взаимодействие с другими библиотеками.
- Инкрементальная гидратация:
Введена функция инкрементальной гидратации, которая позволяет рендерить отложенный контент на сервере, пропуская его при клиентской гидратации. Это улучшает метрики Core Web Vitals, такие как LCP и CLS, обеспечивая частичную интерактивность приложения при загрузке.
- Интеграция с Chrome DevTools:
Совместная работа с командой Chrome DevTools привела к интеграции профилирования Angular в панель Performance. Теперь разработчики могут видеть данные о рендеринге компонентов, циклах обнаружения изменений и выполнении обработчиков событий в одном временном масштабе с другими метриками браузера.
- Улучшения в стиле и упрощение кода:
Обновлено руководство по стилю, исключены устаревшие рекомендации по NgModules.
Предпочтение отдаётся использованию объекта host в метаданных компонентов вместо декораторов @HostBinding и @HostListener, с улучшенной поддержкой проверки типов и языковой поддержки.
Изменены соглашения об именовании: при генерации компонентов и сервисов больше не добавляются расширения .component или .service в имена файлов.
- Новые возможности и будущие планы:
Введена поддержка тестирования с использованием Vitest, что модернизирует процесс юнит-тестирования.
Анонсированы предварительные планы для Angular v21, включая компоненты без селекторов (selectorless components), новые форматы создания компонентов, улучшения в формах на основе сигналов и официальный маскот Angular.
Запущен RFC (Request for Comments) для обсуждения концепций маскота, чтобы он отражал ценности и идентичность Angular.
- AI-интеграция
- Технические изменения:
Минимальная версия Node.js для Angular v20 — 20.11.1.
Обновлены методы маршрутизации для поддержки неизменяемых массивов и асинхронных функций RedirectFn (Observable или Promise).
Изменено поведение обработки ошибок в тестах: необработанные ошибки в слушателях теперь передаются внутренней системе обработки ошибок Angular.
https://blog.angular.dev/announcing-angular-v20-b5c9c06cf301
#angular
Основные изменения:
- Стабилизация API реактивности:
API сигналов (Signals), включая effect, linkedSignal и toSignal, теперь полностью стабильны, что позволяет разработчикам использовать их для более реактивного и декларативного управления состоянием.
Введены улучшения в интеграции сигналов с основными пакетами Angular (формы, маршрутизация, HTTP), обеспечивая более удобный опыт разработки.
- Бесзонный Angular (Zoneless, Developer Preview):
Поддержка бесзонного подхода к обнаружению изменений (change detection) вышла в стадию Developer Preview. Это позволяет отказаться от Zone.js, уменьшая ненужные проверки DOM и повышая производительность.
Новый подход использует сигналы для точечного обновления, что улучшает отладку и взаимодействие с другими библиотеками.
- Инкрементальная гидратация:
Введена функция инкрементальной гидратации, которая позволяет рендерить отложенный контент на сервере, пропуская его при клиентской гидратации. Это улучшает метрики Core Web Vitals, такие как LCP и CLS, обеспечивая частичную интерактивность приложения при загрузке.
- Интеграция с Chrome DevTools:
Совместная работа с командой Chrome DevTools привела к интеграции профилирования Angular в панель Performance. Теперь разработчики могут видеть данные о рендеринге компонентов, циклах обнаружения изменений и выполнении обработчиков событий в одном временном масштабе с другими метриками браузера.
- Улучшения в стиле и упрощение кода:
Обновлено руководство по стилю, исключены устаревшие рекомендации по NgModules.
Предпочтение отдаётся использованию объекта host в метаданных компонентов вместо декораторов @HostBinding и @HostListener, с улучшенной поддержкой проверки типов и языковой поддержки.
Изменены соглашения об именовании: при генерации компонентов и сервисов больше не добавляются расширения .component или .service в имена файлов.
- Новые возможности и будущие планы:
Введена поддержка тестирования с использованием Vitest, что модернизирует процесс юнит-тестирования.
Анонсированы предварительные планы для Angular v21, включая компоненты без селекторов (selectorless components), новые форматы создания компонентов, улучшения в формах на основе сигналов и официальный маскот Angular.
Запущен RFC (Request for Comments) для обсуждения концепций маскота, чтобы он отражал ценности и идентичность Angular.
- AI-интеграция
- Технические изменения:
Минимальная версия Node.js для Angular v20 — 20.11.1.
Обновлены методы маршрутизации для поддержки неизменяемых массивов и асинхронных функций RedirectFn (Observable или Promise).
Изменено поведение обработки ошибок в тестах: необработанные ошибки в слушателях теперь передаются внутренней системе обработки ошибок Angular.
https://blog.angular.dev/announcing-angular-v20-b5c9c06cf301
#angular
Medium
Announcing Angular v20
The past couple of years have been transformative for Angular, as we’ve unleashed major advancements like reactivity with Signals and the…
❤🔥7❤3👍2
10 типов баз данных для проектирования систем:
1) 𝐑𝐞𝐥𝐚𝐭𝐢𝐨𝐧𝐚𝐥:
- Хранит данные в таблицах с предопределенными схемами и связями.
- Полезен для приложений, требующих структурированных данных, сложных запросов и транзакций ACID.
- Примеры: PostgreSQL, MySQL
2) 𝐈𝐧-𝐌𝐞𝐦𝐨𝐫𝐲:
- Сохраняет все данные в оперативной памяти для чрезвычайно быстрого доступа.
- Полезно для приложений, требующих сверхнизкой задержки и высокоскоростного кэширования.
- Примеры: Redis, Memcached
3) 𝐊𝐞𝐲-𝐕𝐚𝐥𝐮𝐞 𝐒𝐭𝐨𝐫𝐞:
- Хранит данные в виде пар «ключ-значение» для быстрого извлечения и высокой масштабируемости.
- Идеально подходит для приложений, работающих с большими объемами данных и требующих быстрого поиска по ключу.
- Примеры: Redis, Amazon DynamoDB
4) 𝐃𝐨𝐜𝐮𝐦𝐞𝐧𝐭:
- Хранит данные в гибких, полуструктурированных форматах документов, таких как JSON или BSON.
- Полезно для неструктурированных, иерархических или быстро меняющихся данных.
- Примеры: MongoDB, Couchbase
5) 𝐆𝐫𝐚𝐩𝐡:
- Хранит данные в виде узлов и ребер.
- Используется для представления сложных взаимосвязей, таких как рекомендательные системы и социальные сети.
- Примеры: Neo4j, Amazon Neptune
6) 𝐖𝐢𝐝𝐞-𝐂𝐨𝐥𝐮𝐦𝐧 𝐒𝐭𝐨𝐫𝐞:
- Сохраняет данные в гибких столбцах для оптимизации чтения определенного атрибута.
- Полезно для приложений, работающих с высокой пропускной способностью записи и выполняющих аналитические запросы.
- Примеры: Cassandra, Google Bigtable
7) 𝐓𝐢𝐦𝐞-𝐒𝐞𝐫𝐢𝐞𝐬:
- Оптимизирован для хранения и запроса данных с меткой времени.
- Полезно, когда данные генерируются в хронологическом порядке, например, данные систем мониторинга и финансовые данные.
- Примеры: InfluxDB, Prometheus
8) 𝐓𝐞𝐱𝐭 𝐒𝐞𝐚𝐫𝐜𝐡:
- Оптимизирован для хранения, индексации и поиска текстовых данных.
- Используется для приложений с большим объемом контента, требующих текстового поиска, фильтрации и ранжирования, таких как поисковые системы.
- Примеры: Elasticsearch, Solr
9) 𝐒𝐩𝐚𝐭𝐢𝐚𝐥:
- Предназначен для хранения и запроса данных о местоположении.
- Идеально подходит для поддержки функций, основанных на местоположении, например, в службах заказа поездок и картографических приложениях.
- Примеры: PostGIS, Oracle Spatial
10) 𝐁𝐥𝐨𝐛 𝐒𝐭𝐨𝐫𝐞:
- Оптимизирован для хранения и извлечения больших объектов, таких как изображения и видео.
- Полезно, когда вам нужно масштабируемое и недорогое хранилище для редко используемых данных. Обычно используется в паре с CDN для уменьшения задержки для конечных пользователей.
- Примеры: Amazon S3, Google Cloud Storage, Azure Blob Storage
1) 𝐑𝐞𝐥𝐚𝐭𝐢𝐨𝐧𝐚𝐥:
- Хранит данные в таблицах с предопределенными схемами и связями.
- Полезен для приложений, требующих структурированных данных, сложных запросов и транзакций ACID.
- Примеры: PostgreSQL, MySQL
2) 𝐈𝐧-𝐌𝐞𝐦𝐨𝐫𝐲:
- Сохраняет все данные в оперативной памяти для чрезвычайно быстрого доступа.
- Полезно для приложений, требующих сверхнизкой задержки и высокоскоростного кэширования.
- Примеры: Redis, Memcached
3) 𝐊𝐞𝐲-𝐕𝐚𝐥𝐮𝐞 𝐒𝐭𝐨𝐫𝐞:
- Хранит данные в виде пар «ключ-значение» для быстрого извлечения и высокой масштабируемости.
- Идеально подходит для приложений, работающих с большими объемами данных и требующих быстрого поиска по ключу.
- Примеры: Redis, Amazon DynamoDB
4) 𝐃𝐨𝐜𝐮𝐦𝐞𝐧𝐭:
- Хранит данные в гибких, полуструктурированных форматах документов, таких как JSON или BSON.
- Полезно для неструктурированных, иерархических или быстро меняющихся данных.
- Примеры: MongoDB, Couchbase
5) 𝐆𝐫𝐚𝐩𝐡:
- Хранит данные в виде узлов и ребер.
- Используется для представления сложных взаимосвязей, таких как рекомендательные системы и социальные сети.
- Примеры: Neo4j, Amazon Neptune
6) 𝐖𝐢𝐝𝐞-𝐂𝐨𝐥𝐮𝐦𝐧 𝐒𝐭𝐨𝐫𝐞:
- Сохраняет данные в гибких столбцах для оптимизации чтения определенного атрибута.
- Полезно для приложений, работающих с высокой пропускной способностью записи и выполняющих аналитические запросы.
- Примеры: Cassandra, Google Bigtable
7) 𝐓𝐢𝐦𝐞-𝐒𝐞𝐫𝐢𝐞𝐬:
- Оптимизирован для хранения и запроса данных с меткой времени.
- Полезно, когда данные генерируются в хронологическом порядке, например, данные систем мониторинга и финансовые данные.
- Примеры: InfluxDB, Prometheus
8) 𝐓𝐞𝐱𝐭 𝐒𝐞𝐚𝐫𝐜𝐡:
- Оптимизирован для хранения, индексации и поиска текстовых данных.
- Используется для приложений с большим объемом контента, требующих текстового поиска, фильтрации и ранжирования, таких как поисковые системы.
- Примеры: Elasticsearch, Solr
9) 𝐒𝐩𝐚𝐭𝐢𝐚𝐥:
- Предназначен для хранения и запроса данных о местоположении.
- Идеально подходит для поддержки функций, основанных на местоположении, например, в службах заказа поездок и картографических приложениях.
- Примеры: PostGIS, Oracle Spatial
10) 𝐁𝐥𝐨𝐛 𝐒𝐭𝐨𝐫𝐞:
- Оптимизирован для хранения и извлечения больших объектов, таких как изображения и видео.
- Полезно, когда вам нужно масштабируемое и недорогое хранилище для редко используемых данных. Обычно используется в паре с CDN для уменьшения задержки для конечных пользователей.
- Примеры: Amazon S3, Google Cloud Storage, Azure Blob Storage
🔥12❤3👍3
Число IT-специалистов в РФ составляет более 1 млн человек, спрос на них сохраняется, но в настоящее время востребованы более опытные кадры, заявил министр цифрового развития связи и массовых коммуникаций Максут Шадаев.
"Пока мы не видим таких тенденций в явном виде. Пока мы не видим тотальной какой-то заморозки найма и того, что компании, условно, увольняют айтишников, потому что искусственный интеллект код пишет и они больше не нужны. Нам кажется, что здесь такой ажиотаж - он немножко раздутый. За пять лет количество сотрудников IT-компаний увеличилось на 50%. Их было 990 тыс. на конец 2024 года. Сейчас мы, очевидно, за миллион перешагнули. И в целом, я считаю, спрос остаётся", - сказал Шадаев в четверг, выступая на форуме на TAdviser Summit.
"Другое дело, что ажиотаж привел к тому, что очень многие пошли в эту профессию, прошли курсы онлайн, сейчас они джуны (IT-специалисты начального уровня - ИФ), которые говорят, что они все умеют, а компаниям нужны мидлы, нужны сильные разработчики. В этом есть проблема", - добавил он.
По его словам, в настоящее время "людей больше хочет устроиться в индустрию, но качество их подготовки пока не соответствует ожиданиям наших крупных компаний, потому что они как раз идут в сторону все более и более сложных разработок".
"Но потребность в кадрах в моем понимании остаётся. И я призываю молодое поколение связывать свою судьбу с IT. Только чуть-чуть надо смещаться в сторону робототехники, ИИ - это более сложные специальности, но прогресс не остановим", - заключил глава Минцифры.
https://www.interfax.ru/russia/1028484
"Пока мы не видим таких тенденций в явном виде. Пока мы не видим тотальной какой-то заморозки найма и того, что компании, условно, увольняют айтишников, потому что искусственный интеллект код пишет и они больше не нужны. Нам кажется, что здесь такой ажиотаж - он немножко раздутый. За пять лет количество сотрудников IT-компаний увеличилось на 50%. Их было 990 тыс. на конец 2024 года. Сейчас мы, очевидно, за миллион перешагнули. И в целом, я считаю, спрос остаётся", - сказал Шадаев в четверг, выступая на форуме на TAdviser Summit.
"Другое дело, что ажиотаж привел к тому, что очень многие пошли в эту профессию, прошли курсы онлайн, сейчас они джуны (IT-специалисты начального уровня - ИФ), которые говорят, что они все умеют, а компаниям нужны мидлы, нужны сильные разработчики. В этом есть проблема", - добавил он.
По его словам, в настоящее время "людей больше хочет устроиться в индустрию, но качество их подготовки пока не соответствует ожиданиям наших крупных компаний, потому что они как раз идут в сторону все более и более сложных разработок".
"Но потребность в кадрах в моем понимании остаётся. И я призываю молодое поколение связывать свою судьбу с IT. Только чуть-чуть надо смещаться в сторону робототехники, ИИ - это более сложные специальности, но прогресс не остановим", - заключил глава Минцифры.
https://www.interfax.ru/russia/1028484
Интерфакс
Шадаев заявил, что в РФ более 1 млн айтишников, но потребность в IT-кадрах остаётся
Число IT-специалистов в РФ составляет более 1 млн человек, спрос на них сохраняется, но в настоящее время востребованы более опытные кадры, заявил министр цифрового развития связи и массовых коммуникаций Максут Шадаев."Пока мы не видим таких тенденций в явном…
🤡9👍2💯2
Минцифры планирует в ближайшие полгода определиться с единой политикой использования VPN-сервисов в России, сообщил руководитель министерства Максут Шадаев.
"Я думаю, что в ближайшие полгода мы определимся с контурами политики в этой части. Доля трафика VPN сейчас увеличивается. При этом понятно, что с недружественными VPN, которые не выполняют требования российского законодательства, Роскомнадзор борется. При этом зачастую попадают, так сказать, в замес и корпоративные VPN, которые нужны (компаниям - ИФ)", - сказал он
"Мы сейчас будем вырабатывать четкую политику в этой части. Потому что настало время договориться о единых правилах по VPN", - добавил министр.
Глава Минцифры пообещал поделиться конкретными деталями "ближе к осени".
https://www.interfax.ru/russia/1028468
"Я думаю, что в ближайшие полгода мы определимся с контурами политики в этой части. Доля трафика VPN сейчас увеличивается. При этом понятно, что с недружественными VPN, которые не выполняют требования российского законодательства, Роскомнадзор борется. При этом зачастую попадают, так сказать, в замес и корпоративные VPN, которые нужны (компаниям - ИФ)", - сказал он
"Мы сейчас будем вырабатывать четкую политику в этой части. Потому что настало время договориться о единых правилах по VPN", - добавил министр.
Глава Минцифры пообещал поделиться конкретными деталями "ближе к осени".
https://www.interfax.ru/russia/1028468
Интерфакс
Минцифры выработает единую политику по VPN-сервисам в России
Конкретными наработками ведомство поделится ближе к осени
🖕26🤡15😁4🤔3❤2💊2🤮1💯1
20 структур, которые являются основой различных систем, обеспечивают работу поисковых систем, хранилищ временных рядов, блокчейна и многого другого.
1. Структуры с индексаторами (Indexing Structures)
Hash Index, B-Tree, Skiplist, Bitmap Index, Trie
Это структуры, к которым можно обратиться для быстрого доступа к данным. Будь то быстрый поиск по ключам и значениям в памяти или сортированные обходы на диске, эти структуры формируют ядро производительности запросов в большинстве баз данных.
2. Поиск и сопоставление с образцом
Inverted Index (Инвертированный индекс), Suffix Tree (суффиксное дерево), Segment Tree (сегментное дерево), R-Tree(R-дерево)
Предназначены для глубокого поиска — от документов и строк до пространственных запросов, поддерживают полнотекстовый поиск, многомерные поиски и аналитику в реальном времени.
3. Хранилище, оптимизированное для записи
LSM-дерево, SSTable, фильтр Блума (Bloom Filter)
Базы данных с высоким уровнем загрузки, такие как Cassandra и RocksDB, используют их для оптимизации скорости записи, управления сжатием данных и быстрым приблизительным поиском с минимальными затратами памяти.
4. Пространственная и диапазонная индексация (Spatial & Range Indexing)
Quad Tree (Дерево квадрантов), Z-order Curve (кривая Z-порядка), Segment Tree (сегментное дерево)
Используются в таких приложениях, как карты, игровые движки и системы временных рядов, помогают эффективно разделять и получать доступ к многомерным или последовательным данным.
5. Расширенные варианты использования
Дерево Меркла (Merkle Tree), Suffix Tree (суффиксное дерево), фильтр Блума
От проверки транзакций в блокчейне до биоинформатики и дедупликации в распределенных системах — эти структуры данных созданы для обеспечения надежности и целостности в любом масштабе.
1. Структуры с индексаторами (Indexing Structures)
Hash Index, B-Tree, Skiplist, Bitmap Index, Trie
Это структуры, к которым можно обратиться для быстрого доступа к данным. Будь то быстрый поиск по ключам и значениям в памяти или сортированные обходы на диске, эти структуры формируют ядро производительности запросов в большинстве баз данных.
2. Поиск и сопоставление с образцом
Inverted Index (Инвертированный индекс), Suffix Tree (суффиксное дерево), Segment Tree (сегментное дерево), R-Tree(R-дерево)
Предназначены для глубокого поиска — от документов и строк до пространственных запросов, поддерживают полнотекстовый поиск, многомерные поиски и аналитику в реальном времени.
3. Хранилище, оптимизированное для записи
LSM-дерево, SSTable, фильтр Блума (Bloom Filter)
Базы данных с высоким уровнем загрузки, такие как Cassandra и RocksDB, используют их для оптимизации скорости записи, управления сжатием данных и быстрым приблизительным поиском с минимальными затратами памяти.
4. Пространственная и диапазонная индексация (Spatial & Range Indexing)
Quad Tree (Дерево квадрантов), Z-order Curve (кривая Z-порядка), Segment Tree (сегментное дерево)
Используются в таких приложениях, как карты, игровые движки и системы временных рядов, помогают эффективно разделять и получать доступ к многомерным или последовательным данным.
5. Расширенные варианты использования
Дерево Меркла (Merkle Tree), Suffix Tree (суффиксное дерево), фильтр Блума
От проверки транзакций в блокчейне до биоинформатики и дедупликации в распределенных системах — эти структуры данных созданы для обеспечения надежности и целостности в любом масштабе.
👍11❤1🔥1👏1
В руководство по Android на Kotlin добавлены материалы по работе с классами Activity в Jetpack Compose
Activity и жизненный цикл приложения
https://metanit.com/kotlin/jetpack/19.1.php
Управление жизненным циклом Activity в компонентах Compose
https://metanit.com/kotlin/jetpack/19.2.php
Введение в Intent. Запуск Activity
https://metanit.com/kotlin/jetpack/19.3.php
Передача данных между Activity
https://metanit.com/kotlin/jetpack/19.4.php
Файл манифеста AndroidManifest.xml
https://metanit.com/kotlin/jetpack/1.8.php
#android #kotlin #compose
Activity и жизненный цикл приложения
https://metanit.com/kotlin/jetpack/19.1.php
Управление жизненным циклом Activity в компонентах Compose
https://metanit.com/kotlin/jetpack/19.2.php
Введение в Intent. Запуск Activity
https://metanit.com/kotlin/jetpack/19.3.php
Передача данных между Activity
https://metanit.com/kotlin/jetpack/19.4.php
Файл манифеста AndroidManifest.xml
https://metanit.com/kotlin/jetpack/1.8.php
#android #kotlin #compose
🔥16👍3❤2
Обновлено руководство по фреймворку Angular до версии Angular 20
https://metanit.com/web/angular2/
#angular
https://metanit.com/web/angular2/
#angular
👍13🥰3❤🔥2👌2❤1🔥1
Типы индексов базы данных
Индекс базы данных обычно представляет пару ключ-значение, где ключ используется для поиска данных вместо соответствующих индексированных столбцов, а значение — указатель на соответствующую строку в таблице.
Большинству баз данных требуется некоторая форма индексации, чтобы соответствовать показателям производительности. Чтобы получить максимальную отдачу от базы данных, следует использовать правильный тип индекса.
𝗕-𝘁𝗿𝗲𝗲 (B-дерево) — одна из наиболее часто используемых структур индексации, в которой ключи иерархически сортируются. При поиске данных дерево просматривается до конечного узла, который содержит соответствующий ключ и указатель на соответствующие строки в таблице. B-дерево чаще всего используется из-за его эффективности при хранении и поиске по упорядоченным данным. Их сбалансированная структура означает, что ко всем ключам можно получить доступ за одинаковое количество шагов, что обеспечивает постоянную производительность.
𝗛𝗮𝘀𝗵 𝗶𝗻𝗱𝗲𝘅𝗲𝘀 (хеш-индексы) лучше всего использовать при поиске точного соответствия значений. Ключевым компонентом хэш-индекса является хэш-функция. При поиске определенного значения искомое значение передается через хэш-функцию, которая возвращает хэш-значение. Это хэш-значение сообщает базе данных, где в хэш-таблице находятся ключ и указатели.
𝗕𝗶𝘁𝗺𝗮𝗽 𝗶𝗻𝗱𝗲𝘅𝗶𝗻𝗴 (индексы на основе битовых карт) используется для столбцов с несколькими уникальными значениями. Каждое битовое изображение представляет уникальное значение. Битовая карта указывает на наличие или отсутствие значения в наборе данных с помощью 1 и 0. Для существующих значений позиция 1 в битовой карте показывает местоположение строки в таблице. Индексы битовой карты очень эффективны при обработке сложных запросов, в которых используется несколько столбцов.
При индексировании таблицы обязательно тщательно выбирайте столбцы для индексации на основе наиболее часто используемых столбцов в предложениях WHERE.
𝗰𝗼𝗺𝗽𝗼𝘀𝗶𝘁𝗲 𝗶𝗻𝗱𝗲𝘅 (составной индекс) можно использовать, когда несколько столбцов часто используются вместе в предложении WHERE. С составным индексом комбинация двух или более столбцов используется для создания объединенного ключа. Затем ключи сохраняются на основе стратегии индекса, например, указанных выше параметров.
Индекс базы данных обычно представляет пару ключ-значение, где ключ используется для поиска данных вместо соответствующих индексированных столбцов, а значение — указатель на соответствующую строку в таблице.
Большинству баз данных требуется некоторая форма индексации, чтобы соответствовать показателям производительности. Чтобы получить максимальную отдачу от базы данных, следует использовать правильный тип индекса.
𝗕-𝘁𝗿𝗲𝗲 (B-дерево) — одна из наиболее часто используемых структур индексации, в которой ключи иерархически сортируются. При поиске данных дерево просматривается до конечного узла, который содержит соответствующий ключ и указатель на соответствующие строки в таблице. B-дерево чаще всего используется из-за его эффективности при хранении и поиске по упорядоченным данным. Их сбалансированная структура означает, что ко всем ключам можно получить доступ за одинаковое количество шагов, что обеспечивает постоянную производительность.
𝗛𝗮𝘀𝗵 𝗶𝗻𝗱𝗲𝘅𝗲𝘀 (хеш-индексы) лучше всего использовать при поиске точного соответствия значений. Ключевым компонентом хэш-индекса является хэш-функция. При поиске определенного значения искомое значение передается через хэш-функцию, которая возвращает хэш-значение. Это хэш-значение сообщает базе данных, где в хэш-таблице находятся ключ и указатели.
𝗕𝗶𝘁𝗺𝗮𝗽 𝗶𝗻𝗱𝗲𝘅𝗶𝗻𝗴 (индексы на основе битовых карт) используется для столбцов с несколькими уникальными значениями. Каждое битовое изображение представляет уникальное значение. Битовая карта указывает на наличие или отсутствие значения в наборе данных с помощью 1 и 0. Для существующих значений позиция 1 в битовой карте показывает местоположение строки в таблице. Индексы битовой карты очень эффективны при обработке сложных запросов, в которых используется несколько столбцов.
При индексировании таблицы обязательно тщательно выбирайте столбцы для индексации на основе наиболее часто используемых столбцов в предложениях WHERE.
𝗰𝗼𝗺𝗽𝗼𝘀𝗶𝘁𝗲 𝗶𝗻𝗱𝗲𝘅 (составной индекс) можно использовать, когда несколько столбцов часто используются вместе в предложении WHERE. С составным индексом комбинация двух или более столбцов используется для создания объединенного ключа. Затем ключи сохраняются на основе стратегии индекса, например, указанных выше параметров.
👍8❤3👏1
Добавил мобильную версию для руководства по языку программирования Си
https://www.rustore.ru/catalog/app/com.metanit.c_tutorial_full
#c_ansi
https://www.rustore.ru/catalog/app/com.metanit.c_tutorial_full
#c_ansi
RuStore
Руководство по языку C в каталоге RuStore
🚀 Руководство по языку C — Руководство по языку программирования C 📱 Скачайте за 799 рублей на смартфон, ТВ или планшет. Официальная версия (1.0) в RuStore — до 1 тыс установок, рейтинг 5,0★. Безопасно для 0+.
🔥16👏2🥰1
Вкратце про свой опыт использования ИИ. Честно говоря, у меня действительно разочарование, но не только от вчерашнего контрпродуктивного общения с Гигачатом, а вообще из-за развития ИИ в целом. Не думаю, что ИИ когда-нибудь сможет заменить даже разработчика уровня Junior
🎉35🤡13👍11🤨7🤔5🤷♂3👨💻3🔥2😁1🐳1🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
Наглядное видео о том, как исходный код компилируется в исполняемый файл
❤🔥11👾6👍4
Объяснение структуры пакета TCP/IP к предыдущему рисунку
Заголовок IP (IPv4) и заголовок TCP взаимодействуют, обеспечивая надежную доставку данных по назначению.
Начиная с заголовка IPv4, начального сегмента пакета, он охватывает ширину 32 бита, при этом каждая строка отображает 32-битный сегмент. Ключевые поля включают версию (установленную на 4 для IPv4), длину (указывающую размер заголовка) и тип обслуживания (для приоритизации пакетов).
Другие важные компоненты включают в себя общую длину (размер пакета), идентификацию (отслеживание фрагментов пакета), флаги (управление фрагментацией), смещение фрагмента (помощь в повторной сборке), время жизни (определение предела прыжков пакета), протокол (идентификация следующего шага, например TCP) и контрольную сумму заголовка (проверка целостности заголовка).
Кроме того, адреса источника и назначения представляют собой IP-адреса отправителя и получателя, а параметры предлагают дополнительную информацию при необходимости.
Переходя к заголовку TCP после заголовка IP, TCP фокусируется на обеспечении точной и последовательной доставки данных. Поля исходного порта и порта назначения (по 16 бит каждое) идентифицируют приложения, отправляющие и получающие данные, аналогично порту 80 для HTTP.
Порядковый номер контролирует порядок байтов данных, номер подтверждения проверяет полученные данные, а зарезервированные биты вместе с флагами TCP (например, SYN, FIN) управляют инициированием/завершением соединения и передачей данных.
Размер окна регулирует объем передачи данных до ожидания подтверждения, контрольная сумма защищает заголовок и целостность данных, а Urgent Pointer отдает приоритет критически важным данным. Параметры TCP, схожие с параметрами IP, вводят дополнительные конфигурации при необходимости.
Наконец, раздел «Данные» завершает процесс, охватывая фактически передаваемый контент, такой как веб-страницы или электронные письма. Многоуровневый подход TCP/IP обеспечивает эффективную доставку данных: IP направляет пакеты на правильное устройство, в то время как TCP гарантирует точную передачу контента.
#tcp
Заголовок IP (IPv4) и заголовок TCP взаимодействуют, обеспечивая надежную доставку данных по назначению.
Начиная с заголовка IPv4, начального сегмента пакета, он охватывает ширину 32 бита, при этом каждая строка отображает 32-битный сегмент. Ключевые поля включают версию (установленную на 4 для IPv4), длину (указывающую размер заголовка) и тип обслуживания (для приоритизации пакетов).
Другие важные компоненты включают в себя общую длину (размер пакета), идентификацию (отслеживание фрагментов пакета), флаги (управление фрагментацией), смещение фрагмента (помощь в повторной сборке), время жизни (определение предела прыжков пакета), протокол (идентификация следующего шага, например TCP) и контрольную сумму заголовка (проверка целостности заголовка).
Кроме того, адреса источника и назначения представляют собой IP-адреса отправителя и получателя, а параметры предлагают дополнительную информацию при необходимости.
Переходя к заголовку TCP после заголовка IP, TCP фокусируется на обеспечении точной и последовательной доставки данных. Поля исходного порта и порта назначения (по 16 бит каждое) идентифицируют приложения, отправляющие и получающие данные, аналогично порту 80 для HTTP.
Порядковый номер контролирует порядок байтов данных, номер подтверждения проверяет полученные данные, а зарезервированные биты вместе с флагами TCP (например, SYN, FIN) управляют инициированием/завершением соединения и передачей данных.
Размер окна регулирует объем передачи данных до ожидания подтверждения, контрольная сумма защищает заголовок и целостность данных, а Urgent Pointer отдает приоритет критически важным данным. Параметры TCP, схожие с параметрами IP, вводят дополнительные конфигурации при необходимости.
Наконец, раздел «Данные» завершает процесс, охватывая фактически передаваемый контент, такой как веб-страницы или электронные письма. Многоуровневый подход TCP/IP обеспечивает эффективную доставку данных: IP направляет пакеты на правильное устройство, в то время как TCP гарантирует точную передачу контента.
#tcp
🔥11❤🔥1👏1💩1🤡1🥴1