<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>labyrinth 2gether</title>
    <description>慢慢爬的乌龟，偶尔也会想飞
看看天空多美，枕着云朵入睡
敢梦敢想是生命的泉源
脚踏实地是成功的基垫
大海蓝天，每一步都是梦的起点</description>
    <link>http://sunny-chance.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>广告联盟-日计分析处理</title>
        <author>sunny-chance</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunny-chance.javaeye.com">sunny-chance</a>&nbsp;
          链接：<a href="http://sunny-chance.javaeye.com/blog/187775" style="color:red;">http://sunny-chance.javaeye.com/blog/187775</a>&nbsp;
          发表时间: 2008年04月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>工作已经两个月有余了，算一下，线上活动也做6个了，感觉挺烦厌的！原因不在于涉及很复杂的业务逻辑，也没有用到很高深的技术。实现都很简单，通常就是从页面提交数据，后台处理一下放入缓存或直接保存到数据库，然后把数据按需取出来显示。主要使人心烦的是整天催促你上线的销售，动态页跟静态页都分不清的设计和制作，随心所欲增加需求的编辑，还有间歇不断的电话响（自己无形中变成接线生了）... <br /><br />也许是自己的表现受到肯定吧，Oliver把我分配到了&ldquo;广告联盟&rdquo;的项目组，暂时不用做枯燥烦人的活动了；丛先生还问我有没有跟我实力相当的同学可以介绍两三个进来，很是高兴的说^_^ <br />------------------------------------------------------- <br /><br />这次的工作主要是实现计数分析处理部分的(IP)防作弊功能。 <br /><br />系统会定时对收集到的<strong>广告访问数据文件</strong>做分析统计，这部分得到的数据是点击费用计数、广告显示/点击报表等的基础数据。分析统计流程如下： <br />1，系统定时启动计数原始数据入库操作 <br />2，读取原始的计数文件的每一行内容 <br />3，如果是显示计数，广告显示数加1<br />4，如果是点击计数，检查验证串中的解密后的网友IP是否与这次请求中的ipWithProxy一致。如果一致，这次点击视为有效点击，相反，这次点击视为作弊点击。其中，作弊过的IP以后所有的点击会转到作弊点击中，而且如果检查到原来已经有过有效点击，也惩罚性把原来(部分)的有效点击改为作弊点击 <br />5，对于计数记录，按如下规则做统计: <br />-&gt;以请求日期，广告产品ID，站点ID做统计基准 <br />-&gt;显示计数的合计值累加到<strong>日统计结果表</strong>对应记录的[广告显示数]中 <br />-&gt;有效的点击计数的合计值累加到日统计结果表对应记录的[有效点击计数]中 <br />-&gt;作弊的点击计数的合计值累加到日统计结果表对应记录的[作弊点击计数]中 <br />6，保存到数据库上，统计处理完成 <br />-------------------------------------------------------&nbsp; <br /><br /><strong>附录一：<br /></strong>广告访问数据文件中单行访问记录的对象(AccessRecord)的属性：<br />
<table border="0">
<tbody>
<tr>
<td>type</td>
<td>计数类型(0 - 显示计数, 1 - 点击计数)</td>
</tr>
<tr>
<td>date</td>
<td>请求的日期时间(yyyyMMddHHmmss)</td>
</tr>
<tr>
<td>ip</td>
<td>网友的IP</td>
</tr>
<tr>
<td>ipWithProxy</td>
<td>网友的IP/网友的内部IP(用于判断作弊点击)</td>
</tr>
<tr>
<td>placementId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
<td>广告产品投放ID</td>
</tr>
<tr>
<td>websiteId</td>
<td>站点ID</td>
</tr>
<tr>
<td>referer</td>
<td>广告显示/点击来源</td>
</tr>
<tr>
<td>encryptIpKeyId</td>
<td>IP的验证串(经过加密的IP字符串 + 密匙ID)</td>
</tr>
</tbody>
</table>
<strong><br />附录二：</strong><br />日统计结果表(AFF_DAY_SUMMARY)的属性有：<br />
<table border="0">
<tbody>
<tr>
<td>recordDate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
<td>对应AccessRecord的'请求的日期时间'(YYYYMMDD)</td>
</tr>
<tr>
<td>productId</td>
<td>广告产品ID</td>
</tr>
<tr>
<td>websiteId </td>
<td>站点ID</td>
</tr>
<tr>
<td>pv </td>
<td>广告显示数</td>
</tr>
<tr>
<td>click </td>
<td>(重复)有效点击计数</td>
</tr>
<tr>
<td>ipClick </td>
<td>IP单次有效点击计数</td>
</tr>
<tr>
<td>clickZB </td>
<td>(重复)作弊点击计数</td>
</tr>
<tr>
<td>ipClickZB&nbsp; </td>
<td>IP单次作弊点击计数</td>
</tr>
<tr>
<td>referer </td>
<td>来源次数最多的N个referer</td>
</tr>
</tbody>
</table>
</p>
          <br/>
          <span style="color:red;">
            <a href="http://sunny-chance.javaeye.com/blog/187775#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 28 Apr 2008 21:57:15 +0800</pubDate>
        <link>http://sunny-chance.javaeye.com/blog/187775</link>
        <guid>http://sunny-chance.javaeye.com/blog/187775</guid>
      </item>
      <item>
        <title>2008北京国际车展_全橙直播_休闲版-auto080403</title>
        <author>sunny-chance</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunny-chance.javaeye.com">sunny-chance</a>&nbsp;
          链接：<a href="http://sunny-chance.javaeye.com/blog/186816" style="color:red;">http://sunny-chance.javaeye.com/blog/186816</a>&nbsp;
          发表时间: 2008年04月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://play3.pcauto.com.cn/auto080403/" target="_blank">http://play3.pcauto.com.cn/auto080403/</a>
          <br/>
          <span style="color:red;">
            <a href="http://sunny-chance.javaeye.com/blog/186816#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 25 Apr 2008 15:49:12 +0800</pubDate>
        <link>http://sunny-chance.javaeye.com/blog/186816</link>
        <guid>http://sunny-chance.javaeye.com/blog/186816</guid>
      </item>
      <item>
        <title>广汽丰田第一店_你问我答-auto080407</title>
        <author>sunny-chance</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunny-chance.javaeye.com">sunny-chance</a>&nbsp;
          链接：<a href="http://sunny-chance.javaeye.com/blog/186399" style="color:red;">http://sunny-chance.javaeye.com/blog/186399</a>&nbsp;
          发表时间: 2008年04月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://play3.pcauto.com.cn/auto080407" target="_blank">活动</a>的需求再简单不过了：网友提问，商家在后台回复或删除网友问题...<br /><br />这次的“主要”精力是放在文字显示上，过滤“&lt;”、“>”和“&”等在HTML和XML中具有特殊意义的字符。记得以前使用Struts的时候，直接用&lt;bean:write name="xxx" property="xxx" filter="true" />就可以方便的把XML标签过滤了。想必JSTL也不会那么弱吧！后来打开了几个JSTL的相关网页，发现处理方式大同小异&lt;c:out value="<em>expression</em>" escapeXml="false">&lt;/c:out><br />------------------------------------------------------------------------------------------<br />趁着现在有点时间，就总结一下JSTL的知识吧！<br />1，11个EL隐式对象的标识符：<br />pageContext、pageScope、requestScope、sessionScope、applicationScope、param、paramValues、header、headerValues、cookie、initParam<br />2，JSTL core标签库<span style="color: white">&lt;%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %></span><br />&lt;c:set var="xxx" scope="[<u>page</u>|request|session|application]" value="<em>expression</em>" /><br />&lt;c:remove var="xxx" scope="[<u>page</u>|request|session|application]" /><br />&lt;c:out value="<em>expression</em>" default="<em>expression</em>" escapeXml="<em>boolean</em>" /><br />&lt;c:forEach var="xxx" varStatus="xxx" begin="<em>expression</em>" end="<em>expression</em>" step="<em>expression</em>" >xxx&lt;/c:forEach><br />&lt;c:if test="<em>expression</em>" var="xxx" scope="[<u>page</u>|request|session|application]" >xxx&lt;/c:if><br />&lt;c:choose>&lt;c:when test="<em>expression</em>" >xxx&lt;/c:when>...&lt;c:otherwise>xxx&lt;/c:otherwise>&lt;/c:choose><br />&lt;c:redirect url="<em>expression</em>" context="xxx" >&lt;c:param name="xxx" value="<em>expression</em>" />...&lt;/c:redirect><br />3，JSTL fmt标签库<br />&lt;fmt:formatDate value="<em>expression</em>" timeZone="xxx" type="[<u>date</u>|time|both]" dateStyle="[<u>default</u>|short|medium|long|full]" timeStyle="[<u>default</u>|short|medium|long|full]" pattern="<em>expression</em>" var="xxx" scope="[<u>page</u>|request|session|application]" /><br />&lt;fmt:parseDate  value="<em>expression</em>" timeZone="xxx" type="[<u>date</u>|time|both]" dateStyle="[<u>default</u>|short|medium|long|full]" timeStyle="[<u>default</u>|short|medium|long|full]" pattern="<em>expression</em>" var="xxx"  scope="[<u>page</u>|request|session|application]" parseLocale="expression" /><br />4，JSTL xml和sql标签库<br />略<br /><br /><strong>参考资料：</strong><br /><ul><li><a href="http://www.ibm.com/developerworks/cn/java/j-jstl0211" target="_blank">JSTL 入门: 表达式语言</a></li><li><a href="http://www.ibm.com/developerworks/cn/java/j-jstl0318" target="_blank">JSTL 入门: 探讨 core</a></li><li><a href="http://www.ibm.com/developerworks/cn/java/j-jstl0415" target="_blank">JSTL 入门: 表示就是一切</a></li><li><a href="http://www.ibm.com/developerworks/cn/java/j-jstl0520" target="_blank">JSTL 入门: 访问SQL和XML内容</a></li></ul>
          <br/>
          <span style="color:red;">
            <a href="http://sunny-chance.javaeye.com/blog/186399#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Apr 2008 15:14:44 +0800</pubDate>
        <link>http://sunny-chance.javaeye.com/blog/186399</link>
        <guid>http://sunny-chance.javaeye.com/blog/186399</guid>
      </item>
      <item>
        <title>道奇锋哲 锋行天下 激情体验 网络大赛-auto080327</title>
        <author>sunny-chance</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunny-chance.javaeye.com">sunny-chance</a>&nbsp;
          链接：<a href="http://sunny-chance.javaeye.com/blog/184432" style="color:red;">http://sunny-chance.javaeye.com/blog/184432</a>&nbsp;
          发表时间: 2008年04月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://play3.pcauto.com.cn/auto080327" target="_blank">活动</a>参与流程：<br />-Step1 用户注册(10锋哲币)<br />-Step2 有奖问答(5锋哲币/题)<br />-Step3 预约试驾(50锋哲币)<br />-Step4 参加体验(100锋哲币)<br />-Step5 体验报告(10锋哲币)<br /><br />这次的任务很紧，只有一天多的时间。因为康哥的信任，给了我这个“不可能完成的任务”...<br />其实，在我看来，只是很简单的工作。注册、预约都是分别提交一些用户信息，算积分，然后入库；后台则提供查询用户信息的功能...的确很枯燥...<br /><br />其中，“有奖问答”一步是14题不定项选择题。正确答案写死在二维String[][]数组上，前台用request.getParameterValues()把用户提交的每题的答案获取后放入新的String[]数组，然后分别比较两个数组中的元素，完全匹配则加分...<br /><pre name="code" class="java">	/** 判断两个String数组是否相等 */
	public boolean equal(String[] answers_user, String[] answers_right) {
		if (answers_user == null || answers_user.length == 0)
			return false;
		if (answers_right == null || answers_right.length == 0)
			return false;
		if (answers_user.length != answers_right.length)
			return false;

		Arrays.sort(answers_right);// 二分查找前需排序
		for (int j = 0; j &lt; answers_user.length; j++) {
			if (Arrays.binarySearch(answers_right, answers_user[j]) &lt; 0) {
				return false;
			}
		}

		return true;
	}</pre><br /><br />省份城市联动...
          <br/>
          <span style="color:red;">
            <a href="http://sunny-chance.javaeye.com/blog/184432#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 19 Apr 2008 17:11:33 +0800</pubDate>
        <link>http://sunny-chance.javaeye.com/blog/184432</link>
        <guid>http://sunny-chance.javaeye.com/blog/184432</guid>
      </item>
      <item>
        <title>plan</title>
        <author>sunny-chance</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunny-chance.javaeye.com">sunny-chance</a>&nbsp;
          链接：<a href="http://sunny-chance.javaeye.com/blog/179377" style="color:red;">http://sunny-chance.javaeye.com/blog/179377</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          4.4~4.6  喺需要透下啦，翻屋企休养几日<br />4.15  挨通宵都要将篇论文呕出来<br />4.16  交付3个flash应用，没野喺兴仔搞唔掂嘅<br />4.X  去电影院睇出电影，学生证+会员卡<br />5.1~5.3  毕业旅游，目的地---未知<br />5.12  母亲节，未plan掂，你话呢？<br />5月中~6月初  租一套房，近岗顶嘅话再加部单车<br />6月中  买只表<br />毕业  签约or跳槽or回中山<br /><br />有几多可以实现呢，唔知啊，看着办吧...<br />学周星星话斋：做人如果无梦想，同条咸鱼有咩分别
          <br/>
          <span style="color:red;">
            <a href="http://sunny-chance.javaeye.com/blog/179377#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Apr 2008 20:38:18 +0800</pubDate>
        <link>http://sunny-chance.javaeye.com/blog/179377</link>
        <guid>http://sunny-chance.javaeye.com/blog/179377</guid>
      </item>
      <item>
        <title>色诱众生 舍我其谁_艾诺V2000SE-online080319</title>
        <author>sunny-chance</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunny-chance.javaeye.com">sunny-chance</a>&nbsp;
          链接：<a href="http://sunny-chance.javaeye.com/blog/177472" style="color:red;">http://sunny-chance.javaeye.com/blog/177472</a>&nbsp;
          发表时间: 2008年03月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://play3.pcauto.com.cn/online080319" target="_blank">游戏</a>规则：<br />1.游戏中翻到两张同样内容的牌，这两张牌会一起消失<br />2.不要乱猜，只能翻60次；不要反应太慢，时间限制2分钟！<br />3.每位会员最多只能玩5次，每提交一次成绩算一次<br />4.排行榜只显示前14名网友；所用时间越少，翻牌次数越少，排在越前<br />5.游戏完成后成绩要审核通过后才能显示在排行榜（后台可取消作弊会员成绩）<br /><br />现在的广告都比较喜欢用flash来吸引网友的眼球，而flash游戏上线后，加上丰厚的礼品，作弊者蜂拥而至，作弊手段也层出不穷。因此，本次活动的主要精力是放在防作弊上...<br /><br />了解到一些作弊手法后，我初步总结了几个应对措施：<br />1，服务端只接受POST请求，避免网友直接在Browser中输入分数<br /><pre name="code" class="java">
	if(!request.getMethod().equalsIgnoreCase("POST")){
		throw new RuntimeException("过滤");
	}</pre>2，检测提交分数请求的Referer<br /><pre name="code" class="java">
    String ref = request.getHeader("Referer");
    if(ref == null || !ref.equals("xxx/xxx.swf")) {
	   	throw new RuntimeException("过滤");
    }</pre>3，加密分数<br />比如说：A和B，A是原始积分，B是A加密后得到的验证信息。提交A的时候附带提交B，服务端验证A的合法性。因为B是由A计算得来的，就算作弊者修改了B，但是在服务端还是可以用A得出B。如果服务端得出的B和网友提交的B不一致，就可以视为作弊了。<br />4，C/S动态同步更新<br />把flash完全当作显示，就会比较安全。游戏的过程都是在服务端用其他语言实现，flash只是起调用数据、显示数据，以及提供玩家操作接口的作用。这样，不管flash怎么改，服务端的程序和数据是没变的。<br /><br />至于用到变速齿轮等工具作弊，还没有想到有效的解决方法<br />总之，只要游戏跟金钱扯上关系，作弊现象是不能杜绝的...
          <br/>
          <span style="color:red;">
            <a href="http://sunny-chance.javaeye.com/blog/177472#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Mar 2008 22:21:47 +0800</pubDate>
        <link>http://sunny-chance.javaeye.com/blog/177472</link>
        <guid>http://sunny-chance.javaeye.com/blog/177472</guid>
      </item>
      <item>
        <title>网络联盟注册送现金活动-online080313</title>
        <author>sunny-chance</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunny-chance.javaeye.com">sunny-chance</a>&nbsp;
          链接：<a href="http://sunny-chance.javaeye.com/blog/174810" style="color:red;">http://sunny-chance.javaeye.com/blog/174810</a>&nbsp;
          发表时间: 2008年03月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://union.pconline.com.cn" target="_blank">活动</a>规则很简单：前1000位成功注册并审核通过的网络联盟会员，帐户中将自动赠送20元的现金。<br /><br />这回我要实现的功能是：<br /><ul><li>将每天审核通过的会员的信息自动同步到活动管理后台数据库</li><li>自动给每天审核通过的会员的账户增加20元，直至会员数为1000为止</li><li>成功调整费用后，自动发送《注册送20元现金》确认邮件给会员</li><li>后台提供查看已同步的注册会员信息、查看现金发送的情况以及邮件发送的情况等</li></ul>具体实现细节如下：<br />1，请求getAffiliate.jsp接口，接收每天审核通过的会员信息（返回的是html文本）<br /><pre name="code" class="html">&lt;script>	
	document.write('ID：101，姓名：aaaa1，E-mail：aaaa1@gmail.com&lt;br>');	
	document.write('ID：102，姓名：bbbb2，E-mail：bbbb2@hotmail.com&lt;br>');	
	document.write('ID：103，姓名：cccc3，E-mail：cccc3@163.com&lt;br>');
&lt;/script></pre>2，(利用正则表达式)解析html文本，抽取出会员的信息（ID、姓名、E-mail）<br /><pre name="code" class="java">		Pattern pattern = Pattern
				.compile("write\\('ID：(.*?)，姓名：(.*?)，E-mail：(.*?)&lt;br>");
		Matcher match = pattern.matcher(str);
		while (match.find()) {// 循环解析所有会员信息（每行）
			String id = match.group(1);// ID
			String name = match.group(2);// 姓名
			String email = match.group(3);// E-mail
			…………
		}</pre>3，将解析后的会员数据按字段保存到活动管理后台数据库<br />4，通知adjustPayment.jsp接口调整费用，将现金加入（前1000位）会员账户<br /><pre name="code" class="html">网站主ID  ：&lt;input type="text" name="affiliateId" value="">&lt;br>
调整类型ID：&lt;input type="text" name="adjustType" value="10">&lt;br>
调整数额  ：&lt;input type="text" name="adjustAmount" value="20">&lt;br>
调整说明  ：&lt;input type="text" name="adjustDesc" value="注册就送20元活动">&lt;br>
调整日期  ：&lt;input type="text" name="adjustDate" value="">&lt;br>
调整操作人：&lt;input type="text" name="createBy" value="system">&lt;br></pre>5，成功调整费用后，自动发送《注册送20元现金》确认邮件给会员<br /><br />以上几个功能都无须人工参与，于是我定义了两个定时任务（同步数据和发邮件）让其自动执行。后来康哥说应用上传后，会自动同步到6台服务器上，然后各自运行，要求避免因各服务器时间不一致而重复执行定时任务。因为数据库是单点的，于是我加入了一个表标识任务的执行情况，每次任务执行前都通过访问标识而判断执行或忽略。<br />-----------------------------------------------------------------<br />这个应用最主要是用到访问远程URL的方法，实现如下：<br /><pre name="code" class="java">	public static String sendPost(String url) {
		String result = "";
		HttpURLConnection httpConn = null;
		try {
			URL httpurl = new URL(url);
			httpConn = (HttpURLConnection) httpurl.openConnection();
			httpConn.setDoOutput(true);// 允许输出流,默认是false
			httpConn.setUseCaches(false);
			httpConn.setRequestMethod("POST");// 设置 URL 请求的方法
			int responseCode = httpConn.getResponseCode();
			if (responseCode == 200) {
				BufferedReader in = new BufferedReader(new InputStreamReader(
						httpConn.getInputStream()));
				String line;
				while ((line = in.readLine()) != null) {
					result += line;
				}
				in.close();
			}
		} catch (Exception e) {
			System.out.println("没有结果！" + e);
		} finally {
			if (httpConn != null)
				httpConn.disconnect();
		}
		return result;
	}</pre>
          <br/>
          <span style="color:red;">
            <a href="http://sunny-chance.javaeye.com/blog/174810#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 22 Mar 2008 14:27:39 +0800</pubDate>
        <link>http://sunny-chance.javaeye.com/blog/174810</link>
        <guid>http://sunny-chance.javaeye.com/blog/174810</guid>
      </item>
      <item>
        <title>08北京车展参展美女投票-auto080228</title>
        <author>sunny-chance</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunny-chance.javaeye.com">sunny-chance</a>&nbsp;
          链接：<a href="http://sunny-chance.javaeye.com/blog/173691" style="color:red;">http://sunny-chance.javaeye.com/blog/173691</a>&nbsp;
          发表时间: 2008年03月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          “<a href="http://play3.pcauto.com.cn/auto080228" target="_blank">08北京车展参展美女投票活动</a>”是我进入太平洋后的第一个project，代号为auto080228 <br />投票规则描述如下： <br />1.每个IP每天最多可以投出10票 <br />2.每个IP每天可以对同一个参展美女投多次票 <br />3.每个IP连续对同一个参展美女投票时，投票的时间间隔不得少于10秒 <br />其中，参展美女图片（分大图和小图两种格式）由编辑从后台上传，并设置与之相关的论坛地址 <br /><br />接到任务后，我迫不及待的把表设计出来了：Beauty(beauty_id,name,pic_url_big,pic_url_small,bbs_url,vote_count)，其中vote_count即标识参展美女所得票数 <br />后来team leader康哥指出这种设计不合理，“试考虑一下，用户每投一次票，vote_count就要加1，就要更新一次数据库！如果采用(JDO)缓存的话，由于数据更新了，缓存就会清除；每次读取数据的时候都要重新加载，缓存实际上不起作用了。” <br /><br />针对上面的问题，我乖乖的把Beauty拆分成了两个表 <br />Beauty(beauty_id,name,pic_url_big,pic_url_small,bbs_url,vote_counter_id)---更新少 <br />VoteCounter(vote_counter_id,vote_count) ---用户每投一票更新一次<br />Beauty表与VoteCounter表是一一对应的关系，在增加投票次数的时候只要更新VoteCounter表即可，不会影响到Beauty表，Beauty的缓存也就不会清除了 。<br /><br />但回过头来，问题依旧存在，就是写数据库的次数并没有降下来，每投一次票都要更新一次数据库。于是，我采用了缓存投票次数的方法，也就是等到一定的次数（如5次）才更新一次数据库，实现如下：<br /><pre name="code" class="java">
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.jdo.JDOHelper;

public class VoteCounter extends Sys.DataObject {
	private int cnt;// 票数

	private static final Map CNT_BUFFER = Collections
			.synchronizedMap(new LinkedHashMap(16, 0.75f, false));// 缓存票数

	public int getCnt() {
		return cnt + getBufferedCount();
	}

	public void setCnt(int cnt) {
		this.cnt = cnt;
	}

	/** 获取缓存中的票数 */
	public int getBufferedCount() {
		Object id = JDOHelper.getObjectId(this);
		Integer count = (Integer) CNT_BUFFER.get(id);
		return count != null ? count.intValue() : 0;
	}

	/** 缓存票值,每bufferSize票写一次数据库 */
	public int inc(int bufferSize) {
		int n = 1;// 点击1次加1票
		Object id = JDOHelper.getObjectId(this);

		int bufferedCount = getBufferedCount();
		bufferedCount += n;

		if (bufferedCount >= bufferSize) {
			Object tx = Sys.requireTx();
			cnt += bufferedCount;
			Sys.commit(tx);
			CNT_BUFFER.remove(id);
			return cnt;
		} else {
			CNT_BUFFER.put(id, new Integer(bufferedCount));
			return getCnt();
		}
	}

	/** 保存缓存票值计时任务 */
	static class SaveData extends java.util.TimerTask {
		public void run() {
			Env.log.debug("Running VoteCounter timer task.");
			if (!CNT_BUFFER.isEmpty()) {
				Object tx = Sys.requireTx();
				VoteCounter cnt = null;
				for (Iterator it = CNT_BUFFER.entrySet().iterator(); it
						.hasNext();) {
					Map.Entry me = (Map.Entry) it.next();
					cnt = (VoteCounter) Sys.pm().getObjectById(me.getKey(),
							true);
					cnt.setCnt(cnt.getCnt());
				}
				Sys.commit(tx);
				CNT_BUFFER.clear();
			}
		}
	}
}</pre> <br />这样一来，极大的缓解了数据库的压力。但缺点就是容易丢失投票次数，也会占用一些内存。<br />为了避免一些冷门的投票长时间占用缓存，后来我也加上了定时器，每隔一段时间把缓存的数据写入数据库...
          <br/>
          <span style="color:red;">
            <a href="http://sunny-chance.javaeye.com/blog/173691#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 19 Mar 2008 11:53:39 +0800</pubDate>
        <link>http://sunny-chance.javaeye.com/blog/173691</link>
        <guid>http://sunny-chance.javaeye.com/blog/173691</guid>
      </item>
      <item>
        <title>papa mama(文字版)</title>
        <author>sunny-chance</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunny-chance.javaeye.com">sunny-chance</a>&nbsp;
          链接：<a href="http://sunny-chance.javaeye.com/blog/172203" style="color:red;">http://sunny-chance.javaeye.com/blog/172203</a>&nbsp;
          发表时间: 2008年03月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          极其平凡却又深厚的感情，留在他们和我的心里，陪伴我们走过一生 <br /><br />当你还很小的时候 他们花了很多很多时间<br />教你 用勺子 用筷子 吃东西... <br />教你 穿衣服 绑鞋带 系扣子 <br />教你 洗脸 教你 梳头发 <br />教你 擦鼻T 擦屁股 <br />教你 做人 的道理 <br /><br />你是否还记得 经常逼问他们 你是从哪里来的？ <br />你是否还记得 你们练习了很久才学会的 第一首儿歌？ <br /><br />所以...<br /><br />当他们 有天变老时 <br />当他们 开始忘记 系扣子 绑鞋带 <br />当他们 开始在吃饭时 弄脏 衣服 <br />请不要怪罪他们 <br /><br />当他们 哆哆嗦嗦重复 一些老掉牙的故事 <br />当他们 想不起来 或 接不上话时 <br />当他们 梳头时 手开始 不停的颤抖 <br />请不要催促他们 <br /><br />因为你在慢慢长大，而他们却在慢慢变老<br />只要你在他们眼前的时候 他们的心就会很温暖 <br /><br />如果有一天 <br />当他们 站也站不稳 走也走不动 的时候 <br />请你 紧紧握住 他们 的手 <br />陪他们慢慢地走 <br />就像... <br />就像当年他们牵着你一样...
          <br/>
          <span style="color:red;">
            <a href="http://sunny-chance.javaeye.com/blog/172203#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 15 Mar 2008 17:48:32 +0800</pubDate>
        <link>http://sunny-chance.javaeye.com/blog/172203</link>
        <guid>http://sunny-chance.javaeye.com/blog/172203</guid>
      </item>
      <item>
        <title>papa mama(图)</title>
        <author>sunny-chance</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunny-chance.javaeye.com">sunny-chance</a>&nbsp;
          链接：<a href="http://sunny-chance.javaeye.com/blog/172195" style="color:red;">http://sunny-chance.javaeye.com/blog/172195</a>&nbsp;
          发表时间: 2008年03月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <img src="../../upload/picture/pic/9418/f9bef972-00c2-3566-adb1-3ed2a76d22eb.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9428/8a6a02ed-4817-3512-ab71-776829984446.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9426/bd53eede-406c-3369-a3fc-3e9375635c76.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9424/e7dd99cb-57c6-37b6-a90b-cad560db0a99.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9422/c2b1ea4f-04f8-3a93-bafe-87c1a13ad540.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9420/9f3a6b59-099f-3fbb-b80d-9709ad7b1656.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9438/c7f97bd0-0328-3373-84f7-bcbfb2ec3a23.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9436/03ffe479-4550-3619-a505-f7750ec45e62.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9434/05d93afe-1bf1-31c9-9784-f0cb76bc63e0.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9432/660e7cc2-20aa-30e0-b5f0-a6ced1e3ab09.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9430/caf046ad-2c48-3567-8fdd-1011f5f193eb.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9448/43604a19-a4bf-3947-a7cd-ae395bc8c9e9.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9446/b54b03d4-2c56-3e3c-8459-77c461fffa07.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9444/3c718c39-3503-3c1a-9fcf-a2d71d55f1c1.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9442/0fde892e-e03e-3b5c-9589-78bb1e86953f.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9440/c3cfc923-8c5f-3806-90f1-51dc92e25285.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9458/5549bc2b-98bb-311c-8740-733343c5cf13.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9456/adf9fb97-7c47-3a3a-965a-2925a1e77551.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9454/173d3b6b-cfb7-35e7-8ab9-df0e38dc9898.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9452/fbcb3fa1-06bb-3794-a542-ed2abd47faf2.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9450/2c9f8b94-ca22-3c47-b915-ca26508022cd.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9466/b75559d3-6a73-3798-a9df-d35908e377e8.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9464/e6a20394-48e0-3a67-bf6d-c0b0a0c2bc22.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9462/54c97172-5a24-3875-9f68-d0fc45270cab.jpg" border="0" alt="" width="608" height="458" /><br /><img src="../../upload/picture/pic/9460/8c40882b-9411-3405-966f-c3d2e3a578d5.jpg" border="0" alt="" width="608" height="458" />
          <br/>
          <span style="color:red;">
            <a href="http://sunny-chance.javaeye.com/blog/172195#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 15 Mar 2008 17:28:38 +0800</pubDate>
        <link>http://sunny-chance.javaeye.com/blog/172195</link>
        <guid>http://sunny-chance.javaeye.com/blog/172195</guid>
      </item>
      <item>
        <title>上班了</title>
        <author>sunny-chance</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunny-chance.javaeye.com">sunny-chance</a>&nbsp;
          链接：<a href="http://sunny-chance.javaeye.com/blog/170068" style="color:red;">http://sunny-chance.javaeye.com/blog/170068</a>&nbsp;
          发表时间: 2008年03月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          不知不觉自己已成为上班一族三星期了，每天8点起床->洗脸->吃早餐->赶地铁->8:5X打卡...<br />似乎大家都挺乐意分享自己的应聘历程，今天也该轮到我了吧：<br /><ul><li>12.11-品高软件开发有限公司</li><li>12.12-广东瑞图万方科技有限公司</li><li>12.20-友邦资讯科技（广州）有限公司</li><li>12.27-广州北大明天资源科技发展有限公司</li><li>1.3-广州网易互动娱乐有限公司</li><li>1.7-中国农业银行（中山）</li><li>1.8-广东易达建信科技有限公司</li><li>1.17-太平洋互联网信息服务有限公司</li></ul><strong>品高软件开发有限公司</strong><br />品高坐落于国家软件产业基地，这公司给人的第一感觉很好，员工的态度很友善，办公室的设计很舒服、空气很清新。当时是上午做题，下午面试（评题）。我还清楚的记得那时的题目，因为好些人都应聘过问过我要题。题目有部分是英语的，但都很基础，自问，也就是数据库做差了，但我却被当场bs掉了。说什么这次本是招非应届生的，没发现你是应届的把你叫过来了；就把这次当成是一次练习的机会也好啊；刚刚从象牙塔出来发现学校跟公司有很大区别吧...说了一大堆，说直接点嘛，我公司不要你，希望下次有机会再合作。Is it hart to say?我最讨厌推搪的话了!后来发现，我们学院还真没有一个同学合符他的心意...再后来，听说有几个同学锲而不舍，投了两次简历，考了两次同一份题，结果收到offer了，真TM的“牛B”!<br /><br /><strong>广东瑞图万方科技有限公司</strong><br />瑞图万方就在学校附近的华工科技园里。那天，懵懂无知的我随着电梯到了6楼，却发现那只有一间办公室和隔壁的一间会议室，前台极其隐蔽的隐藏在办公室一角，顿时让我产生了厌恶的情绪。后来在前台领了一份题，发现100%的题目都摘自网上的100题，用了不到1小时的时间把答案默写了一遍。接着一个行为猥琐的面试官跟我大谈特谈MVC，最后还称赞我基础扎实。走出门口后我也再没有接他的电话了...<br /><br /><strong>友邦资讯科技（广州）有限公司</strong><br />友邦那次纯粹是跟着同学去罢笔的，由于把英语搁置了好长一段时间，作文没写几句，于是乎，就这样没了...<br /><br /><strong>广州北大明天资源科技发展有限公司</strong><br />北大明天的题量可是非常人能应付得了，整整做了我三个小时。题目是什么大概都忘记了，只记得交卷的时候还有几题摸不着边际，脑子晃悠悠的，于是决定走路回家。我边走边想，里面的人应该很厉害吧，里面的人应该很能挨吧...里面的人应该很变态吧？然而，我只能确定最后一个问题的答案。<br /><br /><strong>广州网易互动娱乐有限公司</strong><br />网易那次听说是补招，至于是哪个职位我也说不清楚。对比8号的大型招聘，感觉那次的流程简单了许多，但我还是栽在逻辑题上了。题目是大家所熟悉的用一笔画4根直线，把3*3的九个点连接起来。因为太熟悉，所以一直没去想没去找答案，而且思维也不开阔，不会...后来在牛人阿清的指点下恍然大悟。再后来，听说她收到offer了，干拜下风啊...<br /><br /><strong>中国农业银行（中山）</strong><br />农行是老爸给我投的简历，自然是亲戚关照的。跟总行行长面试通过，打字速度测试通过，800字的作文也写了，听说最后一关是支行派遣然后跟支行的行长面试。但这也拖我太长时间了，等了三个多星期结果还没出来。虽然我已早早的决定不去农行了，因为那招的是柜台，不是我所向往的，但我也想知道凭借自己的能力能否通关。我等不来了，只好老老实实的给亲戚说明了情况...<br /><br /><strong>广东易达建信科技有限公司</strong><br />易达建信给我的记忆很模糊，只记得那天一早从中山赶回来，中午面试前心情也不好，面试官说的话也很难听，似乎把自己的员工描述得跟神一般，我也没反驳多少...<br /><br /><strong>太平洋互联网信息服务有限公司</strong><br />在易达建信后，我再也没有投简历，手机也放在一边了。然而我发现，太平洋是最持之以恒的，每天都连续响两三回电话，于是我在15号那天接了电话，通知我17号去面试。那天面试前心情也不好，随着电梯来到11楼前台，说了来由，等了一会，然后张小姐把我带到10楼，用白话跟叶总监谈了不到1小时。看他一直笑容满面的，心情也好了起来。然后又回到前台等了一会，张小姐又把我带到丛董那，气氛较严肃的谈了10多分钟，也就这样结束了。后来刚上地铁，电话就来了，待我回到宿舍才知道。后来回了电话，通知我2月18上班，也就答应了。
          <br/>
          <span style="color:red;">
            <a href="http://sunny-chance.javaeye.com/blog/170068#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 11 Mar 2008 10:42:19 +0800</pubDate>
        <link>http://sunny-chance.javaeye.com/blog/170068</link>
        <guid>http://sunny-chance.javaeye.com/blog/170068</guid>
      </item>
  </channel>
</rss>