Un amigo me paso un link a la pagina de National Geographyc en el que se encuentra un test de inteligencia muy bueno y divertido. Les dejo el link para que lo prueben.
Escoger un proyecto Java, de tipo Aplicación. Luego clic en Next.
Escribir un nombre al proyecto. Clic en Next
Se creará un árbol con los archivos de la siguiente manera.
Damos clic derece sobre el paquete y seleccionamos un nueva clase de tipo JFrame form.
Escribimos un nombre para la clase y luego clic en Finalizar.
Podemos observar que tenemos algo como lo suguiente y del lado derecho se puede observar una barra de controles que se pueden ir arrastrando hacia la ventana.
Ventana Terminada:
Al dar clic derecho sobre los controles, ya sea el campo de texto o botón podemos ver algunas propiedades, como cambiar el nombre del objeto, editarlo, etc.
Cuando se da doble clic sobre el botón este genera código del evento de ese control:
Ejemplo:
private void BotonAceptarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
Y asi se tiene un nuevo proyecto de ventanas en Netbeans.
Una de las características más útiles de cualquier lenguaje orientado a objetos es la posibilidad de declarar clases que definen como se utiliza solamente, sin tener que implementar método. Esto en Java se hace mediante interfaces y con clases abstractas.
Una clase abstracta es una clase de la que no se puede crear objetos. La utilidad de estas clases estriba en que otras clases hereden de ésta, por lo que con ello conseguiremos reutilizar código. Para declarar una clase como abstracta utilizamos la palabra clave abstract.
Una clase abstracta…
Es una clase que no se puede instanciar.
Se usa únicamente para definir subclases.
¿Cuándo es una clase abstracta?
Cuando deseamos definir una abstracción que englobe objetos de distintos tipos y queremos hacer uso del polimorfismo.
Polimorfismo: se refiere a la posibilidad de definir clases diferentes que tienen métodos o atributos denominados de forma idéntica, pero que se comportan de manera distinta.
class Circulo extends FiguraGeometrica {
. . . void dibujar() {
// codigo para dibujar Circulo
. . .
}
}
Se pueden crear referencias a clases abstractas como cualquier otra. No hay ningún problema en poner:
FiguraGeometrica figura;
Sin embargo una clase abstracta no se puede instanciar, es decir, no se pueden crear objetos de una clase abstracta. El compilador producirá un error si se intenta:
FiguraGeometrica figura = new FiguraGeometrica();
Esto es coherente dado que una clase abstracta no tiene completa su implementación y encaja bien con la idea de que algo abstracto no puede materializarse. Sin embargo utilizando el up-casting visto dedicado a la Herencia si se puede escribir:
FiguraGeometrica figura = new Circulo(. . .);
figura.dibujar();
Figura es un clase abstracta que no tiene sentido calcular su área, pero sí la de un cuadrado o un círculo. Si una subclase de Figura no define area() debe declararse también como clase abstracta.
SRVCTL no puede iniciar los servicios de RAC debido a estado UNKNOWN
Existen algunas ocasiones en las que el comando srvctl no puede levantar los servicios del RAC, debido a lo que oracle define como un error:
CRS-0223: Resource 'ora.nodo.xxx.xxx' has placement error.
Esto se debe a que algunos servicios de oracle tienen el estado de UNKNOWN como se muestra a continuación:
node68:/u01>$CRS_HOME/bin/crs_stat -t | grep 68
ora....TA4.srv application ONLINE UNKNOWN node68
ora....SM4.asm application ONLINE UNKNOWN node68
ora....68.lsnr application ONLINE UNKNOWN node68
ora....d68.gsd application ONLINE ONLINE node68
ora....d68.ons application ONLINE ONLINE node68
ora....d68.vip application ONLINE ONLINE node68
Como se puede notar existen varios servicios que muestran UNKNOWN en el estado, esto se soluciona con el siguiente procedimiento:
1.- Utilizamos el comando
$CRS_HOME/bin/crs_stat -l
Para obtener el nombre completo del recurso.
2. El comando
$CRS_HOME/bin/crs_stop -f nombre_del_recurso
Forza el detenimiento de dicho recurso y cambia su estado de UNKNOWN a OFFLINE y STOP.
Se realiza este procedimiento para cada recurso que presente el estado UNKNOWN y lo recomendable es de ser posible DETENER TODOS LOS DEMÁS SERVICIOS para proceder levantarlos de manera conjunta.
La forma de levantar/detener los servicios de una base de datos con opción RAC es diferente de una base de datos standalone. A continuación se presenta, a manera de guía, un procedimiento para levantar/detener/validar los servicios manualmente. Todos estos comandos deben ser ejecutados con el usuario oracle, excepto donde se indica.
El orden en que se levantan/detienen los servicios es importante, siendo el orden adecuado el siguiente:
Levantar:
1º Los servicios,
2º La instancia ASM,
3º La base de datos.
Detener:
1º La base de datos,
2º La instancia ASM,
3º Los servicios.
Base de datos:
Levantar
$ srvctl start database -d DBNAME
Detener
$ srvctl stop database -d DBNAME
Status
$ srvctl status database -d DBNAME
ASM:
Levantar
$ srvctl start asm -n nodo1
$ srvctl start asm -n nodo2
Detener
$ srvctl stop asm -n nodo1
$ srvctl stop asm -n nodo2
Status
$ srvctl status asm -n nodo1
$ srvctl status asm -n nodo2
Servicios de RAC (VIP, ONS, GSD y listener):
Levantar
$ srvctl start nodeapps -n nodo1
$ srvctl start nodeapps -n nodo2
Detener
$ srvctl stop nodeapps -n nodo1
$ srvctl stop nodeapps -n nodo2
Status
$ srvctl status nodeapps -n nodo1
$ srvctl status nodeapps -n nodo2
Clusterware:
En caso de ser necesario manejar el clusterware (CRS) manualmente, los siguientes comandos deben ser ejecutados con el usuario root: