今年一些小研究的总结报告
今年弄过一些小研究,但不是太成功或未完善,
所以把这些零碎的经验和总结写在这里。
以后有时间再单独写博文或把测试工程上传至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年的重大事件对媒体行业的影响,并对未来的市场走势提出了一些展望和预测。 总而言之,这份报告的核心内容应该集中在疫情如何塑造媒体行业的未来,分析媒体消费的转变,...
随着科技的不断进步和对生态环境的日益关注,水环境监测成为了国内外研究和应用的热点。全国大学生电子设计竞赛,作为培养大学生创新意识和实践能力的重要平台,为学子们提供了一个展示和提升电子设计才能的舞台。...
今年,我们深入学习了党的xx大报告和全国职业教育工作会议精神,结合新时代背景下的教育要求,更新教师的教育观念。通过专题讲座、研讨会等形式,强化了教师实事求是、与时俱进的思想,显著提升了教师的理论修养和...
【研究报告】地产调控,当前症结及未来抓手(2021)深入探讨了中国房...总结而言,这份研究报告揭示了当前地产调控政策的深远影响,以及未来可能的政策方向,为理解中国经济面临的挑战和寻找解决方案提供了重要参考。
【电影行业2022年春节档总结】 2022年的春节档电影市场呈现了较为平淡的表现。根据报告,从大年三十到大年初六(1月31日至2月6日)的总票房达到了60.39亿元(含服务费),相比2021年同期下降了23.00%,观影人次为1....
中国渔业报四川重庆渔业调查研究报告 引言 近年来,随着经济的快速发展和对食品安全及生态环境的日益重视,中国的渔业面临着转型升级的关键时期。地处中国西部的四川省与重庆市,凭借其得天独厚的自然条件和资源...
这份由申银万国发布的专题研究报告聚焦于房地产行业的库存分析,揭示了库存的不断攀升以及消化库存所需时间的问题。库存积压不仅反映了开发商的资金压力,同时也预示着未来房价可能面临的调整。 一、库存状况 1. ...
今年,我不仅通过参加各类学术会议和专业培训,系统地加强了外科相关理论知识的学习,还通过临床实践,掌握了普外科和泌尿外科的常见及复杂病例的诊断和治疗。例如,我成功引进并实施了小切口胆囊切除术,这项技术...