METANIT.COM – Telegram
METANIT.COM
5.9K subscribers
1.68K photos
83 videos
9 files
1.04K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Что на самом деле происходит при вводе URL в браузере? Разберём этот процесс пошагово (к иллюстрации из предыдущего поста)

1. Вы вводите URL в браузер

Браузер принимает то, что вы ввели (например, http://example.com) и готовится получить этот веб-сайт. Но сначала ему нужно узнать, где находится сайт.

2. Браузер запрашивает IP-адрес у DNS-сервера

DNS работает как телефонная книга интернета. Он сообщает браузеру: «Этот домен находится по этому IP-адресу».

http://example.com93.184.216.34

3. Устанавливается TCP-соединение через этот IP

Теперь, когда браузер знает адрес, он открывает соединение с сервером, используя протокол TCP, который обеспечивает безопасную доставку данных.

4. Браузер отправляет HTTP-запрос

Он отправляет сообщение вроде: «Привет, сервер, дай мне главную страницу этого сайта». Обычно это GET-запрос.

5. Веб-сервер получает данные

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

6. База данных отправляет данные обратно на сервер

Это могут быть посты в блоге, информация о продуктах, пользовательские данные — всё, что веб-сайту нужно показать динамически.

7. Сервер отвечает браузеру

Сервер отправляет обратно HTML, CSS, JavaScript и другой контент в ответ на запрос.

8. Браузер отображает контент

Наконец, браузер берёт все эти данные и создаёт веб-страницу, которую вы видите. При этом он может продолжать загружать изображения, стили и скрипты в фоновом режиме.
👏18❤‍🔥7👍72
Временная и пространственная сложность популярных алгоритмов сортировки
🔥10
Временная и пространственная сложность популярных алгоритмов сортировки:

1. Сортировка выбором
* Время: Лучшее Ω(n²) | Среднее Θ(n²) | Худшее O(n²)
* Память: O(1)

2. Сортировка вставками
* Время: Лучшее Ω(n) | Среднее Θ(n²) | Худшее O(n²)
* Память: O(1)

3. Сортировка пузырьком
* Время: Лучшее Ω(n) | Среднее Θ(n²) | Худшее O(n²)
* Память: O(1)

4. Сортировка Шелла
* Время: Лучшее Ω(n log n) | Среднее Θ(n log² n) | Худшее O(n²)
* Память: O(1)

5. Сортировка слиянием
* Время: Лучшее Ω(n log n) | Среднее Θ(n log n) | Худшее O(n log n)
* Память: O(n)

6. Быстрая сортировка
* Время: Лучшее Ω(n log n) | Среднее Θ(n log n) | Худшее O(n²)
* Память: O(log n)

7. Пирамидальная сортировка
* Время: Лучшее Ω(n log n) | Среднее Θ(n log n) | Худшее O(n log n)
* Память: O(1)

8. Поразрядная сортировка подсчётом
* Время: Лучшее Ω(n+k) | Среднее Θ(n+k) | Худшее O(n+k)
* Память: O(k)

9. Сортировка распределением (корзинная)
* Время: Лучшее Ω(n+k) | Среднее Θ(n+k) | Худшее O(n²)
* Память: O(n)

10. Поразрядная сортировка
* Время: Лучшее Ω(nk) | Среднее Θ(nk) | Худшее O(nk)
* Память: O(n+k)

Примечание: n = количество элементов, k = диапазон элементов
👍10🫡2
«Ростелеком» работает над созданием онлайн-магазина видеоигр. Площадка будет ориентирована на российские проекты, адаптированные под ОС «Аврора», используемую в планшетах компании.

По данным собеседников, магазин может быть интегрирован в игровую консоль от FPlus, представленную на «ЦИПР 2025». Однако эксперты сомневаются в успехе: «Авроре» не хватает поддержки современных графических движков, а предыдущие попытки «Ростелекома» в этой сфере (например, «Игровой Маркет» 2019 года) не стали массовыми.

В FPlus подтвердили переговоры с разработчиками «Авроры», но участники рынка отмечают, что без широкого ассортимента магазин рискует повторить судьбу других российских платформ, вынужденных продавать ключи от Steam.

https://www.kommersant.ru/doc/7855350
🤡27🌚13👎6👍3🤩2🤮2
Тем временем согласно статистике hh в июне в ИТ-секторе сохранялся крайне высокий уровень конкуренции соискателей за рабочие места, хотя накал чуть уменьшился

Однако количество вакансий в ИТ уменьшилось на 31% год к году, то есть почти на треть. Стоит отметить, что на протяжении полугода происходило снижение количества вакансий
Тогда как количество резюме, наоборот, в июне увеличилось на 28% год к году

К этому стоит добавить, что предлагаемые зарплаты последние 5 месяцев в ИТ не растут.

https://stats.hh.ru/?countrySalaryDynamicChartProfArea=information_technology&hhIndexProfArea=information_technology
👎16🤔74💅3
Представитель ЦБ РФ предложил передать на аутсорсинг в Индию часть российских IT-проектов из-за дефицита квалифицированных кадров и команд разработчиков на рынке России.
Это предложение сделал заместитель начальника Дальневосточного главного управления ЦБ РФ Денис Давыдов на Финансовом конгрессе Банка России.

«Сейчас много говорят у нас, конечно, о существенной нехватке в моменте кадров различных отраслей, особенно о дефиците инженерно‑технических специалистов в России. А вот, например, в Индии уровень безработицы выпускников в технических вузах в последние годы почти достигает 30%. При этом сложившийся на сегодня дифференциал заработных плат, тем более, если говорить о паритете покупательной способности, подталкивает к мысли о том, что здесь могли бы быть какие‑то эффекты кооперации», — рассказал Давыдов.

https://1prime.ru/20250704/indiya-859179950.html
🤡78🤣16👎10🤮6👍1👀1
Топ-15 базовых компонентов проектирования систем
11🥰1👏1
Топ-15 базовых компонентов проектирования систем:

1. Балансировщик нагрузки — распределяет входящий трафик между несколькими внутренними серверами, чтобы ни один из них не был перегружен. Повышает доступность, отказоустойчивость и скорость отклика системы.

2. API Gateway — единая точка входа для всех клиентских запросов в архитектуре микросервисов. Отвечает за маршрутизацию, аутентификацию, ограничение частоты запросов и агрегацию запросов.

3. DNS (Domain Name System) — система доменных имён, преобразующая удобочитаемые доменные имена в IP-адреса.

4. Кэш — хранит часто запрашиваемые данные в оперативной памяти. Существенно снижает задержки и нагрузку на базу данных.

5. CDN (Content Delivery Network) — сеть доставки контента, которая распространяет статический контент (изображения, CSS, JS и т. д.) через пограничные серверы, расположенные ближе к пользователям. Снижает задержки и нагрузку на полосу пропускания, особенно в глобальном масштабе.

6. База данных — основное хранилище данных. Может быть SQL или NoSQL в зависимости от потребностей. Поддерживает структурированные запросы, индексацию, транзакции и надёжность хранения.

7. API — определяет, как сервисы взаимодействуют друг с другом, обычно через HTTP или gRPC. Обеспечивает модульное проектирование и чёткое разделение обязанностей.

8. Микросервисы — разбивает монолитное приложение на независимо развёртываемые сервисы. Повышает гибкость, изоляцию сбоев и масштабируемость.

9. Ограничитель частоты запросов — контролирует количество запросов, которые пользователь или сервис может сделать за определённый промежуток времени. Защищает API от злоупотреблений и обеспечивает справедливое использование.

10. Хранилище объектов — хранит большие двоичные объекты (изображения, видео, резервные копии) с высокой доступностью и надёжностью. Примеры: AWS S3, Google Cloud Storage и др.

11. Очередь сообщений — обеспечивает асинхронную коммуникацию между сервисами через очередь (например, Kafka, RabbitMQ). Помогает разделить системы и справляться с пиковыми нагрузками.

12. Шардинг — разбивает большие наборы данных на несколько баз данных или таблиц. Помогает масштабировать хранилище и улучшать производительность запросов.

13. Репликация — копирует данные с одного узла базы данных на другой. Повышает отказоустойчивость и производительность чтения.

14. Согласованное хеширование — метод распределения данных между узлами с минимальными нарушениями при масштабировании. Широко используется в системах кэширования и распределённого хранения.

15. Система мониторинга — отслеживает состояние системы, собирает логи и метрики, отправляет оповещения о сбоях или аномалиях. Критически важна для наблюдения за системой, отладки и обеспечения бесперебойной работы.
6👍3👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Вкратце о том, как происходит перемножение матриц в GPU
🤩114👍4
В руководство по языку Си добавлена статья про атрибуты и расширение attribute
https://metanit.com/c/tutorial/10.5.php
#c_ansi
👍135👏1
Запись экрана с помощью Python #python
😁20👎8👍6🤮4🔥21👏1
Упаковка и распаковка данных в пакетах при передаче информации по сети
👍10🔥4👏2🤯1💩1
24 наиболее важных математических формул в Data Science
🤔27😨17🔥4🤡3😭21
Архитектура ИИ-агентов
9🤮5🤔4🤡4👍1👎1🌚1🤨1
9 распространенных принципов проектирования программного обеспечения:

1. DRY (Don't Repeat Yourself — Не повторяйтесь):
Избегайте дублирования кода. Храните логику в централизованном месте, чтобы упростить поддержку кодовой базы.

2. KISS (Keep It Simple, Stupid — Будь проще, глупыш):
Стремитесь к простоте в ваших решениях. Избегайте излишнего усложнения и добавления ненужных уровней.

3. YAGNI (You Aren't Gonna Need It — Тебе это не понадобится):
Создавайте только то, что необходимо прямо сейчас. Не тратьте время на гипотетические функции, которые могут никогда не использоваться.

4. LOD (Law of Demeter — Закон Деметры):
Взаимодействуйте только с непосредственными соседями. Не создавайте длинные цепочки вызовов.

SOLID-принципы:

5. SRP (Single Responsibility Principle — Принцип единственной ответственности):
Класс должен иметь только одну ответственность. Делайте каждый компонент сфокусированным и целостным.

6. OCP (Open/Closed Principle — Принцип открытости/закрытости):
Код должен быть открытым для расширения, но закрытым для модификации. Добавляйте новые функции, не изменяя существующую логику.

7. LSP (Liskov Substitution Principle — Принцип подстановки Лисков):
Подклассы должны быть взаимозаменяемы с родительскими классами без нарушения функциональности.

8. ISP (Interface Segregation Principle — Принцип разделения интерфейсов):
Создавайте небольшие, специализированные интерфейсы вместо больших и общих.

9. DIP (Dependency Inversion Principle — Принцип инверсии зависимостей):
Высокоуровневые модули не должны зависеть от низкоуровневых. Оба должны зависеть от абстракций.
👍32🔥135🤡1