Обновление
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Struchkov Mark 2024-11-24 13:15:36 +03:00
parent c334cee3d8
commit 10a5cd0b97
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
10 changed files with 176 additions and 40 deletions

View File

@ -10,11 +10,12 @@ linked:
---
- [[Dependency Injection]]
- [[Порождающий паттерн проектирования]]
- [[Builder Pattern|Builder Pattern]]: строит объекты поэтапно, разделяя процесс создания и внешний вид.
- Abstract Factory: создаёт группы связанных элементов.
- [[Builder Pattern|Builder Pattern]]: строит объекты поэтапно, разделяя процесс создания и внешний вид.
- [[../other/Статическая фабрика|Статическая фабрика]]
- Prototype: создаёт копии полностью подготовленных экземпляров.
- Singleton: One and Only — особый класс, имеющий только один экземпляр.
- Структурные паттерны
- Adapter: Universal Plug — соединяет объекты с разными интерфейсами.
- Bridge: Function Connector — связывает, как объект работает, с тем, что он делает.
- Composite: Tree Builder — формирует древовидные структуры из простых и сложных частей.
@ -22,6 +23,7 @@ linked:
- Facade: One-Stop-Shop — представляет всю систему через один упрощённый интерфейс.
- Flyweight: Space Saver — эффективно использует небольшие, многократно используемые элементы.
- Proxy: Stand-In Actor — представляет другой объект, управляя доступом или действиями.
- Поведенческие паттерны
- Chain of Responsibility: Request Relay — передаёт запрос по цепочке объектов до его обработки.
- Command: Task Wrapper — превращает запрос в объект, готовый к выполнению.
- Iterator: Collection Explorer — последовательно получает доступ к элементам коллекции.
@ -50,4 +52,5 @@ linked:
- [[Dependency Injection]]
- [[Transactional Outbox]]
- [[Порождающий паттерн проектирования]]
- [[Статическая фабрика]]
<!-- SerializedQuery END -->

View File

@ -1,5 +1,7 @@
---
aliases:
- Class Loader
- Class Loaders
tags:
- maturity/🌱
date: 2024-11-04

View File

@ -0,0 +1,29 @@
---
aliases:
tags:
- maturity/🌱
date: 2024-11-24
---
Execution Engine — это основная часть [[Java Virtual Machine]] (JVM), которая выполняет [[Java байт-код|байт-код]] Java. Он играет важную роль в преобразовании скомпилированного байт-кода (`.class` файлы) в машинный код, который может быть выполнен на конкретной платформе.
Этот процесс делает Java переносимой, позволяя одной и той же программе выполняться на различных устройствах и операционных системах. Это достигается тем, что байт-код, сгенерированный компилятором Java, является платформенно-независимым, а Execution Engine адаптирует его для конкретной машины.
**Основные компоненты Execution Engine**
- [[ClassLoader|Class Loader]] (Загрузчик классов). Class Loader отвечает за загрузку классов и интерфейсов в JVM по мере их необходимости. Например, это полезно при работе с фреймворками, такими как Spring, где классы могут загружаться динамически в зависимости от конфигурации или окружения. Это позволяет программам динамически подключать классы, снижая начальное время загрузки и делая систему более гибкой.
- **Interpreter (Интерпретатор)** Интерпретатор отвечает за выполнение байт-кода, читая его инструкции и выполняя их одну за другой. Хотя интерпретация обеспечивает гибкость, она может быть медленнее по сравнению с компилированным исполнением, так как требует постоянного преобразования байт-кода в машинный код во время выполнения.
- **Just-In-Time Compiler (JIT-компилятор)** Для повышения производительности JVM использует JIT-компилятор. JIT-компиляция преобразует часто выполняемые части байт-кода в машинный код, который может выполняться напрямую процессором. Это значительно ускоряет выполнение программы по сравнению с постоянной интерпретацией.
- [[gc/Garbage Collector|Garbage Collector]] (Сборщик мусора). Сборщик мусора управляет памятью JVM, автоматически освобождая её от объектов, которые больше не используются. Это предотвращает утечки памяти и снижает риск ошибок, связанных с ручным управлением памятью.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]]
**Родитель**:: [[Java Virtual Machine|JVM]]
**Источник**::
**Создана**:: [[2024-11-24]]
**Автор**::
### Дополнительные материалы
- [[Процесс выполнения Java программы|Процесс выполнения Java программы]]
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -14,15 +14,3 @@ JVM (Java Virtual Machine) — это виртуальная машина, ко
- **Безопасность**. JVM обеспечивает безопасное выполнение кода с помощью системы управления доступом, проверяющей разрешения для выполнения определённых операций, таких как доступ к файловой системе, что помогает предотвратить выполнение вредоносного кода.
- **Многопоточность**. JVM поддерживает [[../fundamental/Multithreading|многопоточность]], позволяя разрабатывать многопоточные приложения на уровне языка. Она управляет созданием, синхронизацией и выполнением потоков.
- **Управление исключениями**. JVM предоставляет механизм обработки исключений, который позволяет программам Java надёжно обрабатывать ошибки во время выполнения, повышая стабильность и устойчивость приложений.
**Как работает JVM**
1. **Компиляция исходного кода в байт-код**
Исходный код (.java файлы) компилируется компилятором Java (javac) в байт-код (.class файлы), который является платформонезависимым промежуточным представлением.
2. **Загрузка байт-кода**
Класс-загрузчики JVM (Class Loaders) загружают байт-код в память. Существуют различные типы загрузчиков, такие как Bootstrap Class Loader, Extension Class Loader и Application Class Loader.
3. **Проверка байт-кода**
JVM проверяет байт-код для обеспечения его корректности и безопасности, чтобы предотвратить выполнение некорректного или вредоносного кода.
4. **Интерпретация или компиляция JIT**
JVM может интерпретировать байт-код или использовать Just-In-Time (JIT) компиляцию, которая преобразует байт-код в машинный код во время выполнения, улучшая производительность.
5. **Выполнение кода**
После загрузки и проверки байт-кода JVM выполняет его, управляя памятью, потоками и исключениями, обеспечивая надёжное выполнение программы.

View File

@ -0,0 +1,26 @@
---
aliases:
tags:
- maturity/🌱
date: 2024-11-24
---
1. **Компиляция исходного кода в байт-код:** исходный код (`.java` файлы) компилируется компилятором Java (javac) в [[Java байт-код|байт-код]] (`.class` файлы).
2. **Загрузка байт-кода и классов:** класс-загрузчики [[Java Virtual Machine|JVM]] ([[ClassLoader|Class Loaders]]) загружают байт-код в память по мере необходимости. Сначала загружается основной класс, затем все остальные классы, необходимые для выполнения программы.
3. **Проверка байт-кода:** JVM проверяет байт-код для обеспечения его корректности и безопасности, чтобы предотвратить выполнение некорректного или вредоносного кода.
4. **Интерпретация:** интерпретатор начинает выполнение программы, интерпретируя байт-код в машинный код построчно. Этот этап позволяет сразу начать выполнение программы, не тратя время на полную компиляцию. Однако интерпретация может быть медленной, так как каждая инструкция должна заново преобразовываться в машинный код.
5. **JIT-компиляция:** Чтобы ускорить выполнение, JVM использует Just-In-Time (JIT) компилятор, который преобразует часто выполняемые части байт-кода в машинный код, позволяя процессору выполнять их напрямую.
6. **Сборка мусора:** Сборщик мусора (Garbage Collector) автоматически освобождает память от объектов, которые больше не используются, что предотвращает утечки памяти и снижает нагрузку на разработчика. Это улучшает управление ресурсами и обеспечивает надёжное выполнение программы.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Java разработка|00 Java разр аботка]]
**Родитель**:: [[Java Virtual Machine|JVM]]
**Источник**::
**Создана**:: [[2024-11-24]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -0,0 +1,63 @@
---
aliases:
tags:
- maturity/🌱
date: 2024-11-24
---
## Просмотр информации о дисках
- `lsblk` - Список блочных устройств (диски и разделы).
- `fdisk -l` - Показать таблицу разделов и информацию о диске.
- `blkid` - Показать атрибуты блочного устройства (UUID, файловые системы).
- `df -h` - Показать использование дискового пространства в удобочитаемом формате.
- `du -sh <directory>` - Суммировать использование пространства директорией.
## Разделение дисков
- `fdisk <device>` - Интерактивный инструмент для разделения диска.
- `parted <device>` - Создание, изменение и управление разделами на диске.
- `cfdisk <device>` - Инструмент с текстовым интерфейсом для манипуляции разделами.
- `gdisk <device>` - Редактор таблицы разделов GPT.
## Управление файловыми системами
- `mkfs.ext4 <partition>` - Создать файловую систему ext4 на разделе.
- `mkfs.xfs <partition>` - Создать файловую систему XFS на разделе.
- `mkfs.vfat <partition>` - Создать файловую систему FAT32 на разделе.
- `mkfs.ntfs <partition>` - Создать файловую систему NTFS на разделе.
- `tune2fs -L <label> <partition>` - Установить или изменить метку файловой системы ext2/3/4.
- `tune2fs -m <percentage> <partition>` - Установить процент зарезервированного пространства на ext2/3/4.
- `xfs_growfs <mount-point>` - Расширить файловую систему XFS, используя нераспределенное пространство.
## Монтирование и размонтирование файловых систем
- `mount <device> <mount-point>` - Смонтировать файловую систему в директорию.
- `umount <device>` - Размонтировать файловую систему.
- `mount -a` - Смонтировать все файловые системы, указанные в /etc/fstab.
- `mount -o loop <file.iso> <mount-point>` - Смонтировать ISO файл как устройство.
- `mkdir /mnt/<name>` - Создать точку монтирования.
- `mount /dev/<partition> /mnt/<name>` - Смонтировать раздел в созданную директорию.
## Проверка и восстановление файловых систем
- `fsck <device>` - Проверить и восстановить файловую систему.
- `e2fsck <device>` - Проверить и восстановить файловую систему ext2/3/4.
- `xfs_repair <device>` - Восстановить файловую систему XFS.
- `badblocks <device>` - Проверить диск на наличие поврежденных блоков.
- `smartctl -a <device>` - Показать SMART-информацию о состоянии устройства.
## Управление swap-пространством
- `swapon <partition>` - Включить swap-раздел.
- `swapoff <partition>` - Выключить swap-раздел.
- `mkswap <partition>` - Инициализировать swap-раздел.
- `free -h` - Показать использование памяти и swap в удобочитаемом формате.
## Дисковые квоты
- `quota -u <user>` - Показать использование дискового пространства и лимиты для пользователя.
- `quota -g <group>` - Показать использование дискового пространства и лимиты для группы.
- `repquota <filesystem>` - Сгенерировать отчет по дисковым квотам.
- `setquota -u <user> <soft> <hard> <filesystem>` - Установить мягкие и жесткие лимиты для пользователя.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-11-24]]
**Автор**::
### Дополнительные материалы
- [[Основные команды для управления LVM]]
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -1,11 +1,8 @@
---
aliases: []
aliases:
tags:
- maturity/🌱
date: 2024-10-06
zero-link:
parents:
linked:
---
Статическая фабрика — это метод, который создает и возвращает экземпляры класса, но вместо использования конструктора объект создается через статический метод. Основное отличие от конструктора заключается в том, что статическая фабрика предоставляет более гибкие возможности для создания объектов, включая возможность выбора имени метода, возврат кэшированных или предварительно созданных экземпляров и более точный контроль над процессом инициализации.
@ -27,7 +24,7 @@ linked:
***
## Мета информация
**Область**:: [[../../meta/zero/00 Разработка|00 Разработка]]
**Родитель**::
**Родитель**:: [[../architecture/Паттерн проектирования|Паттерн проектирования]]
**Источник**::
**Создана**:: [[2024-10-06]]
**Автор**::

View File

@ -8,8 +8,8 @@ title: Java разработка
В коммуникациях и обучении всегда важно устранить или уменьшить [[../../../../_inbox/Семантический разрыв|семантический разрыв]] между людьми, поэтому рекомендую переодически обращаться к [[../../dev/java/Голосарий Java|голосарию Java]], чтобы использовать одни и те же термины и определения.
Основные узлы:
- [Устройство Java](Устройство%20Java.md)
- [[../../dev/java/Процесс выполнения Java программы|Процесс выполнения Java программы]]
- [[../../dev/java/Многопоточность в Java|Многопоточность в Java]]
- Системы сборки
- [Maven](00%20Maven.md)

View File

@ -4,8 +4,9 @@ tags:
zero-link:
- "[[00 Разработка]]"
---
- Работа с файловой системой
- [Структура хранения файлов в Linux](Структура%20хранения%20файлов%20в%20Linux.md)
- [[../../dev/linux/Диагностика Linux|Диагностика Linux]]
- [[../../dev/linux/Команды управления диском в Linux|Команды управления диском в Linux]]
- [Проверка свободного места на дисках](../../dev/linux/Проверка%20свободного%20места%20на%20дисках.md)
CentOS:

View File

@ -0,0 +1,27 @@
---
aliases:
tags:
- maturity/🌱
- content/muesli
date: 2024-11-24
---
Одной из основных проблем в профессии ИТ-архитектора является ограниченная насмотренность и недостаток разнообразного опыта. Работа над одним продуктом или в рамках одной компании может привести к ограничению перспективы: архитектор редко сталкивается с нестандартными кейсами, новыми предметными областями и разнообразием подходов к проектированию. Даже участие в архитектурных комитетах крупной компании зачастую ограничено сложившимися ИТ-ландшафтом, устоявшимися паттернами и неизменным составом архитекторов.
Для архитектора важно постоянно расширять кругозор, изучать различные проекты и подходы. Насмотренность помогает увидеть разнообразие решений, адаптировать новые подходы и находить нестандартные способы решения задач. Один из эффективных способов повысить насмотренность — это участие в практических занятиях, разборах архитектурных решений, а также взаимодействие с коллегами из других компаний и областей. Такой формат позволяет не только углубиться в новые темы, но и взглянуть на привычные задачи под новым углом.
Проведение архитектурных разборов, практических занятий в формате воркшопов, анализа реальных кейсов и совместных ревью архитектур с другими специалистами также способствует развитию насмотренности.
Еще один полезный формат для повышения насмотренности — это архитектурные соревнования, например, архитектурные каты. В них участники получают возможность быстро решать архитектурные задачи в условиях ограниченного времени. Несмотря на то, что качество решений в таком формате может быть ниже, чем при полноценной проработке, подобные соревнования позволяют быстро и эффективно прокачивать навыки анализа и проектирования, а также расширять знание различных подходов.
***
## Мета информация
**Область**:: [[../meta/zero/00 Головные мюсли|00 Головные мюсли]], [[../meta/zero/00 Архитектура ИС|00 Архитектура ИС]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-11-24]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->