解惑

解己之惑,解人之惑

作者:cherami (第75页共82页)

整理过的处理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版
本,所以用的时候比较麻烦。

创建crystal report的模板

其实crystal report的模板就是一个已经有的报表,不需要特别创建,但是有些限制:

these report objects will be applied to the new report:

  • Fields
  • Groups
  • Group charts
  • Summary fields
  • Hyperlinks
  • Bitmaps
  • Lines, boxes, borders
  • Static OLE objects

these report objects will not be applied to the new
report:

  • Detail charts
  • Subreports
  • OLAP grids
  • Cross-tabs
  • Maps
  • Embedded OLE objects
  • BLOB fields
  • Specified order grouping
  • Advanced summaries (such as Top Ns, Percentages, and Running Totals)

完整的内容可以参考设计器的Template considerations的内容。

5000万年后的人类长相

今天看参考消息,第七版的一个问与答很有意思,问题是:
在今后5000万年里,人类的长相会如何改变。
在解答的最后,解答者给出的答案是:
据猜测,我们最终会发现对自己的人品和特征进行电子编码的方法,世界上的“人口”可能会存在于虚拟形式中,包含在一台电脑的存储器内,而人性特征则可以在一小批必需的有机人体之间来回传输。

这个答案很有意思,让我想起了黑客帝国和终结者三,以及原型模式,他将黑客帝国中的虚拟社会描绘为未来的真实社会,利用终结者三中的未来智能机器人随时变身的能力并应用原型模式完成人的实例化。

错误百出

看来JRoller的blog还不够强壮,今天发现了几个错误。

  • 将显示的项数设置为1后下面的那个导航的链接不好用了,在一天有多篇blog的情况下
  • 那个导航链接不能去掉,从页面里面不能去掉

只能看看什么时候升级了跟着升级了,velocity实在是不好改。

晚上看了下JRoller的velocity的模板,在显示blog的模式可能有问题,首先是按照blog项取出,然后按照天进行分组,这样,如果设置显
示的最大项数是1或者某个值,而该天的blog数大于这个数,那么比较旧的那些项就无法通过下面的导航链接看到,因为那些导航链接是以某天的某项(页面内
的链接,也就是以#标记的)为地址的,因此就会出现回到当前页面的问题。

无锡太湖一日游

昨天到无锡玩了一天,早上九点坐T710出发,十点十五到,然后吃点饭,坐K2到了个地方,然后坐K98到了百米喷泉(很遗憾我们没有看到喷泉,据说喷的时候高达百米,很远的山上都可以看到),然后打的到了鼋头渚,门票七十,先
坐大巴到码头,然后坐游船上岛,岛不大,两个小时就可以逛玩,我记得的就是水帘洞、月老祠、天街、凌霄宫、仙佛洞、银河、卧佛啊什么的,然后坐游艇回到出发的地
方,其实外面的大岛上还有一些景点,但是我们不知道回来的火车,所以急急忙忙的坐K1回火车站买票(去的时候决定比较仓促,没有查回来的火车)。

这次因为有朋友接待,所以不是走的直线,其实在火车站下车后可以坐K1直达鼋头渚(公交车站就在出站口上面),玩完以后坐K1回火车站(最后一趟车好像是六点半的),可以买七点十五的T719回上海。

在无锡玩还有一个好处,就是上海的公交卡也可以用,刷卡就行,不用带那么多零钱,而且会出现五分或者一角的情况,因为在无锡刷卡是打九五折的。

虚伪的百度

最近不知为何百度把JR从他们的搜索结果中屏蔽掉了,因此就研究了一下百度的搜索,结果发现百度实在是很虚伪的,下面以搜索java为例说明:

  • 百度将搜索结果的前三页的前四名或者前三名都出卖了,而google坚定的将广告放在了右边独立的位置并标明是“赞助商链接
  • 百度谎报搜索结果或者说不给出任何说明,就搜索java而言,百度声称搜索到9,840,000篇,但是实际上你只能翻到第75页,也就是只有750个结果,而你通过修改URL的结果是:
    未找到和您的查询”java
    相匹配的网页,建议您:
     
    1. 查看输入的文字是否有误;
    2. 去掉可能不必要的字词,如”的”、”什么”等;
    3. 请看百度帮助;或点此与百度对话
    4. 总有一个人知道你问题的答案,查看百度知道;
    5. 查看百度贴吧:

        但是用google检索的话有363,000,000项符合,可以翻到95页,修改URL往后翻的结果是:

对不起,Google 为所有查询的结果数都不会超过 1000 个。 (您所请求的结果在第 1000
个之后。)

最后让我们来看看百度搜索java第一页的结果截图,在1024*768分辨率下的IE中,
第一页第一屏中除了最下面的一个结果外全部是广告


关注自己的身体

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

ACSII版的星战电影!!!

v>在Console中输入下面这行语句,然后就坐下来泡杯coffee,慢慢欣赏吧~

 

telnet towel.blinkenlights.nl

更早的文章 更新的文章

© 2025 解惑

本主题由Anders Noren提供向上 ↑