METANIT.COM – Telegram
METANIT.COM
5.97K subscribers
1.69K photos
81 videos
9 files
1.08K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
12 распространеных структур данных

1. Массив
- Набор элементов фиксированного размера, хранящийся в непрерывной памяти.
- Обеспечивает доступ O(1) на основе индекса

2. Матрица (двухмерный массив)
- Многомерный массив, используемый для представления сеток, графиков и задач динамического программирования.

3. Связный список
- Динамическая структура данных, в которой элементы (узлы) связаны посредством указателей.
- Типы: односвязный список, двусвязный список, кольцевой связный список.

4. Стек
- Структура данных «последним пришел — первым ушел» (Last-In-First-Out / LIFO), в которой элемент, добавленный последним, удаляется первым.
- Поддерживает операции push, pop и peek за время O(1).

5. Очередь
- Структура данных «первым пришел — первым вышел» ( First-In-First-Out / FIFO).
- Позволяет вставлять в конец очереди (помещать в очередь) и удалять из начала очереди (вынимать из очереди) за время O(1).
- Используется для обработки элементов в том же порядке, в котором они добавляются.

6. Хешкарта(словарь)
- Структура данных «ключ-значение», использующая хеш-функцию для быстрого поиска.
- Обеспечивает среднее время вставки/удаления/поиска O(1), O(N) (в худшем случае из-за коллизий)

7. Дерево
- Иерархическая структура данных с корневым узлом и дочерними узлами.
- Типы: двоичное дерево, N-арное дерево, AVL-дерево, красно-черное дерево (Red-Black Tree)

8. Бинарное дерево поиска (𝐁𝐢𝐧𝐚𝐫𝐲 𝐒𝐞𝐚𝐫𝐜𝐡 𝐓𝐫𝐞𝐞 / 𝐁𝐒𝐓)
- Особый тип деревьев, где имеется отношение левый узел < кореневой узел < правый узел
- Позволяет выполнять поиск, вставку и удаление со скоростью O log N) в сбалансированных BST.

9. Очередь приоритетов / куча
- Структура на основе двоичного дерева, в которой родительский элемент всегда больше (максимальная куча) или меньше (минимальная куча), чем его дочерние элементы.
- Обеспечивает O(log N) вставки/удаления и O(1) получения минимума/максимума.

10. 𝐓𝐫𝐢𝐞
- Древовидная структура, используемая для быстрого поиска строк.
- Обеспечивает время O(M) для вставки/поискп/удаления, где M — длина строки.

11. Граф
- Совокупность узлов (вершин), соединенных ребрами.
- Для представленя применяются список смежности (Adjacency List) или матрица смежности (Adjacency Matrix)
- Типы: направленные, ненаправленные, взвешенные, невзвешенные.

12. 𝐔𝐧𝐢𝐨𝐧-𝐅𝐢𝐧𝐝 (𝐃𝐢𝐬𝐣𝐨𝐢𝐧𝐭 𝐒𝐞𝐭)
- A data structure used for efficiently handling dynamic connectivity.
- Supports Union(x, y) and Find(x) in nearly O(1) time (with path compression).
- Useful in detecting cycles and finding connected components in a graph.

12. 𝐔𝐧𝐢𝐨𝐧-𝐅𝐢𝐧𝐝 (𝐃𝐢𝐬𝐣𝐨𝐢𝐧𝐭 𝐒𝐞𝐭)
- Структура данных, используемая для эффективной обработки динамических подключений.
- Поддерживает операции Union(x, y) и Find(x) за время, почти равное O (1) время (со сжатием пути).
- Полезен для обнаружения циклов и поиска связанных компонентов в графе.
14👍7👏1😐1
(Картинка к предыдущему посту)
11👍1🔥1👏1
Microsoft добавил в .NET новый тип проекта - .NET AI Chat Template (пока в Preview-версии), который разработан, чтобы быстро создать приложение чата на базе ИИ. Этот начальный выпуск базируется на веб-приложении на базе Blazor, созданном с использованием абстракций Microsoft.Extensions.AI и Microsoft.Extensions.VectorData. Шаблон использует шаблон Retrieval Augmented Generation (RAG), который обычно используется для приложений чата.
Шаблон нового проекта доступен как через .NET CLI, так и в Visual Studio
https://devblogs.microsoft.com/dotnet/announcing-dotnet-ai-template-preview1/
🤯8👍4👏2🔥1🤬1😢1🤡1
Шпаргалка по облачной архитектуре
10🔥3👏3
Общая шпаргалка по системному дизайну
3🔥2🥰2
Визуальное доказательство теоремы Байеса
❤‍🔥11👍1
Google добавил приложение Linux Terminal в состав мартовского обновления Android 15 ("Pixel Feature Drop") для устройств Google Pixel. Приложение позволяет запустить в окружении Android виртуальную машину с Debian GNU/Linux, в которой можно выполнять обычные Linux-приложения.
Активация Linux Terminal производится в настройках для разработчиков (секция "Settings > System > Developer > Linux development environment"). Для появления данной опции необходимо активировать режим разработчика, быстро нажав семь раз на номере сборки на странице "Settings → About Phone". После первого запуска приложение предлагает загрузить на устройство образ виртуальной машины c Linux, который занимает около 500 МБ.
https://www.androidpolice.com/android-15-linux-terminal-app/
24🔥6🍾2🤡1
Разработчики проекта Wine представили выпуск фреймворка Mono 6.14.0 - альтернативную версию среды выполнения .NET. Выпуск Mono Framework 6.14.0 вобрал в себя изменения, накопившиеся за 5 лет, и является первым выпуском после того, как компания Microsoft передала разработку Mono сообществу Wine.
Mono поддерживает Linux (x86, amd64, arm64), macOS (amd64, arm64) и Windows (x86, amd64). Бинарные сборки пока не предоставляются.
В Mono 6.14.0 добавлена поддержка macOS с архитектурой ARM64. улучшено взаимодействие технологии System.Windows.Forms и протокола X11, улучшена поддержка генерируемых COM-интерфейсов и т.д.
https://www.winehq.org/news/2025030801
#dotnet #csharp
👍4
JWT — один из наиболее широко используемых методов аутентификации API, обеспечивающий безопасный, масштабируемый способ проверки клиентов без сохранения состояния.
Как работает JWT:

1) Аутентификация клиента
Клиент (пользователь, приложение или устройство) предоставляет учетные данные (например, имя пользователя/пароль) серверу аутентификации.

2) Проверка сервера
Сервер аутентификации проверяет учетные данные по своей базе данных или поставщику удостоверений, чтобы подтвердить их действительность.

3) Выпуск JWT
Если аутентификация прошла успешно, сервер:
☑️ Генерирует JWT с подтверждениями (например, идентификатор пользователя, роли, разрешения).
☑️ Подписывает JWT с помощью секретного ключа (HS256) или закрытого ключа (RS256).

4) Доставка токенов
Сервер отправляет подписанный JWT обратно клиенту в ответе.

5) Безопасное хранение
Клиент хранит JWT в безопасности, чтобы предотвратить несанкционированный доступ. HTTP-cookie-файлы являются наиболее безопасным и широко используемым методом.

6) API-запросы с JWT
Для каждого запроса к защищенному API клиент включает JWT в заголовок авторизации: Authorization: Bearer<JWT>

7) Сервер проверяет JWT
Перед предоставлением доступа сервер API проверяет JWT, проверяя следующие аспекты:
☑️ Подпись – подтверждает целостность токена (не подделан).
☑️ Истечение срока действия — гарантирует, что срок действия токена не истек.
☑️ Аудитория (заявление aud) — проверяет, предназначен ли токен для этого API.
☑️ Эмитент (заявление iss) — подтверждает, что токен был выпущен доверенным органом.

Если JWT действителен, сервер предоставляет доступ к запрошенному ресурсу. В противном случае он отклоняет запрос (401 Unauthorized).

8) Истечение срока действия токена и обновление
Поскольку срок действия JWT истекает по соображениям безопасности, клиенту необходим токен обновления (refresh token), чтобы получить новый:
↳ Клиент отправляет токен обновления на сервер.
↳ Сервер проверяет и выдает новый JWT, если токен обновления действителен.
↳ Новый JWT заменяет просроченный, и клиент продолжает делать запросы.

Подобный рабочий процесс обеспечивает безопасную, эффективную и не зависящую от состояния аутентификацию для API, контролируя производительность и масштабируемость.
👍16💅3🔥2👏2
(Наглядная иллюстрация к предыдущему посту)
👍4💅3🔥2👏2
От владельцев сайтов требуют получать у Роскомнадзора разрешение на использование Google Analytics
Роскомнадзор стал уведомлять владельцев интернет-сайтов о том, что использование ими счетчика посещений Google Analytics приравнивается в трансграничной передаче данных. О запрете использования данного счетчика речь не идет, но его необходимо деактивировать и получать разрешение на использование.
https://www.cnews.ru/news/top/2025-03-10_ot_vladeltsev_sajtov_trebuyut
🤡12😐12🤯3😁2
Шпаргалка по Git
16🔥2👏2
Сравнение функциональных и объектно-ориентированных языков программирования
👍3🔥3👏1
Умножение матриц многих людей лишит работы...
😁30😢1
Зоопарк протоколов API

🔹 SOAP:
Зрелый, всеобъемлющий протокол, основанный на XML,
лучше всего подходит для корпоративных приложений

🔹 RESTful:
Популярный и простой в реализации, базируется на методах HTTP
Идеально подходит для веб-сервисов

🔹 GraphQL:
Язык запроса, запрашивает определенные данные
Снижает нагрузку на сеть, ускоряет отклик

🔹 gRPC:
Современныq, высокопроизводительный способ взаимодействия, использует формат данных Protocol Buffers
Подходит для архитектур микросервисов

🔹 WebSocket:
Двунаправленные, постоянные соединения в режиме реального времени
Идеально подходит для обмена данными с малой задержкой

🔹 Webhook:
Управляемый событиями, асинхронный, использует обратные вызовы HTTP
Уведомляет системы о возникновении событий
👍184🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Выступая на форуме "Council on Foreign Relations", Дарио Амодей, CEO Anthropic, одной из главных AI-компаний в мире, сделал несколько важных заявлений про рост популярности разработки при помощи ИИ в обозримом будущем.
Выдержка из его выступления: "У меня есть изрядная доля беспокойства по этому поводу. Если я посмотрю на кодирование, программирование, которые являются одной из областей, где ИИ делает наибольший прогресс, то мы обнаруживаем, что мы не так уж далеки от мира, где, как я думаю, через три-шесть месяцев мы будем там, где ИИ будет писать 90% кода. А затем через 12 месяцев мы можем оказаться в мире, где ИИ будет писать по сути весь код."
🤡41🤔7😁3🤣3💊21👍1🕊1