一种更高效率的ISAPI整合IIS与Tomcat_JSP的方式(非jk)
[ 大恐龙 发表于 2008年9月 9日 17:34 ]
今天发现一种极好的整合IIS和JSP的方法,毫无疑问java在windows下运行比在linux运行效率要高(大约4%),同比IIS比Apache的IO能力强,在不考虑了lisence的问题下,笔者一直在考虑在windows下部署java的生产环境,尽管笔者的很大程度的工作是管理的维护linux服务器,但是发现很多时候windows还是最好的选择,当然是在得到一样优秀的维护和管理的前提下,一直以来很头疼的就是Tomcat和IIS的整合,在windows下肯定不会考虑使用apache,apache在windows下的表现太差了。笔者使用了2个月时间仔细研读和修改apache 2.29版的windows版源代码(哈哈,不专业了apache的源代码是可移植C++不分版本)试图优化apache的IO。 最终不得不放弃,Apache的构架上不如IIS,在windows上表现始终不如意,所以还是考虑用IIS整合tomcat.
IIS整合Tomcat的传统方式是JK,通过8009端口做代理,这样做缺点很多,当然优点也很多,优点我就不说了。这样的缺点是实际上要socket一次,笔者认为除非在一台IIS+多个Tomcat,或者IIS和tomcat不在一台服务器上时才有必要使用。在大多数情况,也就是IIS和Tomcat在同一台服务器上时,完全可以用一种高效的办法.
答案其实就是asp.net里的ihttphandle, 使用asp.net的ISAPI handle劫持要转发的页面(图方便,有达人直接写一个C++的ISAPI也行,.net基于jit效率也没得说),直接把他rewrite到8080端口上,也就是实际上IIS和Tomcat没有任何通信。图片、js、html全部IIS处理,这个小程序只处理URL。也就是我写的这个JSP ihttphandle直接取tomcat 的response 作为IIS的response。
下载 JSP_iHttpHandle.dll (.net 3.5) 拷贝到站点的bin目录。
修改web.config添加:
<!-- JSP ihttpHandle 配置 -->
<add path="*.jsp" verb="GET,POST" type="com.w3cool.web.jsp.TomcatRequestHandler" />
<add path="*.xhtml" verb="GET,POST" type="com.w3cool.web.jsp.TomcatRequestHandler" />
<add path="/servlet/*" verb="GET,POST" type="com.w3cool.web.jsp.TomcatRequestHandler" />
<!-- JSP ihttpHandle 配置 -->
然后在 站点属性 -> "home directory" ->Configuration ->
把.jsp .xhtml你要tomcat处理的内容加在aspnet_isapi.dll上,当然也可以图方便设定一个WildCard
好了。现在就可以看看效果
Shell简单的按键操作(转自IBM网站)
[ 大恐龙 发表于 2008年9月 2日 11:44 ]
用户与计算机交互的方式在不断发生变化。启动后提供纯命令行界面的操作系统已逐渐演化为图形化前端。然而,脱离构成操作系统的构建块有时并非是迈向正确方向的必要步骤。向图形化用户界面 (GUI) 过渡往往意味着损失功能;而且,用户渐渐倾向于不愿详细了解他们所使用的计算机。幸运的是,与其他 UNIX® 和 Linux® 系统类似,AIX 操作系统一直把握着重点:计算机操作系统的稳定性、功能和稳健性。
大量 UNIX 和 Linux 供应商已充分认识到操作系统的 CLI 的重要性。但是,出于自动化、降低用户使用计算机的难度或其他原因,用户已忘记或从未了解 CLI 的细节。本文向新用户和已经遗忘细节的用户介绍 CLI,以帮助他们记住或回想起 CLI 对于管理、开发和常规 UNIX 计算之所以重要的原因。
在计算机上工作时,了解实际使用的工具非常重要。如果您曾经使用过 UNIX 或 Linux,那么您应该听说过术语 shell 或 命令行。这两个术语可以作为同义词使用,并且指的是用户正在运行的实际 UNIX shell。UNIX 中的术语 shell 指的是您在键入命令或执行功能时所使用的接口。
当用户通过控制台或网络登录 UNIX 系统时,将调用可定义 shell(位于 /etc/passwd),并通过配置文件设置用户环境(本文稍后将进行说明),于是用户准备好在 shell 中执行操作。当用户在命令行(即用户正在使用的 shell)中键入命令时,用户只能看到 stdin(即标准输入),这是用户或程序提供的输入。当用户按 Enter 或 Return 键时,通过 shell 发送 stdin 以执行命令,然后用户可能收到 stdout(即标准输出)和 stderr(即标准错误),具体取决于输出重定向的方式(例如,重定向到用户的显示器、文件或打印机)。术语 stdout 表示执行的程序所返回的输出数据,而 stderr 指的是程序遇到或返回的错误。用户不会看到处理单个或多个命令的所有底层代码的执行情况,而是看到非常简单化的输入、输出和错误。由于上述原因,用户登录时调用的程序被恰当地称为 shell,因为它隐藏了操作系统的所有底层调用。
HyperTable选择C++还是java开发时的考虑
[ 大恐龙 发表于 2008年7月 5日 18:03 ]
This document is to clarify our position regarding C++ vs. Java for choice of implementation language. There are two fundamental reasons why C++ is superior to Java for this particular application.
- Hypertable is memory (malloc) intensive. Hypertable caches all updates in an in-memory data structure (e.g. stl map). Periodically, these in-memory data structures get spilled to disk. These spilled disk files get merged together to form larger files when their number reaches a certain threshold. The performance of the system is, in large part, dictated by how much memory it has available to it. Less memory means more spilling and merging which increases load on the network and underlying DFS. It also increases the CPU work required of the system, in the form of extra heap-merge operations. Java is a poor choice for memory hungry applications. In particular, in managing a large in-memory map of key/value pairs, Java's memory performance is poor in comparison with C++. It's on the order of two to three times worse (if you don't believe me, try it).
- Hypertable is CPU intensive. There are several places where Hypertable is CPU intensive. The first place is the in-memory maps of key/value pairs. Traversing and managing those maps can consume a lot of CPU. Plus, given Java's inefficient use of memory with regard to these maps, the processor caches become much less effective. A recent run of the tool Calibrator (http://monetdb.cwi.nl/Calibrator/) on one of our 2GHz Opterons yields the following statistics:
caches:
level size linesize miss-latency replace-time
1 64 KB 64 bytes 6.06 ns = 12 cy 5.60 ns = 11 cy
2 768 KB 128 bytes 74.26 ns = 149 cy 75.90 ns = 152 cy
查看全文:" HyperTable选择C++还是java开发时的考虑 " »
Tags:
'
hypertable
'
Squid配置以缓存大量图片-备忘
[ 大恐龙 发表于 2008年6月24日 01:29 ]
配置文件如下
http_port 59.175.238.60:80 defaultsite=219.140.171.194 vhost vport=80
cache_mem 2048 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 20 MB
maximum_object_size_in_memory 8 MB
cache_dir ufs /squid_cache 100000 128 512
cache_peer 219.140.171.194 parent 80 0 no-query originserver
cache_peer_domain 219.140.171.194 img.cnhubei.com
acl all src 0.0.0.0/0.0.0.0
acl Safe_ports port 80
acl Safe_ports port 443
acl AntiBaidu req_header User-Agent Baiduspider
acl cnhubei referer_regex -i cnhubei
acl nullref referer_regex -i ^$
http_access allow nullref
http_access deny !Safe_ports
http_access deny AntiBaidu
http_access deny !cnhubei
deny_info http://www.cnhubei.com/images/2007cnhubei04y002.jpg cnhubei
http_access allow all
visible_hostname www.w3cool.com
cache_mgr zhangweijie@gmail.com
#### Disable Logs
cache_store_log none
cache_vary on
logfile_rotate 0
refresh_pattern -i \.*$ 1440 90% 129600 reload-into-ims
参数设置的都很暴力,还设置了一个反盗链
高性能数据库Hypertable(1)
[ 大恐龙 发表于 2008年6月19日 22:42 ]
今天又有新的问题要问神,在google中输入"high performance open open source database". "Hypertable"赫然名列第一,在和蚊子腿们死磕一阵之后发现又是一个令人惊喜的好好玩艺。
“Hypertable is a high performance distributed data storage system designed to support applications requiring maximum performance, scalability, and reliability.”
高性能,分布式可用性,可伸缩性,反正就是牛的意思.......真的吗?
“This project is for the design and implementation of a high performance, scalable, distributed storage and processing system for structured and unstructured data. It is designed to manage the storage and processing of information on a large cluster of commodity servers, providing resilience to machine and component failures. Data is represented in the system as a multi-dimensional table of information. The data in a table can be transformed and organized at high speed by performing computations in parallel, pushing them to where the data is physically stored. ”
人家说了,同时面向结构化和非结构化的数据设计。同时使用大规模的服务器群处理信息--云计算?没有单点故障,多重表空间,数据可以被快速并行读取,物理层无关性。说的偶只流口水。
“Modeled after Google's well known Bigtable project, Hypertable is designed to manage the storage and processing of information on a large cluster of commodity servers......”
呵呵,果然,真的是要做成BigTable,很好很强大,足以打消任何顾虑svn一下。
原来人家不用SVN了,最新的git version control system ,够声色犬马的。一直对perl没好感,这次还是觉得要试一下git.
使用C++和java混合编写,不知道能不能在windows上运行,使用了hadoop作为分布式存储,还有一个简单的分词,很久没有用miniGW,不过相信还是还是可以在windows上跑起来的,不是我不喜欢linux,要知道恐龙我可是AIX和HPunix的双料administrator,在windows编译主要为了2次开发方便点。
笔者一直在构思一种数据库环境,是在用lucene和hadoop构建搜索引擎时得到的灵感,我们其实需要一种这样的数据库环境:首先是大容量,无限大的容量,因为我们不知道数据会有多大,表有多长,或者有多少个表;其次是廉价的运行环境,AIX?Oracle?不要开玩笑,把利润都交给IBM吗;最后是这个系统要易于维护,或者说是免维护,使用无数的普通PC来运行,使用最简单的维护操作,就像《Matrix》面机器生物种植人类提供能源一样。
恐龙把这种架构定义为数据城市,有农场成产数据,有仓库存储数据,有工厂加工数据,有市场出售数据,所有的功能运行在无数廉价PC上,无边界的整合到IT环境中,形成一个生物圈,这样的环境首先已经出现网站和大型在线服务程序里,就像Bigtable,以后也必将产品化,进入企业领域,笔者也一直在构思这样的系统,开始的想法编写一系列的包,封装lucene的API,使其可以用HSL这样的方式来访问,中间层使用lucene+hadoop在构建非结构化的存储。Hypertable似乎很接近笔者的这种想法,看到了Hypertable又受益不少。
12:02分,值班结束,回家会周公去。今天的心得是,一定要相信神,有问题就要来问神,再就是时刻不要忘记思考如何把神一脚踢翻。
Tags:
'
bigtable
' '
google
' '
hypertable
' '
分布式
' '
数据库
'
这是我一直在策划的一个产品,目的是使语音技术能在互联网更广泛的应用。每一个页面,只要加入一段javascript脚本就能使用,经过1个多月的努力,终于初步实现的功能,首先在数字报纸上使用:

效果还不错,使用了1Pix Player作为音频播放器,进一步的设计和重构正在进行中。大家有什么想法和建议欢迎留言。
以下是Sample: http://ctdsb.cnhubei.com/html/ctdsb/20080322/ctdsb293789.html (标题下面的播放器)
任何网站或者使用web作为界面的程序都可以使用,使用的方法是:
1) 在你想出现播放器的地方插入一个层: <div id="speech_player" name="speech_player"></div> 层的id可以自己定。
2)把以下代码放在</body>前面:
<script type="text/javascript" src="http://speech.w3cool.com/swf/speech.js"></script>
<script type="text/javascript">
var _scid = "copytext"; // 你希望朗读的文章块的id;
var _spid = "speech_player"; //显示播放器的id;
speaker();
</script>
就可以。下一步将实现自定义播放器的样式。大家可以在自己的blog和网站里面加。
还有一个想法就是用WTL编写一个程序,调用JS,监控本地的剪贴板,把需要朗读的文字提交。做一个像Mp3Clould一样的东西。
ubuntu的光盘到了,人家做开源就是不一样
[ 大恐龙 发表于 2007年12月29日 22:03 ]
Mysql的一些日常操作,备忘!
[ 大恐龙 发表于 2007年12月24日 18:44 ]
如果得了ls综合症怎么办?
[ 大恐龙 发表于 2007年12月22日 13:45 ]
安装Nginx,最近在研究这个,鄙视用F5的
[ 大恐龙 发表于 2007年12月16日 23:47 ]
一、) 安装Nginx
1.) 安装
Nginx发音为[engine x],是由俄罗斯人Igor Sysoev建立的项目,基于BSD许可。据说他当初是F5的成员之一,英文主页:http://nginx.net。俄罗斯的一些大网站已经使用它超过两年多了,一直表现不凡。
Nginx的编译参数如下:
[root@localhost]#./configure --prefix=/usr/local/server/nginx --with-openssl=/usr/include \
--with-pcre=/usr/include/pcre/ --with-http_stub_status_module --without-http_memcached_module \
--without-http_fastcgi_module --without-http_rewrite_module --without-http_map_module \
--without-http_geo_module --without-http_autoindex_module
在这里,需要说明一下,由于Nginx的配置文件中我想用到正则,所以需要 pcre 模块的支持。我已经安装了 pcre 及 pcre-devel 的rpm包,但是 Ngxin 并不能正确找到 .h/.so/.a/.la 文件,因此我稍微变通了一下:
[root@localhost]#mkdir /usr/include/pcre/.libs/
[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.a
[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.la
然后,修改 objs/Makefile 大概在908行的位置上,注释掉以下内容:
./configure --disable-shared
接下来,就可以正常执行 make 及 make install 了。
2.) 修改配置文件 /usr/local/server/nginx/conf/nginx.conf
以下是我的 nginx.conf 内容,仅供参考:
#运行用户
user nobody nobody;
#启动进程
worker_processes 2;
#全局错误日志及PID文件
error_log logs/error.log notice;
pid logs/nginx.pid;
#工作模式及连接数上限
events {
use epoll;
worker_connections 1024;
}














![[Valid RSS]](http://www.w3cool.com//images/valid-rss.png)
![Validate my Atom 1.0 feed [Valid Atom 1.0]](http://www.w3cool.com//images/valid-atom.png)






[乐天] 于 08-11-14 发表: 感谢作者,我的博客已经使用上了该功能。 PJBlog功能预览: sylxb] 于 08-11-14 发表: 你好,请问为何我这有的阅读正常,打开就提示合成忙请稍等,而有的刷新几次才行 我看到有的网站人家阅读都...
[大恐龙
[测试者] 于 08-10-18 发表: 我也用了 速度很卡] 于 08-10-16 发表: wangxunjian] 于 08-10-15 发表: 希望版主能够长久运行,我打算运行到我的网站上去。...
[小白] 于 08-09-24 发表: 小白到此一游。 恩,不错,不错,非煮流!...
[午夜客] 于 08-09-22 发表: 太雷人了。 这功能粉强大!...
[小申] 于 08-09-21 发表: 你好,看了你们的这个播放器感觉真的是好棒, 不过我不懂里面的那个id具体是什么? 可以教我一下么,谢...
[哈哈] 于 08-09-12 发表: 番茄闷骚面...
[test] 于 08-09-11 发表: 中文qweqasas中文...
[venjiang] 于 08-09-10 发表: 8错...
[狼] 于 08-08-29 发表: 功能不错,可是刚加的内容刚开始出现 “语音内容正在处理中,请稍后再试”,刷新后有的可以完整播放,有一...
[大恐龙