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) время (со сжатием пути).
- Полезен для обнаружения циклов и поиска связанных компонентов в графе.
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
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/
Шаблон нового проекта доступен как через .NET CLI, так и в Visual Studio
https://devblogs.microsoft.com/dotnet/announcing-dotnet-ai-template-preview1/
🤯8👍4👏2🔥1🤬1😢1🤡1
В руководство по языку Python добавлена статья про Установку пакетов, пакетный менеджер pip и виртуальную среду
https://metanit.com/python/tutorial/6.8.php
#python
https://metanit.com/python/tutorial/6.8.php
#python
Metanit
Python | Установка пакетов, pip и виртуальная среда
Установка пакетов в проекте на языке программирования Python, пакетный менеджер pip, управление пакетами, виртуальная среда venv, создание и активация виртуальной среды, пример установки и использования пакета matplotlib
🔥12👍4❤🔥2
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/
Активация 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
В руководство по языку Си добавлена статья про функции setjmp и longjmp и обработку ошибок
https://metanit.com/c/tutorial/10.2.php
#c_ansi
https://metanit.com/c/tutorial/10.2.php
#c_ansi
Metanit
Язык программирования Си | Функции setjmp и longjmp и обработка ошибок
Функции setjmp и longjmp в программе на языке Си, выход из вложенных функций, обработка ошибок
🔥14👍3🤩2😍2
Разработчики проекта 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
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
WineHQ
Framework Mono 6.14.0 Released
👍4
JWT — один из наиболее широко используемых методов аутентификации API, обеспечивающий безопасный, масштабируемый способ проверки клиентов без сохранения состояния.
Как работает JWT:
1) Аутентификация клиента
Клиент (пользователь, приложение или устройство) предоставляет учетные данные (например, имя пользователя/пароль) серверу аутентификации.
2) Проверка сервера
Сервер аутентификации проверяет учетные данные по своей базе данных или поставщику удостоверений, чтобы подтвердить их действительность.
3) Выпуск JWT
Если аутентификация прошла успешно, сервер:
☑️ Генерирует JWT с подтверждениями (например, идентификатор пользователя, роли, разрешения).
☑️ Подписывает JWT с помощью секретного ключа (HS256) или закрытого ключа (RS256).
4) Доставка токенов
Сервер отправляет подписанный JWT обратно клиенту в ответе.
5) Безопасное хранение
Клиент хранит JWT в безопасности, чтобы предотвратить несанкционированный доступ. HTTP-cookie-файлы являются наиболее безопасным и широко используемым методом.
6) API-запросы с JWT
Для каждого запроса к защищенному API клиент включает JWT в заголовок авторизации:
7) Сервер проверяет JWT
Перед предоставлением доступа сервер API проверяет JWT, проверяя следующие аспекты:
☑️ Подпись – подтверждает целостность токена (не подделан).
☑️ Истечение срока действия — гарантирует, что срок действия токена не истек.
☑️ Аудитория (заявление aud) — проверяет, предназначен ли токен для этого API.
☑️ Эмитент (заявление iss) — подтверждает, что токен был выпущен доверенным органом.
Если JWT действителен, сервер предоставляет доступ к запрошенному ресурсу. В противном случае он отклоняет запрос (401 Unauthorized).
8) Истечение срока действия токена и обновление
Поскольку срок действия JWT истекает по соображениям безопасности, клиенту необходим токен обновления (refresh token), чтобы получить новый:
↳ Клиент отправляет токен обновления на сервер.
↳ Сервер проверяет и выдает новый JWT, если токен обновления действителен.
↳ Новый 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
От владельцев сайтов требуют получать у Роскомнадзора разрешение на использование Google Analytics
Роскомнадзор стал уведомлять владельцев интернет-сайтов о том, что использование ими счетчика посещений Google Analytics приравнивается в трансграничной передаче данных. О запрете использования данного счетчика речь не идет, но его необходимо деактивировать и получать разрешение на использование.
https://www.cnews.ru/news/top/2025-03-10_ot_vladeltsev_sajtov_trebuyut
Роскомнадзор стал уведомлять владельцев интернет-сайтов о том, что использование ими счетчика посещений Google Analytics приравнивается в трансграничной передаче данных. О запрете использования данного счетчика речь не идет, но его необходимо деактивировать и получать разрешение на использование.
https://www.cnews.ru/news/top/2025-03-10_ot_vladeltsev_sajtov_trebuyut
CNews.ru
От владельцев сайтов требуют получать у Роскомнадзора разрешение на использование Google Analytics - CNews
Роскомнадзор стал уведомлять владельцев интернет-сайтов о том, что использование ими счетчика посещений Google Analytics приравнивается в трансграничной передаче данных. О запрете использования...
🤡12😐12🤯3😁2
Зоопарк протоколов API
🔹 SOAP:
Зрелый, всеобъемлющий протокол, основанный на XML,
лучше всего подходит для корпоративных приложений
🔹 RESTful:
Популярный и простой в реализации, базируется на методах HTTP
Идеально подходит для веб-сервисов
🔹 GraphQL:
Язык запроса, запрашивает определенные данные
Снижает нагрузку на сеть, ускоряет отклик
🔹 gRPC:
Современныq, высокопроизводительный способ взаимодействия, использует формат данных Protocol Buffers
Подходит для архитектур микросервисов
🔹 WebSocket:
Двунаправленные, постоянные соединения в режиме реального времени
Идеально подходит для обмена данными с малой задержкой
🔹 Webhook:
Управляемый событиями, асинхронный, использует обратные вызовы HTTP
Уведомляет системы о возникновении событий
🔹 SOAP:
Зрелый, всеобъемлющий протокол, основанный на XML,
лучше всего подходит для корпоративных приложений
🔹 RESTful:
Популярный и простой в реализации, базируется на методах HTTP
Идеально подходит для веб-сервисов
🔹 GraphQL:
Язык запроса, запрашивает определенные данные
Снижает нагрузку на сеть, ускоряет отклик
🔹 gRPC:
Современныq, высокопроизводительный способ взаимодействия, использует формат данных Protocol Buffers
Подходит для архитектур микросервисов
🔹 WebSocket:
Двунаправленные, постоянные соединения в режиме реального времени
Идеально подходит для обмена данными с малой задержкой
🔹 Webhook:
Управляемый событиями, асинхронный, использует обратные вызовы HTTP
Уведомляет системы о возникновении событий
👍18❤4🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Выступая на форуме "Council on Foreign Relations", Дарио Амодей, CEO Anthropic, одной из главных AI-компаний в мире, сделал несколько важных заявлений про рост популярности разработки при помощи ИИ в обозримом будущем.
Выдержка из его выступления: "У меня есть изрядная доля беспокойства по этому поводу. Если я посмотрю на кодирование, программирование, которые являются одной из областей, где ИИ делает наибольший прогресс, то мы обнаруживаем, что мы не так уж далеки от мира, где, как я думаю, через три-шесть месяцев мы будем там, где ИИ будет писать 90% кода. А затем через 12 месяцев мы можем оказаться в мире, где ИИ будет писать по сути весь код."
Выдержка из его выступления: "У меня есть изрядная доля беспокойства по этому поводу. Если я посмотрю на кодирование, программирование, которые являются одной из областей, где ИИ делает наибольший прогресс, то мы обнаруживаем, что мы не так уж далеки от мира, где, как я думаю, через три-шесть месяцев мы будем там, где ИИ будет писать 90% кода. А затем через 12 месяцев мы можем оказаться в мире, где ИИ будет писать по сути весь код."
🤡41🤔7😁3🤣3💊2❤1👍1🕊1