<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>JavaEye博客</title>
    <description>Java博客,Ruby on Rails博客,AJAX博客,Agile博客 -- JavaEye做最棒的软件开发交流社区</description>
    <link>http://www.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>whaosoft</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://whaosoft.javaeye.com">whaosoft</a>&nbsp;
          链接：<a href="http://whaosoft.javaeye.com/blog/231381" style="color:red;">http://whaosoft.javaeye.com/blog/231381</a>&nbsp;
          发表时间: 2008年08月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          C2C电子商务模式分析<br />一、             电子商务背景介绍  <br /><br />电子商务（Electronic Commerce 、Electronic Business)是指通过计算机在网络上进行业务通信和交易处理等商务活动。其主要功能包括网上的广告、订货、付款、客户服务和货物递交等销售、售前和售后服务，以及市场调查分析、财务核计及生产安排等多项利用Internet开发的商业活动。  <br /><br />严格的定义是：电子商务是指对整个贸易活动实现电子化。（1997年11月世界电子商务会议）  <br /><br />电子商务有广义和狭义之分。狭义的电子商务也称作电子交易(e-commerce)，主要是指利用Web提供的通信手段在网上进行的交易。而广义的电子商务包括电子交易在内的利用Web进行的全部商业活动，如市场分析、客户联系、物资调配等等，亦称作电子商业(e-business)。这些商务活动可以发生于公司内部、公司之间及公司与客户之间。  <br /><br />电子商务的优点包括：   <br /><br />  1.大大提高了通信速度，尤其是国际范围内的通信速度。   <br /><br />  2.节省了潜在开支，如电子邮件节省了通信邮费，而电子数据交换则大大节省了管理和人员环节的开销。   <br /><br />3.增加了客户和供货方的联系。如电子商务系统网络站点使得客户和供货方均能了解对方的最新数据，而电子数据交换(EDI)则意味着企业间的合作得到了加强。   <br /><br />  4.提高了服务质量，能以一种快捷方便的方式提供企业及其产品的信息及客户所需的服务。   <br /><br />  5.提供了交互式的销售渠道。使商家能及时得到市场反馈，改进本身的工作。   <br /><br />  6.提供全天候的服务，即365天，每天24小时的服务。   <br /><br />  7.最重要的一点是，电子商务增强了企业的竞争力。  <br /><br />   <br /><br />二、             电子商务的主要模式  <br /><br />l         企业对企业的电子商务（BtoB或B2B，Business to Business E-commerce）  <br /><br />提供商务信息平台，供买卖双方的企业在平台上发布供求信息、寻找合作伙伴、在线交易、跟踪服务等。  <br /><br />可以在企业内部（内部结算平台），也可以是企业之间进行。  <br /><br />国内代表：  <br /><br />阿里巴巴，比较纯的B2B商务模式；  <br /><br />8848，目前在推中小企业电子商务方向，为中小企业提供网上商务支持。  <br /><br />其特点类似于现实商务世界中的批发。  <br /><br />   <br /><br />l         企业对顾客的电子商务（BtoC或B2C）主要是企业开设产品专卖电子商店，在互联网上向顾客出售企业产品，提高物流速度，节约无力商店的成本、管理、人员等费用。  <br /><br />例如：  <br /><br />HP网上专卖店；  <br /><br />亚马逊  <br /><br />卓越、当当等购书网站。  <br /><br />其特点类似于现实商务世界中的零售。  <br /><br />   <br /><br />l         顾客对顾客的电子商务（CtoC或C2C）  <br /><br />它是消费者对消费者的交易模式，CtoC电子商务平台就是通过为买卖双方提供一个在线交易平台，使卖方可以主动提供商品上网拍卖，而买方可以自行选择商品进行竞价。  <br /><br />代表：EBay  <br /><br />国内代表：易趣、淘宝  <br /><br />其特点类似于现实商务世界中的跳蚤市场。  <br /><br />   <br /><br />在目前，B2B及B2C模式的电子商务已经实现盈利，全球最大的C2C电子商务供应商EBay也已经实现盈利，并且拥有越来越大的影响力。而在国内，C2C的电子商务模式虽然非常的热，受到大众的追捧，但是其代表如易趣、淘宝等还在为盈利苦苦挣扎。  <br /><br />   <br /><br />本文着重讨论国内C2C电子商务模式的发展、存在的问题以及未来的发展方向。  <br /><br />   <br /><br />三、             C2C模式分析  <br /><br />C2C是消费者对消费者的交易模式，其特点类似于现实商务世界中的跳蚤市场。其构成要素，除了包括买卖双方外，还包括电子交易平台供应商，也即类似于现实中的跳蚤市场场地提供者和管理员。  <br /><br /><br /><br /><br /><br />在C2C模式中，电子交易平台供应商扮演着举足轻重的作用。  <br /><br />首先，网络的范围如此广阔，如果没有一个知名的、受买卖双方信任的供应商提供平台，将买卖双方聚集在一起，那么双方单靠在网络上漫无目的的搜索是很难发现彼此的，并且也会失去很多的机会。  <br /><br />其次，电子交易平台提供商往往还扮演监督和管理的职责，负责对买卖双方的诚信进行监督和管理，负责对交易行为进行监控，最大限度地避免欺诈等行为的发生，保障买卖双方的权益。  <br /><br />再次，电子交易平台提供商还能够为买卖双方提供技术支持服务。包括帮助卖方建立个人店铺，发布产品信息，制定定价策略等；帮助买方比较和选择产品以及电子支付等。正是由于有了这样的技术支持，C2C的模式才能够短时间内迅速为广大普通用户所接受。  <br /><br />最后，随着C2C模式的不断成熟发展，电子交易平台供应商还能够为买卖双方提供保险、借贷等金融类服务，更好地为买卖双方服务。  <br /><br />因此，可以说，在C2C模式中，电子交易平台提供商是至关重要的一个角色，它直接影响这个商务模式存在的前提和基础。  <br /><br />   <br /><br />人们在讨论C2C电子商务模式的时候，总会从商品拍卖的角度分析该模式存在的合理性和发展潜力，但是往往忽略了电子交易平台供应商的地位和作用。  <br /><br />可以说，单纯从C2C模式本身来说，买卖双方只要能够进行交易，就有盈利的可能，该模式也就能够继续存在和发展；但是，这个前提是必须保证电子交易平台供应商实现盈利，否则这个模式就会失去存在发展的基础。  <br /><br />因此，我们分析C2C模式，应当更加关注电子交易平台供应商的盈利模式和能力，这才是C2C模式的重点，也是C2C模式区别于其他模式的重要特点。  <br /><br />eBay、易趣、淘宝网等都是这样的电子交易平台供应商。  <br /><br />   <br /><br />而反过来说，电子交易平台提供商同样要依存于C2C的买卖双方。平台提供商的利润来源，无非是广告、佣金、会员费、服务费以及金融服务的利润等。这其中，主要的利润均来自于买家和卖家，也即是购买平台提供商服务的消费者。以eBay为例，它的广告收入只占总收入的5%，其余的利润，大都产生在商品交易的过程中。因此，平台提供商要想生存和发展，必须为其会员提供更加完善和个性化的服务，最大限度地提高会员的忠诚度，并不断开发新的会员。  <br /><br />eBay目前有5800万的用户，而且每月还以300万人次的数目在增长。公司业务已经扩展到欧洲、南美、亚洲、大洋洲等地。这些，是eBay不断发展壮大的基础。  <br /><br />   <br /><br />买家、卖家、电子交易平台提供商，三者相互依存，密不可分，共同构成了C2C电子商务模式的基本要素。  <br /><br />   <br /><br />四、             C2C模式的发展潜力  <br /><br />从理论上来说，Ｃ２Ｃ模式是最能够体现互联网的精神和优势的，数量巨大、地域不同、时间不一的买方和同样规模的卖方通过一个平台找到合适的对家进行交易，在传统领域要实现这样大工程几乎是不可想像。同传统的二手市场相比，它不再受到时间和空间限制，节约了大量的市场沟通成本，其价值是显而易见的。  <br /><br />从实际操作来说，Ｃ２Ｃ具有两方面可操作性。  <br /><br />首先，Ｃ２Ｃ能够为用户带来真正的实惠。  <br /><br />Ｃ２Ｃ电子商务不同于传统的消费交易方式。过去，卖方往往具有决定商品价格的绝对权力，而消费者的议价空间非常有限；拍卖网站的出现，则使得消费者也有决定产品价格的权力，并且可以通过消费者相互之间的竞价结果，让价格更有弹性。因此，通过这种网上竞拍，消费者在掌握了议价的主动权后，其获得的实惠自然不用说。  <br /><br />其次，Ｃ２Ｃ能够吸引用户。  <br /><br />打折永远是吸引消费者的制胜良方。由于拍卖网站上经常有商品打折，对于注重实惠的中国消费者来说，这种网站无疑能引起消费者的关注。对于有明确目标的消费者（用户），他们会受利益的驱动而频繁光顾Ｃ２Ｃ；而那些没有明确目标的消费者（用户），他们会为了享受购物过程中的乐趣而流连于Ｃ２Ｃ。如今Ｃ２Ｃ网站上已经存在不少这样的用户。他们并没有什么明确的消费目标，他们花大量时间在Ｃ２Ｃ网站上游荡只是为了看看有什么新奇的商品，有什么商品特别便宜，对于他们而言，这是一种很特别的休闲方式。因此，从吸引“注意力”的能力来说，Ｃ２Ｃ的确是一种能吸引“眼球”的商务模式。  <br /><br />   <br /><br />然而，我们要判断一个商业模式是否可行，是否具有发展潜力，理论证明固然重要，更重要的一点，是要看这样的模式能否为参与者带来实实在在的盈利或者盈利期望。  <br /><br />那么C2C模式实际操作结果与发展潜力如何呢？  <br /><br />   <br /><br />说到C2C的电子商务模式，就不能不谈到eBay。  <br /><br />1995秋天，位于硅谷中心的圣何西冒出了一家名不见经传的小公司。公司的开始只是一个黑白页面的网站，上下员工总共19人，外加一个当时看起来还不错的商业点子——网上拍卖。如今8年过去了，硅谷的商业网站多数已经消亡，而eBay不仅活得有声有色，而且创下了世界电子商务的奇迹：每年商业利润都在稳健增长。  <br /><br />eBay开业一年实现盈利，1998年它的净利润已经达到240万美元，同年9月eBay就在纳斯达克上市（当时股价为18美元），股价曾一度攀升至200美元以上。  <br /><br />   <br /><br />目前，易趣已经成为国内C2C个人交易平台的旗帜和老大，而阿里巴巴出资1亿元搭建的淘宝网也显示了强劲的上升势头。C2C模式，在国内正成为新的市场热点。  <br /><br />让我们首先来看看发生在我们身边的例子。  <br /><br />实例一。笔者的一个朋友在外贸公司工作，有机会买到出口到日本的各式毛衣。这些毛衣质量不错，款式在国内很少见。于是她在易趣上开了一个专卖店，专门出售这些毛衣。经过一段时间的运作，由于产品质量和款式很好，价格合理，她的毛衣生意做得很好，甚至有了一批固定的客户，个人获得了较为可观的利润。  <br /><br />实例二。笔者的一个同学是变形金刚迷。最早，他一直在eBay上为自己购买最新的变形金刚模型。后来，他发现国内像他这样爱好的人很多。于是，他在易趣上开了变形金刚的专卖店，出售他在eBay上拍得的变形金刚模型。在支付方面，他利用招商银行的信用卡进行；在运货方面，他首先是委托在美国的朋友帮助他收货，然后再邮寄回国，控制了成本。目前，也实现了不少的利润。  <br /><br />实例三。这是笔者亲身经历的。笔者有一个用了近一年的IBM t20笔记本电脑。由于想换新的，笔者决定把这个笔记本卖掉。于是，笔者在易趣上刊登了出售信息。很快就有人参与竞价，最后，以笔者很满意的价格卖出了该商品。  <br /><br />通过以上的例子，我们不难看出，从消费者的角度，对于买家来说，能够从C2C这种商务模式中获得实惠；而对卖家来说，这样的模式也是一种很好的获利方式；而eBay的成功，本身就说明C2C模式同样对平台供应商有利。 这样的模式，无可置疑具有很大的发展潜力。  <br /><br />   <br /><br />五、             C2C模式发展存在的问题  <br /><br />eBay的成功使CtoC红极一时，雅虎、亚马逊等门户网站和电子商务网站纷纷在自己的网站上做起了CtoC业务，尽管不能与eBay一较短长，但是无一例外的都非常成功，发展迅速。而就在阿里巴巴巨资推出淘宝网前一个月，eBay宣布对中国的易趣网追加投资，支付1.5亿美元现金购买易趣美国公司的剩余股份，实现对易趣的完全控制，而易趣网仅仅用了60万美元启动，目前是中国最大的CtoC公司。  <br /><br />易趣的成功让阿里巴巴看到了中国CtoC市场也是一个大金矿。目前易趣每月交易量在6千万左右，并且每月以20%的速度增长。尽管易趣从中收取的手续费不到1/10之一，目前易趣也没有获得赢利，但易趣模式已经证明，CtoC模式在中国商业上是可行的。这也是全球最大的CtoC网站eBay花大价钱收购易趣原因所在，中国电子商务市场将越来越大，CtoC交易额也会滚雪球式地增多，易趣的赢利只是一个时间问题了。  <br /><br />   <br /><br />C2C模式虽然具有很大的发展潜力，但是在它仍然面临许多问题，并且，这些问题如果不能得到妥善的解决，将可能影响和制约C2C电子商务的发展。  <br /><br />特别是国内电子商务处在起步阶段，无论从制度、技术、信用体系等方面都存在很多不完善的地方，我们必须更加重视积极解决这些问题。  <br /><br />1、  法律制度完善  <br /><br />网上交易、电子商务都是近几年才出现的新鲜事物，各国都在积极探讨制定合适的法律来规范电子商务的行为。  <br /><br />而目前，由于法律的不完善，不仅使参与网上交易的个人、企业的权益得不到保障，更会使网上拍卖成为一种新的销赃手段。  <br /><br />   <br /><br />2、  交易信用与风险控制  <br /><br />互联网跨越了地域的局限，把全球变成一个巨大的“地摊”，而互联网的虚拟性决定了C2C的交易风险更加难以控制。同样以eBay为例，根据统计，在其每二万五千件交易中就会发生一起诈骗案件。网络诈骗在Ｃ２Ｃ方面已经到了比较严重的地步。  <br /><br />这时，电子交易平台提供商必须扮演主导地位，必须建立起一套合理的交易机制，一套有利于交易在线达成的机制。  <br /><br />   <br /><br />3、  在线支付方式  <br /><br />目前，从网站上的交易来看，BtoC只有不到20%是通过网上支付实现的，货到付款几乎占据80%以上。而CtoC的网上支付比例就更低了，目前而言买卖双方通过网下直接面对面交易是主流，电子交易平台供应商根本无法对交易进行控制。如果说通过网上支付进行交易，网站收取交易佣金不存在太多障碍的话，从网下交易中收取佣金的可能性就不大了。这主要是因为目前国内信用卡用户规模还不大，而且国内的金融结算体系还不能完全适应电子商务的要求，其安全性不够，没有完备的认证体系，无法消除用户对交易安全性的顾虑。  <br /><br />为了解决这个问题，eBay收购了PayPal公司，利用其完全基于互联网的P2P支付模式，迅速得到互联网社群的认可，这种支付方式也正好适合在线竞价交易业务的需求。  <br /><br />而在国内，国人出于对风险的考虑，很少愿意同陌生人进行在线交易，大多宁可采用货到付款的方式，从而将交易的地点大多局限在同一个城市内，制约了C2C模式优势的发挥和推广。  <br /><br />   <br /><br />4、  技术实力有待提高  <br /><br />由于互联网的特点，基于互联网开展业务的公司必须具备很强的技术实力。对于C2C电子交易平台提供商来说，技术更是至关重要。只有拥有先进的技术，才能保证网络服务的不间断、保证用户资料的完整和准确，才能为用户提供更为安全和理想的交易环境。  <br /><br />在这方面，eBay拥有痛苦的经验。1999年夏天，eBay网站陷入了瘫痪，拍卖活动中断了22个小时。这次灾难给eBay留下了难以磨灭的痛苦回忆：交易费用损失了几百万美元，股票市值蒸发数十亿美元。随后，eBay公司制订了一项至关重要的原则：必须保证网站稳定安全运行，每天24小时，每周7天不间断。而国内的易趣，也正是由于自3月以来服务器频繁进行维护，导致用户无法登陆，使得外界对易趣的技术能力产生了怀疑，严重影响了用户对易趣的信任感和交易的安全感。  <br /><br />   <br /><br />5、  国人的消费习惯有待改变和培养  <br /><br />电子商务在中国出现毕竟只有短短数年时间，除了受过专业教育的白领、乐于尝试新鲜事物的年轻人，很少有人愿意接受在线购物的消费方式。并且，国人的计算机使用能力和水平也制约了C2C电子商务的发展。  <br /><br />这些，需要时间来对消费者进行培训，对市场进行培养。  <br /><br />   <br /><br />6、  国人的经济实力  <br /><br />不可否认，我国平均经济水平仍然不高，国人手中真正有较高的利用价值的二手商品并不多。纵观易趣网站，很大一部分是商家借这个平台在推销其产品，包括全新的、翻新的、水货甚至假货等等。而由于经济水平不高，即便是二手货物，在网上的报价依然很高，完全没有体现出二手物品的价格优势。不高的性价比，让很多人对二手货物失去兴趣。  <br /><br />这些，直接影响了国内C2C市场的进一步健康发展。  <br /><br />   <br /><br />六、             C2C发展前景分析  <br /><br />如前所述，C2C电子商务模式在中国有很大的发展空间，有中国庞大的用户群作基础，中国的C2C运营商一定能够有所作为。  <br /><br />1、  国内会产生数个规模相当、具备影响力、受消费者信赖的电子交易平台提供商；  <br /><br />通过残酷的竞争，实力不够、服务不完善、品牌建设不合理、技术能力低的提供商必然遭到淘汰。国内会产生数个规模相当、具备影响力、受消费者信赖的电子交易平台提供商。  <br /><br />   <br /><br />2、  多种支付手段将得到广泛的应用；  <br /><br />伴随信用卡使用的推广以及技术的提高，在线支付必将在C2C领域内得到广泛的应用。有了这样先进的支付方式，供应商能够更好地控制交易风险，评估用户信用程度，同时也能获得更多的盈利。  <br /><br />在企业电子商务领域，8848已经为登陆其平台的企业开通了电子支付接口，方便他们更好地开展业务。  <br /><br />   <br /><br />3、  电子交易平台提供商将在政策允许的框架内开展有针对性地金融服务业务。  <br /><br />信用风险问题如何解决？国人道德素质的提高、经济能力的提升固然是很重要的方面。换个角度考虑，平台供应商同样可以采用多种方式来帮助用户避免风险。如开展信用贷款、在线交易保险等金融服务类方式。相信随着电子商务的不断发展，会有更多的服务可以提供给用户。  <br /><br />   <br /><br />七、             总结  <br /><br />综上，本文从模式分析、发展潜力、存在问题、发展前景等方面，对国内C2C电子商务模式进行了分析。  <br /><br />总得来说，国内目前电子商务水平并不高，而且由于法律环境、经济实力、消费习惯等的影响，C2C电子商务模式的发展并非一帆风顺。但是，由于C2C电子商务模式具有足够的盈利潜力，能够为买卖双方和电子交易平台提供商带来实实在在的实惠和利润，必将得到越来越广的应用。  <br /><br />C2C电子商务模式在国内将有非常广阔的发展前景。 <br /><br />淘宝网的C2C商业盈利模式<br />互联网商业模型就本质来讲是一种“厚利多销”的思维，这同最初的进出口贸易类似，最初的进出商品涉及的是奢侈品，当然现在因为融入一个亚洲经济的问题，有很大的变化，C2C意味着卖家可以在一个更大的范围寻找买家，既然买家的价格敏感性比较弱，那么佣金就不是问题的关键。 <br /><br />       关键在于用户群，甚至于不是卖家的所谓独特的进货渠道，当网站汇聚了购买力较高的买家之后，勤奋的卖家自然会基于需求提供合适的商品和服务。进一步说，如果锁定了购买力较高的买家，那么另一处免费服务就不再重要了。 <br /><br />       但是淘宝并不基于那么一个商业模型，《淘宝网的商业模型》一文中指出，淘宝的目的在于提高卖家的销售效率，仍然是普通的商品，但是可能是更低廉的价格。对应网站将不介入到具体销售中，而是收取年费。 <br /><br />       但是这里存在一个问题，文中进一步指出：如果有10万家卖家每家支付1000元，网站获得的收入也不过只有一个亿。同时也不能够反映，具体卖家从交易中悬殊的获益差异。 <br /><br />       搜索似乎是一个解决之道，C2C网站可以长期免费，但是通过关键词竞价排序获得收入，所以不难理解，为什么2005年8月，阿里巴巴获得了雅虎中国。实际上，同购物相关的搜索在搜索目的中持续增长，目前大约为一半。 <br /><br />       不过，已经更名为中国雅虎的搜索份额一降再降，2007年第四季度已经不到10%，没有给马云实践这个跨平台战略的机会。他不做，李彦宏可正在积极谋求渗透入这一市场。 <br /><br />       相当多的人对淘宝B2C商城持有消极的看法，尤其是部分淘宝中小卖家，他们指出，实际上他们经营的业务毛利率很低，以至于根本无法承担付费，而且就商城招商细则看，涉及的费用还比较多。 <br /><br />       在《赢在中国》第一季的赛事中，马云在点评一位创业者的电子市场模型中指出：电子市场这一模型，投入很大，但是产出不一定很大，问题在于，你不是一开始就能对商业模型看得很透，需要在运作中漫漫理解，这个过程需要两三年，其中就蕴涵了风险。当然，它需要很大的规模才能获益。 <br /><br />       你如果正在处理大量的交易，很可能会发现，卖家对差异性服务的要求。一些较为大型的商家可能愿意付费以享受差异性的服务。 <br /><br />       其实有这方面需求的商家还是很多的，比如说经营泰国蛇药，这种需求是大量存在的，但也没有大到每一座城市都能设立一家专卖店的程度，网上销售是合适的，对应于毛利率，少量佣金也不是问题。 <br /><br />       淘宝有相对成熟的交易后台，有广泛使用的在线支付工具，有积极而且手段趋于成熟的宣传，并且淘宝已经形成了特定的规模，就淘宝自己提供的数据看，对应流量的大量潜在客户已经较为庞大，它自己形容，“也就是说淘宝网一天的人流量相当于近800个大卖场。”对部分商家而言是有一定吸引力的。这样，这一阶段，淘宝的商业模型类似于传统的购物中心，吸引足够的流量，然后以租赁店铺的形式，收取费用。 <br /><br />       有一种认识，就是以为虚拟商城的成本是很低廉的，至少远低于实体店铺，就实践来讲，似乎不是这样，服务器、带宽、后台系统的开发，大量的广告投放，以及为弥补同实体店铺差异所作的支出，根本来讲，它同样遵循规模成本原理，特定的规模有与之对应的回报。 <br /><br />       并且这种以商家专卖店为主体的模式不乏替代方式，网上有大量的提供在线店铺代码的服务商，如果商家自营，那么所有的顾客就都是自己的。<br /><br /><br /><br />B2B <br />是企业对企业进行网上交易 <br />B2B指的是Business to Business，即商家(泛指企业)对商家的电子商务 <br /><br />B2C <br />（Business To Customer）是电子商务按交易对象分类中的一种，即表示商业机构对消费者的电子商务。这种形式的电子商务一般以网络零售业为主，主要借助于Internet开展在线销售活动。 <br /><br />C2C <br />很多人不明白什么是c2c？c2c实际上是电子商务一个专业术语，c2c即c to c ，因为在英文中的2的发音同to，所以c to c简写为c2c。c指的是消费者，因为消费者的英文单词是consumer，所以简写为c。现在大家应该知道c2c的意思就是消费者（consumer）与消费者（consumer）之间的电子商务。打个比方，比如一个消费者的有一台旧电脑，通过网上拍卖，把它卖给另外一个消费者，这种交易类型就称为c2c电子商务。 <br />c2c电子商务主要是指网上拍卖。c2c模式的特点就是大众化交易，因为是个人与个人之间的交易嘛！ <br /><br />C2B <br />c2b是电子商务模式的一种，即消费者对企业（customer to business）。最先由美国流行起来的消费者对企业（C2B）模式也许是一个值得关注的尝试。C2B模式的核心，是通过聚合为数庞大的用户形成一个强大的采购集团，以此来改变B2C模式中用户一对一出价的弱势地位，使之享受到以大批发商的价格买单件商品的利益。目前国内很少厂家真正完全采用这种模式。<br /><br /><br /><br /><br />C2C中国发展现状 <br />[编辑本段]<br />在快速变化的互联网行业，一年的时间足以让沧海变成桑田。 <br />　　两年之前（06年），拍拍网的强势介入让C2C领域形成了四足鼎立之势，淘宝、易趣、拍拍、123拍、四家各有千秋，而又强弱分明。一年的风雨之后再回头来看，太多的事情让原有的格局已悄然改变，强弱之势的异位让C2C进入了更加扑朔迷离的后四国时代。 <br /><br />　　淘宝：在领先与压力之间 <br />　　毋庸置疑，淘宝在C2C领域的领先地位暂时还无人能够撼动。然而，淘宝却也不得不承受这份领先带来的沉甸甸的压力。在领先与压力之间，淘宝在奋力往前走。 <br />　　在中国C2C市场，淘宝的市场份额超过60%。如果是在传统行业，淘宝完全可以高枕无忧。然而在瞬息万变的互联网领域，这样的优势并不是什么不可逾越的屏障。早在2006年5月推出招财进宝受挫，马云便意识到这样的市场地位并不稳固，竞争对手完全可能爆发出惊人的能量，直接挑战淘宝的权威。 <br />　　就这样，领先本身就成为了一种压力。后有追兵，前路又是一片茫茫。没有人告诉你前面的路该如何去走，迈出的每一步都成为一次小心翼翼的尝试，可能踏出一片广阔天地，也可能会一无所获。在过去的一年（06年至07年）内，淘宝显示了其在创新上的勇气，收购口碑网推出分类信息，大力拓展品牌商城，将团购做成一个频道，将交易的视野扩向全球推出“全球购”频道……很难说这些尝试给淘宝带来的直接收益有多大，但是淘宝却因此明白了什么可以做、什么可以不做。依靠不断的尝试，淘宝在小小翼翼的维护着自己的领先地位。 <br />　　对于淘宝而言，领先还有一个代价，就是巨大的资金投入。不管马云夸口的20亿资金投入是否属实，一个无可辩驳的事实是淘宝面临的资金压力越来越明显的显示出来。在悄无声息之中，淘宝对于入住品牌/商城的用户开始收取服务费，而在政策和资源上对于该部分商户的倾斜，以及不自觉间对于小商户的忽视，使得免费的淘宝已经名存实亡。很显然，免费的淘宝已经不能承担巨大的资金压力之重。 <br />　　08年，淘宝还在前行，但是每一步都不会再像以前那样轻松和自如。 <br /><br />　　拍拍：商品超千万只是另一个起点 <br />　　近日，拍拍网对外宣布，其在线商品数突破1000万。商品数突破千万量级意味着，只要是正常的购买需求，用户都可以在拍拍网上得到满足。籍此，拍拍网也正式跻身千万商品俱乐部，目前，进入中国千万商品俱乐部的只有淘宝和拍拍两家。 <br />　　06年3月，拍拍网对外宣布正式运营。一年多的快速成长，让依托于腾讯的拍拍网已经成为中国C2C领域一匹潜力十足的黑马。06年5月，拍拍网发布的“蚂蚁搬家”让马云开始认真打量这个快速崛起的竞争对手。07年3月，拍拍网正式宣布其在线商品数突破千万，并且成为了最短时间内打破这一纪录的行业领先者，而这距其正式运营的时间不过一年，成长速度之快，令人乍舌。 <br />　　当然，拍拍网的快速发展让中国的C2C市场格局也在悄然发生着变化。在线商品数突破千万，让拍拍在不经意间又逼近了淘宝一步。在Alexa的世界网站排名上，拍拍网跃进国内C2C网站流量排名第二位的位置已经持续了很久。“对于购物网站来说，商品和人流量是两个关键指标。简而言之：当一个商场的商品非常丰富，而来商场的消费者又非常多的时候，商场成交额的提升将是一个必然。而在这两项指标上都跃居第二，这也意味着C2C的产业格局正在悄然改变，三足鼎立的传统格局很有可能会被淘宝、拍拍双峰对峙的局面所替代。”业内专家认为。 <br />　　尽管背后有着2.3亿庞大的活跃QQ用户群作为基础，然而，能够取得如此的成长速度仍属不易。业内资深人士认为，和腾讯其他业务的密切捆绑，使得拍拍拥有了很多其他购物平台所无法比拟的差异化优势，而这是拍拍网快速发展的另一个关键原因。以交易腾讯增值产品为主的QQ特区在拍拍中占据着重要的位置。在06年10月，拍拍和QQ空间共同推出的QCC商城就取得了很大的成功。据保守估计，QCC商城给拍拍带来的流量和交易量的提升都在20%以上。 <br />　　尽管有着业界最快的成长速度和强劲的发展势头，但是和淘宝相比，拍拍网在市场份额上的差距也并不是凭一日之功就能解决的。对此，拍拍网负责人湛炜标有着非常清醒的认识：“在线商品数突破千万，对于我们来说只是一个新的起点。接下来，我们会在商品搜索、购物流程、支付、物流等方面做持续改进，不断提升用户体验。比如说在最近推出的QQ新版本中，我们就融入了更多的拍拍元素，在进行对话时，可以清晰的显示卖家和商品信息，这样就有助于在沟通过程中快速达成交易。毕竟，用户的选择才是评判一个购物平台是否具有良好发展前景的最好标准。” <br />　　08年，在挑战的道路上，拍拍任重而道远。 <br /><br />　　易趣：转型的阵痛 <br />　　从本土企业到跨国企业，再从跨国企业到本土企业，转了一个圈，易趣又回来了。不同的是其名字由易趣改成了TOM易趣，老板也从邵亦波变成了王雷雷。 <br />　　在06年易趣和TOM合并的时候，王雷雷曾经豪言：“要在半年的时间内找到可行的盈利模式。”半年的时间还没到，豪言能否兑现尚未可知，但是可以看得到的是在TOM易趣身上明显的本土化气息。eBay易趣是不大注重社区的，如今的TOM易趣再次把社区当作重点抓了起来。过完年，易趣忙不迭的推出了年货交易专区，并大做宣传文章，而这在以前的eBay易趣则是不可想象的。 <br />　　深入了解中国网民的习惯，并做出与之相对应的调整，易趣正在向一个纯粹的本土企业接近，然而，无可回避的事实是，几经周折的易趣已经元气大伤。在王雷雷的手中，易趣究竟能恢复几成的王者之风，还需要我们拭目以待。 <br />易趣任何用户只要在易趣开店，无论是普通店铺、高级店铺还是超级店铺，都将终身免费。在此之前，易趣上每个超级店铺每月收取50元的月租费，高级店铺25元。而在06年8月30日tom收购易趣之前的旧平台则是超级店铺每月500元，高级店铺150元，一般店铺50元，同时在旧平台还有登录费和交易服务费等费用。易趣还承诺，今年1月到4月内曾购买易趣高级店铺或超级店铺的卖家，易趣将回馈7月底以前的分类推广资源；而对于购买了5月份高级店铺、超级店铺的卖家，易趣将在5月底之前全额退款。<br />对于易趣此次推出终身免费的原因，易趣网营运副总裁常琳称：“国内网上交易还处在初级阶段，但未来的发展空间和潜力巨大。我们还需要持续大力投入，培育用户的使用习惯并帮助形成良好的市场环境。”屠建路则承认，在用户并不是很稳固的情况下，坚持收费无疑是当年一项重大决策失误。之所以选在这个时候宣布免费，屠告诉记者，从竞争环境看，淘宝网逐渐转向收费的趋势让他们感到时机已经成熟。他称，淘宝在两年前就开始不断探索收费模式，而一旦淘宝收费，将使大批中小卖家陷入生存困境。易趣在这个时候提出免费，就是想达到抢夺用户的目的。而业内人士表示，这是易趣的一次绝地反击。<br /><br />123拍：08年正式上线<br />123拍是香港上市公司庄士集团旗下的网站，是国内领先的C2C（个人对个人）及B2C(商家对个人)的网络购物平台。任何人都可以来本公司网站发布商品或购买商品，商品来源丰富，买家面向全国，是一个无地域限制的大型购物平台。 <br />123拍位于珠三角腹地，坐落于广东东莞沙田镇，毗邻珠江入海口，背靠国际服装城、电子商业中心、制造工业基地及各种商品集散地，人口众多，资源丰富。 <br />123拍倡导诚信、高效、愉快的网络交易文化，并致力于为客户提供一个安全、完善、便捷、实惠的网络交易途径。<br />123拍的目标是 “ 为卖家、买家创造价值 ” ， 123拍真诚为每一位客户服务。 <br />安全 <br />数据安全：123拍所有网站数据的传输都经过完全加密传输，避免数据被非法盗取。 <br />交易安全：所有资金都先支付到123 拍的在银行的代存账户，只有买家确认收到货并确认完好满意后才付款给卖家。 <br />完善 <br />完善的功能：123拍提供即时交流、购买、付款、纠纷处理、评价、帮助、讨论等一系列服务功能。 <br />全面的内容：123拍不只是提供简单的商品交易信息，还提供大型市场专区、品牌专区，使客户在不出门的情况下也可走进自己喜欢的市场，同时还可团购、发布商品求购信息等。 <br />便捷<br />物流服务的不断发展，促进了商品运送速度，如果选择合适的物流公司，本地可以当天到货，远的也只需要2-4天时间。真正的快速方便。 <br />实惠<br />网上购物可以省去买家客户大量时间，同时网上商店也省去了卖家客户大量实体店铺的租金，人工费用，降低了成本，可以给买家客户带来真正的实惠。 <br />123拍有健全的管理制度，拥有数十位技术开发人员、专业的销售团队及完善体贴的售后服务系统。 <br />123拍的网络服务设备都存放在国家顶级机房，该机房拥有全国最大的国内、国际出口带宽及一流的保安、空调环境；123拍力争为客户提供高稳定性、高速、高安全性的交易途径。<br /><br />C2C和B2C <br />[编辑本段]<br />艾瑞市场咨询即将出版的《2007年中国网络购物报告》数据显示，俗称“网上开店”的C2C网络购物模式发展快于B2C，两者融合的趋势越来越明显，未来将共同形成最有竞争力的互联网商业模式。<br /><br />C2C交易额超过B2C <br />网络购物有两种模式：一种是B2C模式，即商品和信息从企业直接到消费者，另一种是C2C，即商品和信息从消费者直接到消费者，俗称“网上开店”。数据显示，截至2006年年底，网络购物总体交易额达到312亿元，B2C和C2C总体交易额分别为82亿元和230亿元，C2C市场规模同比增加85%，增长速度超过网络购物的整体增速。 <br />从购物内容看，B2C类购买商品种类以音像制品为主，其次是软件类商品；C2C购物网站销售的各类商品中，游戏点卡、数码产品和家居百货等产品都是买家在C2C类购物网站购买的重点。此外，随着买家购买经验的累积和商家对商品描述内容愈发详细和贴切，加上退换货制度的建立，服装鞋帽逐渐成为网络销售中的热门商品种类。 <br />艾瑞市场总监侯涛认为，在市场成长阶段初期，由于相对C2C，B2C交易避免了信用和支付安全等问题，更容易被用户接受，因此交易额在2003年和2004年都高于C2C。但随着第三方支付平台的出现和信用评价体系的建立，C2C更灵活和自由的购物模式也得到越来越多用户的认可。从2005年开始，C2C的交易额快速增长。 <br /><br />形成“内外”争霸格局 <br />艾瑞咨询提供的数据预计，2007年我国网络购物的市场规模将突破500亿元，达到510亿元，增长率则从2002年起点时期的196%下降到2006年60%左右，明年将略有提高，为63.5%。 <br />此外，网络购物注册人数在2006年达到4310万人，预计今年会保持25%以上的增长率，达到5500万人。另据中国互联网络信息中心(CNNIC)发布的第十八次“中国互联网络发展状况统计报告”，在12300万网民数十种网上行为中，通过网络进行购物的比例高达26%。按照这个比例计算，网络购物的直接顾客群将达到3200万人。 <br />然而，如此巨大的市场目前只有寥寥数家瓜分。尽管购物网站数目众多，但由于购物网站需要巨额资金投入，目前只有几家在苦苦支撑，形成“内外”相争的局面。外资代表如卓越网和易趣网；卓越网由金山公司和联想投资创建，2004年被美国电子商务网站巨头亚马逊收购，易趣网引入合作伙伴美国电子商务网站eBay，随后被其全面收购。内资代表如淘宝网和拍拍网，电子商务网站阿里巴巴创建淘宝并多次注资，中国市场上最大的互联网即时通信软件开发商腾讯公司也染指购物网站，成立拍拍网，与淘宝叫板。 <br />这4家购物网站占据了网络购物市场的半壁江山，但是网站间同质化竞争严重。侯涛指出，在B2C、C2C融合的背景下，如果购物网站能够结合自身的网站资源优势进行创新，将能够催生网络购物航空母舰型企业的出现。<br /><br />中国C2C简史：<br />1999年： 邵亦波创立易趣网，创中国C2C先河。 <br />1999年8月： 易趣网正式上线。 <br />2002年3月： eBay注资易趣网3000万美元。 <br />2003年5月： 阿里巴巴4.5亿成立C2C网站淘宝网。 <br />2003年7月： eBay斥资1.5亿美元全资收购易趣网。 <br />2004年6月： 易趣网进入与美国eBay平台对接整合。 <br />2005年9月： 腾讯推出拍拍网，2006年3月13日运营。 <br />2006年12月： TOM在线与eBay合资，更名为TOM易趣。 <br />2007年10月： 搜索引擎公司百度宣布进军电子商务，筹建C2C平台，预计2008年初推出。<br />2008年05月05日：易趣宣布任何用户只要在易趣开店，无论是普通店铺、高级店铺还是超级店铺，都将终身免费。<br />2008年6月18日，百度网络交易平台正式在北京启动其在全国范围的巡回招商活动。<br /><br />B2B,B2C,C2C,C2B务之间的区别<br />B2B (Business to Business) 是指商家与商家建立的商业关系. 例如我们在麦当劳中只能够买到可口可乐是因为麦当劳与可口可乐中的商业夥伴的关系. 商家们建立商业夥伴的关系是希望通过大家所提供的东西来形成一个互补的发展机会,大家的生意都可以有利润. 例子：阿里巴巴、慧聪<br />B2C (Business to Consumer) 就是我们很经常看到的供应商直接把商品卖给用户. 例如你去麦当劳吃东西就是B2C, 因为你只是一个客户. 例子：当当、卓越、优凯特<br />C2C (Consumer to Consumer),  客户之间自己把东西放上网去卖. 例子：淘宝、拍拍、易趣<br />C2B (Consumer to Business), 这个概念比较新,意思是由客户选择自己要些什麼东西,要求的价格是什麼,然后由商家来决定是否接受客户的要求. 假如商家接受客户的要求, 那麼交易成功; 假如商家不接受客户的要求,那麼就是交易失败.<br /><br />主要是对象的区别<br />B2B：企业间的EC<br />B2C：企业对个人用户的EC<br />C2C：个人对个人的EC<br />C2B：个人对商家的EC<br />注：EC是指电子商务
          <br/>
          <span style="color:red;">
            <a href="http://whaosoft.javaeye.com/blog/231381#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, 22 Aug 2008 00:12:39 +0800</pubDate>
        <link>http://whaosoft.javaeye.com/blog/231381</link>
        <guid>http://whaosoft.javaeye.com/blog/231381</guid>
      </item>
      <item>
        <title>Freemarker 教你几招(适合初学者，欢迎拍砖)</title>
        <author>dongwei_6688</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongwei.javaeye.com">dongwei_6688</a>&nbsp;
          链接：<a href="http://dongwei.javaeye.com/blog/231322" style="color:red;">http://dongwei.javaeye.com/blog/231322</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>第一招：迭代Map<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 假设你有一个Map，像这样：</p>
<pre name="code" class="xml">{"name":"mouse", "price":50 , "weight":30}</pre>
<p>&nbsp;<br />如何来迭代输出？</p>
<pre name="code" class="html">&lt;#-- 这里模拟了一个Map集合，定义了三对键值 --&gt;
&lt;#assign h = {"name":"mouse", "price":50, "weight":30}&gt;

&lt;#-- h?keys 将Map的key取出赋值，实质是调用了一个包装类的方法，
从这里我们也可以学到如何去调用一个类的方法 --&gt;
&lt;#assign keys = h?keys&gt; 

&lt;#-- 关键点：${h[key]} 通过这样的方式，访问到了Map中的value属性 --&gt;
&lt;#list keys as key&gt;${key} = ${h[key]}; &lt;/#list&gt;</pre>
<p>&nbsp;<br />输出结果：</p>
<pre name="code" class="html">name = mouse; price = 50; weight = 30; </pre>
<p>&nbsp;</p>
<p><strong>第二招：如何判定字符串相等<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个有点小题大作，呵呵，其实很简单</p>
<pre name="code" class="html">&lt;#-- 定义了一种动物——狗 --&gt;
&lt;#assign annimal = "Dog"&gt;

&lt;#-- 做一下条件判断，如果是狗就输出"Wang! Wang!"
注意:这里使用一个"="--&gt;
&lt;#if annimal = "Dog"&gt;
Wang! Wang!
&lt;#else&gt;
Ga! Ga!
&lt;/#if&gt;</pre>
<p>&nbsp;</p>
<p>输出结果：</p>
<pre name="code" class="html">Wang! Wang! </pre>
<p>&nbsp;</p>
<p><strong>第三招：处理空值</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先要说明的是，在freemarker中，如果你试图去访问一个不存在的值(null)，或者该值在访问时还没有被初始化，<br />那么它会毫不犹豫的抛给一个错误，并且立即终止模板的执行过程。<a href="http://freemarker.sourceforge.net/docs/app_faq.html#faq_picky_about_missing_vars" title="为什么这么变态？" target="_blank">为什么这么变态？</a></p>
<p>&nbsp;</p>
<p>如何对付这样的情况？<br />答案：在它访问这个值失败的时候，给它一个默认的值！嘻嘻&hellip;&hellip;</p>
<p>&nbsp;</p>
<p>怎么赋默认值？<br />用这样的语法：<br /><span style="color: #ff9900;">unsafe_expr!default_expr</span> 或 <span style="color: #ff9900;">unsafe_expr!</span> 或 <span style="color: #ff9900;">(unsafe_expr)!default_expr</span> 或 <span style="color: #ff9900;">(unsafe_expr)!</span></p>
<p><span style="color: #ff9900;"><br /></span>例子：</p>
<pre name="code" class="html">&lt;#-- 想要输出mouse,但是它没有被赋值，所以指定默认值为"No mouse"
当然"!"后面的这个值可以是一个表达式--&gt;
${mouse!"No mouse."}

&lt;#-- 给mouse赋值 "Jerry" --&gt;
&lt;#assign mouse="Jerry"&gt;

&lt;#-- 再次访问mouse --&gt;
${mouse!"No mouse."}</pre>
<p>&nbsp;</p>
<p>输出结果：</p>
<pre name="code" class="html">No mouse.
Jerry </pre>
<p>&nbsp;</p>
<p>另外对于"!"后面没有写任何值的情况，那么它的值可能是空String、空sequence 、空hash。<br />但是如果你想默认值是0或者false，那么你最好还是显式的指定，因为它不会对你那么友好的(Bad luck!)</p>
<p>还需要注意的是：</p>
<pre name="code" class="html">1. product.color!"red" 
2. (product.color)!"red" 

这两种写法所表示的含义是不一样的：
第一种写法只处理color为空的情况，对于product为空则束手无策。
第二种写法则可以同时处理product及color同时(或任意)为空的情况。</pre>
<p>&nbsp;</p>
<p><strong>插播</strong>，如何判断空值？<br />语法：unsafe_expr?? 或 (unsafe_expr)?? 返回值为true和false</p>
<p>&nbsp;</p>
<p><strong>第四招：几个常用的函数<br /></strong>&nbsp;&nbsp;&nbsp; 使用函数的方式就像这样:user?upper_case 简单吧？</p>
<p><strong>字符串函数:</strong></p>
<p style="PADDING-LEFT: 30px"><strong>html：</strong>将会把一些特殊的html字符替换掉(比如：把 "&lt;" 替换为"&amp;lt;")</p>
<p style="PADDING-LEFT: 30px"><strong>cap_first：</strong>首字母大写<br /><strong>lower_case：</strong>转化为小写<br /><strong>upper_case：</strong>转化为大写<br /><strong>trim：</strong>去掉首尾的空白，包括空格、Tab、回车、换行</p>
<p><br />例子：</p>
<pre name="code" class="html">&lt;#-- 定义test值为"Tom &amp; Jerry" --&gt;
&lt;#assign test = "Tom &amp; Jerry"&gt;
${test?html}
${test?upper_case?html}

输出为:
Tom &amp; Jerry
TOM &amp; JERRY </pre>
<p>&nbsp;</p>
<p><strong>序列(也就是常说的List或Set等集合)函数:</strong></p>
<p style="PADDING-LEFT: 30px"><strong>size：</strong>显示该序列的大小</p>
<p style="PADDING-LEFT: 30px">&nbsp;</p>
<p><strong>数学函数:</strong><br /><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int：</strong>取整(例如： -1.9?int 返回值是 -1)</p>
<p>&nbsp;</p>
<p>到这里吧，先到这里了&hellip;&hellip;</p>
          <br/>
          <span style="color:red;">
            <a href="http://dongwei.javaeye.com/blog/231322#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, 21 Aug 2008 20:15:10 +0800</pubDate>
        <link>http://dongwei.javaeye.com/blog/231322</link>
        <guid>http://dongwei.javaeye.com/blog/231322</guid>
      </item>
      <item>
        <title>oracel基础</title>
        <author>hellofuck</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://Jdnis.javaeye.com">hellofuck</a>&nbsp;
          链接：<a href="http://Jdnis.javaeye.com/blog/231314" style="color:red;">http://Jdnis.javaeye.com/blog/231314</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">表间数据复制：</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>Create teble table_name </span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>As</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>（</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 15.75pt; mso-layout-grid-align: none; mso-char-indent-count: 1.5;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp; </span>Select * from table_name(已经存在的表)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none; mso-char-indent-count: 2.0;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">）;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none; mso-char-indent-count: 2.0;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">则完成了将已知表中的数据复制到新创建的表中。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">Delete与truncate</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">Delete命令将删除表中的记录，但是删除的数据在系统的回滚段中，通过rollback可以恢复，但是truncate删除整张表的数据时，是直接删除数据，保留表的结构，数据不能回滚。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">比较运算符：</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 15.75pt; mso-layout-grid-align: none; mso-char-indent-count: 1.5;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">=<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>（等于）</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>！=,^=,&lt;&gt;<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>（不等于）</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>&lt;<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(小于)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>&lt;=<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(小于等于)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>&lt;<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(大于)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>&gt;=<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(大于等于)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>in<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>列表）</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>not in<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>（不在列表）</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>between<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(介于之间)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>not between<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(不介于之间)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>like<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(模式匹配)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>not like<span style="mso-spacerun: yes;">&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>(模式不匹配)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>is null<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(是否为空)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>is not null<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(是否不为空)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">排序查询：</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-size: small;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>Order by </span><span style="mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体;"><span style="font-family: Times New Roman;">&hellip;</span></span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;">.可以指定查询结果如何排序</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp; </span>Desc<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>降序排列</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp; </span>Asc<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>升序排序</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">分组查询：</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-size: small;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>Group by</span><span style="mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体;"><span style="font-family: Times New Roman;">&hellip;</span></span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;">.</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-size: small;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp; </span>Having</span><span style="mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体;"><span style="font-family: Times New Roman;">&hellip;</span></span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;">.</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>没有group by 时，不能用having查询。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">子查询：</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 15.75pt; mso-layout-grid-align: none; mso-char-indent-count: 1.5;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">any(),some()这两个是一样的表示其中的任何一个，相当于or操作</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>all()表示所有的，相当于 and操作</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>exit()</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">联合查询：</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>(select satement1)union(select satement2)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>并操作</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>(select satement1)intersect(select satement2)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>交操作</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>(select satement1)minus(select satement2)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>差操作(属于前者不属于后者)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">函数查询：</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">ceil(n)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>取大于等于数值n的最小整数</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">floor(n)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>取小于等于数值n的最大整数</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">mod(m,n)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>取m整除n后的余数</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">power(m,n)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>取m的n次方</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">round(m,n)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>对m四舍五入，保留n位长度</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">sign(n)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>n&gt;0,取1；n=0,取0；n&lt;0,取-1</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">avg(字段名)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>求平均值</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">count(字段名或者*)<span style="mso-spacerun: yes;">&nbsp; </span>统计总数</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">min(字段名)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>计算数值型字段的最小值</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">max(字段名)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>计算数值型字段的最大值</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; mso-layout-grid-align: none;"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN;"><span style="font-size: small;">sum(字段名)<span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>计算数值型字段的总和</span></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://Jdnis.javaeye.com/blog/231314#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, 21 Aug 2008 19:56:08 +0800</pubDate>
        <link>http://Jdnis.javaeye.com/blog/231314</link>
        <guid>http://Jdnis.javaeye.com/blog/231314</guid>
      </item>
      <item>
        <title>Struts2源码研究1</title>
        <author>Ivan_Pig</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ivan-pig.javaeye.com">Ivan_Pig</a>&nbsp;
          链接：<a href="http://ivan-pig.javaeye.com/blog/231273" style="color:red;">http://ivan-pig.javaeye.com/blog/231273</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          看struts2一周，就搞定了一个程序，郁闷。还有源码里的一个注入问题，一直得不到解决。<br />http://www.javaeye.com/problems/2568<br />网上问了好久也没有满意的答案。。。。还是靠自己吧，自己研究。<br /><br />首先，web.xml文件里的这一段肯定是个关键。<br /><pre name="code" class="xml">
&lt;filter>
  	&lt;filter-name>struts2&lt;/filter-name>
  	&lt;filter-class>org.apache.struts2.dispatcher.FilterDispatcher&lt;/filter-class>
  &lt;/filter>
  
  &lt;filter-mapping>
  	&lt;filter-name>struts2&lt;/filter-name>
  	&lt;url-pattern>/*&lt;/url-pattern>
  &lt;/filter-mapping>
</pre><br />那么就从这里入手。<br />filter应该和servlet差不多，在struts2里面，当有请求发生时，就会匹配&lt;url-pattern>/*&lt;/url-pattern>，如果匹配，则根据&lt;filter-name>struts2&lt;/filter-name>找到&lt;filter-class>org.apache.struts2.dispatcher.FilterDispatcher&lt;/filter-class><br />  &lt;/filter>。<br />那么就到FilterDispatcher里看看。<br /><br />Filter执行顺序是，init(),doFilter(),destroy()。先看init()<br /><pre name="code" class="java">
public void init(FilterConfig filterConfig) throws ServletException {
        
        this.filterConfig = filterConfig;
    	 
        dispatcher = createDispatcher(filterConfig);
        dispatcher.init();
        
        String param = filterConfig.getInitParameter("packages");
        String packages = "org.apache.struts2.static template org.apache.struts2.interceptor.debugging";
        if (param != null) {
            packages = param + " " + packages;
        }
        this.pathPrefixes = parse(packages);
    }
</pre><br /><br />        this.filterConfig = filterConfig;<br />    	 <br />        dispatcher = createDispatcher(filterConfig);<br />        dispatcher.init();<br />这一段，是对struts2需要的资源的一个初始化。进到Dispatcher里面的init方法里，可以看到init了很多东西。<br /><br /><pre name="code" class="xml">
 public void init() {

    	if (configurationManager == null) {
    		configurationManager = new ConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME);
    	}

    	init_DefaultProperties(); // [1]
        init_TraditionalXmlConfigurations(); // [2]
        init_LegacyStrutsProperties(); // [3]
        init_ZeroConfiguration(); // [4]
        init_CustomConfigurationProviders(); // [5]
        init_MethodConfigurationProvider();
        init_FilterInitParameters() ; // [6]
        init_AliasStandardObjects() ; // [7]

        Container container = init_PreloadConfiguration();
        init_CheckConfigurationReloading(container);
        init_CheckWebLogicWorkaround(container);

    }
</pre><br />这里很好理解。<br />Container container = init_PreloadConfiguration();<br />引起了我的注意，注入需要ioc容器，这个container是不是就是我要找的那个容器呢？而且它存在的包名叫com.opensymphony.xwork2.inject，可能行更大了。不过这玩样是webwork里的东东，那就下webwork的源码吧。<br />下载地址：http://www.opensymphony.com/<br />看官网上这句话<br />XWork is an command-pattern framework that is used to power Struts 2 as well as other applications. XWork provides an <span style="color: red">Inversion of Control container</span>, a powerful expression language, data type conversion, validation, and pluggable configuration.<br />呵呵，八九不离十了。<br />init_PreloadConfiguration();<br />从名字可以看出，这个init方法是加载需要提前加载的配置。<br />到里面看看代码<br /><pre name="code" class="java">
private Container init_PreloadConfiguration() {
        Configuration config = configurationManager.getConfiguration();
        Container container = config.getContainer();

        boolean reloadi18n = Boolean.valueOf(container.getInstance(String.class, StrutsConstants.STRUTS_I18N_RELOAD));
        LocalizedTextUtil.setReloadBundles(reloadi18n);

        ObjectTypeDeterminer objectTypeDeterminer = container.getInstance(ObjectTypeDeterminer.class);
        ObjectTypeDeterminerFactory.setInstance(objectTypeDeterminer);

        return container;
    }
</pre><br /><br />1，2两句就是获得container的，里面有什么东西，再往里看。看configurationManager.getConfiguration();<br /><pre name="code" class="java">
public synchronized Configuration getConfiguration() {
        if (configuration == null) {
            setConfiguration(new DefaultConfiguration(defaultFrameworkBeanName));
            try {
                configuration.reload(getConfigurationProviders());
            } catch (ConfigurationException e) {
                setConfiguration(null);
                throw e;
            }
        } else {
            conditionalReload();
        }

        return configuration;
    }
</pre><br /><br />这里的getConfigurationProviders()取到的providers就是前面1-7init里面所加的provider.<br />configuration.reload(getConfigurationProviders());再往里看。<br /><pre name="code" class="java">
public synchronized void reload(List&lt;ConfigurationProvider> providers) throws ConfigurationException {
        packageContexts.clear();
        loadedFileNames.clear();

        ContainerProperties props = new ContainerProperties();
        ContainerBuilder builder = new ContainerBuilder();
        for (ConfigurationProvider configurationProvider : providers)
        {
            configurationProvider.init(this);
            configurationProvider.register(builder, props);
        }
        props.setConstants(builder);
        
        builder.factory(Configuration.class, new Factory&lt;Configuration>() {
            public Configuration create(Context context) throws Exception {
                return DefaultConfiguration.this;
            }
        });
        
        try {
            // Set the object factory for the purposes of factory creation
            ObjectFactory.setObjectFactory(new ObjectFactory());
            
            container = builder.create(false);
            objectFactory = container.getInstance(ObjectFactory.class);
            ObjectFactory.setObjectFactory(objectFactory);
            
            for (ConfigurationProvider configurationProvider : providers)
            {
                container.inject(configurationProvider);
                configurationProvider.loadPackages();
            }
    
            rebuildRuntimeConfiguration();
        } finally {
            ObjectFactory.setObjectFactory(null);
        }
    }
</pre><br />container.inject(configurationProvider);这一句不看代码也明了了。注入贝。<br />那么struts2里面的注入的大体流程应该就是这样的了（我的理解，不对的请拍砖。。。）<br />后面的细节再慢慢研究。^-^
          <br/>
          <span style="color:red;">
            <a href="http://ivan-pig.javaeye.com/blog/231273#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, 21 Aug 2008 17:30:45 +0800</pubDate>
        <link>http://ivan-pig.javaeye.com/blog/231273</link>
        <guid>http://ivan-pig.javaeye.com/blog/231273</guid>
      </item>
      <item>
        <title>学习Flex应该看的书</title>
        <author>jianxm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jianxm.javaeye.com">jianxm</a>&nbsp;
          链接：<a href="http://jianxm.javaeye.com/blog/231256" style="color:red;">http://jianxm.javaeye.com/blog/231256</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          《Flex中文帮助》 pdf格式<br />《ActionScript 3.0编程》 pdf格式。务必熟读。<br />《使用ActionScript 3.0组件》 pdf格式。参考、查阅。<br />《ActionScript 3.0语言和组件参考》 chm格式。参考、查阅。
          <br/>
          <span style="color:red;">
            <a href="http://jianxm.javaeye.com/blog/231256#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, 21 Aug 2008 17:08:07 +0800</pubDate>
        <link>http://jianxm.javaeye.com/blog/231256</link>
        <guid>http://jianxm.javaeye.com/blog/231256</guid>
      </item>
      <item>
        <title>在使用common-fileupload时乱码问题</title>
        <author>bleach0608</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bleach0608.javaeye.com">bleach0608</a>&nbsp;
          链接：<a href="http://bleach0608.javaeye.com/blog/231255" style="color:red;">http://bleach0608.javaeye.com/blog/231255</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">&lt;form action="test2_2.jsp" enctype="multipart/form-data" method="POST" &gt;

&lt;%request.setCharacterEncoding("GBK"); %&gt;</pre>
<p>&nbsp;如果是上图的情况时,必须要加上request.....不然在处理的时候,会出现乱码问题</p>
<p>&nbsp;</p>
<p>如果method是get, 则要在servlet中使用String path = new String(path.getBytes("ISO-8859-1"),"gbk");来解决</p>
          <br/>
          <span style="color:red;">
            <a href="http://bleach0608.javaeye.com/blog/231255#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, 21 Aug 2008 17:04:08 +0800</pubDate>
        <link>http://bleach0608.javaeye.com/blog/231255</link>
        <guid>http://bleach0608.javaeye.com/blog/231255</guid>
      </item>
      <item>
        <title>正则表达式 </title>
        <author>whaosoft</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://whaosoft.javaeye.com">whaosoft</a>&nbsp;
          链接：<a href="http://whaosoft.javaeye.com/blog/231195" style="color:red;">http://whaosoft.javaeye.com/blog/231195</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          判断钱数的<br />   String.matches("^(-?\\d+)(\\.\\d+)?$") <br /><br />1。^\d+$　　//匹配非负整数（正整数 + 0） <br />2。^[0-9]*[1-9][0-9]*$　　//匹配正整数 <br />3。^((-\d+)|(0+))$　　//匹配非正整数（负整数 + 0） <br />4。^-[0-9]*[1-9][0-9]*$　　//匹配负整数 <br />5。^-?\d+$　　　　//匹配整数 <br />6。^\d+(\.\d+)?$　　//匹配非负浮点数（正浮点数 + 0） <br />7。^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$　　//匹配正浮点数 <br />8。^((-\d+(\.\d+)?)|(0+(\.0+)?))$　　//匹配非正浮点数（负浮点数 + 0） <br />9。^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$　　//匹配负浮点数 <br />10。^(-?\d+)(\.\d+)?$　　//匹配浮点数 <br />11。^[A-Za-z]+$　　//匹配由26个英文字母组成的字符串 <br />12。^[A-Z]+$　　//匹配由26个英文字母的大写组成的字符串 <br />13。^[a-z]+$　　//匹配由26个英文字母的小写组成的字符串 <br />14。^[A-Za-z0-9]+$　　//匹配由数字和26个英文字母组成的字符串 <br />15。^\w+$　　//匹配由数字、26个英文字母或者下划线组成的字符串 <br />16。^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$　　　　//匹配email地址 <br />17。^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$　　//匹配url <br />18。匹配中文字符的正则表达式： [\u4e00-\u9fa5] <br />19。匹配双字节字符(包括汉字在内)：[^\x00-\xff]<br />20。应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）<br />String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;} <br />21。匹配空行的正则表达式：\n[\s| ]*\r <br />22。匹配HTML标记的正则表达式：/&lt;(.*)>.*&lt;\/\1>|&lt;(.*) \/>/ <br />23。匹配首尾空格的正则表达式：(^\s*)|(\s*$)<br /><br />* 正则表达式用例<br />  * 1、^\S+[a-z A-Z]$ 不能为空 不能有空格  只能是英文字母<br />  * 2、\S{6,}         不能为空 六位以上<br />  * 3、^\d+$          不能有空格 不能非数字<br />  * 4、(.*)(\.jpg|\.bmp)$ 只能是jpg和bmp格式<br />  * 5、^\d{4}\-\d{1,2}-\d{1,2}$ 只能是2004-10-22格式<br />  * 6、^0$            至少选一项<br />  * 7、^0{2,}$        至少选两项<br />  * 8、^[\s|\S]{20,}$ 不能为空 二十字以上<br />  * 9、^\+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(\.|\-))+[a-z]{2,6}$邮件<br />  * 10、\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)* 输入多个地址用逗号或空格分隔邮件<br />  * 11、^(\([0-9]+\))?[0-9]{7,8}$电话号码7位或8位或前面有区号例如（022）87341628<br />  * 12、^[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(\.[a-z A-Z 0-9 _]+)+(\,[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(\.[a-z A-Z 0-9 _]+)+)*$<br />  *     只能是字母、数字、下划线；必须有@和.同时格式要规范 邮件<br />  * 13 ^\w+@\w+(\.\w+)+(\,\w+@\w+(\.\w+)+)*$上面表达式也可以写成这样子，更精练。<br />    14   ^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$ <br /><br /><br />在java中的正则<br />^\\d+$　　//非负整数（正整数 + 0）<br />^[0-9]*[1-9][0-9]*$　　//正整数<br />^((-\\d+)|(0+))$　　//非正整数（负整数 + 0）<br />^-[0-9]*[1-9][0-9]*$　　//负整数<br />^-?\\d+$　　　　//整数 <br />^\\d+(\\.\\d+)?$　　//非负浮点数（正浮点数 + 0）<br />^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$　　//正浮点数 <br />^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$　　//非正浮点数（负浮点数 + 0）<br />^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$　　//负浮点数 <br />^(-?\\d+)(\\.\\d+)?$　　//浮点数<br />^[A-Za-z]+$　　//由26个英文字母组成的字符串<br />^[A-Z]+$　　//由26个英文字母的大写组成的字符串<br />^[a-z]+$　　//由26个英文字母的小写组成的字符串<br />^[A-Za-z0-9]+$　　//由数字和26个英文字母组成的字符串 <br />^\\w+$　　//由数字、26个英文字母或者下划线组成的字符串<br />^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$　　　　//email地址 <br />^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$　　//url <br /><br />^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$ // 时间,如 13:04:06<br />^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$ // 日期,如 2003-12-05<br />^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$ // 日期 2003-12-05 13:04:06<br />^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$ // 15位的身份证<br />^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$ // 18位的身份证
          <br/>
          <span style="color:red;">
            <a href="http://whaosoft.javaeye.com/blog/231195#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, 21 Aug 2008 15:17:31 +0800</pubDate>
        <link>http://whaosoft.javaeye.com/blog/231195</link>
        <guid>http://whaosoft.javaeye.com/blog/231195</guid>
      </item>
      <item>
        <title>如何配置Tomcat支持HTTP Delete和Put 方法</title>
        <author>鹤惊昆仑</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://newdongyuwei.javaeye.com">鹤惊昆仑</a>&nbsp;
          链接：<a href="http://newdongyuwei.javaeye.com/blog/231176" style="color:red;">http://newdongyuwei.javaeye.com/blog/231176</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在tomcat web.xml文件中配置org.apache.catalina.servlets.DefaultServlet的<br /><pre name="code" class="java">&lt;init-param> 
   &lt;param-name>readonly&lt;/param-name> 
   &lt;param-value>false&lt;/param-value> 
&lt;/init-param> </pre><br />readonly参数默认是true，即不允许delete和put操作，所以通过XMLHttpRequest对象的put或者delete方法访问就会报告http 403错误。为REST服务起见，应该设置该属性为false。
          <br/>
          <span style="color:red;">
            <a href="http://newdongyuwei.javaeye.com/blog/231176#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, 21 Aug 2008 14:45:48 +0800</pubDate>
        <link>http://newdongyuwei.javaeye.com/blog/231176</link>
        <guid>http://newdongyuwei.javaeye.com/blog/231176</guid>
      </item>
      <item>
        <title>自己动手写一个Struts2(升级版)</title>
        <author>phz50</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://phz50.javaeye.com">phz50</a>&nbsp;
          链接：<a href="http://phz50.javaeye.com/blog/231141" style="color:red;">http://phz50.javaeye.com/blog/231141</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          本系统是作者<a href="http://superleo.javaeye.com/" target="_blank">kyo100900</a>发表的文章<a href="http://superleo.javaeye.com/blog/227857" target="_blank">自己动手写一个Struts2</a>的一个升级版本，在这里我特别感谢<a href="http://superleo.javaeye.com/" target="_blank">kyo100900</a>和我的合作伙伴<a href="http://pxb1988.javaeye.com/" target="_blank">pxb1988</a>，pxb1988给该系统提供了优秀的迷你版ioc容器，而且给该系统定制了优良的构架，非常感谢！<br /><br />下面简单介绍一下这个简单版的 struts2框架：<br />ppmvc.xml<br /><pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8" ?>
&lt;ppmvc>&lt;include file="phz/test/kk.xml" />&lt;/ppmvc></pre><br /><br />phz/test/kk.xml<br /><pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8" ?>
&lt;ppmvc>
	&lt;!-- namespace如果不写默认为"/" -->
	&lt;package name="packageA" namespace="/">
		&lt;!-- method如果不写默认为"execute" -->
		&lt;action name="hello" method="hello"
			class="phz.test.HelloAction">
			&lt;!-- type如果不写默认为jsp -->
			&lt;result name="success" type="jsp">/index.jsp&lt;/result>
		&lt;/action>
	&lt;/package>
&lt;/ppmvc></pre><br /><br />这里总共有下面一些升级：<br /><ul><li>支持include标签</li><li>支持namespace</li><li>引进默认method为"execute"，引进默认的type为"jsp"</li></ul><br /><br /><br />pp.mvc.PpmvcFilter.java<br /><br /><pre name="code" class="java">package pp.mvc;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import pp.mvc.core.ActionDefineManager;
import pp.mvc.core.ActionProcesser;
import pp.mvc.core.ResultProcesser;
import pp.mvc.domain.ActionDefine;
import pp.mvc.domain.Result;
import pxb.ioc.MiniContainer;
import pxb.ioc.impl.DefaultMiniContainer;

public class PpmvcFilter implements Filter {

	private MiniContainer miniContainer;
	private ActionDefineManager actionDefineManager;
	private ActionProcesser actionProcesser;
	private ResultProcesser resultProcesser;

	public void destroy() {
		try {
			this.miniContainer.destroy();
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	public void init(FilterConfig filterConfig) throws ServletException {

		try {
			ServletContext servletContext = filterConfig.getServletContext();
			String configFile = filterConfig.getInitParameter("configFile");
			miniContainer = new DefaultMiniContainer();
			miniContainer.setConfigFile(configFile);
			miniContainer.addClassMap(ServletContext.class, servletContext);
			miniContainer.init();
			
			this.actionDefineManager = miniContainer
					.inject(ActionDefineManager.class);
			this.actionProcesser = this.miniContainer
					.inject(ActionProcesser.class);
			this.resultProcesser = this.miniContainer
					.inject(ResultProcesser.class);
		} catch (Exception e) {
			throw new ServletException(e);
		}
		miniContainer.clear();
	}

	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {

		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) res;
		ActionDefine actionDefine = this.actionDefineManager
				.getActionDefine(request);
		if (actionDefine != null) {
			Result result = this.actionProcesser.processAction(actionDefine,
					request);
			this.resultProcesser.processResult(result, request, response);

		} else {
			chain.doFilter(request, response);
		}
	}
}
</pre><br /><br />这里总共有下面一些升级：<br /><ul><li>通过pxb1988提供的MiniContainer启动初始化</li></ul><br /><br />通过pxb1988提供的MiniContainer启动初始化，这样可以初始加载xml配置，不用重复加载，节约了时间，而且pxb1988还提供了，LifeCycle机制，非常有用！<br /><br />下面为主要接口：<br />pp.mvc.core.ActionDefineManager.java<br /><pre name="code" class="java">/**
 * PHZ MVC
 */
package pp.mvc.core;

import javax.servlet.http.HttpServletRequest;

import pp.mvc.domain.ActionDefine;

/**
 * 管理所有ActionDefine
 * 
 * @author panxiaobo
 * 
 */
@pxb.ioc.ImplementedBy("pp.mvc.core.impl.ActionDefineManagerImpl")
public interface ActionDefineManager {
	/**
	 * 根据request获取ActionDefine
	 * 
	 * @param request
	 * @return
	 */
	public ActionDefine getActionDefine(HttpServletRequest request);
}
</pre><br /><br />pp.mvc.core.XmlProcesser.java<br /><br /><pre name="code" class="java">package pp.mvc.core;

import java.util.Map;

import pp.mvc.domain.ActionDefine;
import pxb.ioc.ImplementedBy;

/**
 * 负责解析xml文件
 * 
 * @author panhuizi
 * 
 */
@ImplementedBy("pp.mvc.core.impl.XmlProcesserImpl")
public interface XmlProcesser {
	/**
	 * 获取所有(packageNamespace+actionName)对(ActionDefine)的映射
	 */
	public Map&lt;String, ActionDefine> getAllActionDefineMapsByPpXmlFile()
			throws Exception;
}
</pre><br /><br />...........<br /><br />这里总共有下面一些升级：<br /><ul><li>这里使用了ioc一些思想，通过接口注入，有利于单元测试</li><li>还有一些其他的升级，大家看了源代码就知道啦。。。。</li></ul><br /><br />好了最后，再次感谢<a href="http://superleo.javaeye.com/" target="_blank">kyo100900</a>和<a href="http://pxb1988.javaeye.com/" target="_blank">pxb1988</a>！
          <br/>
          <span style="color:red;">
            <a href="http://phz50.javaeye.com/blog/231141#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, 21 Aug 2008 13:06:50 +0800</pubDate>
        <link>http://phz50.javaeye.com/blog/231141</link>
        <guid>http://phz50.javaeye.com/blog/231141</guid>
      </item>
      <item>
        <title>dwr简单指南</title>
        <author>melland</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://littlez.javaeye.com">melland</a>&nbsp;
          链接：<a href="http://littlez.javaeye.com/blog/231133" style="color:red;">http://littlez.javaeye.com/blog/231133</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>dwr可以让我们在浏览器中使用javascript调用服务器端的java代码。</p>
<p>dwr主要包括两部分：</p>
<p>运行在客户端的js代码发送请求到服务器端；</p>
<p>服务器端的dwr servlet处理请求，并将结果和数据返回到客户端。</p>
<p>有一张关于dwr很精确的图：</p>
<p>&nbsp;<img src="http://wiki.javascud.org/download/attachments/4719/dwrworks.png" height="281" alt="" width="521" /></p>
<p>&nbsp;</p>
<p>DWR简单配置：</p>
<p>1.首先<a href="http://directwebremoting.org/dwr/download">dwr.jar</a>是必须的。下载后放在/WEB-INF/lib目录下。</p>
<p>&nbsp;</p>
<p>2.在/WEB-INF/目录下，增加一个dwr.xml文件。格式如下：</p>
<pre name="code" class="xml">&lt;dwr&gt;
	&lt;allow&gt;
		&lt;create creator="new" javascript="JDate"&gt;
			&lt;param name="class" value="java.util.Date"/&gt;
		&lt;/create&gt;
		&lt;create creator="spring" javascript="winnerService"&gt;
			&lt;param name="beanName" value="dwrWinnerService"/&gt;
		&lt;/create&gt;
	&lt;/allow&gt;
&lt;/dwr&gt;</pre>
<p>&nbsp;</p>
<p>根节点是dwr，我在第一次配置这个dwr.xml的时候，忽略掉了，根结点直接就是allow，然后就一直报错，很脑残的错误。所以在这里也稍微提醒一下。</p>
<p>create的creator属性常用的为new和spring。new就是每次调用的时候，都会实例化一个新的对象来处理请求；spring就是从Spring的配置文件中取得bean。</p>
<p>以JDate为例，javascript属性是DWR动态为服务器端的Date类(java)生成一个相应的客户端JDate类(Javascript)。JDate可以使用Date的所有public方法。</p>
<p>&nbsp;</p>
<p>3. 配好了dwr.xml，接下来配置/WEB-INF/web.xml。我们需要在web.xml中增加如下&lt;servlet&gt;和&lt;servlet-mapping&gt;:</p>
<pre name="code" class="xml">&lt;servlet&gt;
  &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;
  &lt;display-name&gt;DWR Servlet&lt;/display-name&gt;
  &lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt;
  &lt;init-param&gt;
     &lt;param-name&gt;debug&lt;/param-name&gt;
     &lt;param-value&gt;true&lt;/param-value&gt;
  &lt;/init-param&gt;
&lt;/servlet&gt;

&lt;servlet-mapping&gt;
  &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;
  &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;</pre>
<p>这个servlet就是用来处理dwr发送的请求。</p>
<p>&nbsp;</p>
<p>4. dwr访问</p>
<p>这时候，如果你已经在本地启动了你的应用(假设是在tomcat中)，可以访问如下URL：</p>
<p><span style="color: #003366;">http://localhost:8080/[YOUR-APP-NAME]/dwr</span></p>
<p>&nbsp;你会看到在dwr.xml配置的两个类.点击JDate,可以看到所有可以调用的方法,并且可以点击,在按钮的右边看到点击的反馈.</p>
<p>在这个页面的上方,你还会看到如下代码:</p>
<pre name="code" class="xml">&lt;script src='/[YOUR-APP-NAME]/dwr/interface/JDate.js'&gt;&lt;/script&gt;
&lt;script src='/[YOUR-APP-NAME]/dwr/engine.js'&gt;&lt;/script&gt;</pre>
<p>&nbsp;当你的页面需要使用JDate时，就必须把上面的script代码片段放到你的页面中。</p>
<pre name="code" class="xml">&lt;script type="text/javascript"&gt;
    JDate.toString({
        callback: function(str) { alert(str); }
   });
&lt;/script&gt;</pre>
<p>&nbsp;</p>
<p>&nbsp;我们就可以使用JDate了.</p>
<p>&nbsp;</p>
<p>这里主要是为了介绍一下dwr最基本的使用,那么dwr的一些其他能力,比如超时处理和错误处理,就不在这里说了.</p>
          <br/>
          <span style="color:red;">
            <a href="http://littlez.javaeye.com/blog/231133#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, 21 Aug 2008 12:45:35 +0800</pubDate>
        <link>http://littlez.javaeye.com/blog/231133</link>
        <guid>http://littlez.javaeye.com/blog/231133</guid>
      </item>
      <item>
        <title>对一则数据库设计的经验谈</title>
        <author>cuisk0328@eyou.com</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mydesignmail-163-com.javaeye.com">cuisk0328@eyou.com</a>&nbsp;
          链接：<a href="http://mydesignmail-163-com.javaeye.com/blog/230998" style="color:red;">http://mydesignmail-163-com.javaeye.com/blog/230998</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我去年中旬负责了一个电子政务的项目，项目从2006年底进行开发，经历了1期和2期，对于1期的开发自己是主要的编码人员，2期自己负责项目，架构是 osworkflow（其他公司的产品）,struts+spring+hibernate,prototype,用到都是现在比较成熟的开源技术，不过其实开源给与我们带来了很大的隐患和烦恼，这个项目是jboss作为web服务器，数据库的用的sql server,用到了集群和负载均衡技术。<br />    <br />    从去年到今年年初运行很稳定，基本没有发生什么异常状况，但是到了年后，由于年前在原来的基础上，有上了20个流程，4大模块，使得web服务器和数据库服务器的压力增大，经常会发生内存溢出，首页面白板，宕机的状况。<br /><br />    当时我手底下的人都被分配到了其他的项目组，我们公司没有固定的项目组成员，一个项目中途都可以调走人，所以自己也习惯了，这个时候就是自己对项目进行优化和性能提高的时候。<br />    <br />    这里给大家说的是一个数据库设计的问题，其他如jboss内存溢出，数据库分区优化，数据库索引优化以后将陆续为大家展开，当然这只是自己的经验之谈，很多地方肯定有不对的地方，望大家指出。<br /><br />   这个项目有一个模块是 公告信息，并且涉及到 每个用户是否察看过 公告信息，没有察看会有new图标，察看过了new会消失，当时设计的时候遵循了数据库的范式，因为该项目用户大概300人，每天的发布的公告信息大概有30多个，公告信息的业务表 增长不大，而中间的查看信息表每天大概300*30地记录递增，因为运行了1年多，大概产生了4000000记录，级联查询语句查询每个人的消耗sql 的资源时间是 10多秒，表结构如上传的图片，为此把标示表干脆省下来，在业务表加上state字段，初始化的时候存储了所有用户得id信息，当用户看过该条公告，id就删除，虽然违背了数据库设计的范式要求，但是确实提升了性能。<br /><br />    其实有一个问题我现在也很奇怪，就是微软在sql server引擎的设计上，该项目的数据库服务器 4g得内存，sql server 在运行1个月的时候，会战用1.7--1.9g的内存容量，i/o成为了数据库的性能最大的瓶颈，当时自己还找了probe,和loadrunner进行了测试，没有发现连接池没有关闭的问题。查询资料。上面说，微软在设计上就是这样，令我很疑惑。也望大家给与意见。<br />[img][/img]
          <br/>
          <span style="color:red;">
            <a href="http://mydesignmail-163-com.javaeye.com/blog/230998#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, 21 Aug 2008 10:47:47 +0800</pubDate>
        <link>http://mydesignmail-163-com.javaeye.com/blog/230998</link>
        <guid>http://mydesignmail-163-com.javaeye.com/blog/230998</guid>
      </item>
      <item>
        <title>ORACLE如何实现ID自动增长</title>
        <author>loving863</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jinguo.javaeye.com">loving863</a>&nbsp;
          链接：<a href="http://jinguo.javaeye.com/blog/230994" style="color:red;">http://jinguo.javaeye.com/blog/230994</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          create  sequence TBL_PIC_PRODUCT_SEQ<br />minvalue 1<br />maxvalue 9999999999999999999999999999<br />start with 1<br />increment by 1<br />cache 20;<br /><br />create or replace trigger TBL_PIC_PRODUCT_TRIG before insert on TBL_PIC_PRODUCT<br />referencing old as old new as new<br />for each row<br />declare next_id number;<br />begin<br />    select<br />        TBL_PIC_PRODUCT_SEQ.nextval<br />    into<br />        next_id<br />    from<br />        dual;<br /><br />    :new.info_id:=next_id;<br />end;<br />/<br /><br /><br />---------------<br />--建立序列   <br />  create   sequence   seq_name   <br />  increment   by   1   <br />  start   with   1   <br />  maxvalue   99999999   <br />  nocycle   <br />  cache   10   <br />    <br />  --调用:   <br />  insert   into   table(id,name)   values(seq_name.nextval,yourname);<br /><br />-----------<br />第一步：创建SEQUENCE   <br />  create   sequence   s_country_id   increment   by   1   start   with   1   maxvalue   999999999;   <br />  第二步：创建一个基于该表的before   insert   触发器，在触发器中使用该SEQUENCE   <br />  create   or   replace   trigger   bef_ins_t_country_define   <br />  before   insert   on   t_country_define   <br />  referencing   old   as   old   new   as   new   for   each   row   <br />  begin   <br />  select   s_country_id.nextval   into   :new.country_id   from   dual;   <br />  end;   <br />  /
          <br/>
          <span style="color:red;">
            <a href="http://jinguo.javaeye.com/blog/230994#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, 21 Aug 2008 10:39:41 +0800</pubDate>
        <link>http://jinguo.javaeye.com/blog/230994</link>
        <guid>http://jinguo.javaeye.com/blog/230994</guid>
      </item>
      <item>
        <title>JAVA下的日期时间类和格式化输出</title>
        <author>jiankeafei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jiankeafei.javaeye.com">jiankeafei</a>&nbsp;
          链接：<a href="http://jiankeafei.javaeye.com/blog/230928" style="color:red;">http://jiankeafei.javaeye.com/blog/230928</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp; 最近在项目中用到日期和时间，由于开始对JAVA下的日期和时间类掌握的不够熟练，所以在使用的过程成中遇到了一点问题，在此特总结一下。</p>
<p>&nbsp;&nbsp;&nbsp; Date类是比较经典的一个时间类，但是它里面的很多方法都已经过时，而Calendar相对Date较年轻且比较好用些。</p>
<p>&nbsp;&nbsp;&nbsp; 根据使用频率，我们一般有如下几种用法：</p>
<p>&nbsp;&nbsp;&nbsp; 1、获得当前时间并格式化输出</p>
<p>&nbsp;</p>
<pre name="code" class="java">//使用默认时区和语言环境获得一个日历
Calendar cale = Calendar.getInstance();
//将Calendar类型转换成Date类型
Date tasktime=cale.getTime();
//设置日期输出的格式
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化输出
System.out.println(df.format(tasktime));</pre>
<p>&nbsp;&nbsp;&nbsp; 2、输出指定日期</p>
<p>&nbsp;</p>
<pre name="code" class="java">//使用默认时区和语言环境获得一个日历
Calendar cale = Calendar.getInstance();
//对日期和时间进行设置
cale.set(Calendar.YEAR, 2008);
//此处注意，MONTH是从0开始的，一下设置为12，如果为宽松模式，时间自动变为09年1月，如果为严格模式，应抛出异常
cale.set(Calendar.MONTH, 12);
//月份减1
cale.add(Calendar.MONTH, -1);
cale.set(Calendar.DAY_OF_MONTH, 20);
cale.set(Calendar.HOUR_OF_DAY, 18);
cale.set(Calendar.MINUTE, 32);
//分钟加1 对于没有设置项，如秒，则采用系统默认
cale.add(Calendar.MINUTE, 1);
//将Calendar类型转换成Date类型
Date tasktime=cale.getTime();
//设置日期输出的格式
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化输出
System.out.println(df.format(tasktime));
</pre>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;附：SimpleDateFormat的格式：</p>
<p>&nbsp;&nbsp;&nbsp;在实例化SimpleDateFormat时，采用"yyyy-MM-dd HH:mm:ss"这样的构造参数，可以对输出的格式进行设置。而字符串中的字母代表的含义如下：</p>
<p>&nbsp;&nbsp;G 年代标志符<br />&nbsp; y 年<br />&nbsp; M 月<br />&nbsp; d 日<br />&nbsp; h 时 在上午或下午 (1~12)<br />&nbsp; H 时 在一天中 (0~23)<br />&nbsp; m 分<br />&nbsp; s 秒<br />&nbsp; S 毫秒<br />&nbsp; E 星期<br />&nbsp; D 一年中的第几天<br />&nbsp; F 一月中第几个星期几<br />&nbsp; w 一年中第几个星期<br />&nbsp; W 一月中第几个星期<br />&nbsp; a 上午 / 下午 标记符 <br />&nbsp; k 时 在一天中 (1~24)<br />&nbsp; K 时 在上午或下午 (0~11)<br />&nbsp; z 时区</p>
<p>&nbsp; 除了上述具有实际含义的字母之外，还可以配合诸如：空格、：、-等进行格式化设置。</p>
          <br/>
          <span style="color:red;">
            <a href="http://jiankeafei.javaeye.com/blog/230928#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, 21 Aug 2008 10:07:25 +0800</pubDate>
        <link>http://jiankeafei.javaeye.com/blog/230928</link>
        <guid>http://jiankeafei.javaeye.com/blog/230928</guid>
      </item>
      <item>
        <title>番茄花园作者被抓了</title>
        <author>Azi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://azi.javaeye.com">Azi</a>&nbsp;
          链接：<a href="http://azi.javaeye.com/blog/230910" style="color:red;">http://azi.javaeye.com/blog/230910</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>　　新浪科技20日独家披露的洪磊被拘报道，在软件产业、PC行业及互联网等领域引发了轩然大波。</p>
<p>　　根据我国的法律，未经许可修改他人软件，如果没有因此获利，定罪较为困难。番茄花园在其网站上的版权声明中也表示，他们并不提供任何出售光盘，完全供用户免费下载。一些用户为洪磊喊冤，觉得番茄花园只是盗版商的&ldquo;替罪羊&rdquo;，他本身并没有因此获利。用过番茄花园的用户都发现，他的操作系统捆绑了易趣插件及雅虎助手，但他是否因此获利不能妄下结论。</p>
<p>　　在新浪科技独家获悉的这份录音资料中，洪磊自己披露，他每月因此获利10余万元，并且他自己心里清楚&ldquo;让微软知道了你在利用这个赚钱，他肯定会找你&rdquo;。</p>
<p>　　洪磊在录音资料中称，番茄花园在2006年时的盈利模式有三种：一，番茄花园网站的点击广告；二，洪磊通过自己的网站提供包括XP美化包在内的软件下载，这些软件中捆绑了流氓软件，洪磊因此每月获利两三万元；三，通过预装在番茄花园版的流氓软件，为广告主带去流量或注册用户，每月由此获利10余万元。</p>
<p>&nbsp; 。。。。。。。。。。。。。。。。。。。。。。。。。。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>大家怎么看这个问题</p>
          <br/>
          <span style="color:red;">
            <a href="http://azi.javaeye.com/blog/230910#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, 21 Aug 2008 09:22:45 +0800</pubDate>
        <link>http://azi.javaeye.com/blog/230910</link>
        <guid>http://azi.javaeye.com/blog/230910</guid>
      </item>
      <item>
        <title>使用 RJS 模版来更新页面</title>
        <author>sunfengcheng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunfengcheng.javaeye.com">sunfengcheng</a>&nbsp;
          链接：<a href="http://sunfengcheng.javaeye.com/blog/230904" style="color:red;">http://sunfengcheng.javaeye.com/blog/230904</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: large"><span style="color: indigo">使用 RJS 模版来更新页面<br />如果你想使用 ajax 来调用更新页面中的多个 ＯＤＭ元素，　具体的说你想在一个应用程序中允许更新你的恶添加项等操作。<br />　<br />还是在你的布局中将　Ｐｒｏｔｏｔｙｐｅ　和样式包含进去<br /><br /><br /><pre name="code" class="java">app/views/layouts/tasks.rhtml:

&lt;html>
&lt;head>
  &lt;title>Tasks: &lt;%= controller.action_name %>&lt;/title>
  &lt;%= javascript_include_tag :defaults %>
  &lt;%= stylesheet_link_tag 'scaffold' %>
&lt;/head>
&lt;body>

&lt;p style="color: green">&lt;%= flash[:notice] %>&lt;/p>

&lt;%= yield %>

&lt;/body>
&lt;/html></pre>通过载入　一个局部模版，ｉｎｄｅｘ视图中显示了任务列表，　<br /><pre name="code" class="java">app/views/tasks/index.rhtml:

&lt;h1>My Tasks&lt;/h1>

&lt;div id="notice">&lt;/div>

&lt;div id="task_list">
  &lt;%= render :partial => 'list' %>
&lt;/div>

&lt;br />

&lt;% form_remote_tag :url => {:action => 'add_task'} do %>
  &lt;p>&lt;label for="task_name">Add Task&lt;/label>;
  &lt;%= text_field 'task', 'name'  %>&lt;/p>  
  &lt;%= submit_tag "Create" %>
&lt;% end %></pre><br />＿ｌｉｓｔ．ｒｈｔｍｌ　局部模版将迭代所用的任务，并显示成列表。<br /><pre name="code" class="java">app/views/tasks/_list.rhtml:

&lt;ul>
&lt;% for task in @tasks %>
  &lt;% for column in Task.content_columns %>
    &lt;li>&lt;%=h task.send(column.name) %>&lt;/li>
  &lt;% end %>
&lt;% end %>
&lt;/ul></pre>接着，　　　为了显示和添加的恶任务，定义两个方法　ｉｎｄｅｘ和ａｄｄ＿ｔａｓｋ。<br /><pre name="code" class="java">app/controllers/tasks_controller.rb:

class TasksController &lt; ApplicationController

  def index
    @tasks = Task.find :all
  end

  def add_task
    @task = Task.new(params[:task])
    @task.save
    @tasks = Task.find :all
  end
end</pre><br /><br />最后创建一个ＲＪＳ模版，用来定义那些元素使用　ｊａｖａｓｃｒｉｐｔ　来更新<br /><pre name="code" class="java">app/views/tasks/add_task.rjs:

page.replace_html 'notice', 
    "&lt;span style=\"color: green;\">#{@tasks.length} tasks,  
         updated on #{Time.now}&lt;/span>" 

page.replace_html 'task_list', :partial => 'list'

page.visual_effect :highlight, 'task_list', :duration => 4 </pre></span></span>
          <br/>
          <span style="color:red;">
            <a href="http://sunfengcheng.javaeye.com/blog/230904#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, 21 Aug 2008 07:31:12 +0800</pubDate>
        <link>http://sunfengcheng.javaeye.com/blog/230904</link>
        <guid>http://sunfengcheng.javaeye.com/blog/230904</guid>
      </item>
      <item>
        <title>迎奥运，20个帮助你塑造体形的网站</title>
        <author>liuming</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liuming.javaeye.com">liuming</a>&nbsp;
          链接：<a href="http://liuming.javaeye.com/blog/230898" style="color:red;">http://liuming.javaeye.com/blog/230898</a>&nbsp;
          发表时间: 2008年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>原文地址：<a href="http://www.sitepoint.com/blogs/2008/08/20/20-sites-to-get-you-in-shape/" title="20 Sites to Get You in Shape" target="_blank">http://www.sitepoint.com/blogs/2008/08/20/20-sites-to-get-you-in-shape/</a>
</p>
<p>&nbsp;</p>
<p>有些看了奥运后的朋友，会有种想塑身的冲动吧？笔者就有这样的念头，可惜转瞬即逝了。看着游泳运动员一个接一个的打破世界纪录，看着体操运动员在高难度的弹跳中仍然保持着完美的平衡，突然觉得，健美的身体和健康的饮食似乎很遥远。但是，希望以下的站点，能够以Web 2.0的方式给你一些帮助（译者注：这句够雷），排名不分前后。</p>
<ul>
<li><a href="http://www.traineo.com/" target="_blank">Traineo</a>
 - 以图表的方式显示你的健身和减肥目标，以及让关注你计划的家人和朋友上去鼓励你。</li>
<li><a href="http://www.gimme20.com/" target="_blank">Gimme20</a>
 - 寻找并制定适合你的健身计划，并跟据实施情况。</li>
<li><a href="http://www.peertrainer.com/" target="_blank">PEERtrainer</a>
 - 一个塑身减肥社区，使成员之间可以互相帮助，向目标迈进。</li>
<li><a href="http://www.myfooddiary.com/" target="_blank">My Food Diary</a>
 - 通过你的饮食和运动日记，跟踪你卡路里和脂肪的摄入和卡路里的消耗。</li>
<li><a href="http://www.gyminee.com/" target="_blank">Gyminee</a>
 - 以社区的形式来跟踪你的饮食和健身情况。 用户即可以分享他们的健身计划，也可以和他们比拼一下健身情况。</li>
<li><a href="http://www.fitlink.com/" target="_blank">FitLink</a>
 - 一个可以让用户找到和自己有相似健身计划，并且可以一起跟踪实施情况的社区。</li>
<li><a href="http://www.diettv.com/" target="_blank">DietTV.com</a>
 - 跟据专家的建议制定个性化的饮食和健身计划。</li>
<li><a href="http://www.skinnyr.com/" target="_blank">Skinnyr</a>
 - 一个简单的图表工具，用于跟踪并以图表的方式显示你的体重情况。</li>
<li><a href="http://sparkpeople.com/" target="_blank">SparkPeople</a>
 - 一个以健康生活为主题的社交网络，可以分享食谱、健身计划和健康资讯，制定饮食计划，跟踪卡路里和健身情况。</li>
<li><a href="http://fatsecret.com/" target="_blank">FatSecret</a>
 - 分享食谱，对比饮食习惯，提问并跟踪你的进度，并把日记保存到这个网站上。</li>
<li><a href="http://fitday.com/" target="_blank">FitDay</a>
 - 提供一些分析工具长期对你的饮食和瘦身日记进行分析，并且显示取得的效果。</li>
<li><a href="http://www.weightlosswars.com/" target="_blank">WeightLossWars</a>
 - 让大家比拼一下减肥效果。让你仿佛向置身一块减肥游戏，使得在瘦身的过程中得到更多的乐趣和激励。</li>
<li><a href="http://www.thedailyplate.com/" target="_blank">TheDailyPlate</a>
 - 记录着超过100,000种食物的营养信息。跟据你的饮食并且了解你饮食中的优劣。</li>
<li><a href="http://inpowr.com/" targe