yegucheng

BlogJava 首页 新随笔 联系 聚合 管理
  9 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

2007年12月15日 #

     摘要: 图片缩放功能的实现(这里只实现了图片缩小功能,放大原理类似)  阅读全文
posted @ 2007-12-15 16:06 yegucheng 阅读(1868) | 评论 (0)编辑 收藏

2007年12月7日 #

     摘要: 在weblogic中,不能将 JDBC 存储配置为使用配置为支持全局事务的 JDBC 数据源  阅读全文
posted @ 2007-12-07 21:36 yegucheng 阅读(2282) | 评论 (0)编辑 收藏

2007年11月11日 #

     摘要: 很多笔记本的读卡器,在2003下都不能识别,使用上面的驱动可以解决这一问题
  阅读全文
posted @ 2007-11-11 15:28 yegucheng 阅读(479) | 评论 (0)编辑 收藏

2007年10月29日 #

     摘要: 使用Collections.emptyList()生成的List不支持add方法  阅读全文
posted @ 2007-10-29 12:28 yegucheng 阅读(2445) | 评论 (1)编辑 收藏

2007年10月26日 #

笔者的场景是这样的,笔者使用code smith作为代码生成工具,并在Eclipse中做插件开发,code smith天生
对GB的支持比较弱,只能生成UTF-8编码,这在Eclipse开发的过程中不会存在问题,但是在使用Eclipse的导出
功能时,Eclipse底层使用ANT的执行方式,ANT的默认字符集默认使用当前系统的字符集,这时在编译导出的时候,
会出现字符无法识别的问题,导致导出或者打包失败。
 一种方式可以改变Eclipse工程的默认字符集,以及自动生成的ant配置文件中字符集的配置,这对于单个工程是有
效的,但处理工程间依赖时,被依赖的工程同样会出现字符集问题,即使被依赖工程设定ant的字符集。
 另一种方式,是手工转换,讲UTF-8的字符集转换为GBK的,微软的网站提供了一个批量转换工具,但是在转换之后,
文档的最前面还会有可能存在多于字符,并导致ant打包失败
 最后,没办法自己写了一个字符集转换工具,因为是自己用,所以够用就行,下面是转换部分的代码,实现UTF8到
GBK的转换,其他转换可以对代码稍作修改。

 
import org.apache.commons.lang.ArrayUtils;

public class EncodeRepairTool {
 public static final byte[] bPre = "EFBBBF".getBytes();
 private int i = 0;

 /**
  * @param args
  */
 public static void main(String[] args) {  
  String path = "D:\\eclipse-dev-3.3\\workspace";
  File file = new File(path);
  EncodeRepairTool scanner = new EncodeRepairTool();
  scanner.scanFolder(file);

 }

 

 public void scanFolder(File file) {
  if (file.isDirectory()) {
   File[] files = file.listFiles();
   for (int i = 0; i < files.length; i++) {
    scanFolder(files[i]);
   }
  } else if (file.getName().endsWith(".java")) {
   removePreCode(file);
  }
 }

 private void removePreCode(File file) {
  try {
   FileInputStream fis = new FileInputStream(file);
   int size = fis.available();
   if (size < 24) {
    return;
   }
   i ++ ;
   byte[] bs = new byte[size];
   fis.read(bs);
   byte[] tbs = ArrayUtils.subarray(bs, 0, 3);
   byte[] tbs1 = new byte[] { new Integer(0xEF).byteValue(),
     new Integer(0xBB).byteValue(),
     new Integer(0xBF).byteValue() };
   boolean bol = false;
   if (tbs[0] == tbs1[0] && tbs[1] == tbs1[1] && tbs[2] == tbs1[2]) {
    bol = true;
   }
   fis.close();
   if (!bol) {
    System.out.println("  " + i + " : " + file.getName());
    tbs = bs;
   }
   else {
    System.out.println("**" + i + " : " + file.getName());
    tbs = ArrayUtils.subarray(bs, 3, size);
    
   }   
   InputStreamReader reader = new InputStreamReader(new ByteArrayInputStream(tbs), "UTF-8");
   BufferedReader br = new BufferedReader(reader);
   StringBuffer buffer = new StringBuffer();
   String s = br.readLine();
   while (s != null) {
    buffer.append(s);
    buffer.append("\n");
    s =  br.readLine();
   }
   reader.close();
   byte[] nbs = buffer.toString().getBytes("GBK");   
   FileOutputStream fos = new FileOutputStream(file);
   fos.write(nbs);
   fos.flush();
   fos.close();
   
  } catch (FileNotFoundException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  } catch (IOException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }

 }

}

posted @ 2007-10-26 10:01 yegucheng 阅读(2222) | 评论 (5)编辑 收藏

在使用apache的net包处理Serv-U和x-lighgt时遇到的几点不同
进入一个空目录:
 在serv-U下,调用fTPClient.changeWorkingDirectory("")方法没有任何问题(指向一个空的目录)
 在x-light下,调用方法,会返回501信息
当下载完文件后:
 使用 fTPClient.retrieveFileStream(url)方法下载文件,在serv-U下,可以直接下载下一个文件
 但是在x-light下,调用 fTPClient.retrieveFileStream(url)方法后,
 必须执行 fTPClient.completePendingCommand()方法,关闭当前下载操作,
 才能执行下一个下载任务(在net包的API中有相关的规定)。
 
posted @ 2007-10-26 09:08 yegucheng 阅读(734) | 评论 (0)编辑 收藏

2007年4月2日 #

     摘要: 在使用TAB型的属性页时,设定Section标题的方法  阅读全文
posted @ 2007-04-02 15:36 yegucheng 阅读(1034) | 评论 (0)编辑 收藏

2007年3月30日 #

    经常使用开源产品,开源项目的升级又非常的快,到不同的网站查找源代码经常是很费时的事情,虽然不难,但是很是琐碎。
    最近在看一篇介绍maven的文档的时候,看到一个很不错的网站:www.ibiblio.org,这儿包含了几乎你用到的所有的开源项目,而且提供maven方式的下载。
    当然,在平时的使用时,不一定必须使用maven来构建,那就直接手工去找吧,可以在google中输入如下的字符串(site:www.ibiblio.org maven2 xxx),就可以在该网站找到自己要的开源产品的jar和源码,其中xxx代表开源产品的名字,例如要找log4j,可以输入:site:www.ibiblio.org maven2 log4j。
posted @ 2007-03-30 09:28 yegucheng 阅读(1546) | 评论 (2)编辑 收藏

2007年3月7日 #

今天看到两种使用EMF解析.xml为EMF模型的策略:
一种是通过如下代码:

IFileEditorInput modelFile  =  (IFileEditorInput)getEditorInput();
URI resourceURI 
=  URI.createPlatformResourceURI(modelFile.getFile().getFullPath().toString());;
resource  =  editingDomain.getResourceSet().getResource(resourceURI,  true );
上面这种方式会引用一个AdapterFactoryEditingDomain类,但我们基于模型做编辑器时,有时并不需要用这个类,例如GEF,它具有自身的EditorDomain。

另外一种方式是使用EMF模型自动生成的Process,该类一般在模型的Util包下面,引用代码如下:
IFileEditorInput modelFile = (IFileEditorInput)getEditorInput();        
XMLProcessor processor 
=  new DesignXMLProcessor();            
 resource 
= processor.load(new InputSource(new InputStreamReader(modelFile.getFile().getContents(), "GBK")), null);
        

其实,对于EMF而言,上面两种解释方式,归根到底都需要EMF获得 业务模型相关的解析器,对于第一种方式,EMF是如何获取到业务模型的解析器呢?主要是通过扩展的方式,扩展定义在模型的plugin.xml中,代码片断如下图所示:
  <extension point="org.eclipse.emf.ecore.extension_parser">
    
<parser 
       type
="design" 
       
class="com.neusoft.report.design.util.DesignResourceFactoryImpl" />
  
</extension>

这样,解析.xml文件时,EMF从ResourceFactory注册中,根据相应的type,获取解析器(DesignResourceFactoryImpl),完成解析。
posted @ 2007-03-07 13:08 yegucheng 阅读(1630) | 评论 (0)编辑 收藏

仅列出标题