`
pouyang
  • 浏览: 313881 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
Java 简单文件读写例子
package com.poy.stream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
 * 简单文件读写例子
 * http://hi.baidu.com/zzcc_8/blog/item/32943c2a35bf0a21d52af105.html
 * @author oyprunner@163.com
 */
public class FileStream {
	public static void main(String[] args){
		FileInputStream in = null;
		FileOutputStream  out = null;
		try {
			  in = new FileInputStream("D:\\oo.txt");
			  out = new FileOutputStream("E:\\oo.txt");
			int bytesRead = -1;
			byte[] buffer=new byte[1024];   
			while ( (bytesRead = in.read(buffer)) != -1  ) {
				out.write(buffer, 0, bytesRead);
			}
			out.flush();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				in.close();
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
Java Serializable transient ObjectInputStream简单例子
package com.poy.stream;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
 * 将对象转化为文件流保存在文件中
 * 将保存起来的文件流还原成对象
 * 同样也可以将对象转换成二进制流存储在数据表中
 * @author oyprunner@163.com
 */
class Po implements Serializable {
	
	// 瞬态修饰的属性是不会被串行化的
    transient int id; 
	String name;
	
	public Po(int id ,String name) {
		this.id = id;
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

public class ObjectSerializable {
	public static void main (String[] args) throws Exception {
		// 将对象转化成流并保存在文件中
		Po po = new Po(100,"seria");
		FileOutputStream fileOutput= new FileOutputStream("D:/data.txt");
		ObjectOutputStream objectOutput = new ObjectOutputStream(fileOutput);
		objectOutput.writeObject(po);
		
		// 从文件中读取流并转化成对象,重生
		FileInputStream fileInput = new FileInputStream("D:/data.txt");
		ObjectInputStream objectInput = new ObjectInputStream(fileInput);
		Po _po = (Po)objectInput.readObject();
		// 该属性值不会被串行化,未保存下来
		System.out.println(_po.id);
		System.out.println(_po.getName());
		
		// 将对象转化成字节流,可放入数据库
		byte[] data = null;
		ByteArrayOutputStream baos=new ByteArrayOutputStream(); 
		ObjectOutputStream oos=new ObjectOutputStream(baos); 
		oos.writeObject(po); 
		data=baos.toByteArray(); 
		
		// 将字节流还原成对象
		Object obj = null;
		ByteArrayInputStream bais=null; 
		ObjectInputStream ois=null; 
		bais=new ByteArrayInputStream(data); 
		ois=new ObjectInputStream(bais); 
		obj=(Object)ois.readObject();
	}
}
Web 鼠标移动显示提示div信息
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>
	 <style>
	 .tableBorder7 {width:800px;solid; background-color: #000000;}
	 .tableBorder7 TD{font-family: 宋体;font-size: 12px;line-height : 15px ;}
	 .tableBorder7 th{background-color: #f7f7f7;color: #000000;font-size: 12px;font-weight:bold;}
	 .tableBorder7 th.th1{background-color: #6F6FFF;}
	 .titlebgcolor{background-color: #CACAFF;}
	 </style>
  <script>
	function deBug(message) {
		//alert(message);
	}
		var pltsPop = null;
		var pltsoffsetX = 10;
		var pltsoffsetY = 15;
		var pltsPopbg = "#FFFFEE";
		var pltsPopfg = "#111111";
		var pltsTitle = "";
		document.write("<div id=regDiv style=\"display: none;position: absolute; z-index:10001\"></div>");
		document.write("<iframe id=\"regIframe\" src=\"\" scrolling=\"no\" frameborder=\"no\" style=\"position:absolute; top:0px; left:0px;margin-left: 0px;margin-top: 0px; display:none;\"></iframe>");
		function initRegTip() {
			document.onmouseover = plts;
			document.onmousemove = moveToMouseLoc;
			document.onmouseout = hideIframe;
		}
		function plts() {
			deBug("onmouseover");
			var o = event.srcElement;
			if(o == null){
				return ;
			}
			if (o.inputreg != null && o.inputreg != "" && o.inputreg != "undefined") {
				o.dypop = o.inputreg;
				o.inputreg = "";
			}
			pltsPop = o.dypop;
			if (pltsPop != null && pltsPop != "" && typeof (pltsPop) != "undefined") {
				regDiv.style.left = -1000;
				regDiv.style.display = "";
				var regContent = pltsPop.replace(/\</g, "<").replace(/\>/g, ">");
				regContent = regContent.replace(/&br;br&/ig, "<br>");
				regContent = regContent.replace(/ /g, "<br>");
				regContent = regContent.replace(/ x13/g, "<br>");
				
				var re = /{(.[^{]*)}/ig;
				var caption = "详细";
				if (o.caption != undefined) {
					caption = o.caption;
				}
				if (!re.test(regContent)) {
					pltsTitle = "<font color=#ffffff>" + caption + "</font>";
				} else {
					re = /{(.[^{]*)}(.*)/ig;
					pltsTitle = regContent.replace(re, "$1") + " ";
					re = /{(.[^{]*)}/ig;
					regContent = regContent.replace(re, "");
					regContent = regContent.replace("<br>", "");
				}
					//var attr=(document.location.toString().toLowerCase().indexOf("list.asp")>0?"nowrap":"");
				var content = "<table style=\"FILTER:alpha(opacity=90) shadow(color=#bbbbbb,direction=135);\" id=toolTipTalbe border=0><tr><td width=\"100%\"><table class=tableBorder7 cellspacing=\"1\" cellpadding=\"0\" style=\"width:100%\">" 
							+ "<tr id=pltsPoptop ><th height=18 valign=bottom class=th1 ><b><p id=topleft align=left><font color=#ffffff>\u2196</font>" 
							+ pltsTitle + "</p><p id=topright align=right style=\"display:none\">" 
							+ pltsTitle + "<font color=#ffffff>\u2197</font></b></th></tr>" 
							+ "<tr><td \"+attr+\" class=titlebgcolor style=\"padding-left:14px;padding-right:14px;padding-top: 6px;padding-bottom:6px;line-height:135%;word-break:break-all;\">" 
							+ regContent + "</td></tr>" 
							+ "<tr id=pltsPopbot style=\"display:none\"><th height=18 valign=bottom class=th1><b><p id=botleft align=left><font color=#ffffff>\u2199</font>" 
							+ pltsTitle + "</p><p id=botright align=right style=\"display:none\">" + pltsTitle 
							+ "<font color=#ffffff>\u2198</font></b></th></tr>" + "</table></td></tr></table>";
				regDiv.innerHTML = content;
				toolTipTalbe.style.width = Math.min(regDiv.clientWidth, document.body.clientWidth/2.5);
				moveToMouseLoc();
				DivSetVisible(true);
				return true;
			} else {
				regDiv.innerHTML = "";
				regDiv.style.display = "none";
				DivSetVisible(false);
				return true;
			}
		}
		function moveToMouseLoc() {
			if (regDiv.innerHTML == "") {
				return true;
			}
			//var MouseX = event.x;
			//var MouseY = event.y;
			var MouseX = event.clientX;
			var MouseY = event.clientY;
			var popHeight = regDiv.clientHeight;
			var popWidth = regDiv.clientWidth;
			if (MouseY + pltsoffsetY + popHeight > document.documentElement.clientHeight) {
				popTopAdjust = -popHeight - pltsoffsetY*2;
				pltsPoptop.style.display = "none";
				pltsPopbot.style.display = "";
			} else {
				popTopAdjust = 0;
				pltsPoptop.style.display = "";
				pltsPopbot.style.display = "none";
			}
			if (MouseX + pltsoffsetX + popWidth > document.documentElement.clientWidth) {
				popLeftAdjust = -popWidth - pltsoffsetX*2;
				topleft.style.display = "none";
				botleft.style.display = "none";
				topright.style.display = "";
				botright.style.display = "";
			} else {
				popLeftAdjust = 0;
				topleft.style.display = "";
				botleft.style.display = "";
				topright.style.display = "none";
				botright.style.display = "none";
			}
			regDiv.style.left = MouseX + pltsoffsetX + document.documentElement.scrollLeft + popLeftAdjust;
			regDiv.style.top = MouseY + pltsoffsetY + document.documentElement.scrollTop + popTopAdjust;
			DivSetVisible(true);
			return true;
		}
		/* 解决select挡住div */
		function DivSetVisible(state) {
			var DivRef = document.getElementById("regDiv");
			var IfrRef = document.getElementById("regIframe");
			if (state) {
				DivRef.style.display = "block";
				IfrRef.style.width = DivRef.offsetWidth-3;
				IfrRef.style.height = DivRef.offsetHeight-3;
				IfrRef.style.top = DivRef.offsetTop+3;
				IfrRef.style.left = DivRef.offsetLeft+3;
				IfrRef.style.zIndex = DivRef.style.zIndex - 1;
				IfrRef.style.display = "block";
			} else {
				DivRef.style.display = "none";
				IfrRef.style.display = "none";
			}
		}
		function hideIframe(){
			DivSetVisible(false);
		}
  </script>
  <BODY>

<table border='1'>

<tr><td height='100' ></td></tr>
<tr><td>
<div style="width: 230px;text-overflow:ellipsis; white-space:nowrap; overflow:hidden; " inputreg='oooooooooooooooooooooooooooooooooooooooooooooooooooooo' caption="详细" >oooooooooooooooooooooooooooooooooooooooooooooooooooooo</div>
</td></tr>
</table>
</BODY>
 <script>
 initRegTip();
 </script>
</HTML>
Java HashMap,LinkedHashMap,TreeMap
import java.text.CollationKey;
import java.text.Collator;
import java.util.Comparator;
import java.util.TreeMap;
/**
 * HashMap,LinkedHashMap,TreeMap
 * @author oyprunner@163.com
 */
public class TreeMapTest {
	public static void main(String[] args) {
		TreeMap<String, String> map = new TreeMap<String, String>(new Comparator<Object>(){
			Collator collator = Collator.getInstance(); 
			public int compare(Object o1, Object o2) {
				CollationKey key1 = collator.getCollationKey(o1.toString());
				CollationKey key2 = collator.getCollationKey(o2.toString());
				return key1.compareTo(key2);
				//return collator.compare(o1, o2);
			}});
			map.put("010", "111111");
			map.put("300", "111111");
			map.put("100", "111111");
			map.put("111", "111111");
			System.out.println(map);
	}
}
Java 读取properties属性文件
	public static void main(String[] args) throws Exception, IOException {
		File file = new File("D:/workspace_utf-8/zj_card_portal_union/src/config/config.properties");
		if(!file.exists())throw new RuntimeException("配置文件不存在!");
		Properties p = new Properties();
		p.load(new FileInputStream(file));
		String s = p.getProperty("CORP_CARD_PLAT.URL");
		System.out.println(s);
	}
Java 反射简单例子
package com.poy.reflect;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.reflect.Method;
/**
 * 反射简单例子
 * @author oyprunner@163.com
 */
public class ReflectTest {
    public static void main(String[] args){
        TemppImpl t1 = new TemppImpl("temp1");
        try {
        	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	        Method t1Talk = t1.getClass().getMethod("talk", String.class) ;
	        Method t2Talk = t1.getClass().getMethod("talk", String.class) ;
	        System.out.println(t1Talk == t2Talk);
	        System.out.println(t1Talk.equals(t2Talk));
	    	String contend = "";
	        while (!"88".equals(contend)) {
	        	contend = br.readLine();
	        	t1Talk.invoke(t1, contend);
	        }
        } catch (Exception e) {	
        	System.err.println(e);
		}
    }
}

class TemppImpl implements Temp {
	private String s;
	public TemppImpl(String s) {
		this.s = s;
	}
	public void talk (String ss) {
		System.out.println(ss);
	}
	public String getS() {
		return s;
	}
	public void setS(String s) {
		this.s = s;
	}
}
Java 简单jdkProxy代理的例子
package com.poy.proxy;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

import com.poy.reflect.Temp;
import com.poy.reflect.TempImpl;
/***
 * 简单jdkProxy代理的例子
 * @author oyprunner@163.com 
 */
public class JdkProxyFactory implements InvocationHandler {
	 private Object targetObject;  
	    public Object createProxyInstance(Object targetObject) {   
	        this.targetObject = targetObject;  
	        return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),   
	                this.targetObject.getClass().getInterfaces(), this);  
	    }  
	    public Object invoke(Object proxy, Method method, Object[] args)  
	            throws Throwable {  
	        Object result = null;  
	        if(args[0] != null ) {  
	        	String str = (String)args[0];
	        	str = str.replaceAll("cao|CAO|ri|RI", "***");
	            result = method.invoke(targetObject, str);  
	        }  
	        return result;  
	    }  
	    public static void main(String[] args) throws Exception {
	    	JdkProxyFactory jpf = new JdkProxyFactory();  
	    	Temp personService = (Temp) jpf.createProxyInstance(new TempImpl("XXX"));  
	    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    	String content ="";
	    	while (!"88".equals(content)) {
	    		  content = br.readLine();
	    		 personService.talk(content);
	    	}
	    }  
}
Java 代理类实现的原理
package com.poy.proxy;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import sun.misc.ProxyGenerator;
import com.poy.reflect.TempImpl;
/**
 * java代理类实现的原理
 * 可以使用jd-gui反编译查看生成的字节码
 * @author oypruner@163.com
 *
 */
public class  ProxyClassFile{
       public static void main(String[] args){
          String proxyName = "TempProxy";
          TempImpl t = new TempImpl("proxy");
          Class[] interfaces =t.getClass().getInterfaces();
          byte[] proxyClassFile = ProxyGenerator.generateProxyClass(proxyName, interfaces);
          File f = new File("bin/TempProxy.class");
	        try {
	            FileOutputStream fos = new FileOutputStream(f);
	            fos.write(proxyClassFile);
	            fos.flush();
	            fos.close();
	        } catch (FileNotFoundException e) {
	            e.printStackTrace();  
	        } catch (IOException e) {
	            e.printStackTrace(); 
	        }
	       }
}
Java 根据day,week,month类型获得开始结束时间
	/**
	 * <p>根据类型获得开始结束时间</p>
	 * <p>如果参数("day","2010-09-28",true) 表示获得改天的开始时间返回结果为2010-09-28 00:00:00</p>
	 * @param type :时间周期:day日, week周, month月, year年
	 * @param date :统计日期格式yyyy-MM-dd
	 * @param isStart : 是否是开始时间。true:开始时间,false:结束时间
	 * @return
	 */
	private String getStartEndDate(String type,Date date,boolean isStart,String pattern){
		int periodType ;
		if(type.equals("year")){
			periodType = Calendar.DAY_OF_YEAR;
		}else if(type.equals("month")){
			periodType = Calendar.DAY_OF_MONTH;
		}else if(type.equals("week")){
			periodType = Calendar.DAY_OF_WEEK;
		}else if(type.equals("day")){
			periodType = Calendar.HOUR_OF_DAY;
		}else{
			return null;
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		if(isStart){
			cal.set(periodType, cal.getActualMinimum(periodType));
			cal.set(Calendar.HOUR, 0);
			cal.set(Calendar.MINUTE, 0);
			cal.set(Calendar.SECOND, 0);
		}else{
			cal.set(periodType, cal.getActualMaximum(periodType));
			cal.set(Calendar.HOUR, 23);
			cal.set(Calendar.MINUTE, 59);
			cal.set(Calendar.SECOND, 59);
		}
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		return sdf.format(cal.getTime());
	}
Java Thread 简单例子
package com.poy.thread;
/**
 * 
 *      sleep(); 休眠,不会丢失任何监视器的所有权
 *       wait(); 等待,释放对监视器的所有权 
 *     notice(); Wakes up a single thread that is waiting on this object's monitor
 *  notifyAll(); Wakes up all threads that are waiting on this object's monitor.
 *  synchronized: 加锁同步,实际上就是并行执行串行化
 * @author Administrator
 *
 */
public class ThreadTest {
	public static void main(String[] args) {
		MyClass myClass = new MyClass(); 
		new MyThread(myClass).start();
		new MyThread1(myClass).start();
	}
}
class MyClass {
	
	public synchronized void m1() {
		System.out.println("m1-1");
		try {
			// wait():当前线程等待,直到另一个线程调用notify()或者notifyAll();
			// 执行wait()方法后释放对监视器(myClass.m1())的所有权,也就是释放锁
			this.wait();   
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("m1-2");
		try {
			// 当前正在执行的线程休眠,线程不丢失任何监视器的所有权,也就是不会释放锁
			Thread.sleep(1000);   
			System.out.println("m1-3");
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("m1-4");
		m2();
	}

	public synchronized void m2() {
		System.out.println("m2-1");
		// 唤醒m1,但是并不释放锁synchronized
		// Wakes up all threads that are waiting on this object's monitor
		this.notifyAll();  
		System.out.println("m2-2");
		try {
			// 当前正在执行的线程休眠,线程不丢失任何监视器的所有权
			Thread.sleep(10000);
			System.out.println("m2-3");
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("m2-4");
		m1();
	}
}

class MyThread extends Thread {
	private MyClass myClass;

	public MyThread(MyClass myClass) {
		this.myClass = myClass;
	}
	@Override
	public void run() {
		myClass.m1();
	}
}

class MyThread1 extends Thread {
	private MyClass myClass;

	public MyThread1(MyClass myClass) {
		this.myClass = myClass;
	}

	@Override
	public void run() {
        try {  
        	// 休眠10毫秒是为了让m1先执行wait
			Thread.sleep(10);
		} catch (InterruptedException e1) {
			e1.printStackTrace();
		}
		myClass.m2();
	}
}
Global site tag (gtag.js) - Google Analytics