Tutorial EJB y JPA
http://www.davidmarco.es/archivo/tutorial-ejb31
http://www.davidmarco.es/archivo/tutorial-jpa20

Kaledo Art
he wasn't even looking at me and he found me
One Nice Bug Per Day
Cosmic Funnies
"I'm Dorothy Gale from Kansas"
noise dept.
tumblr dot com


JBB: An Artblog!


blake kathryn
we're not kids anymore.

titsay

⁂
taylor price
dirt enthusiast
i don't do bad sauce passes
AnasAbdin

seen from Brazil
seen from Romania

seen from United States

seen from United States

seen from United Kingdom
seen from United Kingdom

seen from United Kingdom
seen from Netherlands
seen from Türkiye
seen from T1

seen from Maldives

seen from South Africa

seen from United States
seen from Egypt

seen from South Korea
seen from Netherlands

seen from Malaysia

seen from Colombia
seen from Germany

seen from Netherlands
@conjava
Tutorial EJB y JPA
http://www.davidmarco.es/archivo/tutorial-ejb31
http://www.davidmarco.es/archivo/tutorial-jpa20

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
ya no aprendiste nada mas? ya que dejaste de publicar cosas
De momento no, porque he dejado de trabajar con java y apenas lo utilizo. Pero alguna entrada nueva caerá, espero que en no mucho tiempo
Servlet: download con MultiAction de Spring
La descarga de fichero utilizando el controlador MutiActionController se divide en tres pasos:
Implementar los archivos web.xml y *-servlet.xml tal y como se explica en el artículo anterior
Definir la configuración de la salida: longitud del fichero, el tipo de fichero, el tipo de contenido, etc
Copiar el fichero sobre la salida.
import org.springframework.util.FileCopyUtils; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MultipartServlet extends MultiActionController { public ModelAndView download(HttpServletRequest request, HttpServletResponse response) { File file = new File(FILEPATH); response.setContentLength((int) file.length()); response.setContentType("application/zip"); response.setHeader("Content-Disposition", "attachment; filename=\"" + file.getName() + "\""); try { InputStream input = new FileInputStream(file); OutputStream output = response.getOutputStream(); FileCopyUtils.copy(input, output); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }
La implementación de FileCopyUtils es equivalente a la siguiente:
byte[] buffer = new byte[4096]; int read; while ((read = input.read(buffer)) != -1) { output.write(buffer, 0, read); } input.close(); output.close();
Servlet: MultiAction de Spring
Un servlet MultiAction permite ejecutar distintos métodos según la dirección introducida. Estos servlets pertenecen al módulo MVC de Spring.
A continuación se detalla la implementación de un servlet multiaction.
En primer lugar hay que definir el servlet en el fichero web.xml:
<servlet> <servlet-name>multiaction</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>multiaction</servlet-name> <url-pattern>/multiaction/*</url-pattern> </servlet-mapping>
Las etiquetas definidas son las siguientes:
servlet-name: nombre del servlet.
servlet-class: clase Spring que implementa el servlet.
load-on-startup: indica si el servlet debe ser iniciado al arrancar la aplicación. Si el número es >=0 el servlet debe iniciarse cuando la aplicación es desplegada. Un servlet con un número menor es desplegado antes que uno con un número mayor. Si el número es negativo el servlet será desplegado cuando lo elija el contenedor.
url-pattern: patrón que debe de cumplir la URL para que se ejecute el servlet.
A continuación se define el archivo del servlet. Tiene la forma servlet_name-servlet.xml (en este caso multiaction-servlet.xml) y está en el mismo directorio que web.xml.
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="*">multipartServlet</prop> </props> </property> </bean> <bean id="multipartServlet" class="com.danielcorroto.servlets.MultipartServlet"> <property name="methodNameResolver"> <bean class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver"> <property name="mappings"> <props> <prop key="/myaction.html"> action </prop> <prop key="/otheraction.html"> action2 </prop> </props> </property> </bean> </property> </bean>
Se definen 2 beans:
mappings: donde se mapea qué bean se asigna a cada URL.
multipartServlet: donde se mapea qué método de la clase se asigna a cada URL.
A continuación se crea la clase del servlet:
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; public class MultipartServlet extends MultiActionController { public ModelAndView action(HttpServletRequest request, HttpServletResponse response) { return null; } public ModelAndView action2(HttpServletRequest request, HttpServletResponse response) { return null; } }
Se debe crear un método con los atributos HttpServletRequest y HttpServletResponse por cada método indicado en el bean multipartServlet
La dependencia de maven para la clase MultiActionController es:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.0.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.0.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.0.7.RELEASE</version> </dependency>
Servlet: parámetros
Los métodos que implementan los servlets tienen dos parámetros: un objeto HttpServletRequest y un objeto HttpServletResponse.
HttpServletRequest: representa la petición HTTP al servidor.
Alguno de los métodos interesantes de esta clase son:
getCookies(): devuelve un array de Cookie con todas las cookies enviadas por el cliente.
getSession(): devuelve el objeto HttpSession de la sesión actual.
getParameter(String): devuelve el valor del parámetro indicado que ha sido pasado en la solicitud del cliente.
HttpServletRequest (Java EE 6)
Ejemplo:
// Almacena las cookies Cookie[] cookies = request.getCookies(); // Almacena la sesión HttpSession session = request.getSession(); // Obtiene el valor del parámetro "id" String param = request.getParameter("id");
HttpServletResponse: representa la respuesta HTTP del servidor.
Alguno de los métodos interesantes de esta clase son:
addCookie(Cookie): añade una cookie a la respuesta.
getOutputStream(): devuelve un objeto ServletOutputStream que permite escribir datos en formato binario en la salida (por ejemplo para descargar un fichero)
getWriter(): devuelve un objeto PrintWriter que permite escribir texto en la salida (por ejemplo para escribir una página web).
setContentLength(int): indica el tamaño de la salida en bytes.
setContentType(String): indica el tipo MIME de la salida. Algunos tipos:
(.avi) Vídeo avi: video/avi
(.bmp) Imagen bmp: image/bmp
(.doc) Documento word: application/msword
(.docx) Documento word 2007: application/vnd.openxmlformats-officedocument.wordprocessingml.document
(.exe) Ejecutable exe: application/octet-stream
(.gzip) Archivo comprimido gzip: application/x-gzip
(.html) Documento web html: text/html
(.jpg) Imagen jpg/jpeg: image/jpeg
(.mov) Video quicktime: video/quicktime
(.mp3) Audio mp3: audio/mpeg3
(.mp4) Vídeo mp4: video/mp4
(.mpg) Vídeo mpg/mpeg: video/mpeg
(.odp) Presentación open document: application/vnd.oasis.opendocument.presentation
(.ods) Hoja de cálculo open documento: application/vnd.oasis.opendocument.spreadsheet
(.odt) Documento de texto open document: application/vnd.oasis.opendocument.text
(.png) Imagen png: image/png
(.ppt) Presentación powerpoint: application/mspowerpoint
(.pptx) Presentación powerpoint 2007: application/vnd.openxmlformats-officedocument.presentationml.presentation
(.tgz) Archivo comprimido tgz: application/x-compressed
(.txt) Archivo de texto plano: text/plain
(.xls) Hoja de cálculo excel: application/excel
(.xlsx) Hoja de cálculo excel 2007: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
(.zip) Archivo comprimido zip: application/zip
setHeader(String, String): indica el nombre y el valor (respectivamente) de la cabecera.
HttpServletResponse (Java EE 6)
Ejemplo:
// Introduce una nueva cookie response.addCookie(new Cookie("key", "value")); // Genera un archivo ServletOutputStream output = response.getOutputStream(); byte[] b = new byte[1024]; output.write(b); // Genera una página web PrintWriter writer = response.getWriter(); writer.print("<html></html>"); // Establece el tamaño de la salida en 1024 bytes response.setContentLength(1024); // Estabece el tipo de salida como documento html response.setContentType("text/html"); // Establece que la salida es un archivo a ser descargado response.setHeader("Content-Disposition", "attachment; filename=\"name\"");

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Servlet: introducción
Un servlet es una clase Java que amplía la capacidad de un servidor.
A continuación se detalla la implementación de un servlet simple.
En primer lugar hay que definir el servlet en el fichero web.xml:
<servlet> <servlet-name>simple</servlet-name> <servlet-class>SimpleServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>simple</servlet-name> <url-pattern>/simple/*</url-pattern> </servlet-mapping>
Las etiquetas definidas son las siguientes:
servlet-name: nombre del servlet.
servlet-class: clase que implementa el servlet.
load-on-startup: indica si el servlet debe ser iniciado al arrancar la aplicación. Si el número es >=0 el servlet debe iniciarse cuando la aplicación es desplegada. Un servlet con un número menor es desplegado antes que uno con un número mayor. Si el número es negativo el servlet será desplegado cuando lo elija el contenedor.
url-pattern: patrón que debe de cumplir la URL para que se ejecute el servlet.
A continuación se crea la clase del servlet:
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SimpleServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
El método doGet() se ejecuta cuando se ha dirigido desde un enlace o un formulario con method="get".
El método doPost() se ejecuta cuando se ha dirigido desde un formulario con method="post".
La dependencia de maven de la clase HttpServlet es:
<dependency> <groupId>org.apache.felix</groupId> <artifactId>javax.servlet</artifactId> <version>1.0.0</version> </dependency>
Leer ficheros de recursos
Se puede adjuntar a los proyectos ficheros binarios o en texto plano que tras la compilación del archivo a .jar queden dentro del empaquetado y puedan ser accedidos por el programa que hemos creado.
La ruta de estos ficheros es relativa a la que ocupen dentro del proyecto. Para definir esta ruta se puede utilizar la relativa (a la clase que está accediendo al fichero) o la absoluta. Si por ejemplo un fichero se encuentra en el paquete com.conjava.mifichero.txt, su path sería /com/conjava/mifichero.txt
Si ejecutamos este código en Eclipse nos quedaría que el fichero estaría en "{PROJECT_PATH}/bin/com/conjava/mifichero.txt". Si lo ejecutásemos en línea de comandos nos quedaría en "rsrc:/com/conjava/mifichero.txt"
El siguiente código lee un fichero de texto plano y lo muestra en la consola:
String filename = ""; InputStream is = this.getClass().getResourceAsStream(filename); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String strLine; while ((strLine = br.readLine()) != null) { System.out.println(strLine); }
Escritura de ficheros binarios
Para la escritura de ficheros binarios en java se necesita la siguiente clase:
FileOutputStream: stream para escribir datos en un fichero.
El siguiente código escribe un array de 1024 bytes en el fichero filename:
String filename = ""; OutputStream out = new FileOutputStream(finelame); byte[] totalBytes = new byte[1024]; out.write(totalBytes); out.close();
Para escribir una parte del array de ficheros hay que utilizar el método:
write(array, offset, length);
Donde array es el array que contiene los datos, offset es el byte inicial del array por el que se va a empezar a escribir y length es la longitud de los datos que se van a escribir
Lectura de ficheros binarios
Para la lectura de ficheros en java se necesitan las siguientes clases:
BufferedInputStream: almacena en un buffer la entrada de datos
DataInputStream: lee datos primivitos de java.
FileInputStream: obtiene los bytes de entrada del fichero.
Código que lee un archivo binario y lo almacena entero en memoria:
String filename = ""; File file = new File(filename); byte [] data = new byte[(int)file.length()]; DataInputStream dis = new DataInputStream(new FileInputStream(file)); dis.readFully(data); dis.close();
Código que lee un archivo binario por secciones de 4096 byes:
int size = 4096; String filename = ""; BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename)); byte[] buffer = new byte[size]; int n = in.read(buffer, 0, size); while (n >= 0) { n = in.read(buffer, 0, size); } in.close();
Números primos
El siguiente es un array con los números primos menores que 10000. Esta lista puede ser utilizada para comprobar si un número, menor que 100 millones, es primo.
private static final int[] PRIMES = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, 7927, 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, 8117, 8123, 8147, 8161, 8167, 8171, 8179, 8191, 8209, 8219, 8221, 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, 8293, 8297, 8311, 8317, 8329, 8353, 8363, 8369, 8377, 8387, 8389, 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, 8513, 8521, 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, 8599, 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, 8681, 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, 8747, 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, 8837, 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, 8933, 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, 9011, 9013, 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, 9127, 9133, 9137, 9151, 9157, 9161, 9173, 9181, 9187, 9199, 9203, 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, 9293, 9311, 9319, 9323, 9337, 9341, 9343, 9349, 9371, 9377, 9391, 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, 9461, 9463, 9467, 9473, 9479, 9491, 9497, 9511, 9521, 9533, 9539, 9547, 9551, 9587, 9601, 9613, 9619, 9623, 9629, 9631, 9643, 9649, 9661, 9677, 9679, 9689, 9697, 9719, 9721, 9733, 9739, 9743, 9749, 9767, 9769, 9781, 9787, 9791, 9803, 9811, 9817, 9829, 9833, 9839, 9851, 9857, 9859, 9871, 9883, 9887, 9901, 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973 };
Algoritmo para comprobar si un número es primo:
public boolean isPrime(int x) { if (x < 2 || (x > 2 && (x & 0x1) == 0)) { return false; } else if (x == 2) { return true; } int sqrt = (int) Math.sqrt(x) + 1; for (int i = 0; i < PRIMES.length; i++) { if (PRIMES[i] > sqrt) { return true; } if (x % PRIMES[i] == 0) { return false; } } return true; }

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Cálculo de la longitud de un entero
Debido a que los ordenadores no utilizan una base decimal, sino una base binaria, es complejo y no trivial el cálculo de la longitud de un número en base 10.
Los siguientes métodos calculan la longitud de un número no negativo utilizando distintos algoritmos.
Método 1: se cuentan una a una las cifras hasta que el número es 0.
private int method1(int x) { int cont = 0; while (x > 0) { x /= 10; cont++; } return cont < 1 ? 1 : cont; }
Método 2: utilizado en la clase Integer para obtener la longitud de un número.
final static int[] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, Integer.MAX_VALUE }; private int method2(int x) { for (int i = 0;; i++) if (x <= sizeTable[i]) return i + 1; }
Método 3: el más sencillo de implementar.
private int method3(int x) { return x < 0 ? Integer.toString(x).length() - 1 : Integer.toString(x).length(); }
Método 4: utilizado en la clase Long para obtener la longitud de un número. Similar al Método 1.
private int method4(int x) { int p = 10; for (int i = 1; i < 10; i++) { if (x < p) return i; p = 10 * p; } return 10; }
Tabla de datos con el menor tiempo que ha tomado el cálculo en cada una de las pruebas:
Gráfica de datos (la línea del Método 1 es la misma que la del Método 4):
Como se puede comprobar computacionalmente hay poca diferencia entre los métodos 1, 2 y 4. Sin embargo el método 3 es más de 10 veces más costoso pero también más sencillo de implementar.
Por otro lado se nota que crece el coste de cálculo en los métodos 1 y 4 cuando el número crece mucho. Además ambos algoritmos son casi idénticos por lo que el coste de los mismos también es casi idéntico.
Operaciones chr() y ord()
Para transformar el código ASCII en un carácter hay que castear el entero sobre una variable de tipo char.
char c = (char)65;
Dará como resultado c = 'A' ya que el carácter 65 es 'A'.
En caso de querer transformar un carácter a su código ASCII hay que castear el carácter sobre una variable de tipo entero.
int i = (int)'B';
Dará como resultado i = 66 ya que el carácter 66 es 'B'.
Empezando con la GUI
Java Swing es una biblioteca gráfica que incluye widgets
Ejemplo de aplicación:
// Estilo propio del sistema try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } // Da tamaño al frame y lo muestra setSize(WIDTH, HEIGHT); setVisible(true); // Cerrar aplicación setDefaultCloseOperation(EXIT_ON_CLOSE);
Hola! Estoy haciendome el tumblr codigo a codigo, sin utilizar ningún tema... Pero tengo un problema, quiero poner un visualizador de imágenes Java y para ello necesito crear una carpeta donde subir los archivos. Es posible realizar esta operación con tumblr?
No lo sé, pero no creo que se pueda porque tumblr no es un servicio de hosting, sino un microblog.
La única opción que conozco para subir imágenes en tumblr es hacer click en el botón "Subir foto" que aparece cuando estás redactando un escrito o hacer click en el botón foto cuando estás en el menú de administración de tu cuenta tumblr. Pero estas imágenes se suben donde tumblr quiere y no en la carpeta que tú quieras.
Un saludo
Ejecución de un proceso externo
En Java es posible ejecutar una aplicación externa alojada en el Sistema Operativo. Para ello se crea un objeto de la clase abstracta Process. Esta clase crea procesos nativos y permite controlarlos y obtener información de los mismos.
Los métodos que crean estos procesos nativos son ProcessBuilder.start() y Runtime.exec.
En el caso de ejecutar un comando se puede obtener la salida del mismo (tanto la salida estándar como la salida de error) a través de un Stream.
Ejemplo de ejecución del comando "command param":
// Definición del comando Process process = Runtime.getRuntime().exec("command param"); // Definición de los buffers BufferedReader bufOut = new BufferedReader(new InputStreamReader(process.getInputStream())); BufferedReader bufError = new BufferedReader(new InputStreamReader(process.getErrorStream())); // Lectura del buffer String read; while ((read = bufOut.readLine()) != null) { System.out.println(read); }

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Listar directorios
El listado de los ficheros se realiza mediante el método list() de la clase File.
Cada elemento de la lista aparecerá sólo con el nombre del fichero, no la ruta absoluta. Además no se asegura ningún orden en el array.
Ejemplo:
// Ruta del directorio String path = ""; File dir = new File(path); // Lista de ficheros y directorios String[] children = dir.list();
Escritura de ficheros de texto
Para la escritura de ficheros en java se necesitan las siguientes clases:
FileWriter: clase que escribe ficheros de caracteres.
BufferedReader: escribe texto de un objeto que lee streams de caracteres
Código que lee un fichero y lo muestra en la consola:
// Ruta del fichero String path = ""; // Definición del reader FileWriter fw = new FileWriter(path); BufferedWriter bw = new BufferedWriter(fw); // Escritura del fichero bw.write("¡Hola mundo!"); // Cerrado del reader bw.close();