Обновить
128K+

Java *

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

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

Простой Java бот-кликер на примере игры World of Warcraft 3.3.5a

Время на прочтение5 мин
Охват и читатели21K
Данный механизм тестировался исключительно на пиратском сервере, потому его работоспособность на официальных серверах не гарантирована.

Все попытки применения — исключительно на свой страх и риск.

Реализация приведена для Windows десктопов.

Итак, создадим простой бот, целью которого будет:

1) зайти в игру;
2) зайти в аккаунт;
3) зайти в игровой мир;
4) открыть почтовый ящик;
5) сформировать и отправить письмо другому игроку;
Читать дальше →

Динамический прокси Java: что это и как им пользоваться?

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

Ну что ж до Нового года и старта десятого потока «Разработчик Java» осталось совсем шуть-шуть. Так что у нас остался один открытый урок, который мы подготавливаем для публикации и сегодняшняя заметка, из которой вы узнаете о динамическом прокси Java: что это такое, когда и как его использовать в коде.

Что такое прокси?

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

Таким образом, прокси-классы удобно реализуют многие вещи:

  • логирование старта и остановки метода;
  • дополнительную проверку аргументов;
  • имитацию поведения исходного класса;
  • реализацию отложенной инициализации затратных ресурсов;

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

TDD приложений на Spring Boot: работа с базой данных

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

Вторая статья из цикла "Test-Driven Development приложений на Spring Boot" и в этот раз я буду говорить про тестирование доступа к базе данных, важного аспекта интеграционного тестирования. Я расскажу как через тесты определять интерфейс будущего сервиса для доступа к данным, как использовать встраиваемые in-memory базы для тестирования, работать с транзакциями и загружать тестовые данные в базу.

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

SpEL injection

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

Intro


В процессе работы и исследований различных сервисов мы всё чаще можем встретить Spring Framework. И логичным шагом является знакомство с его структурой и возможными уязвимостями.


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


Одним из способов получить RCE в Spring является инъекция SpEL-выражений.


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

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

Воспроизведение медиафайлов с помощью библиотеки VLCj

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

Предыстория


(можно сразу пропустить и перейти к следующему пункту)

При изучении Java, сразу после того как освоил Swing стало интересно, «А как же воспроизвести аудио, или видео?». Долго рылся на просторах Гугла, откопал там несколько библиотек которые в теории должны были дать мне именно то, что я хочу. Но как показала практика, большинство из этих библиотек читают очень малое количество форматов и не очень удобны в использовании. Еще порывшись пару дней, нашел наконец-то то, что в теории должно было помочь мне с решением задачи. Библиотека VLCj берет кодеки из VLC медиаплеера и с их помощью воспроизводит файлы. Еще день страданий с туториалом на официальном сайте и наконец-то удалось запустить воспроизведение видеофайла в JFrame.
Читать дальше →

Java Enterprise vs Android в 2019 — что выбрать новичку?

Время на прочтение3 мин
Охват и читатели20K
Решил поделиться своими мыслями на тему того, в какую отрасль разработки стоит пойти человеку, освоившему Java core и основы computer science. А дороги как известно две: Java Enterprise или Android-разработка. Под Java Enterprise программированием я понимаю разработку, вакансии которой на hh имеют заголовок «Java-разработчик». Вакансии, связанные с android-разработкой можно найти на том же сайте по запросу, соответственно, «android-разработчик».

Будем считать, что вы изучили на базовом уровне core языка Java, а также ознакомились с темами алгоритмов, SQL и другими базовыми вещами из computer science, и теперь выбираете путь куда двигаться дальше с прицелом на то, чтобы как можно скорее устроиться на должность junior-программиста. Обсудим какие есть плюсы и минусы в выборе между двумя обозначенными выше ветками разработки.
Читать дальше →

Лошадинная сила в Android или еще раз о RecyclerView.LayoutManager

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

По мнению автора, статья может быть полезна таким же как он начинающим Android-разработчикам, совершающим свои первые шаги в такой увлекательной области. История предмета этой заметки началась с идеи оснастить учебный проект так называемым “вау-эффектом”. Насколько это удалось, судить вам. Всех любопытствующих прошу под кат.
Читать дальше →

Сам себе devops или настраиваем Nginx прокси для Apache Tomcat на Ubuntu за 5 минут c https и firewall'ом

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


Я не админ, но иногда возникают задачи, которые проще (и интереснее) решать самому чем кому-то делегировать.

Изредка у нас появляется необходимость «поднять» servlet контейнер (чаще всего Apache Tomcat) и настроить для него проксирование, ssl termination (а проще говоря https) и все это прикрыть firewall'ом (оставив наружу только ssh и http/https).

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

[Видео] Почему взрываются ракеты, что скоро появится в Kotlin и как спасти код ревью

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


6 декабря мы провели очередной Java-митап. Там говорили вот о чём:


  • о разработке Moira — системы экстренного реагирования на инциденты (про ракеты — здесь);
  • о контрактах в Kotlin, задачах, проблемах и улучшениях для DSL;
  • о том, как роботом выбирать ревьюеров в большой команде разработчиков;
  • о том, как научить все компоненты генерировать графики и метрики на боевой среде;
  • о правильной обратной связи для обнаружения проблемных релизов.

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

Лучшие доклады JPoint 2018: Java/JVM и её перформанс, Kotlin, Spring, Docker

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

Мы уже выложили на YouTube видеозаписи докладов JPoint 2018 и специально для хаба Java на Хабре сделали традиционную подборку самых лучших из них по мнению посетителей конференции.


Как обычно, наверху «младшие» доклады, в конце — с самым высоким рейтингом. Конечно, это не значит, что один доклад намного хуже другого: если изменить методику расчета, места могут легко поменяться. В реальности, мы её и изменили, теперь используется «soft quorum» вариант рейтинга, учитывающий количество присутствовавших на докладе участников. Этот подход имеет свои минусы (например, на кейноут приходит больше людей, чем на обычный доклад, просто потому что у аудитории нет выбора), но в целом даёт более качественную картину произошедшего.


Под катом — и видеозаписи лучших докладов, и ссылки на их презентации, и короткие описания, и ссылка на полный плейлист.


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

HeisenBug глазами сотрудника СберТеха

Время на прочтение9 мин
Охват и читатели4.8K
В этом посте я хочу поделиться обзором 15 докладов с конференции Heisenbug, рассказать, что интересного было на стендах у компаний, а также поделиться видеоматериалом из доклада Артема Ерошенко о создании actions плагинов для IntelliJ IDEA, которые помогут быстро изменять код тестового проекта.


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

Как учиться Java-разработке? Опыт студента GeekUniversity Никиты Чернецова

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


Высшее образование я получал в МГТУ, изучал ядерные реакторы и энергетические установки. Однако несмотря на позитивное впечатление от учёбы и в целом неплохие перспективы, после вуза я решил стать разработчиком. И получилось! Вот уже три года я работаю в Java-разработчиком, ни на секунду не прерывая своё обучение профессии. Я расскажу о том, какие способы обучения оказались для меня самыми эффективными. Не факт, что они зайдут всем и каждому. Надеюсь, кто-то почерпнёт для себя что-нибудь полезное.

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

Фильтр Блума в Java с помощью Guava

Время на прочтение3 мин
Охват и читатели8.1K
Всем доброго дня.

Мы запустили новый курс — «Алгоритмы для разработчиков», предназначенных для тех подтянуть знания по разнообразным структурам и алгоритмам обработки данных, решению алгебраических задач и задач динамического программирования для различных языков. Так что сегодня мы делимся небольшой заметкой о работе фильтра Блума в Java.

Введение

В этой статье мы рассмотрим структуру фильтра Блума из библиотеки Guava. Фильтр Блума — это вероятностная структура данных с эффективным использованием памяти, которую мы можем использовать для ответа на вопрос “Содержится ли данный элемент в множестве?”.

В фильтре Блума не бывает ложноотрицательных, поэтому, если он возвращает false, можно быть уверенным на 100%, что этого элемента в множестве нет.

Однако, фильтр Блума может возвращать ложноположительные, поэтому по возвращении true высока вероятность, что элемент действительно есть в множестве, но вероятность не 100%.

Чтобы узнать подробнее о работе фильтра Блума, ознакомьтесь с этим руководством.

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

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

Fault Injection: твоя система ненадежна, если ее не пробовали сломать

Время на прочтение14 мин
Охват и читатели9K
Привет, Хабр! Меня зовут Павел Липский. Я инженер, работаю в компании Сбербанк-Технологии. Моя специализация — тестирование отказоустойчивости и производительности бэкендов крупных распределенных систем. Попросту говоря, я ломаю чужие программы. В этом посте я расскажу о fault injection — методе тестирования, который позволяет находить проблемы в системе путем создания искусственных сбоев. Начну с того, как я пришел к этому методу, потом поговорим о самом методе и о том, как мы его используем.

Ускоряем создание ConcurrentReferenceHashMap

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

Приветствую, в этой заметке я рассажу, как можно с незначительными усилиями ускорить создание org.springframework.util.ConcurrentReferenceHashMap.


Интересуетесь прокачиванием производительности? Добро пожаловать!

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

Олег Докука о реактивной разработке на jug.msk.ru

Время на прочтение2 мин
Охват и читатели5.1K
13 декабря 2018 года на встрече сообщества московских Java-разработчиков jug.msk.ru Олег Докука рассказал об особенностях реактивной разработки на языке программирования Java.


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

Десять вещей, которые можно делать с GraalVM

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


От переводчика: GraalVM — новая, интересная технология, но на Хабре по ней не так много статей, которые бы могли показать примеры возможностей Graal. Статья ниже — это не просто перечисление того, что GraalVM умеет, но ещё и небольшой мастер-класс, аналогичный тому, который Chris Seaton и Олег Шелаев проводили на Oracle CodeOne 2018. Вслед за автором, призываю — пробуйте делать примеры из статьи, это действительно интересно.


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


  1. Быстрое выполнение Java
  2. Уменьшение времени старта и потребления памяти для Java
  3. Комбинирование JavaScript, Java, Ruby и R
  4. Исполнение программ, написанных на платформо-зависимых языках
  5. Общие инструменты для всех языков программирования
  6. Дополнение JVM приложений
  7. Дополнение платформо-зависимых приложений
  8. Код Java как платформо-зависимая библиотека
  9. Поддержка нескольких языков программирования в базе данных
  10. Создание языков программирования для GraalVM
Читать дальше →

MapStruct решение задачи с ManyToMany

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


Здравствуйте, уважаемые читатели! Те, кто разрабатывает Web приложения на Java с использованием фреймворка Spring, те кто комментирует эти приложения и просто интересующиеся.

В предыдущей статье «Spring Boot решение задачи с ManyToMany»

я приводил пример выполненного тестового приложения, в котором между двумя классами имеется bidirectional отношение ManyToMany. В статье приводился пример решения проблемы зацикливания при получении rest ответа с помощью использования DTO класса. Читатели в комментариях предложили использовать для решения проблемы зацикливания библиотеку MapStruct.

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

В данной статье я приведу пример решения той же задачи в виде приложения Spring Boot с использованием библиотеки MapStruct. Исходный код доступен на Гитхабе
Читать дальше →

Компилируем Kotlin: JetBrains VS ANTLR VS JavaCC

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

Насколько быстро парсится Kotlin и какое это имеет значение? JavaCC или ANTLR? Годятся ли исходники от JetBrains?

Сравниваем, фантазируем и удивляемся.
Читать дальше →

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

Время на прочтение6 мин
Охват и читатели19K
Йода: Мастер Квай-Гон, есть что еще сказать тебе?
Квай-Гон Джин: С вашего позволения, магистр. Я обнаружил точку сосредоточия Великой Силы.
Йода: Сосредоточия, сказал ты?
Мэйс Винду: Внутри живого существа?
Квай-Гон Джин: В мальчике. Его клетки содержат высочайший уровень мидихлориан из всех, что я видел. Вероятно, он был зачат мидихлорианами.
Мэйс Винду: Ты намекаешь на пророчество об Избранном, который привнесет баланс в Силу. Ты веришь, что это тот мальчик?
Звёздные войны. Эпизод I. Скрытая угроза.

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

Темная сторона Силы скрывает все. Предвидеть невозможно наше будущее...


Защитил я свой красный диплом на тему беспилотной авиации и решил внедрить свой беспилотник, который я же сам и «надипломил». К тому времени я уже полтора года работал инженером-конструктором в отделе аэродинамики ОКБ (опытно-конструкторского бюро). Эх, знал бы я заранее, как быстро меня «приземлят» вместе со всеми моими амбициями и хотелками… В общем, осознал я суровую реальность и продолжил тихо работать в тряпочку.

Романтика работы рядового инженера обычно заключается в расчетах, отчетах, перерасчетах, в вечном переделывании, вплоть до потери связи с реальностью. У нас даже у начальника была забавная печать «Все *ня. Переделать!» И все бы ничего, но меня стал дико угнетать тот факт, что вот ты колдуешь-колдуешь годами, а результата-то нема! Нет четкого группового мозгового взаимодействия — половина работы, которую мы делаем, оказывается ненужной. Отсюда и вечные переработки, и выходы в выходные. Ну и как-то нет той «советской», общей идеи и желания руководства обогнать «клятые штаты». А ведь главный мотиватор в опытном проектировании — общая идея.
Читать дальше →