This commit is contained in:
parent
c334cee3d8
commit
10a5cd0b97
@ -10,11 +10,12 @@ linked:
|
|||||||
---
|
---
|
||||||
- [[Dependency Injection]]
|
- [[Dependency Injection]]
|
||||||
- [[Порождающий паттерн проектирования]]
|
- [[Порождающий паттерн проектирования]]
|
||||||
- [[Builder Pattern|Builder Pattern]]: строит объекты поэтапно, разделяя процесс создания и внешний вид.
|
|
||||||
|
|
||||||
- Abstract Factory: создаёт группы связанных элементов.
|
- Abstract Factory: создаёт группы связанных элементов.
|
||||||
|
- [[Builder Pattern|Builder Pattern]]: строит объекты поэтапно, разделяя процесс создания и внешний вид.
|
||||||
|
- [[../other/Статическая фабрика|Статическая фабрика]]
|
||||||
- Prototype: создаёт копии полностью подготовленных экземпляров.
|
- Prototype: создаёт копии полностью подготовленных экземпляров.
|
||||||
- Singleton: One and Only — особый класс, имеющий только один экземпляр.
|
- Singleton: One and Only — особый класс, имеющий только один экземпляр.
|
||||||
|
- Структурные паттерны
|
||||||
- Adapter: Universal Plug — соединяет объекты с разными интерфейсами.
|
- Adapter: Universal Plug — соединяет объекты с разными интерфейсами.
|
||||||
- Bridge: Function Connector — связывает, как объект работает, с тем, что он делает.
|
- Bridge: Function Connector — связывает, как объект работает, с тем, что он делает.
|
||||||
- Composite: Tree Builder — формирует древовидные структуры из простых и сложных частей.
|
- Composite: Tree Builder — формирует древовидные структуры из простых и сложных частей.
|
||||||
@ -22,6 +23,7 @@ linked:
|
|||||||
- Facade: One-Stop-Shop — представляет всю систему через один упрощённый интерфейс.
|
- Facade: One-Stop-Shop — представляет всю систему через один упрощённый интерфейс.
|
||||||
- Flyweight: Space Saver — эффективно использует небольшие, многократно используемые элементы.
|
- Flyweight: Space Saver — эффективно использует небольшие, многократно используемые элементы.
|
||||||
- Proxy: Stand-In Actor — представляет другой объект, управляя доступом или действиями.
|
- Proxy: Stand-In Actor — представляет другой объект, управляя доступом или действиями.
|
||||||
|
- Поведенческие паттерны
|
||||||
- Chain of Responsibility: Request Relay — передаёт запрос по цепочке объектов до его обработки.
|
- Chain of Responsibility: Request Relay — передаёт запрос по цепочке объектов до его обработки.
|
||||||
- Command: Task Wrapper — превращает запрос в объект, готовый к выполнению.
|
- Command: Task Wrapper — превращает запрос в объект, готовый к выполнению.
|
||||||
- Iterator: Collection Explorer — последовательно получает доступ к элементам коллекции.
|
- Iterator: Collection Explorer — последовательно получает доступ к элементам коллекции.
|
||||||
@ -50,4 +52,5 @@ linked:
|
|||||||
- [[Dependency Injection]]
|
- [[Dependency Injection]]
|
||||||
- [[Transactional Outbox]]
|
- [[Transactional Outbox]]
|
||||||
- [[Порождающий паттерн проектирования]]
|
- [[Порождающий паттерн проектирования]]
|
||||||
|
- [[Статическая фабрика]]
|
||||||
<!-- SerializedQuery END -->
|
<!-- SerializedQuery END -->
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
|
- Class Loader
|
||||||
|
- Class Loaders
|
||||||
tags:
|
tags:
|
||||||
- maturity/🌱
|
- maturity/🌱
|
||||||
date: 2024-11-04
|
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 обеспечивает безопасное выполнение кода с помощью системы управления доступом, проверяющей разрешения для выполнения определённых операций, таких как доступ к файловой системе, что помогает предотвратить выполнение вредоносного кода.
|
||||||
- **Многопоточность**. JVM поддерживает [[../fundamental/Multithreading|многопоточность]], позволяя разрабатывать многопоточные приложения на уровне языка. Она управляет созданием, синхронизацией и выполнением потоков.
|
- **Многопоточность**. JVM поддерживает [[../fundamental/Multithreading|многопоточность]], позволяя разрабатывать многопоточные приложения на уровне языка. Она управляет созданием, синхронизацией и выполнением потоков.
|
||||||
- **Управление исключениями**. JVM предоставляет механизм обработки исключений, который позволяет программам Java надёжно обрабатывать ошибки во время выполнения, повышая стабильность и устойчивость приложений.
|
- **Управление исключениями**. 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:
|
tags:
|
||||||
- maturity/🌱
|
- maturity/🌱
|
||||||
date: 2024-10-06
|
date: 2024-10-06
|
||||||
zero-link:
|
|
||||||
parents:
|
|
||||||
linked:
|
|
||||||
---
|
---
|
||||||
Статическая фабрика — это метод, который создает и возвращает экземпляры класса, но вместо использования конструктора объект создается через статический метод. Основное отличие от конструктора заключается в том, что статическая фабрика предоставляет более гибкие возможности для создания объектов, включая возможность выбора имени метода, возврат кэшированных или предварительно созданных экземпляров и более точный контроль над процессом инициализации.
|
Статическая фабрика — это метод, который создает и возвращает экземпляры класса, но вместо использования конструктора объект создается через статический метод. Основное отличие от конструктора заключается в том, что статическая фабрика предоставляет более гибкие возможности для создания объектов, включая возможность выбора имени метода, возврат кэшированных или предварительно созданных экземпляров и более точный контроль над процессом инициализации.
|
||||||
|
|
||||||
@ -27,7 +24,7 @@ linked:
|
|||||||
***
|
***
|
||||||
## Мета информация
|
## Мета информация
|
||||||
**Область**:: [[../../meta/zero/00 Разработка|00 Разработка]]
|
**Область**:: [[../../meta/zero/00 Разработка|00 Разработка]]
|
||||||
**Родитель**::
|
**Родитель**:: [[../architecture/Паттерн проектирования|Паттерн проектирования]]
|
||||||
**Источник**::
|
**Источник**::
|
||||||
**Создана**:: [[2024-10-06]]
|
**Создана**:: [[2024-10-06]]
|
||||||
**Автор**::
|
**Автор**::
|
||||||
|
@ -8,8 +8,8 @@ title: Java разработка
|
|||||||
В коммуникациях и обучении всегда важно устранить или уменьшить [[../../../../_inbox/Семантический разрыв|семантический разрыв]] между людьми, поэтому рекомендую переодически обращаться к [[../../dev/java/Голосарий Java|голосарию Java]], чтобы использовать одни и те же термины и определения.
|
В коммуникациях и обучении всегда важно устранить или уменьшить [[../../../../_inbox/Семантический разрыв|семантический разрыв]] между людьми, поэтому рекомендую переодически обращаться к [[../../dev/java/Голосарий Java|голосарию Java]], чтобы использовать одни и те же термины и определения.
|
||||||
|
|
||||||
Основные узлы:
|
Основные узлы:
|
||||||
|
|
||||||
- [Устройство Java](Устройство%20Java.md)
|
- [Устройство Java](Устройство%20Java.md)
|
||||||
|
- [[../../dev/java/Процесс выполнения Java программы|Процесс выполнения Java программы]]
|
||||||
- [[../../dev/java/Многопоточность в Java|Многопоточность в Java]]
|
- [[../../dev/java/Многопоточность в Java|Многопоточность в Java]]
|
||||||
- Системы сборки
|
- Системы сборки
|
||||||
- [Maven](00%20Maven.md)
|
- [Maven](00%20Maven.md)
|
||||||
|
@ -4,8 +4,9 @@ tags:
|
|||||||
zero-link:
|
zero-link:
|
||||||
- "[[00 Разработка]]"
|
- "[[00 Разработка]]"
|
||||||
---
|
---
|
||||||
|
- Работа с файловой системой
|
||||||
- [Структура хранения файлов в Linux](Структура%20хранения%20файлов%20в%20Linux.md)
|
- [Структура хранения файлов в Linux](Структура%20хранения%20файлов%20в%20Linux.md)
|
||||||
- [[../../dev/linux/Диагностика Linux|Диагностика Linux]]
|
- [[../../dev/linux/Команды управления диском в Linux|Команды управления диском в Linux]]
|
||||||
- [Проверка свободного места на дисках](../../dev/linux/Проверка%20свободного%20места%20на%20дисках.md)
|
- [Проверка свободного места на дисках](../../dev/linux/Проверка%20свободного%20места%20на%20дисках.md)
|
||||||
|
|
||||||
CentOS:
|
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