-
چرا نیاز است
RandomAccessFile
؟RandomAccessFile
یک کلاس در بسته Java IO API است که به شما امکان می دهد هر گونه که می خواهید پیمایش کنید، از آن بخوانید یا در یک فایل بنویسید. شما همچنین می توانید قسمت های موجود یک فایل را جایگزین کنید؛ ما در مورد به روز رسانی محتوای یک فایل یا به طور دقیق تر در مورد به روز رسانی بخشی از یک فایل صحبت می کنیم.FileInputStream
این را نمی توان با یا انجام دادFileOutputStream
، اماRandomAccessFile
این توانایی را به شما می دهد. -
اگر فایلی که از آن خوانده می شود
RandomAccessFile
وجود نداشته باشد چه اتفاقی می افتد؟اراده
FileNotFoundException
-
اگر فایلی که در آن می نویسد
RandomAccessFile
وجود نداشته باشد چه اتفاقی می افتد؟یک مورد جدید ایجاد می کند و آن را روی آن می نویسد.
-
چرا به کلاس نیاز داریم
StringReader
؟کلاس Java.io.StringReader یک جریان کاراکتر است که منبع آن یک رشته است.
نشان دهنده جریانی از کاراکترها است که منبع آنها رشته نامیده می شود
-
چرا به کلاس نیاز داریم
StringWriter
؟public class StringWriter
extends Writer
یک جریان کاراکتر که خروجی خود را در یک بافر رشته جمع آوری می کند، که سپس می تواند برای ساخت یک رشته استفاده شود.
بستن StringWriter هیچ تاثیری ندارد. متدهای این کلاس را می توان پس از بسته شدن جریان بدون ایجاد IOException فراخوانی کرد.
جریانی از کاراکترها که جریان خود را در بافری از رشتهها جمعآوری میکند، که سپس میتوان از آن برای ایجاد یک رشته استفاده کرد.
-
چرا به کلاس نیاز داریم
ByteArrayStream
؟بنابراین،
ByteArrayInputStream
وByteArrayOutputStream
.این کلاس ها اساسا مشابه
StringReader
و هستند< code="">. فقط <>StringReader
کاراکترها (char) را از یک رشته (String) می خواند، اماByteArrayInputStream
بایت ها را از یک آرایه بایتی (ByteArray) می خواند.StringWriter
کاراکترها (char) را در یک رشته نوشت، اماByteArrayOutputStream
بایت ها را در یک آرایه بایت در داخل آن می نویسد. هنگام نوشتن رویStringWriter
آن، رشته داخل آن طولانی شد و هنگام نوشتن درByteArrayOutputStream
آرایه داخلی آن، بایت نیز به صورت پویا گسترش مییابد. -
چرا به کلاس نیاز داریم
PrintStream
؟ مکان های استفاده از آن را نام ببرید؟کلاس
PrintStream
برای نمایش اطلاعات به صورت خوانا اختراع شد. تقریباً به طور کامل از روش هاprint
وprintln
. -
چرا نیاز است
DynamicProxy
؟جاوا یک کلاس خاص دارد (java.lang.reflect.Proxy) که با آن می توانید در زمان اجرا (به صورت پویا) یک شی را بدون ایجاد کلاس جداگانه برای آن بسازید.
-
RMI چگونه کار می کند؟
RMI مخفف Remote Method Invokation است. یا به عبارت دیگر، RMI مکانیزمی است که به یک شی در یک ماشین جاوا اجازه می دهد تا روش های یک شی را در ماشین جاوای دیگر فراخوانی کند، حتی اگر آنها در رایانه های مختلف، در کشورهای مختلف، در طرف های مختلف کره زمین باشند.
رویکرد سنتی برای اجرای کد بر روی ماشینهای دیگر در سراسر شبکه به دلیل اجرای خستهکننده و مستعد خطا میتواند گیجکننده باشد. بهترین راه برای فکر کردن در مورد این مشکل این است که فرض کنیم برخی از اشیاء در دستگاه دیگری قرار دارند و می توانید پیام هایی را به این اشیاء راه دور ارسال کنید و نتیجه را دریافت کنید که گویی در دستگاه محلی شما قرار دارند. این ساده سازی دقیقاً همان چیزی است که Remote Method Invocation (RMI) به شما امکان می دهد در جاوا انجام دهید.
Вот статья по созданию собственной реализации RMI: Удаленный вызов методов (RMI)
-
Объекты Howих типов можно передавать по RMI?
Объекты должны имплементировать интерфейс
Serializable
Remote method Invocation — механизм, который позволяет вызывать метод удалённого an object. Согласно ему, все операции по подготовке и передаче данных инкапсулируются в вызываемом методе клиентского an object-заглушки (stub). Сам же вызов метода ничем не отличается от вызова метода обычного локального an object, за небольшим исключением:
- локальные an objectы передаются по значению (копии);
- при передаче удалённого (
Remote
) an object, если он экспортирован, передаётся stub этого an object; - передаваемые an objectы должны быть
Serializable
; - кроме всех прочих исключительных ситуаций, при вызове удалённого метода может возбуждаться исключение
RemoteException
(ошибки маршализации/демаршализации, передачи данных и другие возможные ошибки протокола);
Так же нужно отметить, что при вызове метода мы работаем с удалённым интерфейсом, а не с удалённым классом.
DefNeo
مرحله
GO TO FULL VERSION