`

今年一些小研究的总结报告

 
阅读更多

 

今年一些小研究的总结报告

 

今年弄过一些小研究,但不是太成功或未完善,

所以把这些零碎的经验和总结写在这里。

以后有时间再单独写博文或把测试工程上传至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>

&nbsp;&nbsp;&nbsp; #!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

print """<html>

<head>

<title></title>

</head>

<body>

%s<br/>""" % time.strftime("%I:%M:%S %p")

cgi.print_environ()

print "</body></html>"

print

 

-------------------------------------

四、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

 

-------------------------------------

 

分享到:
评论

相关推荐

    【范文】年度培训工作总结报告.zip

    年度培训工作总结报告是企业在一年结束时对培训工作进行回顾、评估和规划的重要文档。这份报告旨在梳理过去一年的培训活动,分析其效果,提炼成功经验,发现存在的问题,并为下一年度的培训工作提供方向。以下是对这...

    [2021工作总结]市级课题工作总结报告.doc

    【市级课题工作总结报告】 在2021年的工作总结中,着重强调了科研成果的推广、课题的结题管理和新课题的申报工作。这些活动对于提升学校教育教学质量起到了关键作用。 一、科研成果推广 本年度,学校完成了三个...

    钢铁专题研究报告:华东开工调研总结-雾里看花.pdf

    根据给定文件的标题、描述、标签以及部分内容,以下是本钢铁行业研究报告中蕴含的知识点: 1. 钢铁行业现状调研:报告以华东地区的钢铁行业为例,对当地企业的开工情况进行了深入调研。调研结果总结了当前钢铁行业...

    2022年人事招聘工作总结报告范文[扫描版].pdf

    【人事招聘工作总结报告】 在2022年的人事招聘工作中,公司采取了更为系统化和规范化的招聘流程,以提升招聘效率和人才质量。总结报告涵盖了招聘的多个方面,包括流程、时间安排、数据统计以及优缺点分析,旨在提供...

    医药代表年终总结报告.pptx

    ### 医药代表年终总结报告知识点详述 #### 一、工作回顾 1. **指标完成情况** - **概述**:对整个年度销售指标的完成情况进行总结,包括与去年的对比、完成率以及增长率。 - **分析要点**: - 对比去年的数据,...

    2019第三方移动支付行业研究报告-Mob研究院-201907.pdf

    ### 2019第三方移动支付行业研究报告关键知识点解析 #### 一、行业现状与挑战 **国内市场红利消失**:报告指出,整个第三方移动支付行业已经经历了高速增长阶段,但近来增长势头明显放缓。市场规模大约维持在9亿...

    财务科长财务工作总结报告.docx

    在此,我向大家汇报一下今年的工作总结和体会。 在知识学习方面,我不断加强对财务专业知识的深入研究。今年重点学习了《会计法》、《预算法》以及《财务会计报表》等法律法规。这不仅增强了我的法制观念,也使我在...

    大学教师个人工作总结报告精选.docx

    【大学教师个人工作总结】 作为一名大学教师,肩负着培养下一代的重要责任。在过去的学年里,我专注于提升教学质量,深化教学改革,积极参与管理和服务工作,并在反思中不断改进自身的不足。 在教学方面,我始终...

    热情橙微立体年度工作总结报告及工作计划PPT模板.pptx

    这份“热情橙微立体年度工作总结报告及工作计划PPT模板”适用于个人或团队在年终时回顾过去一年的工作表现,并规划下一年的工作目标。 1. **年度工作总结**: 年度工作总结是对过去一年工作的全面梳理,包括对工作...

    《【个人年度工作总结报告范文】公司办公室的年度工作总结范文》.doc

    公司办公室的年度工作总结报告 时光荏苒,转眼间,一年的工作已落下帷幕。这一年,公司办公室紧紧围绕着“技术改革项目生产”与“二期工程建设”两大核心任务,全力以赴地提供全方位的办公支持与服务,确保了企业...

    2018年上半年全国房地产市场研究报告-思源顾问-2018.07-34页.pdf

    - **标题**:“2018年上半年全国房地产市场研究报告-思源顾问-2018.07-34页.pdf” - **描述**:这份报告是由思源顾问发布的关于2018年上半年中国全国范围内房地产市场的综合分析报告。 - **标签**:“研究报告” ##...

    CMS市场份额的研究报告

    ### CMS市场份额研究报告知识点详解 #### 一、研究报告概述 该报告是关于开源内容管理系统(Content Management System,简称CMS)在共享网站建设领域内的市场份额分析与对比研究。报告覆盖了2009年下半年的情况,...

    群邑-今年,明年:全球媒体行业预测(英文)-2020.6-17页精品报告2020.pdf

    报告的结论(Conclusion)部分可能总结了2020年的重大事件对媒体行业的影响,并对未来的市场走势提出了一些展望和预测。 总而言之,这份报告的核心内容应该集中在疫情如何塑造媒体行业的未来,分析媒体消费的转变,...

    电赛报告书模板.doc

    随着科技的不断进步和对生态环境的日益关注,水环境监测成为了国内外研究和应用的热点。全国大学生电子设计竞赛,作为培养大学生创新意识和实践能力的重要平台,为学子们提供了一个展示和提升电子设计才能的舞台。...

    语文教研究2013年工作总结.doc

    今年,我们深入学习了党的xx大报告和全国职业教育工作会议精神,结合新时代背景下的教育要求,更新教师的教育观念。通过专题讲座、研讨会等形式,强化了教师实事求是、与时俱进的思想,显著提升了教师的理论修养和...

    研究报告:地产调控,当前症结及未来抓手(2021)(12页).pdf

    【研究报告】地产调控,当前症结及未来抓手(2021)深入探讨了中国房...总结而言,这份研究报告揭示了当前地产调控政策的深远影响,以及未来可能的政策方向,为理解中国经济面临的挑战和寻找解决方案提供了重要参考。

    电影行业2022年春节档电影总结:聊复尔尔,静待修复(13页).pdf

    【电影行业2022年春节档总结】 2022年的春节档电影市场呈现了较为平淡的表现。根据报告,从大年三十到大年初六(1月31日至2月6日)的总票房达到了60.39亿元(含服务费),相比2021年同期下降了23.00%,观影人次为1....

    中国的渔业报四川重庆渔业调查研究报告.docx

    中国渔业报四川重庆渔业调查研究报告 引言 近年来,随着经济的快速发展和对食品安全及生态环境的日益重视,中国的渔业面临着转型升级的关键时期。地处中国西部的四川省与重庆市,凭借其得天独厚的自然条件和资源...

    申银万国-房地产行业专题研究二:行业库存研究和分析——库存日渐攀升,消化尚需时日.pdf

    这份由申银万国发布的专题研究报告聚焦于房地产行业的库存分析,揭示了库存的不断攀升以及消化库存所需时间的问题。库存积压不仅反映了开发商的资金压力,同时也预示着未来房价可能面临的调整。 一、库存状况 1. ...

    医生年度述职报告精彩总结2021年.docx

    今年,我不仅通过参加各类学术会议和专业培训,系统地加强了外科相关理论知识的学习,还通过临床实践,掌握了普外科和泌尿外科的常见及复杂病例的诊断和治疗。例如,我成功引进并实施了小切口胆囊切除术,这项技术...

Global site tag (gtag.js) - Google Analytics