METANIT.COM – Telegram
METANIT.COM
5.88K subscribers
1.67K photos
81 videos
9 files
1.03K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Стратегии кэширования (продолжение к предыдущему посту)

Кэширование — это концепция хранения часто используемых данных во временном месте, доступ к которому осуществляется быстрее, чем к исходному источнику.

Базы данных часто являются основой приложений, храня критически важную информацию. Однако получение данных из базы данных может быть относительно медленной операцией, особенно для сложных запросов или больших наборов данных.

Таким образом, если мы используем кэширование данных, мы можем:
1. Значительно улучшить время отклика.
2. Снизить нагрузку на базу данных.
3. Обеспечить более плавный пользовательский опыт.

Стратегии, оптимизированные для чтения

Кэширование в стороне (Cache-Aside)
* Приложение сначала проверяет наличие данных в кэше.
* Если данные найдены (попадание в кэш), они возвращаются.
* Если нет (промах кэша), данные извлекаются из базы данных, сохраняются в кэше и затем возвращаются.
* Известна как «отложенная загрузка» — получение данных по требованию.
* Первый запрос для определённого фрагмента данных всегда приводит к промаху кэша, так как данные ещё не загружены.
* Отличается простотой реализации.

Применение:
* Для нагрузок с преобладанием операций чтения и редко изменяющимися данными.

Чтение через кэш (Read-Through)
* Кэш выступает в качестве основного источника данных.
* Если данных нет в кэше:
* они извлекаются из базы данных;
* сохраняются в кэше;
* возвращаются в приложение.
* По сути, это абстрагирование источника данных от приложения.

Применение:
* Для приложений, где критически важны сверхбыстрые операции чтения (аналитика в реальном времени и т. д.).

Предварительное обновление (Refresh-Ahead)
* Кэш проактивно обновляет данные до их истечения, снижая вероятность промахов кэша.

Применение:
* Для приложений с предсказуемыми шаблонами доступа к данным.

Клиентское кэширование (Client-Side Caching)
* Данные кэшируются на устройстве клиента.
* Повышенная сложность, требуется управление аннулированием кэша на стороне клиента.

Применение:
* Для приложений с часто используемым статическим контентом или когда персонализация не является основной задачей.

Стратегии, оптимизированные для записи

Запись через кэш (Write-Through)
* Данные сначала записываются в кэш, а затем «немедленно» в базу данных.
* Операция записи считается завершённой только после обновления и кэша, и базы данных.
* Обеспечивает строгую согласованность данных между кэшем и базой данных.

Применение:
* Для приложений, где критически важна согласованность данных.

Запись позади (Write-Behind / Write-Back)
* Данные сначала записываются в кэш, а затем «асинхронно» в базу данных.

Применение:
* Для приложений, где производительность записи является приоритетом, и допустима некоторая потеря данных.

Запись в обход (Write-Around)
* Обходит кэш при записи, записывая напрямую в базу данных.
* Кэш обновляется только при последующих операциях чтения.

Применение:
* Для нагрузок с преобладанием операций записи, где большинство данных записывается один раз и редко читается.
👍11🔥4👏2
Шпаргалка по работе с векторами в C++ #cplusplus #cpp
11👍3😱2😁1
Вкратце как работает COM (Component Object Model)
🥰10👎1🔥1👏1🤯1
Отношения между паттернами проектирования
👍14🤯7💩4🤓3🫡3👏1
Приложение Linux Terminal для Android, выпущенное Google в начале этого года, в новой сборке Android Canary позволяет запускать графические приложения Linux.
Приложение Terminal позволяет загружать экземпляр Debian в виртуальной машине и запускать полноценные приложения Linux, недоступные на Android.
При открытии Terminal в этой сборке можно увидеть в правом верхнем углу новую кнопку, которая запускает действие "Display" приложения Terminal и перенаправляет графический вывод из виртуальной машины Linux на хост Android.

На этом экране можно ввести команду «weston», чтобы открыть графическую среду. Weston — это референсная реализация компоновщика Wayland, современного протокола сервера отображения, и он предустановлен в Linux Terminal для Android.
В графической среде удалось запустить такие приложения, как Gedit, простой текстовый редактор (на скриншоте - Gedit).

https://www.androidauthority.com/linux-terminal-graphical-apps-3580905/
👍189👏1
Истечение срока действия ключа Microsoft может создать проблемы для пользователей Linux

В сентябре текущего года истекает срок действия сертификата подписи Microsoft, который необходим для процесса безопасной загрузки (Secure Boot) в системах UEFI. Это может вызвать серьезные проблемы у пользователей Linux.
Secure Boot — это механизм безопасности, встроенный в UEFI, который проверяет цифровую подпись загрузчиков операционной системы. Для корректной работы Linux-систем требуется валидный сертификат подписи.

Последствия для пользователей:
* Возможные проблемы с загрузкой Linux-систем
* Необходимость обновления ключей загрузки
* Возможные сложности с установкой и обновлением некоторых дистрибутивов Linux

Пользователям Linux рекомендуется:
* Заранее проверить статус Secure Boot в своей системе
* Быть готовыми к обновлению ключей загрузки
* Следить за официальными обновлениями от разработчиков дистрибутивов

Хотя проблема носит технический характер, она может затронуть значительное количество пользователей Linux. Разработчикам дистрибутивов и конечным пользователям следует заранее подготовиться к возможным изменениям в процессе загрузки системы. Ситуация требует внимания со стороны сообщества Linux для минимизации потенциальных проблем.
https://www.tomshardware.com/tech-industry/cyber-security/microsoft-signing-key-required-for-secure-boot-uefi-bootloader-expires-in-september-which-could-be-problematic-for-linux-users
💩5🔥2🌚2🤯1🤬1😢1
По итогам первого полугодия 2025 г. компании предлагали ИТ-специалистам 96 тыс. руб. (медиана по стране в целом), и это на 10% больше, чем в аналогичный период прошлого года.
Наиболее востребованными в ИТ остаются программисты и разработчики, но их популярность постепенно снижается. Если в 2022 г. было зарегистрировано 102,8 тыс. вакансий для этой категории специалистов, то к 2025 г. их количество сократилось до 62,5 тыс.

На фоне общего падения числа ИТ-вакансий (-12%) и роста резюме (+14%) спрос на ключевые, но широко распространенные технологии резко снизился. По сравнению с 2024 годом, количество вакансий, упоминающих SQL, упало на 30% (до 18 тыс.), Linux — на 20% (до 14 тыс.), Python — на 21% (до 12 тыс.), PostgreSQL — на 20% (до 10 тыс.), а разработку технических заданий (ТЗ) — на 39% (до 8.8 тыс.).

Знания, которые еще недавно были конкурентным преимуществом, такие как Git или ООП, все чаще считаются элементарной «технической грамотностью» и даже не выносятся как отдельные требования в вакансиях.

Работодатели все чаще используют практические тесты, архитектурные кейсы, код-ревью и проблемные собеседования для объективной проверки. Сертификации, особенно по облачным платформам (AWS, Azure, GCP), Agile, DevOps, становятся критически важными, особенно в крупных ИТ-компаниях и финансовом секторе.

Портрет успешного кандидата на высокооплачиваемую позицию — это междисциплинарный специалист-лидер, сочетающий глубокую техническую экспертизу с сильными коммуникативными и управленческими навыками, пониманием полного цикла разработки и бизнес-контекста. Активность в Open Source, содержательное GitHub-портфолио, участие в профессиональных сообществах и менторство становятся серьезными конкурентными преимуществами.

https://www.cnews.ru/news/top/2025-07-24_headhunter_74_it-kompanij_ne
🤔134💩4🤓3👎2🏆2
Композиция структур в C++ под капотом #cpp #cplusplus
14👍8😨5🤔3🔥1
8 концепций проектирования систем
8 концепций проектирования систем (продолжение к предыдущему посту):

1. Доступность с балансировкой нагрузки (Availability with Load Balancers):
- Распределяет запросы между несколькими экземплярами сервисов, что повышает доступность системы.

2. Латентность с использованием CDN (Latency with CDNs):
- CDN (Content Delivery Network) сокращает время отклика, кэшируя контент ближе к пользователям.

3. Масштабируемость с репликацией (Scalability with Replication):
- Репликация данных позволяет системе масштабироваться, обеспечивая высокую производительность и доступность.

4. Устойчивость с использованием журналов транзакций (Durability with Transaction Logs):
- Журналы транзакций помогают восстановить состояние системы после сбоя.

5. Согласованность с конечной согласованностью (Consistency with Eventual Consistency):
- Система может достичь согласованности данных со временем, даже если данные временно несогласованы.

6. Модульность с ослабленным связыванием и высокой связностью (Modularity with Loose Coupling and High Cohesion):
- Модульность и ослабленное связывание улучшают гибкость и устойчивость системы.

7. Конфигурируемость с использованием кода конфигурации (Configurability with Configuration-as-Code):
- Конфигурация позволяет динамически управлять инфраструктурой и настройками системы.

8. Устойчивость с использованием очереди сообщений (Resiliency with Message Queue):
- Очередь сообщений помогает системе справляться с отказами и перегрузками, балансируя нагрузку между потребителями.
🔥41
Команда «docker run -it»
Когда контейнеру Docker необходимо запустить интерактивное приложение, такое как оболочка, языковая REPL или текстовый редактор, команде «docker run» требуются два дополнительных флага: -i и -t.
👍10
Что происходит при ввода адреса в браузере
17🔥3🥰1
Основные типы кибератак