Archive目录:2013_11

以下是与Archive “2013_11” 相关联的文章

Java编程中"为了性能"尽量要做到的一些地方


下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。

1. 尽量在合适的场合使用单例
使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:
第一,控制资源的使用,通过线程同步来控制资源的并发访问;
第二,控制实例的产生,以达到节约资源的目的;
第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。

分享 / 2013-11-29

mysql 按照月份对数据进行分组或者是排序

select  DATE_FORMAT(releaseTime,'%Y-%m'),count(DATE_FORMAT(releaseTime,'%Y-%m')) from logsinfo group by DATE_FORMAT(releaseTime,'%Y-%m') order by logsinfoid desc


 

使用mysql 自己提供的 DATE_FORMAT 可以进行的排序。  

笔记 / 2013-11-26

Java 进行MD5的加密

package util;

import java.security.MessageDigest;

public class Md5Util {

	public final static String MD5(String pwd) {
		
		//用于加密的字符
		char md5String[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
				'A', 'B', 'C', 'D', 'E', 'F' };
		try {
			//使用平台的默认字符集将此 String 编码为 byte序列,并将结果存储到一个新的 byte数组中
			byte[] btInput = pwd.getBytes();
			
			// 获得指定摘要算法的 MessageDigest对象,此处为MD5
			//MessageDigest类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。
			//信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。 
			MessageDigest mdInst = MessageDigest.getInstance("MD5");
			//System.out.println(mdInst);  
			//MD5 Message Digest from SUN, <initialized>
			
			//MessageDigest对象通过使用 update方法处理数据, 使用指定的byte数组更新摘要
			mdInst.update(btInput);
			//System.out.println(mdInst);  
			//MD5 Message Digest from SUN, <in progress>
			
			// 摘要更新之后,通过调用digest()执行哈希计算,获得密文
			byte[] md = mdInst.digest();
			//System.out.println(md);
			
			// 把密文转换成十六进制的字符串形式
			int j = md.length;
			//System.out.println(j);
			char str[] = new char[j * 2];
			int k = 0;
			for (int i = 0; i < j; i++) {   //  i = 0
				byte byte0 = md[i];  //95
				str[k++] = md5String[byte0 >>> 4 & 0xf];    //    5  
				str[k++] = md5String[byte0 & 0xf];   //   F
			}
			//返回经过加密后的字符串
			return new String(str);
			
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
	public static void main(String[] args) {
		System.out.println(Md5Util.MD5("123456"));
		
	}
}


 

Java那些事 / 2013-11-25

jsp 静态化

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

/**
 * 将信息发布为静态页面
 * 
 * @author xchun
 * 
 */

public class Jsp2Html {
	/**
	 * 将信息转化为静态html
	 * 
	 * @param sSourceUrl
	 *            动态信息访问URL
	 * @param sDestDir
	 *            存储为静态文件的目录
	 * @param sHtmlFile
	 *            生成的静态文件名,可以按信息的唯一ID+.html命名
	 * @throws IOException
	 */
	
	public static void convert2Html(String sSourceUrl, String sDestDir,
			String sHtmlFile) throws IOException {
		int HttpResult;
		URL url = new URL(sSourceUrl);
		
		URLConnection urlconn = url.openConnection();
		urlconn.connect();
		HttpURLConnection httpconn = (HttpURLConnection) urlconn;
		HttpResult = httpconn.getResponseCode();
		
		if (HttpResult != HttpURLConnection.HTTP_OK) {
		} else {
			BufferedReader in = new BufferedReader(new InputStreamReader(urlconn.getInputStream(),"UTF-8")); 

			String inputLine;
			if (!sDestDir.endsWith("/"))
				sDestDir += "/";
			OutputStreamWriter fout = new OutputStreamWriter(new FileOutputStream(sDestDir + sHtmlFile),"utf-8"); //设置输出文件的编码。 
			
			while ((inputLine = in.readLine()) != null) {
				fout.write(inputLine);

			}
			in.close();
			fout.close();

		}

	}

	public static void main(String[] args) throws IOException {

		for(int i=1;i<10;i++)
		convert2Html(
				"http://blog.94fzb.com:8080/post/page/"+i,"F:",i+".html");

	}

}

Java那些事 / 2013-11-24