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();
}
}
|