Обновить
512K+

Java *

Объектно-ориентированный язык программирования

252,45
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Бублики и Коржики Программирования

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели4.2K

Давным-давно, начиная лекцию об алгоритмах, в те времена, когда о них говорили как об отдельной сущности, рисовали в виде блок‑схем перед тем, как писать код программы для их реализации, я задавал студентам вопрос: «Куда девается дырка от бублика?» И тут же отвечал на этот дзен‑вопрос: «Никуда, потому что в мире Идей ничего не умирает. Дырка от бублика — самый яркий тому пример. Если мы представим, что тело бублика — это код программы, а дырка — это тот невидимый и подразумеваемый Алгоритм, который этот код реализует.»

Читать далее

Комбинированная авторизация в Spring Security: Социальные сети и логин через username/password

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели11K

Привет! Меня зовут Данекер, я Fullstack-разработчик (Java, Angular). В этой статье я хочу поделиться с вами, как реализовать комбинированную авторизацию в Spring Security, используя примеры авторизации через социальные сети, такие как GitHub, а также традиционный логин через username/password. Мы рассмотрим процесс настройки и интеграции обоих методов, чтобы ваши пользователи могли выбирать наиболее удобный для них способ входа в систему. Надеюсь, это руководство будет полезным и поможет вам упростить процесс аутентификации в вашем приложении. Если у вас возникнут вопросы, буду рад ответить на них в комментариях. Также приветствую обратную связь от более опытных и искушённых разработчиков.

Читать далее

Тесты на дженериках: пишем кода в 3 раза меньше. Параметризация AssertJ и сравнение Json через объекты

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.8K

Продолжаю серию публикаций про наши Java-онлайн курсы. Предыдущие посты

Контроллеры на дженериках: пишем кода в 3 раза меньше
Миграция Java Spring Boot на Kotlin
Работа с документами в Java

Сразу предупрежу: точно так же, как в контроллерах на дженериках сами контроллеры не параметризируются, здесь мы НЕ БУДЕМ параметризировать сами классы тестов. Поэтому не спешите писать комментарии, не прочитав статьи, что это «Bad practice». По поводу усложнения кода заранее отвечу так же, как и в комментариях к статье про контроллеры — код тестов и их написание становятся проще, за счет усложнения инструментов (собственно на этом и строится разработка фреймворков и ООП). Можно считать приведенные здесь подходы слоем абстракции, праметризирующий подход популярной библиотеки AssertJ к сравнению объектов и расширяющий его на сравнение json объектов.

Кому интересно:

Добро пожаловать

Рецепты «приготовления» Hibernate, или решаем 5 проблем работы с фреймворком

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели19K

Hibernate — очень мощный и функциональный ORM (Object-Relational Mapping) фреймворк. Он связывает базы данных с помощью объектно-ориентированных языков программирования. Однако многие, начиная с ним работать, натыкаются на проблемы производительности или отсутствия нужной функциональности. Многие из этих проблем появляются просто из-за того, что разработчики не умеют его «готовить». 

В статье делимся рецептами работы с Hibernate и Spring Data JPA: они помогут решить многие проблемы, возникающими при использовании фреймворка.  

Читать далее

Освоение Enum в Java: Руководство для разработчиков

Время на прочтение9 мин
Охват и читатели32K

Java предоставляет разработчикам специальный тип данных под названием Enum (перечисление), который позволяет создавать переменные, значения которых ограничены строго определенным списком. Этот список значений фиксирован и хорошо известен, что делает код более предсказуемым и понятным. Использование Enum помогает избежать ошибок, связанных с применением недопустимых значений, и способствует созданию более надежного и эффективного кода. Enum  можно рассматривать как особый вид класса Java. Enum обладает рядом уникальных особенностей, таких как:

— Возможность реализации интерфейсов; 
— Собственное пространство имен;
— Неявная реализация интерфейсов Serializable и Comparable;
— В неявном виде класс реализует интерфейс java.lang.Enum и не может быть расширен от другого класса;
— Для сравнения значений Enum можно использовать операторы == и equals().

Читать далее

Рассвет и закат мобильного программирования

Время на прочтение10 мин
Охват и читатели28K

Представьте, что вы сидите на скучнейшем уроке литературы: кто-то спит, кто-то рисует в тетради, кто-то чатится в ICQ, кто-то проходит очередной уровень Gravity Defied, а вы люто набираете на своём Sony Ericsson программу на Бейсике, которая случайным образом выводит имя одного из одноклассников и какой-нибудь слегка обидный неправдивый факт о нём. Наконец, последние строчки дописаны, вы запускаете программу и показываете её соседу по парте, потом телефон уходит на другой ряд и… к концу урока добрая половина класса уже потирает ладони, чтобы хорошенько отвесить вам подзатыльников за такие приколы. Но последствия не так важны, как эйфория от того, что путь мобильной разработки для вас только-только начинается.

Это был 2006 год. У многих из нас ещё не было ПК, зато были мобильные телефоны с небольшими экранами, ограниченный доступ в Интернет и много свободного времени, которое хотелось потратить на реализацию какой-нибудь идеи.

Читать далее

Spring AI: оптимизация разработки AI-приложений с помощью Java и AI API

Время на прочтение7 мин
Охват и читатели6.4K

Во всём мире сейчас наблюдается ажиотаж вокруг темы искусственного интеллекта и разработки приложений с его использованием. Многие стремятся внедрить искусственный интеллект в свои продукты и воспользоваться всеми его преимуществами. Поэтому сообщество Spring создало модуль 'Spring AI' для упрощения интеграции AI API в приложения Spring. Spring AI — это молодой проект, призванный упростить для разработчиков интеграцию функций искусственного интеллекта в приложения Spring. И он достигает этой цели, предлагая набор абстракций и инструментов, которые упрощают взаимодействие с такими ИИ-моделями, как OpenAI и Azure OpenAI.

Читать далее

Создаём свою стример-тян из зефира и палок

Уровень сложностиСредний
Время на прочтение127 мин
Охват и читатели71K

Наверняка вы слышали о нашумевшей в своё время ИИ стримерше NeuroSama. Однако мое внимание привлекало не само шоу и эти нашумевшие самые «крутейшие» моменты стримов, а сам факт того, что нейросеть реально может полностью автономно и полноценно вести стрим, удерживая внимание зрителей! Меня очень заинтересовала такая задумка, и я решился её повторить!

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

Может, немного опоздал с трендом, но не пропадать же добру просто так! Кому-нибудь да пригодится (хотя бы для того, чтобы посмеяться или кринжануть с человека, который год занимался никому не нужной фигнёй).

Статья получилась без преувеличения огромной из-за совмещения просто ТУЧИ разных технологий и необходимости погружения в тонкости некоторых, так что отправьте ссылку себе на комп, расположитесь поудобнее и предупредите свою попу, что она рискует не отрываться от стула на протяжении целого часа!

Будет весело, сложно и очень интересно как опытному «бойцу», так и простому обывателю!

Читать далее →

Как замерять и повышать производительность Java-кода: личный пример с JMH

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели13K

Привет, Хабр! Большинство команд разработки так или иначе вовлечены в гонку за производительностью. Если понимать этот показатель как скорость работы системы, то вся деятельность по прокачке производительности — это, по сути, анализ метрик и поиск инструментов, которые эту скорость могут повысить.

Меня зовут Александр Певненко, я работаю в СберТехе, компании, которая разрабатывает ПО. Для большинства наших продуктов производительность — критичный фактор, поэтому анализ метрик и оптимизация кода — важная часть цикла разработки. Хочу поделиться личным опытом и мнением обо всём, что касается оптимизации и повышения скорости работы кода, а также нагрузочного тестирования как части этой работы. Тут представлены моя собственная практика использования набора библиотек JMH для нагрузочного тестирования и замеров производительности Java-кода. Всем, кому интересно, добро пожаловать под кат!

Читать далее

Генерация OpenAPI из Spring Boot MVC

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели33K

В этой статье посмотрим, насколько хороша генерация в OpenAPI из Spring MVC (спойлер — довольно хороша), какие есть подводные камни и костыли, чтобы с ними справится.

Наше API будет включать:
— валидацию тела и параметров с помощью JSR-303 
— различные коды ответа с помощью ControllerAdvice и без него
— работа с Page и Pageable
— авторизация запросов

Читать далее

Криптография на службе у stateless

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели3.5K

Всем привет! Я – Кирилл, и я работаю в команде Мир Plat.Form.

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

В этой статье я хотел разобрать одно из найденных нами бутылочных горлышек, когда применение криптографии помогло серьезно сэкономить, хотя обычно происходит наоборот.

К текущему моменту мы не используем этот прием — рефакторинг бизнес-логики позволяет сэкономить еще больше, чем использование любых технических решений! Но, думаю, поделиться, как могут решаться подобного рода проблемы, было бы полезно.

Почему крипта иногда позволяет экономить

5 библиотек и фреймворков Java, крайне полезных для разработчика

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели22K

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

Читать далее

Паттерн Poison Pill в Java

Время на прочтение5 мин
Охват и читатели6.6K

Сегодня поговорим о паттерне Poison Pill и его реализацию в Java.

Poison Pill, или «ядовитая пилюля», — это шаблон, используемый для мягкой остановки потока или процесса. Суть его заключается в отправке специального, заранее определенного сообщения, которое сигнализирует о необходимости завершения работы. Это сообщение обрабатывается в рамках нормального потока сообщений и позволяет потоку корректно завершить работу, освободить ресурсы и закрыть все активные соединения.

Читать далее

Ближайшие события

Сложности перевода: баг, который говорил по-русски и ломал моё приложение

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели12K

Шпион всматривается в экраны

Несколько лет назад я работал над Lipo Manager, добавляя кое-какие долгожданные функции. Это довольно простое приложение, но вполне достаточное для управления батареями LiPos. Некоторые из вносимых мной изменений отвечали запросу сообщества. Это были визуальные доработки, оптимизация, мультиязычность, обновления зависимостей и исправление периодически возникавших исключений нулевого указателя.

Со всеми этими задачами я справился за день и, проведя несколько тестов, выпустил новую версию…
Читать дальше →

Как создать свой сборщик проектов

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели7.6K

В данной статье предлагаю рассмотреть историю создания мной сборщика Java проектов под названием Conveyor (https://github.com/maximtereshchenko/conveyor): опыт написания проекта сложности выше средней, различные проблемы, причины принятия технических решений, примеры использования шаблонов проектирования

Читать далее

Как аналитик учился java log читать. Часть вторая: простые ошибки

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели3.3K

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

Приложения на GreenData (какие и многие другие приложения) имеют фронтовую часть и бэковую часть. Соответственно ошибки у нас тоже могут возникать как на фронте, так и на бэке.

Как понять относится ошибка к «фронту» или к «бэку»?

Об этом нам скажет сама ошибка, давайте рассмотрим 2 примера ошибок.

Читать далее

Безработные айосники, мертвый PHP и бесполезные “саперы”: топ-5 мифов о будущем российского IT

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели25K

Мы в hitch занимаемся аутстаффингом – выводим опытных IT-специалистов на бигтех-проекты. Поэтому непрерывно следим за любыми изменениями на рынке, а еще с удовольствием слушаем экспертов — но не во всём с ними соглашаемся. Сегодня разберем прогнозы и обещания, которые всколыхнули рынок, но показались нам нереалистичными.

Читать далее

Unit-тестирование Flink-операторов, Job: Flink MiniCluster

Время на прочтение10 мин
Охват и читатели2K

Привет, Хабр! С вами вновь Александр Бобряков, техлид в команде МТС Аналитики. И я с очередной статьёй из цикла про фреймворк Apache Flink.

В предыдущей части я рассказал, как тестировать stateless- и stateful-операторы Flink с использованием вспомогательных TestHarness-абстракций, предоставляемых Flink.

В этой статье напишем тесты на всю джобу с использованием мини-кластера Flink и при помощи JUnit Extension. Ещё мы начнём выделять удобные вспомогательные абстракции для тестов, которые понадобятся позже.

Читать далее

Java Digest #12

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6.2K

Всем привет! ? ? ??

Мы — Java-разработчики Тинькофф: Андрей, Арсений, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом месяце в меню обновления: Intellij Idea с модным терминалом и AI-подсказками, миграции на новые версии Spring Boot за пару кликов в новой версии Java on VS Code, не забыли обновить и Micronaut, GraalVm, PMD и JMC. На горячее JEPы: Exception handling in switch, Derived Record Creation, Stream Gatherers, Vector API, String Templates. Не забыли и про бесплатный сыр — доступ к Spring Academy Pro. 

Утоляем голод по новым знаниям интересными статьями и видео, для любителей экзотики — новые инструменты сборки, если не пробовали bld. А на десерт стоит присмотреться презентациям с прошедшего Jpoint 2024. 

Читать двенадцатый выпуск

Быстрое нахождение чисел Фибоначчи

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели28K

Описание способа нахождения значения произвольного элемента последовательности Фибоначчи за логарифмическое время.

Читать далее