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

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

1. Обзор

В этой статье мы обсудим алгоритм Минимакс и его применение в ИИ. Поскольку это алгоритм теории игр, мы реализуем простую игру, используя его.

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

2. Введение

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

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

1. Обзор

В этой статье мы собираемся изучить алгоритм поиска по дереву Монте-Карло (MCTS) и его приложения.

Мы подробно рассмотрим его этапы, реализовав игру «Крестики-нолики» на Java . Мы разработаем общее решение, которое можно будет использовать во многих других практических приложениях с минимальными изменениями.

2. Введение

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

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

1. Обзор

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

Java Profiler — это инструмент, который отслеживает конструкции и операции байт-кода Java на уровне JVM . Эти конструкции кода и операции включают создание объекта, итеративное выполнение (включая рекурсивные вызовы), выполнение методов, выполнение потоков и сборку мусора.

В этой статье мы обсудим основные профилировщики Java: JProfiler , YourKit , Java VisualVM и профайлер Netbeans .

2. JProfiler

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

1. Обзор

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

2. Веб против сервера приложений

Мы увидим, в чем разница между веб-серверами и серверами приложений и какие спецификации Java EE они поддерживают.

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

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

1. Обзор

В этом руководстве мы подробно рассмотрим ключевое слово static языка Java.

Мы узнаем, как мы можем применять ключевое слово static к переменным, методам, блокам и вложенным классам, и какое это имеет значение.

2. Анатомия статического ключевого слова

В языке программирования Java ключевое слово static означает, что конкретный член принадлежит самому типу, а не экземпляру этого типа.

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

1. Обзор

В нашем введении в FindBugs мы рассмотрели функциональность FindBugs как инструмента статического анализа и то, как его можно напрямую интегрировать в IDE, такие как Eclipse и IntelliJ Idea.

В этой статье мы рассмотрим несколько альтернативных инструментов статического анализа для Java и их интеграцию с Eclipse и IntelliJ IDEA.

2. ПМД

Начнем с ПМД.

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

1. Обзор

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

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

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

2. Общая многопроцессорная архитектура

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

1. Обзор

В большинстве случаев, когда мы реализуем алгоритмы на основе графов, нам также необходимо реализовать некоторые служебные функции.

JGraphT — это библиотека классов Java с открытым исходным кодом, которая не только предоставляет нам различные типы графиков, но и множество полезных алгоритмов для решения наиболее часто встречающихся проблем с графами.

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

2. Зависимость от Maven

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

1. Введение

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

Если вы новичок в JHipster, ознакомьтесь с нашей вводной статьей , прежде чем приступить к изучению основ этого инструмента для создания проектов.

2. Монолитный и микросервисный

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

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

1. Обзор

LinkRest — это платформа с открытым исходным кодом для создания управляемых данными веб-сервисов REST. Он построен на основе JAX-RS и Apache Cayenne ORM и использует протокол сообщений на основе HTTP/JSON.

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

В следующих разделах мы рассмотрим, как мы можем создать веб-службу REST для доступа к модели данных с помощью LinkRest .

2. Зависимости Maven