`
wxb880114
  • 浏览: 673297 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
IOC死锁 【Spring】IOC容器并发条件下,可能发生死锁
package com.alibaba.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DeadLockTest {

    ClassPathXmlApplicationContext context = null;

    public void startContext() {
        context = new ClassPathXmlApplicationContext();
        context.setConfigLocation("spring/bean/mybeans.xml");
        context.refresh();
    }

    public void getBean() {
        new Thread(new GetBean()).start();
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        DeadLockTest t = new DeadLockTest();
        //get bean 工作线程
        t.getBean();
        //容器启动主线程
        t.startContext();
    }
     //get bean 工作线程
    class GetBean implements Runnable {

        public void run() {
            try {
                Thread.sleep(10000);
                MyBean myBean = (MyBean) context.getBean("myBean");
                myBean.getOtherBean().sayHello();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            // TODO Auto-generated method stub

        }

    }

}
sha1加密 SHA1 加密源码
public class SHA1 {  

    private static final boolean hexcase = false;  
    private static final int chrsz = 8;  
 
    // 得到字符串SHA-1值的方法  
    public static String hex_sha1(String s) {  
        s = (s == null) ? "" : s;  
        return binb2hex(core_sha1(str2binb(s), s.length() * chrsz));  
    }  
 
    private static String binb2hex(int[] binarray) {  
        String hex_tab = hexcase ? "0123456789abcdef" : "0123456789abcdef";  
        String str = "";  
 
        for (int i = 0; i < binarray.length * 4; i++) {  
            char a = (char) hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xf);  
            char b = (char) hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xf);  
            str += (new Character(a).toString() + new Character(b).toString());  
        }  
        return str;  
    }  
 
    private static String binb2str(int[] bin) {  
        String str = "";  
        int mask = (1 << chrsz) - 1;  
 
        for (int i = 0; i < bin.length * 32; i += chrsz) {  
            str += (char) ((bin[i >> 5] >>> (24 - i % 32)) & mask);  
        }  
        return str;  
    }  
 
    private static int[] core_sha1(int[] x, int len) {  
        int size = (len >> 5);  
        x = strechbinarray(x, size);  
        x[len >> 5] |= 0x80 << (24 - len % 32);  
        size = ((len + 64 >> 9) << 4) + 15;  
        x = strechbinarray(x, size);  
        x[((len + 64 >> 9) << 4) + 15] = len;  
 
        int[] w = new int[80];  
        int a = 1732584193;  
        int b = -271733879;  
        int c = -1732584194;  
        int d = 271733878;  
        int e = -1009589776;  
 
        for (int i = 0; i < x.length; i += 16) {  
            int olda = a;  
            int oldb = b;  
            int oldc = c;  
            int oldd = d;  
            int olde = e;  
 
            for (int j = 0; j < 80; j++) {  
                if (j < 16) {  
                    w[j] = x[i + j];  
                } else {  
                    w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);  
                }  
 
                int t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j)));  
 
                e = d;  
                d = c;  
                c = rol(b, 30);  
                b = a;  
                a = t;  
            }  
 
            a = safe_add(a, olda);  
            b = safe_add(b, oldb);  
            c = safe_add(c, oldc);  
            d = safe_add(d, oldd);  
            e = safe_add(e, olde);  
        }  
 
        int[] retval = new int[5];  
 
        retval[0] = a;  
        retval[1] = b;  
        retval[2] = c;  
        retval[3] = d;  
        retval[4] = e;  
 
        return retval;  
    }  
 
    private static int rol(int num, int cnt) {  
        return (num << cnt) | (num >>> (32 - cnt));  
    }  
 
    private static int safe_add(int x, int y) {  
        int lsw = (int) (x & 0xffff) + (int) (y & 0xffff);  
        int msw = (x >> 16) + (y >> 16) + (lsw >> 16);  
 
        return (msw << 16) | (lsw & 0xffff);  
    }  
 
    private static int sha1_ft(int t, int b, int c, int d) {  
        if (t < 20)  
            return (b & c) | ((~b) & d);  
 
        if (t < 40)  
            return b ^ c ^ d;  
 
        if (t < 60)  
            return (b & c) | (b & d) | (c & d);  
 
        return b ^ c ^ d;  
    }  
 
    private static int sha1_kt(int t) {  
        return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514;  
    }  
 
    public static String str_sha1(String s) {  
        s = (s == null) ? "" : s;  
 
        return binb2str(core_sha1(str2binb(s), s.length() * chrsz));  
    }  
 
    private static int[] str2binb(String str) {  
        str = (str == null) ? "" : str;  
 
        int[] tmp = new int[str.length() * chrsz];  
        int mask = (1 << chrsz) - 1;  
 
        for (int i = 0; i < str.length() * chrsz; i += chrsz) {  
            tmp[i >> 5] |= ((int) (str.charAt(i / chrsz)) & mask) << (24 - i % 32);  
        }  
 
        int len = 0;  
        for (int i = 0; i < tmp.length && tmp[i] != 0; i++, len++)  
            ;  
 
        int[] bin = new int[len];  
 
        for (int i = 0; i < len; i++) {  
            bin[i] = tmp[i];  
        }  
 
        return bin;  
    }  
 
    private static int[] strechbinarray(int[] oldbin, int size) {  
        int currlen = oldbin.length;  
 
        if (currlen >= size + 1) {  
            return oldbin;  
        }  
 
        int[] newbin = new int[size + 1];  
        for (int i = 0; i < size; newbin[i] = 0, i++)  
            ;  
 
        for (int i = 0; i < currlen; i++) {  
            newbin[i] = oldbin[i];  
        }  
 
        return newbin;  
    }  
} 
Log4j 基本原理 Log4j 基本原理
package com.javaeye.renny.log4j;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class SimpleTest {
       static Logger logger = Logger.getLogger(SimpleTest.class.getName());

       public static void main(String[] args) {

              //利用log4j系统提供的配置来进行配置
             BasicConfigurator.configure();
         
              //利用自定义的配置文件来进行配置
              //PropertyConfigurator.configure("log4j.properties");
      
              logger.debug("debug of logger");
              logger.info("info of logger");
              logger.warn("warn of logger");
              logger.error("error of logger");
              logger.fatal("fatal of logger");
       }
}
Mac地址 Servlet获取客户端ip地址和mac地址
package com.babyDuncan.java;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ipServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String ip = getRemoteAddress(request);
		System.out.println(ip);
		System.out.println(getMACAddress(ip));

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the POST method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	public String getRemoteAddress(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");
		if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {
			ip = request.getHeader("Proxy-Client-IP");
		}
		if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {
			ip = request.getHeader("WL-Proxy-Client-IP");
		}
		if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {
			ip = request.getRemoteAddr();
		}
		return ip;
	}

	public String getMACAddress(String ip) {
		String str = "";
		String macAddress = "";
		try {
			Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);
			InputStreamReader ir = new InputStreamReader(p.getInputStream());
			LineNumberReader input = new LineNumberReader(ir);
			for (int i = 1; i < 100; i++) {
				str = input.readLine();
				if (str != null) {
					if (str.indexOf("MAC Address") > 1) {
						macAddress = str.substring(
								str.indexOf("MAC Address") + 14, str.length());
						break;
					}
				}
			}
		} catch (IOException e) {
			e.printStackTrace(System.out);
		}
		return macAddress;
	}
}

GET请求 HttpClient 用于HTTP GET 请求
public class TestHttpGet {

	public String executeGet(String url) throws Exception {
		BufferedReader in = null;

		String content = null;
		try {
			// 定义HttpClient
			HttpClient client = new DefaultHttpClient();
			// 实例化HTTP方法
			HttpGet request = new HttpGet();
			request.setURI(new URI(url));
			HttpResponse response = client.execute(request);

			in = new BufferedReader(new InputStreamReader(response.getEntity()
					.getContent()));
			StringBuffer sb = new StringBuffer("");
			String line = "";
			String NL = System.getProperty("line.separator");
			while ((line = in.readLine()) != null) {
				sb.append(line + NL);
			}
			in.close();
			content = sb.toString();
		} finally {
			if (in != null) {
				try {
					in.close();// 最后要关闭BufferedReader
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
			return content;
		}
	}

	

}
SpringEJB Spring2.X+EJB3.X(一)
package com.ejb3.service;

import com.ejb3.domain.Customer;   
import java.util.Collection;   
import javax.ejb.Stateless;   
import javax.jws.WebService;   
import javax.jws.soap.SOAPBinding;   
import javax.persistence.EntityManager;   
import javax.persistence.PersistenceContext;   
import javax.persistence.Query;   
import javax.jws.WebMethod;   
   
@Stateless
@Remote( { CustomerService.class })  
public class CustomerServiceImpl implements CustomerService {   
    //unitName是指你数据库的用户名,我用的是oracle10g,如果是别的数据库就是数据库名称
    @PersistenceContext(unitName="ERP")   
    private EntityManager manager;   
  
        public Customer create(Customer info) {   
        this.manager.persist(info);   
        return info;   
    }   
  
    
    public Customer update(Customer info) {   
        return this.manager.merge(info);   
    }   
  
    
    public void remove(Long customerId) {   
        this.manager.remove(this.manager.getReference(Customer.class, customerId));   
    }   
  
    public Collection<Customer> findAll() {   
        Query query = this.manager.createQuery("SELECT c FROM Customer c");   
        return query.getResultList();   
    }   
  
        public Customer[] findAllAsArray() {   
        Collection<Customer> collection = findAll();   
        return (Customer[]) collection.toArray(new Customer[collection.size()]);   
    }   
  
        public Customer findByPrimaryKey(Long customerId) {   
        return (Customer) this.manager.find(Customer.class, customerId);   
    }   
按行读取txt文件
package test
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
public class ReadSelectedLine{
    // 读取文件指定行。
    static void readAppointedLineNumber(File sourceFile, int lineNumber)
            throws IOException {
        FileReader in = new FileReader(sourceFile);
        LineNumberReader reader = new LineNumberReader(in);
        String s = "";
        if (lineNumber <= 0 || lineNumber > getTotalLines(sourceFile)) {
            System.out.println("不在文件的行数范围(1至总行数)之内。");
            System.exit(0);
        }
        int lines = 0;
        while (s != null) {
            lines++;
            s = reader.readLine();
            if((lines - lineNumber) == 0) {
             System.out.println(s);
             System.exit(0);
            }
        }
        reader.close();
        in.close();
    }
    // 文件内容的总行数。
    static int getTotalLines(File file) throws IOException {
        FileReader in = new FileReader(file);
        LineNumberReader reader = new LineNumberReader(in);
        String s = reader.readLine();
        int lines = 0;
        while (s != null) {
            lines++;
            s = reader.readLine();
        }
        reader.close();
        in.close();
        return lines;
    }
    
    /**
     * 读取文件指定行。
     */
    public static void main(String[] args) throws IOException {
        // 指定读取的行号
        int lineNumber = 2;
        // 读取文件
        File sourceFile = new File("D:/java/test.txt");
        // 读取指定的行
        readAppointedLineNumber(sourceFile, lineNumber);
        // 获取文件的内容的总行数
        System.out.println(getTotalLines(sourceFile));
    }
}
一二维数组互换
public class TestConvertArray {

	public static void main(String[] args) {
		
		int[] preOneDegree = {1,2,3,4,5,6};
		oneDegreeToTwoDegree(preOneDegree,3,2);
		twoDegreeConvertLeft90(preOneDegree,2,3);
		twoDegreeConvertRight90(preOneDegree,2,3);
	}
	
	//一维转二维
	private static void oneDegreeToTwoDegree(int[] oneDegree,int row,int col){
		
		int k = 0;
		int[][] twoDegree = new int[row][col];
		for(int i=0;i<row;i++){
			for(int j=0;j<col;j++){
				twoDegree[i][j] = oneDegree[k];
				k++;
			}
		}
		display(twoDegree,row,col);
	}
	
	//二维一维
	private static void twoDegreeToOneDegree(int[][] twoDegree,int row,int col){
		int[] oneDegree = new int[row*col];
		int k = 0;
		for(int i=0;i<row;i++){
			for(int j=0;j<col;j++){
				oneDegree[k] = twoDegree[i][j];
				k++;
			}
		}
	}
	
	//左转90度
	private static void twoDegreeConvertLeft90(int[] oneDegree,int row,int col){
		
		int k = 0;
		int[][] convert90Degree = new int[row][col];
		for(int i=0;i<col;i++){
			for(int j=row-1;j>=0;j--){
				convert90Degree[j][i] = oneDegree[k];
				k++;
			}
		}
		display(convert90Degree, row, col);
	}
	
	//右转90度
	private static void twoDegreeConvertRight90(int[] oneDegree,int row,int col){
		
		int k = 0;
		int[][] convert90Degree = new int[row][col];
		for(int i=col-1;i>=0;i--){
			for(int j=row-1;j>=0;j--){
				convert90Degree[j][i] = oneDegree[k];
				k++;
			}
		}
		display(convert90Degree, row, col);
	}
	
	//打印
	private static void display(int[][] arr,int row,int col){
		for(int i=0;i<row;i++){
			for(int j=0;j<col;j++){
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
		System.out.println();
	}
	
}



简介:这是在Javascript中如何定义二维数组的详细页面,介绍了和javascript,有关的知识、技巧、经验,和一些javascript源码等。
在Javascript中如何定义二维数组,它的声明都有哪一些简洁的声明方法呢?下面是我收集的一些定义的方法。 
Javascript二维数组定义[一]:

JavaScript代码

    <script>     
      var   a=new   Array();     
      a[1]=new   Array(“a”,”b”);     
      </script>  

——————————————————————————–
Javascript二维数组定义[二]:

JavaScript代码

    <script   language=”JavaScript”>     
      <!–     
      var   a   =   new   Array();     
      a[0]   =   new   Array(“a”,”b”);     
      a[1]   =   new   Array(“c”,”d”);     
      alert(a[1][1]);     
      //–>     
      </script>   

——————————————————————————–
Javascript二维数组定义[三]:?

JavaScript代码

    var   arr   =   new   Array([1,2,3],[4,5,6],[7,8,9,10]);     
      for(var   e   in   arr)   alert(arr[e]);     
       

——————————————————————————–
Javascript二维数组定义[四]:?
先声明一个数组:  
 
JavaScript代码

    var a=new   arrray(first_num);     
      a[first_num]=new   array(number);     
      a[first_num]=new   array(number);     
       
      //first_name是维数,     
      //number可以根据你的需要来了。     
      //这样可以创造出多维数组了。    
    

——————————————————————————–
Javascript二维数组定义[五] ?

JavaScript代码

    <script>     
      T=new   Array;     
      T[1]=new   Array;     
      T[1][0]=”a”;     
      T[1][1]=”b”;     
      alert(T[1][0]);     
      </script>  

——————————————————————————–
Javascript二维数组定义[六]?

JavaScript代码

    <script>     
      var   result   =   new   Array(new   Array(“1″,”1111″),     
            new   Array(“2″,”2222″),   new   Array(“3″,”3333″),     
            new   Array(“4″,”4444″));     
      for(var   i=0;i<   result.length;i++){     
      alert(result[i][0]+”|”+result[i][1]);     
      }     
      </script>
Global site tag (gtag.js) - Google Analytics