﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Java天空 任我翱翔</title><link>http://www.blogjava.net/persister/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 12 May 2026 08:54:58 GMT</lastBuildDate><pubDate>Tue, 12 May 2026 08:54:58 GMT</pubDate><ttl>60</ttl><item><title>UAT测试</title><link>http://www.blogjava.net/persister/archive/2010/11/24/338903.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Wed, 24 Nov 2010 02:55:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/11/24/338903.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/338903.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/11/24/338903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/338903.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/338903.html</trackback:ping><description><![CDATA[UAT，(user acceptance Test),用户接受度测试 即验收测试 　　<br />
<br />
以下是它的一些一般步骤；仅供参考 　　<br />
一步:用户培训手册准备（就是针对要进行UAT测试的对象，及要进行培训的用户，准备一些培训资料：一般是测试对象使用/功能手册及要培训的用户的个人资料等等：就跟教师上课进行备课差不多） 　　<br />
<br />
二步：测试脚本发放（如果你公司采用自动化测试，那么每一个功能或一个模块等都有对应的测试脚本，可以把这些测试脚本分发给特定的人员；如果采用手工测试，就要把详细描述一个功能或模块的文档分给相关人员（当然自动化测试也要分发）） 　　<br />
<br />
三步：用户补充业务测试场景和测试数据（就是：请有代表性的一些最终用户根据实际应用环境及一些常用处理的数据，来给一些补充与建议，越贴近实际应用越好） 　　<br />
<br />
四步：顾问补充测试步骤（你可以请项目专家，测试经理，或专门的测试，开发等顾问对测试步骤进行补充） 　　<br />
<br />
五步：培训资料及测试脚本文档的确定与最终输出(一般到此，各种资料都基本确定，这时可以将它们进行打印，或形成特别的电子文档） 　　<br />
<br />
六步：测试策略的制定（如嵌入测试策略等，） 　　<br />
<br />
七步：测试用户的确定（大体上从培训人员中选取，因为不是每个接受培训的人员都能有资格去测试的，这里你可以通过一些考核来实现人员的筛选等等） 　　<br />
<br />
八步：由专门的测试组织机构确定测试地点，并发出通知 　　<br />
<br />
九步：测试网络环境的搭建和保障（包括网络，系统，硬软件，包括一些case工具等） 　　<br />
<br />
十步：组织进行测试 　　<br />
<br />
十一步：评审分析提交的问题（这就进入了一般bug处理过程，形成了一个循环） 　　<br />
<br />
UAT测试的重点,我想主要体现在以下几个方面 　　<br />
<br />
一是：培训的资料表述要准确全面，易懂等（这是理论基础） 　　<br />
<br />
二是：人员选择，要典型有代表性（用户基础） 　　<br />
<br />
三是：测试流程步骤（要周密） 　　<br />
<br />
四是：测试策略制定（确定一个适合测试对象及测试人员的测试策略） 　　<br />
<br />
五是：问题的表达与处理(因为测试者不是专业开发测试人员，对于问题的表达可能不能到位，或根本就不是那种问题，这就存在如何复现与转化问题等）<br />
<br />
<a href="http://baike.baidu.com/view/1330235.htm">出处：http://baike.baidu.com/view/1330235.htm</a><br />
<img src ="http://www.blogjava.net/persister/aggbug/338903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-11-24 10:55 <a href="http://www.blogjava.net/persister/archive/2010/11/24/338903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TPMC及其相关</title><link>http://www.blogjava.net/persister/archive/2010/11/23/338809.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Tue, 23 Nov 2010 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/11/23/338809.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/338809.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/11/23/338809.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/338809.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/338809.html</trackback:ping><description><![CDATA[今天看开发商的方案建议书里面有提到服务器性能估算的公式，挺感兴趣的，就到网上找了几篇文章，综合了一下，以供以后参考。<br />
<br />
一、什么是TPC和tpmC? <br />
<p><font face="Verdana">　　tpmC值在国内外被广 泛用于衡量计算机系统的事务处理能力。但究竟什么是tpmC值呢?作者曾向一些用户、推销人员乃至某些国外大公司的技术人员问过这个问题，但回答的精确度与tpmC值的流行程度远非相称。tpmC这一度量也常被误写为TPM或TPMC。 </font></p>
<br />
<p><font face="Verdana"><strong>　　1、TPC</strong> </font></p>
<br />
<p><font face="Verdana">　　TPC(Transaction Processing Performance Council，事务处理性能委员会)是由数10家会员公司创建的非盈利组织，总部设在美国。该组织对全世界开放，但迄今为止，绝大多数会员都是美、日、西欧的大公司。TPC的成员主要是计算机软硬件厂家，而非计算机用户，它的功能是制定商务应用基准程序(Benchmark)的标准规范、性能和价格度量，并管理测 试结果的发布。 <br />
</font><font face="Verdana"><br />
　　TPC的出版物是开放的，可以通过网络获取。TPC不给出基准程序的代码，而只给出基准程序的标准规范(Standard Specification)。任何厂家或其它测试者都可以根据规范，最优地构造出自己的系统(测试平台和测试程序)。为保证测试结 果的客观性，被测试者(通常是厂家)必须提交给TPC一套完整的报告(Full Disclosure Report)，包括被测系统的详细配置、分类价格和包含五年维护费用在内的总价格。该报告必须由TPC授权的审核员核实(TPC本身并不做审计)。现在全球只有几 个审核员，全部在美国。 </font></p>
<br />
<p><font face="Verdana"><strong>　　2、tpmC</strong> </font></p>
<br />
<p><font face="Verdana">　　TPC已经推出了四套基准程序，被称为TPC－A、TPC－B、TPC－C和TPC－D。其中A和B已经过时，不再使用了。TPC－C是在线事务处理(OLTP)的基准程序，TPC－D是决策支持(Decision Support) 的基准程序。TPC即将推出TPC－E，作为大型企业(Enterprise)信息服务的基准程序。 </font></p>
<br />
<p><font face="Verdana">　　TPC－C模拟一个批发商的货物管理环境。该批发公司有N个仓库，每个仓库供应10个地区，其中每个地区为3000名顾客服务。在每个仓库中有10个终端，每一个终端用于一个地区。在运行时，10&#215;N个终端操作员向公司的数据库发出5类请求。由于一个仓库中不可能存储公司所有的货物，有一些请求必须发往其它仓库，因此，数据库在逻辑上是分布的。N是一个可变参数，测试者可以随意改变N，以获得最佳测试效果。 <br />
<br />
　　TPC－C使用三种性能和价格度量，其中性能由TPC－C吞吐率衡量，单位是tpmC。tpm是transactions per minute的简称；C指TPC中的C基准程序。它的定义是每分钟内系统处理的新订单个数。<br />
<br />
tpmc作为服务器一项重要指标，是可以查询到的，这样就可以根据估算出来的tpmc去选择相应的服务器了。<br />
<br />
<br />
具体计算参考如下文章：<br />
http://blog.csdn.net/seeseasing/archive/2009/02/25/3935317.aspx<br />
</font></p>
<img src ="http://www.blogjava.net/persister/aggbug/338809.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-11-23 15:47 <a href="http://www.blogjava.net/persister/archive/2010/11/23/338809.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>磁盘上没有足够的空间完成此操作</title><link>http://www.blogjava.net/persister/archive/2010/11/13/337984.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Sat, 13 Nov 2010 06:28:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/11/13/337984.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/337984.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/11/13/337984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/337984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/337984.html</trackback:ping><description><![CDATA[<p>windows7系统 磁盘分区时显示&#8220;磁盘上没有足够的空间完成此操作&#8221; <br />
<br />
不用下载软件或者重启之类的方法！<br />
<br />
1.Windows键+R，打开运行对话框，键入：diskpart </p>
<p>进入Windows 自带的磁盘管理程序进入DOS窗口：DISKPART&gt; </p>
<p>2.键入： list disk 选择查看该电脑下已连接的硬盘，会显示如下： <br />
<br />
磁盘 ### 状态 大小 可用 Dyn Gpt <br />
-------- ---------- ------- ------- --- --- <br />
磁盘 0 联机 112 GB 29 GB </p>
<p>3.键入：select disk 0 这时注意你要键入分哪个硬盘的区，如果只有1个就直接键入select disk 1</p>
<p>4.键入：conver dynamic 使该硬盘变成动态状态！这个最关键了，按回车后去Windows那个分区管理界面会看到原来的绿色、蓝色分会变成棕色 </p>
<p>5.在Windows那个分区管理界面按你原来的正常操作就可正常分区了 </p>
<img src ="http://www.blogjava.net/persister/aggbug/337984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-11-13 14:28 <a href="http://www.blogjava.net/persister/archive/2010/11/13/337984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>信息系统安全问题</title><link>http://www.blogjava.net/persister/archive/2010/11/02/336764.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Tue, 02 Nov 2010 01:52:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/11/02/336764.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/336764.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/11/02/336764.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/336764.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/336764.html</trackback:ping><description><![CDATA[这个是网上看到的，窃以为非常不错，但原创已经找不到，见谅。<br />
<br />
<br />
今年以来，我国股市接连受到重挫，造成了部分股民的不满，同时也出现了针对证券公司进行网络攻击的恶性事件。因此，证监会组织了对全国证券业的安全大检
查。笔者因为工作原因，参与并负责了几个大型证券公司的安全检查。检查的从体情况来看，有喜有忧。喜的是证券业前几年行情不好，一直没有资金进行充分的
IT基础建设，造成IT建设欠债太多，但最近两年已经迎头赶上，并且证券业创新产品层出不穷。忧的是这两年券商的IT部门一直被赶着做事情，又造成对信息
安全问题重视不够，出现了很多新的风险，尤其在当前股市震荡的情况下，威胁越来越大。它山之石可以攻玉，对于各个行业的安全管理员来说，保障信息安全是一
个任重而道远的工作。本文基于在证券业安全问题上的一些经验和思考，希望也能够给其他行业的安全管理员提供帮助。<br />
整个安全大检查从几个方面进行了审查，包括网站安全、物理安全、网络安全、系统安全和管理安全。<br />
一、网站安全<br />
证监会组织了人手对所有券商的网站进行了渗透测试(模拟黑客攻击的方法对网站攻击，但不做破坏性举动)，虽然最后证监会没有公布网站渗透测试的结果，
但就笔者负责的4个券商安全检查来看，全部都被攻陷，被攻陷的方法全都是sql注入，并且还发现了源代码泄露、跨站漏洞等问题。所幸的是，经过检查，没有
发现这几个网站被人入侵过或者有什么远程后门。总的来看，大家对安全补丁、系统自身的加固都很重视，没发现什么明显疏忽，但是在WEB的安全编程上还做得
远远不够。究其原因，由于券商自身不具备网站开发能力，网站开发都是外包来做，而外包公司在程序的代码审核上做的远远不够，代码中可能的漏洞有溢出漏洞、
跨站脚本漏洞、SQL注入漏洞等，还有一些因为程序设计不周到而导致的信息泄露问题也应该得到重视，这些漏洞本身可能没什么大的威胁，但非常有助于攻击者
利用其他漏洞进行攻击。当前总体的网络安全状态是基于操作系统本身漏洞的入侵已经没有大的增加，而由于应用系统的复杂性和特异性，基于应用的入侵已大幅度
增加，所以在这方面还有许多需要加强的工作。<br />
从证券业的网站安全来看，入侵甚至在C盘根目录上写入文件，都不是什么难事。笔者在其他一些行业的评估中，也发现同样问题的存在，并且今年的安全形势
报告中也提到，仅在5月份，全国就有12万网站受到sql注入式的攻击。因此可见，面对新型的攻击手段，安全部门响应速度迟缓。网站是一个企业的门面，如
果网站被篡改，带来的负面影响会很大，加强网站的安全防护，应是当务之急。<br />
<br />
二、物理安全<br />
物理安全作为信息安全的基础，在整个信息安全体系建设中扮演着非常重要的作用，而物理安全的好坏直接影响到网络安全、系统安全和安全管理等等层面。对
于券商来说，机房是生产的核心工具，这几年来，管理层对此也不断提出要求，目前看来，硬件环境已经比较可靠，空调、湿度控制、防火、区域标识等相对完善，
但与之相对应的软件环境却不甚乐观。比如普遍存在的：<br />
2.1 环境<br />
机房进出控制等级没有严格执行，流于形式;<br />
门禁系统虽有，但时常进出没有随手关门;<br />
进出人员所做重大操作没有记录;<br />
第三方人员进入机房没有明显的可视标识，不能立即识别出无人护送的访问者和未佩戴可视标识的人。<br />
2.2 设备<br />
网络设备、主机设备没有有效的标记措施，对资产的界定不清晰;<br />
重要的主机设备没有防盗报警措施;<br />
由于券商在不断地上新项目，经常需要调整网络，网线和电缆的普遍走线比较乱，很多网线、电缆都没有可识别的记号。<br />
2.3 介质<br />
对移动存储设备没有实行有效管理，各服务器的USB口都是开放状态。<br />
没有对移动存储设备上的敏感数据彻底删除或安全重写。<br />
这些问题在很多公司机房都普遍存在，甚至比证券业要差很多。安全不仅仅是网络安全，更是一个整体的木桶，任何的短板都会导致前功尽弃，加强对物理环境的管控应是踏踏实实要做好的事情，这种管控也不仅仅是在硬环境上，更重要的还在软环境上。<br />
<br />
三、网络安全<br />
近年来证券整体行业效益不错，因此在网络上投入很大，起点较高，并且由于券商大多数都是跨地域的，整个IP地址的规划也都比较合理，具有连续性，能够
与网络拓扑层次结构相适应，便于进行管理。作为网络建设重要规范性之一的可靠性建设也受到很大重视，针对故障恢复、承载能力以及安全配置均充分考虑了关键
网络设备和重要链路的可靠性建设：通过交换机之间Trunk互联和专用负载均衡设备，实现动态的冗余热备和流量分担，有效提高了网络的可靠性和可用性。对
于重要的主机设备同样部署了完善的链路和设备双备份，通过双归属方式的互联和采用主备设备的方式，可确保一旦出现问题可以实现快速的切换，把对业务的不利
影响降低。同时在交换机上根据业务的需要划分了相应的VLAN，通过二层隔离有效杜绝了蠕虫病毒的扩散和广播、组播数据流的防洪，提高了网络的安全和承载
效率，确保网络系统具有了良好的扩展性和健壮性。<br />
但是安全问题也总是伴随着网络建设而来，创新业务不断出现也要求对外的接口越来越多，例如对各个银行、上交所、深交所的接口。在出口很多的问题下需要认真对待各出口的分界线控制，这方面，已经有很多机构提出了安全域架构的方法，在实践中也取得了认可。<br />
再有就是对网络保密的情况考虑不足，在这方面银行走在了前面，对链路都是由加密机来加密。券商对此尚没有顾及，关键的业务数据在传输时zheng没有
加密手段，可能被监听泄露。据笔者和各信息部门老总交流的情况看，也并不是没有考虑，他们担心加密以后对网络的实时性造成影响，而且券商内跑的应用很多，
业务系统与加密机的配合会不会出问题，再者，券商的网络多是专线连接，被窃听的可能并不很大。我承认，老总们的担忧很有道理，在现有技术情况下，如何进行
无障碍的链路加密?这也是咱们国内的安全厂家应该去深入研究的课题。<br />
还有一方面就是对网络的管理：目前的网络设备基本都具备日志功能，但是由于人手不足，业务繁忙，管理粗放都很多原因，并没有人去定期核查这些日志信
息，也没有专用终端记录处理日志，这会造成即使已经被攻击了，管理人员仍然不知道。并且在网络管理上没有指定专用终端操作，为了方便很多机器都可以连上去
更改配置。<br />
<br />
四、系统安全<br />
券商核心业务系统多是LINUX、HP-UX等，这些系统流行面较窄，精通该类系统的人不多，且由于系统的不兼容性使得受攻击的可能性大大降低。但同
时，也由于大家都不精通，系统上发现的一些已知的安全补丁都没打，不是不知道安全漏洞，而是因为不敢做，做了以后会对应用产生什么样的影响大家都不知道。
这种情况在很多行业都存在，比如近期我接触过的一个煤矿有个瓦斯监控系统，1分钟都不能停。这种形势下，就要求对核心生产设备做足够的外围安全防护。<br />
还有一个老生常谈的话题就是口令安全，网络设备口令、操作系统口令、应用系统口令、数据库口令等等，实际对口令的管理和要求始终会有差别。在调研中，
我们也和老总们谈过，大家都说：我们都知道口令的管理，也知道怎么加强，但在实际中要考虑证券公司的特殊性，例如报盘系统登陆易所，20多个席位要登录，
有一次系统意外重启，我们每个席位口令都很长，够复杂，结果手忙脚乱地往里面登录，一边看一边敲，敲错了还要重来，最后都搞好，半个小时过去了，所以这种
安全手段在证券公司没法考虑的。<br />
非核心业务的其他终端设备受系统升级和疏于管理等问题，普遍存在着非常多的高风险漏洞，甚至包括操作系统级的弱口令。不过目前对证券业来说，基本都做到了业务的主辅分离，所以威胁有，但不是很大。既便如此，非核心系统也应给以更多的关注。<br />
<br />
五、安全管理<br />
三分技术七分管理，技术是实现的手段，真正要想做到安全，管理上一定要下很大的功夫。<br />
5.1安全策略<br />
相关的管理制度各个券商都有不少，而且也在不断完善修订。但从整个制度规范颁布后执行情况来看，其效果并不是很好，主要问题表现在：可操作性差，甚至
很多条款没有奖惩措施，这样可能导致员工很难理解或记住这些管理性要求，最终执行不起来;针对性差，一份安全管理制度汇编针对了全公司的信息技术人员，不
能有效的区分管理角色和对象，从而最终导致制度面太广而无法实施;某些安全要求深度不够，导致在某些方面的安全管理执行力度不够;由于很多安全制度并没有
被太多的人认可和执行，因此就无法对公布的制度进行回顾审计，检查和修改其中不合适的地方。<br />
还存在着另一个普遍问题，缺乏一套高层的安全策略体系来指导安全管理，最终导致安全工作难以条理化，一方面会造成部分工作的遗漏，另一方面会出现重
叠，甚至会出现哪出问题哪出制度的被动局面。安全策略应该建立比较明确、全面的安全规范要求，并确定各策略的制定、维护、变更等管理方面的策略。安全管理
制度是建立在公司统一安全策略的基础之上，为公司推行统一的安全要求的一种形式。没有安全策略指导的安全管理制度只能是片面性，可操作性差、难以推广和执
行。<br />
5.2安全组织<br />
在安全组织上，各券商都比较重视，都实现了&#8220;统一领导，分布管理&#8221;的安全管理体系，建立了安全管理岗位，建立了信息技术人员的岗位职责。在这次检查结束之后，证监会也发布了行业的IT治理指引，明确了安全组织的要求。<br />
5.3资产分类与控制<br />
随着业务资产的不断增加，很多安全管理问题均归到了资产管理问题上。但是，很多人还没有意识到资产分类控制的重要性，没有对公司内部对公司资产进行整理。存在如下问题：<br />
1.没有对所有业务应用系统及资产设备进行安全属性定义，没有明确需要较高安全保护等级的系统和设备，因此很难提高管理人员的安全重视程度;<br />
2.缺乏一套对资产管理清单的维护审计机制，没有专人负责对新增设备、变更设备等管理信息进行及时更新，导致很多安全事件由此产生;<br />
3.缺乏一套对资产变更、系统变更的审计机制，管理人员对较大的变更情况不做记录，在后期可能会造成很多不必要的麻烦;<br />
4.缺乏对设备的保管、使用登记和报废方面的管理，对重要的设备只有出了事故以后才进行保养和维护，而且没有建立维护记录。<br />
5.对各种技术资产及业务资料没有实现密级管理，很多机密资料的借阅、复制、打印、销毁等方面的管理制度很不完善，执行更不严格。部分员工安全意识较差，所有的技术资料放到办公桌上，很容易被第三方合法进入公司的人进行翻阅查看。<br />
5.4人员安全<br />
券商在安全岗位建设方面普遍非常重视，建立了技术岗位职责，对各技术岗位有相应的岗位说明。在系统管理方面根据不同的业务应用系统设置了不同数量的系
统管理员，他们在保证应用系统的正常运行的同时，也身兼对这些主机的安全管理。由于各种安全事件发生后可能的影响面巨大，也都明确了安全事件发生后的快速
报告流程。<br />
尽管如此，在人员安全上，存在着较多的问题：<br />
1.内部系统管理岗位人员不足，很多系统管理员负责多个重要的应用系统，过多的工作量很可能造成操作失误情况，更容易造成安全管理的疏忽;<br />
2.内部安全管理岗位人力不足，由于券商组织结构和信息网络的庞大性特点，安全管理员不能全权、有效地形成对整个公司自上到下、自本部门至全公司的安全管理;<br />
3.没有将公司资产的安全管理责任定义到个人，特别是普通员工办公机的安全性，很多安全事件的发生不能明确责任，入职说明岗位也没有定义管理员的责任和义务，因此不利于促进和推动安全管理工作的执行;<br />
4.管理员岗位权职不明确，有些工作交叉的任务经常被互相推卸，管理员的权限没有实现&#8220;权限最小化&#8221;原则，也没有对这些权限较高管理员的审核，使得内部管理员滥用授权的隐患时刻存在;、<br />
5.很多员工技术能力有限，某些技术故障和安全事件的发生可能是由于操作失误造成的，而提供对信息技术人员进行安全技术培训的机会较少，也没有技术或任职资格考试的督促机制，使得内部员工安全意识较差，从而造成安全事故的可能性增大;<br />
6.对信息的保密重视不足，在信息技术人员应聘进公司时签订的合同中没有安全保密条款，尤其是没有针对某些涉密较高岗位制定具体的保密协议。<br />
7.在信息技术人员办理离岗手续方面缺乏明确的制度和流程<br />
8.没有明确的安全管理员和安全审计员角色，所以对网络和系统的管理员所设定的访问权限及日常行为没有进行过安全审计。<br />
5.5物理环境安全<br />
机房的建设都有标准化的规范，物理环境也大都符合相关安全要求，机房具有防火、防水、防雷等设备，并均采用双路供电，配备了UPS电源。在非本公司员工进入机房时，要求进行出入登记记录，操作记录。<br />
但在机房管理方面还存在以下的问题：<br />
1.中心机房有电子门禁系统，但有时没有做到进出时马上关门。<br />
2.机房没有设置保安管理制度。<br />
3.机房的出入管理不严格，没有严格执行非工作人员必须经过安全责任人许可才可以进入机房的管理规定。<br />
4.机柜和主机没有要求在运行中上锁，以防止外来人员误操作，对主机没有采取对输入输出设备的控制。<br />
5.6通信与操作安全<br />
证监会要求关键业务有备份链路，对各种网络设备的配置数据、用户数据进行定期备份。各券商做的都很好。但在管理过程中，还存在以下的问题：<br />
1.技术维护人员没有定期对重要服务器和路由器以及防火墙等设备的安全配置、CPU、内存占用率等进行审计和检查<br />
2.主要的网络设备和主机均没有定期维护制度<br />
3.对网络设备和主机的远程管理没有使用固定的管理终端。<br />
4.目前没有对系统进行定期的安全漏洞扫描工作，某些主机考虑到影响业务原因没有定期对系统的补丁进行修补和加固。<br />
<br />
六、总结<br />
6.1安全意识<br />
针对证券行业信息系统网络现状而言，由于发展较快，网络规模较大，对信息系统安全很高，系统的安全状况应成为企业网络关注的重点。在把资金都投在了应
用系统建设的同时，不能忽视了信息安全保障投资。在员工的安全意识方面，没有建立长期、系统、有效的安全意识、专业素质、安全管理、服务水平的培训。同
时，在责任划分上不够明确，缺乏奖惩机制。因此，提高领导、员工的安全意识是当务之急。<br />
6.2整体安全方案<br />
各券商在安全方面，也投入了一些设备，但总的来说，安全思路仍需拓宽。比如在渗透测试中普遍发现的问题。在防火墙的设置上，也有不足。口令安全、配置
安全上的工作也不够完善。没有定期分析日志发现异常，安全制度不完善，如此等等。说到底就是缺乏一套整体安全方案，一个没有整体安全规划的系统，安全是肯
定没有保障的。<br />
6.3系统安全<br />
主要是没有安全地安装配置、用户和目录权限设置及建立适当的安全策略等系统安全处理加固。例如：没有打安全补丁、安装时为方便使用简单口令、默认口
令，而后来又不更改、没有进行适当的目录和文件权限设置、没有进行适当的用户权限设置、打开了过多的不必要的服务、没有对自己的应用系统进行安全检测等
等。事实上系统和应用大多是由系统集成商来完成的，但系统集成商的做法往往是最大化安装，以方便安装调试，把整个系统调通就算完成了任务，会留下很多的安
全隐患;而安全却恰恰相反，遵循最小化原则，要求没必要的东西一定不要，有必要的也要严加限制使用。这和系统集成好像构成了一个矛盾，事实上却不是，最小
化原则实际上降低了系统负荷、提高了应用系统的性能，增强了安全性，而问题在于大多数集成商不具备专业安全设计和防范能力。<br />
6.4安全管理机制<br />
安全和管理是分不开的，即便有好的安全设备和系统，没有一套好的安全管理方法并贯彻实施，值得注意的是这里强调的不仅要有安全管理方法，而且还要贯彻
实施，否则安全就是空谈。安全管理的目的在于两点：一是最大程度地保护网络，使得其安全地运行，再就是一旦发生黑客事件后能最大程度地挽回损失。所以建立
定期的安全检测、口令管理、人员管理、策略管理、备份管理、日志管理等一系列管理方法和制度，并严格贯彻执行，与奖惩制度的联动是非常必要的。<br />
6.5动态安全<br />
在这次安全大检查以后，经过专业网络安全设计整改，即进行了安全网络拓朴和路由、安全网络系统设计、安全产品防护、安全系统处理和整体安全检测等安全
处理后，系统的安全是有保障的。但需要指出的是安全是相对的，因为随着操作系统和应用系统漏洞的不断发现以及口令很久没有更改等情况的发生，整个系统的安
全性就受到了威胁，这时候若不及时进行打安全补丁或更换口令就很可能被一直在企图入侵却未能成功的黑客轻易攻破。所以，安全是相对的，是动态的，只有及时
对系统安全问题进行跟踪解决，定期整体安全评估，及时发现问题并解决，才能确保系统具有良好的安全性。<br />
6.6人才培养<br />
在这次检查中，我们也注意到，绝大部分的主机、网络情况都只有个别人了解。这与证券业迅猛发展的信息技术规模是不相适应的。券商也应在下一步的工作中，积极发掘、培养安全方向上的专业人才，注重培训和锻炼，同时也应尽力保证人才的稳定性。<br />
<br />
<br />
<img src ="http://www.blogjava.net/persister/aggbug/336764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-11-02 09:52 <a href="http://www.blogjava.net/persister/archive/2010/11/02/336764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OFBiz的MVC框架</title><link>http://www.blogjava.net/persister/archive/2010/08/27/253196.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Fri, 27 Aug 2010 14:32:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/08/27/253196.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/253196.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/08/27/253196.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/253196.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/253196.html</trackback:ping><description><![CDATA[<p>OFBiz是一个非常强大的企业架构体系，这里只描述它MVC方面的内容，从MVC的角度去看，OFBiz采用的是<a style="color: #0000ff;" href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/ServiceToWorker.html">Service to Worker</a>模式，大名鼎鼎的<a href="http://struts.apache.org/">Struts 1</a>采用的也是这种架构。Service to Worker模式的目标就是维护Action，View和Controller之间的分离。<br />
<br />
<strong>Controller</strong></p>
<p>ControlServlet是<a href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/FrontController.html">Front Controller</a>，
接收所有的请求，是请求的入口，执行一些的预备处理后，交由RequestHandler去处理实际的请求工作，View层的处理交给
ViewHandler进行处理，ViewHandler有很多实现类，还可以自定义，可以集成很多页面层显示技术，如JSP和FreeMarker等，
处理流程如下图所示：<br />
</p>
<img alt="" src="http://www.blogjava.net/images/blogjava_net/persister/untitled2.JPG" width="527" height="188" /><br />
<p>MVC的解耦的地方就是通过controller.xml配置文件实现的，配置文件如下所示：</p>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">request-map&nbsp;</span><span style="color: #ff0000;">uri</span><span style="color: #0000ff;">="login"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">security&nbsp;</span><span style="color: #ff0000;">https</span><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;">&nbsp;auth</span><span style="color: #0000ff;">="false"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">event&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="java"</span><span style="color: #ff0000;">&nbsp;path</span><span style="color: #0000ff;">="com.xxx.ldap.LdapLoginWorker"</span><span style="color: #ff0000;">&nbsp;invoke</span><span style="color: #0000ff;">="login"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">response&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="success"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="view"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="main"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">response&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="error"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="view"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="login"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">request-map</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">view-map&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="main"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="screen"</span><span style="color: #ff0000;">&nbsp;page</span><span style="color: #0000ff;">="component://xxx/widget/CustomerScreens.xml#main"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">view-map&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="login"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="screen"</span><span style="color: #ff0000;">&nbsp;page</span><span style="color: #0000ff;">="component://xxx/widget/CommonScreens.xml#login"</span><span style="color: #0000ff;">/&gt;</span></div>
<p>request-map的response元素有一个属性name，这个name理论上可以任意选取，不过OFBiz内置了success和
error这两个值，这类似于Struts
2。属性type如果是view表示得到一个页面，value值对于view-map中的name属性值。之所以不直接写上页面，而是增加view-
map，一是为了解耦，二是针对不同的view，可以设置不同的type等属性。type属性很关键，正是这个属性帮助OFBiz集成不同的显示层技术。
common-controller定义了不同的type和其对应的ViewHandler：</p>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;view&nbsp;handlers&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">handler&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="screen"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="view"</span><span style="color: #ff0000;">&nbsp;class</span><span style="color: #0000ff;">="org.ofbiz.widget.screen.ScreenWidgetViewHandler"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">handler&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="screenfop"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="view"</span><span style="color: #ff0000;">&nbsp;class</span><span style="color: #0000ff;">="org.ofbiz.widget.screen.ScreenFopViewHandler"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">handler&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="screenxml"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="view"</span><span style="color: #ff0000;">&nbsp;class</span><span style="color: #0000ff;">="org.ofbiz.widget.screen.ScreenXmlViewHandler"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">handler&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="screentext"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="view"</span><span style="color: #ff0000;">&nbsp;class</span><span style="color: #0000ff;">="org.ofbiz.widget.screen.ScreenTextViewHandler"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">handler&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="jsp"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="view"</span><span style="color: #ff0000;">&nbsp;class</span><span style="color: #0000ff;">="org.ofbiz.webapp.view.JspViewHandler"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">handler&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="ftl"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="view"</span><span style="color: #ff0000;">&nbsp;class</span><span style="color: #0000ff;">="org.ofbiz.webapp.ftl.FreeMarkerViewHandler"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">handler&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="http"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="view"</span><span style="color: #ff0000;">&nbsp;class</span><span style="color: #0000ff;">="org.ofbiz.webapp.view.HttpViewHandler"</span><span style="color: #0000ff;">/&gt;</span></div>
<p>这里的name就对应view map中的type。实现解耦的类不是Front
Controller而是RequestHandler，请求代理类，在这里负责读取controller.xml文件中的对应关系，根据Front
Controller发送过来的请求，选择相应的业务动作进行业务更新，并且选择相应的视图View去解析并展示。在Service to
Worker模式中，RequestHandler类的角色就是Dispatcher。<br />
</p>
<p><br />
</p>
<strong>View</strong><br />
OFBiz支持很多类型的页面展示技术，JSP/FreeMarker/Velocity/PDF/Widget等。OFBiz最常用的就是Widget和<a href="http://www.freemarker.org/">FreeMarker</a>。Widget是OFBiz自己特有的页面技术，好处就是可以不用写任何html和css代码就可以得到一个统一的完整的页面，展示的业务数据也可以轻松的获取。缺点是：不像FreeMarker是一个纯页面技术，从request和session中得到业务数据，然后直接将其展示处理。Widget技术将业务数据获取和业务数据展示混在一起，后台开发人员和页面设计人员不能合作分工，甚至只有后台设计人员才能开发OFBiz应用。OFBiz之所以设计自己的页面技术，与OFBiz实现ERP/CRM复杂的业务系统时分不开的。ERP/CRM业务系统复杂多变，模块众多。什么样的框架能够满足这样的系统呢：一是适应业务变化，第二适合快速开发，第三页面风格能够一致。OFBiz就是这样的框架，entity添加减少一个字段，在OFBiz中只需要在entitymodel中做修改，在输入页面，显示页面，修改页面都不用做任何的修改就可以看到变化，而且业务逻辑模块也不用修改就可以对变化的字段进行维护，非常的Easy。OFBiz适合快速开发，熟悉了OFBiz开发的人员，开发一个Customer模块，对用户进行增删改和复杂的查询，一个小时足够，够快了吧。由于不直接操作html和css代码，使用OFBiz开发的各个模块都长得一样，这是很多设计人员期望的。言归正传，还是从技术上分析View的设计。前面说了通过实现ViewHandler接口，OFBiz集成了不同的页面技术以供选择。相关的类关系图如下：<br />
<br />
<strong>View Handler:</strong><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/persister/viewhandler.JPG" width="650" height="357" /><br />
<br />
ViewHandler负责选择相应的Renderer，进行页面显示的准备工作,对于简单的页面技术如JSP，JspViewHandler直接进行处理，不再委托给其他Renderer进行处理。AbstractViewHandler的子类中，包含Screen字眼的Handler通常相对较复杂，见上图中下面哪些Handler，典型的是ScreenWidgetViewHandler。<br />
<br />
<strong>View Renderer:</strong><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/persister/renderer.JPG" width="581" height="489" /><br />
<br />
Renderer负责具体的显示工作。<br />
<br />
<br />
未完待续<br />
<br />
<br />
<br />
<p><strong><br />
</strong></p>
<strong> </strong>
<img src ="http://www.blogjava.net/persister/aggbug/253196.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-08-27 22:32 <a href="http://www.blogjava.net/persister/archive/2010/08/27/253196.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Session原理和Tomcat实现分析</title><link>http://www.blogjava.net/persister/archive/2010/08/24/329838.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Tue, 24 Aug 2010 14:38:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/08/24/329838.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/329838.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/08/24/329838.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/329838.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/329838.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这篇文章挖掘Session的原理和tomcat实现机制。 &nbsp;&nbsp; 由于HTTP是无状态的协议，客户程序每次都去web页面，都打开到web服务器的单独的连接，并且不维护客户的上下文信息。如果需要维护上下文信息，比如用户登录系统后，每次都能够知道操作的是此登录用户，而不是其他用户。对于这个问题，存在三种解决方案：cookie，url重写和隐藏表单域。1、cookie&...&nbsp;&nbsp;<a href='http://www.blogjava.net/persister/archive/2010/08/24/329838.html'>阅读全文</a><img src ="http://www.blogjava.net/persister/aggbug/329838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-08-24 22:38 <a href="http://www.blogjava.net/persister/archive/2010/08/24/329838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL排序并且将记录变成列的问题</title><link>http://www.blogjava.net/persister/archive/2010/08/17/329086.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Tue, 17 Aug 2010 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/08/17/329086.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/329086.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/08/17/329086.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/329086.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/329086.html</trackback:ping><description><![CDATA[公司前段时间碰到如下的报表需求：<br />
<br />
查询某个用户购买金额最大的前三条记录，如下：<br />
<br />
customer   price<br />
A          1000<br />
A           888<br />
A          333<br />
B          12222<br />
B          12000<br />
C          3000<br />
C          2000<br />
<br />
然后需要通过SQL将其变成四个字段<br />
&nbsp;      &nbsp; <br />
Customer price1 price2 price3<br />
A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1000&nbsp;&nbsp;   888&nbsp;&nbsp;&nbsp;    333<br />
B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        12222&nbsp;  12000<br />
C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        3000&nbsp;&nbsp;   2000<br />
<br />
这个问题牵涉到两个问题，一个取前N位的SQL，另一个将行记录怎么变成列字段。<br />
<br />
第一个问题好解决：<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;a.customer,a.price,</span><span style="color: #ff00ff;">count</span><span style="color: #000000;">(b.price)&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;rn<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;pt&nbsp;a&nbsp;</span><span style="color: #0000ff;">join</span><span style="color: #000000;">&nbsp;pt&nbsp;b&nbsp;</span><span style="color: #0000ff;">on</span><span style="color: #000000;">&nbsp;a.customer</span><span style="color: #808080;">=</span><span style="color: #000000;">b.customer&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;">&nbsp;a.price</span><span style="color: #808080;">&lt;=</span><span style="color: #000000;">b.price&nbsp;<br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">groupby&nbsp;a.customer,a.price;</span></div>
<pre>结果：<br />
+----------+-------+----+<br />
| customer | price | rn |<br />
+----------+-------+----+<br />
| A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 333 |&nbsp; 3 |<br />
| A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 888 |&nbsp; 2 |<br />
| A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 1000 |&nbsp; 1 |<br />
| B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 12000 |&nbsp; 2 |<br />
| B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 12222 |&nbsp; 1 |<br />
| C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 2000 |&nbsp; 2 |<br />
| C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 3000 |&nbsp; 1 |<br />
+----------+-------+----+</pre>
然后就是将行记录变成列字段，这里采用if判断关键字，对上面的查询结果进行如下操作：<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">customer,&nbsp;(</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(rn</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">,price,</span><span style="color: #ff0000;">''</span><span style="color: #000000;">))&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;price1,&nbsp;(</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(rn</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">,price,</span><span style="color: #ff0000;">''</span><span style="color: #000000;">))&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;price2,&nbsp;<br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">(</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(rn</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">3</span><span style="color: #000000;">,price,</span><span style="color: #ff0000;">''</span><span style="color: #000000;">))&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;price3&nbsp;</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;a；</span></div>
<br />
执行结果如下所示：<br />
<pre>+----------+--------+--------+--------+<br />
| customer | price1 | price2 | price3 |<br />
+----------+--------+--------+--------+<br />
| A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 143.20 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
| A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 99.99&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
| A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 49.99&nbsp; |<br />
| B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 63.92&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
| B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 33.99&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
| C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 99.99&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
| C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 24.10&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
+----------+--------+--------+--------+</pre>
<span style="color: #0000ff;">针对这个执行结果执行如下的sql既可以得到我们期望的结果了：<br />
<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;customer,<br />
</span><span style="color: #ff00ff;">max</span><span style="color: #000000;">(</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(rn</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">,price,</span><span style="color: #ff0000;">''</span><span style="color: #000000;">))&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;price1,<br />
</span><span style="color: #ff00ff;">max</span><span style="color: #000000;">(</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(rn</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">,price,</span><span style="color: #ff0000;">''</span><span style="color: #000000;">))&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;price2,<br />
</span><span style="color: #ff00ff;">max</span><span style="color: #000000;">(</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(rn</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">3</span><span style="color: #000000;">,price,</span><span style="color: #ff0000;">''</span><span style="color: #000000;">))&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;price3<br />
</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;(<br />
</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;a.customer,a.price,</span><span style="color: #ff00ff;">count</span><span style="color: #000000;">(b.price)&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;rn<br />
</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;pt&nbsp;a&nbsp;</span><span style="color: #0000ff;">join</span><span style="color: #000000;">&nbsp;pt&nbsp;b&nbsp;</span><span style="color: #0000ff;">on</span><span style="color: #000000;">&nbsp;a.customer</span><span style="color: #808080;">=</span><span style="color: #000000;">b.customer&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;">&nbsp;a.price</span><span style="color: #808080;">&lt;=</span><span style="color: #000000;">b.price&nbsp;<br />
groupby&nbsp;a.customer,a.price&nbsp;)k<br />
groupby&nbsp;customer;</span></div>
<br />
<pre><span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">--------+--------+--------+--------+</span><span style="color: #008080;"><br />
</span><span style="color: #808080;">|</span><span style="color: #000000;"> customer </span><span style="color: #808080;">|</span><span style="color: #000000;"> price1 </span><span style="color: #808080;">|</span><span style="color: #000000;"> price2 </span><span style="color: #808080;">|</span><span style="color: #000000;"> price3 </span><span style="color: #808080;">|</span><span style="color: #000000;"><br />
</span><span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">--------+--------+--------+--------+</span><span style="color: #008080;"><br />
</span><span style="color: #808080;">|</span><span style="color: #000000;"> A        </span><span style="color: #808080;">|</span><span style="color: #800000; font-weight: bold;">1000</span><span style="color: #808080;">    |</span><span style="color: #800000; font-weight: bold;">888</span><span style="color: #808080;">    |</span><span style="color: #800000; font-weight: bold;">333    </span><span style="color: #808080;">|</span><span style="color: #000000;"><br />
</span><span style="color: #808080;">|</span><span style="color: #000000;"> B        </span><span style="color: #808080;">|</span><span style="color: #800000; font-weight: bold;">12222</span><span style="color: #808080;">   |</span><span style="color: #800000; font-weight: bold;">12000</span><span style="color: #808080;">  |</span><span style="color: #808080;">        |</span><span style="color: #000000;"><br />
</span><span style="color: #808080;">|</span><span style="color: #000000;"> C        </span><span style="color: #808080;">|</span><span style="color: #800000; font-weight: bold;">3000</span><span style="color: #808080;">    |</span><span style="color: #800000; font-weight: bold;">2000</span><span style="color: #808080;">   |</span><span style="color: #808080;">        |</span><span style="color: #000000;"><br />
</span><span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">--------+--------+--------+--------+<br />
</span><span style="font-family: Batang; color: #008000; font-weight: bold;"><br />
<br />
</span>上面的记录中，价格没有重复的情况，如果有重复的，那么上面的结果方案是不行的，下面是一个办法：<br />
<span style="color: #008080;"><br />
1</span>&nbsp;<span style="color: #000000;">createtable&nbsp;pt(customer&nbsp;</span><span style="color: #000000; font-weight: bold;">varchar</span><span style="color: #000000;">(</span><span style="color: #800000; font-weight: bold;">19</span><span style="color: #000000;">),price&nbsp;</span><span style="color: #000000; font-weight: bold;">int</span>);<br />
</pre>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #000000;">
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #0000ff;">insert</span><span style="color: #000000;">&nbsp;pt&nbsp;</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #ff0000;">'</span><span style="color: #ff0000;">A</span><span style="color: #ff0000;">'</span><span style="color: #000000;">,</span><span style="color: #800000; font-weight: bold;">1000</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">union</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">all</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #ff0000;">'</span><span style="color: #ff0000;">A</span><span style="color: #ff0000;">'</span><span style="color: #000000;">,1000</span><span style="color: #0000ff;"> union</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">all</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">select</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #ff0000;">'</span><span style="color: #ff0000;">A</span><span style="color: #ff0000;">'</span><span style="color: #000000;">,&nbsp;888</span><span style="color: #0000ff;"> union</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">all</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #ff0000;">'</span><span style="color: #ff0000;">A</span><span style="color: #ff0000;">'</span><span style="color: #000000;">,</span><span style="color: #800000; font-weight: bold;">333</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">union</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">all</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #ff0000;">'</span><span style="color: #ff0000;">B</span><span style="color: #ff0000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800000; font-weight: bold;">12222</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">union</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">all</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #ff0000;">'</span><span style="color: #ff0000;">B</span><span style="color: #ff0000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800000; font-weight: bold;">12000</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">union</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">all</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #ff0000;">'</span><span style="color: #ff0000;">C</span><span style="color: #ff0000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800000; font-weight: bold;">3000</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">union</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">all</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #ff0000;">'</span><span style="color: #ff0000;">C</span><span style="color: #ff0000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800000; font-weight: bold;">2000</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #0000ff;">set</span><span style="color: #008000;">@n</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">createtable&nbsp;kos&nbsp;</span><span style="color: #0000ff;">select</span><span style="color: #808080;">*</span><span style="color: #000000;">,</span><span style="color: #008000;">@n</span><span style="color: #000000;">:</span><span style="color: #808080;">=</span><span style="color: #008000;">@n</span><span style="color: #808080;">+</span><span style="color: #000000;">1</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;id&nbsp;</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;pt;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">建立个辅助表</span><span style="color: #008080;"><br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;customer,<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #ff00ff;">max</span><span style="color: #000000;">(</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(rn</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">,price,</span><span style="color: #ff0000;">''</span><span style="color: #000000;">))&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;price1,<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #ff00ff;">max</span><span style="color: #000000;">(</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(rn</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">,price,</span><span style="color: #ff0000;">''</span><span style="color: #000000;">))&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;price2,<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #ff00ff;">max</span><span style="color: #000000;">(</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(rn</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">3</span><span style="color: #000000;">,price,</span><span style="color: #ff0000;">''</span><span style="color: #000000;">))&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;price3,<br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;(<br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;a.customer,a.price,a.id,</span><span style="color: #ff00ff;">count</span><span style="color: #000000;">(b.id)&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;rn<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;kos&nbsp;a&nbsp;</span><span style="color: #0000ff;">join</span><span style="color: #000000;">&nbsp;kos&nbsp;b&nbsp;</span><span style="color: #0000ff;">on</span><span style="color: #000000;">&nbsp;a.customer</span><span style="color: #808080;">=</span><span style="color: #000000;">b.customer&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;">&nbsp;a.id</span><span style="color: #808080;">&gt;=</span><span style="color: #000000;">b.id<br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">groupby&nbsp;a.customer,a.price,a.id&nbsp;)k<br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">groupby&nbsp;customer;</span></div>
<pre><span style="color: #000000;">执行结果如下：<br />
<br />
</span><span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">--------+--------+--------+--------+--------+</span><span style="color: #008080;"><br />
</span><span style="color: #808080;">|</span><span style="color: #000000;"> customer </span><span style="color: #808080;">|</span><span style="color: #000000;"> price1 </span><span style="color: #808080;">|</span><span style="color: #000000;"> price2 </span><span style="color: #808080;">|</span><span style="color: #000000;"> price3 </span><span style="color: #808080;">|</span><span style="color: #000000;"> price4 </span><span style="color: #808080;">|</span><span style="color: #000000;"><br />
</span><span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">--------+--------+------+--------+------+</span><span style="color: #008080;"><br />
</span><span style="color: #808080;">|</span><span style="color: #000000;"> A        </span><span style="color: #808080;">|</span><span style="color: #800000; font-weight: bold;">1000</span><span style="color: #808080;">   </span><span style="color: #808080;">|</span><span style="color: #800000; font-weight: bold;">1000</span><span style="color: #808080;">    </span><span style="color: #808080;">|</span><span style="color: #800000; font-weight: bold;">888</span><span style="color: #808080;">    </span><span style="color: #808080;">|</span><span style="color: #800000; font-weight: bold;">333</span><span style="color: #808080;">    |</span><span style="color: #000000;"><br />
</span><span style="color: #808080;">|</span><span style="color: #000000;"> B        </span><span style="color: #808080;">|</span><span style="color: #800000; font-weight: bold;">12222</span><span style="color: #808080;">  </span><span style="color: #808080;">|</span><span style="color: #800000; font-weight: bold;">12000   </span><span style="color: #808080;">|</span><span style="color: #808080;">       </span><span style="color: #808080;">|       </span><span style="color: #808080;">|</span><span style="color: #000000;"><br />
</span><span style="color: #808080;">|</span><span style="color: #000000;"> C        </span><span style="color: #808080;">|</span><span style="color: #800000; font-weight: bold;">3000</span><span style="color: #808080;">    </span><span style="color: #808080;">|</span><span style="color: #800000; font-weight: bold;">2000</span><span style="color: #808080;">   </span><span style="color: #808080;">|</span><span style="color: #808080;">        </span><span style="color: #808080;">|</span><span style="color: #808080;">       |</span><span style="color: #000000;"><br />
</span><span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">--------+--------+--------+--------+------+</span><br />
<br />
<br />
<br />
</pre>
<br />
<img src ="http://www.blogjava.net/persister/aggbug/329086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-08-17 11:40 <a href="http://www.blogjava.net/persister/archive/2010/08/17/329086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebService &amp; Axis1.4学习总结</title><link>http://www.blogjava.net/persister/archive/2010/08/05/328035.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Thu, 05 Aug 2010 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/08/05/328035.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/328035.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/08/05/328035.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/328035.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/328035.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/persister/archive/2010/08/05/328035.html'>阅读全文</a><img src ="http://www.blogjava.net/persister/aggbug/328035.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-08-05 11:58 <a href="http://www.blogjava.net/persister/archive/2010/08/05/328035.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCPMornitor监控web service的请求和相应内容</title><link>http://www.blogjava.net/persister/archive/2010/08/04/327906.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Wed, 04 Aug 2010 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/08/04/327906.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/327906.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/08/04/327906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/327906.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/327906.html</trackback:ping><description><![CDATA[测试web services应用时，有时候会发现服务器端的反应不是预期的，这个时候查看soap request的内容是非常有用的，TCPMornitor是个非常好的帮手，能够查看发送的request内容和response内容。在Axis里面已经自带了，编写如下一个3行的tcpmonitor.bat文件：<br />
<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 128);">1</span>&nbsp;<span style="color: rgb(0, 0, 0);">set&nbsp;Axis_Lib</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">D:\workspace\TestOFBizServices\lib<br />
</span><span style="color: rgb(0, 128, 128);">2</span>&nbsp;<span style="color: rgb(0, 0, 0);">set&nbsp;Java_Cmd</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">java&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">Djava.ext.dirs</span><span style="color: rgb(0, 0, 0);">=%</span><span style="color: rgb(0, 0, 0);">Axis_Lib</span><span style="color: rgb(0, 0, 0);">%</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">3</span>&nbsp;<span style="color: rgb(0, 0, 0);">%</span><span style="color: rgb(0, 0, 0);">Java_Cmd</span><span style="color: rgb(0, 0, 0);">%</span><span style="color: rgb(0, 0, 0);">&nbsp;org.apache.axis.utils.tcpmon</span></div>
<br />
启动后，填入相关的Listen port，host和port。host和port是实际响应的主机地址和端口。listen port是监听端口，所有发送到listen port的请求都会转发给host和port。所以在测试的时候，必须将请求的端口改成listen port这样才能监听你的请求内容。<br />
<br />
<img src ="http://www.blogjava.net/persister/aggbug/327906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-08-04 10:52 <a href="http://www.blogjava.net/persister/archive/2010/08/04/327906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL导入导入命令总结</title><link>http://www.blogjava.net/persister/archive/2010/07/14/326107.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Wed, 14 Jul 2010 09:52:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/07/14/326107.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/326107.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/07/14/326107.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/326107.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/326107.html</trackback:ping><description><![CDATA[MySQL提供了几种可供选择的数据导入导出方式。<br />
<br />
基本分为两种形式，一种是sql形式的数据导入导出(mysqldump,mysql,source)，另一种是自定义数据的导入导出(load data infile, into outfile)。<br />
<br />
自定义数据格式的导入导出有一个好处就是数据可以是csv格式的，而且用的非常多。比如大型的数据，如果往查询到数据然后写到excel里面，效率肯定是一个问题。但是用mysql的自带的命令，那么就可以让mysql自己生成csv文件，这样速度会快不少。导入也是一样，就是数据文件可以传到服务器上，然后使用mysql的命令导入到数据库中，比读csv格式的文件然后插入到数据库中效率会提高不少。<br />
<br />
<br />
下面附上这些命令的具体描述：<br />
<br />
mysql中Load Data InFile是用于批量向数据表中导入记录。<br />
首先创建一个表<br />
Use Test;<br />
Create Table TableTest(<br />
`ID` mediumint(8) default '0',<br />
`Name` varchar(100) default ''<br />
) TYPE=MyISAM;<br />
<br />
向数据表导入数据<br />
Load Data InFile 'D:/Data.txt' Into Table `TableTest`<br />
<br />
常用如下：<br />
Load Data InFile 'D:/Data.txt' Into Table `TableTest` Lines Terminated By '"r"n';<br />
这个语句，字段默认用制表符隔开，每条记录用换行符隔开，在Windows下换行符为&#8220;"r"n&#8221;<br />
D:/Data.txt 文件内容如下面两行：<br />
1 A<br />
2 B<br />
&#8220;1&#8221;和&#8220;A&#8221;之间有一个制表符<br />
这样就导进两条记录了。<br />
<br />
自定义语法<br />
Load Data InFile 'D:/Data.txt' Into Table `TableTest` Fields Terminated By ',' Enclosed By '"' <br />
<br />
Escaped By '"' Lines Terminated By '"r"n';<br />
Fields Terminated By ',' Enclosed By '"' Escaped By '"'<br />
表示每个字段用逗号分开，内容包含在双引号内<br />
Lines Terminated By '"r"n';<br />
表示每条数据用换行符分开<br />
<br />
<br />
导入数据库<br />
常用source 命令<br />
进入mysql数据库控制台，<br />
如mysql -u root -p<br />
<br />
mysql&gt;use 数据库<br />
<br />
然后使用source命令，后面参数为脚本文件（如这里用到的.sql）<br />
mysql&gt;source d:"wcnc_db.sql<br />
<br />
也可以使用mysql命令（在bin目录下）<br />
.../bin/mysql db1 &gt; xx.sql;<br />
<br />
<br />
和 Load Data InFile 相反的是<br />
Select * From `TableTest` Into OutFile 'D:/Data_OutFile.txt';<br />
把表的数据导出<br />
<br />
<br />
Using command line tools to export data from a MySQL database into a CSV file is quite easy. Here's <br />
<br />
how:<br />
<br />
mysql -uexampleuser -pletmein exampledb -B -e "select * from "`person"`;" | sed 's/<br />
<br />
"t/","/g;s/^/"/;s/$/"/;s/"n//g' &gt; filename.csv<br />
<br />
Here is some sample output of the above:<br />
<br />
"id","username","group","password"<br />
"1","tux","admin","5f4dcc3b5aa765d61d8327deb882cf99"<br />
"2","tlugian","admin","5f4dcc3b5aa765d61d8327deb882cf99"<br />
"3","saiyuki","admin","5f4dcc3b5aa765d61d8327deb882cf99"<br />
"4","fred","staff","5f4dcc3b5aa765d61d8327deb882cf99"<br />
"5","barney","staff","5f4dcc3b5aa765d61d8327deb882cf99"<br />
"6","wilma","admin","5f4dcc3b5aa765d61d8327deb882cf99"<br />
<br />
And now for the explanation:<br />
<br />
Starting with the MySQL command. I wont explain the -u and -p options they are straight forward (if <br />
<br />
in doubt man mysql). The -B option will delimit the data using tabs and each row will appear on a <br />
<br />
new line. The -e option denotes the command to run once you have logged into the database. In this <br />
<br />
case we are using a simple SELECT statement.<br />
<br />
Onto sed. The command used here contains three seperate sed scripts:<br />
<br />
s/"t/","/g;s/^/"/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;--- this will search and replace all occurences of 'tabs' and replace them <br />
<br />
with a ",".<br />
<br />
;s/$/"/;&nbsp;&nbsp;&nbsp; &lt;--- This will place a " at the start of the line.<br />
<br />
s/"n//g&nbsp;&nbsp;&nbsp; &lt;---- This will place a " at the end of the line.<br />
<br />
After running the result set through sed we redirect the output to a file with a .csv extension.<br />
<br />
<br />
<br />
mysqldump命令的输入是在bin目录下.<br />
1.导出整个数据库<br />
<br />
mysqldump -u 用户名 -p 数据库名 &gt; 导出的文件名<br />
<br />
mysqldump -u wcnc -p smgp_apps_wcnc &gt; wcnc.sql<br />
<br />
2.导出一个表<br />
<br />
mysqldump -u 用户名 -p 数据库名 表名&gt; 导出文件的路径和名称<br />
<br />
mysqldump -u wcnc -p smgp_apps_wcnc users&gt; wcnc_users.sql<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/persister/aggbug/326107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-07-14 17:52 <a href="http://www.blogjava.net/persister/archive/2010/07/14/326107.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL Show processlist命令功能</title><link>http://www.blogjava.net/persister/archive/2010/07/13/325975.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Tue, 13 Jul 2010 08:15:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/07/13/325975.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/325975.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/07/13/325975.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/325975.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/325975.html</trackback:ping><description><![CDATA[怎么查看服务器的运行情况，比如多少查询，管理客户端的查询等：<br />
<br />
show processlist<br />
<br />
<span><span>mysql&gt; show processlist;<br />
+-----+-------------+--------------------+-------+---------+-------+----------------------------------+----------<br />
|
Id | User&nbsp; | Host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | db&nbsp;&nbsp; | Command | Time| State&nbsp;&nbsp;&nbsp;&nbsp; |
Info&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br />
+-----+-------------+--------------------+-------+---------+-------+----------------------------------+----------<br />
|207|root&nbsp;
|192.168.0.20:51718 |mytest | Sleep&nbsp;&nbsp;&nbsp; | 5&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br />
|208|root&nbsp; |192.168.0.20:51719 |mytest | Sleep&nbsp;&nbsp;&nbsp; | 5&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
|220|root&nbsp; |192.168.0.20:51731 |mytest |Query&nbsp;&nbsp;&nbsp; | 84&nbsp;&nbsp;
| Locked&nbsp; |<br />
select bookname,culture,value,type&nbsp; from book where
id=001<br />
先简单说一下各列的含义和用途，第一列，id，不用说了吧，一个标识，你要kill一个语句的时候很有用，比如我们进行了一个非常耗时的查询，想停止的时候，就只有采用这个命令了。<br />
<br />
user列，显示当前用户，如果不是root，这个命令就只显示你权限范围内的sql语句。<br />
<br />
host列，显示这个语句是从哪个ip的哪个端口上发出的，可以用来追踪出问题语句的用户。<br />
<br />
db列，显示这个进程目前连接的是哪个数据库。<br />
<br />
command列，显示当前连接的执行的命令，一般就是休眠（sleep），查询
（query），连接（connect）。time列，此这个状态持续的时间，单位是秒。<br />
<br />
state列，显示使用当前连接的sql语句的状态，很重要的列，后续会有所有的状态的描述，请注意，state只是语句执行中的某一个状态，一个sql语句，已查询为例，可能需要经过copying to tmp
table，Sorting result，Sending data等状态才可以完成，info列，显示这个sql语句</span></span>。<br />
<br />
注意权限，通常只能看到自己的查询process，是看不到其他人的process的。<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/persister/aggbug/325975.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-07-13 16:15 <a href="http://www.blogjava.net/persister/archive/2010/07/13/325975.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>office使用中的一些经验</title><link>http://www.blogjava.net/persister/archive/2010/07/13/325928.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Tue, 13 Jul 2010 02:17:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/07/13/325928.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/325928.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/07/13/325928.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/325928.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/325928.html</trackback:ping><description><![CDATA[<span id="reply_content_451389169">
<pre>Word大小写之间的切换：shirt+f3<br />
<br />
Word可以跟踪修改记录：<br />
<br />
<br />
<br />
</pre>
</span>
<p style4="">使用修订标记来记录对文档的修改，需要设置文档使其进入修订状态，可以按照如下方法进行：<br />
&nbsp;&nbsp;&nbsp;&nbsp;（1）打开要做修订的文档。</p>
<p style4="" align="center"><img src="http://202.152.177.115:8080/moodledatatest/2/kejian/1/images/a-6-3-1-a1_clip_image001.gif" alt="" width="175" height="198" /></p>
（2）选择【工具】菜单项中的【修订】菜单项<br />
（3）设置修订标记选项<br />
<br />
在&#8220;修改模式&#8221;下，对文档所做的修改都会被记录下来，所做的修改你必须进行&#8220;接受或者拒绝&#8221;，否则<br />
这些修改记录一直会存在，虽然你可以选择&#8220;临时&#8221;不显示这些变化。<br />
<br />
（4）&nbsp;接受或者拒绝修订<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文档进行了修订后，可以决定是否接受这些修改，步骤如下：<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;①如果接受当前的修订，单击接受修订按钮。如果接受全部的修订，点击接受对文档所做的所有按钮。如图
<p style4="" align="center"><img src="http://202.152.177.115:8080/moodledatatest/2/kejian/1/images/a-6-3-1-a1_clip_image002.gif" alt="" width="224" height="94" /></p>
<p style4="" align="left"><br />
<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;②如果不接受当前的修订，单击拒绝修订按钮，如果不接受全部的修订，则单击拒绝对文档所做的所有修订按钮即可。如图所示</p>
<p align="center"><img src="http://202.152.177.115:8080/moodledatatest/2/kejian/1/images/a-6-3-1-a1_clip_image003.gif" alt="" width="224" height="143" /></p>
<br />
<span id="reply_content_451389169">
<pre>通常，把自己的文档交给别人的时候，或者自己修改别人的文档的时候，就需要启用此模式，修改完以后<br />
<br />
再拿到这个就选择接受或者拒绝这些修改，然后取消&#8220;修改模式&#8221;。<br />
<br />
<br />
Excel中，如果想看最后一条记录，使用Ctrl + End，而不要直接往下拉，如果excel很大的话，<br />
这么拉效率也太低了。充分利用键盘快捷键，而不是鼠标。<br />
</pre>
</span>
 <img src ="http://www.blogjava.net/persister/aggbug/325928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-07-13 10:17 <a href="http://www.blogjava.net/persister/archive/2010/07/13/325928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL中分组函数的使用及前N条记录的查询方法</title><link>http://www.blogjava.net/persister/archive/2010/05/28/322113.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Fri, 28 May 2010 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/05/28/322113.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/322113.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/05/28/322113.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/322113.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/322113.html</trackback:ping><description><![CDATA[在面试的时候我经常会给毕业生出这样一道SQL题：<br />
<br />
有一张表studentgrade，包含三个字段name,subject和grade，如下所示：<br />
<br />
name subject grade<br />
a&nbsp;&nbsp;&nbsp; 数学&nbsp;&nbsp;&nbsp; 99<br />
b&nbsp;&nbsp;&nbsp; 英语&nbsp;&nbsp;&nbsp; 67<br />
a&nbsp;&nbsp;&nbsp; 英语&nbsp;&nbsp;&nbsp; 77 <br />
<br />
题目要求应试者写出sql，查询每个人的最高分和最高分的科目，比如<br />
<br />
a&nbsp;&nbsp; 数学&nbsp; 99<br />
<br />
下面分析这个SQL的查询方法，分组函数是最常使用的，下面的分组函数可以得到最高分，姓名<br />
select name,max(grade) from studentgrade group by name;<br />
<br />
这样显然得不到具体的科目，要得到科目怎么办呢？使用临时表就是一个方案：<br />
<br />
select b.name,b.grade,b.subject from<br />
<br />
(select name, max(grade) grade from studentgrade group by name ) a,<br />
<br />
studentgrade b<br />
<br />
where a.name = b.name and a.grade = b.grade；<br />
<br />
如果是需要查询每个人前三个最高分的成绩和科目呢？分组函数ms就无能为力了。下面是是几个不错的方式：<br />
<br />
1、对每条记录进行检验，查询这条记录是不是排在前三位的<br />
<br />
select a.* from studentgrade a where 3 &gt; (select count(*) from studentgrade where name=a.name and grade&lt; a.grade) order by a.name,a.grade;<br />
<br />
为提高查询效率，在name和grade上面建立联合索引。<br />
<br />
2、先把每个同学最大的三个科目分数查询出来形成一个集合，然后对每条记录进行检验，查看是否在这个集合里面。这种方式是mysql特有的，使用了top关键字。<br />
<br />
select a.* from studentgrade a where grade in (select top 3 grade from studentgrade where
name=a.name order by grade) order by a.name,a.grade;<br />
<br />
3、和第一种方式差不多，但使用的exists关键字。<br />
<br />
select a.* from studentgrade a where exists (select count(*) from studentgrade where name=a.name and grade&lt;a.grade having Count(*) &lt; 2) order by a.name;<br />
<br />
<img src ="http://www.blogjava.net/persister/aggbug/322113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-05-28 10:27 <a href="http://www.blogjava.net/persister/archive/2010/05/28/322113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FreeMarker中取map中的值</title><link>http://www.blogjava.net/persister/archive/2010/05/27/322081.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Thu, 27 May 2010 12:17:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/05/27/322081.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/322081.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/05/27/322081.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/322081.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/322081.html</trackback:ping><description><![CDATA[FreeMarker中，去map中的值很简单，比如去map中的name值：<br />
<br />
${map.name} 或者${map[name]}<br />
<br />
如果对于map中的key不知道的情况下，也就是说也是一个变量，那么怎么办？采用如下方式：<br />
<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->&lt;#list sessionAttributes.features as feature&gt;<br />
&nbsp; &nbsp;&nbsp; ${option["${feature}"]}&lt;/td&gt;<br />
&lt;/#list&gt;</div>
<br />
<img src ="http://www.blogjava.net/persister/aggbug/322081.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-05-27 20:17 <a href="http://www.blogjava.net/persister/archive/2010/05/27/322081.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL忘记root密码怎么办？</title><link>http://www.blogjava.net/persister/archive/2010/03/24/316461.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Wed, 24 Mar 2010 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/03/24/316461.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/316461.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/03/24/316461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/316461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/316461.html</trackback:ping><description><![CDATA[如果 MySQL 正在运行，到Windows的服务那里停止MySQL。 <br />
启动 MySQL：mysqld
--skip-grant-tables；<br />
就可以不需要密码就进入 MySQL 了。 <br />
然后就是 <br />
&gt;use
mysql <br />
&gt;update user set password=password("new_pass") where
user="root"; <br />
&gt;flush privileges; <br />
重新杀 MySQL ，用正常方法启动 MySQL 。<br />
<br />
这里有一个地方要注意，就是有可能，user表中根本就没有root这个用户。<br />
<img src ="http://www.blogjava.net/persister/aggbug/316461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-03-24 17:26 <a href="http://www.blogjava.net/persister/archive/2010/03/24/316461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>