byterat

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  54 随笔 :: 0 文章 :: 15 评论 :: 0 Trackbacks

2008年6月5日 #

Eclipse及其插件介绍和下载

0.Eclipse下载
EMF,GEF - Graphical Editor Framework,UML2,VE - Visual Editor都在这里下载
http://www.eclipse.org/downloads/index.php

0.5.lomboz J2EE插件,开发JSP,EJB
http://forge.objectweb.org/projects/lomboz
1.MyEclipse J2EE开发插件,支持SERVLET/JSP/EJB/数据库操纵等
http://www.myeclipseide.com

2.Properties Editor 编辑java的属性文件,并可以自动存盘为Unicode格式
http://propedit.sourceforge.jp/index_en.html

3.Colorer Take 为上百种类型的文件按语法着色
http://colorer.sourceforge.net/

4.XMLBuddy 编辑xml文件
http://www.xmlbuddy.com

5.Code Folding 加入多种代码折叠功能(比eclipse自带的更多)
http://www.coffee-bytes.com/servlet/PlatformSupport

6.Easy Explorer 从eclipse中访问选定文件、目录所在的文件夹
http://easystruts.sourceforge.net/

7.Fat Jar 打包插件,可以方便的完成各种打包任务,可以包含外部的包等
http://fjep.sourceforge.net/

8.RegEx Test 测试正则表达式
http://brosinski.com/stephan/archives/000028.php

9.JasperAssistant 报表插件(强,要钱的)
http://www.jasperassistant.com/

10.Jigloo GUI Builder JAVA的GUI编辑插件
http://cloudgarden.com/jigloo/

11.Profiler 性能跟踪、测量工具,能跟踪、测量BS程序
http://sourceforge.net/projects/eclipsecolorer/

12.AdvanQas 提供对if/else等条件语句的提示和快捷帮助(自动更改结构等)
http://eclipsecolorer.sourceforge.net/advanqas/index.html

13.Log4E Log4j插件,提供各种和Log4j相关的任务,如为方法、类添加一个logger等
http://log4e.jayefem.de/index.php/Main_Page

14.VSSPlugin VSS插件
http://sourceforge.net/projects/vssplugin

15.Implementors 提供跳转到一个方法的实现类,而不是接中的功能(实用!)
http://eclipse-tools.sourceforge.net/implementors/
16.Call Hierarchy 显示一个方法的调用层次(被哪些方法调,调了哪些方法)
http://eclipse-tools.sourceforge.net/call-hierarchy/index.html

17.EclipseTidy 检查和格式化HTML/XML文件
http://eclipsetidy.sourceforge.net/

18.Checkclipse 检查代码的风格、写法是否符合规范
http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm

19.Hibernate Synchronizer Hibernate插件,自动映射等
http://www.binamics.com/hibernatesync/

20.VeloEclipse Velocity插件
http://propsorter.sourceforge.net/

21.EditorList 方便的列出所有打开的Editor
http://editorlist.sourceforge.net/

22.MemoryManager 内存占用率的监视
http://cloudgarden.com/memorymanager/

23.swt-designer java的GUI插件
http://www.swt-designer.com/

24.TomcatPlugin 支持Tomcat插件
http://www.eclipsetotale.com/tomcatPlugin.html

25.XML Viewer
http://tabaquismo.freehosting.net/ignacio/eclipse/xmlview/index.html

26.quantum 数据库插件
http://quantum.sourceforge.net/

27.Dbedit 数据库插件
http://sourceforge.net/projects/dbedit

28.clay.core 可视化的数据库插件
http://www.azzurri.jp/en/software/index.jsp
http://www.azzurri.jp/eclipse/plugins

29.hiberclipse hibernate插件
http://hiberclipse.sourceforge.net
http://www.binamics.com/hibernatesync

30.struts-console Struts插件
http://www.jamesholmes.com/struts/console/

31.easystruts Struts插件
http://easystruts.sourceforge.net

32.veloedit Velocity插件
http://veloedit.sourceforge.net/

33.jalopy 代码整理插件
http://jalopy.sourceforge.net/

34.JDepend 包关系分析
http://andrei.gmxhome.de/jdepend4eclipse/links.html

35.Spring IDE Spring插件
http://springide-eclip.sourceforge.net/updatesite/

36.doclipse 可以产生xdoclet 的代码提示
http://beust.com/doclipse/
posted @ 2008-06-05 15:44 比特鼠| 编辑 收藏

2008年5月30日 #

     摘要: 有这样一个函数, 它接受一个函数(或者说闭包)作为参数  阅读全文
posted @ 2008-05-30 15:19 比特鼠| 编辑 收藏

2008年1月23日 #

当谈到表格数据的设计时,没有太多的网页设计师会有太大的兴趣。今天我们已经收集了20多个功能超大且看上去挺漂亮的Ajax/CSS表格设计,并且教你一些表格设计中所运用的技巧,例如表格数据的排序和过滤等。

OK,让我们来看一下这些表格:

1. Tablecloth

Tablecloth 由CSS Globe 开发,是一个轻巧易于使用的表格,简洁的将表格样式添加到你的HTML 表格元素中。

21个新奇漂亮的Ajax/CSS表格设计-Tablecloth

2. Ask the CSS Guy Table

Ask the CSS Guy Table教给我们要如何去创建能够清晰显出去资料之间的相关联系的表格,例如:点击一个表格元素时,将突了显示这个元素,并且在纵列和横列都显示出相关的类别关系。

21个新奇漂亮的Ajax/CSS表格设计-Ask the CSS Guy Table

#3. A CSS styled table version 2

Veerle Duoh 为我们展示了一个漂亮的表格设计,并教我们如何使用CSS来吸引用户的眼球。

21个新奇漂亮的Ajax/CSS表格设计-A CSS styled table version 2

#4. Sortable Table

Sortable Table 演示了如何按升序或降序排列以及如何过滤表格中的数据。

21个新奇漂亮的Ajax/CSS表格设计-Sortable Table

5. Row Locking with CSS and JavaScript

Css Guy再次对表格使用了聚焦高亮的效果,除非用户再次点击,否则表单数据将一直保持亮高。

21个新奇漂亮的Ajax/CSS表格设计-Row Locking with CSS and JavaScript

他还给了我们另一个示例:another example to Lock rows with radios .

#6. Vertical scrolling tables

如果您有大量的表格数据,但却没有太大的空间来展示它,这可能是个比较好的方法:一个纯CSS的表格与固定的标题和页脚,以及滚动显示的内容。

21个新奇漂亮的Ajax/CSS表格设计-Vertical scrolling tables

7. Replicating a Tree table

这是一个使用HTML 和CSS 设计的树形状表格。

21个新奇漂亮的Ajax/CSS表格设计-Replicating a Tree table

8 ) Paginate, sort and search a table with Ajax and Rails

这个表格提供了一个动态的界面,而不需要重新刷新整个页面。

21个新奇漂亮的Ajax/CSS表格设计-ajax tables

9. Collapsible tables with DOM and CSS

此表格加上箭头形象的脚本提示,用来控制表格的伸展和收缩。

21个新奇漂亮的Ajax/CSS表格设计-Collapsible tables with DOM and CSS

10. TableSorter plug-in for jQuery

它的主要特性包括多列排序,支持<TH>的rowspan和colspan属性以及许多其他功能。

21个新奇漂亮的Ajax/CSS表格设计-TableSorter plug-in for jQuery

11. Stripe your tables the OO way

使用了Javascript 为表格中的行进行颜色交替,并且添加了onmouseoveronmouseout 事件,当鼠标点击时,切换背景颜色。

21个新奇漂亮的Ajax/CSS表格设计-Stripe your tables the OO way

12. MooTools Table Row & Column highlighting

基于MooTools 框架,高亮显示鼠标悬停时的单元格所在的行和列。

21个新奇漂亮的Ajax/CSS表格设计-MooTools Table Row & Column highlighting

13. CSS Table Gallery

93 styled tables是一个专门收集表格样式的站点,下面是来自一个表格样式的截图:

21个新奇漂亮的Ajax/CSS表格设计-CSS Table Gallery

14. jQuery Table Filter

可以对数据进行各种不同的排序、过滤。

21个新奇漂亮的Ajax/CSS表格设计-jQuery Table Filter

15. Sortable/Resizable/Editable TableKit

TableKit基于Prototype框架,专门收集各种HTML表格,可以利用Ajax实时的进行表格栏目大小、排序等编辑。

21个新奇漂亮的Ajax/CSS表格设计-sortable, resizable, editable

16. Make all your tables sortable

21个新奇漂亮的Ajax/CSS表格设计-sortable table

17. Zebra Tables

alistapart为我们提供了一个极好的例子,如何使用JavaScript和DOM的改变背景色风格,以突出显示单元格。

21个新奇漂亮的Ajax/CSS表格设计-Zebra Tables

18. Standardista Table Sorting

Standardista Table Sorting 是一个Javascript模块,让您可以对HTML数据表的任何栏目进行排序。

21个新奇漂亮的Ajax/CSS表格设计-Standardista Table Sorting

19. GridView3 Example

21个新奇漂亮的Ajax/CSS表格设计-GridView3 Example

20. Mootable

21个新奇漂亮的Ajax/CSS表格设计-Mootable

21. Drag & Drop Sortable Lists with JavaScript and CSS

21个新奇漂亮的Ajax/CSS表格设计-Drag & Drop Sortable Lists with JavaScript and CSS

可能还会有一些你更想寻找的详细资料,下面是一些相关的资源链接:

如果你知道其它更强大的Ajax/CSS表格,欢迎在此留言。

posted @ 2008-01-23 17:46 比特鼠 阅读(3197) | 评论 (0)编辑 收藏

一个在线调色工具
posted @ 2008-01-23 17:44 比特鼠 阅读(388) | 评论 (1)编辑 收藏

2008年1月11日 #

/**
 * 加码解码工具
 * @author lwm
 *
 */

public class Encode {
 
 /*
  * 对应javascript的escape()函数, 加码后的串可直接使用javascript的unescape()进行解码
  */
 public static String escape(String src) {
  int i;
  char j;
  StringBuffer tmp = new StringBuffer();
  tmp.ensureCapacity(src.length() * 6);
  for (i = 0; i < src.length(); i++) {
   j = src.charAt(i);
   if (Character.isDigit(j) || Character.isLowerCase(j)
     || Character.isUpperCase(j))
    tmp.append(j);
   else if (j < 256) {
    tmp.append("%");
    if (j < 16)
     tmp.append("0");
    tmp.append(Integer.toString(j, 16));
   } else {
    tmp.append("%u");
    tmp.append(Integer.toString(j, 16));
   }
  }
  return tmp.toString();
 }

 /*
  * 对应javascript的unescape()函数, 可对javascript的escape()进行解码
  */
 public static String unescape(String src) {
  StringBuffer tmp = new StringBuffer();
  tmp.ensureCapacity(src.length());
  int lastPos = 0, pos = 0;
  char ch;
  while (lastPos < src.length()) {
   pos = src.indexOf("%", lastPos);
   if (pos == lastPos) {
    if (src.charAt(pos + 1) == 'u') {
     ch = (char) Integer.parseInt(src
       .substring(pos + 2, pos + 6), 16);
     tmp.append(ch);
     lastPos = pos + 6;
    } else {
     ch = (char) Integer.parseInt(src
       .substring(pos + 1, pos + 3), 16);
     tmp.append(ch);
     lastPos = pos + 3;
    }
   } else {
    if (pos == -1) {
     tmp.append(src.substring(lastPos));
     lastPos = src.length();
    } else {
     tmp.append(src.substring(lastPos, pos));
     lastPos = pos;
    }
   }
  }
  return tmp.toString();
 }

}

posted @ 2008-01-11 17:08 比特鼠 阅读(1834) | 评论 (0)编辑 收藏

2008年1月2日 #

读 YUI ,EXT等源码的时候看JS天旋地转,那可不是51JS上那种挪挪位置就能理解的,此刻如果没有JavaScrip的基础,更是像没有星光的黑夜…….

自以为觉得Js对象是很好理解的东东,然而真实践起来却一片糊涂。
通过查阅经典书籍《Professional JavaScript For Web Developers》稍微有些理解了

JavaScript的基本类型
原始类型如: Undefined Null Boolean Number String 等 用 typeof方法能辨别之
引用类型如: Object Function Array Boolean Number String Date等,用insanceof方法辨别之

严格来讲,JavaScript没有对象(Object),但是由于和OO术语对应,所以也称之为对象。所以Array,Function,基本类型,引用类型,函数,以及函数的属性 等等这些都是对象。

而对象分类,则可以分为内置对象(Built-in Object) 和宿主对象(host object)。
内置对象如 Math,Data啊。
宿主对象则如 BOM,DOM之类.

重新回顾了下这些基本概念之后,在做简单实践就有些理解了。
因此对象的使用,创建方式不尽相同,最简单的归类如下:

1 基本创建方式

function Class() {
window.alert("Hello Class!");
}
var clz= new Class();

2 访问对象成员

function Class(){
this.x = " this is x";
this.y = "this is y";
this.z = viewXY;
function viewXY(){
alert("x+","+y);
}
}
var clz= new Class();
clz.viewXY();

3 对象继承

function Parent() {
this.type= "human!";
}
function Child(){
this.age = "26";
this.sex ="male";
this.say= myInfo;
function myInfo(msg){
alert(msg+this.type+ ","+this.age+","+this.sex);
}
}
Child.prototype = new Parent();
var clild = new Child();
clild.say("I'm ");

4.重用原对象 (书上的例子太好了,搬来了)

Funcion.prototype.toString() = function(){
return "Function code hidden";
}
function sayHi(){
alert("hi");
}
alert(sayHi.toString());
posted @ 2008-01-02 11:06 比特鼠 阅读(267) | 评论 (0)编辑 收藏

2007年12月28日 #

希望能做到以下几点:

1. 在Java服务端架构的设计, 选型, 方案等方面有所突破! -- 这是最主要的!
2. 也想玩一玩Web前端的AJAX编程, RIA(富互联网应用)等等
3. 熟悉Linux/Unix系统的命令行操作
4. 在Java中跑脚本语言Python, JRuby等等
5. 项目管理

暂时就这么多吧!

posted @ 2007-12-28 09:41 比特鼠 阅读(203) | 评论 (0)编辑 收藏

2007年12月19日 #

为 Ajax 安全性所提出的经验法则:
  1. 如果你使用身份验证, 确定你在请求页上检查!
  2. 为 SQL 注入检查。
  3. 为 JavaScript 注入检查。
  4. 保留商务逻辑在服务器上!
  5. 不要假设每个请求是真正的!
  6. 确认检查数据!
  7. 审查请求的数据而且确定它是正确的。
posted @ 2007-12-19 17:10 比特鼠 阅读(277) | 评论 (0)编辑 收藏

1. jvm内部分为主工作区和线程工作区。主工作区是实例的所有线程共有,线程工作区是实例的每个线程专有的工作区,其中包括一些主工作区的一些实例字段数据的拷贝。

2. 服务器一般都有线程池,线程资源是可以重复利用的。你2000个用户在线,不见得能又200个用户同时(或者说并发)访问。再说,只要对象不是太大,我宁愿用200个拷贝,也不想让用户在这个200个任务的队列里等待。

3. 两个DB之间的复制数据,每个DB各自使用自己的Sequane来生成id。复制数据时,如果DB中的外键是由DB维护的,则不会产生id冲突,如果外键是由外部程序维护的,则可能会产生错误!

4. 对于非static的类的数据成员来说,在该类产生的实例中都有一份,并且相互独立(修改后并不影响其他实例), 但static的数据成员则变成了每个类只有一份,即在该类产生的所有实例共享这一个数据成员, 该数据成员的改变会影响到其他的实例. 而static的方法则是让你不用创建对象及能调用这个方法.

5. ThreadLocal的作用就是将经常要用到的对象的引用放到属于线程自己的一个存储空间中,在该线程的执行过程中,可以通过类的静态的ThreadLocal来方便的获取到这个对象,而不用通过参数的形式传来传去。
posted @ 2007-12-19 14:54 比特鼠 阅读(252) | 评论 (0)编辑 收藏

很多高分辨率的图像真的能够扮靓一个Web网站。但是它们也可能会降低网站的(响应)速度——图像都是文件,文件就要占用带宽,而带宽与等待时间直接相关。现在是你进行自我学习,了解如何利用一种叫做图像预加载的小技巧给网站提速的时候了。

图像的预加载

       浏览器通常的工作方式是:只有当要求加载图像的HTTP请求被发送的时候,图像才会被加载,而不论它是被动地通过<img>标记加载,还是主动地通过方法调用加载。所以,如果你有一段JavaScript,需要在鼠标悬停的时候切换图像,或者在超时之后自动地更换图像,那么你就可能会在从服务器取回图像的时候随时碰到等待,时间会从数秒钟到几分钟不等。当你以较慢的速度连接到Internet上的时候,或者被取回的图像非常巨大的时候,这种状况尤其显著,而这种数据延迟通常都会毁掉你所期望的效果。

        有些浏览器会试图转嫁这一问题,比如把图像保存在本地缓冲区里,这样以后对它的调用就能够很快进行了,但是需要第一次调用图像的时候仍然会产生延迟。预加载是一项在需要图像之前就把它下载到缓冲区里的技术。通过这种方式,当真的需要图像的时候,它可以被从缓冲区里取出来,并立即显示出来。

Image()对象
        预加载图像最简单的方法用JavaScript将一个新的Image()对象实例化,并把你想要预加载的图像的URL传递给它。假设我们有一个叫做
http://www.host01.com/Get/jsp/00040004/heavyimagefile.jpg的图像,我们希望,当用户把鼠标放在一个已经显示过的图像上的时,系统能够显示出这个图像。为了预加载这个图像,以便实现更快的响应时间,我们只用创建一个新的Image()对象,将其命名为heavyImage,并使用onLoad()事件处理程序把它同时加载到页面上。

1 < html >< head >< script  language  = "JavaScript" > function  preloader()  {heavyImage  =   new  Image(); heavyImage.src = " http://www.host01.com/Get/jsp/00040004/heavyimagefile.jpg " ;} </ script ></ head >< body  onLoad ="javascript:preloader()" >< href ="#"  onMouseOver ="javascript:document.img01.src='http://www.host01.com/Get/jsp/00040004/heavyimagefile.jpg'" >< img  name ="img01"  src =http://www.host01.com/Get/jsp/00040004/"justanotherfile.jpg" ></ a ></ body ></ html >
2

 

          要注意的是,图像标记自身并不会处理onMouseOver()和onMouseOut()事件,这就是为什么上面例子里的<img>标记被放在一个<a>标记里,后者的确加入了对这些事件类型的支持。
用数组加载多个图像


           在实际操作中,你可能需要预加载一幅以上的图像;例如,在包含有多个图像翻滚(rollover)的菜单条里,或者如果你正在尝试创建平滑的动态效果。这并不困难;你所需要做的就是使用JavaScript的数组,就像下面例子里的一样:

 

1 < script language = " JavaScript " > function  preloader()  //  counter var i = 0; // create object imageObj = new Image(); // set image list images = new Array(); images[0]="image1.jpg" images[1]="image2.jpg" images[2]="image3.jpg" images[3]="image4.jpg" // start preloading for(i=0; i<=3; i++) { imageObj.src=images[i]; }
2 }
  </ script >


         在上面的例子里,你先定义变量i和叫做imageObj的Image()对象。然后定义一个叫做images[]的新数组,在这个数组里,每个数组元素都保存着需要预加载的图像来源。最后,创建一个for()循环,让它在数组里循环,并将它们中的每一个都指派给Image()对象,这样就能够把它预加载到缓冲区里。
onLoad()事件处理程序
        就和JavaScript里的其它很多对象一样,Image()对象也带有多个事件处理程序。这其中最有用的毫无疑问的就是onLoad()处理程序了,它会在完成图像加载的时候被调用。这个处理程序可以与自定义的函数一起使用,以便在完成图像加载之后进行特定的任务。下面的例子通过在图像加载的时候显示“请等待(please wait)”提示信息来说明这个问题,然后在图像完成加载之后就向浏览器发送一个新的URL。

 

< html >< head >< script  language ="JavaScript" > //  create an image objectobjImage = new Image(); // set what happens once the image has loaded objImage.onLoad=imagesLoaded(); // preload the image fileobjImage.src='http://www.host01.com/Get/jsp/00040004/images/image1n.gif';// function invoked on image loadfunction imagesLoaded(){ document.location.href='index2.html';}</script></head><body>Please wait, loading images</body></html>

 


       当然,你还可以创建一个图像数组,对它进行循环,预加载每个图像,并在每个阶段对已加载图像的数量保持跟踪。一旦加载了所有的图像,事件处理程序就能够按照设定把浏览器带到下一个页面(或者进行其他的任务)。

预加载与多状态菜单

          现在,把你刚刚学到的理论付诸真正的实践怎么样?下面一部分内容就是我碰巧编写的一段代码——一个由多个按钮(图像链接)组成的菜单条——其中每个按钮都可能处于三种状态中的一种:正常(normal)、hover(悬停)和点击(click)。由于所有的按钮都有多个状态,所以就有必要使用图像预加载来确保菜单能够根据其切换到的状态进行快速的响应。列表A里的代码就说了这一点。

           列表A里的HTML代码会建立一个由四个按钮组成的菜单条,每个按钮都有三种状态:正常、悬停和点击。其要求如下:

          但鼠标移动到处于正常状态的按钮上时,按钮会变为悬停状态。当鼠标移开的时候,按钮又会恢复到正常状态。当鼠标点击按钮的时候,按钮就会变为点击状态。它会一直保持这个状态,直到另外一个按钮被点击。如果有一个按钮被点击,那么其他的按钮就都不能处于点击状态。其他的按钮只能够处于悬停或者正常状态。一次只能有一个按钮可以被点击。一次只能有一个按钮处于悬停状态。
        第一项任务是建立保存有菜单每个状态的图像的数组。与这些数组元素相对应的<img>元素也都在HTML文档的主体里被创建,并按顺序命名。要注意的是,对数组值的索引是从0开始的,而相应的<img>元素是从1开始命名的——这就需要在脚本后面的一段里进行某种计算上的调整。

        PreloadImages()函数会负责把所有的图像都加载到缓冲区里,这样的话对鼠标移动的响应时间会被减到最小。一个for()循环被用在第一步里创建的图像里进行迭代,并预加载每一个图像。

            ResetAll()函数是把所有图像恢复都到它们正常状态的方便方法。这是有必要的,因为当菜单的项目被点击的时候,菜单里其他所有的项目都必须在被点击项目能够切换到点击状态之前恢复到正常状态。

        SetNormal()、setHover()和setClick()函数负责把特定图像(图像的编号被作为函数的自变量进行传递)的来源分别改为正常、悬停或者点击状态。由于被点击的图像必须一直保持点击状态,直到另外一个图像被点击(见第二项要求),所以它们暂时不会对鼠标移动作出反应;这样的话,如果按钮还不是处在点击状态,那么setNormal()和setHover()函数所包括的代码就只能用来改变按钮的状态。

         上面所提到的预加载只是提高你JavaScript效果响应时间的多种方法之一。就在你的网站上使用上面列出的技巧,并根据你的要求在需要的地方更改它们吧。祝你好运!

posted @ 2007-12-19 10:40 比特鼠 阅读(251) | 评论 (0)编辑 收藏

仅列出标题  下一页