Forwarded from Книги для Java программиста
Погружение в паттерны проектирования (2021) PDF + Архив с примерами кода
Книга «Погружение в Паттерны Проектирования» описывает 22 классических паттерна проектирования, а также 8 принципов проектирования, на которых они основаны.
Каждая глава начинается с разбора определённой проблемы, возникающей при проектировании, и шаг за шагом подводит читателя к решению с помощью одного из паттернов.
Далее идёт детальный разбор структуры паттерна и его вариаций, а также пример реализации в коде.
Затем, читатель знакомится с кейсами использования паттерна и учится воспроизводить паттерн по шагам.
Заканчиваются главы обсуждением плюсов и минусов паттерна, а также обзором его связей с другими паттернами.
Книга «Погружение в Паттерны Проектирования» описывает 22 классических паттерна проектирования, а также 8 принципов проектирования, на которых они основаны.
Каждая глава начинается с разбора определённой проблемы, возникающей при проектировании, и шаг за шагом подводит читателя к решению с помощью одного из паттернов.
Далее идёт детальный разбор структуры паттерна и его вариаций, а также пример реализации в коде.
Затем, читатель знакомится с кейсами использования паттерна и учится воспроизводить паттерн по шагам.
Заканчиваются главы обсуждением плюсов и минусов паттерна, а также обзором его связей с другими паттернами.
Forwarded from Java Portal | Программирование
Если нужно внедрить сгруппированные конфигурационные параметры в классы, можно использовать аннотацию
👉 Java Portal
@ConfigurationProperties вместо @Value@Value обычно применяют для внедрения отдельных свойств:@Value("${app.name}")
private String appName;@ConfigurationProperties лучше подходит для более сложных, сгруппированных настроек:email:
host: smtp.example.com
port: 587
username: user@example.com
password: secret
@Component
@ConfigurationProperties(prefix = "email")
public class EmailProperties {
private String host;
private int port;
private String username;
private String password;
// геттеры и сеттеры
}
@Service
public class EmailService {
private final EmailProperties emailProperties;
public EmailService(EmailProperties emailProperties) {
this.emailProperties = emailProperties;
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Webmakon | AI
🔒 Hozirgi kunda ma'lumotlar xavfsizligi va maxfiyligi juda muhim hisoblanadi.
Shunday ekan, brauzeringizdagi maxfiylikni tekshiring: shaxsiy ma’lumotlarning sizib chiqayotganini aniqlash uchun 5 ta xizmatdan iborat to‘plamni sinab koʻring.
- Browserleaks: brauzeringiz boshqa saytlarga qanday ma’lumotlarni oshkor qilayotganini ko‘rsatadi;
- CreepJS: qurilmangiz orqa fonda qancha texnik ma’lumotni uzatayotganini baholaydi;
- FingerprintJS: raqamli barmoq izingizning qanchalik noyobligini namoyish etadi;
- Cover Your Tracks: sizni aniqlash qanchalik oson ekanligini ko‘rsatuvchi tezkor test;
- WebBrowserTools: brauzerda maxfiylik va xavfsizlikni baholash uchun oddiy testlar to‘plami.
@webmakon
Shunday ekan, brauzeringizdagi maxfiylikni tekshiring: shaxsiy ma’lumotlarning sizib chiqayotganini aniqlash uchun 5 ta xizmatdan iborat to‘plamni sinab koʻring.
- Browserleaks: brauzeringiz boshqa saytlarga qanday ma’lumotlarni oshkor qilayotganini ko‘rsatadi;
- CreepJS: qurilmangiz orqa fonda qancha texnik ma’lumotni uzatayotganini baholaydi;
- FingerprintJS: raqamli barmoq izingizning qanchalik noyobligini namoyish etadi;
- Cover Your Tracks: sizni aniqlash qanchalik oson ekanligini ko‘rsatuvchi tezkor test;
- WebBrowserTools: brauzerda maxfiylik va xavfsizlikni baholash uchun oddiy testlar to‘plami.
@webmakon