Esta aplicación incluye una implementacion básica de una cola (queue) de enteros en Java utilizando memoria dinámica, una de las estructuras de datos mas utilizadas, las operaciones incluidas son enqueue para agregar elementos a la cola, dequeue para sacar elementos de la cola, top para obtener el valor del tope de la cola sin sacar el elemento, y size para saber el numero de elementos en la cola.
Codigo fuente en Oracle JDeveloper 11g
domingo 22 de noviembre de 2009
Memoria Dinámica en Java, Pila estructura de datos LIFO
Esta aplicación incluye una implementacion básica de una pila (stack) de enteros en Java utilizando memoria dinámica, una de las estructuras de datos mas utilizadas, las operaciones incluidas son pop para sacar el primer elemento de la pila, push para agregar elementos a la pila, top para obtener el valor del tope de la pila sin sacar el elemento, y size para saber el numero de elementos en la pila.
sábado 31 de octubre de 2009
Threads en Java
Esta aplicación demuestra como sincronizar varios threads en java, se pueden crear threads en tiempo de ejecución y ver como estos actuan con la interface
Codigo fuente del proyecto en JDeveloper 11g
Codigo fuente del proyecto en JDeveloper 11g
Semaforos del Sistema en C/C++ sobre Linux
Crear semaforos en Linux para sincronizar procesos
al crear los semaforos en un proceso, es posible adquirir el mismo conjunto de semaforos desde otro proceso con una llamada a semget
configurar el valor inicial de un semaforo y acceder al valor actual del semaforo
operaciones Up() y Down()
remover los semaforos
#include <sys/ipc.h> #include <sys/sem.h> void main() { key_t llave; int id_semaforo; //algun archivo para crear la llave, todos los procesos //que desean obtener la misma llave deben pasar los mismos //parametros, con la misma llave tambien se adquiere el mismo //conjunto de semaforos llave = ftok("/bin/bash", 'X'); //crear 10 semaforos con persimos 0666 (rw-rw-rw-) id_semaforo = semget( llave, 10, 0666 | IPC_CREAT); }
al crear los semaforos en un proceso, es posible adquirir el mismo conjunto de semaforos desde otro proceso con una llamada a semget
#include <sys/ipc.h> #include <sys/sem.h> void main() { key_t llave; int id_semaforo; //la misma llave para obtener acceso al conjunto de semaforos creado llave = ftok("/bin/bash", 'X'); id_semaforo = semget( llave, 10, 0); }
configurar el valor inicial de un semaforo y acceder al valor actual del semaforo
#include <sys/ipc.h> #include <sys/sem.h> union semun { int val; struct semid_ds *buf; ushort *array; }; void main() { key_t llave; int id_semaforo; llave = ftok("/bin/bash", 'X'); id_semaforo = semget( llave, 10, 0666 | IPC_CREAT ); //estructura que parametriza la funcion semctl semun arg; arg.val = 1; //valor inicial para el semaforo //configurar el semaforo con indice 0 del arreglo de 10 a 1 semctl( id_semaforo, 0, SETVAL, arg ); //configurar el semaforo con indice 1 del arreglo de 10 a 1 semctl( id_semaforo, 1, SETVAL, arg ); //obtener el valor actual del semaforo con indice 1 int valorActual = semctl( id_semaforo, 1, GETVAL ); }
operaciones Up() y Down()
#include <sys/ipc.h> #include <sys/sem.h> void main() { key_t llave; int id_semaforo; llave = ftok("/bin/bash", 'X'); id_semaforo = semget( llave, 10, 0666 | IPC_CREAT ); sembuf accion; // UP accion.sem_num = 0; //indice del semaforo accion.sem_op = 1; //operacion enteros positivos se agregan al semaforo accion.sem_flg = 0; //identificador, arreglo de sembuf y cantidad de elementos de dicho //arreglo, seria posible ejecutar varias acciones al mismo tiempo semop ( id_semaforo, &accion, 1 ); //DOWN accion.sem_num = 0; //indice del semaforo accion.sem_op = -1; //operacion enteros negativos se restan del semaforo //si el valor actual del semaforo es menor que el entero negativo //el proceso se duerme hasta que el valor del semaforo es mayor accion.sem_flg = 0; semop ( id_semaforo, &accion, 1 ); }
remover los semaforos
#include <sys/ipc.h> #include <sys/sem.h> void main() { key_t llave; int id_semaforo; //algun archivo para crear la llave, todos los procesos //que desean obtener la misma llave deben pasar los mismos //parametros, con la misma llave tambien se adquiere el mismo //conjunto de semaforos llave = ftok("/bin/bash", 'X'); //crear 10 semaforos con persimos 0666 (rw-rw-rw-) id_semaforo = semget( llave, 10, 0666 | IPC_CREAT); //remover los semaforos creados semctl( id_semaforo, 0, IPC_RMID); }
miércoles 21 de octubre de 2009
Agregar Controles en Tiempo de Ejecucion a un Form en C#
Este ejemplo demuestra como agregar controles de forma dinámica a un formulario en c#, el codigo fuente esta montado en un proyecto de visual studio 2008, la aplicación permite agregar un numero arbitrario de botones a un panel y ademas maneja el evento de cada botón agregado.
sábado 3 de octubre de 2009
Carga de datos a Oracle 10g desde archivo csv usando SQL*Loader
El proceso de carga de datos desde archivos de texto a base de datos es un elemento fundamental en la manipulación de información, puede darse como parte de la migración de un sistema o como parte de un proceso de integración entre sistemas, el conjunto de scripts que acompañan a este post demuestran como crear un usuario en el dbms, luego como crear un grupo de roles con permisos restringidos y la creación de otros usuarios apegados a dichos roles, ademas el proceso de carga de datos utilizando SQL*Loader a una tabla temporal, luego la ejecución de un script para crear el modelo entidad relación para estructurar los datos y finalmente la ejecución de un script que rellena el modelo entidad relación a partir de los datos almacenados en la tabla temporal. Los scripts son archivos por lotes de windows (bat), la única configuración necesaria es editar los scripts para configurar la contraseña del usuario SYS para las acciones que requieren privilegios.
Descargar scripts + datos
sábado 26 de septiembre de 2009
Hoja de Calculo en Java
Aplicación simple en Java que implementa una hoja de calculo a un nivel muy basico, permite copiar, cortar y pegar, ademas de modificar el formato de cada celda, como el color de fondo y el color de la fuente, ademas permite seleccionar grupos de celdas, tambien implementa la función guardar y abrir, usando serializacion.
Etiquetas:
abrir,
guardar,
hoja de calculo,
java,
serializacion
Suscribirse a:
Entradas (Atom)