Рубрика «java»

Всем привет! Хочу рассказать, как мы небольшой командой проектировали кэш поиска отелей для сервиса по бронированию отелей и почему за полтора года прошли путь от Infinispan к managed Redis а затем к Postgres. По стеку java-21, spring-boot-3, 1 вендор отелей, расчетная нагрузка 1000 RPS и 10M запросов в сутки.

Читать полностью »

Привет.

Я Java-разработчик и в основном работаю с backend: Spring Boot, базы данных, интеграции, авторизация, WebSocket — всё то, что обычно находится за интерфейсом.

В какой-то момент я поймал себя на мысли: я каждый день пользуюсь мессенджерами, но плохо понимаю, как они устроены внутри. Окей, JWT, WebSocket, PostgreSQL, Redis — это понятно. Но что технически означает фраза “end-to-end encryption”? Как сервер доставляет сообщения, если он не должен их читать? Где живут ключи? Что хранится в базе? Что происходит, если у пользователя два устройства?

Решил разобраться через практику. Написал мессенджер с нуля. Назвал Chaos Messenger.

Читать полностью »

С чего всё началось: проблема, которая бесила

В мире Java для генерации PDF исторически есть три лагеря:

  1. Низкоуровневые рисовалки — iText, PDFBox. Быстро, мощно, но ты буквально пишешь на бумаге пиксели координатами. Любой инвойс превращается в 200 строк contentStream.beginText() / setFont() / newLineAtOffset(...). А потом приходит дизайнер и говорит: «отступ должен быть 14, а не 12».

  2. Шаблонные движки — JasperReports, OpenPDF. Удобно для отчётов, но XML-шаблон — это отдельный язык, отдельный инструментарий, отдельная боль на ревью. Изменения логики растекаются между Java-кодом, JRXML и DTO.

  3. HTML→PDFЧитать полностью »

Новый дачный сезон с Java, управлением сервера без интернета и AI моделью - 1

Всем привет! Меня зовут Александр, это моя первая статья, хочу поделиться с вами историей создания программно-аппаратного open source решения для поддержки и управления сервисами в отсутствии интернета.

Читать полностью »

Автор этих строк (Senior Java Developer) попал под сокращение, потратил месяцы на поиск новой работы и получил, наконец, свой долгожданный оффер. Хочу поделиться полезными для коллег по IT-цеху заметками на полях. Сразу скажу, что у них есть своя специфика, ибо не все из вас разрабы, джависты и сеньоры, но уж простите, чем богат - тем и готов поделиться.

Читать полностью »

Всем привет! Недавно столкнулся с проблемой, что в настоящее время большая часть обучающих материалов по Retrieval‑Augmented Generation (RAG) сосредоточена на Python‑экосистеме (LangChain, LlamaIndex и тому подобное), а пошаговые руководства, которые показывают, как быстро собрать рабочее RAG‑приложение на чистом Java‑стеке, встречаются крайне редко. Эта статья представляет собой простое практическое руководство, где мы разберём весь процесс от настройки окружения до полного примера кода, чтобы даже начинающий Java‑разработчик мог развернуть RAG.

Читать полностью »

Привет! Меня зовут Артур Валиев, и я разработчик небольшого мобильного приложения с названием «Echo Layer».

Читать полностью »

Cказ о том, как мы с Oracle на PostgreSQL переехали - 1

Исходные условия и цель переезда

Привет! Меня зовут Даша Александрова, я Java-разработчик. Хочу поделиться опытом миграции данных из Oracle в PostgreSQL без простоя сервисов.

Причина миграции - импортозамещение.

Читать полностью »

System prompt — это просьба. Guardrails — это принуждение.


1. Введение

Когда я впервые внедрял LLM в production-сервис, схема безопасности выглядела примерно так: написать хороший system prompt, поставить галочку «мы всё предусмотрели» и жить дальше. Жизнь не дала долго наслаждаться этим спокойствием — первый же тест показал, что пользователи довольно быстро находят способы заставить модель «забыть» всё, что мы написали в системном промпте.

Проблема фундаментальная: system prompt — это инструкция, которую LLM старается выполнить, но не обязанЧитать полностью »

За последние несколько лет для вызова внешних API в каждом втором (если не первом) проекте я видел одну и ту же картину:

  • RestTemplate

  • или FeignClient

Причём Feign почти всегда шёл в связке с OpenAPI: сгенерировали клиент, получили интерфейсы и не думаем о реализации. Удобно, красиво, привычно.

Но потом в Spring появился нативный декларативный HttpClient, который работает поверх RestClient / WebClient

И у меня возник вопрос: а можно ли им заменить Feign, не потеряв удобство?

Спойлер: да, можно и будет даже удобнее.

Откуда вообще взялся HttpClient

Идея, на самом деле, очень простая.

Читать полностью »

https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js