From e9fc3720544a32146ddc12a5c1c51ea84f9a966b Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Wed, 30 Oct 2024 10:53:33 +0300 Subject: [PATCH] Maven --- dev/architecture/highload/Инвалидация кэша.md | 8 ++--- dev/architecture/Кэширование в приложении.md | 14 +++++---- dev/architecture/Кэширование.md | 7 +++-- meta/zero/00 Maven.md | 31 ++++++++++++++++--- meta/zero/00 Архитектура ЭВМ.md | 3 +- 5 files changed, 45 insertions(+), 18 deletions(-) diff --git a/dev/architecture/highload/Инвалидация кэша.md b/dev/architecture/highload/Инвалидация кэша.md index 20893592..275419cf 100644 --- a/dev/architecture/highload/Инвалидация кэша.md +++ b/dev/architecture/highload/Инвалидация кэша.md @@ -11,14 +11,14 @@ parents: - "[[../Кэширование|Кэширование]]" linked: --- -Если мы закэшировали какие-то данные, например, выборку из БД, рано или поздно исходные данные изменяются, и кэш перестает быть валидным. Причем очень желательно, чтобы кэш сбрасывался сразу же за изменением. +Инвалидация кэша это процесс удаления данных из кэша при изменении состояния источника. Причем очень желательно, чтобы кэш сбрасывался сразу же за изменением. Например, мы закэшировали выборку из БД, рано или поздно исходные данные таблицы изменятся, и кэш перестает быть валидным. **Способы инвалидации:** -- Задать срок жизни - TTL. +- По истечению срока действия - TTL. - Самая простая реализация. - При малом TTL будет высокий [CacheMissRate](CacheMissRate.md) - При большом TTL данные могут быть не консистентны -- Инвалидация по событию +- По событию - Опасно из-за риска мгновенной инвалидации и сопутствующей [[Перестройка кэша|перестройки кэша]] - Использование [[../../algorithm/Алгоритм вытеснения кэша|алгоритмов вытеснения]] @@ -59,7 +59,7 @@ return value; ### Дочерние заметки -- [[Fingerprint]] - [[Алгоритм вытеснения кэша]] +- [[Fingerprint]] diff --git a/dev/architecture/Кэширование в приложении.md b/dev/architecture/Кэширование в приложении.md index 71051e1f..ed35c30c 100644 --- a/dev/architecture/Кэширование в приложении.md +++ b/dev/architecture/Кэширование в приложении.md @@ -8,16 +8,18 @@ zero-link: - "[[../../meta/zero/00 HighLoad|00 HighLoad]]" parents: - "[[Кэширование]]" -linked: --- -Поход в базу данных может быть достаточно дорогим, в этом случае имеет смысл сохранять данные в кэш. Ускорить сложные запросы может кэширование: мы помещаем результат вычислений в некоторое хранилище (например, [Memcached](Memcached.md) или [00 Redis](../../../../wiki/zero/00%20Redis.md)), которое обладает отличными характеристиками по времени доступа к информации. Теперь вместо обращений к медленным, сложным и тяжелым backend’ам нам достаточно выполнить запрос к быстрому кэшу. +Поход в базу данных может быть достаточно дорогим, в этом случае имеет смысл сохранять данные в кэш. Ускорить сложные запросы может кэширование: мы помещаем результат вычислений в некоторое хранилище, которое обладает отличными характеристиками по времени доступа к информации. Теперь вместо обращений к медленным, сложным и тяжелым backend’ам нам достаточно выполнить запрос к быстрому кэшу. + +Самые распространенные варианты хранения: +- Внутри сервиса. Хранение в ОЗУ +- За сервисом + - [Memcached](Memcached.md) + - [[../../../../wiki/zero/00 Redis|Redis]] ![](../../meta/files/images/Pasted%20image%2020240617184722.png) -Самые распространенные варианты хранения: -- Хранение в ОЗУ -- [Memcached](Memcached.md) -- [00 Redis](../../../../wiki/zero/00%20Redis.md) + *** ## Мета информация **Область**:: [[../../meta/zero/00 HighLoad|00 HighLoad]] diff --git a/dev/architecture/Кэширование.md b/dev/architecture/Кэширование.md index 2b248d2b..20c5ad10 100644 --- a/dev/architecture/Кэширование.md +++ b/dev/architecture/Кэширование.md @@ -1,6 +1,7 @@ --- aliases: - кэш + - кэша tags: - maturity/🌱 date: @@ -28,10 +29,10 @@ linked: ![](../../meta/files/images/Pasted%20image%2020240701115612.png) Уровни кэширования: -- [Кэширование на стороне браузера](highload/Кэширование%20на%20стороне%20браузера.md) -- [Кэширование на стороне Nginx](../devops/nginx/Кэширование%20на%20стороне%20Nginx.md) -- [Content Delivery Network](highload/Content%20Delivery%20Network.md) - [Кэширование в приложении](Кэширование%20в%20приложении.md) +- [Кэширование на стороне Nginx](../devops/nginx/Кэширование%20на%20стороне%20Nginx.md) +- [Кэширование на стороне браузера](highload/Кэширование%20на%20стороне%20браузера.md) +- [Content Delivery Network](highload/Content%20Delivery%20Network.md) Виды кэширования: - Сквозное. Все запросы проходят через кэш. [Схема](../../meta/files/images/Pasted%20image%2020240617194731.png). diff --git a/meta/zero/00 Maven.md b/meta/zero/00 Maven.md index 0b3c7c01..b49f24db 100644 --- a/meta/zero/00 Maven.md +++ b/meta/zero/00 Maven.md @@ -7,12 +7,35 @@ aliases: - мавен - мавеном - Maven -date: 2023-10-21 parents: - "[[Система сборки]]" -linked: - - "[[00 Gradle]]" title: Maven --- +Maven — это [[../../../../knowledge/dev/Система сборки|инструмент для автоматизации сборки проектов]], который управляет их жизненным циклом. Жизненный цикл Maven состоит из нескольких фаз, каждая из которых выполняет определенную задачу, необходимую для успешной сборки и управления проектом. +## Основные фазы жизненного цикла +1. **validate** — Проверка корректности проекта и наличия всей необходимой информации. +2. **compile** — Компиляция исходного кода проекта. +3. **test** — Запуск тестов (обычно с использованием JUnit или TestNG) и проверка их успешного выполнения. +4. **package** — Сборка скомпилированного кода и упаковка его, например, в JAR или WAR-файл. +5. **verify** — Проверка собранных артефактов и результатов тестов. +6. **install** — Установка пакета в локальный репозиторий для использования в других проектах. +7. **deploy** — Отправка финального пакета в удаленный репозиторий для использования в других проектах или на сервере. + + +> [!WARNING] +> Фазы выполняются последовательно, и каждая фаза зависит от предыдущих. Например, при запуске команды `mvn install` Maven автоматически выполнит все предыдущие фазы — от `validate` до `install`. +## Основные команды +- `mvn clean` — Удаляет папку `target`, очищая проект от предыдущих сборок. Полезно использовать перед началом новой сборки, чтобы избежать конфликтов. +- `mvn compile` — Компилирует исходный код проекта. Используется на этапе разработки для проверки, что код компилируется без ошибок. +- `mvn test` — Запускает тесты. Применяется для проверки корректности работы кода после изменений. +- `mvn package` — Упаковывает скомпилированный код в конечный артефакт (обычно JAR или WAR). Используется, когда необходимо подготовить проект для развертывания. +- `mvn install` — Устанавливает артефакт в локальный репозиторий. Применяется для того, чтобы сделать артефакт доступным для других локальных проектов. +- `mvn deploy` — Деплоит артефакт в удаленный репозиторий. Используется для распространения артефакта среди других разработчиков или для развертывания на сервере. +- `mvn site` — Генерирует документацию проекта на основе кода и зависимостей. Полезно для создания отчетов и документации по проекту. + +## Дополнительные материалы - [Параллельная сборка модулей в Maven](../../dev/java/Параллельная%20сборка%20модулей%20в%20Maven.md) -- [[../../dev/java/Мультимодульные проекты c Jandex|Мультимодульные проекты c Jandex]] \ No newline at end of file +- [Публикация Java приложения в личный Nexus](https://struchkov.dev/blog/ru/java-jar-deploy-to-nexus/) +- [Публикация Java библиотеки в Maven Central](https://struchkov.dev/blog/ru/deploy-to-maven-central/) +- [[../../dev/java/Мультимодульные проекты c Jandex|Мультимодульные проекты c Jandex]] +- [Автоматизация рутины при выпуске релизов с Maven](https://struchkov.dev/blog/ru/release-releases-with-maven/) \ No newline at end of file diff --git a/meta/zero/00 Архитектура ЭВМ.md b/meta/zero/00 Архитектура ЭВМ.md index a0f652ad..ea335129 100644 --- a/meta/zero/00 Архитектура ЭВМ.md +++ b/meta/zero/00 Архитектура ЭВМ.md @@ -7,4 +7,5 @@ title: Архитектура ЭВМ - [[../../dev/fundamental/Ядро процессора|Ядро процессора]] - [[../../dev/fundamental/Многозадачность|Многозадачность ЦПУ]] - [Планировщик ОС](../../dev/fundamental/Планировщик%20ОС.md) -- [Оперативная память](Оперативная%20память.md) \ No newline at end of file +- [[../../../../_inbox/Устройство памяти ЭВМ|Устройство памяти ЭВМ]] + - [Оперативная память](Оперативная%20память.md) \ No newline at end of file