Documento su Tpsit Quinto Anno Riassunti. Il Pdf, un riassunto di informatica per l'Università, copre multithreading, socket programming, JSON e HTTP, fornendo una panoramica chiara dei temi trattati.
Mostra di più16 pagine


Visualizza gratis il Pdf completo
Registrati per accedere all’intero documento e trasformarlo con l’AI.
Un thread è un flusso di esecuzione indipendente che può essere gestito all'interno di un programma (processo). Ogni thread esegue una serie di istruzioni, condivide la memoria e le risorse con altri thread dello stesso processo e può funzionare in parallelo con altri thread. Ogni thread ha il proprio contesto di esecuzione, come i registri della CPU e lo stato. Ogni programma in esecuzione ha almeno un thread principale, ma può creare più thread per svolgere compiti in parallelo.
Processo vs Thread: · Un processo è un programma in esecuzione che ha la sua memoria e risorse. · Un thread è un'unità di esecuzione all'interno di un processo. I thread di uno stesso processo condividono memoria e risorse.
Esempio pratico della vita reale: · un browser web: puoi caricare più schede (processi) e in ogni scheda ci sono azioni diverse in corso, come il caricamento di pagine (thread).
Le classi che implementano thread devono definire un metodo run(), che serve a definire il comportamento che un thread deve eseguire quando viene avviato.
La programmazione multithread è una tecnica che permette a un programma di eseguire più thread in parallelo, sfruttando al meglio le risorse del sistema. Questo approccio è utile per: · Migliorare la velocità e l'efficienza, sfruttando più core della CPU. · Gestire operazioni asincrone (ad esempio, mantenere un'interfaccia utente reattiva durante operazioni lunghe). · Suddividere compiti complessi in unità più semplici e indipendenti.
Concetti fondamentali:
Quando i thread condividono risorse (come variabili o file), è necessario sincronizzarli per evitare conflitti, si utilizzano tecniche di sincronizzazione: · Mutua esclusione: un meccanismo fondamentale nella programmazione multithread per garantire che solo un thread alla volta possa accedere a una risorsa condivisa o eseguire una sezione critica del codice. Java utilizza i monitor per implementare la mutua esclusione. Ogni oggetto in Java è associato a un monitor, che può essere acquisito o rilasciato da un thread. · Attese e notifiche: per coordinare l'esecuzione tra più thread che lavorano su risorse condivise. Questi metodi sono definiti nella classe Object e funzionano in combinazione con il monitor dell'oggetto.
Metodi fondamentali per la sincronizzazione:
Un socket è un'interfaccia software che consente la comunicazione tra due programmi, che possono essere in esecuzione sullo stesso dispositivo o su dispositivi remoti connessi in rete. È un punto di connessione che permette lo scambio di dati attraverso un protocollo di rete, come TCP (Transmission Control Protocol) o UDP (User Datagram Protocol).
I socket sono utilizzati per la comunicazione tra processi su reti LAN/WAN. Permettono di implementare protocolli come UDP e TCP per trasmettere dati tra client e server.
Elementi di un Socket Un socket è identificato da: · Indirizzo IP: Specifica il dispositivo nella rete. · Numero di Porta: Indica l'applicazione specifica sul dispositivo. Ad esempio, una connessione socket è rappresentata dalla coppia <IP, Porta>: · 127.0.0.1:8080: Comunicazione locale sulla porta 8080.
Esempio di Scambio di Dati
La gestione dei socket avviene tramite il package java.net, che offre classi fondamentali come: 0 InetAddress: rappresenta indirizzi IP. 0 Socket e ServerSocket: utilizzati per le comunicazioni TCP. 0 DatagramSocket e DatagramPacket: utilizzati per le comunicazioni UDP. O URL: rappresenta risorse web.
Livelli OSI Coinvolti con i Socket
· UDP (User Datagram Protocol): protocollo senza connessione*, in cui i dati sono inviati in pacchetti chiamati datagram. Non garantisce l'ordine né la consegna dei pacchetti. O *Senza Connessione O Questo modello, utilizzato dal protocollo UDP (User Datagram Protocol), non richiede che i dispositivi stabiliscano una connessione prima di inviare dati. O Esempio pratico: O Trasmissione di audio/video in tempo reale. o Servizi di DNS (Domain Name System). o Trasferimento rapido di dati senza necessità di conferme. · Classi Java principali per UDP: DatagramSocket: per inviare e ricevere datagram. o DatagramPacket: rappresenta i dati trasmessi o ricevuti. · Esempio: O Il server riceve un datagram tramite receive(), elabora i dati e risponde con un altro datagram usando send().
· TCP (Transmission Control Protocol): protocollo orientato alla connessione*, garantisce l'integrità e l'ordine dei dati. 0 *Orientato alla Connessione O Questo modello, utilizzato dal protocollo TCP (Transmission Control Protocol), implica che i dispositivi coinvolti stabiliscano una connessione stabile e affidabile prima di iniziare a scambiare dati. O Esempio pratico: O Navigazione web con HTTP/HTTPS. O Email con SMTP o IMAP. 0 Streaming video su protocolli affidabili. · Classi Java principali per TCP: O ServerSocket: attende connessioni dai client tramite accept(). o Socket: rappresenta la connessione tra client e server. · Concetti importanti: O Server TCP Iterativi: gestiscono una connessione alla volta, rispondendo e chiudendo immediatamente. O Server TCP Concorrenti: gestiscono più connessioni contemporaneamente utilizzando thread o un thread-pool.
Definizione Un server TCP concorrente è progettato per gestire più richieste contemporaneamente. Ogni connessione client viene gestita da un thread o un processo separato, consentendo al server di accettare e servire richieste simultaneamente.
Caratteristiche
Flusso operativo
Definizione Un server TCP iterativo è un tipo di server che gestisce una sola richiesta alla volta. Ogni connessione client viene accettata, gestita completamente, e chiusa prima che il server possa accettare un'altra richiesta.
Caratteristiche
Flusso operativo
Esempi di utilizzo · Server Iterativo: o Applicazioni con un numero limitato di utenti simultanei, come un piccolo server di test. · Server Concorrente: o Applicazioni ad alta richiesta, come server web, chat room o piattaforme di streaming.
· Protocolli Applicativi: definiscono regole specifiche per la comunicazione tra client e server. Ad esempio: o Un server può implementare un servizio calcolatrice che esegue operazioni come ADD, SUB, MUL, DIV, rispondendo con i risultati. O La comunicazione avviene tramite stringhe che terminano con i caratteri CR e LF.
Cos'è XML? È un linguaggio markup progettato per descrivere dati strutturati in modo leggibile da esseri umani e macchine. Diversamente da HTML, XML non ha tag predefiniti, permettendo agli sviluppatori di creare tag personalizzati per descrivere i dati in modo preciso.