Тэги: Spring Boot, rest, SQL, PostgreSQL, Java, Stream API, руководство.
Данная статья является продолжением Spring Boot Restful Service, где была бы раскрыта тема работы с БД в Spring Boot. Давайте рассмотрим эту тему подробнее на примере СУБД postgresql, а в качестве основы возьмём проект, который мы делали в той статье.
Напомню, что проект представляет из себя простой restful-service, который принимает GET-запрос по HTTP и возвращает профиль пользователя по его id.
Сам профиль содержит кроме id также имя, фамилию и возраст. Поэтому создадим таблицу profile в базе данных.
Для поля id можно использовать тип serial. Он представляет собой целое число, которое увеличивается на 1 автоматически при вставке новой записи в таблицу.
Тэги: maven, rest, Spring Boot, Java, руководство, json.
Простой сервис на Spring Boot, который при выполнении get-запроса будет возвращать профиль пользователя в формате json в зависимости от id, который передаётся в запросе. При возникновении исключительных ситуаций (например, профиль не найден), пользователь получит соответствующий ответ.
Сразу оговорюсь, что здесь рассмотрю только создание самого веб-сервиса. Чаще всего, он будет обращаться к базе для получения профиля пользователя. Мы же этого здесь делать не будем, а только сымитируем загрузку профиля по id. Но всё, что касается взаимодействия по http, будет работать как положено.
Spring Boot позволяет просто и без лишних телодвижений создавать веб-сервисы. При этом конфигурацию служебных бинов он берёт на себя. Вы всегда можете переопределить дефолтное поведение, объявив тот или иной бин явно.
Давайте с помощью Spring Initializr создадим новый проект, в котором в качестве сборщика укажем maven, в качестве языка – Java 17 (поскольку это версия с длительной поддержкой) и добавим одну зависимость Spring Web. Этого вполне достаточно для нашего проекта.
Тэги: Java, Collections, алгоритмы, головоломки, руководство, YouTube.
Ранее я уже приводил Алгоритм поиска простых чисел методом перебора делителей. Эта реализация хороша, если вам нужно ровно N первых простых чисел. Но если вы ищете простые числа в некотором диапазоне (скажем, не превосходящие 1 000 000), то лучше воспользоваться более быстрым алгоритмом, который называется «решето Эратосфена».
Тэги: Java, Collections, файлы, руководство, Stream API.
В предыдущей статье Как сохранить текстовый файл на Java мы научились записывать текстовый файл больших размеров. А в этот раз давайте научимся его читать построчно и каждую строку как-то обрабатывать. Например, будем искать наибольшую длину строки. Поскольку размер файла больше 100 МБ, его чтение происходит с небольшой задержкой.
Как обычно, рассмотрим несколько вариантов решения этой задачи, постепенно улучшая производительность.
Тэги: файлы, руководство, Linux.
Git – это распределённая система контроля версий, которую создал Линус Торвальдс в процессе разработки ядра Linux.
Ключевой особенностью системы является её децентрализованность. Благодаря git вы можете вносить изменения в ветку (branch), которая хранится в репозитории (хранилище) на удалённом сервере и видна другим разработчикам. С другой стороны, вы можете создать свою локальную ветку, которая будет видна только на вашей рабочей станции. Однако в любой момент вы можете сделать её общедоступной, разместив в репозитории на удалённом сервере. А можете произвести слияние (merge) вашей локальной ветки с репозиторием так, что на сервере она будет выглядеть частью «ствола» дерева изменений.
В настоящий момент git как система контроля версий является стандартом среди разработчиков, поэтому давайте рассмотрим эту систему более подробно. Начнём с установки и настройки.
Тэги: XML, maven, Java, Collections, руководство, Stream API.
Если вы пишете робота на Java для разбора контента с каких-либо сайтов (т.н. «краулер»), то вы можете встретиться с некоторыми сложностями. Язык HTML хоть и формализован, однако допускает ошибки в разметке без нарушения отображения, в отличие от более строгого XML. Самой частой ошибкой является незакрытый тэг.
Страница в браузере может выглядеть корректно, но при попытке разобрать вёрстку вы потерпите неудачу. Кроме html 5-ой версии, существует ещё несколько стандартов вёрстки.
Чтобы не изобретать велосипед, можно воспользоваться готовой библиотекой Jsoup, которая позволяет легко парсить исходный html и выбирать оттуда отдельные элементы в простом декларативном синтаксисе. Библиотека поддерживает выбор как в формате CSS (более привычный на frontend), так и в XPath.
Тэги: Spring, руководство, Java, gradle, maven, PostgreSQL, SQL, Nginx, Linux.
Если Вам интересно, как настроить сервер для хостинга JVM приложения, то предлагаю вашему вниманию следующую инструкцию. Предположим, вы только что получили доступ к чистому VPS серверу, на котором крутится Ubuntu и вы хотите на нём развернуть полноценное JVM приложение, основанное на Spring. Для полноты картины мы настроим также локальный postgres и доступ извне по http.
Прежде всего обновляем индекс менеджера пакетов apt. У вас должно быть достаточно прав для выполнения sudo, а также ваш сервер должен иметь доступ в Интернет.
Тэги: руководство, Linux, файлы.
Если вы только начинаете работать в unix-подобной системе, такой как Linux или MacOS, то для вас будет полезна следующая таблица, в которой я постарался собрать часто используемые консольные команды.
Сразу добавляйте эту страницу в «Избранное»! Если у вас есть идеи, как расширить этот список – пишите в комментах.
Команда | Описание |
pwd | вывести полный путь до текущей директории |
ls | список файлов в текущей директории |
ls -la | список файлов в текущей директории, в том числе скрытых |
cd или cd ~ | перейти в домашний каталог |
cd путь | перейти в указанный каталог |
history | история выполненных ранее команд с порядковыми номерами |
!номер_команды | повторить команду с указанным номером |
clear | очистить консоль |
exit | закрыть консоль (при работе в оконном режиме) или разлогиниться (если вы заходили под другим пользователем) |
Тэги: PostgreSQL, руководство, SQL, файлы.
Для создания полного бэкапа базы на postgres воспользуемся утилитой pg_dump. Бэкап представляет собой текстовый файл с sql-синтаксисом. При этом данные вставляются в более компактном виде.
Перейдём в целевой каталог, в котором планируется сохранить файл бэкапа. Затем выполняем команду:
Разумеется, подключиться можно как к локальной базе, так и к базе, расположенной на сервере. После того, как файл создался, можем приступить к созданию копии.
Для начала создайте базу (её имя может быть любым), а также пользователя, имя которого должно совпадать с именем пользователя, который работает с исходной базой. Скорее всего, это имя, которое вы использовали для параметра -U в команде, указанной выше. Но точнее лучше посмотреть в полученном файле бэкапа. В скрипте создания таблиц можно увидеть строчку вида:
Kotlin, Java, Java 11, Java 8, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.