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

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

1. Введение

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

JPA и Hibernate поддерживают разные стратегии, которые сопоставляют иерархию наследования с различными моделями таблиц. Давайте взглянем на главу моей новой книги «Советы по Hibernate — более 70 решений распространенных проблем Hibernate», в которой я объясняю стратегию SingleTable . Он сопоставляет все классы иерархии наследования с одной и той же таблицей базы данных.

Я объясняю другие стратегии сопоставления наследования в Hibernate в моей книге Hibernate Tips . Это кулинарная книга с более чем 70 готовыми к использованию рецептами по таким темам, как базовые и расширенные сопоставления, ведение журналов, поддержка Java 8, кэширование, а также статически и динамически определяемые запросы. Вы можете приобрести его на этой неделе на Amazon по специальной стартовой цене всего в 2,99 доллара.


2. Советы по Hibernate — как сопоставить иерархию наследования с одной таблицей

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

1. Обзор

В этом вводном руководстве мы узнаем о проекте пула соединений HikariCP JDBC . Это очень легкая (примерно 130 КБ) и молниеносная среда пула соединений JDBC, разработанная Бреттом Вулдриджем примерно в 2012 году.

2. Введение

Доступно несколько тестовых результатов для сравнения производительности HikariCP с другими платформами пула соединений, такими как c3p0 , dbcp2 , tomcat и vibur . Например, команда HikariCP опубликовала следующие бенчмарки (исходные результаты доступны здесь ):

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

1. Обзор

Activiti API — это система управления рабочими процессами и бизнес-процессами. Мы можем определить в нем процесс, выполнить его и манипулировать им по-разному, используя сервисы, предоставляемые API. Требуется JDK 7+.

Разработку с использованием API можно вести в любой IDE, но для использования Activiti Designer нам понадобится Eclipse.

Мы можем определить в нем процесс, используя стандарт BPMN 2.0. Есть и другой, менее популярный способ — использование Java-классов вроде StartEvent , EndEvent , UserTask , SequenceFlow и т. д.

Если мы хотим запустить процесс или получить доступ к любой из служб, нам нужно создать ProcessEngineConfiguration .

Мы можем получить ProcessEngine с помощью ProcessEngineConfiguration некоторыми способами, которые мы обсудим далее в этой статье . Через ProcessEngine мы можем выполнять операции Workflow и BPMN .

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

1. Обзор

В этом руководстве мы покажем, как использовать класс Java ArrayDeque , который является реализацией интерфейса Deque .

ArrayDeque ( также известный как «Array Double Ended Queue», произносится как «ArrayDeck») — это особый вид расширяемого массива, который позволяет нам добавлять или удалять элементы с обеих сторон.

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

2. Краткий обзор API

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

1. Обзор

В этой быстрой статье мы познакомимся с ключевыми словами continue и break в Java и сосредоточимся на том, как их использовать на практике.

Проще говоря, выполнение этих операторов вызывает ветвление текущего потока управления и завершает выполнение кода в текущей итерации.

2. Заявление о перерыве

Оператор break существует в двух формах: без метки и с меткой.

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

1. Введение

Задача Dining Philosophers — одна из классических задач, используемых для описания проблем синхронизации в многопоточной среде и иллюстрации методов их решения . Дейкстра впервые сформулировал эту проблему и представил ее относительно компьютеров, обращающихся к периферийным устройствам ленточных накопителей.

Настоящая формулировка была дана Тони Хоаром, который также известен изобретением алгоритма быстрой сортировки. В этой статье мы анализируем эту известную проблему и кодируем популярное решение.

2. Проблема

./44ac2d6fd4d063653544579fe4d86361.png

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

1. Обзор

Если вы изучали CS, вы, несомненно, прошли курс по компиляторам или что-то подобное; на этих занятиях преподается концепция конечного автомата (также известного как конечный автомат). Это способ формализации правил грамматики языков.

Подробнее о теме можно прочитать здесь и здесь .

Так как же эта забытая концепция может быть полезна нам, программистам высокого уровня, которым не нужно беспокоиться о создании нового компилятора?

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

В качестве быстрого примера мы также можем проверить ввод без внешней сторонней библиотеки.

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

1. Введение

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

Если вы хотите проверить, является ли число простым, вот краткое руководство о том, как это сделать.

2. Простые числа

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

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

1. Обзор

В этом уроке мы покажем алгоритм Hill-Climbing и его реализацию. Мы также рассмотрим его преимущества и недостатки. Прежде чем перейти непосредственно к этому, давайте кратко обсудим алгоритмы генерации и тестирования.

2. Алгоритм создания и тестирования

Это очень простая техника, которая позволяет нам алгоритмизировать поиск решений:

  1. Определить текущее состояние как начальное состояние
  2. Примените любую возможную операцию к текущему состоянию и сгенерируйте возможное решение
  3. Сравните вновь созданное решение с целевым состоянием
  4. Если цель достигнута или новые состояния не могут быть созданы, выйдите. В противном случае вернитесь к шагу 2

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

1. Обзор

JVM — одна из старейших, но мощных виртуальных машин, когда-либо созданных.

В этой статье мы кратко рассмотрим, что значит разогреть JVM и как это сделать.

2. Основы архитектуры JVM

Всякий раз, когда запускается новый процесс JVM, все необходимые классы загружаются в память экземпляром ClassLoader . Этот процесс происходит в три этапа: