解惑

解己之惑,解人之惑

分类:Java (第19页共20页)

Java技术

整合关键字

国庆期间做的唯一的一件正经事就是给JR的文章系统加了关键字
能,但是实际上还没有做完,未来还需要做的就是给文章增加内容相关文章以及给论坛的帖子增加内容相关的文章,希望以此能够减少一些问题的回答,因为发现上
JR的很多都是新手,还不懂得主动去看文章或者进行搜索解决他们的问题,这样的话只能采用推给他们的方式了,也许他们可以从内容相关的文章中自己找到答
案,前提是他们其实是愿意看的,只不过自己找不到而已。虽然现在看还不知道效果如何,但是在做的过程中也会进行试验,如果出来的相关文章的相关度比较低可
能就不加了或者改进匹配方法,目前的设想是按照关键字相关度进行匹配。

无所不倒--现在的票贩子

国庆没有去哪儿玩,但是在逛街的时候还是看到了很多比较新鲜的事情。最让我感悟的是在八百拌看到的。
国庆期间八百拌搞活动,也就是买三百送50的券,这个券完全可以当钱用,但是有时候你买完东西后并不想再买其它的东西,而有的人又没有券,这个时候这些倒
爷就上场了,他们花30块从别人手里收这个券或者向别人要那个购物的发票,累积满三百后去兑那个券,然后在收银台前等候,将50的券按照40的价格卖给别
人。
对于买东西和他们而言都有好处,只有商场相对原来有了更多的损失。
以前也经常有商场搞这种活动,而且也经常被称为强制性循环消费陷阱,但是有了这些倒爷,事情就简单了,他们也赚了钱。以前经常有人倒各种票,但是这是第一次看到倒这个券。
现在的人脑子越来越活了。

整理过的处理GB2312的工具类

package com.cherami;

public class GB2312 {
  public static final int SYMBOL_START=0xa1a1;
  public static final int SYMBOL_END=0xa9fe;
  public static final int FIRST_LEVEL_START=0xb0a1;
  public static final int FIRST_LEVEL_END=0xd7fe;
  public static final int SECOND_LEVEL_START=0xd8a1;
  public static final int SECOND_LEVEL_END=0xf7fe;
 
  public static boolean isSymbol(char c) {
    return isGb2312ValueRange(c,SYMBOL_START,SYMBOL_END);
  }
 
  public static boolean isFirstLevel(char c) {
    return isGb2312ValueRange(c,FIRST_LEVEL_START,FIRST_LEVEL_END);
  }
 
  public static boolean isSecondLevel(char c) {
    return isGb2312ValueRange(c,SECOND_LEVEL_START,SECOND_LEVEL_END);
  }

 
  public static boolean isGb2312ValueRange(char c,int start,int end) {
    String s= new String(new char[]{c});
    byte[] bs;
    try {
      bs = s.getBytes(“GB2312”);
    } catch (java.io.UnsupportedEncodingException e) {
      return false;
    }
    if (bs.length < 2) {
      return false;
    }
    int b1 = bs[0] & 0xff;
    int b2 = bs[1] & 0xff;
    int value = (b1 << 8) | b2;
    if (value>=start&&value<=end) {
      return true;
    }
    return false;
  }

  public static char getFirstPinyin(String str) {
    byte[] bs;
    try {
      bs = str.getBytes(“GB2312”);
    } catch (java.io.UnsupportedEncodingException e) {
      return '*';
    }

    if (bs.length == 0)
      return '*';
    if (bs.length >= 2) {
      int b1 = bs[0] & 0xff;
      int b2 = bs[1] & 0xff;
      int value = (b1 << 8) | b2;
      if (value >= 0xb0a1 && value <= 0xb0c4)
        return 'a';
      if (value >= 0xb0c5 && value <= 0xb2c0)
        return 'b';
      if (value >= 0xb2c1 && value <= 0xb4ed)
        return 'c';
      if (value >= 0xb4ee && value <= 0xb6e9)
        return 'd';
      if (value >= 0xb6ea && value <= 0xb7a1)
        return 'e';
      if (value >= 0xb7a2 && value <= 0xb8c0)
        return 'f';
      if (value >= 0xb8c1 && value <= 0xb9fd)
        return 'g';
      if (value >= 0xb9fe && value <= 0xbbf6)
        return 'h';
      if (value >= 0xbbf7 && value <= 0xbfa5)
        return 'j';
      if (value >= 0xbfa6 && value <= 0xc0ab)
        return 'k';
      if (value >= 0xc0ac && value <= 0xc2e7)
        return 'l';
      if (value >= 0xc2e8 && value <= 0xc4c2)
        return 'm';
      if (value >= 0xc4c3 && value <= 0xc5b5)
        return 'n';
      if (value >= 0xc5b6 && value <= 0xc5bd)
        return 'o';
      if (value >= 0xc5be && value <= 0xc6d9)
        return 'p';
      if (value >= 0xc6da && value <= 0xc8ba)
        return 'q';
      if (value >= 0xc8bb && value <= 0xc8f5)
        return 'r';
      if (value >= 0xc8f6 && value <= 0xcbf9)
        return 's';
      if (value >= 0xcbfa && value <= 0xcdd9)
        return 't';
      if (value >= 0xcdda && value <= 0xcef3)
        return 'w';
      if (value >= 0xcef4 && value <= 0xd188)
        return 'x';
      if (value >= 0xd189 && value <= 0xd4d0)
        return 'y';
      if (value >= 0xd4d1 && value <= 0xd7fe)
        return 'z';
    }
    return '*';
  }

}
 

Java的Web框架对比

第一项是优点,第二项是缺点。

以下是各种web框架比较: (by Matt Raible)

  • struts:
    • 广泛流行;拥有很多信息和示例;HTML标签库是一个非常好的东西。
    • ActionForms非常恶心;不能够做单元测试;大量的邮件列表令人无法忍受
  • Spring MVC
    • 生命周期由重写绑定,效验等确定;能够无缝隙地与各种表现层程序结合在一起,如JSP,XSL等;IC使得很容易测试。
    • 很少被使用;需要在JSP中写入大量代码;太灵活了,反而不能得到通用的控制。
  • WebWork
    • 结构简单,容易被扩展;标签库容易被自定义,并获得Velocity支持;拦截机制成熟可靠。
    • 其文档最近才出现,示例很少;客户端效验很不成熟。
  • Tapestry
    • 一旦学会,效率很高;HTML模板很合适美工;有良好的社区支持。
    • 文档非常概念,而缺少实践;学习曲线陡峭,示例非常少;
  • JSF
    • J2EE规范;能够快速和容易地开发;丰富的导航框架。
    • 标签依赖JSPs;技术不够成熟;实现资源不单纯。

以上摘自《Tapestry开发指南》
Tapestry技术论坛:http://forum.cdmcs.com/viewforum.php?f=17
作者的email:gzdlw_Adong@Hotmail.com

crystal report server(水晶报表)java开发入门

经过一段时间的调查发现光使用crystal report
viewer不能满足我们的需要,不得已只能使用server版的,但是server版多了一些API,还需要登录,取得ISession之类的。其实在
线文档里面的quick start是一个很好的起始的地方,还带一个可以直接运行的demo,应该包含常用功能了。
他的文档里面有一个java_docs.zip的文件,解开后看看java_docs\CE\reference\default.htm,这个是
BusinessObjects Enterprise Java SDK Guide-》General Reference:Includes
general information to help you get started-》Getting Started Tutorials
-》Developing a web application,一点一点看下来或者把Code
examples里面的例子发布到你的tomcat里面运行看看再看看源代码应该就能很快上手了,有些功能你可能就要找他的API了,由于不是CHM版
本,所以用的时候比较麻烦。

关注自己的身体

自从上次体检查出有不完全性右束支阻滞就对自己的身体比较敏感,一有点不舒服就担心自己是不是真的有什么大病,而且这段时间各种报刊杂志都在谈中青年猝死
的事情,在分析原因的时候大多是说对人生的期望太高、压力大、长时间疲劳,造成生理和心理负担沉重,积累一定的程度就造成大问题。
我这段时间也是感觉有些不太舒服,常常有疲劳感,但是好像没有那么大的压力,也没有太沉重的压力,但是还是不放心,可能是自己的期望还是有点高。
做开发的可能要注意了,第一是常常加班,第二是社会对我们的调门比较高,常常是所谓的高薪云云,第三是没有锻炼身体,第四是朋友不多,很多压力得不到释放。

周庄一日游

昨天到周庄玩了一天,但是并没有想像中的那么好,一个可能是时间比较紧张,去得比较晚,只买到十点的票,到的时候都差不多12点了,吃完饭集合都快一点
了,然后四点要集合走人;二则是前不久刚到朱家角玩了一下,感觉两个地方的风格差不多,所不同的是朱家角没有周庄那么多名人。如果要领略一下江南小镇的风
格,朱家角也是一个不错的去处,比周庄也更实惠一些,朱家角的扎肉也不错,而且便宜。没有在周庄吃那个万三蹄,太贵了,六十一个,外面卖的虽然比较便宜,
但是没敢买。如果确实要去周庄的话,建议可以跟一日游的团,比自己买套票才贵五块钱,导游一路上讲讲周庄的各种典故也蛮不错的,可惜我们跟着导游走了两个
景点就走丢了,不得已只能自己到处看看了。

JRoller的日期选择控件在FF下有问题

先做个记号,看看什么时间有时间改改。

推荐一个Javascript的树

JR中的FTP页面用的就是这个,特点是:
Crossbrowser JavaScript 树(类似于Windows浏览器),目前可以在Mozilla 和
IE中运行。可以重命名节点;拖放操作;用键盘来导航;排序。易于使用。
另外代码的结构也很不错,扩展附加的属性很方便,自定义点击菜单项的操作也很容易。

http://sourceforge.net/projects/nanotree/

重建内核选项指南

这个也是大学时代的作品,也贴过来了。

谈到重建,大家都有一种摸不着头脑的感觉,原因是内核选项给

人实在太多的无赖,不光需要知道那一项是干什么的,还要知道

自己的硬件到底是什么样的。下面的解说只是给大家作一个参

考,别人领进门,修行在个人,能否配置好自己的内核,做到全

面而短小,这全要靠自己。有一点是要提醒大家的:内核的配置

是一件很考验人的意志的任务,不要因为几次失败而放弃!笔者

也曾经经历过那段难熬的岁月,所以提醒大家–不要气馁。

prompt for development and/or incomplete code/drivers

很多参考书上说这是那些开发人员认为还不是很稳定的功能,但

是根据我的经验,这个是应该选的一个选项,因为现代的LINUX是

建立在这些基础上的,所以应该可以回答Y,除非你只是想使用

LINUX中已经完全定型的东西,但性能肯定不会好到哪,而且对系

统特性的支持也不会好。

processor family (386,486/cx486,586/k5/5×86/6×86,pentinum/k6/tsc,

ppro/6×86)

这应该没有太多可说的吧,选择你的CPU的种类,BIOS可以自检得

到,注意系统的启动信息。需要注意的是不能选择比你的CPU类型

还高级的CPU,否则可能不能正常工作。

math emulation

模拟数学协处理器,如果你的机器没有数学协处理器,那就选上

以提高性能,但486以后数学协处理器就集成到CPU内部了,应该是

用不上的,所以一般的选择是N。当然选上也不会有什么问题,除

了内核稍稍变大外。

mttr(memory type range register) support

这个选项是用来启动pentinum pro和pentinum II 的特殊功能,如果你用

的不是这类CPU就选N,否则也仅仅是使内核变大而已。

symmetric multi-processing support

同步处理器支持,如果你有多个CPU就选上吧。

enable loadable module support

这会启动动态载入额外模块的功能,所以一定选上。

set version information on all symbols for modules

这个选项可以为某个版本的内核而编译的模块在另一个版本的内

核下使用,但一般用不上。

kernel module loader

如果你启用这个选项,你可以通过kerneld程序的帮助在需要的时候

自动载入或卸载那些可载入式的模块。建议选上。

networking support

如果你用到任何网络就应该选上

pci bios support

这个一般是应该选上的,除非你用没有任何PCI设备的机器。PCI

BIOS是用来侦测并启用PCI设备的。

pci bridge optimization(v1.3)

当这个选项被启动时,操作系统会对从CPU和系统内存在PCI总线

来往的数据做最佳化,这个功能已经完成实验阶段,使用起来应

该很安全,而且还可增进系统的效率。

system v ipc

起用这个选项可以使内核支持System V 的进程间通信的功能

(IPC),有些从System V转移过来的程序会需要这个功能,建议启

用该功能。

sysctl support

除非你的内存少的可怜,否则你应该启动这个功能,启用该选项

后内核会大8K,但能让你直接改变内核的参数而不必重新开机。

kernel support for elf binaries

该选项让你的系统得以执行用ELF格式存储的可执行文件,而ELF

是现代LINUX的可执行文件、目标文件和系统函数库的标准格式。

当操作系统要和编译器以及连接器合作时会需要这些标准,所以

应该回答Y。

compile kernel as elf

这选项让你的内核本身以ELF的格式编译,如果你的系统上的过程

gcc默认产生ELF格式的可执行文件,那么你就应该启动这个选项。

先看看你的编译器的版本再决定。

parallel port support

如果你有任何并行口的设备并且想让LINUX使用,那么就可以启用

这个选项。LINUX不仅可以使用并口的打印机,还可以支持PLIP

(一种为并行口而设计的网络通讯协定),ZIP磁盘驱动器、扫描

仪等。在大多情况下,你需要额外的驱动程序才能使用外接的并

口设备。

plug and play support

支持PNP设备并非Microsoft的专利,如果你要让LINUX也支持PNP设

备,只要启用该选项就可以,但有些情况下会和其他设备产生冲

突(I/O,DMA,IRQ等)。这个选项对PCI设备没有影响,因为他们

天生就是PNP设备。

normal floppy disk support

除非你不想在LINUX下使用软盘,否则就应该回答Y。但对于一些

不需要支持软盘驱动器的系统而言,这个选项可以节省一些内

存。

enhanced ide/mfm/dll disk support

除非你不需要MFM/DLL/IDE硬盘的的支持,否则就应该回答Y,但如

果你只有SCSI的硬盘,关掉这个选项会比较安全。

enhanced ide/mfm/dll cdrom support

和上面的类似,只不过是对CDROM的支持而已。

enhanced ide/mfm/dll tape support

一般没有多少人在用磁带机吧,所以回答N是比较好的答案。

enhanced ide/mfm/dll floppy support

这个设备好象一般也没有人用,所以也可以回答N。

xt harddisk support

如果你有这种石器时代的XT硬盘,那么恭喜你你可以用上他了。

parallel port ide device support

LINUX是支持这种很新的并口的IDE设备的,如果你有的话就用上

吧。

networking options

如果你在前面选了支持网络的话,在这里会回答很多问题。除非

你有特别的需求,否则使用默认的选项应该就足够了。

scsi support

如果你有任何一种SCSI控制卡,这个选项就应该回答Y。事先搞清

楚你的硬件的类型,因为这些问题都是针对特定的SCSI控制芯片和

控制卡的,如果你不确定自己使用的是哪一种,查看你的硬件的

说明文件或者LINUX的HOWTO文档。同样也会让你回答很多SCSI设

备的支持(硬盘、CDROM、Tape、floppy等),依据你的情况选择。

如果你没有SCSI设备的话,建议不要支持,因为这会节约很多内核

空间。

network device support

这里面有很多关于网络控制卡的问题,如果你无法确定如何正确

选择,查看硬件文档或LINUX HOWTO文档。

amateur radio support

这个选项可以用来启动无线网络的基本支持,目前的无线网络可

以通过公众频率传输数据,如果你有此类设备就可以启用,具体

请参考AX25和HAM HOWTO 文档。

isdn subsystem

如果你有ISDN硬件就应该启用该选项并安装合适的硬件驱动程

序,你应该还会需要启用Support synchronous PPP选项(参考PPP over

ISDN)。

old cd-rom drivers

这是针对一些特殊光盘驱动器程序的问题,如果你有IDE或SCSI的

CDROM控制卡,那么就不用启用该选项了。

character devices

LINUX支持很多特殊的字符设备,例如并口、串口控制卡、QIC02磁

带驱动器以及特定界面的鼠标,此外对于游戏杆和影象摄取和麦

克等也在这里面,依据你自己的情况选者吧。

filesystems

这是一系列内核所支持的各文件系统的问题,对ext2 /proc文件系统

是一定应该支持的,有光驱还应该支持ISO9660(或模块支持),

有WINDOWS或DOS分区并且想在LINUX下访问他们也可以进行支

持。

console drivers

你至少应该支持VGA text console,否则你无法从控制台使用LINUX。

sound card support

在这里回答Y会出现很多关于声卡的问题,根据你自己的情况来配

置。

kernel profiling support(v1.3)

这个选项可以开启内核做效率统计的功能,并且会提供其他在为

系统侦错时有用的信息。这些功能会需要付出一些代价并造成系

统执行得较为缓慢,除非你正在研究内核的某个问题,否则你应

该回答N。

kernel hacking

如果你正打算深入研究自己系统上运行的LINUX如何运作,这里有

很多选项,但一般没有必要的话可以全部关掉。

作者对文章的正确性不做任何保证,如果你发现本文的不足或错

误,请更正并重新发布。

欢迎转载并进行修正,转载及少量修正请注明原作者,如果对本

文进行了任何修改,请寄一份给原作者,谢谢。

更早的文章 更新的文章

© 2025 解惑

本主题由Anders Noren提供向上 ↑