Рубрика «java» - 187

В пятницу, 26 февраля (да, уже завтра!), в 20:00 в петербургском офисе компании Oracle пройдет встреча JUG.ru c разработчиками языка Kotlin Андреем Бреславом и Дмитрием Жемеровым. Андрей — вообще самый главный человек в Kotlin, возглавляет разработку языка, а Дмитрий — возглавляет разработку плагина к IntelliJ IDEA. Так что у нас будет всем котлинам котлин!

Тема встречи — недавний и долгожданный релиз языка Kotlin. Это уже никакая не бета и не RC, это полноценный Final Release. И поэтому встреча тоже называется очень просто:
[Питер] Встреча JUG.ru с разработчиками Kotlin - 1
Для тех, кто всё проспал:
Kotlin — новый язык программирования для JVM и Android, выпущенный компанией JetBrains неделю назад. Выпуску предшествовало несколько лет разработки, ребята из JetBrains довольно много рассказывают про Kotlin на конференциях.

Докладчики

Дмитрий Жемеров работает в JetBrains с 2003 года и успел поучаствовать в разработке многих проектов, включая IntelliJ IDEA, PyCharm, WebStorm и другие. Сейчас он руководит командой, которая делает Kotlin-плагин для IntelliJ IDEA, а также в соавторстве со Светланой Исаковой пишет книгу о Kotlin.

Андрей Бреслав возглавляет разработку языка Kotlin в компании JetBrains. Раньше преподавал и в университете и в старшей школе; теперь вместо этого выступает на различных конференциях, рассказывая о своём проекте и о фундаментальных принципах, лежащих в основе профессии разработчика ПО.

[Питер] Встреча JUG.ru с разработчиками Kotlin - 2

Программа встречи

Встреча будет состоять из 4 частей, и целиком будет посвящена языку Kotlin.
Читать полностью »

В пятницу, 19 февраля, мы выпустили бета-версию IntelliJ IDEA 16. Учитывая то, что с момента выхода IntelliJ IDEA 15 прошло немногим более трех месяцев, вы будете приятно удивлены тем, что мы успели сделать за это время. Мы приглашаем вас скачать свежую версию прямо сейчас и самостоятельно попробовать все улучшения, о самых главных из которых я с удовольствием расскажу далее.

image

Читать полностью »

Всем привет. Эта статья продолжение 10к на ядро с конкретными примерами оптимизаций, которые были проделаны для повышения производительности сервера. С написания первой части прошло уже 5 мес и за это время нагрузка на наш продакшн сервер выросла с 500 рек-сек до 2000 с пиками до 5000 рек-сек. Благодаря netty, мы даже не заметили это повышение (разве что место на диске уходит быстрее).

Blynk load
(Не обращайте внимание на пики, это баги при деплое)

Эта статья будет полезна всем тем кто работает с netty или только начинает. Итак, поехали.

Нативный Epoll транспорт для Linux

Одна из ключевых оптимизаций, которую стоит использовать всем — это подключение нативного Epoll транспорта вместо реализации на java. Тем более, что с netty это означает добавить лишь 1 зависимость:

<dependency>
   <groupId>io.netty</groupId>
   <artifactId>netty-transport-native-epoll</artifactId>
   <version>${netty.version}</version>
   <classifier>linux-x86_64</classifier>
</dependency>

и автозаменой по коду осуществить замену следующих классов:

  • NioEventLoopGroup → EpollEventLoopGroup
  • NioEventLoop → EpollEventLoop
  • NioServerSocketChannel → EpollServerSocketChannel
  • NioSocketChannel → EpollSocketChannel

Дело в том, что java реализация для работы с не блокирующими сокетами реализуется через класс Selector, который позволяет вам эффективно работать с множеством соединений, но его реализация на java не самая оптимальная. Сразу по трем причинам:

  • Метод selectedKeys() на каждый вызов создает новый HashSet
  • Итерация по этому множеству создает iterator
  • И ко всему прочему внутри метода selectedKeys() огромное количество блоков синхронизации

В моем конкретном случае я получил прирост производительности около 30%. Конечно же, эта оптимизация возможна только для Linux серверов.
Читать полностью »

image

На днях JetBrains после пятилетней работы выпустила первый релиз языка Kotlin. Давайте посмотрим, что же это за язык, попробуем разобраться зачем и для кого он, какие имеет функциональные особенности. Скорее всего в статью затесались и личные впечатления от языка, но я старался, чтобы они не влияли на изложение полезной информации. Если вы еще ничего или почти ничего не знаете о Kotlin, то я завидую вам, ибо по моему ощущению почитать про инструмент, который ты долго ждал, сродни распаковке новогоднего подарка. Впрочем судите сами.

Читать полностью »

На этой неделе случилось важное для нас событие — вышла первая версия языка программирования Kotlin! Так как почти вся разработка Kotlin велась в Питерском офисе компании JetBrains, многиее уже знают, что такое Kotlin и пробовали его на практике, поэтому этот пост больше для комментариев: задавайте любые вопросы и команда Kotlin ответит. Мы онлайн!

image

Читать полностью »

Пост расcчитан на начинающих, на людей незнакомых с технологией Apache Lucene. В нем нет материала о том, как устроен Apache Lucene внутри, какие алгоритмы, структуры данных и методы использовались для создания фреймворка. Пост является обучающим материалом-тизером, написанным для того, чтобы показать, как организовать простейший нечёткий поиск по тексту. В качестве материала для обучения предоставлен код на github, сам пост в качестве документации и немного данных для тестирования поисковых запросов.

Материал по работе с Apache Lucene и созданию простейшего нечёткого поиска - 1

Читать полностью »

Вчера вышел первый релиз (1.0) языка программирования Kotlin от компании JetBrains.
Как пишет компания в своем вчерашнем пресс-релизе — «это был долгий путь но мы наконец выпустили первый релиз и вместе с тем представляем новое лого(иконку) языка»

It’s been a long and exciting road but we’ve finally reached the first big 1.0, and we’re celebrating the release by also presenting you with the new logo

image

Читать полностью »

Грабли Java - 1Недавно в нашей компании среди разработчиков прошел конкурс на знание подводных камней языка Java. Победители получили почет и призы, все получили много позитива, а также поводов для раздумий и дискуссий. По горячим следам спешим поделиться с хабраобщественостью самыми интересными вопросами, прозвучавшими на викторине. Если вы новичок в Java или профессионал, но хотите освежить в памяти темные стороны языка, добро пожаловать под кат. Там вас ждут 4 каверзных вопроса с ответами, обоснованиями и выводами.
Читать полностью »

Введение

Кнопки «Undo» и «Redo», позволяющие отменить и вернуть обратно любые пользовательские действия, а также посмотреть в списке перечень всех выполненных действий, являются стандартом де-факто для таких приложений, как текстовые процессоры и среды разработки, редакторы графики и САПР, системы редактирования и монтажа звука и видео. Они настолько привычны для пользователя, что последний воспринимает их наличие как данность, всего лишь одну функциональную возможность наряду с десятками других. Но с точки зрения разработчика требование к наличию undo является одним из факторов, влияющих на всю архитектуру проекта, определяемую на самых ранних стадиях проекта разработки.

Функции undo в приложениях LibreOffice и GIMP

В открытых источниках существует довольно мало информации о том, как практически реализовывать функциональность undo/redo. Классическая книга Э. Гаммы и др. «Приёмы объектно-ориентированного программирования. Паттерны проектирования» коротко упоминает о пригодности для этой цели паттерна «команда», в интернете на эту тему много общей информации, но нам не удалось найти достаточно полного, проработанного примера реализации. В нашей статье мы попытаемся восполнить этот пробел и, основываясь на опыте автора, продемонстрировать подробный пример архитектуры приложения, поддерживающей undo/redo, который может быть взят за основу других проектов.
Читать полностью »

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

  • вручную через интерфейс Zabbix;
  • используя «Обнаружение» Zabbix;
  • используя API Zabbix.

Добавление множества новых узлов вручную – рутинная задача, на решение которой уходит уйма времени. Хорошо, если новых узлов будет 5 – 10. А если 50 – 100 и больше? В этом случае вам поможет «Обнаружение». Настроив правила обнаружения и действия для обнаруженных узлов, Zabbix сам создаст новые обнаруженные узлы, подключит необходимые шаблоны, переместит созданный узел в нужную группу. Данный способ имеет недостаток.

Обнаружение + Zabbix API под Java - 1
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js