Тру-Джава
137 subscribers
31 photos
79 links
блог начинающего Java-программиста

Чат: https://t.me/trujavachat
Download Telegram
Всем привет!

Чем дольше не пишешь пост, тем сложнее начать))

Наконец-то прочитала Designing data intensive applications (кабанчика)🥳

Тут как-то писала, что решила ее было отложить. Но желание закончить книгу не отпускало, и так стала читать по 15-30 минут ее не каждый день.

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

Читается / воспринимается порой очень сложно, поэтому делала конспекты для "пост-обработки", чтобы закрепить прочитанное.

Книга очень понравилась, чем ближе к концу, тем легче ее было психологически читать, потому что она объемная и, когда читаешь по чуть-чуть, кажется как будто никогда ее не завершишь)

Ее рекомендую, но после Clean Architecture и базового представления что такое нода, ACID, проблемы изоляции транзакций, и за что отвечают лидеры и последователи на уровне брокеров сообщений и нескольких нод базы данных.

Пока думаю, какую следующую техническую книжку буду читать.

Вы бы что порекомендовали?🤗
🔥74👍3
Всем привет!

Вчера столкнулась с интересной проблемой с Feign клиентами.

Проблема заключается в следующем. Если мы захотим отправить MultipartFile и список каких-нибудь объектов через feign клиент, то под капотом подставится feign.form.multipart.SingleParameterWriter, в котором используется хард-код для заголовка content-type, со значением "text/plain".

Таким образом получается, если у нас в контроллере прописано что-то в стиле:

    @RequestMapping(
        method = RequestMethod.POST,
        value = "/v1/files/bulk",
        produces = { "application/json" },
        consumes = "multipart/form-data"
    )
    ResponseEntity<Files> saveFiles(
        @Parameter(name = "metadata", description = "Array of file attributes", required = true) @Valid @RequestPart(value = "metadata", required = true) List<@Valid Metadata> metadata,
        @Parameter(name = "files", description = "Array of Files") @RequestPart(value = "files", required = false) List<MultipartFile> files
    );


То мы получим ошибку 500 от сервера с сообщением, что он не принимает text/plain, а ожидает application/json, как и прописано в контроллере.

Такой вот баг на высоком уровне) Автор открытого issue, предложил пока в качестве решения создавать кастомный JsonFormWriter и SpringFormEncoder. Подробнее можно посмотреть по ссылке.

Попробовала сегодня, вещь рабочая, так что если кто столкнется, можно пользоваться 👍
🔥8👍1
Всем привет!)

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

Но к сожалению, этого пока не случилось 😅 Дизайн приложения (структуру базы данных) придумывала только неделю.

Сейчас вовсю пишу 2й модуль, в нем по плану у меня теория про транзакции (ACID и уровни изоляции), подключение к базе данных, настройка миграции и дальше поиск по фильтрам с использованием Criteria API.

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

Но почти со всем что-то идёт не по плану. Записывая решение к домашнему заданию, часто вылезают баги, проскальзывают слова паразиты, какие-то части приходится перезаписывать, монтировать 😰

При подключении базы данных, например, на автомате добавила зависимость spring-data-jpa последней версии и возник конфликт версий, потому что spring-boot-parent оказался зависимостью ниже. Пришлось смотреть дерево зависимостей в Maven и искать виновника конфликта🔎

Не помогает и что на работе начался завал, поэтому пока не уверена, что и к Новому году его допишу, но пока целюсь к этому времени 🐾
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥8👍5
Всем привет!

С наступающим всех Новым годом!
Желаю вам исполнения всех желаний и всего самого хорошего в новом году!

Хочу порекомендовать интересную книгу, которую начала недавно читать - Building Microservices, автор Sam Newman (русский вариант). Очень нравится, здесь про грамотное разделение монолита на микросервисы и в целом, как лучше организовать их взаимодействие.

Свой курс доделала до середины примерно, так что скоро наверняка смогу поделиться тем, что получилось.

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

Еще начала онлайн курс от Гарварда по Computer Science, чтобы разложить некоторые базовые вещи по полочкам. Знаю, что есть в переводе на ютюбе, так что можно поискать и посмотреть, если есть интерес.

Еще раз всех с Наступающим и до встречи в Новом году! 😘🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥7👍5🎄2