Если вы только начинаете изучать Java и уже имеете опыт программирования на С, то можете заметить разницу между этими двумя языками. К примеру, String — это объект в Java, а не массив символов с конечным NULL. Аналогично, в Java нет оператора sizeof(). Все примитивы имеют заранее определенный размер, например int — 4 байта, char — 2 байта, short — 2 байта, long и float — 8 байт и так далее.
Но если вам не хватает этого оператора, то почему бы не превратить это в вызов для себя как программиста? Если вы согласны с этим, то ваша следующая задача — написать метод на Java, который ведет себя как оператор/функция sizeOf() в C и возвращает размер в байтах для каждого числового примитивного типа, т.е. для всех примитивных типов, кроме Boolean.
Многие из вас, наверное, подумают: почему мы не включаем логическое значение? Разве ему не нужен всего 1 бит для представления истинных и ложных значений? Я не включаю Boolean в это упражнение, потому что размер Boolean строго не определен в спецификации Java и варьируется в зависимости от разных JVM.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Полезные библиотеки Java
Conductor — это платформа, созданная Netflix для организации процессов в микросервисах.
🖥 Github
📂 Документация
@javatg
Conductor — это платформа, созданная Netflix для организации процессов в микросервисах.
📂 Документация
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Приветствую всех! Если вы являетесь Java-разработчиком и задаетесь вопросом о том, что почитать в 2023 году, то вы обратились по адресу. В этой статье я собираюсь поделиться 21 книгой по Java, Spring и связанными с ними технологиями, которые стоит прочитать всем Java-разработчикам.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Ваша задача — эмулировать выравнивание текста в моноширинном шрифте. Вам будет предоставлен однострочный текст и ожидаемая ширина выравнивания. Самое длинное слово никогда не должно быть больше этой ширины.
Вот правила:
* Каждая строка должна содержать как можно больше слов.
* Используйте '\n' для разделения строк.
* Расстояние между словами не может отличаться более чем на один пробел.
* Используйте пробелы, чтобы заполнить разделение между словами.
* Строки должны заканчиваться словом, а не пробелом.
* '\n' не включается в длину строки.
* Сначала идут большие пробелы, затем меньшие ("Lorem--ipsum--dolor--sit-amet" (2, 2, 2, 1 пробел)).
* Последняя строка не должна быть выравнена по ширине, используйте только один пробел между словами.
* Последняя строка не должна содержать '\n'
* В строках с одним словом пробелы не нужны ('somelongword\n').
Текст на тест
public class TextJustificatory {
public static String justify(String text, int width) {
final String[] source = text.split(" ");
StringBuilder result = new StringBuilder();
StringBuilder string = new StringBuilder();
for (String word : source) {
if (word.length() + string.length() + 1 > width) {
result.append(
addJustified(string, width)
)
.append("\n");
string
.delete(0, string.length());
}
if (string.length() != 0) string.append(" ");
string.append(word);
}
result.append(
string
);
return result.toString();
}
private static String addJustified(StringBuilder raw, int width) {
final String[] words = raw.toString().split(" ");
if (words.length == 0) return "";
if (words.length == 1) return words[0];
final int freeSpaces = width - raw.length();
final int additionalSpacesPerWord = freeSpaces / (words.length - 1);
final int additionalSpacesForFirstWords = freeSpaces % (words.length - 1);
StringBuilder result = new StringBuilder(words[0]);
for (int i = 1; i < words.length; i++) {
result.append(" ");
if (i <= additionalSpacesForFirstWords) result.append(" ");
for (int i1 = 0; i1 < additionalSpacesPerWord; i1++) {
result.append(" ");
}
if (i != words.length - 1) result.append(words[i]);
}
result.append(words[words.length - 1]);
return result.toString();
}
}
Пишите ваши варианты решений в комментариях 👇
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Отличный бесплатный курс для Java программистов от Duke University.
Эта специализация, ориентированная на проекты, поможет вам создать расширить свое портфолио работ, чтобы продемонстрировать навыки программирования на Java. В завершающем этапе вы создадите рекомендательный механизм, аналогичный тем, которые используются в Netflix или Amazon.
▪ Курс
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 15 советов, которые ускорят работу вашего Java-приложения
Ускоряем ваш код, написанный на Java за 15 простых шагов. Советы, которые реально помогут на практике.
✔️ Читать дальше
@javatg
Ускоряем ваш код, написанный на Java за 15 простых шагов. Советы, которые реально помогут на практике.
✔️ Читать дальше
@javatg
Более 100 копий и альтернатив популярных сайтов с открытым исходным кодом, таких как Airbnb, Amazon, Instagram, Netflix, TikTok, Spotify, WhatsApp, YouTube и т. д. Настоящий кладез проектов для веб-разработчика. Список содержит исходный код, учебные пособия, демонстрационные ссылки, технический стек. Многие из проектов реализованы на Java.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
В этом руководстве мы начнем работу с Docker. Для этого создали Spring проект с одной конечной точкой REST и соберем для него образ Docker. Запустим образ Docker внутри контейнера и протестируем конечную APi внутри этого образа.
✔️ Примеры работы с Docker
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Полезные библиотеки Java
Codename One — это первая открытая мобильная кроссплатформенная среда для разработчиков Java и Kotlin, которая может компилировать байт-код Java в исполняемые файлы ОС (iOS, Android, UWP и т. д.). Это полноценная мобильная платформа с виртуальными машинами, симулятором, инструментами дизайна (визуальная тема/конструктор/CSS), интеграциями с IDE, портами для нескольких ОС и многим другим.
🖥 Github
@javatg
Codename One — это первая открытая мобильная кроссплатформенная среда для разработчиков Java и Kotlin, которая может компилировать байт-код Java в исполняемые файлы ОС (iOS, Android, UWP и т. д.). Это полноценная мобильная платформа с виртуальными машинами, симулятором, инструментами дизайна (визуальная тема/конструктор/CSS), интеграциями с IDE, портами для нескольких ОС и многим другим.
git clone https://github.com/codenameone/CodenameOne
cd CodenameOne/maven
mvn install
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Давайте взглянем на основы фреймворка Spring. Эта статья содержит в себе все основные этапы того, как вы можете создать приложение с использованием фреймворка Spring.
✔️ Читать дальше
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня, в этой статье, вы узнаете, как создать полноценную систему регистрации с проверкой электронной почты, используя язык программирования Java, фреймворк Spring Boot и MySQL в качестве базы данных. Ссылка на полный код будет доступна в конце.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с JSON состоит из процессов:
- cериализации — когда мы конвертируем наши данные в JSON.
- десериализации — когда из JSON строки получаем POJO объект.
Для удобной, быстрой и комфортной работы существует множество библиотек, таких как Gson, Jackson и т.д. В данном уроке мы рассмотрим работу с Jackson.
▪ Читать дальше
▪ Зеркало
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Представьте, что мы разрабатываем функцию размещения заказа для разных пользователей:
- Обычный пользователь должен оплатить стоимость доставки, которая составляет 10% от стоимости товаров; скидка не предоставляется
- VIP-пользователь также должен оплатить стоимость доставки в размере 10%, но скидка будет предоставлена на 3-й товар и далее.
- Внутреннему пользователю не нужно оплачивать стоимость доставки; скидка не предоставляется.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Сжатие данных – очень распространенная тема. В интернете мы можем найти множество материалов о ней. Существуют разные тесты для всех видов алгоритмов сжатия. Тесты производительности для Java существуют, но, все они немного устарели, поскольку были написаны давным-давно.
Эффективность сжатия (как производительности, так и размера) зависит от фактических данных. Поэтому для меня имело смысл повторить тесты, чтобы определить, какой алгоритм (если таковой имеется) подойдёт больше всего. Также хотелось просто побольше узнать о сжатии данных в Java.
▪Читать дальше
▪Зеркало
▪Код из статьи
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Изменение переменной, сделанное в одном потоке, не сразу видно другому потоку. Исправить это можно с помощью volatile — ключевого слова, которое ставится перед переменной.
В отличие от слова synchronized, которое применимо для метода или для блока кода, слово volatile применимо только для переменной.
volatile — это более слабый вариант синхронизации, который иногда бывает достаточным.
Рассмотрим пример, показывающий, что изменение переменной в одном потоке действительно не сразу видно другому потоку (или даже никогда не видно).
volatile – этот модификатор вынуждает потоки отключить оптимизацию доступа и использовать единственный экземпляр переменной.
Если переменная примитивного типа – этого будет достаточно для обеспечения потокобезопасности. Если же переменная является ссылкой на объект – синхронизировано будет исключительно значение этой ссылки. Все же данные, содержащиеся в объекте, синхронизированы не будут!
▪Читать дальше
▪Зеркало
▪Код из статьи
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Лямбды в Java полезны во многих направлениях. Лямбда-выражения можно использовать для более простых задач, а лямбда-утверждения — для более сложных.
Лямбды могут вызывать другие методы для текущего объекта (this) и объектов, которые находятся в области видимости, таких как текущий элемент итерации и конечная локальная переменная за пределами лямбды. Лямбду всегда можно упростить, поместив код в другой метод.
Написание хороших лямбд требует дисциплины. Например, важно называть параметры понятным образом — так, чтобы названия раскрывали их назначение. Вот простой пример лямбды для фильтрации списка строк:
@Test
public void filterStringsLambda()
{
var list = Lists.mutable.with(
"Atlanta",
"Atlantic City",
"Boston",
"Boca Raton");
var actual = list.stream()
.filter(string -> string.startsWith("At"))
.collect(Collectors.toList());
var expected = List.of("Atlanta", "Atlantic City");
Assertions.assertEquals(expected, actual);
}
▪ Читать дальше
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Топ-10 Java-фреймворков и библиотек для Fullstack веб-разработчиков на Java
Если вы хотите стать Fullstack Java-разработчиком, тем, кто способен создавать как frontend-, так и backend-приложения, используя язык программирования Java, и ищет лучшие ресурсы, такие как онлайн-курсы, тогда вы пришли по адресу.
Помимо стандартных фреймворков, таких как Swing для настольных графических приложений, JavaFX, JSP, EJB и JSF, существует гораздо больше фреймворков и библиотек с открытым исходным кодом, доступных для Java-программистов.
Эти фреймворки не только помогают и ускоряют разработку, но и заставляют использовать лучшие практики, необходимые для создания корпоративного и настольного Java-приложения.
Фреймворки, подобные Spring, которые дают столь необходимый импульс платформе Java, внедряют принцип зависимостей в ядро, что имеет решающее значение для построения слабосвязанной системы.
Аналогичным образом, Struts и Spring MVC значительно упростили веб-разработку. Java-программисты, как начинающие, так и опытные, должны знать об этих фреймворках, ведь они не только помогают им в их работе.
Благодаря ним люди получают новую работу, поскольку всё больше и больше компаний внедряют разработку на основе фреймворков.
Я видел так много резюме, которые не рассматриваются для собеседований, потому что в них нет упоминания о Spring, Struts или Maven. Хотя я не согласен с этой практикой, потому что, если вы хороши в программировании, ООП-дизайне и Java, вы можете быстро их освоить.
В этой статье я поделюсь 10 лучшими фреймворками для Java веб-разработчиков, которые включают в себя core Java framework, unit testing framework, Java web development framework и, конечно же, build framework.
▪ Читать дальше
▪ Зеркало
@javatg
Если вы хотите стать Fullstack Java-разработчиком, тем, кто способен создавать как frontend-, так и backend-приложения, используя язык программирования Java, и ищет лучшие ресурсы, такие как онлайн-курсы, тогда вы пришли по адресу.
Помимо стандартных фреймворков, таких как Swing для настольных графических приложений, JavaFX, JSP, EJB и JSF, существует гораздо больше фреймворков и библиотек с открытым исходным кодом, доступных для Java-программистов.
Эти фреймворки не только помогают и ускоряют разработку, но и заставляют использовать лучшие практики, необходимые для создания корпоративного и настольного Java-приложения.
Фреймворки, подобные Spring, которые дают столь необходимый импульс платформе Java, внедряют принцип зависимостей в ядро, что имеет решающее значение для построения слабосвязанной системы.
Аналогичным образом, Struts и Spring MVC значительно упростили веб-разработку. Java-программисты, как начинающие, так и опытные, должны знать об этих фреймворках, ведь они не только помогают им в их работе.
Благодаря ним люди получают новую работу, поскольку всё больше и больше компаний внедряют разработку на основе фреймворков.
Я видел так много резюме, которые не рассматриваются для собеседований, потому что в них нет упоминания о Spring, Struts или Maven. Хотя я не согласен с этой практикой, потому что, если вы хороши в программировании, ООП-дизайне и Java, вы можете быстро их освоить.
В этой статье я поделюсь 10 лучшими фреймворками для Java веб-разработчиков, которые включают в себя core Java framework, unit testing framework, Java web development framework и, конечно же, build framework.
▪ Читать дальше
▪ Зеркало
@javatg