На собеседованиях и литкоде любят вращать бинарные деревья. Но что насчёт трансформации обычного дерева в другое? Как решить эту задачу, и какие могут быть подходы? Рассмотрим на опыте...
Грядёт новая версия C#, а это значит, что мы вновь выпускаем наш ежегодный обзор нововведений. Этот год принёс нам не так много изменений, как прошлый. Возможно, некоторым они покажутся...
В этой статье мы узнаем, что такое chains of gadget, и рассмотрим на примерах (с картинками), как неаккуратная десериализация через нативные Java механизмы может привести к удалённому выполнению...
В нашей компании ООО "ПВС" существует матрица компетенций, на основании которой сотрудники проходят различные обучения, получают навыки и получают баллы для движения по сетке грейдов. Нам...
Java не стоит на месте и продолжает активно развиваться. Скоро выйдет уже 25-я версия языка. В этом релизе изменили работу с boilerplate-кодом и конструкторами, а также отказались от...
История о том, как мы переписывали приложение под DI контейнеры, разбирали зависимости, рисовали графики, чтобы в этом не потеряться, и молились, чтобы ничего вдруг не...
Начиная с версии PVS-Studio 7.38, Java анализатор вслед за двумя братьями C# и C++ поддерживает пользовательские аннотации в формате JSON. Зачем они нужны и что с ними можно делать, рассмотрим в...
Как Java поддерживает динамические вызовы? От медленной рефлексии до оптимизированных MethodHandle и invokedynamic — изучаем эволюцию динамизма в JVM. Разбираем внутреннее устройство MethodHandle...
От появления до покорения Красной планеты. В этой статье — история языка Java: от первых шагов и битвы с Microsoft до инструментов, без которых не обходится ни один Java разработчик. И да...
C# — один из самых популярных языков программирования, используемый для разработки приложений, веб-сервисов и игр. В этой статье мы заглянем в его историю: рассмотрим ключевые изменения от версии...