MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

1,oracle的blob的InputStream读过一次后,再执行reset时就会报错。而上传的附件的inputstream就不会。
java.io.IOException: Mark invalid or stream not marked.
    at oracle.jdbc.driver.OracleBlobInputStream.reset(OracleBlobInputStream.java:267)
2,
InputStream s = new BufferedInputStream(new FileInputStream("c:\\test"));
BufferedInputSream是可以使用mark及reset方法,使用上述的嵌套方法间接的使其它的stream也支持这些方法了。
3,以下代码有漏洞
public Object readObject(File file)
    {
        Object o 
= null;
        
if (file.exists())
        {
            FileInputStream fis 
= null;
            ObjectInputStream ois 
= null;
            
try
            {
                fis 
= new FileInputStream(file);
                ois 
= new ObjectInputStream(fis);
                o 
= ois.readObject();
            }
            
catch (Throwable e)
            {
                e.printStackTrace();
            }
            
finally
            {
                
if (fis != null)
                {
                    
try
                    {
                        fis.close();
                    }
                    
catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
            }            
        }
        
return o;
    }

在IO的编程中一定要保存基本流的引用

posted @ 2008-03-27 17:26 leekiang 阅读(508) | 评论 (0)编辑 收藏

1,Field.Store与Field.Index
  Field.Store.COMPRESS:用压缩的格式存储最初的Field值
  Field.Store.NO:不存储该Field的原始值
  Field.Store.YES:存储该Field的原始值

  Field.Index.NO:不索引Field的值
  Field.Index.NO_NORMS:
  Field.Index.TOKENIZED:作分词处理
  Field.Index.UN_TOKENIZED:不分词,直接作为完整的信息段检索,可以支持全匹配和相似匹配,跟数据库中的like很类似。

2,实现Filter接口
    public BitSet bits(IndexReader reader) throws IOException {
        
final BitSet bits = new BitSet(reader.maxDoc());// 默认所有都为false
        
// 设置所有的都不能检索到
        
// bits.set(0, bits.size() - 1, false);
        bits.set(3true);
        bits.set(
4);//设置为true
        int[] docs = new int[1000];
        
int[] freqs = new int[1000];
        TermDocs termDocs 
= reader.termDocs(new Term("title""测试"));
        
int count = termDocs.read(docs, freqs);//
        for (int i = 0; i < docs.length; i++) {
            System.out.println(docs[i]
+"--"+freqs[i]);
            bits.set(docs[i]);
        }
        
return bits;
    }

3,Term t = new Term("content", "电力");
  Query query = new TermQuery(t);
  以上搜不到结果.原因是"电力"不是一个Term,用"电"或"力"则可以。

4,reader.terms()返回索引中的所有term,没有重复。而TermDocs存放term关联的Doc
TermEnum enumerator = reader.terms();
while (enumerator.next()) {
Term term 
= enumerator.term();
System.out.println(term.field() 
+ " " + term.text());
}

5,lucene不支持中文的*  ?匹配  
  因为英文是基于词的, 中文是基于字的  
  英文mo?ey可以匹配到money ,因为money是一个term,  中文怎么办?除非中文有个好的分词方案
6,两次过滤后,query对象的tostring:
filtered(filtered(title:oracle content:oracle)->com.lucene.search.PrivilegeFilter@133d0fc)->com.lucene.search.CategoryFilter@dd5415
7,Hyper Estraier是一个用C语言开发的全文检索引擎,
具有高速度,高稳定性,高可扩展性?提供java,ruby的调用方法
<迅速搭建全文搜索平台——开源搜索引擎实战教程>
http://www.162cm.com/archives/date/2007/07/18

8,Hits hits = searcher.search (filteredquery, new Sort("fieldname"));//可根据第二个参数进行排序
int n=hits.id(2)  //参数是在hits中的下标,返回的结果是在过滤和排序之前在directory中的原始下标

9,
new一个BitSet(950)并不等于建立一个950大小的bs
只是说构建出来的bs初始大小至少能容纳950个bit,大小永远是系统控制的。而且他的大小是64的倍数,就算BitSet(1),他的大小也是64。
bitset.set(1, 4) 设置的是1,2,3,没有4

10,对Field再进行切词就是Term?Term和Token的区别

11,BooleanQuery的例子:
      BooleanQuery bq = new BooleanQuery();
      Query q1 = new TermQuery (new Term ("field", "one"));
      Query q2 = new TermQuery (new Term ("sorter", "b"));
      bq.add(q1, Occur.MUST);
      bq.add(q2, Occur.MUST);
      Hits hits = searcher.search(bq);
     
 12,可用RAMDirectory作测试,见lucene自带的测试
    RAMDirectory directory = new RAMDirectory();
    IndexWriter writer = new IndexWriter (directory, new WhitespaceAnalyzer(), true)
   
13,进行过滤时如果有多个filter,则某个doc是否能查到取决于这多个filter各自返回的bitset的综合结果:要查得某一位置的doc,所有的filter的该位必须全部为true。所以查询结果与filter的先后顺序无关。

14,--按user为tom进行过滤
    Filter f1 = new Filter() {
            public BitSet bits(IndexReader reader) throws IOException {
                BitSet bitset = new BitSet(reader.maxDoc());
                TermDocs termDocs = reader.termDocs();// 实际是SegmentTermDocs
                Term term = new Term("user", "tom");
                termDocs.seek(term);//相当于持有了所有含有user为tom的doc的集合,但freq()和doc()还需要去文件中读取?
                while (termDocs.next()) {
                    System.out.println("freq:"+termDocs.freq());
                    bitset.set(termDocs.doc());
                }
                return bitset;
            }
        };

15,Trie,又称单词查找树,是一种特殊的树形结构,用于保存大量的字符串。它的优点是:利用字符串的公共前缀来节约存储空间。
http://www.javaeye.com/topic/299826

16,
doc相当于表中的记录
field相当于字段
不同的doc可能有相同的field,也可能有不一样的
我感觉比较适合用json格式存储
field+分词的关键字=term,是唯一的
term出现在哪些doc中,索引文件里有记载?
用Luke(http://code.google.com/p/luke)可以查看索引文件详细信息
 

posted @ 2008-03-27 16:15 leekiang 阅读(844) | 评论 (0)编辑 收藏

http://www.cnblogs.com/bysshijiajia/archive/2008/01/24/1051317.html
http://hi.baidu.com/myj2ee/blog/item/2a6b2f1b110c3c1d8618bfb8.html

posted @ 2008-03-21 13:56 leekiang 阅读(310) | 评论 (0)编辑 收藏

1,tag1.1与1.2的标记不一样,例如前者的tagclass,后者为tag-class,1.2支持描述,但有时候要去掉描述才能运行
2,可以不必在web.xml里写映射,直接在jsp中<%@ taglib uri="/WEB-INF/mytld.tld" prefix="my"%>
 JSP 1.2 (or higher)容器启动时能自动发现jar包的META-INF目录下的tld文件,
所以tld文件既不需要放到/WEB-INF下也不需要在web.xml中定义了。
直接这样写:
<%@ taglib uri="http://www.extremecomponents.org" prefix="ec" %>
其中的"http://www.extremecomponents.org"是tld文件的<uri>标记里的值。

3,嵌套标签的父标签必须继承BodyTagSupport,而且要<body-content>jsp</body-content>
4,rtexprvalue的全称是Run-time Expression Value, 它用于表示是否可以使用JSP表达式.
            <my:btn name="sf" tips="<bean:write name='ts'/> " />
            <my:btn name='<%=new String("ssssssssssssssss") %>' />
            <my:btn name='<%=(String)pageContext.getAttribute("ts")%>' />
  属性值可用单引号,注意单双引号必须错开,不能全是单引号,也不能全是双引号;
  如果属性为String类型,那么传过来的对象必须造型为字符串
5,如何支持EL表达式

解析日志文件插入数据库(Java如何设计可以获得高性能)
perl,awk,load data,这种数据量还不算大,亿条日志都不成问题。
一万条?这个数据量根本谈不上大,用perl或者直接awk搞个shell脚本,弄到crontab里每天晚上跑就不就完了,这种活java干起来烦

posted @ 2008-03-21 13:18 leekiang 阅读(347) | 评论 (0)编辑 收藏

如何选择开源项目进行Flash项目开发?

PureMVC的十个小提示

PureMVC框架概述与UML视图

构建Flex应用的10大误区

摘叶飞花,俱可伤敌

开源开发框架展现出Flex平台的发展势头

Open Source Flex Development Framework

http://topic.csdn.net/u/20080108/14/dbe6b210-1e6f-449b-964e-7cd4ddbeb884.html


MultiPowUpload  一个flash的多文件上传工具
http://www.element-it.com/Downloads.aspx
示例见:
http://multipics.net/

从零开始学习Flex里面的组件Tour de Flex on Web


1377-4364-8105-1017-5779-4100
1377-4864-2155-4708-3713-2066
1377-4561-2389-2527-0543-9076
1377-4167-2588-8404-4842-4168
1377-4469-0634-7084-5700-9553 

posted @ 2008-03-18 21:09 leekiang 阅读(431) | 评论 (0)编辑 收藏

#808080 作背景,有透明效果

css颜色代码对照

posted @ 2008-03-18 16:38 leekiang 阅读(207) | 评论 (0)编辑 收藏

http://www.blogjava.net/RongHao/archive/2006/08/29/66389.html
http://www.blogjava.net/RongHao/category/20773.html
一个基于RBAC模型的通用权限管理系统的域模型类图http://www.javaeye.com/topic/176508
http://blog.csdn.net/gisfarmer/archive/2009/01/22/3849659.aspx

五一巨献:OAuth Actionscript3 Class Library


Apache Shiro Integration for Grails


其实,你把Acegi的Role理解为Permission就好了。 然后在此之上建立自己的Business Role/Group,那么关系就会变成:
User(1) <-> Role/Group(n)  用户与角色1对多
Role/Group(1) <->  Permission/Acegi Role(n) 角色与权限1对多。
这样就重新回到传统的RBAC模型了。
总之,不要局限于Acegi的“Role”这个词了,把它就看成Permission, 你会豁然开朗!
见http://groups.google.com.hk/group/grailsunion/browse_thread/thread/6cf3ae5f5f0a7256#

posted @ 2008-03-18 00:30 leekiang 阅读(419) | 评论 (0)编辑 收藏

http://www.openjacob.org/draw2d/single/YahooUI_integration/index.html
http://www.javaeye.com/post/364175?page=1
http://www.huachuangpower.com/product/product1.htm

开源的
bonita  http://wiki.bonita.objectweb.org/xwiki/bin/view/Main/WebHome
swamp   http://swamp.sourceforge.net
obpm    http://sourceforge.net/projects/obpm/

http://www.mxgraph.com/demo.html.   nb

posted @ 2008-03-18 00:12 leekiang 阅读(1148) | 评论 (0)编辑 收藏

1,ImageMagick一个优秀的图像处理软件,JMagick是对ImageMagick的JAVA面向对象化包装
2,  *
@see       #create(int, int, int, int)
   * @see       Component#getGraphics()
3,Process Monitor 查看IO操作
http://technet.microsoft.com/zh-cn/sysinternals/bb896645(en-us).aspx
http://www.blogjava.net/tacy/archive/2007/09/20/146771.html
4,
做项目时碰到要查询和统计海量数据,所以想到了Hadoop,但同事反映Hadoop的性能不稳定,处理离线数据还行,处理实时数据就不保险了。又看了看其它的分布式文件系统,比如mogilefs、lustre等,它们只能分布式存储文件,不能分布式计算,换句话说:它们只能分摊IO,不能分摊CPU。最后决定离线数据还是用Hadoop。原文

4,凡是方框的都是字体没设成中文字体.
凡是问号的都是转码不对

5,jchardet
自动探测字符集编码
http://blog.csdn.net/ycl111/archive/2006/12/20/1450039.aspx

6, netbeans中文版切换英文日文
"C:\Program Files\NetBeans 6.1\bin\netbeans.exe" --locale en:US
"C:\Program Files\NetBeans 6.1\bin\netbeans.exe" --locale ja:JA
   

posted @ 2008-03-15 02:43 leekiang 阅读(251) | 评论 (0)编辑 收藏

注意用poi解析器从word中抽取文本后,输入流会关闭,原因如下:
InputStreams passed to POIFSFileSystem are now automatically closed. A warning is generated for people who might've relied on them not being closed before, and a wrapper to restore the old behaviour is supplied(POI-DEVELOPERS)
据说在POI3.0.3会修正该问题。

1,poi格子里的文本如何换行
  加"\n",同时设置style.setWrapText(true);
 
2,style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
 style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
 设置前景色,有半透明的效果
 
3,sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) 1));// 起始cell行、起始cell列、结束cell行、结束cell列。
   被合并了的单元格不需要生成。
   单元格合并後设置边框只在原第一个上有效,如果想应用的合并後的整体,则需要一个个的Create出单元格并应用样式,这个明显是一个不太方便的操作,期待POI下一版的改进了
   注意行是y轴,列是x轴。
   poi-contrib下的HSSFRegionUtil可以设置合并区域的边框的颜色和样式
例如:HSSFRegionUtil.setLeftBorderColor(HSSFColor.BLACK.index,row,sheet,wb);

4,sheet.createFreezePane(2, 1);
  冻结窗口,左上角为行参和列参的起始处,从0开始
 
5,列宽sheet.setColumnWidth((short) 0, (short) (35.7 * 110));//第一个参数为列的下标,110为想设置的宽度像素。
  http://www.cnblogs.com/interboy/archive/2007/08/27/872028.html

6,行高row.setHeight((short) (15.625 * 100));//100为要设置的行高的像素
   row.setHeightInPoints((short)100);//应该可以达到同样的效果

7, POI將註解的部分,視做一個文字方塊,我們可以設定它的大小及內容,然後將之指定給某特定的Cell。
节录部分Code如下:
HSSFPatriarch patr = sheet.createDrawingPatriarch();
HSSFComment comment = patr.createComment(new HSSFClientAnchor(0, 0, 0, 0, (short)4, 2, (short) 8, rowCount));
HSSFRichTextString str = new HSSFRichTextString("TEST");
comment.setString(str);
comment.setAuthor("TEST");
cell.setCellComment(comment);

8,sheet的中文名
workbook.setSheetName(0,"统计",(short)1);//第三个参数为编码方式,HSSFWorkbook.ENCODING_UTF_16=1
sheet的名称不允许出现重复。

9, 先定义一个基本样式,再复制样式的属性。不知何故不能clonebean
  HSSFCellStyle headerStyle = workbook.createCellStyle();
  PropertyUtils.copyProperties(headerStyle, baseStyle);//

10, 输出,中文名
        response.reset();
        response.setContentType("applicationnd.ms-excel");
        response.addHeader("Content-disposition",
                "attachment;filename="+new String("统计".getBytes("GBK"), "ISO-8859-1")+".xls");
        ServletOutputStream out = response.getOutputStream();
        workbook.write(out);
        out.flush();
        out.close();

11,cell.setCellValue(new HSSFRichTextString("测试"));
在poi2.5.1里不管用,只能用cell.setCellValue("测试");
忘了二者有何区别

12,直接用workbook.getBytes()得到的文档内容的结构是有问题的,会导致打开xls时报错。
ByteArrayOutputStream bos = new ByteArrayOutputStream();
workBook.write(bos);
//ByteArrayInputStream is = new ByteArrayInputStream(workBook.getBytes());//错误
ByteArrayInputStream is = new ByteArrayInputStream(bos.toByteArray());//正确
详见 http://numenzq.javaeye.com/blog/218816

13,POI的老版本的下载地址:http://archive.apache.org/dist/jakarta/poi/release/bin

14,每个sheet有65536的最大行数限制?
   数据量非常大时,拆分为多个sheet(每个1万行)可显著降低内存占用。
   http://www.javaeye.com/topic/74835?page=3

15,可用PropertyUtils.copyProperties(newStyle, baseStyle)把baseStyle的属性拷贝到newStyle中,但Font等拷贝不了。(浅拷贝,深拷贝?)

16,POI如何复制行,设置分页符bug? 使用POI操作Excel的几点注意事项
和http://www.blogjava.net/liaojiyong/archive/2007/11/14/160588.html

17,复制行,复制sheet
http://zhidao.baidu.com/question/66868683.html
http://www.aub.org.cn/J2SE/Article137612.html
http://zhidao.baidu.com/question/42447398.html

18,用HSSFCell的getCellType()只能判断三种类型,返回值为int   0,1,2  
  numeric(0),   formula(2)   or   string(1)  
  但是仅仅依靠这个有时候不能完全解决问题,  
  有时候需要用HSSFDataFormat来共同判断:  
    cell.getCellStyle().getDataFormat()
见http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/BuiltinFormats.html
  https://svn.apache.org/repos/asf/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java


19,poi3.2把以下属性或方法删掉了:
HSSFWorkbook.ENCODING_UTF_16
cell.setEncoding
所以还是继续用poi3.0.2吧
        
http://blog.csdn.net/impeller/archive/2007/10/29/1855368.aspx
解析Excel注释,填充并生成报表的一个例子
http://hi.baidu.com/bluewhale84/blog/item/b9ebd5c295911130e4dd3bd0.html
http://kevintuntun.bokee.com/2692649.html
http://www.ccw.com.cn/htm/center/prog/02_10_22_2.asp
http://llying.javaeye.com/blog/171455
http://hi.baidu.com/fish1996/blog/item/71412181e9825bdabd3e1eed.html(toutf8string)
poi的一个让人失望的bug

openxml4j支持excel2007


posted @ 2008-03-14 22:26 leekiang 阅读(4149) | 评论 (0)编辑 收藏

仅列出标题
共54页: First 上一页 38 39 40 41 42 43 44 45 46 下一页 Last