<<上篇 | 首页 | 下篇>>

高手教大家如何配置JVM参数

高手教大家如何配置JVM参数
/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 -XX:GCTimeRatio=19 -Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log

阅读全文……

标签 : ,

应对Scrum项目带来的变化

应对Scrum项目带来的变化

摘要

在软件开发中采用敏捷方法需要很多组织级的改变,例如企业文化、个人角色、过程等。作为一个组织,想要进行敏捷转变,就必须学着妥善处理这些变化。


文中,我参考了敏捷、Scrum和精益理论。所以谨慎起见,我在文章之初先明确一下我这个“敏捷”的定义。我认为,敏捷是众多新兴的、围绕迭代递增软件开发的项目管理理论的总称。其中比较流行的几个是:精益理论、水晶方法、Scrum、动态系统开发方法以及极限编程。

Scrum和极限编程,尤其是这两者的组合,是迄今为止被运用最多的敏捷方法。尽管Scrum的定义中不包含任何关于工程规范的内容,我们仍然不可能把两者分而置之。那么如果你问我敏捷代表什么,我会这么定义:

Agile = Scrum + XP

最近也有很多思想领袖成功地把精益思想引入到了软件项目管理当中,这么看来,要是我在文中不提及这部分内容就太蠢了。

本文就是基于此来写的。

本文概述了在敏捷组织中不同角色可能发生的变化,并为能更好地从瀑布模型转变到敏捷方法提供了一些建议。文中论及的角色如下:客户/利益关系人,产 品管理,综合管理,项目管理,开发人员和质量保证人员。关于技术类角色,我说得更加具体一些,这主要是由于我个人的经验更偏向技术一点。

敏捷方法着眼于短期项目目标的实现效率。例如,与瀑布模型不同,敏捷方法通常以2到4周为时间间隔来开发一些软件功能。此体系通过频繁的“检视和适 应”周期,来同时确保团队动力和客户满意度。敏捷有能力彻底颠覆职位和背景对个人的局限,从而实现效率、个人潜能发挥和产出的最大化。这一能力引出了一个 软件开发策略,而由此衍生的各种改变都是合理的:一个经济的、结果导向的软件开发方法。

阅读全文……

标签 :

使用NekoHTML和XPath获取网页特定标签

  如果需要在HTML页面中提取数据,那么NekoHTML 是个不错的工具。因为HTML跟XML不一样,可能存在一些格式不完整的元素,譬如没有end tag的table等,这个时候,NekoHTML是个很尽责的清道夫和修理工,可以帮助我们整理这些缺陷数据,最终生成一个DOM Tree。  得到DOM Tree话,使用XPath就可以轻松获取所需数据了:-)

  下面是几个需要注意的问题:

1、如何使用NekoHTML?

     必须在 Java Build Path里加入 nekohtml.jar , xercesImpl.jar 以及xalan.jar。下载的NekoHTML目录中并没有xercesImpl.jar和xalan.jar,需要自己下载。

 

2、如何获取XPath?

    当然大家可以把网页的代码下下来,然后使用“人工智能”的方式获取,但是过程确实让人眼花缭乱、心力交瘁。使用FireBug吧,可以自动生成XPath。

    updated:

    Firebug生成的XPath中如果含有TBODY标签,需要把TBODY去掉,否则不能正确获取网页的内容。如Firebug生成的XPath为/html/body/table/tbody/tr,那么则需要修改为/html/body/table/tr。

 

4、如何正确结合NekoHTML和XPath?

    XPath的Tag必须大写。如

    String divXpath = "//DIV";//正确

    String divXpath = "//div";//错误

 

 下面举个例子,提取当当网图书的ISBN信息:

Java代码
  1. DOMParser parser = new DOMParser();  
  2.     try {  
  3.            //设置网页的默认编码  
  4.            parser.setProperty("http://cyberneko.org/html/properties/default-encoding","gb2312");  
  5.            /*The Xerces HTML DOM implementation does not support namespaces  
  6.            and cannot represent XHTML documents with namespace information.  
  7.            Therefore, in order to use the default HTML DOM implementation with NekoHTML's  
  8.            DOMParser to parse XHTML documents, you must turn off namespace processing.*/  
  9.            parser.setFeature("http://xml.org/sax/features/namespaces"false);  
  10.   
  11.            String strURL = "http://product.dangdang.com/product.aspx?product_id=9317290";  
  12.            BufferedReader in = new BufferedReader(  
  13.                    new InputStreamReader(  
  14.                            new URL(strURL).openStream()));  
  15.            parser.parse(new InputSource(in));  
  16.            in.close();  
  17.           } catch (Exception e) {  
  18.            e.printStackTrace();  
  19.           }  
  20.           Document doc = parser.getDocument();  
  21.           // tags should be in upper case  
  22.           String productsXpath = "/HTML/BODY/DIV[2]/DIV[4]/DIV[2]/DIV/DIV[3]/UL[@class]/LI[9]";  
  23.           NodeList products;  
  24.           try {  
  25.               products = XPathAPI.selectNodeList(doc, productsXpath);  
  26.               System.out.println("found: " + products.getLength());  
  27.               Node node = null;  
  28.               for(int i=0; i< products.getLength();i++)  
  29.               {  
  30.                   node = products.item(i);  
  31.                   System.out.println( i + ":\n" + node.getTextContent());  
  32.               }  
  33.           }catch (TransformerException e) {  
  34.               e.printStackTrace();  
  35.           }   

 

一些有用的链接:

1、Java HTML Parser 比较

2、java XPATH

3、XPath定位

标签 : , ,