-
Por que é necessário
RandomAccessFile
?RandomAccessFile
é uma classe do pacote Java IO API, que permite navegar, ler ou gravar em um arquivo como desejar. Você também pode substituir partes existentes de um arquivo; estamos falando de atualizar o conteúdo de um arquivo, ou mais precisamente de atualizar um fragmento de um arquivo. Isso não pode ser feito comFileInputStream
ouFileOutputStream
, masRandomAccessFile
lhe dará essa habilidade. -
O que acontece se o arquivo do qual ele lê
RandomAccessFile
não existir?Vai
FileNotFoundException
-
O que acontece se o arquivo onde ele escreve
RandomAccessFile
não existir?Ele criará um novo e gravará nele.
-
Por que precisamos de uma aula
StringReader
?A classe Java.io.StringReader é um fluxo de caracteres cuja origem é uma string.
Representa um fluxo de caracteres cuja origem é chamada de string
-
Por que precisamos de uma aula
StringWriter
?public class StringWriter
extends Writer
Um fluxo de caracteres que coleta sua saída em um buffer de string, que pode então ser usado para construir uma string.
Fechar um StringWriter não tem efeito. Os métodos nesta classe podem ser chamados após o fluxo ter sido fechado sem gerar uma IOException.
Um fluxo de caracteres que coleta seu fluxo em um buffer de strings, que pode então ser usado para criar uma string.
-
Por que precisamos de uma aula
ByteArrayStream
?Então
ByteArrayInputStream
eByteArrayOutputStream
.Essas classes são essencialmente semelhantes
StringReader
e< code="">. Ele lê apenas <>StringReader
caracteres (char) de uma string (String), masByteArrayInputStream
lê bytes de uma matriz de bytes (ByteArray).StringWriter
escreveu caracteres (char) em uma string, masByteArrayOutputStream
grava bytes em uma matriz de bytes dentro dela. Ao gravarStringWriter
nele, a string dentro dele aumentava e, ao gravar emByteArrayOutputStream
seu array interno, o byte também se expandia dinamicamente. -
Por que precisamos de uma aula
PrintStream
? Cite os locais onde é usado?A classe
PrintStream
foi inventada para exibir informações de maneira legível. Consiste quase inteiramente em métodosprint
eprintln
. -
Por que é necessário
DynamicProxy
?Java possui uma classe especial (java.lang.reflect.Proxy) com a qual você pode realmente construir um objeto em tempo de execução (dinamicamente) sem criar uma classe separada para ele.
-
Como funciona o RMI?
RMI significa Invocação de Método Remoto. Ou em outras palavras, RMI é um mecanismo que permite que um objeto em uma máquina Java chame métodos de um objeto em outra máquina Java, mesmo que estejam em computadores diferentes, em países diferentes, em lados diferentes do globo.
A abordagem tradicional para executar código em outras máquinas em uma rede pode ser confusa devido à sua implementação tediosa e propensa a erros. A melhor maneira de pensar sobre esse problema é assumir que alguns objetos estão localizados em outra máquina, e que você pode enviar mensagens para esses objetos remotos e receber o resultado como se eles estivessem localizados na sua máquina local. Essa simplificação é exatamente o que a Invocação de Método Remoto (RMI) permite fazer em Java.
Вот статья по созданию собственной реализации 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
Nível 36
GO TO FULL VERSION