Перейти к основному содержимому

· 7 мин. чтения

1. Обзор

В этом руководстве мы увидим, как решить распространенную ошибку Hibernate — «org.hibernate.TransientObjectException: объект ссылается на несохраненный временный экземпляр» . Мы получаем эту ошибку из сеанса Hibernate , когда пытаемся сохранить управляемый объект , и этот объект ссылается на несохраненный временный экземпляр.

2. Описание проблемы

Исключение TransientObjectException « вызывается, когда пользователь передает временный экземпляр методу сеанса, который ожидает постоянный экземпляр».

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

· 7 мин. чтения

1. Обзор

gRPC — это платформа для выполнения межпроцессных удаленных вызовов процедур (RPC). Он обладает высокой производительностью и может работать в любой среде.

В этом руководстве мы сосредоточимся на обработке ошибок gRPC с помощью Java. gRPC имеет очень низкую задержку и высокую пропускную способность, поэтому он идеально подходит для использования в сложных средах, таких как микросервисные архитектуры. В этих системах очень важно иметь хорошее представление о состоянии, производительности и сбоях различных компонентов сети. Таким образом, хорошая реализация обработки ошибок имеет решающее значение для достижения предыдущих целей.

2. Основы обработки ошибок в gRPC

Ошибки в gRPC являются сущностями первого класса, т . е. каждый вызов в gRPC является либо сообщением полезной нагрузки, либо сообщением об ошибке состояния .

· 6 мин. чтения

1. Введение

В этом руководстве мы узнаем, как работать с модулем Spring Data и базой данных ArangoDB . ArangoDB — это бесплатная мультимодельная система баз данных с открытым исходным кодом. Он поддерживает модели данных «ключ-значение», «документ» и «график» с одним ядром базы данных и унифицированным языком запросов: AQL (язык запросов ArangoDB).

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

2. Настройка ArangoDB

Чтобы установить ArangoDB, нам сначала нужно загрузить пакет со страницы загрузки официального сайта ArangoDB.

· 3 мин. чтения

1. Введение

В этом коротком руководстве мы узнаем о различиях между интерфейсами JoinPoint и ProceedingJoinPoint в AspectJ .

Мы расскажем об этом с кратким объяснением и примерами кода.

2. Присоединиться

JoinPoint — это интерфейс AspectJ , обеспечивающий отражающий доступ к состоянию, доступному в данной точке соединения , например к параметрам метода, возвращаемому значению или выброшенному исключению. Он также предоставляет всю статическую информацию о самом методе.

· 2 мин. чтения

1. Обзор

В этом коротком руководстве мы узнаем, как получить все запущенные потоки в текущей JVM , включая потоки, не запущенные нашим классом.

2. Используйте класс потока

Метод getAllStackTrace() класса Thread дает трассировку стека всех запущенных потоков. Он возвращает Map , чьи ключи являются объектами Thread , поэтому мы можем получить набор ключей и просто перебрать его элементы, чтобы получить информацию о потоках.

Давайте воспользуемся методом printf() , чтобы сделать вывод более читабельным:

· 7 мин. чтения

1. Обзор

gRPC — это платформа для выполнения межпроцессных удаленных вызовов процедур (RPC). Он следует модели клиент-сервер, обладает высокой производительностью и поддерживает наиболее важные компьютерные языки. Ознакомьтесь с нашей статьей Введение в gRPC , чтобы получить хороший обзор.

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

2. Основы потоковой передачи gRPC

gRPC использует сетевой протокол HTTP/2 для взаимодействия между службами . Одним из ключевых преимуществ HTTP/2 является то, что он поддерживает потоки. Каждый поток может мультиплексировать несколько двунаправленных сообщений, использующих одно соединение.

· 5 мин. чтения

1. Обзор

В этом кратком руководстве мы рассмотрим использование OpenPDF в Java для программного преобразования файлов HTML в форматы PDF .

2. ОпенПДФ

OpenPDF — это бесплатная библиотека Java для создания и редактирования PDF-файлов под лицензиями LGPL и MPL. Это форк программы iText. Фактически, до версии 5 код для создания PDF с помощью OpenPDF был почти идентичен API iText. Это хорошо поддерживаемое решение для создания PDF-файлов на Java.

3. Преобразование с помощью летающей тарелки

· 5 мин. чтения

1. Введение

Во время передачи сообщений в Apache Kafka клиент и сервер договариваются об использовании общего синтаксического формата. Apache Kafka предоставляет конвертеры по умолчанию (такие как String и Long ), но также поддерживает пользовательские сериализаторы для конкретных случаев использования. В этом уроке мы увидим, как их реализовать.

2. Сериализаторы в Apache Kafka

Сериализация — это процесс преобразования объектов в байты . Десериализация — это обратный процесс — преобразование потока байтов в объект. Короче говоря, он преобразует контент в удобочитаемую и интерпретируемую информацию .

Как мы уже упоминали, Apache Kafka предоставляет сериализаторы по умолчанию для нескольких основных типов и позволяет нам реализовывать собственные сериализаторы:

· 2 мин. чтения

1. Обзор

В наших предыдущих руководствах Spring Profiles and Logging in Spring Boot мы показали, как активировать различные профили и использовать Log4j2 в Spring.

В этом кратком руководстве мы узнаем , как использовать разные конфигурации Log4j2 для каждого профиля Spring .

2. Используйте разные файлы свойств

Например, предположим, что у нас есть два файла, log4j2.xml и log4j2-dev.xml , один для профиля по умолчанию, а другой для профиля «dev».

· 4 мин. чтения

Еженедельный обзор ForEach — это тщательно отобранный список лучших материалов, которые я читаю каждую неделю — несколько статей, которые стоит прочитать (в произвольном порядке).

Это будет длинное — на этой неделе будет много очень хороших вещей — так что я перейду сразу к этому.

Общие размышления

=> Что такое TDD, а что нет

Тот факт, что TDD содержит слово Test , более чем вероятно является самым большим источником путаницы для разработчиков . Это смелая попытка развеять городской миф о том, что TDD — это тестирование. Хороший.

=> Отношение к разработке программного обеспечения