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

Рассмотрим, в качестве примера, следующую ситуацию. У нас имеется класс User с полями, описывающими пользователя. Имеется класс Phone, который является родительским для классов CellPhone и SatellitePhone. В классе User есть поле содержащее список телефонов пользователя. В целях уменьшения нагрузки на БД мы сделали этот список «ленивым». Он будет загружаться только по требованию.

Выглядит это все примерно так

public class User {
    ...

    @OneToMany(fetch = FetchType.LAZY)
    private List<Phone> phones = new ArrayList<Phone>();

    public List<Phone> getPhones() {
        return phones;
    }
}

public class Phone {
    ...
}

public class CellPhone extends Phone {
    ...
}

public class SatellitePhone extends Phone {
    ...
}

В такой конфигурации при запросе списка телефонов конкретного пользователя мы можем получить как список проинициализированных объектов-телефонов (например, если они уже есть в кэше), так и список proxy-объектов.
В большинстве ситуаций нам не важно с чем именно мы работаем (реальным объектом или его proxy). При запросе какого-либо поля какого-либо объекта — proxy-объект автоматически проинициализируется, и мы получим ожидаемые данные. Но если нам нужно узнать тип объекта, то все идет наперекосяк.
Читать полностью »

По работе часто сталкиваюсь с продуктами IBM: WebSphere Application Server (WAS) и другими на его основе. И как и все иногда забываю пароли, в особенности это касается тестовых систем или тех, которым не уделяешь должного внимания.

В очередной раз не вспомнив пароля, решил посмотреть, а как его хранит наш сервер приложений. Проанализировав несколько файлов конфигурации, таких как security.xml, wimconfig.xml и resources.xml обнаружил все пароли когда-либо введённые в консоли администрирования, в том числе и пароль главного админа. Хранились они во вполне безобидном на первый взгляд виде.

serverPassword="{xor}KD4sPjsyNjE="

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

image

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

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

Не забывай — количество мест на самых привлекательных курсах обычно ограничено и заканчивается стремительно! А некоторые так и просто стартуют совсем скоро — запрыгивай в уходящий поезд!
Читать полностью »

Прочитав заголовок, вы, наверное, немного удивились необычности задачи, которую я перед собой поставила. Однако, как ни странно, пейджеры до сих пор иногда могут пригодиться в жизни, даже несмотря на появившееся в последние 15 лет обилие других средств коммуникации. Один из частных случаев их применения — (около)медицинское учреждение, расположенное в железо-бетонном здании, глушащем WiFi и сигнал мобильного телефона. Обслуживающий персонал, тем не менее, должен каким-то образом получать сообщения о том, куда им надо срочно переместиться в случае чего. Для решения этой проблемы руководство учреждения в нашем случае поставило себе дорогую станцию и раздало всем сотрудникам пейджерА пейджеры, которые должны были среди прочих принимать наши сигналы. Соответственно, нашей (меня и моих коллег) задачей являлась их отправка.

Уже прошли те времена, когда для отправки текста на пейджер надо было сначала пообщаться с сонной девушкой с телефонного узла. Теперь достаточно дозвониться до станции и набрать номер абонента и сообщение в тоновом режиме. Арсенал при этом сильно ограничен: можно отправлять только цифры, символы * и #, иногда буквы ABCD. Но для передачи, скажем, номера комнаты или кода ошибки должно хватить. Это довольно сильно упрощает задачу и роднит её с другими — с дозвоном в общую переговорную комнату, например.

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

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

Представляем четвертый выпуск подкаста о технологиях, процессах, инфраструктуре и людях в IT-компаниях. Сегодня в гостях у “CTOcast” — Яков Файн, сооснователь компаний Farata Systems и SuranceBay.Читать полностью »

Как известно, в языке Java существуют вложенные (nested) классы, объявленные внутри другого класса. Их даже четыре разновидности — статические вложенные, внутренние (inner), локальные (local) и анонимные (anonymous) (в этой статье мы не затрагиваем лямбда-выражения, появившиеся в Java 8). Всех их объединяет одна интересная особенность: виртуальная машина Java не имеет понятия об особенном статусе этих классов. С её точки зрения это обычные классы, расположенные в том же пакете, что и внешний класс. Вся работа по преобразованию вложенных классов в обычные ложится на компилятор. И здесь любопытно посмотреть, как разные компиляторы с ней справляются. Мы посмотрим на поведение javac 1.8.0.20 и компилятора ecj из Eclipse JDT Core 3.10 (идёт в комплекте с Eclipse Luna).
Читать полностью »

Кроссплатформенное приложение в Android Studio на jMonkeyEngine 3 - 1 jMonkeyEngine (jME) — трёхмерный игровой движок с открытым исходным кодом. Написан на Java и использует по умолчанию LWJGL для рендеринга. Полностью поддерживаются версии OpenGL со второй по четвёртую.
Как-то раз упоминался на Хабре в далёком 2010-м году.

Помимо характеристик примечателен джавой и не очень примечателен средой разработки NetBeans, которая идёт в комплекте с SDK.

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

image

Jelastic — это универсальная облачная платформа, которая совмещает в себе архитектуры PaaS (платформа как сервис) и IaaS (инфраструктура как сервис). На Jelastic можно за несколько минут развернуть окружение Java, PHP, Ruby, Python или Node.JS и запустить в нём настроенное и готовое к высокой нагрузке приложение. При этом возможность деплоя через GIT, SVN, а также плагины для IDEA, NetBeans, Eclipse позволяют тратить ещё меньше времени на деплой и больше на разработку.

В этой статье мы расскажем об одном из последних обновлений этой платформы — 2.5, которое добавило ряд интересных возможностей.
Читать полностью »

Список частей:

Введение

В прошлый раз мы познакомились с основным понятиями теории топологических пространств, а также рассмотрели класс для представления конечных топологических пространств, написанный на языке Java. Сегодня мы двинемся дальше, изучим понятие базы топологии и получим представление о том, дла чего она нужна, а также определим понятие непрерывного отображения топологических пространств. Основной интерес последнее вызывает тем, что в топологическом пространстве отсутствует понятие расстояния между объектами, но тем не менее мы можем описать формальным языком достаточную близкость объектов в терминах… Ну, впрочем, вы это узнаете чуть позже.
Читать полностью »

Хотелось бы поделится с вами системой для самообразования, которую я разрабатываю уже в течении нескольких лет и которая уже принесла мне большую огромную пользу. Система представлена в виде веб сайта.

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

Сразу предупреждаю — система нацелена на очень высокий и качественный уровень обучения и подойдёт далеко не каждому.

P.S.: Проект полностью открытый и свободный, не имеет никакой коммерческой направленности, сделан от души и выложен на ваше рассмотрение — вдруг кому пригодится…

Система самообразования IronBrain (beta) - 1
Читать полностью »


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