This commit is contained in:
parent
c334cee3d8
commit
10a5cd0b97
@ -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 -->
|
||||
|
@ -1,5 +1,7 @@
|
||||
---
|
||||
aliases:
|
||||
- Class Loader
|
||||
- Class Loaders
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-11-04
|
||||
|
29
dev/java/Execution Engine.md
Normal file
29
dev/java/Execution Engine.md
Normal 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) -->
|
||||
|
@ -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 выполняет его, управляя памятью, потоками и исключениями, обеспечивая надёжное выполнение программы.
|
||||
|
26
dev/java/Процесс выполнения Java программы.md
Normal file
26
dev/java/Процесс выполнения Java программы.md
Normal 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) -->
|
||||
|
63
dev/linux/Команды управления диском в Linux.md
Normal file
63
dev/linux/Команды управления диском в Linux.md
Normal 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) -->
|
||||
|
@ -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]]
|
||||
**Автор**::
|
||||
|
@ -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)
|
||||
|
@ -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:
|
||||
|
27
muesli/Насмотренность архитектора.md
Normal file
27
muesli/Насмотренность архитектора.md
Normal 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) -->
|
||||
|
Loading…
Reference in New Issue
Block a user