Секреты 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
👩💻 Java уже в Telegram!
Вот обширная база контента по разработке на Java,
которая ежедневно пополняется новыми постами:
Обучение Java с нуля
Обучение Spring с нуля
Обучение Hibernate с нуля
Обучение JUnit с нуля
Обучение Maven с нуля
📌 Ресурсы, гайды, шпаргалки, задачи и книги — всё собрано в одном месте: @java_ready
7 991
✅ Git: reset vs revert
▫️git reset
Команда, которая перемещает указатель ветки на другой коммит, изменяя историю. Она может удалить коммиты в локальном репозитории, а так же изменить индекс и рабочую директорию.
git reset --hard HEAD~1
Типы reset:
- --soft — сохраняет изменения в индексе. Например, если были добавлены в индекс новые файлы через git add, он там и останутся.
- --mixed (по умолчанию) — снимает изменения с индекса, но оставляет их в директории. С тем же файлом - он будет удален из индекса, но останется в директории.
- --hard — удаляет изменения как из индекса, так и из директории. Т.е. все изменения будут удалены.
Если у нас есть структура коммитов вида a - b - c - d и мы выполним: git reset HEAD~1 То получим a - b - c. А все изменения из "d" коммита будет в директории, но удалены из индекса (если они были добавлены туда в коммите "d")Хорошо подходит для локальных откатов и переписывания истории. Опасен на публичных ветках, особенно с
--hard.
▫️git revert
revert создаёт новый коммит, который отменяет изменения из предыдущего коммита, не изменяя историю.
- Сохраняет историю: безопасно отменяет изменения на общих ветках.
- Может откатывать отдельные коммиты из ветки.
Вот он хорошо подходит для удаленных репозиториев.
git revert <commit_hash>
Если у нас есть структура коммитов a - b - c - d и мы выполним: git revert <d_commit_hash> То получим a - b - c - d - e, где коммит "е" содержит отмененные изменения из "d"В итоге: -
reset удаляет коммиты и меняет историю.
- revert сохраняет историю, создавая новый коммит с отменой изменений.
Для локальных веток — reset, для общих веток — безопаснее использовать revert.
🫡 Секреты Java
#git7 991
❓Какую из аннотаций Spring нужно использовать, чтобы включить управление транзакциями (Transaction management)
Заходите размять мозги перед рабочей неделей в наш канал с сертификационными тестами по Java Core и Spring - https://t.me/+TNuCvMIS_dY1ODcy
Но это не обязательно, отдыхать тоже важно)
7 991
⚡️ IT-обучение теперь в Telegram!
В cвязи с недавнем замедлением Ютуба — лучшие обучающие каналы переехали в Telegram
Вот каналы для айтишников:
👩💻 Java: @Java
👩💻 Моб. разработка: @MobDev
📱 GitHub: @GitHub
⚙️ Backend: @Backend
🤓 Общее айти: @portalToIT
📱 Python: @Python
📱 Frontend: @Frontend
👩💻 C#: @Csharp
👩💻 С/С++: @Cpp
🖥 Базы Данных & SQL: @SQL
👩💻 Golang: @Golang
🖥 PHP: @PHP
👩💻 Разработка игр: @GameDev
👩💻 DevOps: @DevOps
🖥 Data Science: @DataScience
🤔 Хакинг & ИБ: @InfoSec
🐞 Тестирование: @QA
📱 Маркетинг: @Marketing
🖥 Дизайн: @Design
➡️ Сохраняйте себе, чтобы не потерять
7 991
Вам нравится читать контент на этом канале?
Возможно, вы задумывались о том, чтобы купить на нем интеграцию?
Следуйте 3 простым шагам, чтобы сделать это:
1) Регистрируйтесь по ссылке: https://telega.in/n/java_secrets
2) Пополняйтесь удобным способом
3) Размещайте публикацию
Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.
7 991
✅ Как убить процесс по порту в Windows?
Пишу эту заметку в том числе и для себя, надеюсь я не единственный, кто встречает эту проблему)
Иногда при разработке пытаешься повторно запустить сервер, а система сообщает, что порт уже занят - port ... already in use, хотя ты вроде остановил приложение. В таких ситуациях в Windows можно выполнить несколько команд для определения процесса, занимающего порт, и его завершения.
▫️Определим процесс использующий порт:
1. Откройте Командную строку (cmd) с правами администратора:
- Нажмите Win + R, введите
cmd, затем Ctrl + Shift + Enter (для запуска от имени администратора).
2. Введите следующую команду, чтобы вывести список всех активных подключений:
netstat -aon | findstr :<номер_порта>
Получите что-то вроде (для порта 8080):
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 12345
TCP [::]:8080 [::]:0 LISTENING 12345
Последнее число в строке (в данном примере 12345) — это PID (Process ID) процесса, который использует порт 8080.
▫️Теперь завершим процесс по его PID:
taskkill /PID <номер_PID> /F
Например, для завершения процесса с PID из примера выше команда будет такой:
taskkill /PID 12345 /F
Здесь ключ /F принудительно завершает процесс.
Использование команды netstat и taskkill в Windows позволяет завершать процессы, блокирующие порты, которые нам уже не нужны. Только не убейте ничего лишнего)
🫡 Секреты Java
#windows #port7 991
😎 Бот в деле — прибыль на пределе
Забудь про скучную работу на дядю — это уже вчерашний день!
🤖 Будь на шаг впереди — запусти свой онлайн-магазин через Telegram-бота прямо сегодня🥳 Пока другие тормозят, ты можешь захватить свою нишу и начать зарабатывать уже сейчас Не жди, пока рынок перегреется! Время действовать — сейчас 💸 TechVibe
7 991
✅ Как определить, что массив содержит определённое значение в Java?
В Java проверка наличия элемента в массиве может быть выполнена разными способами, в зависимости от типа данных массива и требований к производительности. Рассмотрим несколько подходов для разных случаев с примерами:
▫️Использование цикла
for
Самый простой и некрасивый способ — это обычный цикл for, где проверяется каждый элемент массива. Этот способ работает для массивов любого типа, включая примитивные типы.
int[] numbers = {1, 2, 3, 4, 5};
int target = 3;
boolean found = false;
for (int number : numbers) {
if (number == target) {
found = true;
break;
}
}
Этот метод вручную перебирает элементы массива и останавливается, как только находит совпадение. Это базовое решение с временной сложностью O(n), где n — длина массива.
▫️Использование Arrays.asList() и contains()
Для массивов объектов (не примитивных типов) можно использовать класс Arrays и метод asList(), который преобразует массив в список. После этого можно применить метод contains() для проверки наличия значения.
String[] fruits = {"Apple", "Banana", "Orange"};
String target = "Banana";
boolean found = Arrays.asList(fruits).contains(target);
Этот способ прост в использовании, но он подходит только для массивов объектов (String, Integer и др.). Для массивов примитивных типов его использовать нельзя.
▫️Использование Arrays.binarySearch()
Если массив отсортирован, можно использовать метод binarySearch() из класса Arrays. Этот метод быстрее перебора, так как использует бинарный поиск, который имеет временную сложность O(log n).
int[] numbers = {1, 2, 3, 4, 5};
int target = 3;
// Массив должен быть отсортирован для использования binarySearch
int index = Arrays.binarySearch(numbers, target);
//index - если элемент найден, то позиция нужного элемента, либо значение < 0
Если массив не отсортирован, результат будет некорректным.
▫️Использование стримов (Java 8 и выше)
Для массивов объектов можно использовать стримы, которые предоставляют лаконичный и читаемый способ выполнения различных операций с данными.
String[] fruits = {"Apple", "Banana", "Orange"};
String target = "Orange";
boolean found = Arrays.stream(fruits)
.anyMatch(fruit -> fruit.equals(target));
Этот метод позволяет выполнить проверку в одну строку, делая код более лаконичным и поддерживаемым.
▫️Для примитивных типов: использование стримов
Для массивов примитивных типов (например, int[], double[]) можно использовать стримы через IntStream, DoubleStream и т.д.
int[] numbers = {1, 2, 3, 4, 5};
int target = 4;
boolean found = IntStream.of(numbers).anyMatch(n -> n == target);
Стримы примитивов также обеспечивают лаконичное решение и часто используются в современных версиях Java.
Конечно, выбор метода зависит от типа массива и требований к производительности.
🫡 Секреты Java
#java #array7 991
Repost from ITFB Group
Всем привет!
27 сентября в 16:00 приглашаем на совместный митап для Java-разработчиков от ITFB Group, «МТС Банка» и «СберТеха»!
Обсудим современные подходы, инструменты и лучшие практики разработки на Java. Участие в митапе ITFB Group — отличная возможность обменяться опытом, обсудить новые технологии и прокачать свои знания в области Java-программирования.
Программа:
➖Использование Kubernetes для Spring приложений
➖GraalVM vs JVM и GraalVМ vs Go
➖Spring Boot vs Micronaut под GraalVM Native Image
➖Теряем сообщения в системе легально — управление проблемными ситуациями
➖Observability в Spring Boot 3
Спикеры:
➖Матвей Светлов — архитектор центра разработки CRM, «МТС Банк»
➖Евгений Ходосов — ведущий разработчик, ITFB Group
➖Антон Ромза — архитектор, ITFB Group
➖Владимир Маслов — главный руководитель ИТ-направления, «СберТех»
Для участия в митапе выберите формат (online или offline в офисе ITFB Group) и оставьте заявку на сайте ➡️
Реклама. ООО "ТСР ТЕХ". ИНН 9729307967. erid: LjN8KNatk
7 991
✅ Short-сircuit булевы операторы
В Java укороченные (short-circuit с англ. - "короткое замыкание") операторы - это логические операторы
&& (логическое И) и || (логическое ИЛИ). Эти операторы позволяют сократить вычисления выражений, когда результат уже можно определить на основе одной части выражения, что делает выполнение более эффективным и позволяет избежать потенциальных ошибок или лишних вычислений.
Заметьте, что для XOR (исключающее ИЛИ) операции не существует short-circuit логического оператора.
Этот пост как дополнение к посту про приоритеты булевых операций.
Как работает short-circuit в Java?
▫️Оператор AND (&&):
В выражении с оператором &&, если первая часть (левая) выражения возвращает false, то результат всего выражения будет false, и дальнейшие вычисления не требуются. Это связано с тем, что для оператора И оба операнда должны быть истинны, чтобы всё выражение вернуло true.
Пример:
boolean isValid = (5 > 10) && (checkMethod());
Здесь первое выражение (5 > 10) равно false, поэтому метод checkMethod() никогда не будет вызван.
▫️Оператор OR (||):
В выражении с оператором ||, если первая часть выражения возвращает true, результатом всего выражения будет true, и дальнейшие вычисления не требуются. Это связано с тем, что для оператора ИЛИ достаточно, чтобы один из операндов был истинным, чтобы всё выражение стало true.
Пример:
boolean isValid = (5 < 10) || (checkMethod());
В данном случае первое выражение (5 < 10) вернёт true, поэтому метод checkMethod() не будет вызван.
Пример использования:
Представим ситуацию, когда у нас есть метод, который проверяет какие-то условия или вызывает ресурсоёмкие операции:
public class Example {
public static boolean checkCondition() {
System.out.println("Метод checkCondition был вызван!");
return true;
}
public static void main(String[] args) {
// Пример с && - короткое замыкание
boolean result1 = (5 > 10) && checkCondition();
// Метод checkCondition не будет вызван, так как 5 > 10 = false
// Пример с || - короткое замыкание
boolean result2 = (5 < 10) || checkCondition();
// Метод checkCondition не будет вызван, так как 5 < 10 = true
}
}
В результате выполнения выражений ни в одном из случаев метод checkCondition() не был вызван, так как результат был ясен уже на первой проверке.
Когда short-circuit операции полезны?
▫️Оптимизация вычислений: В сложных логических выражениях можно избежать выполнения лишних операций, если результат уже известен.
▫️Избежание ошибок: Short-circuit может предотвратить выполнение нежелательных операций, например, обращение к переменным, которые могут привести к исключениям (например, обращение к null объекту).
Например:
String str = null;
if (str != null && str.length() > 5) {
System.out.println("Строка длиннее 5 символов");
}
В этом примере, если str == null, выражение завершится на первой части, и проверка str.length() > 5 не будет выполнена, что предотвращает выброс NullPointerException.
Заключение
Short-circuit в Java — это полезный механизм, который делает код более эффективным и безопасным. Он сокращает ненужные вычисления и помогает избежать ошибок, особенно в сложных логических условиях.
🫡 Секреты Java
#java #boolean7 991
❗️Страх обосраться это нормально❗️
Я уже устал.. долго учу Java, но так и не начал ходить по собесамУзнаешь себя? Наш знакомый эксперт в Java - Павел Сорокин, разобрал самые частые вопросы с которыми к нему обращаются люди на консультациях👇 1️⃣ Постоянно кажется, что я не готов. Процесс обучения длится уже больше 1.5 года, начинаю забывать основы, которые учил в начале. При обучении одна из самых больших ошибок - это распыление фокуса. Определяешь просто частые технологии и вопросы, которые задают на собесах и идешь строго по ним, не распыляясь писал об этом тут. Первые собесы - тренировочные. Можете от них вообще не ожидать никаких результатов, не надеятся - это ТРЕНИРОВКА. Страх будет всегда, его просто нужно принять и идти дальше. Страх возникает из-за неизвестности, неодобрения со стороны других. Даже если вы провалите собес, что самое плохое случится? Вас не убьют, ничего с вами не сделают, вы и также будете сидеть в своем уютном доме. Любой страх уничтожается действием. 2️⃣ Не понимаю насколько глубоко нужно изучать технологию Каждую технологию необходимо понимать ровно настолько, насколько она необходима тебе. Если работаешь с БД и нет каких-то больших нагрузок, то нет смысла углубляться устройство БД. Не нужно знать как Spring устроен под капотом для того, чтобы найти работу. Рациональный подход - просто учить минимальный достаточный набор и улучшать его по пути. 3️⃣ Конкуренция большая, на собеседования невозможно пробиться Конкуренции на самом деле не существует. Если ты обходишь своих конкурентов по резюме/софт-скиллам/хард-скиллам, то для тебя нет конкуренции, когда ты лучше всех. Единственное, что остается - обойти всех. О двух действенных способах пройти на собес рассказал в полной версии поста ‼️Рекомендуем подписаться на Пашу и начать ознакомление с его каналом с этого поста с разбором базовых вопросов на собеседованиях. Также у Паши есть отличные бесплатные видео-материалы - полный гайд по Java Core и Многопоточке и реальное успешное собеседование на Junior Java. Можете забрать их в его боте.
7 991
Да, быть разработчиком непросто. Но нет ничего невозможного, если у вас есть желание разобраться ☕
А если не уверены, что именно язык Java «ваш», то добро пожаловать на подготовительный курс «Java-разработчик» от онлайн-школы Хекслет.
Практика с первого дня обучения, 62 онлайн-урока, 4 живых вебинара, помощь наставника, собственный проект по окончании программы, – и все это даже при нулевом уровне подготовки.
Не обещаем, что будет легко, но интересно, полезно и недорого (всего 990 рублей!) – гарантируем.
На все это вам будет отведено 2 недели и 1 наставник-эксперт, который поможет справиться с трудностями.
⏰ Cтарт уже 3 октября, так что записывайтесь скорее!
7 991
❓ Где можно использовать префиксные деревья?
При реализации множеств и ассоциативных массивов.
А где можно посмотреть, как выполняется алгоритм ассоциативного массива на основе префиксного дерева?
🚀 На нашем открытом онлайн-уроке!
💯 Мы выполним визуальное тестирование загрузкой 2000 слов в массив англо-русского словаря.
Вебинар «Префиксное дерево» проведёт Евгений Волосатов, программист БД с 25-летним опытом.
👨💻🛠👨🏻💻 Будет интересно: junior-разработчикам на любых языках программирования.
📅 7 октября, 20:00 МСК
🆓 Бесплатно в рамках старта курса «Алгоритмы и структуры данных».
🔴 Записаться на открытый урок: https://otus.pw/bpfR/?erid=LjN8KVYyz
О рекламодателе
