Java Portal | Программирование
12.1K subscribers
1.38K photos
109 videos
42 files
1.4K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Большинство разработчиков ни разу не открывали папку .git.
А именно там находится всё, что делает Git Gitом.

Git не является системой отслеживания изменений во времени. Git представляет собой content-addressable storage, построенное на основе направленного ациклического графа (DAG).

Все операции происходят внутри .git/objects/.
Git хеширует данные файлов и сохраняет их в виде четырёх типов объектов:

Blob → хранит только содержимое файла. Без имени файла, без пути. Два одинаковых файла в разных каталогах будут ссылаться на один и тот же blob.

Tree → хранит соответствие между именами файлов, правами доступа, путями и хешами blob-объектов или дочерних tree-объектов.

Commit → содержит ссылку на корневой tree-объект, а также информацию об авторе, временную метку и ссылку на родительский коммит.

Annotated Tag → содержит ссылку на коммит и собственные метаданные: имя автора тега, дату создания и сообщение тега.
Эти объекты образуют DAG:

Directed — дочерние объекты указывают на родительские.
Acyclic — ни один коммит не может ссылаться обратно на самого себя через цепочку связей.

Когда вы создаёте ветку, Git записывает один текстовый файл размером около 41 байта в:
.git/refs/heads/<имя-ветки>


Этот файл содержит:
40-символьный SHA-1 хеш
символ перевода строки в конце


Именно этот файл и представляет собой всю ветку.

Git не хранит файлы. Git хранит содержимое, связи между объектами и историю изменений.
Поймите устройство объектов Git. Освойте граф. Тогда станет понятно, как Git работает на самом деле.
#Git

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Extension API в JUnit 5 заменяет @RunWith, Runner и @Rule из JUnit 4.

Единая модель: реализуете lifecycle-хуки вроде BeforeEachCallback вместо эксклюзивного Runner
ParameterResolver инжектит зависимости в тесты, без наследования от базового класса

Extensions компонуются: можно навесить несколько расширений через @ExtendWith.
Демо-проект на GitHub: https://github.com/mcasari/codingstrain/tree/main/x-posts-examples/junit5-extension-api-demo

#Java #JUnit5

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Hibernate & JPA Cheatsheet

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Java: избегайте магических чисел.

В Java магическим числом (Magic Number) называют жёстко заданное числовое значение, используемое в коде без какого-либо пояснения того, что именно оно обозначает.

Магические числа снижают читаемость кода и усложняют его сопровождение.

#JavaDev #CleanCode

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2
Почему Twelve-Factor App важен

Он описывает проверенные временем архитектурные паттерны и практики, которые можно применять к SaaS-приложениям. Эти подходы помогают создавать софт, который будет устойчивым и легко переносимым при деплое в онлайн-среду.

Двенадцать факторов:

I. Codebase
Одна кодовая база под управлением системы контроля версий, много окружений для деплоя

II. Dependencies
Явное объявление и изоляция зависимостей

III. Config
Хранение конфигурации в окружении

IV. Backing services
Внешние сервисы воспринимаются как подключаемые ресурсы

V. Build, release, run
Жёсткое разделение стадий сборки, релиза и запуска

VI. Processes
Приложение запускается как один или несколько Stateless-процессов

VII. Port binding
Экспорт сервисов через привязку к порту

VIII. Concurrency
Масштабирование через модель процессов

IX. Disposability
Максимальная надёжность за счёт быстрого старта и корректного завершения

X. Dev/prod parity
Минимизировать различия между dev, staging и production

XI. Logs
Логи рассматриваются как поток событий

XII. Admin processes
Админские задачи выполняются как одноразовые процессы

В книге Beyond the 12 Factor App Кевин Хоффман дополняет эти принципы новыми пунктами, включая телеметрию и безопасность:

- Один код, одно приложение
- API first
- Управление зависимостями
- Design, build, release, run
- Конфигурация, креды и код
- Логи
- Disposability
- Внешние сервисы
- Эквивалентность окружений
- Административные процессы
- Port binding
- Stateless-процессы
- Конкурентность
- Телеметрия
- Аутентификация и авторизация


👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
1
💡 Java: Удаляйте неиспользуемые импорты и переменные для повышения читаемости кода.

Лишние импорты и неиспользуемые переменные создают визуальный шум, усложняют навигацию по коду и затрудняют поддержку. Большинство IDE умеют автоматически находить и удалять такой код.

#Java #CleanCode

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Наткнулся на GitHub-репозиторий для изучения System Design - - - https://github.com/systemdesign42/system-design-academy

Внутри собраны материалы как для подготовки к собеседованиям, так и для понимания того, как устроены реальные системы.

Что есть:

• Основы System Design
• Базовые концепции AI Engineering
• Вопросы по System Design для собеседований
• Разборы архитектур реальных сервисов
• Упрощённые инженерные кейсы с визуализациями и схемами

Понравилось, что материал собран в одном месте и не требует прыгать между десятками статей, видео и блогов.

Хороший вариант для тех, кто хочет закрыть пробелы в архитектуре систем или подготовиться к design-интервью.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
Java-совет: старайтесь избегать статических переменных, если они не хранят действительно глобальные значения.

Они усложняют тестирование, поскольку общий изменяемый state затрудняет изоляцию классов и делает тесты более зависимыми друг от друга.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
40 собесов и оффер за 1 месяц

Алексей разработчик.

Искал работу с декабря - написание сопроводов и отклики занимали очень много времени.

Выхлоп - почти нулевой.

В какой-то момент понял:
так можно искать бесконечно.

И по совету друга попробовал ии-ассистента Софи.

▫️За ~1 месяц прошел около 40 собеседований
▫️Получил оффер с вакансии, на которую, по его словам, не откликнулся бы сам

В описании она выглядела скучно, а по факту - одна из самых интересных компаний, с которыми я общался.


Весь процесс - от первого собеседования до оффера - занял 4 дня.

P.S. Попробовать Софи бесплатно можно будет 16 июня.
Не пропусти анонс здесь.
💊6
Совет по Java: используйте StringBuilder вместо String для конкатенации строк в циклах.

String является неизменяемым (immutable), поэтому его использование в циклах, особенно больших, работает неэффективно.
StringBuilder является изменяемым (mutable) и оптимизирован для многократного добавления строк.

#SoftwareDevelopment

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM