我一般都是在Linux的机器上使用Apache,也没发现这个问题。今天在Windows上装了一个Apache 2,结果运行起来就发现 CPU 的资源很快就上升到100%,打开浏览器访问 http://localhost/ 也没有响应。查看了一下 Apache 的运行日志,发现错误日志不停的增加,内容大致就是:

[Fri Feb 09 09:34:10 2007] [error] (OS 10038)An operation was attempted on something that is not a socket. : Child 1764: Encountered too many errors accepting client connections. Possible causes: dynamic address renewal, or incompatible VPN or firewall software. Try using the Win32DisableAcceptEx directive.

就是这个错误,不停的出现。
看日志上提示说尝试使用 Win32DisableAcceptEx 指令,当然要照着办了,打开 conf/httpd.conf,在最后一行添加了这条指令,就光秃秃的写了一个

Win32DisableAcceptEx

什么参数也不需要,就这样重新运行 Apache ,出现了这样一个提示:[Fri Feb 09 09:34:31 2007] [notice] Disabled use of AcceptEx() WinSock2 API。啊哈,正常了。
上 Google 找了一下,发现这个问题的原因原来是 Apache 的新版本中对 Winsock2 的支持有问题,原因不明,只是在部分的Windows上会有这样的问题,已经很长时间了 ^_^。

看来 JDK 6 在 Sun 的心目中还是非常重要的,一发布者就连 JDK1.4和JDK5的链接都没了。
http://java.sun.com/
看看 JDK 6 有哪些新特性了:
首先不得不提的是脚本语言的支持,新增了 javax.script 包,看看 https://scripting.dev.java.net/ 这里
还有就是 gif 的版权过期了。
对了,编译器也从 com.sun.tools.javac 变成了 javax.tools.JavaCompile ,这下我们能够实时生成 Java 源代码,然后实时编译,有点动态语言的感觉了。
……

用 grep 匹配文件时,显示结果黑压压的一片

执行一下这条命令,重新 grep 试试看
export GREP_OPTIONS=’–color=auto’
好看多了,不是吗?

你可以把 export GREP_OPTIONS=’–color=auto’ 这条命令添加到 ~/.bash_profile 的最后,重新登录一下就能生效了。

摘自: Fifteen Exercises for Learning a new Programming Language

1、无穷循环显示数字数列(1、2、3、4、5、6、……、等等),按指定键退出程序(比如 Esc 键)
2、斐波纳契数列,交换两个变量,在一个数字列表中查找最大/最小的数字
3、键盘输入一些数字,然后递增/递减排序输出
4、用公式 (D*V*rho)/mu 来计算雷诺数,其中 D=直径、V=加速度、rho=密度、mu=粘稠度。输入给程序一些数据(先不要管单位转换)
如果结果小于2100,就显示 Laminar flow
如果结果介于 2100 和 4000 之间,就显示 Transient flow
如果大于4000就显示 Turbulent Flow
(if..else..then 条件判断)
5、修改前面的程序,最后增加一个提示“是不是再来一次?(y/n)”,如果回答 y,程序就重新要求输入这些参数。如果是“n”就退出程序
(do while 循环)
在程序运行时,给 mu 变量赋值为 0,看看会发生什么,是不是出现了“DIVID BY ZERO”错误?或者是不是出现了”Segmentation fault..coredump”?怎样处理这种情形?程序有没有内建了什么处理机制么?(异常处理)
6、科学计算,要求支持加、减、乘、除、开方、平方、立方、sin、cos、tan、阶乘、取反、取模
7、用不同的格式打印输出,四舍五入保留4位小数,左右补0对齐(输入/输出操作)
8、打开一个文本文件,转换成 HTML 文件(文件操作/字符串处理)
9、时间和日期:获取操作系统时间,再转换成不同的格式输出,比如: ‘DD-MON-YYYY’, ‘mm-dd-yyyy’, ‘dd/mm/yy’ 等等
10、建立一个文件,把文件的创建日期和时间戳附在文件名后面
11、输入一个 HTML 表格,删除所有的标签,把数据用逗号/制表符分割保存到文件中
12、找出文件中的所有大写单词,去除重复的
13、实现自动换行功能(注意观察在 Windows 的记事本中的自动换行是怎样工作的)
14、在数组的开头、中间和结尾添加/删除数据
15、正在学习的这个程序设计语言是不是还有一些其他特性:操作符重载,虚函数、引用、指针等等。这个语言是不是还支持一些叫做“namespace/package/module”的东西?多看看

6、7年前高中刚毕业时写过一个,原先写的早就找不到,不过算法还是记得很清楚,凭印象又写出来了。

源文件 http://blog.chaifeng.com/upload/full_array.c.utf-8.html

C 源文件 http://blog.chaifeng.com/upload/full_array.c

源代码用 Vim 编辑
语法高亮文件用 Vim 生成,大家可以参考一下
:TOhtml

执行效率测试:

OS : RedHat AS3 update 6

CPU : P3 1G

内存: 512M

GCC : gcc (GCC) 3.2.3 20030502

编译时没加优化 : gcc -o full_array full_array.c

全排列 10 个元素,耗时约 1.72 秒

time ./full_array “0192837465” > /dev/null

real 0m1.718s

user 0m1.720s

sys 0m0.000s

全排列 11 个元素,耗时约 18.9 秒

time ./full_array “0192837465a” > /dev/null

real 0m18.949s

user 0m18.920s

sys 0m0.020s

全排列 12 个元素,耗时约 3分55 秒

time ./full_array “0192837465ab” > /dev/null

real 3m55.335s

user 3m51.020s

sys 0m0.240s

基本上比用递归快一个数量级

如果有问题,欢迎一起讨论

System.getProperty("line.separator");

这两天测试的时候,一个机器上同时运行了3、4个Tomcat,只好修改 $CATALINA_HOME/conf/server.xml 里的端口。
在 VIM 中用以下替换命令
:%s/\([pP]ort\)=”\(\d\{4\}\)”/\1=”3\2″/gc
全局替换端口数字长度为4的,在前面加上3。
最后面的 gc 是全局替换并且确认,去掉c就不用每次确认替换了。

发信人: cathayan (连接被重置), 信区: VIM
标 题: Re: 怎样导出语法加亮的代码
发信站: 水木社区 (Fri Jul 7 09:46:48 2006), 站内
:let html_use_css = 1
:let html_no_pre=1
:let use_xhtml = 1
html_use_encoding

进行远程调试简单来说:只需要在java 命令后面添加上如下的参数:
-Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=y
例如:原先是这样启动程序的
java -cp . HelloWorld,
现在就改成这样了
java -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=y -cp . HelloWorld
然后一运行就会出现如下的文字:
Listening for transport dt_socket at address: 8000
这就OK了。打开 Eclipse, 在调试里面新增一个 Remote Java Application,Host 填写上启动 Java 程序的那台服务器的地址,Port填写 8000,也就是参数中 address 后面指定的数字。剩下就跟平常一样了,断点该设就设,程序动态运行时也可以修改,不用重新拷贝,立刻生效,跟本地运行一样。当然了并不是所有的修改都可以立即生效的,有时还是需要我们把程序重新拷贝一下。
上面各个参数的含义分别是:transport=dt_socket指明了使用网络来传输,所有的平台都支持,server=y指明了启动VM的以调试服务器来执行,address=8000就是端口了,也能指定服务器IP,suspend=y则指定了VM开始的时候暂停,等待与客户端连接,连接上以后才继续执行。

更详细的内容看BEA上的《充分利用 J2EE 调试工具》一文

发现应用不能用了,反复测试发现页面中不能包含 taglib,否则会出现以下提示:

HTTP Status 500 –

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /index.jsp(1,1) Unable to read TLD “META-INF/tlds/struts-bean.tld” from JAR file “file:/C:/home/chaifeng/eclipse_workspace/cnlife365_tracker/web/WEB-INF/lib/struts.jar”: org.apache.jasper.JasperException: Failed to load or instantiate TagExtraInfo class: org.apache.struts.taglib.bean.CookieTei
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

root cause

org.apache.jasper.JasperException: /index.jsp(1,1) Unable to read TLD “META-INF/tlds/struts-bean.tld” from JAR file “file:/C:/home/chaifeng/eclipse_workspace/cnlife365_tracker/web/WEB-INF/lib/struts.jar”: org.apache.jasper.JasperException: Failed to load or instantiate TagExtraInfo class: org.apache.struts.taglib.bean.CookieTei
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:86)
org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:339)
org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:372)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:484)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1552)
org.apache.jasper.compiler.Parser.parse(Parser.java:126)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:155)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
Apache Tomcat/5.5.17

想了半天,刚才没有改动代码。折腾了半天才想起来,只是更新了一下lib下的jar,一时图方便就把另外一个目录下的jar全都复制过来了,包括 jsp-api.jar。
把它删除就ok了,记录一下。