• fwrite/fread в windows могут повредить ваши данные

      Сегодня столкнулся с интересным поведением ошибкой в функциях стандартной библиотеки С fwrite/fread в windows xp (msvcrt.dll версии 7.0.2600.5512). Я писал данные (структуры) с помощью fwrite, а после этого сразу читал следующие за записанными с помощью fread. В результате первая прочитанная структура в файле повреждалась.
      Читать дальше →
    • RMI (Remote Method Invocation)

        Случилось так, что поставленная задача требовала применения удалённого вызова методов. Порывшись на Хабре, ничего не нашел по данному вопросу (хотелось что-нибудь почитать в качестве первого знакомства, перед чтением документации). Изучив спецификации на java.sun.com спешу поделиться с вами своей первой статьей. :)

        «Что такое RMI?»


        Remote method Invocation — механизм, который позволяет вызывать метод удалённого объекта. Согласно ему, все операции по подготовке и передаче данных инкапсулируются в вызываемом методе клиентского объекта-заглушки (stub). Сам же вызов метода ничем не отличается от вызова метода обычного локального объекта, за небольшим исключением:
        • все параметры передаются по значению (т.е. копии объектов, а не ссылки на них, как это обычно происходит) — исправил ниже. Спасибо KonstantinSolomatov
        • локальные объекты передаются по значению (копии)
        • при передаче удалённого (Remote) объекта, если он экспортирован, передаётся stub этого объекта
        • передаваемые объекты должны быть Serializable
        • кроме всех прочих исключительных ситуаций, при вызове удалённого метода может возбуждаться исключение RemoteException (ошибки маршализации/демаршализации, передачи данных и другие возможные ошибки протокола)
        Так же нужно отметить, что при вызове метода мы работаем с удалённым интерфейсом, а не с удалённым классом.

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