今年一些小研究的总结报告
今年弄过一些小研究,但不是太成功或未完善,
所以把这些零碎的经验和总结写在这里。
以后有时间再单独写博文或把测试工程上传至github。
目录:
一、使用Maven和XSL处理XML
二、MinGW中运行strace(略)
三、Java/JSP的ajax技术
四、MinGW中运行gprof和相关工具对Lua进行性能剖析
-------------------------------------
一、使用Maven和 XSL 处理XML
1. 创建maven快速开始工程
(参考资料:
http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
)
$ mvn archetype:generate -DgroupId=com.iteye.weimingtom -DartifactId=testmavenxsl -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
$ cd testmavenxsl
$ ls
pom.xml src
$ mvn package
2. 嵌入xml-maven-plugin插件到pom.xml
(参考资料:
http://search.maven.org/
http://mojo.codehaus.org/xml-maven-plugin/plugin-info.html
http://mojo.codehaus.org/xml-maven-plugin/examples/transform-basic.html
http://mojo.codehaus.org/xslt-maven-plugin/migrate_to_xml-maven-plugin.html
)
在pom.xml中的<build><plugins>节点内加入xml-maven-plugin插件,如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.iteye.weimingtom</groupId>
<artifactId>testmavenxsl</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>testmavenxsl</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<goals>
<goal>transform</goal>
</goals>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>src/main/xml</dir>
<stylesheet>src/main/stylesheet.xsl</stylesheet>
<destDir>target/generated-resources/xml/xslt</destDir>
</transformationSet>
</transformationSets>
</configuration>
</plugin>
</plugins>
</build>
</project>
然后根据这个配置放置xml文件到src/main/xml目录。
放置xsl文件到src/main/stylesheet.xsl。
3. 执行xsl转换
(参考资料:
http://mojo.codehaus.org/xml-maven-plugin/plugin-info.html
http://appfuse.org/display/APF/Eclipse
http://maven.apache.org/guides/introduction/introduction-to-plugin-prefix-mapping.html
)
在命令行中执行:
$ mvn xml:transform
或者用插件的全称调用任务(xxx插件对应的全称是xxx-maven-plugin)
$ mvn org.codehaus.mojo:xml-maven-plugin:transform
如果想查看帮助,可以执行:
$ mvn xml:help
$ mvn xml:help -Ddetail=true -Dgoal=transform
最终生成文件输出到
target\generated-resources\xml\xslt
目录下(可以用pom.xml指定)。
-------------------------------------
二、MinGW中运行strace(略)
http://ftp.ntua.gr/mirror/mingw/OldFiles/
http://sourceforge.net/project/shownotes.php?release_id=46827
MSYS-1.0.11-20080821-src.tar.gz
MSYS-1.0.11-20080821-dll.tar.gz
MSYS-1.0.11-20080821-dbg.tar.gz
msysCORE-1.0.17-1-msys-1.0.17-src.tar.lzma
strace.cc
strace.h
-------------------------------------
三、Java/JSP的ajax技术
一、开发环境
* Windows XP
* Eclipse JEE
* Maven 2
* MinGW
二、笔记
1. 创建工程
执行mvn archetype:generate进入交互模式
选择maven-archetype-webapp
(由于列表太长,
可以用mvn archetype:generate > list.txt 2>1保存到list.txt文件中)
然后根据向导创建maven工程目录
(1)选择创建模板maven-archetype-webapp的序号。
(2)选择版本,默认,回车即可。
(3)输入Java包名(如com.company)。
(4)输入工程短名(如test)。
(5)其余默认,回车即可。
2. 测试打包
执行以下命令
mvn compile
mvn package
3. 添加到pom.xml:
<project>
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.21</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
</configuration>
</plugin>
</plugins>
</build>
</project>
(或者更改jetty插件的相关信息)
然后执行mvn jetty:run测试
浏览器URL为http://localhost:8080/<工程名>/index.jsp
显示Hello World!字样
按Ctrl+C关闭服务器
4. 转换到Eclipse工程
mvn eclipse:eclipse -Dwtpversion=2.0
用Eclipse右键的Import导入,然后按Eclipse右上角切换到Java视角,
打开Porblems视图中右上角下拉菜单选择Show
取消勾选All Errors,改为勾选Errors/Warnings on Project
然后选择工程,显示错误:
Java compiler level does not match the version of the installed Java project facet.
工程右键菜单->Properties->Project Facets->把Java由1.4改为6.0。
(注:这个问题可以用下面的maven-compiler-plugin配置来解决)
消除上面的错误。
切换到Eclipse右上角的Web视角,看到Deployment Descriptor为2.3
5. 修改默认JSP的字符集
主菜单->Window->Preferences->Web->JSP Files
把Encoding改为ISO 10646/Unicode(UTF-8)
另外最好把Eclispe的General->Workspace设置中
Text file encoding也设置为Other:UTF-8
以后新建JSP文件就会以UTF-8标注文件开头
6. 修改默认打开JSP的编辑器
主菜单->Window->Preferences->General->Editors->File Associations
点击*.jsp,把Associated editors中Web Page Editor设为Default(默认)
这样就可以高亮JSP文件,
并且可以在设计视图中用图形界面方式改变页面的样式。
在输入标签时,还可以打开Properties视图中的Attributes,
获得当前HTML标签的属性提示。
按Ctrl+Shift+F9/F10/F11/F12或工具栏上的按钮可以把布局设置为
设计器和编辑器平行显示或只显示其中一个。
7. 创建Servlet类
注意必须先创建src\main\java目录,
接着,打开工程的Properties对话框的Java Build Path分类,
把src\main\java目录添加到Source目录中(Add Folder...按钮)。
然后在工程右键->New->Servlet创建Servlet类。
注意,在创建对话框中
把Source folder的\<工程名>\src\main\resources
改为\<工程名>\src\main\java
创建完类后,Eclipse会提示出错,
那是因为无法导入javax.servlet下的类
(必需的jar文件不在classpath中)
打开pom.xml,在dependencies标签内加入
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
可以更改其中的版本,
其中,依赖的scope为provided,
表示这些jar由Java的Web容器提供,不会被打包到war中。
保存pom.xml后,在Eclipse中工程右键->Delete键卸载工程(但不删除硬盘文件)
接着,重新用mvn eclipse:eclipse -Dwtpversion=2.0生成Eclipse工程文件,
在Eclispe中右键->Import...把工程目录重新导入到Eclipse,
(注:其实这里可以直接转换,然后用refresh刷新即可,不需要重新import)
把工程的Facets的Java版本改为6.0以消除Eclipse的错误。
在执行mvn jetty:run前可以用mvn package打包war文件,
然后用7zip或winrar打开war文件,可以看到里面\WEB-INF\classes下有
Servlet类编译后的class文件。
如果之后运行mvn jetty:run启动服务器后,修改JSP或Servlet的代码,
jetty服务器会自动重启(不需要手动按Ctrl+C)。
8. 修改web.xml的注意问题
<servlet>和<servlet-mapping>不能交错写
9. 在pom.xml设置.java文件的编译器字符集
需要在<plugins>标签内加入encoding的设置(加到jetty插件配置前)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
然后重新执行mvn clean compile package
10. 安装DWR(http://directwebremoting.org/)
(1)在pom.xml中的<dependencies>标签内加入依赖
<dependency>
<groupId>org.apache.geronimo.bundles</groupId>
<artifactId>dwr</artifactId>
<version>3.0.M1_1</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
(2)html文件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type='text/javascript' src='dwr/engine.js'> </script>
<script type='text/javascript' src='dwr/util.js'> </script>
<script type='text/javascript' src='dwr/interface/TestDWR.js'> </script>
<script type='text/javascript' src='dwr.js'></script>
</head>
<body>
<p>
Name:
<input type="text" id="demoName"/>
<input value="Send" type="button" onclick="update()"/>
<br/>
Reply: <span id="demoReply"></span>
</p>
</body>
</html>
(3)嵌入的JavaScripts文件
function update() {
var name = dwr.util.getValue("demoName");
TestDWR.sayHello(name, function(data) {
dwr.util.setValue("demoReply", data);
});
}
(4)WEB-INF/web.xml(注意<servlet>和<servlet-mapping>不能交错书写)
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
(5)WEB-INF/dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr//dwr30.dtd">
<dwr>
<allow>
<create creator="new" javascript="TestDWR">
<param name="class" value="com.ugame.TestDWR"/>
</create>
</allow>
</dwr>
上面HTML文件中出现的dwr/engine.js,dwr/util.js和dwr/interface/TestDWR.js是自动生成的。
TestDWR.sayHello的接口定义在dwr/interface/TestDWR.js中,对应Java端的API。
Java端的API由WEB-INF/web.xml指定。
(6)总结:
pom.xml引入必要的jar库(由于没有继承DWR里的类,所以不需要重新创建Eclipse工程)。
客户端的*.html对应服务器端的web.xml。
客户端的*.js对应服务器端的dwr.xml。
11. 在jetty上配置Perl/PHP/Python CGI
(1)WEB-INF/web.xml(注意<servlet>和<servlet-mapping>不能交错书写)
<!-- see http://docs.codehaus.org/display/JETTY/Jetty+and+PHP -->
<servlet>
<servlet-name>jetty-perl</servlet-name>
<servlet-class>org.mortbay.servlet.CGI</servlet-class>
<init-param>
<param-name>commandPrefix</param-name>
<param-value>C:/Perl/bin/perl.exe</param-value>
</init-param>
</servlet>
<!--
see http://docs.codehaus.org/display/JETTY/Jetty+and+PHP
需要自己创建一个批处理php-cgi-prefix.bat处理文件名问题:
在Windows下
@set SCRIPT_FILENAME=%1
@"C:\Program Files\PHP\php-cgi.exe"
在Linux下
$!/bin/sh
export SCRIPT_FILENAME=$1
/your/path/to/php-cgi
-->
<!-- 注意:ENV_REDIRECT_STATUS意思是设置REDIRECT_STATUS为环境变量 -->
<servlet>
<servlet-name>jetty-php</servlet-name>
<servlet-class>org.mortbay.servlet.CGI</servlet-class>
<init-param>
<param-name>commandPrefix</param-name>
<param-value>"C:/Program Files/PHP/php-cgi-prefix.bat"</param-value>
</init-param>
<init-param>
<param-name>ENV_SystemRoot</param-name>
<param-value>C:/WINDOWS</param-value>
</init-param>
<init-param>
<param-name>ENV_REDIRECT_STATUS</param-name>
<param-value>yes</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>jetty-python</servlet-name>
<servlet-class>org.mortbay.servlet.CGI</servlet-class>
<init-param>
<param-name>commandPrefix</param-name>
<param-value>C:/python26/python.exe</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>jetty-perl</servlet-name>
<url-pattern>/perl/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jetty-php</servlet-name>
<url-pattern>/php/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jetty-python</servlet-name>
<url-pattern>/python/*</url-pattern>
</servlet-mapping>
(2)安装问题
php-cgi有较强的安全限制,需要创建php-cgi-prefix和设置相关的环境变量。
而Perl和Python在jetty上的CGI配置比较简单。
(3)利用CGI,可以运行url-pattern指定目录下的脚本文件。
Perl CGI例子:
#!c:\perl\bin\perl.exe
##
## printenv -- demo CGI program which just prints its environment
##
print "Content-type: text/html\n\n";
print "<pre>*** Please define header of file *.pl or *.cgi with<b>
#!c:\\perl\\bin\\perl.exe</b>\n\n\n";
foreach $var (sort(keys(%ENV))) {
$val = $ENV{$var};
$val =~ s|\n|\\n|g;
$val =~ s|"|\\"|g;
print "${var}=\"${val}\"\n";
}
(4)PHP CGI例子:
<?php
phpinfo();
?>
(5)Python CGI例子:
#!c:/python26/python.exe
import cgitb
cgitb.enable()
import time
import cgi
print "Content-type: text/html"
print """<html>
<head>
<title></title>
</head>
<body>
%s<br/>""" % time.strftime("%I:%M:%S %p")
cgi.print_environ()
print "</body></html>"
-------------------------------------
四、MinGW中运行gprof和相关工具对Lua进行性能剖析
1. Lua 5.1.4 Makefile修改
(1)添加-g -pg
CC= gcc -g -pg
(2)去除ranlib
$(LUA_A): $(CORE_O) $(LIB_O)
$(AR) $@ $?
#$(RANLIB) $@
2. 使用gprof2dot生成图例
gprof ./lua.exe | /c/python26/python gprof2dot.py -n0 -e0 | dot -Tpng -o output.png
see http://www.51testing.com/?uid-13997-action-viewspace-itemid-79952
-------------------------------------
相关推荐
【标题】:人事招聘工作总结报告 【描述】:该报告详细总结了过去一段时间内的人事招聘工作,包括招聘流程、时间安排、数据统计以及工作分析,旨在评估招聘效果并提出改进建议。 【标签】:招聘流程, 招聘渠道, ...
年度培训工作总结报告是企业在一年结束时对培训工作进行回顾、评估和规划的重要文档。这份报告旨在梳理过去一年的培训活动,分析其效果,提炼成功经验,发现存在的问题,并为下一年度的培训工作提供方向。以下是对这...
【市级课题工作总结报告】 在2021年的工作总结中,着重强调了科研成果的推广、课题的结题管理和新课题的申报工作。这些活动对于提升学校教育教学质量起到了关键作用。 一、科研成果推广 本年度,学校完成了三个...
根据给定文件的标题、描述、标签以及部分内容,以下是本钢铁行业研究报告中蕴含的知识点: 1. 钢铁行业现状调研:报告以华东地区的钢铁行业为例,对当地企业的开工情况进行了深入调研。调研结果总结了当前钢铁行业...
【人事招聘工作总结报告】 在2022年的人事招聘工作中,公司采取了更为系统化和规范化的招聘流程,以提升招聘效率和人才质量。总结报告涵盖了招聘的多个方面,包括流程、时间安排、数据统计以及优缺点分析,旨在提供...
### 医药代表年终总结报告知识点详述 #### 一、工作回顾 1. **指标完成情况** - **概述**:对整个年度销售指标的完成情况进行总结,包括与去年的对比、完成率以及增长率。 - **分析要点**: - 对比去年的数据,...
### 2019第三方移动支付行业研究报告关键知识点解析 #### 一、行业现状与挑战 **国内市场红利消失**:报告指出,整个第三方移动支付行业已经经历了高速增长阶段,但近来增长势头明显放缓。市场规模大约维持在9亿...
【大学教师个人工作总结】 作为一名大学教师,肩负着培养下一代的重要责任。在过去的学年里,我专注于提升教学质量,深化教学改革,积极参与管理和服务工作,并在反思中不断改进自身的不足。 在教学方面,我始终...
这份“热情橙微立体年度工作总结报告及工作计划PPT模板”适用于个人或团队在年终时回顾过去一年的工作表现,并规划下一年的工作目标。 1. **年度工作总结**: 年度工作总结是对过去一年工作的全面梳理,包括对工作...
- **标题**:“2018年上半年全国房地产市场研究报告-思源顾问-2018.07-34页.pdf” - **描述**:这份报告是由思源顾问发布的关于2018年上半年中国全国范围内房地产市场的综合分析报告。 - **标签**:“研究报告” ##...
### CMS市场份额研究报告知识点详解 #### 一、研究报告概述 该报告是关于开源内容管理系统(Content Management System,简称CMS)在共享网站建设领域内的市场份额分析与对比研究。报告覆盖了2009年下半年的情况,...
报告的结论(Conclusion)部分可能总结了2020年的重大事件对媒体行业的影响,并对未来的市场走势提出了一些展望和预测。 总而言之,这份报告的核心内容应该集中在疫情如何塑造媒体行业的未来,分析媒体消费的转变,...
【中国50大中城市土地市场研究报告】 报告概述: 2006年的中国50大中城市土地市场研究报告聚焦于土地市场在宏观调控政策下的变化,特别是如何通过土地政策来稳定住房价格,调整房产结构,并促进土地资源的合理配置...
【研究报告】地产调控,当前症结及未来抓手(2021)深入探讨了中国房...总结而言,这份研究报告揭示了当前地产调控政策的深远影响,以及未来可能的政策方向,为理解中国经济面临的挑战和寻找解决方案提供了重要参考。
【电影行业2022年春节档总结】 2022年的春节档电影市场呈现了较为平淡的表现。根据报告,从大年三十到大年初六(1月31日至2月6日)的总票房达到了60.39亿元(含服务费),相比2021年同期下降了23.00%,观影人次为1....
这份由申银万国发布的专题研究报告聚焦于房地产行业的库存分析,揭示了库存的不断攀升以及消化库存所需时间的问题。库存积压不仅反映了开发商的资金压力,同时也预示着未来房价可能面临的调整。 一、库存状况 1. ...
总结来说,这篇专题研究报告聚焦于财政政策如何影响城投债市场,特别是在财政收支动态、政策调整以及城投债风险演变等方面进行了深入分析。随着财政政策的不断调整,投资者需要密切关注这些变化,以便在投资决策中...
此外,报告中还包含了一些对个别国家的详细数据和分析,这对于那些希望对全球数字趋势进行深入研究的个人和机构来说,是一个宝贵的资源。报告的这些深入分析能够帮助读者理解不同国家和地区之间的数字差异,以及这些...
2022年2月7日,国海证券研究所发布了一份关于食品饮料行业的研究报告,特别关注了白酒行业的春节旺季表现。报告指出,春节期间白酒市场的动销趋势验证了之前的预测,即尽管疫情带来了一定影响,但整体旺季销售仍然...
【酒店红酒销售经理述职报告工作总结】 在2021年的工作中,作为酒店红酒销售经理,我承担着提升红酒销量和品牌推广的重要职责。年终总结是反思过去一年工作成效的关键环节,通过回顾和分析,我们可以明确成绩与不足...