elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 111
61  Foros Generales / Foro Libre / Re: Millonario: La pobreza mundial es una noticia fantástica en: 28 Enero 2014, 22:15 pm
Da mucha pena ver personas tan toxicas como la mayorías que comentaron en el hilo.

Sigan pensando asi, y no lograran nada importante en sus vidas.

Saludos y vivan los millones jejeje.

PD: Estoy con el millonario
62  Programación / Java / Re: Codigo en Java que no hace lo que deberia en: 26 Enero 2014, 20:41 pm

Desde el inicio el codigo que tengo en mi PC funciona perfectamente (al copiarlo me puse una llave de mas, error mio que ni siquiera sabia que habia puesto y que imagino que nadie se dio cuenta al principio hasta que lo mencionaste mas tarde)


Como voy a adivinar el codigo que tiene errores logico si lo pegas mal... Sigo las indicaciones que me das para saber como tienes el codigo, la das mal y luego dices que es mi código  :rolleyes:


Esto se estudia al comienzo en la universidad, lo se porque en segundo de carrera estoy cursando una asignatura sobre paralelismo y todos lo hacemos al principio... y con el tiempo, ves la burrada que significa.

Brother, tengo mas de 4 años programando, tengo la certificación de OCPJP (Oracle Certified Professional, Java Programmer), voy a tomar muy pronto si dios quiere la certificación OCPJBCD (Oracle Certified Expert, Java EE 6 Enterprise JavaBeans Developer), trabajo como Java EE Developer & PHP Developer, y me vas a salir con eso de la universidad...

Si comienzas a depurar el codigo, observas como se comporta sabrás todas las respuesta a tus preguntas. Pero todavía no entiendo porque no lo haz hecho

Saludos.
63  Programación / Java / Re: Codigo en Java que no hace lo que deberia en: 26 Enero 2014, 16:08 pm
 
//Supongamos que antes se ha declarado esto:
//Object cerrojo = new Object();

Código:
switch(tipoHilo){ 
        case 0:
         for(int i=0; i<nVueltas; i++)
         synchronized(cerrojo){ n=n+1;}; // <--- Cambio de cerrojo
         break;
        case 1:
         for(int i=0; i<nVueltas; i++){
         synchronized(cerrojo){n=n-1;}; // <--- Cambio de cerrojo
         break;
      }

Si dices eso, donde debo poner ese código?? según tu comentario antes del switch, porque no vas a declarar un atributo estático dentro de un método. Me dices que lo coloque antes del switch, posteo el codigo de como debe quedar segun usted y luego me dices que el codigo es mio y que es una bestia jejeje

Yo hasta ahora he tratado simular tu código porque nomas haz puesto código que no funcionan, malas indicaciones, o simplemente que funcionan pero estan mal hecho, y encima pones que mis codigo son bestiales y lo único que he hecho es seguir sus indicaciones para tratar de dar con el código que suyo que no funciona y que hasta ahora es que lo agrega al topic, para poder ver el problema y mirar que pasa... Pero el codigo malo que tienes me dices con son míos. Y en este punto es que haz puesto el código que deberías haber puesto al principio del hilo.

Men si eres tan buen programador, entonce hubieras arreglado y encontrado la razón porque pasa lo que pasa, ya que simplemente el error es básico.

Saludos y debuguea.
64  Programación / Java / Re: Codigo en Java que no hace lo que deberia en: 25 Enero 2014, 00:04 am
Me hubiera alegrado que en vez de decir que entiendes mi código, hubieras dicho que entiendes y comprendes la definiciones que deje...


Brother, tu código no funciona con "cerrojo" del tipo int o de cualquier tipo. Tu codigo debe imprimir 0, ya que primero se incrementa a 10,000 y luego descrementa a 0, en cambio retorna 10,000.

Otra cosa, las definiciones no es para que entiendas mi código, el código que puse es lo de menos pero te haz centrado hay. Las definiciones que deje es para que entiendas que si varios threads están modificando el mismo recurso a la vez, te causara conflictos.

Citar
switch(tipoHilo){
        case 0:
           for(int i=0; i<nVueltas; i++)
              synchronized(cerrojo){ n=n+1;}; // <--- Cambio de cerrojo
           break;
        case 1:
           for(int i=0; i<nVueltas; i++){
              synchronized(cerrojo){n=n-1;}; // <--- Cambio de cerrojo
           break;
      }

Por la llave del case 1 después del for, hace que se ejecute el for 1 vez, ya que va a procesar el break porque este esta dentro de la llaves.


Aqui esta el famoso codigo con cerrojo del tipo objeto,mira que no funciona:

Código
  1. package main;
  2.  
  3.  
  4. public class Hilo extends Thread {
  5.    private int tipoHilo;
  6.    private  static Integer n = new Integer(0);
  7.    private int nVueltas;
  8.  
  9.    public Hilo(int nVueltas, int tipoHilo)
  10.    {this.nVueltas=nVueltas; this.tipoHilo=tipoHilo;}
  11.  
  12.    public void run()
  13.    {
  14.      Object cerrojo = new Object();
  15.      switch(tipoHilo){
  16.        case 0:
  17.         for(int i=0; i<nVueltas; i++)
  18.         synchronized(cerrojo){ n=n+1;};
  19.         break;
  20.        case 1:
  21.         for(int i=0; i<nVueltas; i++)
  22.         synchronized(cerrojo){n=n-1;};
  23.         break;
  24.      }
  25.    }
  26.  
  27.  public static void main(String[] args)
  28.      throws Exception
  29.  {
  30.      Hilo p = new Hilo(10000, 0);
  31.      Hilo q = new Hilo(10000, 1);
  32.      p.start();
  33.      q.start();
  34.      p.join();
  35.      q.join();
  36.      System.out.println(n);
  37.  }
  38.  
  39. }
65  Programación / Java / Re: Codigo en Java que no hace lo que deberia en: 24 Enero 2014, 04:32 am
Lo importante, es hacer las cosas bien, entender porque todo esta donde esta. Toma el IDE, y debuguea el codigo y observa como se comporta.

Te recomiendo que trates de leer esta parte:
La razón porque al principio no funcionaba es porque habías puesto el keyword synchronized dentro del un loop. Cuando se iniciaba un ciclo en el loop, uno de los 2 thread tomaba el lock y el otro esperaba a que liberen el lock.

El problema esta en que el lock se libera cuando termina cada ciclo (son 10,000 ciclos como haz indicado), y puede pasar 2 cosas:
  • El thread que habia tomado el lock toma el lock de nuevo
  • El thread que estaba esperando que liberen el lock toma el lock.

Por lo tanto, en un momento la variable se puede incrementar y en el siguiente puede que disminuya, y en el siguiente puede incrementarse o disminuirse, y asi.


Citar
A read / write lock is more sophisticated lock than the Lock implementations shown in the text Locks in Java. Imagine you have an application that reads and writes some resource, but writing it is not done as much as reading it is. Two threads reading the same resource does not cause problems for each other, so multiple threads that want to read the resource are granted access at the same time, overlapping. But, if a single thread wants to write to the resource, no other reads nor writes must be in progress at the same time

Cita de: wikipedia
In computer science, the first and second readers-writers problems are examples of a common computing problem in concurrency. The two problems deal with situations in which many threads must access the same shared memory at one time, some reading and some writing, with the natural constraint that no process may access the share for reading or writing while another process is in the act of writing to it. (In particular, it is allowed for two or more readers to access the share at the same time.)

Cita de: wikipedia
La seguridad en hilos es un concepto de programación aplicable en el contexto de los programas multihilos. Una pieza de código es segura en cuanto a los hilos si funciona correctamente durante la ejecución simultánea de múltiples hilos. En particular, debe satisfacer la necesidad de que múltiples hilos accedan a los mismos datos compartidos, y la necesidad de que una pieza compartida de datos sea accedida por solo un hilo en un momento dado.

Saludos.
66  Sistemas Operativos / Windows / Re: Windows 8, mi punto de vista... en: 22 Enero 2014, 16:14 pm
Yo lo tengo en mi portatil y en mi desktop, en ambas la 8.1.

Diseño simple, limpio y elegante. Mi estilo  ;D

Saludos.
67  Foros Generales / Foro Libre / Re: Marianas Web en: 20 Enero 2014, 19:45 pm
Gran explicación @drvy, la verdad que existe muchas supersticiones sobre la deep web, como los super hackers y eso, pero es mas ignorancia que otra cosa. Ya que si llevamos todo al contexto técnico, tendremos una idea de como funciona...

Saludos.
68  Programación / Java / Re: Codigo en Java que no hace lo que deberia en: 19 Enero 2014, 22:53 pm
Fixed

Código
  1. public class Hilo extends Thread {
  2. private int tipoHilo;
  3. private static Integer n = new Integer(0);
  4. private int nVueltas;
  5.  
  6. public Hilo(int nVueltas, int tipoHilo) {
  7. this.nVueltas = nVueltas;
  8. this.tipoHilo = tipoHilo;
  9. }
  10.  
  11. public void run() {
  12.  
  13. synchronized (n) {
  14.  
  15. switch (tipoHilo) {
  16. case 0:
  17. for (int i = 0; i < nVueltas; i++)
  18. n = n + 1;
  19.  
  20. ;
  21. break;
  22. case 1:
  23. for (int i = 0; i < nVueltas; i++)
  24. n = n - 1;
  25. ;
  26. break;
  27. }
  28. }
  29. }
  30.  
  31. public static void main(String[] args) throws Exception {
  32. Hilo p = new Hilo(10000, 0);
  33. Hilo q = new Hilo(10000, 1);
  34. p.start();
  35. q.start();
  36. p.join();
  37. q.join();
  38. System.out.println(n);
  39. }
  40.  
  41. }
  42.  

La razón porque al principio no funcionaba es porque habías puesto el keyword synchronized dentro del un loop. Cuando se iniciaba un ciclo en el loop, uno de los 2 thread tomaba el lock y el otro esperaba a que liberen el lock.

El problema esta en que el lock se libera cuando termina cada ciclo (son 10,000 ciclos como haz indicado), y puede pasar 2 cosas:
  • El thread que habia tomado el lock toma el lock de nuevo
  • El thread que estaba esperando que liberen el lock toma el lock.

Por lo tanto, en un momento la variable se puede incrementar y en el siguiente puede que disminuya, y en el siguiente puede incrementarse o disminuirse, y asi.

Ahora al poner el keyword al inicio de todo el metodo, el lock se libera solo cuando el metodo se termine de ejecutar, y cuando se termina de ejecutar, entonce el segundo thread puede tomar el lock ya que se ha liberado.

Saludos.

69  Programación / Desarrollo Web / Re: Error Java EE/Eclipse/Glassfish: domain.xml is not a valid domain en: 14 Enero 2014, 03:47 am
Lo mejor que puedes hacer es intentar crear otro dominio utilizando asadmin y luego configurarlo de nuevo con eclipse haber si funciona con el nuevo dominio. Si te da el mismo error,  prueba dándole permiso todos los permisos (777) al dominio nuevo y todos sus archivos y sub directorios (chmod -R 777 domain).

Saludos.
70  Seguridad Informática / Bugs y Exploits / Re: Como buscar vulnerabilidades web en: 13 Enero 2014, 01:19 am
La clave esta en la data que recibe la aplicación proveniente del usuario. Tienes que buscar en que parte de la aplicación utiliza la data que envía el usuario y entender como se maneja dicha data. Y luego con creatividad y lógica podrás sacar algún vector de ataque.

Saludos.
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 111
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines