Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
java, la transizione tra lo stato di blocked allo Dal completamento di un’operazione di I/O o dal
stato ready da quali eventi può essere causata? rilascio del lock intrinseco dell’oggetto da parte di
1. Dal completamento di un’operazione di I/O o un altro thread che aveva causato il passaggio di A
dal rilascio del lock intrinseco dell’oggetto da da running a blocked
parte di un altro thread che aveva causato il
passaggio di A da running a blocked
2. Dal completamento di un’operazione di I/O
3. Dalla chiamata da parte di un altro thread
del metodo notifyAll all’interno di un metodo
dell’oggetto sul quale A si è messa in attesa
4. Dal rilascio del lock intrinseco dell’oggetto da
parte di un altro thread che aveva causato il
passaggio di A da running a blocked
Il controllo dell’accesso di più thread Java a oltre alla specifica del qualificatore synchronized
diverse operazioni (tanto in lettura quanto in nei metodi per i quali si vuole forzare la mutua
scrittura) a metodi di risorse condivise in esclusione richiede un attenta definizione di
generale... condizioni per il blocco (messa in attesa) e
risveglio (notifica) dei thread;
1. richiede la specifica del qualificatore
synchronyzed per i metodi per i quali si
vuole forzare la mutua esclusione ma anche
la notifica del metodo notify da parte di chi
termina l’esecuzione del metodo in mutua
esclusione per svegliare chi è stato bloccato;
2. non è possibile con l’approccio a monitor
adottato da java ma richiede l’uso di
semafori;
3. richiede semplicemente synchronized per i
metodi per i quali si vuole forzare la mutua
esclusione;
4. oltre alla specifica del qualificatore
synchronized nei metodi per i quali si vuole
forzare la mutua esclusione richiede un
attenta definizione di condizioni per il blocco
(messa in attesa) e risveglio (notifica) dei
thread;
Un'istruzione in Java:
1. di norma non si deve considerare atomica
ma composta da operazioni base
interrompibili dallo scheduler;
di norma non si deve considerare atomica ma
2. può essere resa atomica mediante composta da operazioni base interrompibili dallo
synchronized; scheduler;
3. in alcuni casi, per esempio gli incrementi e
decrementi di variabile, è atomica;
4. in alcuni casi pur non essendo atomica è
composta da un numero talmente esiguo di
istruzioni da poter essere considerata tale;
Se scriviamo un algoritmo che occupa molto la Causiamo un lungo ritardo nella gestione degli
CPU in un programma node.js eventi che possono verificarsi dopo l’inizio della
1. È meglio associarlo a un thread di controllo gestione dell’algoritmo
creato con una libreria base del linguaggio JS
2. Lo scheduler interno allo scadere del tempo
metterà in stato di ready il task associato
all’algoritmo...
3. La piattaforma attiverà un altro thread del
pool che di norma gestisce l’IO per gestire...
4. Causiamo un lungo ritardo nella gestione
degli eventi che possono verificarsi dopo
l’inizio della gestione dell’algoritmo
2. ready
3. blocked
4. running
doSomethingwithoutResult(); //B
Come si utilizzano i thread in Java? Ci sono più modi per creare thread in Java. Il primo
è quello di creare una sottoclasse di Thread,
usando la keyword extends:
class MyThread extends Thread {
public void run() {
// ...
}
}
per creare e far partire un oggetto Thread si
eseguono le istruzioni
Thread a = new MyThread();
a.start();
Il secondo è quello di estendere la classe
Runnable nei casi in cui abbiamo bisogno che una
classe erediti da più classi:
class MyThread implements Runnable {
public void run() {
// ...
}
}
Per creare un oggetto:
Thread b = new Thread(new Run());
b.start();
Quale evento può fare uscire un thread dallo I metodi notify() e notifyAll() e poi passano allo
stato di waiting e in cosa passa poi? stato di ready.
Che cosa vuol dire starvation? Esempio: nelle code per priorità se c’è un thread a
bassa priorità che arriva al tempo t0 esso non sarà
servito se in seguito arriveranno altri thread con
più alta priorità di lui.
Scrivere il codice del metodo preleva in modo public synchronized void preleva() {
da garantire il corretto coordinamento delle while (cont == 0) {
operazioni attraverso l'uso di wait e notify.
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}}
this.cont--;
notifyAll();
}
Qual è la struttura di un elemento di base di un Un elemento base di un CSS è una regola che
CSS? specifica un selettore (una sorta di query per
1. Essendo un elemento minimo permette di identificare un tag o un insieme di tag nella
pagina) e una serie di coppie attributo-valore.
specificare che per un tag identificato da un
selettore vale un elemento stilistico (in
forma di coppia attributo-valore)
2. Ogni elemento base di un file CSS permette
di indicare uno stile (sotto forma di un
insieme coppie attributo-valore) da
associare a elementi specificate sulla base
della posizione nell’albero DOM
3. Un elemento base di un CSS è una regola
che associa a un tag (o un elenco di tag) un
insieme di elementi stilistici (nella forma di
coppie attributo-valore)
4. Un elemento base di un CSS è una regola
che specifica un selettore (una sorta di query
per identificare un tag o un insieme di tag
nella pagina) e una serie di coppie attributo-
valore
Dato l’array JavaScript definito come segue: var Per aggiungere un valore numerico 4 in coda un
myArr = {“Primo”, “Secondo”, “Terzo”}; comando adatto è myArr[myArr.length]=4
1. Per aggiungere un valore numerico 4 in coda
un comando adatto è
myArr[myArr.length]=4
2. per accedere all'ultimo elemento si deve
usare myarr[myarr.length];
3. il seguente assegnamento è valido
myarr[9]="decimo";
4. per aggiungere una stringa "zero" in testa
all'array, spostando automaticamente gli
elementi pre esistenti, il comando adatto è
myarr[0]="zero";
5. non è possibile inserire valori di tipo diverso
da stringa all'interno di questo array
Un menù di navigazione…
1. Richiede l’uso di JavaScript
2. Richiede l’uso del tag semantico nav definito
in HTML5
Tipicamente viene realizzato con una lista non
3. Richiede l’uso di un framework come jQuery,
che infatti è incluso nella maggior parte dei numerata (tag UL contenente voci indicatee con il
tal li) opportunamente associata a un certo stile
CMS sul mercato
estetico (ad esempio per fare apparire le voci non
4. Tipicamente viene realizzato con una lista come un elenco puntato) definito nel CSS
non numerata (tag UL contenente voci
indicatee con il tal li) opportunamente
associata a un certo stile estetico (ad
esempio per fare apparire le voci non come
un elenco puntato) definito nel CSS
function init() { Var link = Ad ogni click del mouse sull’elemento DOM che
document.getelementbyid(“foo”); abbia identificativo “foo”
Link.addeventlistener(“click”, function changecolor(){
Link.style.color=”burlywood”; //A ??? }); }
Init(); L’istruzione indicata dal commento con la
lettera A quando viene eseguita?
1. Ad ogni passaggio del mouse sull’elemento
DOM che abbia identificativo “foo”
2. All’atto dell’inizializzazione della pagina
3. Ad ogni click del mouse sull’elemento DOM
che abbia identificativo “foo”
4. Al primo click del mouse sull’elemento DOM
che abbia identificativo “foo”
Per poter effettuare delle query SPARQL a un È necessaria la presenza di un software che
insieme di triple RDF gestisca le triple RDF, come un DBMS gestisce una
base di dati relazionale;
1. è possibile solo effettuare query SPARQL a
DBPEDIA o altri server pubblicamente
accessibili via internet;
2. è necessario utilizzare il linguaggio JavaScript
e importare nella pagina delle librerie
proprietarie, scritte in altri linguaggi, che
gestiscano il file RDF ed elaborino la query
SPARQL;
3. è sufficiente avere a disposizione il file con le
triple RDF, Javascript è in grado di gestire
direttamente file RDF in formato JSON ed
effettuare query SPARQL;
4. è necessaria la presenza di un software che
gestisca le triple RDF, come un DBMS
gestisce una base di dati relazionale;
Il gestore di query SPARQL di DBPedia fornisce In una serie di formati, tra cui HTML per debug,
risultati: ma anche XML e JSON, a seconda dell’header o di
un parametro della richiesta HTTP
1. esclusivamente in formato HTML, per la
consultazione da parte di un utente umano;
2. sotto forma di tabella in formato HTML;
3. in una serie di formati, tra cui HTML per
debug, ma anche XML e JSON, sulla base di
quanto selezionato dall’utente
nell’interfaccia web;
4. In una serie di formati, tra cui HTML per
debug, ma anche XML e JSON, a seconda
dell’header o di un parametro della richiesta
HTTP
Qual è la differenza maggiore tra wikipedia e
DBpedia
1. La possibilità di effettuare query SPARQL e
poter avere risultati machine readable
2. Il fatto che sono presentati in un formato La possibilità di effettuare query SPARQL e poter
HTML più facilmente analizzabile tramite un avere risultati machine readable
programma
3. Non ci sono differenze significative
4. Il fatto di poter avere risultati in linguaggi
differenti
FLAVIO_DE_PAOLI, DANIELA_MICUCCI.
Query:
SELECT ?person WHERE {
?person insegna ?corso ,
?corso parte_di Cdl_in_Informatica .
}
3. 3
4. Più di 3
Un sender esegue l’istruzione (in pseudo Il receiver può leggere l’intero buffer con una
codice): write (socket, buffer, N) per scrivere istruzione: read(socket, buffer, N)
sulla socket gli N byte contenuti nel buffer.
-Il receiver può leggere l’intero buffer con una
QUALI di queste affermazioni sono FALSE (2 istruzione: read(socket, buffer, 2*N)
risposte)?
[da rivedere]
1. Il receiver può leggere l’intero buffer con un
ciclo di istruzioni: read(socket, buffer, N/2)
2. Il receiver può leggere l’intero buffer con una
istruzione: read(socket, buffer, 2*N)
3. Il receiver può leggere l’intero buffer con un
ciclo di istruzioni: read(socket, buffer, N)
4. Il receiver può leggere l’intero buffer con una
istruzione: read(socket, buffer, N)
Perché il ciclo di vita delle HTTPServlet può Perché hanno un’interfaccia nota
essere gestito da un engine?
1. Perché hanno un’interfaccia nota
2. Perché usano il protocollo HTTP
3. Perché Java è un linguaggio interpretato
4. Perché generano risposte HTML
REST (2 risposte)
1. Rende centrale il concetto di risorsa
2. È uno standard codificato Rende centrale il concetto di risorsa
Le applicazioni AJAX-JSON sono più efficienti di Si, perché i dati JSON sono in formato compilabile
quelle AJAX-XML? JavaScript
1. Si, perché i dati JSON sono in formato
compilabile JavaScript
2. Si, perché i dati JSON sono in formato testo
3. No, sono equivalenti
4. No, perché XML è più espressivo
Cosa significa che il metodo GET è La GET è idempotente nel senso che l’effetto di più
idempotente? richieste identiche di ottenere una risorsa è lo
stesso di quello di una sola risorsa, la GET è sicura
quindi non altera lo stato della risorsa.
Quale è la definizione corretta di middleware? È uno strato software che sta sopra i sistemi
1. È uno strato software che virtualizza operativi di rete e fornisce servizi alle applicazioni
l’hardware e fornisce servizi alle applicazioni soprastanti
soprastanti
2. È uno strato software che sta sopra i sistemi
operativi di rete e fornisce servizi alle
applicazioni soprastanti
3. È uno strato software che sta sopra il
sistema operativo di rete per simulare un
sistema operativo distribuito
4. È uno strato software che sostituisce i
sistemi operativi di rete e fornisce servizi alle
applicazioni soprastanti