XML vs JSON: differenze, vantaggi e svantaggi dei formati di scambio dati

XMLvsJSON

Quando si parla di scambio di dati tra applicazioni, i due formati più utilizzati sono XML e JSON.
Entrambi permettono di strutturare e trasferire informazioni tra sistemi, ma hanno differenze sostanziali in termini di sintassi, leggibilità e prestazioni.
In questo articolo scopriamo le differenze tra XML e JSON, i loro vantaggi e svantaggi, e quale formato conviene usare a seconda del contesto.

Leggi tutto “XML vs JSON: differenze, vantaggi e svantaggi dei formati di scambio dati”

Cos’è un file XML

Un esempio di file XML è un formato testuale che struttura i dati usando tag, simile all’HTML ma più flessibile, per creare dizionari di dati personalizzati e leggibili sia da umani che da computer. Ogni elemento XML è definito da un tag di apertura e uno di chiusura e può contenere altri elementi o attributi. 

Ecco un esempio di file XML che descrive un ordine di acquisto:

Leggi tutto “Cos’è un file XML”

Thread Join in linguaggio C

Di seguito viene mostrato un esempio di codice che crea un thread nel cui codice viene generato un numero casuale da 1 a 6, simulando il lancio di un dado.

#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>

int parametroOUT;
void* codice(void *arg){
	srand(time(NULL));
	parametroOUT = (rand() % 6)+1;
	pthread_exit((void*) &parametroOUT);
}

int main(){
	int *risultato;
	pthread_t t1;
	pthread_create(&t1, NULL, codice, NULL);
	pthread_join(t1, (void*) &risultato);
	printf("dado estratto: %d\n", *risultato);
	return 0;
}

Fork Join in linguaggio C

Di seguito si mostra un esempio del costrutto Fork Join utilizzando le funzioni fork() e wait() del linguaggio C. In particolare sia il processo padre che il processo figlio eseguiranno in parallelo dei calcoli ed in fine il processo padre sommerà i risultati dei calcoli paralleli.

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

int potenza(int n, int e){
	int k=n;
	int i;
	printf("1.1 elab. parallela processo figlio\n");
	for(i=1;i<e;i++) k=k*n;
	return k;
}

int fattoriale(int n){
	int k=n;
	int i;
	printf("1 elab. parallela processo del padre\n");
	for(i=n-1;i>0;i--) k=k*i;
	return k;
}

int somma(int a, int b){
	int k;
	printf("2 elab. finale padre \n");
	k=(a+b);
	return k;
}

int main(){
	int x, y, z, retv;
	pid_t pid;
	pid=fork();				//inizio elaborazione parallela
	if(pid == 0){
		x=potenza(3,3);		//esecuzione parallela calcoli figlio
		exit(x);			//termina processo figlio
	}
	else{
		y=fattoriale(4);	//esecuzione parallela calcoli padre
	}
	printf(".. join: padre aspetta \n");
	wait(&retv);			//join: il padre aspetta il figlio
	x = WEXITSTATUS(retv);	//prende il risultato del figlio
	z = somma(x,y);			//esegue gli ultimi calcoli
	printf("-> risultato finale z = %d \n", z);
}