Если вы только начинаете изучать 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
👍8❤2🔥1
🔥 Полезные библиотеки Java
Conductor — это платформа, созданная Netflix для организации процессов в микросервисах.
🖥 Github
📂 Документация
@javatg
Conductor — это платформа, созданная Netflix для организации процессов в микросервисах.
📂 Документация
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🔥2
Приветствую всех! Если вы являетесь Java-разработчиком и задаетесь вопросом о том, что почитать в 2023 году, то вы обратились по адресу. В этой статье я собираюсь поделиться 21 книгой по Java, Spring и связанными с ними технологиями, которые стоит прочитать всем Java-разработчикам.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥5❤1👎1
Ваша задача — эмулировать выравнивание текста в моноширинном шрифте. Вам будет предоставлен однострочный текст и ожидаемая ширина выравнивания. Самое длинное слово никогда не должно быть больше этой ширины.
Вот правила:
* Каждая строка должна содержать как можно больше слов.
* Используйте '\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
👍13🔥2❤1
Отличный бесплатный курс для Java программистов от Duke University.
Эта специализация, ориентированная на проекты, поможет вам создать расширить свое портфолио работ, чтобы продемонстрировать навыки программирования на Java. В завершающем этапе вы создадите рекомендательный механизм, аналогичный тем, которые используются в Netflix или Amazon.
▪ Курс
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍3❤1
🔥 15 советов, которые ускорят работу вашего Java-приложения
Ускоряем ваш код, написанный на Java за 15 простых шагов. Советы, которые реально помогут на практике.
✔️ Читать дальше
@javatg
Ускоряем ваш код, написанный на Java за 15 простых шагов. Советы, которые реально помогут на практике.
✔️ Читать дальше
@javatg
👍11🔥3❤2
Более 100 копий и альтернатив популярных сайтов с открытым исходным кодом, таких как Airbnb, Amazon, Instagram, Netflix, TikTok, Spotify, WhatsApp, YouTube и т. д. Настоящий кладез проектов для веб-разработчика. Список содержит исходный код, учебные пособия, демонстрационные ссылки, технический стек. Многие из проектов реализованы на Java.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍4❤1
В этом руководстве мы начнем работу с Docker. Для этого создали Spring проект с одной конечной точкой REST и соберем для него образ Docker. Запустим образ Docker внутри контейнера и протестируем конечную APi внутри этого образа.
✔️ Примеры работы с Docker
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤4👍2
🔥 Полезные библиотеки 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
👍6🔥5❤1
Давайте взглянем на основы фреймворка Spring. Эта статья содержит в себе все основные этапы того, как вы можете создать приложение с использованием фреймворка Spring.
✔️ Читать дальше
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🔥3
Сегодня, в этой статье, вы узнаете, как создать полноценную систему регистрации с проверкой электронной почты, используя язык программирования Java, фреймворк Spring Boot и MySQL в качестве базы данных. Ссылка на полный код будет доступна в конце.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍6❤1
Работа с JSON состоит из процессов:
- cериализации — когда мы конвертируем наши данные в JSON.
- десериализации — когда из JSON строки получаем POJO объект.
Для удобной, быстрой и комфортной работы существует множество библиотек, таких как Gson, Jackson и т.д. В данном уроке мы рассмотрим работу с Jackson.
▪ Читать дальше
▪ Зеркало
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3❤2
Представьте, что мы разрабатываем функцию размещения заказа для разных пользователей:
- Обычный пользователь должен оплатить стоимость доставки, которая составляет 10% от стоимости товаров; скидка не предоставляется
- VIP-пользователь также должен оплатить стоимость доставки в размере 10%, но скидка будет предоставлена на 3-й товар и далее.
- Внутреннему пользователю не нужно оплачивать стоимость доставки; скидка не предоставляется.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3❤1
Сжатие данных – очень распространенная тема. В интернете мы можем найти множество материалов о ней. Существуют разные тесты для всех видов алгоритмов сжатия. Тесты производительности для Java существуют, но, все они немного устарели, поскольку были написаны давным-давно.
Эффективность сжатия (как производительности, так и размера) зависит от фактических данных. Поэтому для меня имело смысл повторить тесты, чтобы определить, какой алгоритм (если таковой имеется) подойдёт больше всего. Также хотелось просто побольше узнать о сжатии данных в Java.
▪Читать дальше
▪Зеркало
▪Код из статьи
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥7❤1
Изменение переменной, сделанное в одном потоке, не сразу видно другому потоку. Исправить это можно с помощью volatile — ключевого слова, которое ставится перед переменной.
В отличие от слова synchronized, которое применимо для метода или для блока кода, слово volatile применимо только для переменной.
volatile — это более слабый вариант синхронизации, который иногда бывает достаточным.
Рассмотрим пример, показывающий, что изменение переменной в одном потоке действительно не сразу видно другому потоку (или даже никогда не видно).
volatile – этот модификатор вынуждает потоки отключить оптимизацию доступа и использовать единственный экземпляр переменной.
Если переменная примитивного типа – этого будет достаточно для обеспечения потокобезопасности. Если же переменная является ссылкой на объект – синхронизировано будет исключительно значение этой ссылки. Все же данные, содержащиеся в объекте, синхронизированы не будут!
▪Читать дальше
▪Зеркало
▪Код из статьи
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥3❤1
Лямбды в 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
👍13🔥3❤1
🚀 Топ-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
🔥10👍6❤1