Java Expert....Java/Open Source Addict

Redes Sociales

twitterlinkedinrss feedemail youtube

martes, 16 de febrero de 2016

Certification Java – Set


Teniendo que la clase NameBean.java es la siguiente:
[code] package com.matoosfe.certification.basico; public class NameBean { private String str; NameBean(String str ){ this.str = str; } /** * @return the str */ public String getStr() { return str; } /** * @param str the str to set */ public void setStr(String str) { this.str = str; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return getStr(); } } [/code]
Cuál es la salida que se muestra al ejecutar el código?
[code] package com.matoosfe.certification.basico; import java.util.HashSet; public class CollClient { public static void main(String []sss) { HashSet myMap = new HashSet(); String s1 = new String("das"); String s2 = new String("das"); NameBean s3 = new NameBean("abcdef"); NameBean s4 = new NameBean("abcdef"); myMap.add(s1); myMap.add(s2); myMap.add(s3); myMap.add(s4); System.out.println(myMap); } } [/code]
Entre las opciones tenemos: a) das abcdef abcdef b) das das abcdef abcdef c) das abcdef d) abcdef abcdef

Para determinar la respuesta correcta deberiamos referirnos a la definición de la colección utilizado en este caso la interfaz Set la cual determina que no se puede tener dos objetos repetidos en la collection, los cuales para ser añadidos a la collection utilizan el método equals con la siguiente sentencia e1.equals(e2). De lo que podemos puntualizar lo siguiente
  • En Java para comparar que dos objetos sean iguales (mismo objeto, misma instancia o referencia) se utiliza el símbolo == que no tiene nada que ver con el contenido.
  • En cambio el método equals sirve para comparar que dos objetos sean iguales por lo general en contenido, no el mismo objeto
  • Adicionalmente en una collection para que dos elementos sean iguales deben de tener el mismo hashCode
Tomando en cuenta lo mencionado anteriormente se concluye lo siguiente.
La opción b) esta incorrecta porque los objetos s1 y s2 a pesar de que tienen el mismo contenido, tienen el mismo hascode (el cual es obtenido en base al contenido) por lo que son iguales, lo que determina que en la collection del tipo Set solo podria estar uno de ellos. A continuación se expone la definición del método hashCode de la clase String donde se puede apreciar lo mencionado. [code] public int hashCode() { int h = hash; if (h == 0) { int off = offset; char val[] = value; int len = count; for (int i = 0; i < len; i++) { h = 31*h + val[off++]; } hash = h; } return h; } [/code]

La opción c) esta incorrecta porque las instancias del Objeto NameBean a pesar de que tienen el mismo contenido no tienen el mismo hashcode ya que son objetos diferentes, diferentes referencias.
La opción d) esta descartada porque en la collection myMap deberia existir al menos un elmento del tipo String y del tipo NameBean
Para terminar por la explicaciones anteriormente expuestas a las anteriores respuestas se concluye que la respuesta correcta es la a) ya que dos objetos son iguales siempre y cuando sean iguales en contenido y referencia (hasCode)

miércoles, 3 de febrero de 2016

Aniversario 16




Princesita de mis sueños
Caramelito de mi corazón
Como no expresarte mi amor sincero
Si eres tu quien curo mis miedos
Si eres tu quien rompió el misterio
De aquel poeta loco y trovador
Que no creía en el amor.


Pinceladas de ternura que brotan en mi pecho
Y repiten a cada instante los recuerdos
Palabras simples que suenan armoniosas
Junto al TE AMO que siento latir
Cada vez que miro tu sonrisa llegar a mí.


El tiempo transcurre en silencio
Mientras mi amor florece con el tiempo
Amándote cada día como si fuese el primero
Y esperando que llegue aquel día anhelado
Para vivir una vida junta a tu lado.










Error Cheese GStreamer



Hola amig@s les comparto un error que se me presentó cuando desee utilizar el programa Cheese en mi Centos7 para realizar unas capturas con la webcam. A lo que lo inicialize obtuve el siguiente error


Para solucionar el problema se tiene que verificar que se tenga instalado los paquetes de gstreamer, luego si el problema persiste. Se debe dirigirse a la carpeta de usuario y eliminar el directorio ~/.cache/gstreamer-1.0 y volver a ejecutar Cheese con lo que la webcam se activará.



Saludos

viernes, 7 de agosto de 2015

Con el tiempo aprendes


Meditando un poco en momentos de reflexión escribí esto, espero les guste y puedan compartir amigos.


Con el tiempo aprendes....

Quienes son tus verdaderos amigos.
A valorar más el tiempo con tu familia.
A disfrutar de los momentos y personas.
Que los sueños nunca terminan.
Que la voluntad y sacrificio congratulan el éxito.
A ser agradecido con la vida y sobretodo con Dios por su bondad, paciencia, bendiciones y cuidado.
Que las lágrimas, errores solo son parte del crecimiento.
Que el dinero nunca compensará el éxito y la felicidad.
Que tu bondad y solidaridad no es para todos, sino para la gente que la valora.
Que tus objetivos dejen de ser personales para convertirse en familiares.
Que nunca terminarás de aprender y la mejor forma serán tus experiencias. Que la ilusión y el amor son otra cosa.
Que el éxito no sirve de nada sino tienes humildad.
Que  la religión, profetas, santos no significan nada si no tienes a Dios en tu corazón.
Que necesitas una vida equilibrada, los extremos son malos.
Que disfrutar de la música, el deporte y el sexo son placeres indiscutibles.
Que a veces es mejor estar solo para encontrarse.
Que los verdaderos sueños nacen en el corazón.
Que existen grandes diferencia en trabajar y amar lo que haces.
Que el primer paso para emprender es confiar en ti.
Que las personas, amores pasan pero sus enseñanzas nunca.
Que tu vida siempre será un modelo a seguir o no seguir.
Que tu historia termina cuando dejas de escribir la tuya para escribirla la de otra.
Que no existen secretos para Dios.


Que lo único que no se recupera es el tiempo perdido..........

autor: martosfre

miércoles, 5 de agosto de 2015

Formas de Persistencia


Estimados amig@s les comporto un extracto del libro que JPA que estoy realizando como parte de mi preparación para la certificación OCEJPA Espero sus comentarios.

 1.2 Formas de Persistencia.

La persistencia involucra el almacenamiento permanente de la información sobre un medio físico o lógico asociándolo generalmente con una base de datos. En Java existen varias maneras de persistir un objeto entre las cuales se tiene las siguientes:

  • Persistir un objeto a través del mecanismo de Serialización(proceso para convertir un objeto en una secuencia de bits) sobre un disco duro o a través de una conexión de red; permite obtener un formato independiente que puede ser re-usado en medio de diferentes sistemas operativos. Java provee un mecanismo estandarizado, simple y transparente para serializar objetos a través de la implementación de la interface java.io.Serializable. Sin embargo este mecanismo a pesar de ser muy simple no cuenta con un lenguaje de consulta o una infraestructura que soporte acceso concurrente a la información o clusterización.
  • Otro mecanismo de persistencia es a través de JDBC (Java Database Connectivity), cual es el API estándar para gestionar base de datos relacionales. Permitiendo conectar la base de datos, ejecutar sentencias SQL tanto DML como DDL y obtener los resultados.
  • A pesar de que JDBC es usado ampliamente ha sido desplazada por la utilización de los ORM(Object Relational Mapping) o capas de persistencia, cuya funcionalidad es permitir la representación de un modelo de datos en un modelo de objetos y facilitar las operaciones fundamentales de la base de datos a través de métodos; entre algunas de las capas de persistencia se tiene las siguientes Hibernate, EclipseLink, ToplLink siendo consideradas como otro mecanismo persistencia.
  • Finalmente el esquema de persistencia estándar utilizada independientemente de la capa de persistencia se conoce con el nombre de Java Persistence API(JPA), y es el cual es utilizado para persistir los datos tanto en aplicaciones JEE como aplicaciones de escritorio.

domingo, 28 de junio de 2015

Los Siete Hábitos para Dirigir tu vida - Análisis


Retomando con mi hábito de lectura, he decidido leer el libro "Los Siete Hábitos para Dirigir tu Vida", de José M. Acosta; el cual es un libro muy interesante que en forma clara y precisa muestra un esquema ordenada a seguir para la consecución de una meta. He  quedando muy  satisfecho con la enseñanza aprendida que se resume en los siguientes  7 puntos:



  1. Decide a Donde Quieres Ir.-  Decide, enfocarte en las metas personales que involucren a ti, tu familia y tu trabajo. Metas u Objetivos puntuales, claros, concisos, cuantificables (no más de 9). 
  2. Decide que debes hacer para llegar Allí.- Desglosa los objetivos por tareas o etapas tomando en cuenta las metas a largo, mediano y corto plazo con asignación de fechas. Contempla tiempo de relajación, descanso y diversión.
  3. Comienza por lo más importante.- Determina las prioridades de las metas y comienza por la más importante antes que se convierte en urgente. No malgastes el tiempo en hacer cosas menos importantes que las que podrías hacer, las cuales provocarán estrés al final.
  4. Asigna a cada tarea sólo el tiempo justo.- Programa a cada tarea el tiempo adecuado y no más. Toma en cuenta los imprevistos y busca la perfección en el conjunto y no en cada tarea. Delega pero antes analiza como hacerlo.
  5. Sigue tu programa.- Programa las actividades a realizar por semana para alcanzar tu meta. Lleva una agenda a la vista y evita las interrupciones, aprende a decir NO a los temas que te retrasarán. 
  6. Concéntrate en un solo asunto y termínalo.-  Enfócate en terminar una actividad para poder avanzar a la siguiente. Recuerda que cambiar de una actividad a otra encarece las dos y las retrasa.
  7. Hazte la vida más fácil.- Finalmente es importante tener un equilibrio en tu vida. Cuida tu cuerpo, tu ánimo, tu energía, organizate debidamente, duerme bien, EVITA EL ESTRÉS. Recuerda tu tiempo es tu vida,  lo necesitas para todo lo que quieras hacer o disfrutar. No lo malgastes.
 
Les invito a leerlo, saludos.

miércoles, 6 de mayo de 2015

Error AbstractMethodError: com.microsoft.sqlserver.jdbc.SQLServerResultSet


Estimad@s amigos, que gusto volver a postear algo luego de tanto tiempo perdido.... lamento no hacerlo. Estuve preparándome para unos exámenes de certificación de java y android... pero ya estoy de vuelta.

En esta oportunidad quiero compartirles la solución a un error que se presentó el día de hoy al subir a producción un módulo de pre-facturación que realice para un cliente. El escenario fue el siguiente:

Problema:
Al subir una aplicación desarrollada en RichFaces 3.4 en un servidor de aplicación glassfish 3.1 que utiliza JEE 5.0 con los motores de base de datos sqlserver 2008 y postgres 9.1, todo estuvo correcta hasta que se genero un reporte que utiliza un procesamiento muy fuerte en primera instancia sobre SQLServer a nivel de JDBC para un tema batch. Generandome el siguiente error:

Error SQLServerResultSet Driver JDBC SQLServer V1.0
Solución:

La solución al problema fue cambiar el driver de SQLServer que se tenia configurado en el Pool de Conexión, el cual era el sqljdbc.jar que correspondía a la versión 1.0 por el driver sqljdbc4.jar correspondiente a la versión 4. Debido a que en el driver inicial no se tenia el método isClosed() del objeto ResultSet.