Библиотека Java разработчика
10.8K subscribers
1.14K photos
564 videos
58 files
1.44K links
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.


По всем вопросам @evgenycarter

РКН clck.ru/3KoGeP
Download Telegram
Программирование JavaFX: использование SceneBuilder

В прошлой статье мы начали разговор о фреймворке JavaFX, который позволяет создавать интерфейсы, оставаясь в рамках знакомой вам среды разработки (не нужно изучать веб-технологии). В этот раз мы поговорим о средстве упрощения и ускорения разработки интерфейсов — SceneBuilder.

Несмотря на то что интерфейсы возможно создавать только в коде, и в прошлый раз мы ознакомились с целым семейством классов, которые позволяют это делать, вряд ли кто-то будет спорить с тем фактом, что графическое создание по принципу Drag&Drop является более удобным и быстрым. К тому же (со временем) я всё чаще прихожу к пониманию того, что глубокое знание того, что происходит под капотом тех или иных технологий, должно дополняться ещё и средствами ускорения разработки. Так как время — это наше всё. Итак.

👉@BookJava
👍5
​Разрешение конфликтов слияния Git в IntelliJ IDEA

https://foojay.io/today/resolving-git-merge-conflicts-in-intellij-idea/

👉@BookJava
👍1🔥1
Управление временем в Java приложениях

Сегодня я хочу поговорить об управлении временем в Java приложениях: зачем это нужно, и как это можно делать.

В реальном коде часто требуется сохранять дату и время в базу данных. Это может быть фиксация времени создания\последней модификации какого-либо объекта или указание срока действия документа, билета и т.п. Думаю, многие из вас решали эту задачу в своих проектах: сама по себе она несложная. Трудности возникают, когда мы хотим подобную систему протестировать и оценить, как она будет вести себя, скажем, через полгода или год. В будущем.

Конечно, можно накручивать системные часы на вашей машине, build-агенте, тестовом сервере, но это неудобно, а иногда физически невозможно (банальное отсутствие доступа или автоматическая синхронизация времени). А ещё это абсолютно не инженерный подход. Ниже я покажу несколько простых и изящных приёмов, которые позволят вам почувствовать себя доктором Стрэнджем…


https://habr.com/ru/post/681608/

👉@BookJava
👍3
Forwarded from Java Geek
Fields initialization

Старайтесь не инициализировать поля класса преждевременно, кроме случаев когда вы в этом очень сильно уверены. Всё-таки для этих целей у Вас есть конструктор. В случае явного указания значений для полей класса — они будут проинициализированы до вызова конструктора, что влечет дополнительные расходы в тех случаях, когда у Вас нет необходимости пользоваться проинициализированными значениями, например, когда сразу после создания обьекта Вы устанавливаете другие значения для проинициализированных полей. Ну и не забывайте, что поля класса всегда инициализируются значениями по умолчанию.

@java_geek
👍7👎5🔥1😁1
Forwarded from Java Geek
Object[] vs custom Class

Код с Object абсолютно не читабельный, когда приходится работать с возвращаемым значением в другом месте.То есть, чтобы понять что же хранит в себе возвращаемое значение — нужно вернуться в класс вызова и читать комментарии к методу, если же, конечно, они есть, а если нет, вникать в код, что не очень эффективно. Собственно, я сам этим иногда грешу, когда очень спешу. С этим можно смириться, если это очень редко, но, все же, в таких ситуациях лучше создавать новый класс. Облегчите жизнь тем, кто придет после вас.

@java_geek
👍4
Считаем уникальные IPv4 адреса

Эта задача была предложена мне на одном из курсов по Java. В статье излагаю своё решение, а также анализ его эффективности. Обработка IP адресов необходима для многих проектов, и я надеюсь, что алгоритмы, описанные в этой статье, могут быть полезны.

Задача
В текстовом файле содержится список IPv4 адресов в десятичной записи.

https://habr.com/ru/post/679008/



👉@BookJava
👍7
Hibernate Best Practices для начинающих

В данной статье я не ставлю цель подробно описать Hibernate, такого материала полно в сети. Это скорее справочник, в который можно заглянуть и увидеть возможные проблемные места и их решение, который позволит вам не допустить грубых ошибок при использовании Hibernate. Статья рассчитана на читателя уже знакомого с Hibernate и Spring.

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

👉@BookJava
👍3
Метод compareTo()

В Java метод compareTo() получает значение 0, если аргумент является строкой лексически равной данной строке; значение меньше 0, если аргумент является строкой лексически большей, чем сравниваемая строка; и значение больше 0, если аргумент является строкой лексически меньшей этой строки.

👉@BookJava
👍11
Какие значения возвращают мутаторы Map?

Давайте разберемся с этой путаницей раз и навсегда.

• Методы put (put, putIfAbsent) возвращают старое значение.
• Методы работы с множеством элементов (putAll, replaceAll, clear) не возвращают ничего.
remove и replace с указанием не только ключа, но и старого значения, возвращают boolean; без указания – это самое старое значение.
• Методы с коллбэками (computeIfPresent, computeIfAbsent, compute, merge) возвращают актуальное значение после вызова, оставшееся или новое.

👉@BookJava
👍5
Forwarded from ITmozg
Beginning Programming with Java For Dummies
Автор: Barry Burd (2021)

Если вы хотите программировать на Java, книга научит вас созданию программ, способам решения стандартных задач и многому другому. Независимо от того, работаете ли вы уже или только начинаете карьеру, эта книга может стать ресурсом, к которому вы будете обращаться снова и снова, совершенствуя свое понимание нюансов этого популярного языка программирования.

Что внутри:
✔️Описание базовых особенностей Java;
✔️Циклы и массивы;
✔️Объекты и классы;
✔️Методы и переменные;
✔️Ссылки на дополнительные источники.

Скачать книгу

@itmozg
👍2
Разработка Telegram-бота на JAVA для генерации и считывания QR-кодов

С недавнего времени QR-коды всерьез, и похоже, надолго вошли в нашу жизнь. QR-код – это простой по своей сути, но при этом чрезвычайно полезный в прикладном плане механизм графического кодирования информации. Мать-прародительница (компания DENSO) внедрила использование QR-кодов с целью оптимизации временных издержек в производственных процессах. К сожалению, на сегодняшний день с введением ограничений со стороны властей на посещение общественных заведений, понятие «QR-код» приобрело негативный окрас, заставляя многих вздрагивать при его упоминании, от чего даже становится немного грустно, ведь не для ограничений были созданы эти черно-белые квадраты.

https://habr.com/ru/post/591391/

👉@BookJava
👍5
Зачем нужно ключевое слово assert?

assert – не то же самое, что методы вроде assertTrue() из тестовых библиотек. Это зарезервированное ключевое слово, унарный оператор.

Этот оператор ничего не возвращает, а принимает проверяемое утверждение типа boolean. Если значение оказывается false, проверка утверждения считается проваленной и выбрасывается AssertionError. Это похоже на сокращенную запись пары if и throw, с фиксированным типом исключения.

В Java до версии 4 слово assert не было ключевым. Поэтому для обратной совместимости механизм проверки утверждений выключен по умолчанию – логика программы никогда не должна полагаться на assert!

Включается флагом -ea или -enableassertions команды java. Можно указывать конкретные классы и пакеты в которых включить. Есть противоположный флаг -da (-disableassertions), эти флаги можно использовать в комбинации.

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

Дополнительно у оператора assert есть синтаксис передачи параметра detailMessage в конструктор AssertionError:

assert 2*2==5 : "two times two is not five!";


👉@BookJava
👍3
7 Practical Java Enhancements from Java 11 to Java 17

https://engineering.getmidas.com/7-practical-java-enhancements-since-java-11-up-to-java-17-5f8827e909bc


Java 17: что нового по сравнению с Java 11

https://nuancesprog.ru/p/16355/

👉@BookJava
👍3
Как обеспечить работу современного кода JavaScript во всех браузерах

https://javascript.plainenglish.io/how-to-ensure-that-the-modern-javascript-code-which-we-write-run-on-all-browsers-dd3c6d2a88b9

👉@BookJava
👍1
Что такое метки и как их использовать?

Наверняка вам приходилось писать неуклюжий код выхода из циклов нескольких уровней вложенности:

boolean flag = false;
for (...) {
for (...) {
if (...) { x = true; break; }
}
if (flag == true) break;
}

В Java существует полезный синтаксис, который упрощает код в таких ситуациях – метки (label).

Метка используется как пункт назначения для операторов break и continue. Помечать можно любой блок – цикл for, while, даже простой блок и операторы switch и if. Метки делают возможным использование оператора break вне цикла, хотя пользы в этом обычно немного.

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

👉@BookJava
👍8👎8
Сколько стоит джун, мидл или сеньор?

Часто молодые специалисты не чувствуют момент, когда их уровень вырос и можно брать более сложные задачи и просить повышения зарплаты. По каким признакам это понять? Какие цифры называть переходя на новое место или какого повышения можно ждать на старом?

На эти вопросы отвечает skillmaps.ru — открытая база знаний для развития IT-специалистов. Навыки разбиты по классическим грейдам: Junior, Middle, Senior и привязаны к реальным зарплатам. По каждому навыку есть подборка ссылок-материалов, необходимых для освоения.

На skillmaps.ru буквально в несколько кликов можно узнать сколько стоят твои навыки и смело выставлять кост руководству 😉
👍3💩1
Как использовать шаблон команды в Java

Узнайте, как использовать шаблон Command для инкапсуляции запросов в виде объектов, которые вы можете выполнять по отдельности или последовательно в своих программах Java.

https://www.infoworld.com/article/3667498/how-to-use-the-command-pattern-in-java.html

👉@BookJava
👍3
Что можно делать с классом Connection?

Итак, в результате соединения JDBC драйвера создается объект Connection – сессия работы с базой данных. Это главный класс при работе с JDBC. Основная роль этого класса – исполнение SQL-выражений (Statement) и получение их результатов в виде ResultSet.

Connection предоставляет в виде класса DatabaseMetaData мета-информацию о базе данных в целом: таблицы, поддерживаемая грамматика SQL, хранимые процедуры, возможности этого соединения, и т.д..

В коннекшне задается множество настройки самого соединения. Это уровень изоляции транзакций, режим авто-коммита, ключи шардирования, и многое другое. Маппинг типов данных SQL в Java-типы задается здесь же, свойством typeMap.

Помимо выполнения выражений, Connection предоставляет средства для управления транзакциями. Его методами можно создать Savepoint, откатиться к нему, закоммитить транзакцию когда авто-коммит отключен.

#SQL

👉@BookJava
👍8