??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲福利电影一区二区?,亚洲av无码偷拍在线观看,亚洲AV中文无码乱人伦http://m.tkk7.com/bcims/category/7096.html<font color="red"><b>什么样的素质决定什么样的技?lt;/b></font> <div style="font-size:12px;cursor:pointer"> <span title="www"> www.WoMenSou.com <我们?gt;</span></divzh-cnFri, 28 Mar 2008 19:05:25 GMTFri, 28 Mar 2008 19:05:25 GMT60jacob问题-大家帮我看看,先谢q!http://m.tkk7.com/bcims/archive/2008/03/29/189395.htmlEricWongEricWongFri, 28 Mar 2008 18:16:00 GMThttp://m.tkk7.com/bcims/archive/2008/03/29/189395.htmlhttp://m.tkk7.com/bcims/comments/189395.htmlhttp://m.tkk7.com/bcims/archive/2008/03/29/189395.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/189395.htmlhttp://m.tkk7.com/bcims/services/trackbacks/189395.html首先我已l做了如下配|:
1.导入 jacob.jar q个包?br />2.?jacob.dll 拯?C:\WINDOWS\system32 目录下?br />以上的两个文件您可以到网?strong>http://danadler.com/jacob/ 下蝲?.7的版?br />jacob.jar ?jacob.dll 版本一致?br />
代码如下Q?br />package one;

import com.jacob.com.*;
import com.jacob.activeX.*;
import java.io.*;
//取得指定目录下面所有的doc文g名称
public class wordtohtml2 {
 // ------------------------------------------------------------------------------
 // Ҏ原型: change(String paths)
 // 功能描述: 指定目录下面所有的doc文g转化为HTML(html文g夹必d?q存储在相同目录?br /> // 输入参数: String
 // 输出参数: ?br /> // q??? ?br /> // 其它说明: 递归
 // ------------------------------------------------------------------------------
 public static void change(String paths, String savepaths) {
  File d = new File(paths);
  // 取得当前文g夹下所有文件和目录的列?br />  File lists[] = d.listFiles();
  String pathss = new String("");
  // 对当前目录下面所有文件进行检?br />  for (int i = 0; i < lists.length; i++) {
   if (lists[i].isFile()) {
    String filename = lists[i].getName();
    String filetype = new String("");
    // 取得文gcd
    filetype = filename.substring((filename.length() - 3), filename.length());
    // 判断是否为doc文g
    if (filetype.equals("doc")) {
     System.out.println("当前正在转换......");
     // 打印当前目录路径
     System.out.println(paths);
     // 打印doc文g?br />     System.out.println(filename.substring(0, (filename.length() - 4)));
     ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
     String docpath = paths + filename;
     String htmlpath = savepaths + filename.substring(0, (filename.length() - 4));
     String inFile = docpath;
     // 要{换的word文g
     String tpFile = htmlpath;
     // HTML文g
     boolean flag = false;
     try {
      app.setProperty("Visible", new Variant(false));
      // 讄word不可?br />      Dispatch docs = app.getProperty("Documents").toDispatch();
      Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[] {inFile, new Variant(false), new Variant(true)}, new int[1]).toDispatch();
      // 打开word文g
      Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { tpFile, new Variant(8) }, new int[1]);
      // 作ؓhtml格式保存C时文?br />      Variant f = new Variant(false);
      Dispatch.call(doc, "Close", f);
      flag = true;
     } catch (Exception e) {
      e.printStackTrace();
     } finally {
      app.invoke("Quit", new Variant[] {});
     }
     System.out.println("转化完毕Q?);
    }
   } else {
    pathss = paths;
    // q入下一U目?br />    pathss = pathss + lists[i].getName() + "\\";
    // 递归遍历所有目?br />    change(pathss, savepaths);
   }
  }
 }
 public static void main(String[] args) {
  String paths = new String("e:\\english\\ebook\\");
  String savepaths = new String("e:\\english\\ebook\\");
  change(paths, savepaths);
 }
}
q行后出现的错误为:
com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Documents
Description: An unknown COM error has occured.
 at com.jacob.com.Dispatch.invokev(Native Method)
 at com.jacob.activeX.ActiveXComponent.getProperty(ActiveXComponent.java)
 at one.WordtoHtml.change(WordtoHtml.java:25)
 at one.WordtoHtml.main(WordtoHtml.java:39)
Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Quit
Description: An unknown COM error has occured.
 at com.jacob.com.Dispatch.invokev(Native Method)
 at com.jacob.activeX.ActiveXComponent.invoke(ActiveXComponent.java)
 at one.WordtoHtml.change(WordtoHtml.java:35)
 at one.WordtoHtml.main(WordtoHtml.java:39)


附加Q下面是ȝ了的错误Q?/strong>
1、如果出C面的错误
com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Version
Description: An unknown COM error has occured.
表示dll的版本不对,换成最新版本即可?
2、如果出C面的错误
no jacob in java.library.path
java.lang.UnsatisfiedLinkError: no jacob in java.library.path
表示把dll攑ֈpath下即可,讄path或是攑ֈwindow/system32?



EricWong 2008-03-29 02:16 发表评论
]]>
不错的Ext 2.0Q推荐给各位Q?/title><link>http://m.tkk7.com/bcims/archive/2008/02/16/180180.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sat, 16 Feb 2008 04:53:00 GMT</pubDate><guid>http://m.tkk7.com/bcims/archive/2008/02/16/180180.html</guid><wfw:comment>http://m.tkk7.com/bcims/comments/180180.html</wfw:comment><comments>http://m.tkk7.com/bcims/archive/2008/02/16/180180.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/bcims/comments/commentRss/180180.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/bcims/services/trackbacks/180180.html</trackback:ping><description><![CDATA[前段时候朋友推荐我Mext包看?br />下完了看了一下文档和在网上找了些介绍的资?br />试了一下,是一个ajax的包Q如果你用来做小目的话Q还真的不错<br />省去了你很多ȝ.....<br />具体怎么个好法的话 ,最好你q是自己试用一?br />推荐你进<a >http://www.cn-java.com/www1/?uid-45-action-viewspace-itemid-4263</a>  q个教E?br /><br />我试了一下,效果囑֦?br /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=633043282327207582" width="1" border="0" /><br /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=633043282327207582" width="1" border="0" /><br /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=633043282327207582" width="1" border="0" /><img height="331" alt="45.jpg" src="http://m.tkk7.com/images/blogjava_net/bcims/插图/45.jpg" width="546" border="0" /><img src ="http://m.tkk7.com/bcims/aggbug/180180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/bcims/" target="_blank">EricWong</a> 2008-02-16 12:53 <a href="http://m.tkk7.com/bcims/archive/2008/02/16/180180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>帐号Ȁzd现思\http://m.tkk7.com/bcims/archive/2008/01/27/177992.htmlEricWongEricWongSun, 27 Jan 2008 02:56:00 GMThttp://m.tkk7.com/bcims/archive/2008/01/27/177992.htmlhttp://m.tkk7.com/bcims/comments/177992.htmlhttp://m.tkk7.com/bcims/archive/2008/01/27/177992.html#Feedback4http://m.tkk7.com/bcims/comments/commentRss/177992.htmlhttp://m.tkk7.com/bcims/services/trackbacks/177992.html
需要数据表的设计:
1Q用户名QUniqueQ?
2QE-mailQUniqueQ?
3Q激zȝQUniqueQ?
4Q状态:1Q尚待激z;2Q已Ȁz?

在用h册时Q通过用户名、E-mail及注册时_毫秒旉Q等信息采用特定的算法,一般采用不可逆的摘要法Q如QMD5、SHA{。生成一l摘要,注册后将Ȁzȝ作ؓURL参数Q比如:www.abc.com/user/activation?code=123456Qcode的gؓȀzȝQ将q一链接发送E-maill用P在用L击该链接后,通过code这个激zȝ的̎L态设为“已ȀzZ即可。由于激zȝ是Unique的,所以不可能出现相同的,之所以采用MD5、SHAQ是׃MD5出现撞的概率很,SHA则更,而且Java中也提供了现成的cd用于产生信息摘要Q用v来比较方ѝ?


EricWong 2008-01-27 10:56 发表评论
]]>
Sun?0亿美元收购MySQLhttp://m.tkk7.com/bcims/archive/2008/01/17/176043.htmlEricWongEricWongThu, 17 Jan 2008 11:08:00 GMThttp://m.tkk7.com/bcims/archive/2008/01/17/176043.htmlhttp://m.tkk7.com/bcims/comments/176043.htmlhttp://m.tkk7.com/bcims/archive/2008/01/17/176043.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/176043.htmlhttp://m.tkk7.com/bcims/services/trackbacks/176043.html1?6?Sun宣布已经与MySQL AB达成协议Q以大约10亿美元收购MySQL ABQ其?亿美元现金收购MySQL AB的全部股权,另外?亿美元作为期权?

MySQL负责开发社区的副总裁 Kaj 在他的blog中分析了q单交易对于MySQL的用戗核心社Z及公司员工会带来哪些影响Q还发表了他与MySQL的两位创始hMonty和David关于此事的交谈?

MySQL总部位于瑞典Q在全球25个国家共有约400名员工。交易完成之后,MySQL首席执行官马·尼U斯(Marten Mickos)加盟Sun理层。Sun一直是开放源代码软g的坚定支持者,该公司希望通过q一模式从Y件业务获得更多营收。在此之前,Sun一直ؓMySQL的竞争对手PostgreSQL销售支持服务?

对于Sun来说Q收购MySQL有助于该公司更好Cؓ开放源代码|络应用q_LAMP提供支持。LAMP是Linux操作pȝ、Apache|络服务器、MySQL数据库和PHP/Perl~程语言的首字母~写。这一交易预计于2008q第三季度或W四季度完成Q如何获得够的现金Q对于Sun来说是W一要务。Sun首席执行官乔Ux·舒瓦?Jonathan Schwartz)表示Q在交易完成之前Q该公司将开始ؓMySQL客户提供支持服务?/p>

EricWong 2008-01-17 19:08 发表评论
]]>
Tomcat5.5.16环境下虚拟目录的讄http://m.tkk7.com/bcims/archive/2007/12/26/170727.htmlEricWongEricWongWed, 26 Dec 2007 13:57:00 GMThttp://m.tkk7.com/bcims/archive/2007/12/26/170727.htmlhttp://m.tkk7.com/bcims/comments/170727.htmlhttp://m.tkk7.com/bcims/archive/2007/12/26/170727.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/170727.htmlhttp://m.tkk7.com/bcims/services/trackbacks/170727.html假如Q现在要Z个名?jsp 的虚拟目录,物理目录为D:\jspQ如果tomcat5.5安装在D:\Tomcat 5.5Q则扑ֈtomcat安装目录下的conf\Catalina\localhost文g夹,在里面新加名?jsp.xml 的xml文gQ文件内容如下:

<Context path="/jsp" docBase="d:/jsp" reloadable="true" crossContext="true" debug="0" ></Context>

注意Q?、xml的文件名必须和虚拟目录相?br />          2、一个xml文g只能讄一个Context path
 



EricWong 2007-12-26 21:57 发表评论
]]>
MYSQL-FRONT 3.2 注册?/title><link>http://m.tkk7.com/bcims/archive/2007/12/26/170436.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Tue, 25 Dec 2007 18:23:00 GMT</pubDate><guid>http://m.tkk7.com/bcims/archive/2007/12/26/170436.html</guid><wfw:comment>http://m.tkk7.com/bcims/comments/170436.html</wfw:comment><comments>http://m.tkk7.com/bcims/archive/2007/12/26/170436.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.tkk7.com/bcims/comments/commentRss/170436.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/bcims/services/trackbacks/170436.html</trackback:ping><description><![CDATA[ <p>虽然front停止开发了Q但仍然是一个不错的工具....<br /></p> <p>复制以下内容到mysql front ?/p> <div id="brppptt" class="UBBContent">aLuo8QAslIZw/xEq9+A4LczWqdUdCq/fS<br />AgwKBpvj3uLonNP5NnixM+qDj3Od1JzPf<br />m5XpDptwF2zNsIq1PSLNmp9OLRHpT/zke<br />By4M6aBTTrNA9bnX4hb9RPpT1nIViykZb<br />iYO/dc33UNBt6MTQX+F8xIrmVrIPkCvS6<br />AaQAwOb+LgykeD7iwLDkUCvTXlP5HHHTY<br />whtg6+VKRTas04Wm8zvzQnxFNjOpF8F0e<br />Bo2wNmKtGz/o8V5lbqTq0cisaqzfb55lH<br />54i6NDGb4DhCVg== </div> <img src ="http://m.tkk7.com/bcims/aggbug/170436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/bcims/" target="_blank">EricWong</a> 2007-12-26 02:23 <a href="http://m.tkk7.com/bcims/archive/2007/12/26/170436.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>msnd不了错误代码80048820扩展错误代码 80048412http://m.tkk7.com/bcims/archive/2007/12/05/165473.htmlEricWongEricWongWed, 05 Dec 2007 05:43:00 GMThttp://m.tkk7.com/bcims/archive/2007/12/05/165473.htmlhttp://m.tkk7.com/bcims/comments/165473.htmlhttp://m.tkk7.com/bcims/archive/2007/12/05/165473.html#Feedback10http://m.tkk7.com/bcims/comments/commentRss/165473.htmlhttp://m.tkk7.com/bcims/services/trackbacks/165473.html昨天来登陆MSN的时候,H然登陆不上了,出现了问题?br />主要是时间不对的问题?br />最有可能的原因Q?pȝ旉错误 q回信息Q?0048820,L说防火墙讄LMSN的连接。但在MSN的网l连接测试中都是成功?解决ҎQ系l日期不寚w成的!Q!Q,请你认真查看是否在你升到MSN7.5以后Q系l日期变成了2004q_如果是直接将pȝ日期Ҏ现在的时间?点击右下角系l时间设|ؓ当前正确旉。OKQ?br />下面是解决的Ҏ....
下面引用官方关于该代码的{复Q?
How to fix error code 80048820
Problem description
When you start MSN Messenger you cannot sign in, and you get the message:
Sorry, we were unable to sign you in to the MSN Messenger at this time. Please try again later. To let us try and troubleshoot the problem, click the Troubleshoot button. 80048820
Fix this error / possible solution
This error seems to indicate a problem with MSN Messenger's encryption routines.
The usual cause is that the time on your computer is not correct. To correct the time on your computer, double-click the clock in the bottom right of your screen, in the window that appears you should check both the time and date. If you use Windows XP, you can automatically correct the time by clicking the "Internet Time" tab, next click the "Update Now" button.
If you still have problems connecting with the time adjusted, try to run this file. This will make sure MSN Messenger can find all the files it needs on your computer.
中文大概意思:当你的MSN 无法dQ且提示错误代码?0048820Q这U问题一般是׃你的pȝ旉不对Q先校准pȝ旉Q如果仍然无法登录,可能是由于DLL文g注册信息丢失Q下载这个批处理文g http://www.msn-problems.com/downloads/register-messenger-dll-files.bat q行一下,问题应该可以解决

然后教你怎么栗。。?br />This register-messenger-dll.bat file will register DLL files required for Messenger.
To run it simply doubleclick, or click it with right mouse and select Open.

For your safety, it is advised you only download the file from imzers.com
You can always have a look at it's content by opening it with any text editor.

It will execute the following commands:
regsvr32 softpub.dll
regsvr32 Wintrust.dll
regsvr32 Initpki.dll
regsvr32 Dssenh.dll
regsvr32 Rsaenh.dll
Regsvr32 Gpkcsp.dll
Regsvr32 Sccbase.dll
Regsvr32 Slbcsp.dll
Regsvr32 Mssip32.dll
Regsvr32 Cryptdlg.dll

You can also do this by hand. Click Start, and then press Run...
Now type: 'regsvr32 softpub.dll' and click OK or press ENTER.
Repeat with all other lines as shown above.

Have fun using Messenger!



EricWong 2007-12-05 13:43 发表评论
]]>
一个很酷也很实用的RIA工具Q在Uvisio http://m.tkk7.com/bcims/archive/2007/11/16/160881.htmlEricWongEricWongThu, 15 Nov 2007 17:55:00 GMThttp://m.tkk7.com/bcims/archive/2007/11/16/160881.htmlhttp://m.tkk7.com/bcims/comments/160881.htmlhttp://m.tkk7.com/bcims/archive/2007/11/16/160881.html#Feedback4http://m.tkk7.com/bcims/comments/commentRss/160881.htmlhttp://m.tkk7.com/bcims/services/trackbacks/160881.html在JAVAEYE上看到这个工P感觉不错Q收h跟朋友共享,感谢JAVAEYE.........
有了q个工具Q如果没有装visioQ在U画dQ真不错Q?br />

best4c.com 最好的webd工具

Best4C提供的功能与微Y的流E图制作工具VisiocM,q是一ƾ新上线的来自于国内|络工具,目前提供基础囑Ş、流E图、网l图、家居设计图、办公室布局?UML囑֤个种c?每种U类都提供了相应的模?能够让你随时,随地的方便的创徏,修改,分n各种图表.Best4c图表可以使消息变得更为简l?帮助ZC要点,同时帮助Z跨越文化和技术障?

1 方便的在U画囑֒分n
2 拖拽灉|Q强大的桌面软g体验
3 无需下蝲安装Q兼容FireFox,IE,Opera,Safari
4 能够为您的图导出PDF和PNG格式q且能够q速的复制到Word,Excel,Powerpoint中?
5 强大的协同^収ͼ邀请他人编辑或查看您的图,q且可以保存所有的修改版本Q?
6 灉|的模版,能够Ld 程图,室内布置图,|络图,UML囄多种囑Ş

大家可以Ҏ看看在JavaEye blog的实际效?/a>

q个产品 随着是联想中央研发机?-联想研究院网?a target="blank">lenovolabs.com一?推出的。据悉,q是联想研究院是Z探烦互联|技术而开讄|站Q采取了Web2.0模式Q走的是SaaS“Y件就是服务”的路线?



EricWong 2007-11-16 01:55 发表评论
]]>
apache目录览讄http://m.tkk7.com/bcims/archive/2007/10/29/156563.htmlEricWongEricWongSun, 28 Oct 2007 18:15:00 GMThttp://m.tkk7.com/bcims/archive/2007/10/29/156563.htmlhttp://m.tkk7.com/bcims/comments/156563.htmlhttp://m.tkk7.com/bcims/archive/2007/10/29/156563.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/156563.htmlhttp://m.tkk7.com/bcims/services/trackbacks/156563.html用途:在目录下如果没有默认首页面(如index.html default.htmQ时防止用户讉Kweb时浏览目?br />打开httpd.conf
查找Options Indexes FollowSymLinks
修改为:
Options -Indexes FollowSymLinks

修改保存退出,重新启动apache
讉Khttp://127.0.0.1如果看到以下提示说明修改成功

Forbidden

You don't have permission to access / on this server.


Apache/2.0.53 (Unix) Server at 192.168.0.1Port 80
 
 
 
开启浏?
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Options Indexes           #加q句可以了,目录按需要选择
</Directory>


EricWong 2007-10-29 02:15 发表评论
]]>
很Ş象的接口的用——针对初学?http://m.tkk7.com/bcims/archive/2007/09/15/145322.htmlEricWongEricWongSat, 15 Sep 2007 03:05:00 GMThttp://m.tkk7.com/bcims/archive/2007/09/15/145322.htmlhttp://m.tkk7.com/bcims/comments/145322.htmlhttp://m.tkk7.com/bcims/archive/2007/09/15/145322.html#Feedback5http://m.tkk7.com/bcims/comments/commentRss/145322.htmlhttp://m.tkk7.com/bcims/services/trackbacks/145322.html我们拿h和程序员举个例子。h是一个大c,E序员是l承自h的子cR看看这句话Qh需要吃饭。这句话我们把“h”换成“程序员”,是Q程序员需要吃饭,q样换不会有什么问题。现在我们反q来Q把“程序员可以用计机写程序”里边的E序员换成“h”,是Qh可以用计机写程序。这样就不一定正了Q否则问题可大了,我们q些E序员只怕没得饭吃了?br />q个是里氏代换原则Q用父cȝ地方肯定可以用它的一个子cL替换掉,但是使用一个子cȝ时候用它的父类来替换就不一定正了?br />好,现在我们回到E序设计里边来?br />看看下面的程序:
一个学校里边,有两UhQ学生、老师。他们都要吃饭和睡觉?

public interface 人{
    void 吃饭();
    void 睡觉();
}
 
public class 学生 implements 人{
    public void 吃饭(){
        //去食堂吃?br />    }
    public void 睡觉(){
        //回寝室睡?br />    }
    ...//其他ҎҎQ比如妞、打游戏
}
 
public class 老师 implements 人{
    public void 吃饭(){
        //回家吃饭
    }
    public void 睡觉(){
        //回家睡觉
    }
    ...//其它ҎҎQ比如ؓ生儿育女传宗接代的历史命努力等不为外人道的事?br />}
 
public class 学校{
    public void 开??ren){
        ren.吃饭();
    }
    public void 攑֭(?ren){
        ren.睡觉();
    }
}
 
q里qC里氏代换原则Q?开?)"?攑֭()"的参数都是hQ那么这个地方如果换成学生和老师肯定也可以?/div>
 
?a = new 学生();
学校.开?a);
学校.攑֭(a);
 
q样执行的结果就是学生回寝室吃饭?/div>
 
?b = new 老师();
学校.开?b);
学校.攑֭(b);
 
q样执行的结果就是老师回家吃饭?/div>
 
Z么要q样写呢Q这样写有什么好处呢Q?br />我在开饭的时候完全可以直接调?学生.吃饭();"?老师.吃饭();"啊?br />接着看?br />有一天,学校里来了第三种人,安?br />安既不是去寝室睡觉也不是回家睡觉,而是旅馆睡觉Q既不是去食堂吃饭也不是回家吃饭Q而是M馆子?br />q个时候学校这个系l该怎么处理呢?
如果原来没有定义"?q个接口那就ȝ啦,所有用Ch的地方代码都要改?br />现在不一样了Q我可以直接定义一个类Q家长,q个cdChq个接口可以了?br />好,看代码:
 
public class 安 implements 人{
    public void 吃饭(){
        //下馆?br />    }
    public void 睡觉(){
        //L馆睡?br />    }
    ...//其它ҎҎQ比如会见老师Q晓之以钱,动之以利{等Q不一而
}
 
在调用的时候不需要修改Q何代码,q和原来一P
 
?c=new 安();
学校.开?c);
学校.攑֭(c);
 
L搞定安的食安K题!
 
q样一来学校来再多的客人都没关pdQ绝对可以应付自如,q也是传说中的可扩展性!
不知道初学者看到这里是不是能够明白接口的作用。如果你q不明白Q那么你把hq个接口LQ自己写一个学校开饭和攑֭的类Q然后再加一个家长这个新Chc进去,看看你的代码是什么样子的Q再想一下在人口q么多的中国Q万一哪天你的学校里来了成千上万个新新人类你该怎么办!


EricWong 2007-09-15 11:05 发表评论
]]>时刻xRFID的发?/title><link>http://m.tkk7.com/bcims/archive/2007/08/08/135319.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Wed, 08 Aug 2007 11:10:00 GMT</pubDate><guid>http://m.tkk7.com/bcims/archive/2007/08/08/135319.html</guid><wfw:comment>http://m.tkk7.com/bcims/comments/135319.html</wfw:comment><comments>http://m.tkk7.com/bcims/archive/2007/08/08/135319.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/bcims/comments/commentRss/135319.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/bcims/services/trackbacks/135319.html</trackback:ping><description><![CDATA[ q几q来Q科学技术的飞速发展的同时也正改变着Z的生zR我q记得小时候买东西Q商品上基本上是没有什么识别码的,现在基本有了条型码,l商品的销售,识别Q存储等各方面带来了方便QRFID技术 的诞生再一ơ给Z带来极大的便利,RFID正在向日常生zd工作的各个方面快速渗透。国内对RFID技术和应用的研I在l历了概念认知,技术储备,产品研发Q业务摸索等阶段之后Q对RFID的认识越理性化Q而随着国内RFID标准的制订和明确Q中国RFID得到更快速的发展? <p>  谈到RFIDQ不能不提沃玛。作Z货强制o的始作俑者,沃尔玛在2005q的应用整体情况看好。来自沃玛的报告表明,截至?005q?月,在美国的沃尔?04家超市?6家山姆会员店?6个配送中心已l用了RFID技术,同时参与q个目的已?30个供应商Q?5000个托盘,q已收到贴有标签的货?89万个Q这一应用状况已大大超q了沃尔玛的预期。而根据阿肯色大学最q一w?个月的研I发玎ͼ在用RFID标签的沃玛商场里面的货品脱销现象减少16%QRFID技术在货品补充上要比传l条形码技术快3倍?br /><br />      之所以国外一些公司提L要求是因为普遍用的条Ş码标{օ致命~陷是其低存储容量和不能重新~程的特炏V?<br />技术上讲更好的Ҏ是在芯片之上存储数据。我们日常生zM在用的最常见的电子数据设备是接触式IC?电话卡,银行卡等)。然是机械接触的IC卡却限制了其适用性。在数据承蝲讑֤和阅d之间的非接触式数据传输可以带来更大的灉|性。在理想情况下,用于操作数据承蝲讑֤所需的电力也可以通过非接触方式从阅读器进行传输。因为用于传输数据和电力的方式,非接触ID pȝ也称为是<em>RFID </em><em>pȝ</em>(频识别)?z跃在RFIDpȝ领域中进行开发和销售的公司的数量说明了q是一个应该认真对待的市场?em>RFID </em><em>市场因此成ؓ频技术领?/em> Q还包括Ud电话和无l电话)增长最快的领域?<br /><img height="351" alt="clip_image002_0001.jpg" src="http://m.tkk7.com/images/blogjava_net/steelhand/rfid/clip_image002_0001.jpg" width="576" border="0" /><br />               <font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">   </font><a id="_Toc120083992" name="_Toc120083992"><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">?/font></a><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff"> 1 RFID的应用市场增?/font><br />q且Q近q来Q非接触识别已经发展成一本独立的交叉学科Q它整合了多U完全不同的领域Q高频技术和EMCQ半g技术,数据保护和加密,通信Q制造科学和其他相关领域的技术?</p><h2><a id="_Toc120084060" name="_Toc120084060">自动识别pȝAutomatic Identification Systems</a>Q?/h2><p><img height="320" alt="clip_image004_0001.jpg" src="http://m.tkk7.com/images/blogjava_net/steelhand/rfid/clip_image004_0001.jpg" width="448" border="0" /><br />               <a id="_Toc120083993" name="_Toc120083993"><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">?/font></a><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">2 主要的自动识别技?/font></p><h3><a id="_Toc120084061" name="_Toc120084061">条Ş码系l?/a></h3><p>条Ş码系l(Bar Code SystemQ在q去20q历牢牢的统ȝ识别pȝ领域?据专家估计,在上世界90q代早期Q条形码pȝ在西Ƨ的d量曾辑ֈ30亿d国马克?<br />条Ş码是由^行排列的U条和间隔所l成的二q制~码。它们根据预定的模式q行排列q且表达相应记号pȝ的数据项。宽H不同的U条和间隔的排列ơ序可以解释成数字或者字母。它可以q行光学扫描阅读Q即Ҏ黑色U条和白色间隔对Ȁ光的不同反射来识别。但是尽其物理原理怼Q目前在用的大约?0数种不同的编码和布局Ҏ?<br />最行的条形码Ҏ?em>EAN </em><em>~码</em> (Ƨ洲物体~码)Q它?976q设计,本来针对杂货店。EAN ~码是美国UPC (通用产品~码)的发展。今天, UPC表达为EAN ~码的子集,q且可以兼容之?<br />EAN ~码?3位数字组成:国家标识W,公司标识W,刉商的物品标识符和校验位。如?Q?<br /><img height="183" alt="clip_image005.jpg" src="http://m.tkk7.com/images/blogjava_net/steelhand/rfid/clip_image005.jpg" width="451" border="0" /><br />                    <a id="_Toc120083994" name="_Toc120083994"><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">图表</font></a><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff"> 3  EAN~码的条形码实例</font><br />除了EAN 之外Q下列条形码在各U领域也很流行:</p><ul><li>Code Codabar: d和床应用,以及高安全需求的领域 </li><li>Code 2/5 interleaved: 自动化工业, 货物存储Q货盘, 装船容器和重工业? </li><li>Code 39: 程工业Q物, 大学和图书馆?</li></ul><p align="center"><img height="142" alt="clip_image007.jpg" src="http://m.tkk7.com/images/blogjava_net/steelhand/rfid/clip_image007.jpg" width="168" border="0" /><br /><a id="_Toc120083995" name="_Toc120083995"><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">?/font></a><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">4  ISBNl一书号代码</font><br />׃一l条码的信息定w很小Q如商品上的条码仅能容纳几位或者几十位阿拉伯数字或字母Q商品的详细描述只能依赖数据库提供,d了预先徏立的数据库,一l条码的使用受C局限。基于这个原因,Zq切希望发明一U新的码Ӟ除具备一l条码的优点外,同时q有信息定w大、可靠性高、保密防伪性强{优炏Vؓ了满h们的q种需求,国Symbol公司l过几年的努力,?991q正式推出名为PDF417的二l条码,UCؓPDF417条码Q见下图Q,?“便携式数据文g”?<br /><img height="107" alt="clip_image008_0001.jpg" src="http://m.tkk7.com/images/blogjava_net/steelhand/rfid/clip_image008_0001.jpg" width="295" border="0" /><br /><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">图表5 二维条码PDF417</font><br />PDF417条码是一U高密度、高信息含量的便携式数据文gQ是实现证g及卡片等大容量、高可靠性信息自动存储、携带ƈ可用机器自动识读的理xDcPDF417条码h如下特点Q?</p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">信息定w?/font></li></ul><p>Ҏ不同的条I比例每qx英寸可以容纳<strong>250</strong><strong>?/strong><strong>1100</strong>个字W。在国际标准的证卡有效面U上(相当于信用卡面积?/3Q约?6mmQ?5mm), PDF417条码可以容纳1848个字母字W或2729个数字字W,U?00个汉字信息。这U二l条码比普通条码信息容量高几十倍?</p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">~码范围q?/font></li></ul><p>PDF417条码可以照片、指UV掌UV签字、声韟뀁文字等凡可数字化的信息q行~码?</p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">保密、防伪性能较好</font></li></ul><p>PDF417条码h多重防伪Ҏ,它可以采用密码防伪、Y件加密及利用所包含的信息如指纹、照片等q行防伪Q因此具有极强的保密防伪性能?</p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">译码可靠性高</font></li></ul><p>普通条码的译码错误率约为百万分之二左右Q而PDF417条码的误码率不超q千万分之一Q译码可靠性极高?</p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">修正错误能力?/font></li></ul><p>PDF417条码采用了世界上最先进的数学纠错理论,如果破损面积不超q?0Q,条码׃沾污、破损等所丢失的信息,可以照常破译Zq信息?</p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">Ҏ制作且成本低</font></li></ul><p>利用现有的点c激光、喷墨、热?热{印、制卡机{打印技术,卛_在纸张、卡片、PVC、甚至金属表面上印出PDF417二维条码。由此所增加的费用仅是a墨的成本Q因此h们又UPDF417是“零成本”技术?</p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">条码W号的Ş状可?/font></li></ul><p>同样的信息量QPDF417条码的Ş状可以根据蝲体面U及工设计{进行自我调整?<br />在我国,中国物品~码中心介绍了二l条码国家标准《四一七条码》,即GBQT17172Q?997?/p><p>  来自业界的信息表明:几家主要的国际零售商的RFID执行计划已经q入W二轮,而沃玛的实施时间表比预计的提前了;另外Q中国的许多刉业供应商去q已l收到要求在产品贴标{正式通知Q不q每个厂商反应的方式不相同,那些在企业内部供应链上也能见到效应的更积极一些;另外Q就公司参与的RFID目也显C美国的许多沃尔玛供应商已经开始了内部供应铄应用Q而在标签技术上QEPC Gen2在今q的成熟加速其在世界范围的应用Qƈ推动中国的RFID应用快速发展?br /><br />7?0日,中国RFID产业联盟副理事长、科技部张智文教授在国安卡工E协调领导小l办公室联合信息产业部无U电理局召开的“?00/900MHz频段频识别(RFID)技术应用规?试行)》宣贯会”上针对RFID的技术和标准问题讲了下面几个斚w?br /> <br /><strong>RFID在中国的应用q刚刚开?br />中国政府各相关部委已l重视RFID发展<br />中国一定将有自q标准体系 <br />我们仍然~少h自主知识产权的RFID核心技术,鼓励企业q入<br />RFID是一个庞大的pȝQ希望各部门Q企业,C会互相配合 <br /><br /></strong>在java斚wQ系lRFID软g3.0与SAP NetWeaverq_Auto-ID架构lg的集成,实现Sun与SAP RFID技术之间RFID数据|络通讯Q实CMRFID驱动的设备到mySAP商用套g之间的无~数据流传输。这个新软g使用了JiniZ技术的动态联|能力,即是在苛刻的生产环境下QRFID数据也可以持l向SAP应用传输。Sun的RFID软g本质上可以与M企业U应用相集成Q包括带有SAP的Auto-ID架构的可用连接?Java嵌入的读取器也可以利用Sun的Jini|络技术增加其它服务。Jini可以用在RFID环境中帮助读取器自我恢复和制订更高别决{Y件的自动配置?/p><p><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">在国内RFID技术也已经应用Q像杭州的少部分公交和上L液化气管理采用了RFID后,都得C良好的效果?br /><br />当然RFID在国内还刚开始v步,发展的空间也很大Q我希望大家和我一起关注,和喜ƢRFID技术的朋友一赯论共同进步?br /></font><br /></p><img src ="http://m.tkk7.com/bcims/aggbug/135319.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/bcims/" target="_blank">EricWong</a> 2007-08-08 19:10 <a href="http://m.tkk7.com/bcims/archive/2007/08/08/135319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>随手整理Java与C的不同点及心?/title><link>http://m.tkk7.com/bcims/archive/2007/07/29/133117.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sun, 29 Jul 2007 05:58:00 GMT</pubDate><guid>http://m.tkk7.com/bcims/archive/2007/07/29/133117.html</guid><wfw:comment>http://m.tkk7.com/bcims/comments/133117.html</wfw:comment><comments>http://m.tkk7.com/bcims/archive/2007/07/29/133117.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://m.tkk7.com/bcims/comments/commentRss/133117.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/bcims/services/trackbacks/133117.html</trackback:ping><description><![CDATA[不知道从什么时候v喜欢JAVA的,从JDK1.4到现?.6Q从最基本的main()开始到现在从事J2EE的开发,从ASP做WEBE序到现在用JAVA独立开发YӞ回头看一下,光阴已走Q\q是q条路?br />朋友偶尔问我C语言斚w的东西,自己从来没有pȝ学过Q有些问题一知半解,到最q几天拿着高中买的数据l构<C语言?gt;看,g׃了CQ程序贵在相通,万变不离其宗Q上手很快。趁现在坐在客厅里吹风,有本本在Q随手在|上找些资料整理一下JAVA和C的区别,但又很矛盾,如果单从语言来比较是没有什么太多意义的Q一个类似寄生虫一L东西Q一个是生下来就可以跑的家伙Q但我今天的BLOGq是要写Q以此充数吧Q至也是我的心得?img height="19" src="http://m.tkk7.com/Emoticons/emsmilep.gif" width="19" border="0" /><br /><br />    1Q Java没有预处理指令。(如C中的#define , #include , #ifdef{)。C中的帔R定义在Java中用static final来取代?br />    2Q Java中没有C中的全局变量?br />    3Q Java中的ȝ型的size是确定的Q而C中主cd的size跟^台相兟?br />    4Q Java中没有了指针Q它使用了类似的句柄来取代指针,但是Java中不允许对句柄进行加减,没有取地址操作W之cȝ东东?br />    5Q Java有垃圾收集机Ӟ不需要自己释攄间?br />    6Q Java没有goto语句。Java在C提供的控制语句基上增加了异常处理和标{break和continue语句。这些可以替代goto的作用?br />    7Q C要求一个方法或块中使用的所有局部变量的定义在该Ҏ或块的最开始处定义Q而Java允许q些定义在方法或块的L地方出现?br />    8Q Java不要求在调用一个函C前已l定义了该函敎ͼ可以在调用点后面定义。而C有这个要求?br />    9Q Java不支持C中的strut ?unioncd。Java支持Ҏ重蝲?br />    10Q Java已经支持C中的enum关键字(SE5.0支持了Q?br />    11Q Java不支持C中的bitfields能力?br />    12Q Java不支持C的typedef?br />    13Q Java不支持C的方法指针?br />    14Q Java支持可变参数表。?br />    15Qjava有 Reflection Qc 没有<br />   16Qjava有AnnotationsQc没有<br />   17Qjava有genericsQc没有<br />   16Qjava有interfaceQc没有<img src ="http://m.tkk7.com/bcims/aggbug/133117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/bcims/" target="_blank">EricWong</a> 2007-07-29 13:58 <a href="http://m.tkk7.com/bcims/archive/2007/07/29/133117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的软g《好易随中药理pȝ》即开?/title><link>http://m.tkk7.com/bcims/archive/2007/07/25/132302.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Wed, 25 Jul 2007 06:25:00 GMT</pubDate><guid>http://m.tkk7.com/bcims/archive/2007/07/25/132302.html</guid><wfw:comment>http://m.tkk7.com/bcims/comments/132302.html</wfw:comment><comments>http://m.tkk7.com/bcims/archive/2007/07/25/132302.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://m.tkk7.com/bcims/comments/commentRss/132302.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/bcims/services/trackbacks/132302.html</trackback:ping><description><![CDATA[׃自己安做中药的原因Q已l做了两个中药管理Y件了?br />功能包含了一般药店所需的小打华ͼ数据分析Q进销?{功能?br />一个是C/S版本Q采用vb.net  ms-sql 2000  开?br />另一个是B/S版本Q采用struts+hibernate+spring+mysql5.2+tomcat,在性能中优化struts中action的灵z调?br />在权限方面,采用的spring aop来进行管理,在eclipse 3.2上进行开发?br />下面把这两个软g的界面发上面看下Q因为有很多朋友要我把源代码发给他们q行参考或学习Q所以我军_<br />把两个Y件整理一下,q些日子在我的下一个项目(<a >www.javaOs.cn</a>中国JAVA开源社区)中进行发布,有这斚w<br />需要的朋友可以q行x?br />----------------------------------------------------------------------------------------------------------------------------------<br />q是C/S版本<br /><img height="767" alt="f.bmp" src="http://m.tkk7.com/images/blogjava_net/bcims/king/f.bmp" width="819" border="0" /><br /><br />------------------------------------------------------------------------------------------------------------------------------------------<br />下面q里是B/S版本<br />此图是用L陆界面,用户d后可以自动进行识别用LU再q行分配权限?br /><br /><img height="382" alt="a.bmp" src="http://m.tkk7.com/images/blogjava_net/bcims/king/a.bmp" width="583" border="0" /><br /><br /><br />q是q货理的页?br /><img height="627" alt="b.bmp" src="http://m.tkk7.com/images/blogjava_net/bcims/king/b.bmp" width="1260" border="0" /><br /><br />此图是从数据库查d来后Q动态的生成饼图<br /><img height="643" alt="c.bmp" src="http://m.tkk7.com/images/blogjava_net/bcims/king/c.bmp" width="829" border="0" /><br /><br /><br />用户理Q还可以上传相片<br /><br /><br /><br /><br /><br /><img height="638" alt="d.bmp" src="http://m.tkk7.com/images/blogjava_net/bcims/king/d.bmp" width="1138" border="0" /><br /><br />d客户<br /><br /><img height="641" alt="e.bmp" src="http://m.tkk7.com/images/blogjava_net/bcims/king/e.bmp" width="1271" border="0" /><br /><br /><br />q是对客戯料进行打?img height="421" alt="g.bmp" src="http://m.tkk7.com/images/blogjava_net/bcims/king/g.bmp" width="1039" border="0" /><br /><br /><img src ="http://m.tkk7.com/bcims/aggbug/132302.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/bcims/" target="_blank">EricWong</a> 2007-07-25 14:25 <a href="http://m.tkk7.com/bcims/archive/2007/07/25/132302.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate更新数据出现q的问?/title><link>http://m.tkk7.com/bcims/archive/2007/05/11/116885.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Fri, 11 May 2007 13:44:00 GMT</pubDate><guid>http://m.tkk7.com/bcims/archive/2007/05/11/116885.html</guid><wfw:comment>http://m.tkk7.com/bcims/comments/116885.html</wfw:comment><comments>http://m.tkk7.com/bcims/archive/2007/05/11/116885.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/bcims/comments/commentRss/116885.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/bcims/services/trackbacks/116885.html</trackback:ping><description><![CDATA[ <p>hibernate插入数据时没有一炚w题,但更新数据的时候出Cؕ码的问题Q?br />找了好久Q后来发现是q个问题?br /><br />hibernate3使用了新的hsql解释器,使用了antlr。如果在hsql正文中直接用中<br />文的话,会出Cؕ码,例如Q?/p> <p>String s = "张三";<br />String hsql = "from User where username='"+s+"'";<br />List list = session.createQuery(hsql).list;<br />q种查询不会出结果。因为整个语句在被antlr解释后会有ؕ码?/p> <p>好的写法是:<br />String s = "张三";<br />String hsql = "from User where username=?"<br />List list = session.createQuery(hsql).setString(0,s).list;<br />q就不会有问题?/p> <p>原因Q第二种方式Q是hibernate在antlr解释完了以后Q再把参C入,q个时?br />׃会有q了?/p> <p> <br />即没有q个问题Q也最好不要在sql语句中带上很多的变量参数。hibernateq种<br />思想是对的:sql和变量分d来,不要把两者؜在一赗?/p> <p> <br />另外Q如果用hibernate2则不会有上面的问题,因ؓhibernate2使用的是旧版?br />hsql解释器。但hibernate2的语法不如hibernate3丰富?/p> <img src ="http://m.tkk7.com/bcims/aggbug/116885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/bcims/" target="_blank">EricWong</a> 2007-05-11 21:44 <a href="http://m.tkk7.com/bcims/archive/2007/05/11/116885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j2ee架构?/title><link>http://m.tkk7.com/bcims/archive/2007/04/28/114432.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sat, 28 Apr 2007 13:56:00 GMT</pubDate><guid>http://m.tkk7.com/bcims/archive/2007/04/28/114432.html</guid><wfw:comment>http://m.tkk7.com/bcims/comments/114432.html</wfw:comment><comments>http://m.tkk7.com/bcims/archive/2007/04/28/114432.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/bcims/comments/commentRss/114432.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/bcims/services/trackbacks/114432.html</trackback:ping><description><![CDATA[ <font color="#000000">软g架构师是软g行业中一U新兴职业,工作职责是在一个Y仉目开发过E中Q将客户的需求{换ؓ规范的开发计划及文本Qƈ制定q个目的M架构Q指导整个开发团队完成这个计划。架构师的主要Q务不是从事具体的软gE序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非怺解,q且需要有良好的组l管理能力。可以这栯Q一个架构师工作的好坏决定了整个软g开发项目的成|?br /><br />软g架构师实际上是软g的M设计师。首席设计师是总设计师Q打个通俗的比方:邓小qx中国攚w开攄总设计师Q我们用现在的说法可以讲Q邓^是中国改革开攄首席架构师。架构师的Ş成一定是在实践中U篏h的,而ƈ非上了几ơ培训班Q读了几本书可以成功的Q架构师是在工程实践中培d来的Q?<br /><br />架构师也q是万能的。架构师是客户需求和开发者之间的桥梁。在软g行业中,一般提到的架构师是技术架构师Q而忽略了领域架构师或者讲是领域工E师的概c一个好的领域专家一定是业务领域的架构师Q他能够l出某一个业务领域的架构Q我们可以称Z务架构,只有技术架构和业务架构紧密l合才有可能真正创造出一个好的系l!<br /><br />架构师,首先让我惌v的是高楼大厦的设计h员,通常一座大厦在Z?都先p计师蓝图描l出来,包括其Ş状、结构、尺寸、材料等{,然后建筑工程师带领工Z按照蓝图大厦一层一层地v来?br /><br />q年来,软g领域也渐渐地行h构师的角Ԍ特别是对一些大型Y件品或目的开发,q一角色昑־很关键,因ؓ~Z好的软g架构师而导致项目失败的例子不胜枚DQ一个没有经验和能力的架构师也会佉K目失败的速度加快?br /><br />软g架构师的重要作用<br /><br />软g架构师在整个软g开发过E中都v着重要的作用,q着开发进E的推进而其职责或关注点不断地变化,在需求阶D,软g架构师主要负责理解和理非功能性系l需求,比如软g的可l护性、性能、复用性、可靠性、有效性和可测试性等{,此外Q架构师q要l常审查和客户及市场人员所提出的需求,认开发团队所提出的设计;在需求越来越明确后,架构师的x点开始{Udl织开发团队成员和开发过E定义上Q在软g设计阶段Q架构师负责Ҏ个Y件体pȝ构、关键构件、接口和开发政{的设计Q在~码阶段Q架构师则成l设计者和代码~写者的NQƈ且经常性地要D行一些技术研讨会、技术培训班{;随着软g开始测试、集成和交付Q集成和试支持成Y件架构师的工作重点;在Y件维护开始时QY件架构师开始ؓ下一版本的品是否应该增加新的功能模块进行决{?br /><br />如何成ؓ优秀的Y件架构师<br /><br />显而易见,在Y件开发过E中Q一个优U软g架构师的重要性是不应低估的。那么如何成ZU的Y件架构师呢?<br /><br />首先必须h丰富的Y件设计与开发经验,q有助于理解q解释所q行的设计是如何映射到实C厅R?br /><br />其次要具有领D力与团队协作技能,软g架构师必L一个得到承认的技术领|能在关键时候对技术的选择作出及时、有效的军_?br /><br />W三是具有很强的沟通能力,呵呵Q其时这一点好象什么鬼角色都最好具备,软g架构师需要与各\人马l常打交道,客户、市Zh员、开发h员、测试h员、项目经理、网l管理员、数据库工程师等{,而且在很多角色之间还要v沟通者的作用。在技术能力方面,软g架构师最重要也是最需求掌握的知识是构仉信机制斚w的知识,比如q程q程调用、JAVARMI、CORBA、COM/DCOM、各U标准的通信协议、网l服务、面对对象数据库、关pL据库{等Q另外,架构师应时刻注意新Y件设计和开发方面的发展情况Qƈ不断探烦更有效的新方法。开发语a、设计模式和开发^C断很快地升QY件架构师需要吸收这些新技术新知识Qƈ它们用于Y件系l开发工作中。当Ӟ行业的业务知识对软g架构师也是很重要的,有助于设?br /><br />Z个满_户需求的体系l构Q优U的Y件架构师常常因ؓ要尽快获得对行业业务的理解而必d速学习ƈ且进行敏锐的观察?br /><br />上面的描q是枯燥乏味的,但作Z个Y件架构师Q在整个软gpȝ的开发过E中是乐无ILQ因个角色很h挑战性,有时需要左右逢源八面玲珑Q有时又需要果断坚定不留情面。在国内Q较Y件企业拥有独立的架构师,通常一个Y仉手n兼数职,既是目l理Q又是Y件架构师Q还是Y件开发者,有时q要客串一个测试h员,q对软g的开发周期和产品质量是不利的Q有时一个h的观点立场是很片面的Q而且J重的工作、沉重的压力会媄响一个h的情l,情A会媄响决{,决策影响l果Q所以值得我们三思而后行?br /><br />构架师自我培养过E?br /><br />构架师不是通过理论学习可以搞出来的Q不q不学习相关知识那肯定是不行的。ȝ构架师自我培养过E大致如下,仅供参考?br /><br />1、构架师胚胎Q程序员Q?br />学习的知识是语言基础、设计基、通信基础{,应该在大学完成,内容包括java、c、c++、uml、RUP、XML、socket通信Q通信协议Q——学习搭建应用系l所必须的原材料?<br /><br />2、构架师萌芽Q高U程序员Q?br />学习分布式系l、组建等内容Q可以在大学或第一q工作时间接触,包括分布式系l原理、ejb、corba、com/com+、webserviceQ研I生可以研究|络计算机、高性能q发处理{内容) <br /><br />3、构架师qDQ设计师Q?br />应该在掌握上q基之上Q结合实际项目经验,透彻领会应用设计模式Q内容包括设计模式(c++版本、java版本Q、ejb设计模式、J2EE构架、UDDI、Y件设计模式等。在此期_最好能够了解Y件工E在实际目中的应用以及组开发、团队管理?<br /><br />4、Y件构架师的正是成型在于机遇、个人努力和天赋软g构架师其实是一U职位,但一个程序员在充分掌握Y构架师所需的基本技能后Q如何得到这LZ、如何利用所掌握的技能进行应用的合理构架、如何不断的抽象和归Uq构架模式、如何深入行业成够胜d析、构架ؓ一体的_英人才q可不是每个人都能够遇上的馅饼…?br /><br />软g构架师职场概?br /><br />如果您今天有q同全球首富比尔·盖茨交换名片Q您会注意到他的头衔是微软公叔R席Y件架构师。同样假如您得到中国首富丁磊的名片,您也会看C的头衔是|易公司首席架构师。悄焉Q架构师已经成ؓ职场上最让h慕的职位?br /><br />在我国,随着软g业规模的不断扩大QY件h才结构性矛监ְ更加H出。国家h事部门预计到2005q我国Y件业的规模达?500亿元Q全国计机应用专业人才的需求每q将增加百万人左叟뀂其中,架构师这L专业高人才每年培养人数全国不过数百名,~口非常之大Q而其中尤其以Java架构师缺口最为明显?br /><br />众所周知QJava是当前最热门的Y件开发语aQ它h跨^台、面向对象、强大的|络功能{特性。你不仅能在电脑上用JavaE序Q还能在手机、PDA、家用电器上使用JavaE序Q甚至D世瞩目的火星车也全部采用Java技术。Java在不?0q时间内已经变成最行的Y件开发^収ͼ最新的企业UJava 2.0版本Q简UͼJ2EEQ也成ؓ企业应用pȝ上最受欢q的开发标准?br /><br />事实上,全世界范围内的J2EE架构师都是紧~的人才Q只是中国更加明显而已。在英国Q有l验的J2EE架构师,目前q_q薪已经飙涨C万至十万英镑。全球著名的电子商务q_提供商SilverStream软g公司的技术服务ȝMark Ashton对J2EE人才的短~深有感受,他表C多求职者的履历表上都有把J2EE列进去,但是仔细查看或是面试之后׃发现大多Ch只是听过J2EEQƈ没有真正用过q些技术。信息业部电子信息产品理司副叔R丁文武近期也表示Q目前我国Java人才q远q不够,臛_短缺20万。特别是随着大量软g外包业务q入中国Q许多外资或中资软g企业也开始面临着高Java人才奇缺的问题,其是熟悉J2EE又能掌握一门相应外语的人才成ؓ了众多大公司争抢的对象?br /><br />作ؓJava的发明者和Java开发标准的主要制定者——美国Sun公司对从事Java开发的技术h员提供了三认证体系Q即初的程序员认证QSCJPQ、中U的开发员认证QSCJD和SCWDQ和高的架构师认证QSCEAQ。这也是软g行业中最权威的国际认证之一。目前国内已l有针对国Sun公司认证体系的培训,但绝大多C要针对初U的E序员认证,只有极少C业培训机构能够提供三层完整培训?/font> <img src ="http://m.tkk7.com/bcims/aggbug/114432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/bcims/" target="_blank">EricWong</a> 2007-04-28 21:56 <a href="http://m.tkk7.com/bcims/archive/2007/04/28/114432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>毕业设计问题之:使用JSP生成验证?http://m.tkk7.com/bcims/archive/2007/04/18/111784.htmlEricWongEricWongWed, 18 Apr 2007 15:38:00 GMThttp://m.tkk7.com/bcims/archive/2007/04/18/111784.htmlhttp://m.tkk7.com/bcims/comments/111784.htmlhttp://m.tkk7.com/bcims/archive/2007/04/18/111784.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/111784.htmlhttp://m.tkk7.com/bcims/services/trackbacks/111784.html在开发中验证码是比较常用到有效防止这U问题对某一个特定注册用L特定E序暴力破解方式q行不断的登陆尝试的方式?/div>
此演C程序包括三个文Ӟ
1.index.jsp:d面
2.image.jsp:生成验证码图片页?/font>
3.result.jsp:l果面
【页面显C?br />哦哦D74ED2}0.jpg

【页面代码?/div>
1.index.jsp
html代码
  1. <html><body>      
  2. <formmethod=postaction="result.jsp">      
  3. <inputtype=textname=inputmaxlength=4>      
  4. <imgborder=0src="image.jsp">      
  5. <inputtype="submit"value="submit">      
  6. </form></body></html>  
[注意]:
(1)使用maxlength属性来限制输入字符;
(2)使用<img>标签来显C生成的验证码图?
2.image.jsp
    1. <%@ page contentType="image/JPEG"      
    2.     import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"      
    3.       pageEncoding="GBK"%><%!Color getRandColor(int fc, int bc) {//l定范围获得随机颜色       
    4.           Random random = new Random();       
    5.         if (fc > 255)       
    6.               fc = 255;       
    7.         if (bc > 255)       
    8.               bc = 255;       
    9.         int r = fc + random.nextInt(bc - fc);       
    10.         int g = fc + random.nextInt(bc - fc);       
    11.         int b = fc + random.nextInt(bc - fc);       
    12.         returnnew Color(r, g, b);       
    13.       }%><%       
    14.     //讄面不缓存    ?/span>  
    15.       response.setHeader("Pragma", "No-cache");       
    16.       response.setHeader("Cache-Control", "no-cache");       
    17.       response.setDateHeader("Expires", 0);       
    18.       
    19.     // 在内存中创徏图象       
    20.     int width = 60, height = 20;       
    21.       BufferedImage image = new BufferedImage(width, height,       
    22.               BufferedImage.TYPE_INT_RGB);       
    23.       
    24.     // 获取囑Ş上下文    ?/span>  
    25.       Graphics g = image.getGraphics();       
    26.       
    27.     //生成随机c    ?/span>  
    28.       Random random = new Random();       
    29.       
    30.     // 讑֮背景色    ?/span>  
    31.       g.setColor(getRandColor(200, 250));       
    32.       g.fillRect(0, 0, width, height);       
    33.       
    34.     //讑֮字体       
    35.       g.setFont(new Font("Times New Roman", Font.PLAIN, 18));       
    36.       
    37.     //画边框    ?/span>  
    38.     //g.setColor(new Color());       
    39.     //g.drawRect(0,0,width-1,height-1);       
    40.       
    41.     // 随机产生155条干扰线Q图象中的认证码不易被其它E序探测刊W   ?/span>  
    42.       g.setColor(getRandColor(160, 200));       
    43.     for (int i = 0; i < 100; i++) {       
    44.         int x = random.nextInt(width);       
    45.         int y = random.nextInt(height);       
    46.         int xl = random.nextInt(12);       
    47.         int yl = random.nextInt(12);       
    48.           g.drawLine(x, y, x + xl, y + yl);       
    49.       }       
    50.       
    51.     // 取随Z生的认证?4位数?       
    52.       String sRand = "";       
    53.     for (int i = 0; i < 4; i++) {       
    54.           String rand = String.valueOf(random.nextInt(10));       
    55.           sRand += rand;       
    56.         // 认证码昄到图象中       
    57.           g.setColor(new Color(20 + random.nextInt(110), 20 + random       
    58.           .nextInt(110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近Q所以只能直接生成    ?/span>  
    59.           g.drawString(rand, 13 * i + 6, 16);       
    60.       }       
    61.       
    62.     // 认证码存入SESSION       
    63.       session.setAttribute("code", sRand);       
    64.       
    65.     // 图象生效       
    66.       g.dispose();       
    67.       
    68.     // 输出图象到页面    ?/span>  
    69.       ImageIO.write(image, "JPEG", response.getOutputStream());       
    70. %>  
      
[注意]:
(1)contentTypeD|ؓ"image/JPEG"
3.result.jsp
  1. <%@ page language="java"import="java.util.*"pageEncoding="GBK"%>  
  2. <html><body>  
  3. <%   
  4.       String input=request.getParameter("input");   
  5.       String code=(String)session.getAttribute("code");       
  6.       if(input.equals(code)){   
  7.           out.println("验证成功!");   
  8.       }else{   
  9.           out.println("验证p|!");   
  10.       }   
  11. %>  
  12. </body></html>  


EricWong 2007-04-18 23:38 发表评论
]]>Java API中文版下?http://m.tkk7.com/bcims/archive/2007/04/16/111061.htmlEricWongEricWongMon, 16 Apr 2007 11:54:00 GMThttp://m.tkk7.com/bcims/archive/2007/04/16/111061.htmlhttp://m.tkk7.com/bcims/comments/111061.htmlhttp://m.tkk7.com/bcims/archive/2007/04/16/111061.html#Feedback1http://m.tkk7.com/bcims/comments/commentRss/111061.htmlhttp://m.tkk7.com/bcims/services/trackbacks/111061.html2006-12-20 21:27
Java API中文版下?br />
Java API Docs是学习和使用Java语言中最l常使用的参考资料之一Q完整的Java API文档中文版文档共包括32个类库。但是长期以来此文档只有英文版和日文版,对于中国地区的Java开发者来说相当的不便。通过Sun公司的翻译团?0个月的不懈努力以及广大网友的热心支持Q?Java API中文文档的翻译工作如期完成,呈现C国广大的Java用户和学习者面前?br />
Sun 官方下蝲地址:Q推荐)
http://gceclub.sun.com.cn/Java_Docs/html_zh_CN.zip

 p.s:文g的生成日期都?006-06-22Q比我原来下的新。好像多了些东东Q自q?br />
中文API在线阅读Q有更新Q:
http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html

API 文档中文版技术论?br />http://gceclub.sun.com.cn/NASApp/sme/jive/forum.jsp?forum=35


JDK 1.5.0中文版CHMQ(推荐Q?br />http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/JDK_API_1_5_zh_CN.CHM

API资源Q?br />https://jdk-api-zh-cn.dev.java.net/

英文版CHM
http://java.sun.com/docs/windows_format.html

 

 sun中文站点Q?br />http://cn.sun.com/

中文技术社区:Q可扑ֈ很多资源Q推荐!Q?br />http://gceclub.sun.com.cn/

文档Q?br />http://docs.sun.com/app/docs

英文在线文档Q?br />http://java.sun.com/j2se/1.5.0/docs/api/index.html

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1509986



EricWong 2007-04-16 19:54 发表评论
]]>
Zjava的权限控制系l设?/title><link>http://m.tkk7.com/bcims/archive/2007/04/16/110882.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Mon, 16 Apr 2007 01:17:00 GMT</pubDate><guid>http://m.tkk7.com/bcims/archive/2007/04/16/110882.html</guid><wfw:comment>http://m.tkk7.com/bcims/comments/110882.html</wfw:comment><comments>http://m.tkk7.com/bcims/archive/2007/04/16/110882.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/bcims/comments/commentRss/110882.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/bcims/services/trackbacks/110882.html</trackback:ping><description><![CDATA[ <p>一、概?</p> <p> <br />通常Q需要单独的权限pȝ是解x权的理和维护,再分配等NQ不针对开发而言?</p> <p> <br />pȝ架构目标Q在易于理解和管理,开发的前提下,满l大部分_粒度和l粒度权限控制的功能需要?</p> <p> <br />除了_粒度权限,pȝ中必然还会包括无数对具体Instance的细_度权限。这些问题,被留l对框架的扩展方法来解决Q这L考虑Z以下两点Q?br />  1、细_度的权限判断必要在资源上获取权限分配的支持的上下文信息才可能得以实现?</p> <p> <br />2、细_度的权限常常具有相当大的业务逻辑相关性。对不同的业务逻辑Q常常意味着完全不同的权限判定原则和{略。相比之下,_粒度的权限更具通用性,其实现Z个架构,更有重用价|而将l粒度的权限判断实现Z个架构别的东西显得繁琐,增加架构的复杂性。而且不是那么的有必要Q用定制的代码来实现更z,更灵zR否则会变成各种逻辑代码的堆砌?</p> <p> <br />比如Qproduct post数量的控Ӟq种一般要知道用户个性化的信息,付钱数量到数据库中查找最高数量,q要知道此用户已l有多少产品{,规则不具备通用性和重用性, </p> <p> <br />   所以细_度控制不应该放在权限架构层来解冟뀂实例的细_度权限的解x案就是将它{化ؓ_粒度权限,q样我们权限客户端就变得很简单了?</p> <p> <br />名词解释Q?</p> <p> <br />    _粒度权?Q一般可以通过配置文g来授权,授权只有真假Q没有多之分,不需要上下文的支持?</p> <p> <br />    不消耗资源的?</p> <p> <br />    逻辑表达式:判断“Who对What(Which)q行How的操作”的逻辑表达式是否ؓ真?</p> <p> <br />    别名Q静态授权、类U授?</p> <p> <br /> l粒度权限:不能通过配置文g{表达,需要特定上下文的支? </p> <p> <br />    逻辑表达式:判断“When(Where)的时候,Who对What(Which)q行How的操作”的逻辑表达式是否ؓ真?</p> <p> <br />    别名Q动态授权、实例授权 </p> <p> <br />设计原则 Q?</p> <p> <br />框架只提供粗_度的权限?</p> <p> <br />l粒度的权限也需要集中管理和l护 </p> <p> <br />l粒度的权限通过定制的扩展代码将l粒度{化ؓ_粒度授权?</p> <p> <br />二、权限系l的设计 </p> <p> <br />权限往往是一个极其复杂的问题Q?设计权限pȝW一个要解决的问题就是什么样的行为是需要权限控Ӟ什么样的是业务Ҏ。他们之间本来是没有明确的区分,M权限从某U角度上说可以是一U业务方法。ؓ了以后管理和开发方面我们从概念上需要将权限和业务明划分清楚,指导开发?/p> <p> <br /> 权限控制行ؓQ?对What(Which)q行How的操作需要区分WhoQ具有Whow䆾差异性和可替换性。?我们此cL作作为权限?</p> <p> <br />     特点Q?可以收回也可以分配的Q具有一定的抽象U别。     ?消耗资源,行ؓl果具备一些持久性的影响?</p> <p> <br /> 业务逻辑行ؓQ?对What(Which)q行How的操作的时候与Who的n份无x者具有Whow䆾差异性但             是不h可替换性?/p> <p> <br />    特点Q?不能抽象和共享,很难回收和分配。不消耗资源,不生持久性。现实中也存在某一时期行ؓ是业务逻辑Q最后演变成权限控制Q或者相反的q程?</p> <p> <br />1、粗_度权限设计</p> <p> <br />       采用自主型访问控制方法,操作l予讉K控制列表。每一个用户通过角色获得一l权限集合,权限pȝ的功能是验证用户甌的权限(集合Q是否在q个集合当中Q即甌的权限(集合Q是否投影在用户拥有的权限集?换句话说Q只要某用户直接或者间接的属于某个Role那么它就具备q个Role的所有权限许可?/p> <p> <br />一个自d讉K控制Ҏ的权限系l包括以下几个部分:角色、权限、访问控制表?</p> <p> <br />l         权限 </p> <p> <br />描述一个权限可以通过以下几个要素说明Q?</p> <p> <br />cdQclassQ? </p> <p> <br />名称QnameQ:</p> <p> <br />动作(actions)Q?/p> <p> <br />掩码QmaskQ:</p> <p> <br />属性: </p> <p> <br />具体权限Example:</p> <p> <br />1、Test</p> <p> <br />cdQclassQ?com.yangjs.secutiry. permissions. TestPermission </p> <p> <br />名称QnameQ:如:test.* Qtest.sub.* ,test.sub1.sub2</p> <p> <br />动作(actions)Q?brower_detail ,post,repost,…?</p> <p> <br />掩码QmaskQ:0x1,0x2,0x4?.</p> <p> <br />属性: ?</p> <p> <br />.………?. </p> <p> <br />l         存取控制器(my--acl.xmlQ配|?</p> <p> <br />存取控制(ACEQ:角色到权限的映射集合Q表C某个角色可以在某些资源上执行某些动作,它们之间通过role兌Q承)QACE之间产生包含关系?/p> <p> <br />存取控制列表QACLQ:ACE的集合?</p> <p> <br /> 我们的存取控制器QACLQ是通过一个xml的配|文件说明,存取控制列表由多个存取控刉QACEQ来描述。用方?略)</p> <p> <br /> 2、细_度权限设计 </p> <p> <br />    l粒度授权需要上下文的支持,而且每个权限控制的上下问题都不一Pq由相关的业务逻辑军_Q而且此类授权一般变化较快,应此需要将强的可维护性和扩展性,支持变化Q但又不能够太复杂,否则~Z可执行性。虽然此cL限个性化较强Q我们仍然可以ȝ出很多共性: </p> <p> <br />1.       几乎所有的授权需要用L角色和ID. </p> <p> <br />2.       特定的上下文几乎都同用户资源使用情况相关.</p> <p> <br />   我们此cM息称为UserState 卻IUser角色以及资源使用情况和当前状态。大部分信息我们在用L陆的时候已l。获得。授权诏IWeb层和Biz层,因此我们的登陆要独立于Web端。因此上下文我们可以用UserStatel合其他来抽象?</p> <p> <br />   关于上下文的l护问题Q我们不可能UserState此类参数在Web层和Biz层来回传递,更加不能在需要授权的地方都加上一个这LҎ参数Q这样不太现实。其ơ如果在授权的地方再从数据库中取一ơ这栯然能够解决部分问题(不能解决userId的传递)Q这h率太低,不能接受?</p> <p> <br />       解决Ҏ是此cM息cachehQ用的时候再dQ由于此cM息具有非帔R的ƈ发性,对线E安全较高,因此我们军_此cM息放入一个线E上下文的内存cache中。此外我们由于引入cacheQ就需要解x有cache共有的维护性问题?/p> <p> <br />       Cache的生命周期:用户的一ơ请求,属于U程U,用户hU程l束QCachel束?/p> <p> <br />       Cache的更斎ͼ当上下文信息发生变化是需要及时更新CacheQ这是一个不可避免的步骤?/p> <p> <br />        Cache丢失Q发生在如系ldown机,U程崩溃Q内存溢出等{,对用h说就是当前请求突然中断?/p> <p> <br />       当用户重新发送请求,我们的系l就需要重新验证用P此时我们可以更新Cache?/p> <p> <br />       决丢失问题?/p> <p> <br />       Cache的清理:q个实现是当用戯求结束,q回应答的时候清理,可以通过Filter实现Q比较简单?/p> <p> <br />以上是相关的原理部分Q我们看看系l地实现Q?/p> <p> <br />实现Q线E上下文的cache</p> <p> <br />实现c:com.yangjs.cache.ThreadContextCache: </p> <p> <br />public class ThreadContextCache { </p> <p> <br />    public static Map asMap()Q?</p> <p> <br />    public static boolean containsKey(Object key)Q?</p> <p> <br />    public static boolean containsValue(Object key)Q?</p> <p> <br />    public static Object get(Object key)Q?</p> <p> <br />    public static void put(Object key, Object value)Q?</p> <p> <br />    public static Object remove(Object key)Q?</p> <p> <br />    public static void clean()Q?</p> <p> <br />public static int size() Q?</p> <p> <br />public static void destroy()</p> <img src ="http://m.tkk7.com/bcims/aggbug/110882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/bcims/" target="_blank">EricWong</a> 2007-04-16 09:17 <a href="http://m.tkk7.com/bcims/archive/2007/04/16/110882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不可多得的Javascript(AJAX)开发工?Q?Aptanahttp://m.tkk7.com/bcims/archive/2007/04/15/110833.htmlEricWongEricWongSun, 15 Apr 2007 15:07:00 GMThttp://m.tkk7.com/bcims/archive/2007/04/15/110833.htmlhttp://m.tkk7.com/bcims/comments/110833.htmlhttp://m.tkk7.com/bcims/archive/2007/04/15/110833.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/110833.htmlhttp://m.tkk7.com/bcims/services/trackbacks/110833.html自从开始做Web开发vQ一直都没有扑ֈ一个很让h满意的Javascript开发工兗从Editplus、Dreamweaver到FrontPage、Visual StudioQ没有一h很称手的。你是不是还在ؓVisual Studio中的那一点点提示感到兴奋不已Q的VS比其他的好那么一点点Q但是相对于VS中的C#、VB{来说对javascript的支持实在是太少了?/p>

下面我要向你介绍一N怼U的Javascript(AJAX) 开发工PAptana。应为它实在太棒了,所以我忍不住想向你推荐它?/p>

Aptana中的提示UCؓ Code AssistQ相当于VS中的Intellisense?br />
看到后面的浏览器图标了吗Q那?strong>览器兼Ҏ?/strong>的提C。如果你是一个JS老鸟你应该知道那对开发者来说有多重要?/p>

不仅仅是javascriptQ智能提C的范围q包括DOM 1,2 for HTMLQ?a atomicselection="true">
CSSQ?br />
看到后面的黄框框了吗Q那是VS里称为Quick Info的东ѝ?/p>

错误提示 Q- 一个都不能:

Doument outlineQ文档结构)CSS、HTML、JSl一昄Q?br />

代码折叠、项目管理这些小菜不用讲了,都支持。Aptanaq有很丰富的在线文档Q是以wiki形式不断更新的,当然在连U的情况下你可以在Aptana中直接访问这些文档?/p>

最新版的AptanaQ?.2.6Q已l开始支持Debug了,不过要通过Firefox插g的Ş式?/p>

Aptana是一个java开源项目(.NETE序员应该扪心自问了吧)Q现在还在beta阶段Q从版本号你可以看出来了)。所以它是跨q_的。你在windows上运行它可能会觉得有一点点慢(比VS快多了)。其实Aptana的内存占用很,?M多,不过JVM...我就不想说什么了?/p>

q运的是你可以通过javascript扩展它,q里是它?a >API?/p>

Aptanaq有太多让h惊艳的地方,你一定要自己用过了才知道?/p>

EricWong 2007-04-15 23:07 发表评论
]]>
基础问题QJAVA中用接口实现多承和多态的Ҏhttp://m.tkk7.com/bcims/archive/2007/04/13/110546.htmlEricWongEricWongFri, 13 Apr 2007 14:54:00 GMThttp://m.tkk7.com/bcims/archive/2007/04/13/110546.htmlhttp://m.tkk7.com/bcims/comments/110546.htmlhttp://m.tkk7.com/bcims/archive/2007/04/13/110546.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/110546.htmlhttp://m.tkk7.com/bcims/services/trackbacks/110546.html1.JAVA里没有多l承Q一个类之能有一个父cR而承的表现是多态。一个父cd以有多个子类Q而在子类里可以重写父cȝҎQ例如方法print()Q,q样每个子类里重写的代码不一P自然表现形式׃一栗这L父类的变量去引用不同的子c,在调用这个相同的Ҏprint()的时候得到的l果和表现Ş式就不一样了Q这是多态,相同的消息(也就是调用相同的ҎQ会有不同的l果。D例说明:

//父类
public class Father{
   //父类有一个打孩子Ҏ
   public void hitChild(){
   }
}
//子类1
public class Son1 extends Father{
   //重写父类打孩子方?br />   public void hitChild(){
      System.out.println("Z么打我?我做错什么了Q?);
   }
}
//子类2
public class Son2 extends Father{
   //重写父类打孩子方?br />   public void hitChild(){
      System.out.println("我知道错了,别打了!");
   }
}
//子类3
public class Son3 extends Father{
   //重写父类打孩子方?br />   public void hitChild(){
      System.out.println("我跑Q你打不着Q?);
   }
}

//试c?br />public class Test{
   public static void main(String args[]){
      Father father;

      father = new Son1();
      father.hitChild();

      father = new Son2();
      father.hitChild();

      father = new Son3();
      father.hitChild();
   }
}


都调用了相同的方法,出现了不同的l果Q这是多态的表现Q?

 

2.JAVA中没有多l承Q而用接口实现了多l承Q一个类或是可以同时实现多个接口Q(q当于C++里一个类同时l承了多个类Q)例如Q?

public class Son implements Father1,Father2,Father3{


}


接口有利于代码功能的扩展Q增加新的功能)Q而承则有利于代码功能的修改Q把旧的功能Ҏ新的功能Q!q里旧功能的修改和新功能的增加前提是不修Ҏ的功能,旧的功能仍然可以使用Q旧cȝ代码也不做修改!


接着上面的承D例:上面例子中的子类我们l称Z代子c?


1.用承修Ҏ的功能?

现在如果一代Son1的功能打孩子Q也是ҎhitChild()里边的功能实现有问题Q我们要把具体实CҎQ那么我们可以重新写一个新的二代子cSon11l承自一代子cSon1Qƈ重写其hitChild()Ҏ?


//二代子类
public class Son11 extends Son1{
   //重写父类打孩子方?br />   public void hitChild(){
      System.out.println("我是二代子类ҎҎ的新实现");
   }
}

 

2.用接口实现增加新的功能?

现在cSon1已经有了‘打孩子’功能(也就是方法)Q而我们有了新的需求,我们需要它q要有一个新的功能‘宠孩子’(新方法pet();Q。而旧的代码不能动Q那么我们可以定义一个新的接口(PetInterFaceQ,接口里定义这个方法pet()的声明。再重新写一个二代子cSon11Q让它先l承cSon1Q同时实现接?PetInterFaceQƈ实现接口里的 pet()ҎQ?

//新接?br />public interface PetInterFace{
   //新功能方?br />   public void pet();
}

//二代子类
public class Son11 extends Son1 implements PetInterFace{
   //实现接口Ҏ
   public void pet(){
      System.out.println("父亲很爱我!");
   }
}

 

q样q个二代子类x了老的ҎQ又有新的功能!



EricWong 2007-04-13 22:54 发表评论
]]>
权限控制法http://m.tkk7.com/bcims/archive/2007/04/13/110537.htmlEricWongEricWongFri, 13 Apr 2007 14:05:00 GMThttp://m.tkk7.com/bcims/archive/2007/04/13/110537.htmlhttp://m.tkk7.com/bcims/comments/110537.htmlhttp://m.tkk7.com/bcims/archive/2007/04/13/110537.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/110537.htmlhttp://m.tkk7.com/bcims/services/trackbacks/110537.html向大家介l一U很不错Q也是Linux中的权限理法?/p>

  定义a^b为:a的bơ方
  假如Q我们ؓ每一个操作设定一个唯一的整数|比如Q?/p>

删除Q-Q-0
修改Q-Q-1
dQ-Q-2

删除Q-Q-3
修改Q-Q-4
dQ-Q-5
。。?/p>

  理论上可以有Q个操作Q这取决于你用于储存用户权限值的数据cd了?/p>

  q样Q如果用h权限Q添加AQ-Q?Q删除Q-Q?Q修改Q-Q?
那用L权限?purview =2^2+2^3+2^4Q?8Q也是2的权的和?br />化成二进制可以表CZؓ11100
  如果要验证用h否有删除Q的权限Q就可以通过位与q算来实现?br />  在Java里Q位与运运符号ؓQ?br />  xQint value = purview &((int)Math.pow(2,3));
  你会发现Q当用户有操作权限时Q运出来的l果都会{于q个操作需要的权限|

原理Q?br />位与q算Q顾名思义是对位q行与运:
以上面的式子ZQpurview & 2^3 也就是 28&8
它们化成二q制?br /> 11100
Q?01000
-------------------
  01000 == 8(十进? Q= 2^3
同理Q如果要验证是否有删除AQ-Q?的权?br />可以用:purview &((int)Math.pow(2,0));
卻I
 11100
Q?00001
------------------------
  00000 == 0(十进?  Q= 2^0

  q种法的一个优Ҏ速度快。可以同时处理N个权限,讄Q种角色Q?br />  如果想验证是否同时有删除Q-Q-0和删除Q-Q?的权?br />  可以用purview&(2^0+2^3)==(2^0+2^3)?true:false;
  讄多角色用戗根据权限值判断用L角色。。?/p>

  下面提供一个java的单操作权限判断的代码:


//userPurview是用户具有的L?br />//optPurview是一个操作要求的权限Z个整敎ͼ没有l过权的Q)
public static boolean checkPower(int userPurview, int optPurview){
  int purviewValue = (int)Math.pow(2, optPurview);
  return (userPurview & purviewValue) == purviewValue;
}
  当然Q多权限的验证只要扩展一下就可以了?br />  几点注意事项Q首先,一个系l可能有很多的操作,因此Q请建立数据字典Q以便查阅,修改时用。其ơ,如果用数据库储存用户权限Q请注意数值的有效范围。操作权限D用唯一的整敎ͼJava的intcd最多可以储?1个权限和Q如果超q,可以选择其它数据cdQ而且不同模块Q用多个权限变量.



EricWong 2007-04-13 22:05 发表评论
]]>
是谁在说SWING开发的界面不漂亮?http://m.tkk7.com/bcims/archive/2007/04/05/108622.htmlEricWongEricWongThu, 05 Apr 2007 02:14:00 GMThttp://m.tkk7.com/bcims/archive/2007/04/05/108622.htmlhttp://m.tkk7.com/bcims/comments/108622.htmlhttp://m.tkk7.com/bcims/archive/2007/04/05/108622.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/108622.htmlhttp://m.tkk7.com/bcims/services/trackbacks/108622.html
https://substance.dev.java.net/webstart/test.jnlp
http://www.jidesoft.com/products/1.4/jide_demo.jnlp

可惜jide是收费的Q不然制作swing商用软g界面太爽了,直就是爽歪歪?

上一张图片,先爽歪歪一下。。。。。?br />222.JPG


EricWong 2007-04-05 10:14 发表评论
]]>
毕业设计问题之:DispatchAction的运用和其中的exccute+各种Ҏ的运?/title><link>http://m.tkk7.com/bcims/archive/2007/04/04/108426.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Wed, 04 Apr 2007 06:36:00 GMT</pubDate><guid>http://m.tkk7.com/bcims/archive/2007/04/04/108426.html</guid><wfw:comment>http://m.tkk7.com/bcims/comments/108426.html</wfw:comment><comments>http://m.tkk7.com/bcims/archive/2007/04/04/108426.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/bcims/comments/commentRss/108426.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/bcims/services/trackbacks/108426.html</trackback:ping><description><![CDATA[  DispatchAction 必须不写execute(... ...)Ҏ, <br />否则反而有问题, 使用中我发现如果你写了exceute Ҏ struts仍然首先调用改excute()Ҏ, <br />q是即你配|了 method 参数?action="abcAction.do?method=load" 也无?<br /> struts 仍然首先执行execute, 故DispatchAction中不要写execute( ... ...) Ҏ. <br /><br />----------------------------Ҏ都要象下面一样写------------------------------------------------------------<br /> public ActionForward  delete(ActionMapping mapping, ActionForm form,<br />   HttpServletRequest request, HttpServletResponse response){<br />  System.out.println("this is delete! ");<br />  return mapping.findForward("pageInfo");<br /> }<br />--------------------------struts-config.xml里的写法(我没有写form)--------------------------------------------------------<br />    <action<br />      path="/displayAll"<br />      input="/resultDb/pageInfo.jsp"<br />      type="ctm.struts.action.DisplayAllAction"<br />      <font color="#ff3300">parameter="method"  //要注?br /></font>      scope="request"<br />      validate="false" ><br />      </action><br />--------------------------------------------------------------------------------------------------------<img src ="http://m.tkk7.com/bcims/aggbug/108426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/bcims/" target="_blank">EricWong</a> 2007-04-04 14:36 <a href="http://m.tkk7.com/bcims/archive/2007/04/04/108426.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何解决Eclipse中ISO8859-1 字符?http://m.tkk7.com/bcims/archive/2007/04/04/108305.htmlEricWongEricWongTue, 03 Apr 2007 17:01:00 GMThttp://m.tkk7.com/bcims/archive/2007/04/04/108305.htmlhttp://m.tkk7.com/bcims/comments/108305.htmlhttp://m.tkk7.com/bcims/archive/2007/04/04/108305.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/108305.htmlhttp://m.tkk7.com/bcims/services/trackbacks/108305.html  

W一U问题:

在写JSP?里面面有涉及到数据库操作,当保存时׃弹出
save could not be completed
原因是some characters could not be mapped using iso8859-1

<%@ page language="java" pageEncoding="GBK"%>
设成GBK或UTFQ?可以了Q只要他里面的支持中文就KO?/p>

W二U问题:
用eclipse~写jsp面或JAVAcȝ时?直接在页面里输入汉字Q保存的时候出?字符不能匚wISO-8859-1"的错误提C,因ؓISO-8859-1是英文编码,不能识别汉字Q我想把它改ؓutf-8,可是我找不到能改变编码的地方Q首先我打开工程的属性,?info"里看?Text file encoding"׃界把它改为utf-8Q可是还是出现错误提C,搞了好半天还是搞不定它,在|上找找看有没h遇到q这L问题。对q个问题解答比较多的是在"edit"---"set encoding"(好像q个是ؓ单独的文件时设|编?,可是我在eclipse里没扑ֈ(我用的是3.2Q不知道是不是这个原?Q后来又扑ֈ一个解释:讄默认~码Q?br />window-->preferences-->general-->editor-->text file encodingQ?br />我打开perferencesq是没有扑ֈQ狂晕~~~~~~~~~Q?br />接着看看别的地方有没有设|编码的地方Q?br />q是没有扑ֈ..........
 又回到perferencesQ觉得还是在q里可以解决Q呵呵,问题q是出在q里Q?br />我找?General"--"Content Types"Q?br />双有个树Ş的textQ?br />展开扑ֈ"JSP",开始没发现Q?br />那家伙躲在最低下...........Q?br />大家不要像我_心Q?br />最低下有个"Default encoding"Q?br />里面默认的是"ISO-8859-1",
l于扑ֈ了,
删掉"ISO-8859-1"填上"UTF-8"Q?br />在点一?update"Q?br />OK。再保存Q?br />没有错误了..............
{8C6FE5A0-E3ED-46BC-810E-566EB08B4234}.JPG



EricWong 2007-04-04 01:01 发表评论
]]>
毕业设计问题之:Hibernate VS iBATIShttp://m.tkk7.com/bcims/archive/2007/03/23/105988.htmlEricWongEricWongFri, 23 Mar 2007 15:17:00 GMThttp://m.tkk7.com/bcims/archive/2007/03/23/105988.htmlhttp://m.tkk7.com/bcims/comments/105988.htmlhttp://m.tkk7.com/bcims/archive/2007/03/23/105988.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/105988.htmlhttp://m.tkk7.com/bcims/services/trackbacks/105988.html 首先q个题目有点哗众取宠,呵呵,故意?

参考了|上许多前辈的见?然后加了自己一点点的理?如果有什么板?Ƣ迎来拍 .

?/font>

Hibernate 是当前最行?/span> O/R mapping 框架Q当前版本是 3.05 。它n?/span> sf.net Q现在已l成?/span> Jboss 的一部分?/span>

iBATIS 是另外一U优U?/span> O/R mapping 框架Q当前版本是 2.0 。目前属?/span> apache 的一个子目了?/span>

相对 Hibernate ?/span> O/R ”而言Q?/span> iBATIS 是一U?/span> Sql Mapping ”的 ORM 实现?/span>

Hibernate Ҏ据库l构提供了较为完整的装Q?/span> Hibernate ?/span> O/R Mapping 实现?/span> POJO 和数据库表之间的映射Q以?/span> SQL 的自动生成和执行。程序员往往只需定义好了 POJO 到数据库表的映射关系Q即可通过 Hibernate 提供的方法完成持久层操作。程序员甚至不需要对 SQL 的熟l掌握, Hibernate/OJB 会根据制定的存储逻辑Q自动生成对应的 SQL q调?/span> JDBC 接口加以执行?/span>

?/span> iBATIS 的着力点Q则在于 POJO ?/span> SQL 之间的映关pR也是_ iBATIS q不会ؓE序员在q行期自动生?/span> SQL 执行。具体的 SQL 需要程序员~写Q然后通过映射配置文gQ将 SQL 所需的参敎ͼ以及q回的结果字D|到指定 POJO ?/span>

使用 iBATIS 提供?/span> ORM 机制Q对业务逻辑实现人员而言Q面对的是纯_的 Java 对象Q?/span>

q一层与通过 Hibernate 实现 ORM 而言基本一_而对于具体的数据操作Q?/span> Hibernate 会自动生?/span> SQL 语句Q?/span> iBATIS 则要求开发者编写具体的 SQL 语句。相?/span> Hibernate 而言Q?/span> iBATIS ?/span> SQL 开发的工作量和数据库移植性上的让步,为系l设计提供了更大的自q间?/span>

二者的ҎQ?/font>

1Q?/font>   iBATIS 非常单易学, Hibernate 相对较复杂,门槛较高?/span>

2Q?/font>   二者都是比较优U的开源?/font>

3Q?/font>   当系l属于二ơ开?/span> , 无法Ҏ据库l构做到控制和修?/span> , ?/span> iBATIS 的灵zL将?/span> Hibernate 更适合

4Q?/font>   pȝ数据处理量巨大,性能要求极ؓ苛刻Q这往往意味着我们必须通过l过高度优化?/span> SQL 语句Q或存储q程Q才能达到系l性能设计指标。在q种情况?/span> iBATIS 会有更好的可控性和表现?/span>

5Q?/font>   iBATIS 需要手?/span> sql 语句Q也可以生成一部分Q?/span> Hibernate 则基本上可以自动生成Q偶会写一?/span> Hql 。同L需?/span> ,iBATIS 的工作量?/span> Hibernate 要大很多。类似的Q如果涉及到数据库字D늚修改Q?/span> Hibernate 修改的地方很,?/span> iBATIS 要把那些 sql mapping 的地方一一修改?/span>

6Q?/font>   以数据库字段一一对应映射得到?/span> PO ?/span> Hibernte q种对象化映得到的 PO 是截然不同的Q本质区别在于这U?/span> PO 是扁q_的,不像 Hibernate 映射?/span> PO 是可以表辄体的对象l承Q聚合等{关pȝQ这会直接影响C的整个Y件系l的设计思\?/span>

7Q?/font>   Hibernate 现在已经是主?/span> O/R Mapping 框架Q从文档的丰富性,产品的完善性,版本的开发速度都要Z iBATIS

8Q?/font>   最关键的一句话?/span> iBATIS 的作者说的:

If you are starting a new project and you're in full control of your object model and database design, Hibernate is a good choice of O/R tool.

If you are accessing any 3rd party databases (e.g. vendor supplied), or you're working with a legacy database, or even just a really poorly designed database, then an O/R mapper might not be capable of handling the situation. That's were an SQL Mapper comes in handy

 

l论:

l论:

Hibernate 和iBATIS可以说是互相补充,共同发展的关p?具体你想用什么要看实际情?如果看了上面的文字还是拿不定注意,那就Just to try it.实践是检验真理的唯一标准.鞋合不合?只有试了才知?/span>



EricWong 2007-03-23 23:17 发表评论
]]>
毕业设计问题之:要JAVA数据cd转换Q附 基本数据cd的大)http://m.tkk7.com/bcims/archive/2007/03/19/104632.htmlEricWongEricWongSun, 18 Mar 2007 16:33:00 GMThttp://m.tkk7.com/bcims/archive/2007/03/19/104632.htmlhttp://m.tkk7.com/bcims/comments/104632.htmlhttp://m.tkk7.com/bcims/archive/2007/03/19/104632.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/104632.htmlhttp://m.tkk7.com/bcims/services/trackbacks/104632.html1如何字串 String 转换成整敊Wint? 

A. 有两个方? 

1). int i = Integer.parseInt([String]); 或?br />i = Integer.parseInt([String],[int radix]); 

2). int i = Integer.valueOf(my_str).intValue(); 

? 字串转成 Double, Float, Long 的方法大同小? 


2 如何整敊Wint 转换成字串 String ? 


A. 有叁U方? 

1.) String s = String.valueOf(i); 

2.) String s = Integer.toString(i); 

3.) String s = "" + i; 

? Double, Float, Long 转成字串的方法大同小? 

 

JAVA数据cd转换 ynniebo [收藏] 
关键字 类型{换?br />出处 

q是一个例?说的是JAVA中数据数型的转换.供大家学习引 

package cn.com.lwkj.erts.register; 
import java.sql.Date; 
public class TypeChange { 
public TypeChange() { 

//change the string type to the int type 
public static int stringToInt(String intstr) 

Integer integer; 
integer = Integer.valueOf(intstr); 
return integer.intValue(); 

//change int type to the string type 
public static String intToString(int value) 

Integer integer = new Integer(value); 
return integer.toString(); 

//change the string type to the float type 
public static float stringToFloat(String floatstr) 

Float floatee; 
floatee = Float.valueOf(floatstr); 
return floatee.floatValue(); 

//change the float type to the string type 
public static String floatToString(float value) 

Float floatee = new Float(value); 
return floatee.toString(); 

//change the string type to the sqlDate type 
public static java.sql.Date stringToDate(String dateStr) 

return java.sql.Date.valueOf(dateStr); 

//change the sqlDate type to the string type 
public static String dateToString(java.sql.Date datee) 

return datee.toString(); 

public static void main(String[] args) 

java.sql.Date day ; 
day = TypeChange.stringToDate("2003-11-3"); 
String strday = TypeChange.dateToString(day); 
System.out.println(strday); 



JAVA中常用数据类型{换函敊W?br />虽然都能在JAVA API中找刎ͼ整理一下做个备份。?/p>

string->byte 
Byte static byte parseByte(String s) 

byte->string 
Byte static String toString(byte b) 

char->string 
Character static String to String (char c) 

string->Short 
Short static Short parseShort(String s) 

Short->String 
Short static String toString(Short s) 

String->Integer 
Integer static int parseInt(String s) 

Integer->String 
Integer static String tostring(int i) 

String->Long 
Long static long parseLong(String s) 

Long->String 
Long static String toString(Long i) 

String->Float 
Float static float parseFloat(String s) 

Float->String 
Float static String toString(float f) 

String->Double 
Double static double parseDouble(String s) 

Double->String 
Double static String toString(Double) 


Q 附 基本数据cd的大)
 基本型别   大小      最值         最大值?br /> boolean   -----     -----          ------ 
 char      16-bit    Unicode 0      Unicode 2^16-1 
 byte      8-bit     -128           +127 
 short     16-bit    -2^15          +2^15-1 
 int       32-bit    -2^31          +2^31-1 
 long      64-bit    -2^63          +2^63-1 
 float     32-bit    IEEE754        IEEE754 
 double    64-bit    IEEE754        IEEE754 
 void   

注意Q:表格里的^代表的是ơ方哈~ 



EricWong 2007-03-19 00:33 发表评论
]]>
JAVA字符?/title><link>http://m.tkk7.com/bcims/archive/2007/02/08/98820.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Thu, 08 Feb 2007 09:14:00 GMT</pubDate><guid>http://m.tkk7.com/bcims/archive/2007/02/08/98820.html</guid><wfw:comment>http://m.tkk7.com/bcims/comments/98820.html</wfw:comment><comments>http://m.tkk7.com/bcims/archive/2007/02/08/98820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/bcims/comments/commentRss/98820.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/bcims/services/trackbacks/98820.html</trackback:ping><description><![CDATA[ <font color="#000000" size="2">1. 概述 <br /><br />本文主要包括以下几个斚wQ编码基本知识,javaQ系lYӞurlQ工兯Y件等。?br /><br />在下面的描述中,以"中文"两个字ؓ例,l查表可以知道其GB2312~码?d6d0 cec4"QUnicode~码?4e2d 6587"QUTF~码是"e4b8ad e69687"。注意,q两个字没有iso8859-1~码Q但可以用iso8859-1~码?表示"。?br /><br />2. ~码基本知识 <br /><br />最早的~码是iso8859-1Q和ascii~码怼。但Z方便表示各种各样的语aQ逐渐出现了很多标准编码,重要的有如下几个。?br /><br />2.1. iso8859-1 <br /><br />属于单字节编码,最多能表示的字W范围是0-255Q应用于英文pd。比如,字母'a'的编码ؓ0x61=97。?br /><br />很明显,iso8859-1~码表示的字W范围很H,无法表示中文字符。但是,׃是单字节~码Q和计算机最基础的表C单位一_所以很多时候,仍旧使用iso8859-1~码来表C。而且在很多协议上Q默认用该~码。比如,虽然"中文"两个字不存在iso8859-1~码Q以gb2312~码ZQ应该是"d6d0 cec4"两个字符Q用iso8859-1~码的时候则它拆开?个字节来表示Q?d6 d0 ce c4"Q事实上Q在q行存储的时候,也是以字节ؓ单位处理的)。而如果是UTF~码Q则?个字?e4 b8 ad e6 96 87"。很明显Q这U表C方法还需要以另一U编码ؓ基础。?br /><br />2.2. GB2312/GBK <br /><br />q就是汉子的国标码,专门用来表示汉字Q是双字节编码,而英文字母和iso8859-1一_兼容iso8859-1~码Q。其中gbk~码能够用来同时表示J体字和体字Q而gb2312只能表示体字Qgbk是兼容gb2312~码的。?br /><br />2.3. unicode <br /><br />q是最l一的编码,可以用来表示所有语a的字W,而且是定长双字节Q也有四字节的)~码Q包括英文字母在内。所以可以说它是不兼容iso8859-1~码的,也不兼容M~码。不q,相对于iso8859-1~码来说Quniocode~码只是在前面增加了一?字节Q比如字?a'?00 61"。?br /><br />需要说明的是,定长~码便于计算机处理(注意GB2312/GBK不是定长~码Q,而unicode又可以用来表C所有字W,所以在很多软g内部是用unicode~码来处理的Q比如java。?br /><br />2.4. UTF <br /><br />考虑到unicode~码不兼容iso8859-1~码Q而且Ҏ占用更多的空_因ؓ对于英文字母Qunicode也需要两个字节来表示。所以unicode不便于传输和存储。因此而生了utf~码Qutf~码兼容iso8859-1~码Q同时也可以用来表示所有语a的字W,不过Qutf~码是不定长~码Q每一个字W的长度?-6个字节不{。另外,utf~码自带单的校验功能。一般来Ԍ英文字母都是用一个字节表C,而汉字用三个字节。?br /><br />注意Q虽然说utf是ؓ了用更的I间而用的Q但那只是相对于unicode~码来说Q如果已l知道是汉字Q则使用GB2312/GBK无疑是最节省的。不q另一斚wQ值得说明的是Q虽然utf~码Ҏ字?个字节,但即使对于汉字网,utf~码也会比unicode~码节省Q因为网中包含了很多的英文字符。?br /><br />3. java对字W的处理 <br /><br />在java应用软g中,会有多处涉及到字W集~码Q有些地斚w要进行正的讄Q有些地斚w要进行一定程度的处理。?br /><br />3.1. getBytes(charset) <br /><br />q是java字符串处理的一个标准函敎ͼ其作用是字W串所表示的字W按照charset~码Qƈ以字节方式表C。注意字W串在java内存中L按unicode~码存储的。比?中文"Q正常情况下Q即没有错误的时候)存储?4e2d 6587"Q如果charset?gbk"Q则被编码ؓ"d6d0 cec4"Q然后返回字?d6 d0 ce c4"。如果charset?utf8"则最后是"e4 b8 ad e6 96 87"。如果是"iso8859-1"Q则׃无法~码Q最后返回?3f 3f"Q两个问P。?br /><br />3.2. new String(charset) <br /><br />q是java字符串处理的另一个标准函敎ͼ和上一个函数的作用相反Q将字节数组按照charset~码q行l合识别Q最后{换ؓunicode存储。参考上qgetBytes的例子,"gbk" ?utf8"都可以得出正的l果"4e2d 6587"Q但iso8859-1最后变成了"003f 003f"Q两个问P。?br /><br />因ؓutf8可以用来表示/~码所有字W,所以new String( str.getBytes( "utf8" ), "utf8" ) === strQ即完全可逆。?br /><br />3.3. setCharacterEncoding() <br /><br />该函数用来设|httph或者相应的~码。?br /><br />对于requestQ是指提交内容的~码Q指定后可以通过getParameter()则直接获得正的字符Ԍ如果不指定,则默认用iso8859-1~码Q需要进一步处理。参见下q?表单输入"。值得注意的是在执行setCharacterEncoding()之前Q不能执行Q何getParameter()。java doc上说明:This method must be called prior to reading request parameters or reading input using getReader()。而且Q该指定只对POSTҎ有效Q对GETҎ无效。分析原因,应该是在执行W一个getParameter()的时候,java会按照~码分析所有的提交内容Q而后l的getParameter()不再q行分析Q所以setCharacterEncoding()无效。而对于GETҎ提交表单是,提交的内容在URL中,一开始就已经按照~码分析所有的提交内容QsetCharacterEncoding()自然无效。?br /><br />对于responseQ则是指定输出内容的~码Q同Ӟ该设|会传递给览器,告诉览器输出内Ҏ采用的编码。?br /><br />3.4. 处理q程 <br /><br />下面分析两个有代表性的例子Q说明java对编码有关问题的处理Ҏ。?br /><br />3.4.1. 表单输入 <br /><br />User input  *(gbk:d6d0 cec4)  browser  *(gbk:d6d0 cec4)  web server  iso8859-1(00d6 00d 000ce 00c4)  classQ需要在class中进行处理:getbytes("iso8859-1")为d6 d0 ce c4Qnew String("gbk")为d6d0 cec4Q内存中以unicode~码则ؓ4e2d 6587。?br /><br />l 用户输入的编码方式和面指定的编码有养I也和用户的操作系l有养I所以是不确定的Q上例以gbkZ。?br /><br />l 从browser到web serverQ可以在表单中指定提交内Ҏ使用的字W集Q否则会使用面指定的编码。而如果在url中直接用?的方式输入参敎ͼ则其~码往往是操作系l本w的~码Q因时和面无关。上qC旧以gbk~码Z。?br /><br />l Web server接收到的是字节流Q默认时QgetParameterQ会以iso8859-1~码处理之,l果是不正确的,所以需要进行处理。但如果预先讄了编码(通过request. setCharacterEncoding ()Q,则能够直接获取到正确的结果。?br /><br />l 在页面中指定~码是个好习惯,否则可能失去控制Q无法指定正的~码。?br /><br />3.4.2. 文g~译 <br /><br />假设文g是gbk~码保存的,而编译有两种~码选择Qgbk或者iso8859-1Q前者是中文windows的默认编码,后者是linux的默认编码,当然也可以在~译时指定编码。?br /><br />Jsp  *(gbk:d6d0 cec4)  java file  *(gbk:d6d0 cec4)  compiler read  uincode(gbk: 4e2d 6587; iso8859-1: 00d6 00d 000ce 00c4)  compiler write  utf(gbk: e4b8ad e69687; iso8859-1: *)  compiled file  unicode(gbk: 4e2d 6587; iso8859-1: 00d6 00d 000ce 00c4)  class。所以用gbk~码保存Q而用iso8859-1~译的结果是不正的。?br /><br />class  unicode(4e2d 6587)  system.out / jsp.out  gbk(d6d0 cec4)  os console / browser。?br /><br />l 文g可以以多U编码方式保存,中文windows下,默认为ansi/gbk。?br /><br />l ~译器读取文件时Q需要得到文件的~码Q如果未指定Q则使用pȝ默认~码。一般class文gQ是以系l默认编码保存的Q所以编译不会出问题Q但对于jsp文gQ如果在中文windows下编辑保存,而部|在英文linux下运?~译Q则会出现问题。所以需要在jsp文g中用pageEncoding指定~码。?br /><br />l Java~译的时候会转换成统一的unicode~码处理Q最后保存的时候再转换为utf~码。?br /><br />l 当系l输出字W的时候,会按指定~码输出Q对于中文windows下,System.out用gbk~码Q而对于responseQ浏览器Q,则用jsp文g头指定的contentTypeQ或者可以直接ؓresponse指定~码。同Ӟ会告诉browser|页的编码。如果未指定Q则会用iso8859-1~码。对于中文,应该为browser指定输出字符串的~码。?br /><br />l browser昄|页的时候,首先使用response中指定的~码Qjsp文g头指定的contentType最l也反映在response上)Q如果未指定Q则会用网中metaҎ定中的contentType。?br /><br />3.5. 几处讄 <br /><br />对于web应用E序Q和~码有关的设|或者函数如下。?br /><br />3.5.1. jsp~译 <br /><br />指定文g的存储编码,很明显,该设|应该置于文件的开头。例如:<%@page pageEncoding="GBK"%>。另外,对于一般class文gQ可以在~译的时候指定编码。?br /><br />3.5.2. jsp输出 <br /><br />指定文g输出到browser是用的~码Q该讄也应该置于文件的开头。例如:<%@ page contentType="text/html; charset= GBK" %>。该讄和response.setCharacterEncoding("GBK"){效。?br /><br />3.5.3. meta讄 <br /><br />指定|页使用的编码,该设|对静态网尤其有作用。因为静态网|法采用jsp的设|,而且也无法执行response.setCharacterEncoding()。例如:<META http-equiv="Content-Type" content="text/html; charset=GBK" /> <br /><br />如果同时采用了jsp输出和meta讄两种~码指定方式Q则jsp指定的优先。因为jsp指定的直接体现在response中。?br /><br />需要注意的是,apache有一个设|可以给无编码指定的|页指定~码Q该指定{同于jsp的编码指定方式,所以会覆盖静态网中的meta指定。所以有人徏议关闭该讄。?br /><br />3.5.4. form讄 <br /><br />当浏览器提交表单的时候,可以指定相应的编码。例如:<form accept-charset= "gb2312">。一般不必不使用该设|,览器会直接使用|页的编码。?br /><br />4. pȝ软g <br /><br />下面讨论几个相关的系lY件。?br /><br />4.1. mysql数据库?br /><br />很明显,要支持多语言Q应该将数据库的~码讄成utf或者unicodeQ而utf更适合与存储。但是,如果中文数据中包含的英文字母很少Q其实unicode更ؓ适合。?br /><br />数据库的~码可以通过mysql的配|文件设|,例如default-character-set=utf8。还可以在数据库链接URL中设|,例如Q useUnicode=true&characterEncoding=UTF-8。注意这两者应该保持一_在新的sql版本里,在数据库链接URL里可以不q行讄Q但也不能是错误的设|。?br /><br />4.2. apache <br /><br />appache和编码有关的配置在httpd.conf中,例如AddDefaultCharset UTF-8。如前所qͼ该功能会所有静态页面的~码讄为UTF-8Q最好关闭该功能。?br /><br />另外Qapacheq有单独的模块来处理|页响应_其中也可能对~码q行讄。?br /><br />4.3. linux默认~码 <br /><br />q里所说的linux默认~码Q是指运行时的环境变量。两个重要的环境变量是LC_ALL和LANGQ默认编码会影响到java URLEncode的行为,下面有描q。?br /><br />都设|ؓ"zh_CN.UTF-8"。?br /><br />4.4. 其它 <br /><br />Z支持中文文g名,linux在加载磁盘时应该指定字符集,例如Qmount /dev/hda5 /mnt/hda5/ -t ntfs -o iocharset=gb2312。?br /><br />另外Q如前所qͼ使用GETҎ提交的信息不支持request.setCharacterEncoding()Q但可以通过tomcat的配|文件指定字W集Q在tomcat的server.xml文g中,形如Q?lt;Connector ... URIEncoding="GBK"/>。这U方法将l一讄所有请求,而不能针对具体页面进行设|,也不一定和browser使用的编码相同,所以有时候ƈ不是所期望的。?br /><br />5. URL地址 <br /><br />URL地址中含有中文字W是很麻烦的Q前面描q过使用GETҎ提交表单的情况,使用GETҎӞ参数是包含在URL中。?br /><br />5.1. URL~码 <br /><br />对于URL中的一些特D字W,览器会自动q行~码。这些字W除?/?&"{外Q还包括unicode字符Q比如汉子。这时的~码比较Ҏ。?br /><br />IE有一个选项"L使用UTF-8发送URL"Q当该选项有效ӞIE会对特D字W进行UTF-8~码Q同时进行URL~码。如果改选项无效Q则使用默认~码"GBK"Qƈ且不q行URL~码。但是,对于URL后面的参敎ͼ则L不进行编码,相当于UTF-8选项无效。比?中文.html?a=中文"Q当UTF-8选项有效Ӟ发送链?%e4%b8%ad%e6%96%87.html?a=\x4e\x2d\x65\x87"Q而UTF-8选项无效Ӟ发送链?\x4e\x2d\x65\x87.html?a=\x4e\x2d\x65\x87"。注意后者前面的"中文"两个字只?个字节,而前者却?8个字节,q主要时URL~码的原因。?br /><br />当web serverQtomcatQ接收到该链接时Q将会进行URL解码Q即L"%"Q同时按照ISO8859-1~码Q上面已l描qͼ可以使用URLEncoding来设|成其它~码Q识别。上qC子的l果分别?\ue4\ub8\uad\ue6\u96\u87.html?a=\u4e\u2d\u65\u87"?\u4e\u2d\u65\u87.html?a=\u4e\u2d\u65\u87"Q注意前者前面的"中文"两个字恢复成?个字W。这里用"\u"Q表C是unicode。?br /><br />所以,׃客户端设|的不同Q相同的链接Q在服务器上得到了不同结果。这个问题不h都遇刎ͼ却没有很好的解决办法。所以有的网站会用户试关闭UTF-8选项。不q,下面会描qC个更好的处理办法。?br /><br />5.2. rewrite <br /><br />熟悉的h都知道,apache有一个功能强大的rewrite模块Q这里不描述其功能。需要说明的是该模块会自动将URL解码Q去?Q,卛_成上qweb serverQtomcatQ的部分功能。有相关文档介绍说可以用[NE]参数来关闭该功能Q但我试验ƈ未成功,可能是因为版本(我用的是apache 2.0.54Q问题。另外,当参C含有"?& "{符L时候,该功能将Dpȝ得不到正常结果。?br /><br />rewrite本ng完全是采用字节处理的方式Q而不考虑字符串的~码Q所以不会带来编码问题。?br /><br />5.3. URLEncode.encode() <br /><br />q是Java本n提供对的URL~码函数Q完成的工作和上qUTF-8选项有效时浏览器所做的工作怼。值得说明的是Qjava已经不赞成不指定~码来用该ҎQdeprecatedQ。应该在使用的时候增加编码指定。?br /><br />当不指定~码的时候,该方法用系l默认编码,q会D软gq行l果得不定。比如对?中文"Q当pȝ默认~码?gb2312"Ӟl果?%4e%2d%65%87"Q而默认编码ؓ"UTF-8"Q结果却?%e4%b8%ad%e6%96%87"Q后l程序将难以处理。另外,q儿说的pȝ默认~码是由q行tomcat时的环境变量LC_ALL和LANG{决定的Q曾l出现过tomcat重启后就出现q的问题,最后才郁闷的发现是因ؓ修改修改了这两个环境变量。?br /><br />l一指定?UTF-8"~码Q可能需要修改相应的E序。?br /><br />5.4. 一个解x案?br /><br />上面说vq,因ؓ览器设|的不同Q对于同一个链接,web server收到的是不同内容Q而Y件系l有无法知道q中间的区别Q所以这一协议目前q存在缺陗?br /><br />针对具体问题Q不应该侥幸认ؓ所有客LIE讄都是UTF-8有效的,也不应该_暴的徏议用户修改IE讄Q要知道Q用户不可能去记住每一个web server的设|。所以,接下来的解决办法只能是让自qE序多一Ҏ能:Ҏ内容来分析编码是否UTF-8。?br /><br />比较q运的是UTF-8~码相当有规律,所以可以通过分析传输q来的链接内容,来判断是否是正确的UTF-8字符Q如果是Q则以UTF-8处理之,如果不是Q则使用客户默认~码Q比?GBK"Q,下面是一个判断是否UTF-8的例子,如果你了解相应规律,容易理解。?br /><br />public static boolean isValidUtf8(byte[] b,int aMaxCount){ <br /><br />       int lLen=b.length,lCharCount=0; <br /><br />       for(int i=0;i<lLen && lCharCount<aMaxCount;++lCharCount){ <br /><br />              byte lByte=b[i++];//to fast operation, ++ now, ready for the following for(;;) <br /><br />              if(lByte>=0) continue;//>=0 is normal ascii <br /><br />              if(lByte<(byte)0xc0 || lByte>(byte)0xfd) return false; <br /><br />              int lCount=lByte>(byte)0xfc?5:lByte>(byte)0xf8?4 <br /><br />                     :lByte>(byte)0xf0?3:lByte>(byte)0xe0?2:1; <br /><br />              if(i+lCount>lLen) return false; <br /><br />              for(int j=0;j<lCount;++j,++i) if(b[i]>=(byte)0xc0) return false; <br /><br />       } <br /><br />       return true; <br /><br />} <br /><br />相应圎ͼ一个用上q方法的例子如下Q?br /><br />public static String getUrlParam(String aStr,String aDefaultCharset) <br /><br />throws UnsupportedEncodingException{ <br /><br />       if(aStr==null) return null; <br /><br />       byte[] lBytes=aStr.getBytes("ISO-8859-1"); <br /><br />       return new String(lBytes,StringUtil.isValidUtf8(lBytes)?"utf8":aDefaultCharset); <br /><br />} <br /><br />不过Q该Ҏ也存在缺P如下两方面: <br /><br />l 没有包括对用户默认编码的识别Q这可以Ҏh信息的语a来判断,但不一定正,因ؓ我们有时候也会输入一些韩文,或者其他文字。?br /><br />l 可能会错误判断UTF-8字符Q一个例子是"学习"两个字,其GBK~码? \xd1\xa7\xcf\xb0"Q如果用上qisValidUtf8Ҏ判断Q将q回true。可以考虑使用更严格的判断ҎQ不q估计效果不大。?br /><br />有一个例子可以证明google也遇C上述问题Q而且也采用了和上q相似的处理ҎQ比如,如果在地址栏中输入"http://www.google.com/search?hl=zh-CN&newwindow=1&q=学习"Qgoogle无法正识别,而其他汉字一般能够正常识别。?br /><br />最后,应该补充说明一下,如果不用rewrite规则Q或者通过表单提交数据Q其实ƈ不一定会遇到上述问题Q因时可以在提交数据时指定希望的~码。另外,中文文g名确实会带来问题Q应该}慎用。?br /><br />6. 其它 <br /><br />下面描述一些和~码有关的其他问题。?br /><br />6.1. SecureCRT <br /><br />除了览器和控制C~码有关外,一些客L也很有关pR比如在使用SecureCRTq接linuxӞ应该让SecureCRT的显C编码(不同的sessionQ可以有不同的编码设|)和linux的编码环境变量保持一致。否则看到的一些帮助信息,可能是q。?br /><br />另外Qmysql有自q~码讄Q也应该保持和SecureCRT的显C编码一致。否则通过SecureCRT执行sql语句的时候,可能无法处理中文字符Q查询结果也会出Cؕ码。?br /><br />对于Utf-8文gQ很多编辑器Q比如记事本Q会在文件开头增加三个不可见的标志字节,如果作ؓmysql的输入文Ӟ则必要Lq三个字W。(用linux的vi保存可以Lq三个字W)。一个有的现象是,在中文windows下,创徏一个新txt文gQ用C本打开Q输?q?两个字,保存Q再打开Q你会发C个字没了Q只留下一个小黑点。?br /><br />6.2. qo器?br /><br />如果需要统一讄~码Q则通过filterq行讄是个不错的选择。在filter class中,可以l一为需要的h或者回应设|编码。参加上qsetCharacterEncoding()。这个类apache已经l出了可以直接用的例子SetCharacterEncodingFilter。?br /><br />6.3. POST和GET <br /><br />很明显,以POST提交信息ӞURL有更好的可读性,而且可以方便的用setCharacterEncoding()来处理字W集问题。但GETҎ形成的URL能够更容易表辄늚实际内容Q也能够用于收藏。?br /><br />从统一的角度考虑问题Q徏议采用GETҎQ这要求在程序中获得参数是进行特D处理,而无法用setCharacterEncoding()的便利,如果不考虑rewriteQ就不存在IE的UTF-8问题Q可以考虑通过讄URIEncoding来方便获取URL中的参数。?br /><br />6.4. J体~码转换 <br /><br />GBK同时包含体和J体~码Q也是说同一个字Q由于编码不同,在GBK~码下属于两个字。有时候,Z正确取得完整的结果,应该繁体和体进行统一。可以考虑UTF、GBK中的所有繁体字Q{换ؓ相应的简体字QBIG5~码的数据,也应该{化成相应的简体字。当Ӟ仍旧以UTF~码存储。?br /><br />例如Q对?语言 ?a"Q用UTF表示?\xE8\xAF\xAD\xE8\xA8\x80 \xE8\xAA\x9E\xE8\xA8\x80"Q进行简J体~码转换后应该是两个相同的?\xE8\xAF\xAD\xE8\xA8\x80>"。?/font> <img src ="http://m.tkk7.com/bcims/aggbug/98820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/bcims/" target="_blank">EricWong</a> 2007-02-08 17:14 <a href="http://m.tkk7.com/bcims/archive/2007/02/08/98820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>模仿MSN用户上线popup的例?http://m.tkk7.com/bcims/archive/2007/02/05/98138.htmlEricWongEricWongMon, 05 Feb 2007 15:05:00 GMThttp://m.tkk7.com/bcims/archive/2007/02/05/98138.htmlhttp://m.tkk7.com/bcims/comments/98138.htmlhttp://m.tkk7.com/bcims/archive/2007/02/05/98138.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/98138.htmlhttp://m.tkk7.com/bcims/services/trackbacks/98138.html
  什么是SWT呢?

  SWT原来是eclipse目lؓ开发eclipse IDE所~写的图形界面APIQ运行时Q其先判断本机是否有相同的界面元素,如果有则直接调用昄Q如没有才进行模拟显C。其q行机制佉K度比AWTQSWING快很多?br />
  了解更多LQhttp://www.eclipse.org/swt

  ~写思\

  先取得用户屏q大,用屏q高度减去popup界面的高度计出popup界面在屏q显C的最高位|(当界面移动到此位|时停止移动)?br />
Rectangle area = Display.getDefault().getClientArea();
int upPosition = area.height - 100;

  用屏q高度加上popup界面的高度就计算出popup界面的初始位|(初始化时不可见,然后慢慢上移到upPosition点后停止UdQ再昄若干U后消失Q?br />
int downPosition = area.height + 100;

  Ud位置我们用线E实玎ͼ当初始化界面后,调用start()Ҏq行此线E,在线E中循环判断downPosition的大是否小于upPositionQ如果小于的话说明还未到停止的时候,讄popup界面的边框ؓdownPositionQƈ暂停10毫秒Q如果downPosition大于upPosition的,说明popup界面已移动到了最高位|。调用sleep()暂停5U钟后关闭界面ƈ退出程序。就q么单,ok, Let's go! 下面l出整个E序代码Q?br />
q是q行后的效果o_img1.gif 
在这之前要像我下面一hswt包导q来Q?br /> {DA72CB76-6E12-4B99-9C8A-6C0A9D09EFAD}.JPG
// Test.java

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class Test {

 
public static void main(String[] args) {
  
  final Display display 
= new Display();
  Shell shell 
= new Shell();
  shell.setText(
"aaa");
  shell.setSize(
250150);
  
  final Button button 
= new Button(shell, SWT.NONE);
  button.setBounds(
502010025);
  button.setText(
"button");  
  button.addSelectionListener(
new SelectionAdapter() {
   
public void widgetSelected(SelectionEvent e) {
    System.
out.println("click");
    Popup popup 
= new Popup("您的好友xxx上线了?/span>");
    popup.start();
   }

  }
);
  
  shell.open();
    
  
while (!shell.isDisposed()) {
   
if (!display.readAndDispatch()) {
    display.sleep();
   }

  }

  display.dispose();
 }

}



//Popup.java

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class Popup extends Thread {

 Shell shell;

 
protected int moveStep = 2;
 
protected int upPosition;
 
protected int downPosition;
 
protected int leftPosition;

 
public Popup(final String message) {

  shell 
= new Shell(SWT.ON_TOP);
  Text text 
= new Text(shell, SWT.MULTI | SWT.WRAP);
  text.setBounds(
102018080);
  text.setBackground(shell.getBackground());  
  text.setText(message);
  Rectangle area 
= Display.getDefault().getClientArea();

  upPosition 
= area.height - 100;
  downPosition 
= area.height + 100;
  leftPosition 
= area.width - 180;

  shell.setSize(
180100);
  shell.setLocation(leftPosition, downPosition);

  shell.open();

 }


 
public void run() {

  Display display 
= shell.getDisplay();
  
while (true{
   
try {
    Thread.sleep(
10);
    
if ((downPosition - moveStep) > upPosition) {
     display.asyncExec(
new Runnable() {
      
public void run() {
       shell.setLocation(
        leftPosition,
        downPosition 
- moveStep);
       downPosition 
-= moveStep;
      }

     }
);
    }
 else {
     Thread.sleep(
5000);
     display.asyncExec(
new Runnable() {
      
public void run() {
       shell.dispose();
      }

     }
);
    }

   }
 catch (InterruptedException e) {
    e.printStackTrace();
   }

  }

 }

}



EricWong 2007-02-05 23:05 发表评论
]]>
解决hibernate+mysql中文问题 http://m.tkk7.com/bcims/archive/2007/02/05/98074.htmlEricWongEricWongMon, 05 Feb 2007 09:30:00 GMThttp://m.tkk7.com/bcims/archive/2007/02/05/98074.htmlhttp://m.tkk7.com/bcims/comments/98074.htmlhttp://m.tkk7.com/bcims/archive/2007/02/05/98074.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/98074.htmlhttp://m.tkk7.com/bcims/services/trackbacks/98074.html在网上有很多q方面文?依照上面也解册,但是修改了mysql的配|文件my.ini.感觉在部|时不是很爽.

是default-character-set=gbk  Q可以把gbkҎ别的。这里给出另一U解x?mysql-5.5). :)低版本的mysqlg没出现过中文问题

1.d一个过滤器,字W集~码设ؓUTF-8.
修改web.xml:

 <filter>
  <filter-name>SetCharacterEncoding</filter-name>
  <filter-class>hxz.filter.SetEncodingFilter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
 </filter>
 
 <filter-mapping>
  <filter-name>SetCharacterEncoding</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

新徏一个过滤器:
package hxz.filter;

import java.io.IOException;

import javax.servlet.*;

public class SetEncodingFilter implements Filter {
 
 // default character encoding
 String defaultEncoding = "UTF-8"; 
 
 public void init(FilterConfig config) throws ServletException {
  String encoding = config.getInitParameter("encoding");
  if (encoding != null) {
   defaultEncoding = encoding;
  }
 }

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  request.setCharacterEncoding(defaultEncoding);
  chain.doFilter(request, response);
 }

 public void destroy() {
  defaultEncoding = null;
 }

}

2.修改hibernate配置文g:
<property name="url">
  <value>jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8</value>
</property>
注意后面?useUnicode=true&amp;characterEncoding=UTF-8, 在xml?amp;要改?amp;

3.在新版本中mysql?你可以选择一U字W集,它设ؓutf-8.
jsp或servlet中把字符集改为UTF-8.

//要注意当你从jsp里得到数据时不?/String username=new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8");只要
  String username=request.getParameter("username");可以了Q!Q!Q!Q!Q!Q!
  


4.trying...



EricWong 2007-02-05 17:30 发表评论
]]>
Tomcat与Apache整合指南 http://m.tkk7.com/bcims/archive/2007/01/21/95137.htmlEricWongEricWongSun, 21 Jan 2007 07:28:00 GMThttp://m.tkk7.com/bcims/archive/2007/01/21/95137.htmlhttp://m.tkk7.com/bcims/comments/95137.htmlhttp://m.tkk7.com/bcims/archive/2007/01/21/95137.html#Feedback0http://m.tkk7.com/bcims/comments/commentRss/95137.htmlhttp://m.tkk7.com/bcims/services/trackbacks/95137.html W一部分Q整合前的准备工?/font>  

准备需要的软g:

1?/font> 下蝲j2sdk1.4.2

下蝲地址:http://download.sun.com  

2 、下?span lang="EN-US">Apache 2.0.48

下蝲地址Q?span lang="EN-US">http://www.apache.org/  

3 、下?span lang="EN-US">Tomcat 5.0.14

下蝲地址:http://Jakarta.apache.org  

4 、下?span lang="EN-US">mod_jk_1.2.5_2.0.47.dll

下蝲地址:tomcat的下载地址下蝲?/font>

最新的下蝲地址:http://www.apache.org/dist/jakarta/tomcat-connectors/jk/binaries/win32/jk-1.2.6/  

W二部分Q配|前的初始化工作  

1?/font> 安装j2sdk1.4.2

q行j2sdk1.4.2的自动安装包Q安?span lang="EN-US">j2sdk1.4.2?span lang="EN-US">C:\j2sdk\j2sdk1.4.2目录下?/font>  

2?/font> 安装Apache服务?span lang="EN-US">

q行Apache的自动安装包Q安?span lang="EN-US">Apache2.0.48?span lang="EN-US">D:\Apache\Apache2目录下?/font>  

3?/font> 安装Tomcat服务?span lang="EN-US">

q行Tomcat的自动安装包Q安?span lang="EN-US">Tomcat5.0.14?span lang="EN-US">D:\Apache\Tomcat5目录下?/font>  

4?/font> 安装mod_jk

mod_jk_1.2.5_2.0.47.dll文g?span lang="EN-US">D:\Apache\Apache2\modules文g夹下?/font>  

5?/font> 准备工作目录和测试文?span lang="EN-US">

?span lang="EN-US">D:盘新建目?span lang="EN-US">www,q创Z个基本的index.jsp文gQ源码如下所C:  

<%

out.println("<html>");

out.println("<body>");

out.println("Welcome");

out.println("</body>");

out.println("</html>");

%>  

W三部分Q配|?span lang="EN-US">Apache服务?/font>  

~辑httpd.conf文g,使用文本~辑器打开httpd.conf文gQ在文g的最后添加如下内?span lang="EN-US">:  

# Using mod_jk2.dll to redirect dynamic calls to Tomcat

LoadModule jk_module modules/mod_jk_1.2.5_2.0.47.dll

JkWorkersFile "D:/Apache/Tomcat5/conf/workers.properties"

JkLogFile "D:/Apache/Tomcat5/logs/mod_jk2.log" 

JkLogLevel info

JkMount /servlet/* ajp13

JkMount /*.jsp ajp13   

Alias /web "D:/www/"    

<Directory "D:/www"> 

Options Indexes MultiViews 

AddOutputFilter Includes html

AllowOverride None 

Order allow,deny 

Allow from all 

</Directory>    

# 包含Tomcat中的mod_jk.conf文g

Include D:\Apache\Tomcat5\conf\auto\mod_jk.conf

W四部分Q配|?span lang="EN-US">Tomcat服务?/font>  

1?/font> 建立workers.properties文g

?span lang="EN-US">D:/Apache/Tomcat5/conf/目录下新建文本文档ƈ命名?span lang="EN-US">workers.propertiesQ写入如下内容:  

workers.tomcat_home=C:\Tomcat  # ?span lang="EN-US">mod_jk模块知道 Tomcat
workers.java_home=C:\jdk  #
?span lang="EN-US">mod_jk模块知道
j2sdk
ps=\
worker.list=ajp13  #
模块版本,现有ajp14?span lang="EN-US">,不要修改

worker.ajp13.port=8009  #
工作端口,若没占用则不用修?/font>

worker.ajp13.host=localhost  #
本机,若上面的ApacheL不ؓlocalhost,作相应修?/font>

worker.ajp13.type=ajp13  #
cd

worker.ajp13.lbfactor=1  #
代理?span lang="EN-US">,不用修改
 

2?/font> 修改server.xml文g  

扑ֈ如下的配|代码:  

<!-- Tomcat Root Context -->

<!--

<Context path="" docBase="ROOT" debug="0">

-->  

在其后面增加如下一行:

<Context path="/web" docBase="D:/www" debug="0" reloadable="true" > </Context>  

3?/font> 修改 jk2.properties 文g

修改后内容如下:  

## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED

## WHEN YOU EDIT THE FILE.  

## COMMENTS WILL BE _LOST_  

## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.  

# Set the desired handler list

handler.list=apr,request,channelJni

#

# Override the default port for the socketChannel

# channelSocket.port=8019

# Default:

# channelUnix.file=${jkHome}/work/jk2.socket

# Just to check if the the config  is working

# shm.file=${jkHome}/work/jk2.shm  

# In order to enable jni use any channelJni directive

# channelJni.disabled = 0

# And one of the following directives:  

# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so  

# If set to inprocess the mod_jk2 will Register natives itself

# This will enable the starting of the Tomcat from mod_jk2

# apr.jniModeSo=inprocess  

#request.tomcatAuthentication=true

request.tomcatAuthentication=false  

W五部分Q运行测试程?/font>  

先启?span lang="EN-US">Tomcat服务器,然后启动Apache服务器?span lang="EN-US">

打开IE览器,分别输入如下地址Q?span lang="EN-US">

http://127.0.0.1/web/index.jsp

http://127.0.0.1:8080/web/index.jsp

如果出现的页面相同,均打印出

Welcome

说明配制成功?/font>



EricWong 2007-01-21 15:28 发表评论
]]>
վ֩ģ壺 þֻƷ99re| ղƷһ| һƵ߲ | ҹ޾ƷӰ| ëƬ߹ۿվ| þþƷav鶹ͼƬ| þùƷȰ׽| þ޾ƷĻ| ĻƵ| ޵һ| ˹ۿëƬ| ù͵v͵v| ޹ۺ| wwwѸƵ| vaר| Ƶ| þþþseɫ͵͵޾Ʒav| ѹۿƵ㶮| ޾Ʒ| AVۺɫһ| 57paoƵ| 2016| ȫ»ɫؼվ | þþþóƬѹۿѿ| ԴƵ| ɫþƷƵ| ƴƬ30ӹƷ| AVþþƷ| ƷһVR | aרav| ɫӰɫԴ| ˸һþ| һӰԺ| 69ʽƵ| AVƷһ| þ޾Ʒ| 18վڵ| һѹۿwwwƵ | ˳ɫ4444߹ۿ| Ʒһ߹ۿ| 91avѹۿ|