这是网上google的
-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
-alias 产生别名
-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中
-keyalg 指定密钥的算法
-validity 指定创建的证书有效期多少天
-keysize 指定密钥长度
-storepass 指定密钥库的密码
-keypass 指定别名条目的密码
-dname 指定证书拥有者信息 例如: "CN=sagely,OU=atr,O=szu,L=sz,ST=gd,C=cn"
-list 显示密钥库中的证书信息 keytool -list -v -keystore sage -storepass ....
-v 显示密钥库中的证书详细信息
-export 将别名指定的证书导出到文件 keytool -export -alias caroot -file caroot.crt
-file 参数指定导出到文件的文件名
-delete 删除密钥库中某条目 keytool -delete -alias sage -keystore sage
-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias sage -keypass .... -new .... -storepass ... -keystore sage
-import 将已签名数字证书导入密钥库 keytool -import -alias sage -keystore sagely -file sagely.crt
导入已签名数字证书用keytool -list -v 以后可以明显发现多了认证链长度,并且把整个CA链全部打印出来。
posted @
2005-10-29 21:46 nake 阅读(386) |
评论 (0) |
编辑 收藏
package publictool.cellEditor;
import java.awt.Component;
import java.awt.Frame;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.EventObject;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import rootwindow.ValueMap;
import com.borland.jb.io.InputStreamToByteArray;
public class ImageCellEditor extends AbstractCellEditor implements
TableCellEditor, ActionListener {
// 鼠标点击次数
public int CLICKCOUNT = 2;
JButton button;
// button 命令的名称
protected static final String EDIT = "CELLEDITOR";
// 对话框中确定的命令要是"OK"
protected static final String DIALOG_OK = "OK";
// 最终的返回一个object
Object curobject;
// 所有的弹出式窗口都必须是Dialog的子类
// 而且必须有getSelectInPut
// CellEditorDialog dialog1;
JDialog dialog1;
ValueMap valuemap;
Frame frame;
JFileChooserx jfc;
public ImageCellEditor(Frame frame, ValueMap valuemap) {
// super(frame, valuemap);
init();
}
public void init() {
System.out.println("sss1");
button = new JButton();
button.setActionCommand(EDIT);
button.addActionListener(this);
button.setBorderPainted(false);
/*
* dialog1 = new CellEditorDialog(frame, "", true, valuemap, "select
* bcode,bname from bcode", "bname", this, null);
*/
jfc = new JFileChooserx();
dialog1 = jfc.createDialog(frame);
jfc.addActionListener(this);
}
public Object getCellEditorValue() {
System.out.println("3");
return curobject;
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
System.out.println("4");
// curobject =jfc .getSelectedFile();
/*
File file = jfc.getSelectedFile();
InputStream is = null;
InputStreamToByteArray imputs = null;
byte[] b = new byte[102400];
if (file != null) {
try {
System.out.println("5");
is = new FileInputStream(file);
is.read(b);
imputs = new InputStreamToByteArray(b);
// imputs = (InputStreamToByteArray)is;
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
curobject = imputs;
//curobject = null;
}*/
curobject = value;
System.out.println("value = "+value);
System.out.println("getTableCellEditorComponent"+curobject);
return button;
}
// 默认鼠标双击才可以编辑
public boolean isCellEditable(EventObject anEvent) {
if (anEvent instanceof MouseEvent) {
return ((MouseEvent) anEvent).getClickCount() >= CLICKCOUNT;
}
return true;
}
/**
* Handles events from the editor button and from the dialog's OK button.
*/
public void actionPerformed(ActionEvent e) {
System.out.println("command=" + e.getActionCommand());
if (EDIT.equals(e.getActionCommand())) {
// The user has clicked the cell, so
// bring up the dialog.
dialog1.setVisible(true);
// Make the renderer reappear.
fireEditingStopped();
System.out.println("1");
} else if ("ApproveSelection".equals(e.getActionCommand())) { // User
// pressed
// dialog's
// "OK"
// button.
File file = jfc.getSelectedFile();
if (file != null) {
InputStream is = null;
InputStreamToByteArray imputs = null;
byte[] b = new byte[102400];
try {
System.out.println("6");
is = new FileInputStream(file);
// InputStreamToByteArray imputs = new
// InputStreamToByteArray(null);
is.read(b);
imputs = new InputStreamToByteArray(b);
curobject = imputs;
// imputs = (InputStreamToByteArray)is;
// b = new byte[1024];
// is.read(b);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
dialog1.dispose();
}
else if ("CancelSelection".equals(e.getActionCommand())) {
dialog1.dispose();
}
}
class JFileChooserx extends JFileChooser implements ActionListener {
JDialog dialog = null;
public JFileChooserx() {
super();
}
public JDialog createDialog(Component parent) throws HeadlessException {
return dialog = super.createDialog(parent);
}
public void actionPerformed(ActionEvent e) {
if ("CancelSelection".equals(e.getActionCommand())) {
dialog.dispose();
}
}
}
}
有几个地方要注意JFileChooser的createDialog(Component parent)是protected的,我要覆盖它
jdbtable里存图片是用InputStreamToByteArray 来存储的,这里我还有个问题如何把读出来的图片,存到数据库中。
我现在是读取图片--放在byte[]中--数据库,这样一来我不知道byte要设置多大的长度,在控制台老报“Premature end of JPEG file”
但是这不是一个异常。
posted @
2005-10-23 23:34 nake 阅读(967) |
评论 (0) |
编辑 收藏
唉,java,内存,速度。
再见了跟我四年的本本,谁叫这个世界上有java,谁叫你自己不会加速。计算机的速度快了吗?为什么运行软件的速度越来越慢。哦。是软件越来越庞大,即使硬件速度越来越快,计算机的速度也不会直线上升。因为计算机是由硬件和软件组成的。再见了本本,但我是不会卖掉你的,我可能拿你来研究linux或网络,或者给爸爸上网用^_^。
不就是java吗,用jb,eclipse多打开两个也不怕。cpu要快的AMD,内存我加双通道(半年后),硬盘SATA的。
posted @
2005-10-20 22:34 nake 阅读(445) |
评论 (0) |
编辑 收藏
天河、花园线班车非高峰期调整时刻表(9月22日) 丽江车队将从2005年9月26日开始,对丽江班车的班次调整如下: 一、取消天河、花园班车非高峰运输时段的班次,调整后的班车时刻表如下:
花园班车:(周一至周五)
发车时间
06:30 07:00 07:15 07:30 07:45 08:00 08:150 8:30
返程时间
07:15 07:45即停即走08:15即停即走08:45即停即走09:15
发车时间17:00 17:30 18:00 18:30 19:00 19:30
返程时间17:45 18:15 18:45 19:15 19:45 20:15
天河班车:(周一至周五)
发车时间
07:00 07:15 07:30 07:45 08:00 08:15 08:30 08:45
返程时间即停即走07:55即停即走08:25即停即走08:55即停即走09:25
发车时间
17:15 17:45 18:15 18:45 19:15 19:45
返程时间17:55 18:25 18:55 19:25 19:55 20:25
posted @
2005-10-18 23:31 nake 阅读(262) |
评论 (0) |
编辑 收藏