AWT、SWING与SWT、JFACE比较

Admin 于 2008-10-19 22:52:59 发表Java

AWT和SWT实现原理不同:AWT控件相当于是一笔一画绣出来的,参加java.awt.Component.paint(Graphics g),性能差;而SWT调用了操作系统后台原生库,org.eclipse.swt.widgets.Control类型中就没有类似的paint方法 了,但是有一个接口org.eclipse.swt.graphics.Drawable。实现原理的不同带来了性能和用户视觉的差异。

SWING是基于AWT提供的MVC不完全实现,JFACE是基于SWT提供的MVC不完全实现。两者的核心作用都是提供了viewer和模型封装的概 念,从设计实现层面看,SWING更加唯美一些,JFACE则更加侧重于实用。SWING和JFACE两者都偏重于行为控制上下文,而对UI数据(例如, 一个文本框控件中的内容)的管理都没有做太多的设计。JFACE中略有改进,提供了setData的概念。JFACE是为了Eclipse而生的,虽然后 来 RCP出来了,又做了其他的包装宣传,典型的体现就是提供了JFace Text Framework和其他一些用户构建Eclipse元素的UI支持,也提供了一些系统资源管理(ImageRegsitry、 ResourceManager等)等附加功能。

SWING框架与代码很优美,但效率低,特别是高级控件如各种选择框超慢,与Windows本身不协调,使用体验差;而且再怎么使用LookAndFeel,还是不美观,总是感觉画的不清晰。

被阅76次, 0票AWT SWING SWT JFACE 发表评论

JavaScript图形库jsGraphics

Admin 于 2008-10-19 00:30:05 发表JavaScript

此JavaScript图形库可在网页上动态绘制圆、椭圆、斜线、折线、多边形(包括三角形、矩形)。底层通过创建大量1px*1px的DIV实 现,同时对于连续的像素进行了优化,尽量地减少所需的DIV,因此有较好的性能,当然和Java2D、GDI+、OpenGL、DirectX、 Flash、SVG、VML及HTML Canvas是无法相比较的。网站:http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm 。使用LGPL协议发布。
1、效果

2、优化原理

支持的浏览器
Linux: Browsers with Gecko-Engine (Mozilla, Netscape 6+, Galeon), Konqueror, Opera 5, 6 and 7+.
Windows: Gecko-Browsers, IE 4, 5 and 6, Opera 5, 6 and 7+.
Mac: Safari, Gecko-Browsers, Opera, partially IE.

使用方法:
1、下载,并在页面中引入脚本:<script type="text/javascript" src="wz_jsgraphics.js"></script>
2、创建一个Div作为画布:
<div id="myCanvas" style="position:relative;height:250px;width:100%;"></div>
3、在JavaScript中创建对象:

  1. <script type="text/javascript"> 
  2. <!--方法一: 
  3. var jg = new jsGraphics("myCanvas"); 
  4. //--> 
  5. </script> 
  6. <script type="text/javascript"> 
  7. <!--方法二: 
  8. var cnv = document.getElementById("myCanvas"); 
  9. var jg = new jsGraphics(cnv); 
  10. //--> 
  11. </script>  

4、例子:

  1. <script type="text/javascript"
  2. <!-- 
  3. function myDrawFunction() 
  4.   jg_doc.setColor("#00ff00"); // green 
  5.   jg_doc.fillEllipse(100, 200, 100, 180); // co-ordinates related to the document 
  6.   jg_doc.setColor("maroon"); 
  7.   jg_doc.drawPolyline(new Array(50, 10, 120), new Array(10, 50, 70)); 
  8.   jg_doc.paint(); // draws, in this case, directly into the document 
  9.  
  10.   jg.setColor("#ff0000"); // red 
  11.   jg.drawLine(10, 113, 220, 55); // co-ordinates related to "myCanvas" 
  12.   jg.setColor("#0000ff"); // blue 
  13.   jg.fillRect(110, 120, 30, 60); 
  14.   jg.paint(); 
  15.  
  16.   jg2.setColor("#0000ff"); // blue 
  17.   jg2.drawEllipse(10, 50, 30, 100); 
  18.   jg2.drawRect(400, 10, 100, 50); 
  19.   jg2.paint(); 
  20.  
  21. var jg_doc = new jsGraphics(); // draw directly into document 
  22. var jg = new jsGraphics("myCanvas"); 
  23. var jg2 = new jsGraphics("anotherCanvas"); 
  24.  
  25. myDrawFunction(); 
  26.  
  27. //--> 
  28. </script>  

 

被阅85次, 0票jsGraphics 发表评论

JavaScript图形库Raphaël

Admin 于 2008-10-19 00:09:22 发表JavaScript

Raphaël 是一个小巧的JavaScript图形库,通过它可以在网页中类似于Windows的GDI方式进行绘图。Raphaël底层通过SVG或VML实现,支持的浏览器有Firefox 3.0+, Safari 3.0+, Opera 9.5+ 和Internet Explorer 6.0+。Raphaël基于MIT License发布。

在页面中引用raphael.js脚本文件后,就可以像下面这样进行绘图了:

  1. // Creates canvas 320 × 200 at 10, 50 
  2. var paper = Raphael(10, 50, 320, 200); 
  3. // Creates circle at x = 50, y = 40, with radius 10 
  4. var circle = paper.circle(50, 40, 10); 
  5. // Sets the fill attribute of the circle to red (#f00) 
  6. circle.attr("fill""#f00"); 
  7. // Sets the stroke attribute of the circle to white (#fff) 
  8. circle.attr("stroke""#fff"); 

演示:

 文档:http://raphaeljs.com/reference.html

被阅57次, 0票Raphaël 发表评论

完成了AStyle的.Net调用接口[AStyle.Net.Interface]

Admin 于 2008-10-18 13:41:26 发表.Net

下载AStyle.Net.Interface.rar,然后在项目中引用AStyle.Net.dll:

  1. string input = File.ReadAllText("in.txt"); 
  2. string temp = ""
  3. temp = AStyle.Net.Interface.Format(input, "--mode=cs --style=ansi --indent=tab"); 
  4. File.WriteAllText("out.txt",temp.Trim()); 

 

被阅68次, 0票AStyle 发表评论

介绍Tokyo Cabinet、Tokyo Tyrant和Tokyo Dystopia

Admin 于 2008-10-15 23:36:04 发表其它

Tokyo Cabinet [東京収納棚] 是日本人平林幹雄开发的一款 DBM 数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒,是 Berkeley DB 等 DBM 的几倍。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符串。这里没有 数据类型和数据表的概念。

当做为Hash表数据库使用时,每个key必须是不同的,因此无法存储两个key相同的值。提供了以下访问方法:提供key,value参数来存 储,按 key删除记录,按key来读取记录,另外,遍历key也被支持,虽然顺序是任意的不能被保证。这些方法跟Unix标准的DBM,例如GDBM,NDBM 等等是相同的,但是比它们的性能要好得多(因此可以替代它们)

当按B+树来存储时,拥用相同key的记录也能被存储。像hash表一样的读取,存储,删除函数也都有提供。记录按照用户提供的比较函数来存储。 可以采用顺序或倒序的游标来读取每一条记录。依照这个原理,向前的字符串匹配搜索和整数区间搜索也实现了。另外,B+树的事务也是可用的。 对于定长的数组,记录按自然数来标记存储。不能存储key相同的两条或更多记录。另外,每条记录的长度受到限 制。读取方法和hash表的一样。

Tokyo Cabinet是用C写的,同时提供Lua,Perl,Ruby,Java的API。Tokyo Cabinet在提供了POSIX和C99的平台上都可用,它以GNU Lesser Public License协议发布。


  Tokyo Tyrant 是由同一作者开发的 Tokyo Cabinet 数据库网络接口。它拥有Memcached兼容协议,也可以通过HTTP协议进行数据交换。
      Tokyo Tyrant基于Tokyo Cabinet实现,提供了HTTP协议和memcache 协议的读取/写入等接口。这不仅仅是贴上了分布式的标签而已:有了http协议,在大公司复杂网络中部署时很多事情简单多了,因为http端口一般不需要 专门申请路由了,而其他端口上部署应用时,要走一堆流程。而memcache协议则解决了很多人尝试用memcache来存储东西时无法持久存储的问题。 有了这两个接口,应用Tokyo Tyrant时,你都不需要调API,php中用来连Memcached的代码直接使用就行。

  Tokyo Tyrant 加上 Tokyo Cabinet,构成了一款支持高并发的分布式持久存储系统,对任何原有Memcached客户端来讲,可以将Tokyo Tyrant看成是一个Memcached,但是,它的数据是可以持久存储的。这一点,跟新浪的Memcachedb性质一样。


Tokyo Dystopia 是一个全文索引系统,可以通过多种模式对索引记录进行检索。主要功能:

  • 高性能搜索。
  • 目标文档高度可配置。
  • 完善的召回率字符N元方法(Perfect recall ratio by character N-gram method)。
  • 词组匹配,前缀匹配,后缀匹配,及Token匹配(Phrase matching, prefix matching, suffix matching, and token matching)。
  • 通过Unicode实现多语言支持。
  • API架构使用分层设计。

Tokyo Dystopia 在提供了POSIX和C99的平台上都可用,它以GNU Lesser Public License协议发布。


参考资料:

http://blog.s135.com/read.php/362.htm

http://tokyocabinet.sourceforge.net/index.html

被阅118次, 0票DBM 发表评论

五款小巧的Web Server[C语言]

Admin 于 2008-10-15 03:08:15 发表其它

1、micro_httpd - really small HTTP server
特点:
    支持安全的 .. 上级目录过滤
    支持通用的MIME类型
    支持简单的目录
    支持目录列表
    支持使用 index.html 作为首页
    Trailing-slash redirection
    程序总共代码才200多行
这个httpd适合学习简单的Web Server编写学习,因为它只有一个简单的框架,只能够处理简单的静态页,可以考虑用来放静态页。
官方地址:http://www.acme.com/software/micro_httpd/
下载地址:http://www.acme.com/software/micro_httpd/micro_httpd_12dec2005.tar.gz

2、mini_httpd - small HTTP server
特点:
    支持GET、HEAD、POST方法
    支持CGI功能
    支持基本的验证功能
    支持安全 .. 上级目录功能
    支持通用的MIME类型
    支持目录列表功能
    支持使用 index.html, index.htm, index.cgi 作为首页
    支持多个根目录的虚拟主机
    支持标准日志记录
    支持自定义错误页
    Trailing-slash redirection
mini_httpd 也是相对比较适合学习使用,大体实现了一个Web Server的功能,支持静态页和CGI,能够用来放置一些个人简单的东西,不适宜投入生产使用。
官方地址:http://www.acme.com/software/thttpd/
下载地址:http://www.acme.com/software/mini_httpd/mini_httpd-1.19.tar.gz

3、thttpd - tiny/turbo/throttling HTTP server
thttpd中是一个简单,小型,轻便,快速和安全的http服务器:
简单:它能够支持HTTP/1.1协议标准,或者超过了最低水平
小巧:它具有非常少的运行时间,因为它不fork子进程来接受新请求,并且非常谨慎的分配内存(性能对比表:http://www.acme.com/software/thttpd/benchmarks.html)
便携:它能够在大部分的类Unix系统上运行,包括FreeBSD, SunOS 4, Solaris 2, BSD/OS, Linux, OSF等等
快速:它的速度要超过主流的Web服务器(Apache, NCSA, Netscape),在高负载情况下,它要快的多
安全:它努力的保护主机不受到攻击,不中断服务器

thttpd 类似于lighttpd,对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现。因此效能很好。同时它还 有一个特点就是基于URL的文件流量限制,这对于下载的流量控制而言是非常方便的。象Apache就必须使用插件实现,效率较thttpd低。
thttpd跟lighttpd类似,适合静态资源类的服务,比如图片、资源文件、静态HTML等等的应用,性能应该比较好,同时也适合简单的CGI应用的场合。
官方地址:http://www.acme.com/software/thttpd/
下载地址:http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz

4、lighttpd - light footprint + httpd = LightTPD
Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。
lighttpd 是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用 户是非常重要的,因为迁移到lighttpd就必须面对这些问题。
实用起来lighttpd确实非常不错,apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于 lighttpd而言)的内存占用,使系统的资源几尽枯竭。而lighttpd采用了Multiplex技术,代码经过优化,体积非常小,资源占用很低, 而且反应速度相当快。
利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台服务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级!
lighttpd 适合静态资源类的服务,比如图片、资源文件、静态HTML等等的应用,性能应该比较好,同时也适合简单的CGI应用的场合。

官方地址:http://www.lighttpd.net/
下载地址:http://www.lighttpd.net/download/lighttpd-1.4.16.tar.gz

5、SHTTPD - Simple HTTPD
Shttpd是另一个轻量级的web server,具有比thttpd更丰富的功能特性,支持CGI, SSL, cookie, MD5认证, 还能嵌入(embedded)到现有的软件里。最有意思的是不需要配置文件!由于shttpd可以嵌入其他软件,因此可以非常容易的开发嵌入式系统的 web server,官方网站上称shttpd如果使用uclibc/dielibc(libc的简化子集)则开销将非常非常低。

特点:
    小巧、快速、不膨胀、无需安装、简单的40KB的exe文件,随意运行
    支持GET, POST, HEAD, PUT, DELETE 等方法
    支持CGI, SSL, SSI, MD5验证, resumed download, aliases, inetd模式运行
    标准日志格式
    非常简单整洁的嵌入式API
    dietlibc friendly. NOT that friendly to the uClibc (*)
    容易定制运行在任意平台:Windows, QNX, RTEMS, UNIX (*BSD, Solaris, Linux)
由于shttpd可以轻松嵌入其他程序里,因此shttpd是较为理想的web server开发原形,开发人员可以基于shttpd开发出自己的webserver!
官方网站:http://shttpd.sourceforge.net/
下载地址:http://jaist.dl.sourceforge.net/sourceforge/shttpd/shttpd-1.38.tar.gz

被阅54次, 0票 发表评论

通过SMSLib库实现Java程序发送短信

Admin 于 2008-10-15 02:31:57 发表Java

SMS(Short Messaging Service)即短消息业务,是由Etsi所制定的一个规范(GSM 03.40 和 GSM03.38)。当使用其7-bits编码时,可以发送最多160个字符;使用8-bit编码,最多可以发送140个字符,通常无法直接通过手机显 示;还有用16-bit编码时,最多70个字符,被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。

目前程序中发送短信大致有三种途径:
1、 向当地的电信部门申请网关,不需要额外的设备,利用对方提供的API调用程序发送短信,适用于大型的通信公司。
2、 借助像GSM MODEM之类的设置(支持AT指令的手机也行),通过数据线连接电脑来发送短信,这种方法比较适用于小公司及个人。要实现这种方式必须理解串口通信、AT指令、短信编码、解码。
3、 利用网站实现,由网站代发短信数据,对网站依赖性太高,对网络的要求也比较高,不适于进行项目开发。
 
本文选择了AT命令方式作为讲解。

所谓AT,即Attention。AT命令集是从Terminal Equipment或Data Terminal Equipment向Terminal Adapter或Data Circuit Terminating Equipment发送的,通过TA、TE发送AT命令来控制Mobile Station的功能与GSM网络业务进行交互。我们可以通过AT命令进行呼叫短信、电话本、数据业务、补充业务、传真等方面的控制。 由于AT指令操作是非常之简单的,我们完全可以自己写组件完成相关操作,而且针对联通、移动、小灵通等不同的服务需求,自制组件反而更容易控制及扩充。

在Java编程中可以通过Java Comm进行手机与电脑的串口通讯,并通过AT指令控制手机操作。在Google code上有个SMSLib项目,是一个以AT指令实现手机操作的组件(http://code.google.com/p/smslib/downloads/list)。
SMSLib使用示例如下:

  1. package org.test; 
  2.  
  3. import org.loon.framework.test.sms.SMS; 
  4. import org.loon.framework.test.sms.SMSImpl; 
  5.  
  6. public class SendManager { 
  7.     public static void main(String[] args) throws Exception { 
  8.         SMS sms = new SMSImpl(); 
  9.         sms.begin(); // 与默认手机端口建立通讯 
  10.          
  11.         sms.getDriver().sendMessage("13012345600" 
  12.             ,"短信内容,默认使用pdu模式,7-bit编码");//13012345600为目标手机号码 
  13.          
  14.         sms.end();// 关闭通讯 
  15.     } 

 

被阅94次, 0票短信 SMSLib 发表评论

轻量级 Web 服务器

Admin 于 2008-10-15 02:04:37 发表其它

最近几年,市场上出现了很多有趣的 Web 服务器实现,包括 lighthttpd、litespeed 和 mongrel 等。这些 Web 服务器都宣称结合了性能、易管理性、可移植性、安全性和其他相关价值。下面的工程研究将调查轻量级 Web 服务器,以帮助您选择最可能满足下一个项目的技术需求的 Web 服务器。

被阅61次, 0票 发表评论
1 / 16 / 123 | « 1 2 3 4 » |
Powered by MiniBoke v2.0.0.8 Build 0828

Copyright © 2008 开源吧!. All rights reserved.

粤ICP备07500939号