Секреты Java
Open in Telegram
Обсуждаем Java, архитектуру, фреймворки и всё, о чем должны говорить разработчики. Владелец: @Alexey_Morl Реклама на бирже: https://telega.in/c/java_secrets
Show more7 991
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
7 991
Ты + work-life balance = смешная шутка?
Если вечно работаешь до ночи, утром не можешь проснуться, выгораешь, прокрастинируешь, коришь себя за то, что не можешь это изменить...
То попробуй решить эту проблему с ЭЭГ-наушниками Neiry Mind Tracker
Наш софт обрабатывает электрическую активность твоего мозга и дает персональные рекомендации: когда мозг готов к работе, а когда пора отдохнуть: чтобы ты снова не впал в прокрастинацию
Это функцию мы называем «Нейропомодоро», потому что это похоже на тот самый таймер: ты работаешь 20-30 минут и потом софт говорит, что пора сделать паузу...
❗️ Только в нашем случае — это персональный таймер, основанный на твоей РЕАЛЬНОЙ усталости
Под капотом — настоящая наука и длительные исследования нейрофизиологов
Узнай подробнее о майнд-трекере Neiry: https://neiry.ru/mt-cpa-all?utm_source=tg_in_ALL&utm_medium=234sek&utm_term=adP4
Реклама. ООО "НЕЙРИ". ИНН 9701140612. erid: LjN8KR7ub
7 991
✅Spring Profiles
Spring Profiles - это мощный механизм Spring Framework, который позволяет легко настраивать контекст и использовать разные конфигурации для разных сред.
▫️Как определить профили?
Профили определяются с использованием аннотации
@Profile. Каждый профиль может иметь свои собственные настройки и бины:
@Configuration
@Profile("dev")
public class DevConfig {
}
Так же можно повесить эту аннотацию на класс компонента:
@Component
@Profile("dev")
public class DevComponent {
}
или метод создания бина в классе конфигурации:
@Configuration
public class Config {
@Bean
@Profile("dev")
public MyBean myBean() {
return new MyBean();
}
Для xml конфигурации:
<beans profile="dev">
<bean id="myBean" class="org.demo.MyBean" />
</beans>
▫️Как установить активный профиль?
Чтобы установить активный профиль, так же есть несколько различных вариантов:
- Через JVM параметры
-Dspring.profiles.active=dev
- Профили можно активировать через переменные окружения (для Unix/Windows соответственно):
export SPRING_PROFILES_ACTIVE=dev
set SPRING_PROFILES_ACTIVE=dev
- Через файл application.properties (yaml):
spring.profiles.active=dev
- Программно через ConfigurableEnvironment:
@Autowired
private ConfigurableEnvironment env;
...
env.setActiveProfiles("dev");
▫️Рассмотрим простой пример для понимания:
Есть два класса конфигурации для дева и прода:
@Configuration
@Profile("dev")
public class DevConfig {
// Конфигурация для дев
}
@Configuration
@Profile("prod")
public class ProdConfig {
// Конфигурация для прода
}
В файле application.yml:
spring:
profiles:
active: dev
В этом примере Spring будет использовать конфигурацию из DevConfig , а ProdConfig - только при активации профиля prod.
Профили могут использоваться для конфигурации различных аспектов приложения, таких как базы данных, настройки безопасности, внешние сервисы и многое другое. Например, можно настроить разные подключения к базам данных для разных сред выполнения (тестирование, разработка, продакшн).
🫡 Секреты Java
#spring #profile7 991
Сегодня хочу поделиться с вами настоящим кладом знаний - файлом "30 best practices in Java" от DMdev.
Здесь вы найдете не просто советы, но истинные жемчужины опыта от профессионала в мире Java.
Откройте секреты Java мастерства и сделайте свой код идеальным прямо сейчас!
7 991
Термин «профессионализм» имеет много смысловых оттенков. Конечно, профессионализм — это своего рода почетный знак и повод для гордости, но также он является признаком ответственности. Тот факт, что в вашем коде заведомо будут присутствовать ошибки, не означает, что вы не несете за них ответственность. Написать идеальную программу практически невозможно, но за все недочеты несете ответственность именно вы, и никто другой. Это верный признак настоящего профессионала — умение отвечать за свои ошибки, появление которых практически неизбежно. Когда вы передаете окончательную версию продукта в службу контроля качества, вы должны рассчитывать на то, что контроль не выявит никаких проблем. Было бы в высшей степени непрофессионально передавать на контроль качества заведомо дефектный код. А какой код является заведомо дефектным? Любой, в качестве которого вы не уверены. Как узнать, работает ли ваш код? Легко. Протестируйте его. Потом протестируйте еще раз. Протестируйте слева направо, потом справа налево. А теперь еще и сверху вниз! Какая часть кода должна тестироваться модульными тестами? Мне действительно нужно отвечать на этот вопрос? Весь код! Весь. Без исключения.© Роберт Мартин "Идеальный программист" Хочу поднять тему софт скиллов и чуть поговорить про ответственность разработчика. Привел вырезку из книги, где автор рассматривает один из принципов профессионализма, а именно ответственность разработчика за свой код и где эта ответственность лежит. У каждого разработчика есть своя зона ответственности. Джун отвечает перед сеньором, сеньор перед тимлидом, который отвечает перед заказчиком. Не важно какой уровень у вас сейчас, вы ответственны за тот код, который написали и который передаете выше по цепочке. Что это значит? А то, что отдавая свой код, вы должны быть уверены в нем на сто процентов. Это не значит, что в нем не будет ошибок, а значит, что вы его протестировали вдоль и поперек различными видами тестов, пропустили через анализаторы кода и можете честно сказать, что сделали все, чтобы избежать ошибок. Уверены? Тогда вперед. Бывало иногда я получал код на ревью от младших коллег по завершении задачи, который мог даже не компилится, и я тогда их спрашивал: "Что было если бы ты отвечал напрямую перед заказчиком и прямо сейчас развернул бы ему этот код на прод?" (Ведь перед заказчиком буду отвечать я) После этого вопроса им становиться понятно, где их зона ответственности. Не нужно надеяться ни на старших коллег ни на QA. Вы отвечаете за свою часть кода и вы должны быть уверены, что он не навредит продукту! Профессионализм не делится на градации Junior/Middle/Senior и не оплачивается дополнительно, но это тот фундамент, на котором вы должны строить свой путь, если хотите быть профессионалом. Ставьте ❤️, если вам интересна тема софт скиллов. 🫡 Секреты Java #quotes #softskills
7 991
Присоединяйтесь к нашему бесплатному курсу и начните увлекательное путешествие в мир Java!
Изучайте основы, создавайте программы, разбирайтесь с методами и анализируйте ошибки в коде. Практика, упражнения и проверочные тесты помогут вам освоить навыки программирования.
🎓 Чему вы научитесь:
— Создавать программы с использованием основных конструкций языка.
— Разделять код на методы для повторного использования.
— Анализировать ошибки в коде с использованием отладочной печати.
💼 Включено в курс:
29 уроков (видео и/или текст), 35 упражнений в тренажере, 95 проверочных тестов + дополнительные материалы.
Вы с нами?😉
7 991
Из джуна в мидла вместе с Холдингом Т1🚀 Приглашаем java-разработчиков в Открытые школы Т1!
🎓 Открытые школы Т1 — это новая карьерная программа для IТ-специалистов, объединяющая обучение без отрыва от работы и offer weeks.
👨💻 Для участия необходим опыт работы java-разработчиком от 1 года, а также желание присоединиться к команде Т1.
Т1 занимает 2 место среди крупнейших ИКТ-компаний по версии RAEX 2023 и является партнёром ключевых производителей и разработчиков в сфере ИТ.
В программу входит: spring framework; docker; синхронное и асинхронное взаимодействие, брокеры сообщений; паттерны, SOLID
⏰ Длительность 1 месяц.
💻 Формат: онлайн по вечерам (от 8 часов в неделю на вебинары и практику).
Лучшим назначим интервью и направим оффер!
Принимаем заявки до 22 апреля! 🚀
Реклама. ООО "Т1". ИНН 7720484492.
7 991
✅ Чем отличаются JAR и WAR файлы?
JAR (Java ARchive) и WAR (Web Application Archive) - это два основных типа архивных файлов в Java, каждый из которых предназначен для различных целей и сред выполнения. Чем же они отличаются?
▫️Расширение:
Самое очевидное это, конечно, расширения файлов - .jar и .war соответственно.
▫️Назначение:
JAR файлы используются для упаковки и распространения библиотек, приложений или модулей в Java. Они могут содержать Java классы, ресурсы, библиотеки и метаданные.
А WAR файлы предназначены для развертывания веб-приложений. И, помимо перечисленного для JAR, они содержат весь необходимый контент для работы веб-приложения, включая HTML, CSS, JavaScript, JSP, Servlets, библиотеки и другие ресурсы.
▫️Структура:
JAR файлы могут иметь различную структуру, но обычно они содержат скомпилированные классы Java, а также ресурсы и метаданные проекта. Самый простой пример структуры:
META-INF/
MANIFEST.MF
com/
myapp/
MyApp.class
WAR файлы имеют специальную структуру, соответствующую структуре веб-приложения. Обычно они содержат каталоги WEB-INF, META-INF, а также ресурсы веб-приложения:
META-INF/
MANIFEST.MF
WEB-INF/
web.xml
jsp/
myApp.jsp
classes/
static/
templates/
application.properties
lib/
// different *.jar libs
▫️Среда выполнения:
JAR файлы могут быть запущены непосредственно в среде JVM без необходимости сервера приложений.
WAR файлы развертываются и запускаются на сервере приложений, таких как Apache Tomcat/Jetty/WildFly, который обеспечивает контейнер сервлетов и другие службы веб-приложений.
🫡 Секреты Java
#jar #war7 991
▫️ Как пройти собеседование на английском
▫️ Подборка выражений для описания коллег
▫️ Weird English Idioms
Еще больше английского для работы и жизни на канале «Гапонова и ее английский». Лена Гапонова — автор курсов Gaponova school, преподаватель с 16-летним стажем и опытом в международных IT-компаниях — объясняет сложное в английской грамматике, знакомит с интересными выражениями, учит правильному произношению и помогает подружиться с английским языком.
Помимо английского, Лена рассказывает про методику, эффективное обучение, собеседование на английском и жизнь в других странах.
📌Подписывайтесь на @gaponova и узнавайте ещё больше про английский
erid: LjN8KXxcf
7 991
✅ Использование ScheduledExecutorService
ScheduledExecutorService - это интерфейс, который предоставляет удобный способ для выполнения задач с определенной задержкой или периодом. Он является частью пакета java.util.concurrent и предоставляет мощные возможности для управления планированием выполнения задач. Рассмотрим как его можно использовать:
▫️Создаем пул потоков и указываем его размер (сколько потоков будет в пуле):
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
▫️Запуск задачи с определенной задержкой:
executor.schedule(() -> {
System.out.println("Task executed after 5 seconds");
}, 5, TimeUnit.SECONDS);
Этот код выведет в консоль текст через 5 секунд.
▫️Периодическое выполнение задачи с фиксированной задержкой:
executor.scheduleAtFixedRate(() -> {
System.out.println("Task executed at fixed rate");
}, 3, 1, TimeUnit.SECONDS);
Этот код будет выводить в консоль текст, каждую 1 секунду, начиная через 3 секунды после запуска. Т.е. каждую секунду executor будет запускать выполнение задачи, а если выполнение задачи идет дольше, чем заданная задержка, следующее выполнение начнется сразу же после завершения предыдущего.
▫️Периодическое выполнение задачи с фиксированной задержкой между выполнениями:
executor.scheduleWithFixedDelay(() -> {
System.out.println("Task executed with fixed delay");
}, 3, 1, TimeUnit.SECONDS);
Этот код будет выполнять то же самое, что и предыдущий пример, но с одним важным отличием - 1 секунда задержки будет применятся после завершения предыдущего выполнения, что означает, что интервал между окончанием одного выполнения и началом следующего всегда одинаковый.
ScheduledExecutorService - полезный инструментом для создания планировщиков, таймеров и других приложений, требующих управления временем.
🫡 Секреты Java
#multithreading #schedule7 991
🧠 Учитесь программировать на курсе Java-разработчик с трудоустройством. Вы пройдёте путь от новичка до junior-специалиста и сможете зарабатывать до 100 000 рублей уже в начале карьеры.
Вы с нуля освоите Java, SQL, Spring и Git. Создадите поисковый движок для портфолио и разработаете backend-составляющую для книжного интернет-магазина — аналога ЛитРес.
Бонусы для участников курса:
✅ первые 3 месяца — бесплатно;
✅ новая работа уже через 8 месяцев
✅ удобная рассрочка и скидка;
✅ гарантия трудоустройства от Центра карьеры Skillbox. Если вы не выйдете на работу, мы вернём вам деньги за курс;
✅ год бесплатного английского.
Узнать подробнее о курсе и получить специальную скидку можно здесь: https://epic.st/P-_91F?erid=2VtzqvFjwVh
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
7 991
Заставить код работать недостаточно. Работоспособный код часто несовершенен. Программисты, которые заставляют свой код работать и на этом считают свою задачу выполненной, ведут себя непрофессионально. Возможно, они опасаются, что у них не хватит времени для совершенствования структуры и архитектуры кода, но я не могу с этим согласиться. Ничто не оказывает настолько всестороннего и длительного отрицательного влияния на судьбу программного проекта, как плохой код. Плохой график можно переделать, плохие требования можно переопределить. Плохую динамику рабочей группы еще можно исправить. Плохой код загнивает и разбухает, превращаясь в беспощадный груз, который тянет группу ко дну. Сколько раз я видел, как работа заходит в тупик по одной причине: в спешке вместо добротного кода создавалась какая-то безобразная мешанина, которая после этого обрекала группу на бесконечные мучения. Конечно, плохой код можно вычистить. Но это обходится очень дорого. В процессе загнивания кода модули постепенно проникают друг в друга, образуется множество скрытых и запутанных зависимостей. Поиск и разрыв старых зависимостей — длительная, тяжелая работа. С другой стороны, поддерживать чистоту в коде относительно несложно. Если утром вы устроили беспорядок в модуле, то его будет легко вычистить днем. Или еще лучше, если вы устроили беспорядок пять минут назад, то его будет очень легко вычистить прямо сейчас. Итак, постоянно следите за тем, чтобы ваш код оставался как можно более простым и чистым. Не допускайте, чтобы он начал загнивать.© Роберт Мартин "Чистый код" 🫡 Секреты Java #quotes
7 991
Java — один из самых популярных языков программирования, который используют разработчики для создания игр и приложений. Если вы давно мечтаете попробовать себя в этой сфере, скорее записывайтесь на мини-курс по Java-разработке. Подойдёт новичкам разного возраста, а ещё это полностью бесплатно!
Регистрируйтесь: https://epic.st/GNSH7?erid=2VtzqvNsPdh
🎉 И получите первый подарок — гайд по профессии Java-разработчика.
Что будем делать на мини-курсе:
🔹 Обсудим, почему Java — один из самых востребованных языков
🔹 Познакомимся с кодом Java и рассмотрим ключевые элементы приложений на этом языке
🔹 Определим навыки для трудоустройства
🔹 Сравним Java и Python
🔹 Сделаем Java-приложения по инструкции
Формат мини-курса отлично подойдёт для обучения из любой точки мира: смотрите видео в удобное время и закрепляйте навыки на практике.
Успейте записаться бесплатно!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
