web service 验证码 |
|
|
使用方面:对于用户注册可适用,用于胖客户端。
后台生成图像,使用web service或scoket方式发送至客户端。
代码:
package com.duduli.li;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class ImageC2 {
//生成验证码图片
public OutputStream create() throws Exception {
OutputStream out = new ByteArrayOutputStream();
String yanzhengma = "";
int[] a = null;
// 大小
int width = 60;
int height = 30;
// 声明一个图片类型rgb
BufferedImage bi = new BufferedImage(width, height,
BufferedImage.TYPE_INT_BGR);
// 获取画笔
Graphics g = bi.getGraphics();
// 背景色
g.setColor(Color.WHITE);
// 画
g.fillRect(0, 0, width, height);
// 字体
g.setFont(new Font("黑体", Font.BOLD, 18));
// 写一个字符到bi
Random r = new Random();
for (int i = 0; i < 4; i++) {
// 生成随机数
int code = r.nextInt(10);// 0---9之间
// 画笔随机色
g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));
// 写出字符
g.drawString("" + code, i * 15, 10 + r.nextInt(20));
yanzhengma += String.valueOf(code);
}
// 干扰线
for (int i = 0; i < 12; i++) {
g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));
// 画线
g.drawLine(r.nextInt(60), r.nextInt(30), r.nextInt(60),
r.nextInt(30));
}
g.dispose();// 图片生成
ImageIO.write(bi, "JPEG", out);// 设置路径为e:盘下的a.jpg
System.out.println("结果为:"+yanzhengma);
return out;
}
// outputstream转成inputstream
public ByteArrayInputStream parse(OutputStream out) throws Exception
{
ByteArrayOutputStream baos=new ByteArrayOutputStream();
baos=(ByteArrayOutputStream) out;
ByteArrayInputStream swapStream = new ByteArrayInputStream(baos.toByteArray());
return swapStream;
}
//试用base64对流进行转码
public String GetImageStr(InputStream in) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
// String imgFile = "d:\\test.txt";// 待处理的图片
// InputStream in = null;
byte[] data = null;
// 读取图片字节数组
try {
// in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);// 返回Base64编码过的字节数组字符串
}
//查看并测试图片转码情况,模拟客户端图片显示
public static boolean GenerateImage(String imgStr) {// 对字节数组字符串进行Base64解码并生成图片
if (imgStr == null) // 图像数据为空
return false;
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
// 生成jpeg图片
String imgFilePath = "d:\\222.jpg";// 新生成的图片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
public static void main(String[] args) throws Exception {
ImageC2 i = new ImageC2();
// System.out.println(i.GetImageStr(i.parse(i.create())));
GenerateImage(i.GetImageStr(i.parse(i.create())));
}
}
|
java平衡二叉树 |
|
Java平衡二叉树 |
package com.neu.util;
public class BTNode {
int data;
BTNode left;
BTNode right;
BTNode(){}
BTNode(int val){
data = val;
}
BTNode(int val,BTNode leftChild,BTNode rightChild){
data = val;
left = leftChild;
right = rightChild;
}
public String toString()
{
Integer data1= new Integer(data);
return data1.toString();
}
}
package com.neu.util;
public class BTree {
public BTNode root;//树的根结点
private int count;//树的结点个数
/** Creates a new instance of BTree */
public BTree() {
root = null;
count = 0;
}
public BTNode insert(BTNode ref,int val)//插入建立二叉树
{
if(ref == null){
count++;
return new BTNode(val);
}
else{
if(ref.data>val)
ref.left = insert(ref.left,val);
else
ref.right = insert(ref.right,val);
return ref;
}
}
public void insert(int val)
{
root = insert(root,val);
}
public int size(){
return count;
}
//将二叉树转为按中序排列的一条链
BTNode createChain(BTNode root){
if(root!= null){
root.right = createChain(root.right); //对右子树递归
if(root.left != null){
BTNode oldRoot = root;
BTNode ref = root = createChain(root.left); //对左子树递归,根指向最左结点
oldRoot.left = null;
while(ref.right != null)
ref = ref.right;
ref.right = oldRoot;
}
}
return root;
}
//将链转为平衡二叉树
BTNode createTree(BTNode root,int n){
if(n> 2){
int m = (n-1)/2;
BTNode oldRoot = root;
BTNode ref = root;
for(int i = 1;i<m;i++)
ref = ref.right;
root = ref.right; //指向第[n/2]个结点,即将根指向链的中间结点
ref.right = null; //根的左右结点都置空
root.left = createTree(oldRoot,m);
root.right = createTree(root.right,n-m-1);
}
return root;
}
public String getData() {
if(this.root == null) return "";
Integer n = new Integer(root.data);
return n.toString();
}
public static void inorder(BTNode r){ //中序排列
if(r != null){
inorder(r.left);
System.out.print(r.toString() + " ");
inorder(r.right);
}
}
public void display(){
if(root!=null){
System.out.print("排序:");
inorder(root);
}else{
System.out.println("二叉树为空!");
}
}
public static void main(String[] args){
BTNode node = new BTNode(10);
BTree bt =new BTree();
int arr[]={5,12,20,2,14,1};
for(int i=0;i<arr.length;i++) {
bt.insert(arr[i]);
}
System.out.println();
bt.display();
}
}
|
spring获取xml配置文件几种方法 |
|
|
【1】File file = new File("fileSystemConfig.xml");
Resource resource = new FileSystemResource(file);
BeanFactory beanFactory = new XmlBeanFactory(resource);
【2】Resource resource = new ClassPathResource("classpath.xml");
BeanFactory beanFactory = new XmlBeanFactory(resource);
【3】ClassPathXmlApplicationContext:ApplicationContext实现,从classpath获取配置文件;
BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath.xml");
【4】FileSystemXmlApplicationContext:ApplicationContext实现,从文件系统获取配置文件。
BeanFactory beanFactory = new FileSystemXmlApplicationContext("fileSystemConfig.xml");
|
java编译运行。非IDE |
|
|
c:\Users\Administrator\Desktop\WWServiceCom\5>javac -cp ./cxf-2.6.2.jar ClientSe
rvice.java
c:\Users\Administrator\Desktop\WWServiceCom\5>java -Djava.ext.dirs=. -cp . Clien
tService
Sep 5, 2012 7:50:45 PM org.apache.cxf.common.jaxb.JAXBUtils logGeneratedClassNam
es
|
java使用jnative对dll进行调用 |
java调用dll |
|
package com.duduli.li;
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.MemoryBlock;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;
public class TestNative {
// static{
// System.load("c://Users//Administrator//Desktop//WWServiceCom//JNativeCpp.dll");
// }
public static void main(String[] args) {
// TestNative test = new TestNative();
JNative jn = null;
String str = "";
try {
// System.load("c://Users//Administrator//Desktop//WWServiceCom//接口dll//WWServiceCom_5.dll");
// System.loadLibrary("WWServiceCom_5");
// jn = new JNative("WWServiceCom_5","ExecSQLNoField1");
// System.loadLibrary("WWServiceCom_4");
// jn = new JNative("WWServiceCom_4","ExecSQLNoField");
// System.loadLibrary("WWServiceCom_6");
// jn = new JNative("WWServiceCom_6","Test");
// System.loadLibrary("WWServiceCom_7");
// jn = new JNative("WWServiceCom_7","Test2");
// System.loadLibrary("WWServiceCom_8");
// jn = new JNative("WWServiceCom_8","Test2");
// System.loadLibrary("WWServiceCom_9");
// jn = new JNative("WWServiceCom_9","Test2");
// System.loadLibrary("WWServiceCom_10");
// jn = new JNative("WWServiceCom_10","Test2");
System.loadLibrary("WWServiceCom_12");
jn = new JNative("WWServiceCom_12","Test2");
jn.setRetVal(Type.STRING);
// int i = 0;
// jn.setParameter(i++, "afjkfjekj");
// jn.setParameter(i++, "afjkfjekj");
jn.setParameter(0, "aaa");
jn.setParameter(1, "bbb");
System.out.println("调用的DLL文件名为:"+jn.getDLLName());
System.out.println("调用的方法名为:"+jn.getFunctionName());
jn.invoke();
str = jn.getRetVal();
System.out.println(str);
} catch (NativeException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}finally{
if(null != jn){
try {
jn.dispose();//
jn = null;
} catch (NativeException e) {
jn = null;
} catch (IllegalAccessException e) {
jn = null;
}
}
}
}
}
|
java使用jna调用dll |
java调用dll |
|
package com.duduli.li;
import com.sun.jna.Native;
import com.sun.jna.win32.StdCallLibrary;
public interface JnaUseDelphiDll extends StdCallLibrary{
//加载动态链接库,把库dll文件默认放到系统C盘window目录下的system32文件夹下
// JnaUseDelphiDll instance = (JnaUseDelphiDll)Native.loadLibrary("WWServiceCom_5", JnaUseDelphiDll.class);
// JnaUseDelphiDll instance = (JnaUseDelphiDll)Native.loadLibrary("WWServiceCom_6", JnaUseDelphiDll.class);
JnaUseDelphiDll instance = (JnaUseDelphiDll)Native.loadLibrary("WWServiceCom_12", JnaUseDelphiDll.class);
//对应动态链接库中的方法, 要注意的是 这里的方法必须要和链接库(dll文件)对应的方法名一致
public String Test2(String s1,String s2);
}
调用方法:
package com.duduli.li;
import com.sun.jna.Structure;
import com.sun.jna.ptr.ByteByReference;
public class TestJNA extends Structure{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JnaUseDelphiDll jnaDemo = JnaUseDelphiDll.instance;
System.out.println(jnaDemo.Test2("select top 1 a0101,a0107 from a01","bb"));
}
}
|
Java对文件进行筛选 |
文件按筛选 |
|
public class FileExtensionFileFilter implements FileFilter {
private String extension;
public FileExtensionFileFilter(String extension) {
this .extension = extension;
}
/*
* Pass the File if it has the extension.
*/
public boolean accept(File file) {
// Lowercase the filename for easier comparison
String lCaseFilename = file.getName().toLowerCase();
return (file.isFile() &&
(lCaseFilename.indexOf(extension) > 0 )) ? true : false ;
}
}
|