Books for Java and SQL
211 subscribers
29 photos
2 videos
23 files
67 links
All of the best books for java/SQL and some other👌
Download Telegram
Атомарность (atomicity) гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.

Согласованность (consistency). Транзакция, достигающая своего нормального завершения и, тем самым, фиксирующая свои результаты, сохраняет согласованность базы данных.

Изолированность (isolation). Во время выполнения транзакции параллельные транзакции не должны оказывать влияние на её результат.

Долговечность (durability). Независимо от проблем на нижних уровнях (к примеру, обесточивание системы или сбои в оборудовании) изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу.
Books for Java and SQL pinned «https://thorben-janssen.com/best-practices-many-one-one-many-associations-mappings/»
Forwarded from QA Memes
Шпаргалки по SQL
Forwarded from Vitaly
JAVA_CODING_PROBLEMS.pdf
7 MB
кароч книжку читаю вроде как полезная 200+ задачек разными способами решены включая стримы
👍1
Forwarded from Библиотека программиста
😻 5 проектов на GitHub, которые помогут вам стать лучшим инженером DevOps

DevOps – одна из самых сложных областей, в которой чтобы отлично справляться и оставаться актуальным, вам нужно постоянно учиться. Рассмотрим 5 проектов, способных в этом помочь.

https://proglib.io/sh/pRcW3HQID2
Советую⬆️
Forwarded from EPAM Campus UA
​​🎯 Easy, Medium, Hard: три сайти для підготовки до DevSecOps Fast Track

Вже цієї неділі, 15 серпня, закривається реєстрація на набір DevSecOps – напрям на стику кібербезпеки, системного адміністрування та хмарних середовищ ☁️

🔐 Щоб трохи попрактикуватися перед стартом програми або просто познайомитися з професією та зрозуміти, чи підходить вона вам, радимо потренуватися на одному з трьох сайтів різних рівней складності – Easy, Medium та Hard – які рекомендує Андрій Костромицький, керівник напрямів DevOps, BA та Python в EPAM University.

🐥 Easy: TryHackMe. Інтерактивний формат навчання, невеликі уроки, система винагород та beginner-friendly програма роблять цей сайт кращим другом початківця у кібербезпеці. Кажуть, що два тижні активного проходження уроків на цьому сайті замінюють два роки вивчення сухої теорії. Що ж, це точно варто перевірити самому!

🤯 Medium: Root Me. Більш як 400 різноманітних челенджів та близько 4400+ існуючих рішень, які запропонували юзери – тут є, де попрактикувати свій скіл як джуніору, так і досвідченому DevSecOps інженеру. На сайті можна обирати задачі 5 рівнів складності, обговорювати особливо складні кейси з ком'юніті, ну і, звісно, прокачувати свої знання з мереж, безпеки та будови вебсторінок.

😈 Hard: Offensive Security. "Бажання страждати є необхідним критерієм для закінчення цієї програми", – кажуть експерти з кібербезпеки та пентестінгу з досвідом 7+ років. Це – точно не сайт для початківців, але окрім челенджів від девелоперів Kali Linux, на сайті також можна знайти онлайн-курси, які вважаються чи не кращими з існуючих (але, звісно, не такими класними, як в EPAM University 😇). Відкривати тільки на свій страх та ризик!

🌟 Якщо ж після перегляду сайтів ви тільки впевнилися у своєму бажанні стати DevSecOps інженером, щоб незабаром будувати неприступні системи разом з командою EPAM, тоді DevSecOps Fast Track хоче бачити саме вас на програмі – приєднуйтесь!
Spring Boot with React and AWS: Learn to Deploy a Full Stack Spring Boot React Application to AWS (2021) PDF

Create and deploy full-stack Spring Boot applications with React and AWS. This practical and authoritative guide teaches you the fundamentals of Amazon Web Services with no prior experience.
You will start by learning the fundamentals of AWS, including EC2, S3, IAM, and load balancer. Next, you will learn to deploy a Spring Boot REST API to AWS with Elastic Beanstalk, which will give you the ability to build and deploy a Spring Boot application. You will explore the RDS relational database and create an instance of a MySQL database in AWS with RDS.
You will then deploy a Spring Boot application to MySQL in AWS and deploy a full-stack Spring Boot React application to AWS using Elastic Beanstalk and S3. Lastly, you will be introduced to ELB, CloudWatch, and Route 53. By the end of this book you will understand full-stack Spring Boot React applications and their deployment.
#security #guide

Справочник по разработке безопасных веб-приложений: лучшие практики, анализ и исправление уязвимостей.

https://proglib.io/w/3e42e3da
Forwarded from Java: fill the gaps
Чем отличаются Dependency injection, Dependency invertion и Inversion of Control

Прошлый пост про Liskov, как говорится, "взорвал мой директ", поэтому на этой неделе расскажу про ещё два популярных принципа.

Сегодня про букву D из SOLID — Dependency Inversion. Что это, и чем отличается от Dependency injection и Inversion of Control. Понимание пригодится на собеседованиях, при чтении статей по дизайну и архитектуре.

Будем разбираться на простом примере: класс Service записывает логи в файл через класс FileLogger:

class FileLogger {…}
class Service {
FileLogger logger=new FileLogger();
}

Сделаем код чуть лучше с помощью разных принципов:

1️⃣ Dependency injection
— компоненты создаются не внутри класса, а где-то в другом месте.

Как реализовать: перенести инициализацию логгера в конструктор или сеттер:

class Service {
FileLogger logger;
Service (FileLogger logger) {
this.logger=logger;
}
}

Класс занимается только своей бизнес-логикой
Можно вынести всю конфигурацию в одно место. Или спихнуть часть забот фреймворку, например, Spring

⚔️Историческая справка
Когда Spring ещё не был популярен, в проектах использовался паттерн Service Locator.

Суть: компоненты создаются в классе ServiceLocator, а другие классы получают к ним доступ через статические методы:

class ServiceLocator {
static Logger logger = …
static Logger getLogger() {
return logger;
}
}

class Service {
Logger logger=ServiceLocator.getLogger();
}

2️⃣ Dependency invertion (D из SOLID)
▫️Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций
▫️Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракции

Как реализовать: использовать интерфейс логгера, а не конкретный класс

interface Logger {…}
class FileLogger implements Logger {…}

class Service {
Logger logger=new FileLogger();
}

Интерфейс проще использовать, так как методов меньше
Реализацию легко заменить
Оба класса проще тестировать

Термин "абстракция" используется, потому что SOLID не привязан только к джаве. Группу методов можно выделить в интерфейс, в абстрактный класс и даже в обычный класс. Но интерфейс — наилучший вариант

3️⃣ IoC - Inversion of Control
В маленьких программах жизнь начинается в методе main. Программист создаёт объекты и вызывает их методы, все шаги явно прописаны.

Inversion of Control — это когда ход выполнения программы задаёт фреймворк. Например, Spring создаёт объекты, принимает запросы и не даёт программе завершиться.

Как реализовать: использовать аннотации фреймворка

@Component class FileLogger {…}
@Component class Service {
@Autowired
FileLogger logger;
}

Меньше скучного кода
Низкая связность — код легко читать, менять и тестировать

Резюме:
🔸Dependency injection — класс не создаёт компоненты напрямую, они передаются через конструктор или сеттер
🔸Dependency invertion — класс работает с другими компонентами через интерфейс
🔸Inversion of Control — ход программы задаёт фреймворк

❗️Ответ на вопрос перед постом:
Это словоблудие относится к Dependency injection