Обновить
512K+

Java *

Объектно-ориентированный язык программирования

211,04
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Spring: Ускоряем запись в базу данных с помощью XML

Время на прочтение5 мин
Охват и читатели5.4K
Всем привет!

В этой статье пойдет речь о том как ускорить запись большого объема информации в реляционную базу данных для приложений, написанных с использованием Spring Boot. При записи большого количества строк за раз Hibernate вставляет их по одному, что приводит к существенному ожиданию, если строк много. Рассмотрим кейс как это обойти.
Читать дальше →

Пример развертывания Spring Boot-приложения в Kubernetes

Время на прочтение3 мин
Охват и читатели16K

Перевод статьи подготовлен специально для студентов курса «Разработчик на Spring Framework».


Давайте создадим простейшее Spring Boot-приложение, которое будет запускаться в кластере Kubernetes.



Читать дальше →

Экзамен 1z0-819 Oracle Certified Professional: Java 11 Developer — заметки о сдаче

Время на прочтение5 мин
Охват и читатели26K


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

Apache Kafka как основа для велосипедостроения. Николай Сивко (okmeter.io)

Время на прочтение22 мин
Охват и читатели11K


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


В своем докладе я расскажу о нашем опыте разработки и эксплуатации специализированной timeseries БД, в основе которой лежит Apache Kafka.

Кластеризация и классификация больших Текстовых данных с помощью машинного обучения на Java. Статья #1 — Теория

Время на прочтение19 мин
Охват и читатели21K
image

Данная статья будет состоять из 3 частей (Теория/Методы и алгоритмы для решение задач/Разработка и реализация на Java) для описания полной картины. Первая статья будет включать только теорию, чтобы подготовить умы читателей.

Цель статьи:

  • Частичная или полная автоматизация задачи кластеризации и классификации больших данных, а именно текстовых данных.
  • Применение алгоритмов машинного обучение “без учителя” (кластеризация) и “с учителем” (классификация).
  • Анализ текущих решений задач.

Задачки, которые будут рассматриваться в целом:

  1. Разработка и применение алгоритмов и методов обработки естественного языка.
  2. Разработка и применение методов кластеризации для определения кластерных групп входных документов.
  3. Применение методов классификации для определения предмета каждых кластерных групп.
  4. Разработка веб-интерфейса на основе Java Vaadin

Гипотезы, которые я вывел из задачки и при обучении теории:

  • Классификация кластерных групп определяет абстрактные и более ценные скрытые знания, игнорируя шумы, чем классификация отдельных объектов.
  • Точность кластеризации прямо пропорциональна количеству кластерных групп и обратно пропорциональна количеству объектов в одной кластерной группе.

Забегая вперед, кому интересен сам алгоритм, вот обзор.

Алгоритм программного обеспечение для машинного обучения состоит из 3 основных частей:

  1. Обработка естественного языка.
    1. токенизация;
    2. лемматизация;
    3. стоп-листинг;
    4. частота слов;

  2. Методы кластеризации.
    TF-IDF ;
    SVD;
    нахождение кластерных групп;
  3. Методы классификации – Aylien API.

Итак, начнем теорию.
Читать дальше →

Краткий обзор системы Apache NlpCraft

Время на прочтение7 мин
Охват и читатели2.7K
В данной статье я бы хотел познакомить читателей с одним из проектов Apache Software Foundation сообщества — NlpCraft. NlpCraft — библиотека с открытым исходным кодом, предназначенная для интеграции языкового интерфейса в пользовательские приложения.

Цель проекта — тотальное упрощение доступа к возможностям NLP (Natural Language Processing) разработчикам приложений. Основная идея системы — это уловить баланс между простотой вхождения в NLP проблематику и поддержкой широкого диапазона возможностей промышленной библиотеки. Задача проекта бескомпромиссна — простота без упрощения.

На момент версии 0.7.1 проект находится в стадии инкубации Apache сообщества и доступен по адресу https://nlpcraft.apache.org.
Читать дальше →

Как быстро загрузить большую таблицу в Apache Ignite через Key-Value API

Время на прочтение9 мин
Охват и читатели3.8K

Некоторое время назад на горизонте возникла и начала набирать популярность платформа Apache Ignite. Вычисления in-memory — это скорость, а значит, скорость должна быть обеспечена на всех этапах работы, особенно при загрузке данных.


Под катом находится описание способа быстрой загрузки данных из реляционной таблицы в распределенный кластер Apache Ignite. Описана предобработка SQL query result set на клиентском узле кластера и распределение данных по кластеру с помощью задания map-reduce. Описаны кеши и соответствующие реляционные таблицы, показано, как создать пользовательский объект из строки таблицы и как применить ComputeTaskAdapter для быстрого размещения созданных объектов. Весь код полностью можно увидеть в репозитории FastDataLoad.

Читать дальше →

Удав укрощает Graal VM

Время на прочтение5 мин
Охват и читатели3.9K


В мире Java за последнее время произошло много интересных событий. Одним из таких событий стал выход первой production ready версии Graal VM.


Лично у меня Graal давно вызывает нескрываемый интерес и я пристально слежу за докладами и последними новостями в этой области. Одно время попался на глаза доклад Криса Талингера. В нём Крис рассказывает как в Twitter удалось получить значительный выигрыш в производительности, применив для настройки Graal алгоритмы машинного обучения. У меня появилось стойкое желание попробовать подобное самому. В этой статье хочу поделится тем, что в итоге получилось.  

Читать дальше →

Unit-тестирование, детальное рассмотрение параметризованных тестов. Часть I

Время на прочтение8 мин
Охват и читатели13K
Доброго времени суток, коллеги.

Я решил поделиться своим видением на параметризованные юнит-тесты, как делаем это мы, и как возможно не делаете (но захотите делать) вы.

Хочется написать красивую фразу, о том что тестировать надо правильно, и тесты это важно, но до меня сказано и написано уже много материала, я лишь попробую резюмировать и осветить то, что по моему мнению людьми редко используется(понимается), на что в основном задвигается.
Читать дальше →

Электронная почта и работа с ней в Java-приложениях

Время на прочтение14 мин
Охват и читатели64K

Disclaimer
Статья написана для новичков и тех, кому хочется шаг за шагом понять как устроена работа с электронной почтой из Java-приложений. Желающие быстро понять как отправлять электронные письма из Spring-приложений могут сразу переходить к 3 части.


Эту статью я решил написать, потому что не нашел русскоязычных источников про работу c электронной почтой из Java, описывающих имеющиеся библиотеки достаточно полно. На хабре существует статья, посвященная очень узкой задаче по чтению писем (и выводу их содержимого в консоль) и статья с how-to по отправлению
письма с вложениями при помощи Spring Email. Также существует несколько статей (например) на тематических ресурсах, которые приводят порядок действий при работе
с электронной почтой. В этих источниках мне не хватало объяснения основ, на которых стоит
электронная почта и взгляда с высоты на существующие библиотеки для работы с почтой в Java.


Для таких же лапкообразных, как я, написана эта статья. Она дает общие представления о работе электронной почты, разъясняет основные сущности библиотеки Jakarta Mail и дает советы о том, как работать с электронной почтой в Spring-приложениях.

Читать дальше →

Как Spring Data Jdbc определяет, что объект новый

Время на прочтение4 мин
Охват и читатели15K
image

В этом посте мы рассмотрим, как Spring Data Jdbc при сохранении объекта понимает: новая сущность и надо выполнить insert или такая сущность в базе данных уже есть и надо выполнить update.

Пост рассчитан на начинающих программистов и не содержит каких-то супер хитрых вещей.

Уже 13 ноября в OTUS пройдет demo-урок курса «Разработчик на Spring Framework» по теме: «Метрики и актуатор». По ссылке вы сможете бесплатно зарегистрироваться на урок. А прямо сейчас хочу поделиться с вами своей авторской статьей.


Читать дальше →

Разработка тем для портала Liferay 7

Время на прочтение5 мин
Охват и читатели3.4K

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

Читать далее

Замена UI-авторизации на API для автотестов

Время на прочтение3 мин
Охват и читатели8.2K

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


Существует большое количество видов аутентификации – Basic, Digest, Form, OAuth 1 и OAuth 2. В качестве примера я предлагаю рассмотреть одну из простейших, а именно – Form. Основная задача статьи – это показать подход внедрения API авторизации для UI тестов. Тесты и имплементацию будем писать на Java. Из инструментов будем использовать Chrome DevTools.


В качестве объектов тестирования используем Kanboard та DVWA. Это open source продукты с открытой лицензией, которые достаточно легко развернуть локально. По ссылкам можно прочитать больше про данные продукты и при необходимости ознакомиться с инструкциями из развёртки.

Читать дальше →

Ближайшие события

NX Java Meetup #15: Haskell-flavored Java

Время на прочтение1 мин
Охват и читатели1.1K

29 октября с Никитой Ешкеевым из JetBrains поговорим, каким образом можно реализовать json-парсер, написанный в функциональном стиле, на основе монадических парсер-комбинаторов. 

Читать далее

Когда параллельные потоки буксуют

Время на прочтение9 мин
Охват и читатели13K
Мы давно уже живем в мире многоядерных процессоров и многозадачных приложений и знаем, что наиболее очевидным способом увеличения производительности является распараллеливание выполняемых задач на несколько потоков или процессов. Точнее настолько насколько позволяют, в первую очередь, ресурсы процессора. Однако, неискушенный или даже опытный разработчик может столкнуться с рядом подводных камней в, казалось бы, очевидной ситуации. В данной статье автор взял простейший код, замерил его производительность в одном потоке, распараллелил его, справедливо ожидая улучшения результатов, но что-то пошло не так…
Читать дальше →

Разбор вступительных задач Школы Программистов hh.ru

Время на прочтение7 мин
Охват и читатели15K
20 октября закончился набор в Школу программистов hh. Он длился два с половиной месяца. Мы благодарим всех участников, уделивших время попытке поступить к нам. Надеемся, вам понравились задания и вы получили удовольствие от их решения!

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

image
Читать дальше →

Унарные операторы в Java

Время на прочтение3 мин
Охват и читатели16K
Уже завтра в OTUS скоро стартует новая профессиональная программа по подготовке к сертификации Oracle Java Programmer (OCAJP). Предлагаем вам посмотреть запись бесплатного Demo-урока «Типы данных Java: Идентификаторы и примитивы» и продолжаем публиковать серию статей Владислава Родина — руководителя группы разработки, преподавателя в МФТИ и foxminded.



Введение


Сертификация OCA (Oracle Certified Associate Java SE8 Programmer) предлагает ряд необычных заданий, проверяющих глубокое понимание принципов работы языка программирования Java. Целый блок посвящен выражениям, циклам и операторам. Про последние мы сегодня и поговорим.
Читать дальше →

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP

Время на прочтение4 мин
Охват и читатели4K

Продолжаю публикацию решений, отправленных на дорешивание машин с площадки HackTheBox.

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

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ.

Организационная информация
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Читать дальше →

Spring Boot и Filebeat локально без регистрации и смс

Время на прочтение8 мин
Охват и читатели20K

В данном руководстве мы рассмотрим подключение и настройку системы логирования в Spring Boot проекте и отправку логов в ELK с помощью Filebeat. Руководство предназначено для разработчиков начального уровня.


Логирование и зачем оно нужно


Когда я только начинал работать программистом один мой старший коллега любил повторять: "Если у тебя нет логов, то у тебя нет ничего". Действительно, столкнувшись с первым же багом на тестовых стендах или хуже того в промышленной среде, первое что нам будет нужно это логи приложения и удобный доступ к ним. За сами логи отвечают разработчики приложения, которые должны обеспечить логирование поведения системы таким образом, чтобы в любой момент можно было понять что происходит с системой и главное что с ней не так.


Следующий вопрос — это удобство доступа к логам. Обычно при локальном тестировании мы видим лог в консоли приложения, а на тестовым стенде — в специальных лог файлах на сервере. Удобно ли и безопасно ли каждый раз подключаться к стенду, искать нужную директорию и читать файлы логов оттуда? Практика показывает что нет и это вторая проблема которую призван решить ряд продуктов, обеспечивающих удобный доступ к логам и поиск в них важной информации. Сегодня мы очень кратко поговорим о одной из групп таких продуктов, так называемом стеке ELK (Elasticsearch — Logstash — Kibana) и более подробно о FilebeatOpen source продукте, обеспечивающем удобный механизм доставки логов до ELK.

Читать дальше →

В нативный код из уютного мира Java: путешествие туда и обратно (часть 2)

Время на прочтение20 мин
Охват и читатели23K


Это вторая часть расшифровки доклада Ивана Углянского (dbg_nsk) с JPoint 2020, посвященного связи Java с нативным кодом. В прошлой части мы поговорили про традиционный способ связи — через Java Native Interface (JNI), рассмотрели специфичные ему проблемы и оценили производительность. Картина получилась удручающей, поэтому давайте разбираться, чем можно заменить JNI?

Читать дальше →