ho ricevuto questa domanda in un'intervista l'altro giorno e vorrei sapere alcune risposte migliori possibili (non ho risposto molto bene haha):"Last 100 byte" Scenario Intervista
Scenario: C'è una pagina web che sta monitorando i byte inviati su una rete. Ogni volta che viene inviato un byte, la funzione recordByte() viene chiamata passando quel byte, ciò potrebbe accadere centinaia di migliaia di volte al giorno. C'è un pulsante in questa pagina che quando premuto mostra gli ultimi 100 byte passati a recordByte() sullo schermo (lo fa chiamando il metodo di stampa sotto).
Il codice che segue è quello che mi è stato dato e chiesto di compilare:
public class networkTraffic {
public void recordByte(Byte b){
}
public String print() {
}
}
Qual è il modo migliore per conservare i 100 byte? Una lista? Curioso come meglio farlo.
Il buffer circolare utilizzando un array è a senso unico. Inizializza con 0, quindi tieni traccia di testa e lunghezza. È quindi possibile utilizzare la testa e la lunghezza per aggirare il buffer per stamparlo. Uso efficiente della memoria e della CPU, oltre a soddisfare esigenze storiche. –
È anche possibile utilizzare un ByteBuffer: http://download.oracle.com/javase/6/docs/api/java/nio/ByteBuffer.html – Stephan
è necessario conservare tutti i byte o solo gli ultimi 100? – jpredham