Maven
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Struchkov Mark 2024-10-30 10:53:33 +03:00
parent 8749f8afcd
commit e9fc372054
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
5 changed files with 45 additions and 18 deletions

View File

@ -11,14 +11,14 @@ parents:
- "[[../Кэширование|Кэширование]]"
linked:
---
Если мы закэшировали какие-то данные, например, выборку из БД, рано или поздно исходные данные изменяются, и кэш перестает быть валидным. Причем очень желательно, чтобы кэш сбрасывался сразу же за изменением.
Инвалидация кэша это процесс удаления данных из кэша при изменении состояния источника. Причем очень желательно, чтобы кэш сбрасывался сразу же за изменением. Например, мы закэшировали выборку из БД, рано или поздно исходные данные таблицы изменятся, и кэш перестает быть валидным.
**Способы инвалидации:**
- Задать срок жизни - TTL.
- По истечению срока действия - TTL.
- Самая простая реализация.
- При малом TTL будет высокий [CacheMissRate](CacheMissRate.md)
- При большом TTL данные могут быть не консистентны
- Инвалидация по событию
- По событию
- Опасно из-за риска мгновенной инвалидации и сопутствующей [[Перестройка кэша|перестройки кэша]]
- Использование [[../../algorithm/Алгоритм вытеснения кэша|алгоритмов вытеснения]]
@ -59,7 +59,7 @@ return value;
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
- [[Fingerprint]]
- [[Алгоритм вытеснения кэша]]
- [[Fingerprint]]
<!-- SerializedQuery END -->

View File

@ -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]]

View File

@ -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).

View File

@ -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]]
- [Публикация 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/)

View File

@ -7,4 +7,5 @@ title: Архитектура ЭВМ
- [[../../dev/fundamental/Ядро процессора|Ядро процессора]]
- [[../../dev/fundamental/Многозадачность|Многозадачность ЦПУ]]
- [Планировщик ОС](../../dev/fundamental/Планировщик%20ОС.md)
- [Оперативная память](Оперативная%20память.md)
- [[../../../../_inbox/Устройство памяти ЭВМ|Устройство памяти ЭВМ]]
- [Оперативная память](Оперативная%20память.md)