<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[北京CRM googic]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[GDC GIC开发组——为你开发有效的安全系统：北京CRM——www.800com.com.cn]]></description>
<link>http://hi.baidu.com/googic</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[教你如何封端口，避免被侵犯]]></title>
        <link><![CDATA[http://hi.baidu.com/googic/blog/item/c677b57e56761e3d0dd7da04.html]]></link>
        <description><![CDATA[
		
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td height="28">
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td><strong>教你如何封端口，避免被侵犯！</strong>&nbsp;&nbsp;</td>
                        <td>
                        <table title="164931797" style="cursor: hand" cellspacing="0" cellpadding="0" border="0">
                            <tbody>
                                <tr>
                                    <td> </td>
                                    <td style="padding-left: 5px"> </td>
                                    <td> </td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                        <td> </td>
                    </tr>
                </tbody>
            </table>
            </td>
            <td align="right"> </td>
        </tr>
        <tr>
            <td colspan="2" height="2"> </td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="6" width="100%" border="0">
    <tbody>
        <tr>
            <td class="word01 gray" style="padding-right: 24px; padding-left: 24px; word-break: break-all" colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;  21端口：21端口主要用于FTP（File Transfer Protocol，文件传输协议）服务。&nbsp;&nbsp;<br>
            　　23端口：23端口主要用于Telnet（远程登录）服务，是Internet上普遍采用的登录和仿真程序。&nbsp;&nbsp;<br>
            　　25端口：25端口为SMTP（Simple Mail Transfer Protocol，简单邮件传输协议）服务器所开放，主要用于发送邮件，如今绝大多数邮件服务器都使用该协议。&nbsp;&nbsp;<br>
            　　53端口：53端口为DNS（Domain Name Server，域名服务器）服务器所开放，主要用于域名解析，DNS服务在NT系统中使用的最为广泛。&nbsp;&nbsp;<br>
            　　67、68端口：67、68端口分别是为Bootp服务的Bootstrap Protocol Server（引导程序协议服务端）和Bootstrap Protocol Client（引导程序协议客户端）开放的端口。&nbsp;&nbsp;<br>
            　　69端口：TFTP是Cisco公司开发的一个简单文件传输协议，类似于FTP。&nbsp;&nbsp;<br>
            　　79端口：79端口是为Finger服务开放的，主要用于查询远程主机在线用户、操作系统类型以及是否缓冲区溢出等用户的详细信息。&nbsp;&nbsp;<br>
            　　80端口：80端口是为HTTP（HyperText Transport Protocol，超文本传输协议）开放的，这是上网冲浪使用最多的协议，主要用于在WWW（World Wide Web，万维网）服务上传输信息的协议。&nbsp;&nbsp;<br>
            　　99端口：99端口是用于一个名为&ldquo;Metagram Relay&rdquo;（亚对策延时）的服务，该服务比较少见，一般是用不到的。&nbsp;&nbsp;<br>
            　　109、110端口：109端口是为POP2（Post Office Protocol Version 2，邮局协议2）服务开放的，110端口是为POP3（邮件协议3）服务开放的，POP2、POP3都是主要用于接收邮件的。&nbsp;&nbsp;<br>
            　　111端口：111端口是SUN公司的RPC（Remote Procedure Call，远程过程调用）服务所开放的端口，主要用于分布式系统中不同计算机的内部进程通信，RPC在多种网络服务中都是很重要的组件。&nbsp;&nbsp;<br>
            　　113端口：113端口主要用于Windows的&ldquo;Authentication Service&rdquo;（验证服务）。&nbsp;&nbsp;<br>
            　　119端口：119端口是为&ldquo;Network News Transfer Protocol&rdquo;（网络新闻组传输协议，简称NNTP）开放的。&nbsp;&nbsp;<br>
            　　135端口：135端口主要用于使用RPC（Remote Procedure Call，远程过程调用）协议并提供DCOM（分布式组件对象模型）服务。&nbsp;&nbsp;<br>
            　　137端口：137端口主要用于&ldquo;NetBIOS Name Service&rdquo;（NetBIOS名称服务）。&nbsp;&nbsp;<br>
            　　139端口：139端口是为&ldquo;NetBIOS Session Service&rdquo;提供的，主要用于提供Windows文件和打印机共享以及Unix中的Samba服务。&nbsp;&nbsp;<br>
            　　143端口：143端口主要是用于&ldquo;Internet Message Access Protocol&rdquo;v2（Internet消息访问协议，简称IMAP）。&nbsp;&nbsp;<br>
            　　161端口：161端口是用于&ldquo;Simple Network Management Protocol&rdquo;（简单网络管理协议，简称SNMP）。&nbsp;&nbsp;<br>
            　　443端口：43端口即网页浏览端口，主要是用于HTTPS服务，是提供加密和通过安全端口传输的另一种HTTP。&nbsp;&nbsp;<br>
            　　554端口：554端口默认情况下用于&ldquo;Real Time Streaming Protocol&rdquo;（实时流协议，简称RTSP）。&nbsp;&nbsp;<br>
            　　1024端口：1024端口一般不固定分配给某个服务，在英文中的解释是&ldquo;Reserved&rdquo;（保留）。&nbsp;&nbsp;<br>
            　　1080端口：1080端口是Socks代理服务使用的端口，大家平时上网使用的WWW服务使用的是HTTP协议的代理服务。&nbsp;&nbsp;<br>
            　　1755端口：1755端口默认情况下用于&ldquo;Microsoft Media Server&rdquo;（微软媒体服务器，简称MMS）。&nbsp;&nbsp;<br>
            　　4000端口：4000端口是用于大家经常使用的QQ聊天工具的，再细说就是为QQ客户端开放的端口，QQ服务端使用的端口是8000。&nbsp;&nbsp;<br>
            　　5554端口：在今年4月30日就报道出现了一种针对微软lsass服务的新蠕虫病毒&mdash;&mdash;震荡波（Worm.Sasser），该病毒可以利用TCP 5554端口开启一个FTP服务，主要被用于病毒的传播。&nbsp;&nbsp;<br>
            　　5632端口：5632端口是被大家所熟悉的远程控制软件pcAnywhere所开启的端口。&nbsp;&nbsp;<br>
            　　8080端口：8080端口同80端口，是被用于WWW代理服务的，可以实现网页浏览。&nbsp;&nbsp;<br>
            <br>
            <br>
            　　关闭的端口有，135，137，138，139，445，1025，2475，3127，6129，3389，593，还有tcp.&nbsp;&nbsp;&nbsp;<br>
            <br>
            　　具体操作如下:默认情况下，Windows有很多端口是开放的，在你上网的时候，网络病毒和黑客可以通过这些端口连上你的电脑。&nbsp;&nbsp;&nbsp;<br>
            <br>
            　　为了让你的系统变为铜墙铁壁，应该封闭这些端口，主要有：TCP 135、139、445、593、1025 端口和 UDP 135、137、138、445 端口，一些流行病毒的后门端口（如 TCP 2745、3127、6129 端口），以及远程服务访问端口3389。下面介绍如何在WinXP/2000/2003下关闭这些网络端口：&nbsp;&nbsp;&nbsp;<br>
            <br>
            　　第一步，点击&ldquo;开始&rdquo;菜单/设置/控制面板/管理工具，双击打开&ldquo;本地安全策略&rdquo;，选中&ldquo;IP 安全策略，在本地计算机&rdquo;，在右边窗格的空白位置右击鼠标，弹出快捷菜单，选择&ldquo;创建 IP 安全策略&rdquo;（如右图），于是弹出一个向导。在向导中点击&ldquo;下一步&rdquo;按钮，为新的安全策略命名；再按&ldquo;下一步&rdquo;，则显示&ldquo;安全通信请求&rdquo;画面，在画面上把&ldquo;激活默认相应规则&rdquo;左边的钩去掉，点击&ldquo;完成&rdquo;按钮就创建了一个新的IP 安全策略。&nbsp;&nbsp;&nbsp;<br>
            <br>
            　　第二步，右击该IP安全策略，在&ldquo;属性&rdquo;对话框中，把&ldquo;使用添加向导&rdquo;左边的钩去掉，然后单击&ldquo;添加&rdquo;按钮添加新的规则，随后弹出&ldquo;新规则属性&rdquo;对话框，在画面上点击&ldquo;添加&rdquo;按钮，弹出IP筛选器列表窗口；在列表中，首先把&ldquo;使用添加向导&rdquo;左边的钩去掉，然后再点击右边的&ldquo;添加&rdquo;按钮添加新的筛选器。&nbsp;&nbsp;&nbsp;<br>
            <br>
            　　第三步，进入&ldquo;筛选器属性&rdquo;对话框，首先看到的是寻址，源地址选&ldquo;任何 IP 地址&rdquo;，目标地址选&ldquo;我的 IP 地址&rdquo;；点击&ldquo;协议&rdquo;选项卡，在&ldquo;选择协议类型&rdquo;的下拉列表中选择&ldquo;TCP&rdquo;，然后在&ldquo;到此端口&rdquo;下的文本框中输入&ldquo;135&rdquo;，点击&ldquo;确定&rdquo;按钮（如左图），这样就添加了一个屏蔽 TCP 135（RPC）端口的筛选器，它可以防止外界通过135端口连上你的电脑。&nbsp;&nbsp;&nbsp;<br>
            <br>
            　　点击&ldquo;确定&rdquo;后回到筛选器列表的对话框，可以看到已经添加了一条策略，重复以上步骤继续添加 TCP 137、139、445、593 端口和 UDP 135、139、445 端口，为它们建立相应的筛选器。&nbsp;&nbsp;&nbsp;<br>
            <br>
            　　重复以上步骤添加TCP 1025、2745、3127、6129、3389 端口的屏蔽策略，建立好上述端口的筛选器，最后点击&ldquo;确定&rdquo;按钮。&nbsp;&nbsp;&nbsp;<br>
            <br>
            　　第四步，在&ldquo;新规则属性&rdquo;对话框中，选择&ldquo;新 IP 筛选器列表&rdquo;，然后点击其左边的圆圈上加一个点，表示已经激活，最后点击&ldquo;筛选器操作&rdquo;选项卡。在&ldquo;筛选器操作&rdquo;选项卡中，把&ldquo;使用添加向导&rdquo;左边的钩去掉，点击&ldquo;添加&rdquo;按钮，添加&ldquo;阻止&rdquo;操作（右图）：在&ldquo;新筛选器操作属性&rdquo;的&ldquo;安全措施&rdquo;选项卡中，选择&ldquo;阻止&rdquo;，然后点击&ldquo;确定&rdquo;按钮。&nbsp;&nbsp;&nbsp;<br>
            <br>
            　　第五步、进入&ldquo;新规则属性&rdquo;对话框，点击&ldquo;新筛选器操作&rdquo;，其左边的圆圈会加了一个点，表示已经激活，点击&ldquo;关闭&rdquo;按钮，关闭对话框；最后回到&ldquo;新IP安全策略属性&rdquo;对话框，在&ldquo;新的IP筛选器列表&rdquo;左边打钩，按&ldquo;确定&rdquo;按钮关闭对话框。在&ldquo;本地安全策略&rdquo;窗口，用鼠标右击新添加的 IP 安全策略，然后选择&ldquo;指派&rdquo;。&nbsp;&nbsp;&nbsp;<br>
            <br>
            　　重新启动后，电脑中上述网络端口就被关闭了，病毒和黑客再也不能连上这些端口，从而保护了你的电脑</td>
        </tr>
    </tbody>
</table> <a href="http://hi.baidu.com/googic/blog/item/c677b57e56761e3d0dd7da04.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/googic/blog/category/%B7%FE%CE%F1%C6%F7%B0%B2%C8%AB">服务器安全</a>&nbsp;<a href="http://hi.baidu.com/googic/blog/item/c677b57e56761e3d0dd7da04.html#comment">查看评论</a>]]></description>
        <pubDate>2008-05-26  13:49</pubDate>
        <category><![CDATA[服务器安全]]></category>
        <author><![CDATA[googic]]></author>
		<guid>http://hi.baidu.com/googic/blog/item/c677b57e56761e3d0dd7da04.html</guid>
</item>

<item>
        <title><![CDATA[prepareStatement 封装 数据库 类 操作]]></title>
        <link><![CDATA[http://hi.baidu.com/googic/blog/item/1a2e25a4ffa83bf29052ee91.html]]></link>
        <description><![CDATA[
		
		<div class="tit">prepareStatement 封装 数据库 类 操作</div>
<div class="date">2007年04月20日 21:12</div>
<table style="table-layout: fixed">
    <tbody>
        <tr>
            <td>
            <div class="cnt" >
            <p><font color="#000000">/*<br>
            * QueryBean.java<br>
            *<br>
            * Created on 2007年4月16日, 下午6:48<br>
            *<br>
            * To change this template, choose Tools | Template Manager<br>
            * and open the template in the editor.<br>
            */</font></p>
            <p><font color="#000000">package test;</font></p>
            </div>
            </td>
        </tr>
    </tbody>
</table> <a href="http://hi.baidu.com/googic/blog/item/1a2e25a4ffa83bf29052ee91.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/googic/blog/category/Java">Java</a>&nbsp;<a href="http://hi.baidu.com/googic/blog/item/1a2e25a4ffa83bf29052ee91.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-28  16:42</pubDate>
        <category><![CDATA[Java]]></category>
        <author><![CDATA[googic]]></author>
		<guid>http://hi.baidu.com/googic/blog/item/1a2e25a4ffa83bf29052ee91.html</guid>
</item>

<item>
        <title><![CDATA[卸载BlackICE(黑冰)后出现错误提示的解决方法]]></title>
        <link><![CDATA[http://hi.baidu.com/googic/blog/item/9c5975cfbef8743ef8dc61c3.html]]></link>
        <description><![CDATA[
		
		  报社新近又买了几台DELL SC1425的机架式服务器，俺先后装了Windows Server 2003标准版和企业版，web服务用的是IIS6.0，FTP用的Gene6P，不可少的装了卡巴斯基互联网安全套装6.0，然后又老习惯安装了BlackICE，结果总是导致蓝屏重启，后来找到了解决方法，见俺的博客：BlackICE(黑冰)防火墙蓝屏解决方法（<a href="http://blog.nxnet.cn/user1/majiang/archives/2006/2006111901241.shtml"><span style="font-size: 12pt">user1/majiang/archives/2006/2006111901241.shtml</span></a><span style="font-size: 12pt">）。但通过长时间运行发现至少对于这款服务器来说是极不稳定的，几乎每连续运行10多个小时以上就会出现系统崩溃的现象。通过先后停止各种服务和应用程序后确定问题出在Black上，只好忍痛卸载之。（小提示，在控制面板的添加/删除程序里是无法卸载该软件的，得在黑冰的安装目录中运行BIRemove.exe才可顺利卸载）<br>
&nbsp;&nbsp;&nbsp;  但卸载BlackICE（黑冰）后却遇到了启动错误提示，说是&ldquo;下列引导或系统启动驱动程序无法加载：black&rdquo;，虽然对服务器功能并无影响，但对眼球有影响，总是让人觉得不舒服。于是折腾了很久，查了不少资料，终于得以解决。现将处理方法提供给给需要的朋友，希望能让其他遇到同类问题困扰的朋友不再走弯路。</span>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;  出现该提示是因为黑冰反删除后相关文件已经全部删除，但注册表却留下了要调用windows\System32\drivers\BlackDrv.sys的残余项目而导致。</span></p>
<div><span style="font-size: 12pt">错误提示：下列引导或系统启动驱动程序无法加载:  black<br>
解决方法：<br>
一、备份注册表，以免万一操作错误了回天乏术。<br>
<br>
二、用regedit或其它注册表编辑工具打开注册表，找到下面项目<br>
<span style="color: #ff0000">HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\black</span><br>
删除该组<br>
<br>
然后在注册表中找到下面项目<br>
<span style="color: #ff0000"><br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_BLACK<br>
</span>该项目因权限不够无法删除，默认只有system帐户有完全控制权限。所以先在该项目右键单击，让Everyone有完全控制权限后即可删除。</span></div>
<p><span style="font-size: 12pt">重启系统，错误提示没有了？恭喜，大功告成。</span></p> <a href="http://hi.baidu.com/googic/blog/item/9c5975cfbef8743ef8dc61c3.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/googic/blog/category/%B7%C0%BB%F0%C7%BD">防火墙</a>&nbsp;<a href="http://hi.baidu.com/googic/blog/item/9c5975cfbef8743ef8dc61c3.html#comment">查看评论</a>]]></description>
        <pubDate>2007-12-11  18:13</pubDate>
        <category><![CDATA[防火墙]]></category>
        <author><![CDATA[googic]]></author>
		<guid>http://hi.baidu.com/googic/blog/item/9c5975cfbef8743ef8dc61c3.html</guid>
</item>

<item>
        <title><![CDATA[BlackICE(黑冰)防火墙蓝屏解决方法]]></title>
        <link><![CDATA[http://hi.baidu.com/googic/blog/item/13470cf7926d7321720eecc3.html]]></link>
        <description><![CDATA[
		
		 ISS出品的BlackICE是俺近几年来一直比较信赖的服务器防火墙。为了服务器安全，俺管理的所有服务器都无一例外的装上了卡巴斯基（KasperSky）反病毒服务器版和BlackICE的服务器版。这款软防火墙可以有效的阻止企图穿过防火墙的入侵者。BlackICE集成有非常强大的检测和分析引擎，可以识别 200 多种入侵技巧，有全面的网络检测以及系统防护，还能即时监测网络端口和协议，拦截所有可疑的网络入侵。而且它还可以将查明那些试图入侵的黑客的NetBIOS(WINS)名、DNS名或是他目前所使用的IP地址记录下来，以便你采取进一步行动。简单滴说就是可以通过以下多种组合方式去保护服务器和进行服务授权：按照应用程序、按照网络协议、按照IP或IP段、按照机器名……对非法协议请求和IP可以进行一小时、一天、一月，乃至永久的封闭。功能之强大确实是一言难尽，但设置应用之难也甚于其它防火墙。<br>
   近期单位新购置了几台DELL的机架式服务器，俺和魔铃在安装设置系统的时候都遇到了安装完BlackICE后系统就立马蓝屏重启的困惑，开始以为是软件冲突，但卸载了所有其它软件后已然如故。三番五次卸载重装还是无法解决问题。（这软件卸载做的比较那个，用控制面板里的添加删除程序功能是无法卸载的，得在进程中中断了该程序后，用它的目录下那个BIRemove.exe去卸载）。后来俺上网查了很多资料，总算找到了解决知道，这里做个记录，一则以后再用到的时候回来查，再则给遇到同样困扰的朋友提供个方便。<br>
   这种现在在以前没有发生过的原因和Windows Server 2003的SP1补丁和WinXP SP2补丁有关，因为补丁新增了一个名为DEP(数据执行保护)的安全保护功能。如果你用上了64位CPU，那么，这个保护功能将更加强大，因为64处理器中采用了一种全新的防毒技术--EVP(增强型病毒防护)，配合DEP技术，能将病毒的防治机制提升到一个新的高度。<br>
  　　不过EVP和DEP也存在兼容问题，它可能将对用户有用的程序也阻止掉，对普通用户而言，首先要解决这个问题。<br>
   有的朋友建议先不打补丁，装好黑冰后再打补丁，其实这种方法也不好，一则黑冰升级后可能会又导致这个问题，再则现在俺们装的系统往往已经是集成了补丁的，所以还得从根子上想办法去解决。俺查到的2个方法如下：（经过验证，顺利可行）<br>
  　　1.在系统属性中修改<br>
  　　默认下，在&ldquo;系统属性&rdquo;下的&ldquo;高级→设置→数据执行保护&rdquo;中选择的是&ldquo;仅为基本Windows程序和服务启用DEP&rdquo;。在这种状态下，有的程序不能正常运行，如Virtual PC。<br>
  　　如果出现了有些应用程序不能正常运行，可在&ldquo;数据执行保护&rdquo;项中选择&ldquo;为除下列选定程序之外的所有程序和服务启用DEP&rdquo;，再单击&ldquo;添加&rdquo;，定位到某应用程序的安装目录，找到该程序的可执行文件，将其添加进来。一般地，这个程序就能正常运行了。重启电脑后设置生效。<br>
  　　2.直接修改Boot.ini文件<br>
  　　在系统所在分区根目录下找到Boot.ini文件。注意看，它多出了一个&ldquo;NoExecute&rdquo;参数，而前面在系统属性中对DEP的修改也会反映在这个参数上。<br>
  　　在&ldquo;数据执行保护&rdquo;项中只有两个选项，反映在Boot.ini文件中就是&ldquo;NoExecute&rdquo;参数的&ldquo;Optin&rdquo;和&ldquo;Opton&rdquo;两个值。可是，有些应用程序或驱动程序的兼容性不强，纵使在&ldquo;数据执行保护&rdquo;中将其&ldquo;放行&rdquo;，它还是不能正常运行，比如ZoneAlarm Pro等，这就要靠&ldquo;NoExecute&rdquo;参数的其他两个值了。<br>
  　　把这句最后改为NoExecute=AlwaysOff，这相当于关闭了EVP和DEP功能，此时，这两项功能将全部丧失。由这项功能引起的兼容性问题全部解决了，但少了一堵安全保护的墙。不过俺们终于能用到BlackICE的强大保护功能，算是有得有失吧，但毕竟得大于失。<br> <a href="http://hi.baidu.com/googic/blog/item/13470cf7926d7321720eecc3.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/googic/blog/category/%B7%C0%BB%F0%C7%BD">防火墙</a>&nbsp;<a href="http://hi.baidu.com/googic/blog/item/13470cf7926d7321720eecc3.html#comment">查看评论</a>]]></description>
        <pubDate>2007-12-11  18:12</pubDate>
        <category><![CDATA[防火墙]]></category>
        <author><![CDATA[googic]]></author>
		<guid>http://hi.baidu.com/googic/blog/item/13470cf7926d7321720eecc3.html</guid>
</item>

<item>
        <title><![CDATA[从奥运会票务系统瘫痪所看到的]]></title>
        <link><![CDATA[http://hi.baidu.com/googic/blog/item/8c57cd95d9f23e48d0135e7c.html]]></link>
        <description><![CDATA[
		
		<font color="#0000ff"> 中新网10月31日电北京奥组委票务中心主任容军今天表示，导致奥运会第二阶段售票被迫暂时停止的奥运票务销售系统，为一家美国公司和两家中方的合资企业共同开发、提供。北京奥组委将评估费用方面的损失，根据协议的有关条款办事。</font>
<p><font color="#0000ff">　　在今天举行的发布会上，有外国媒体提问：有两个问题，票务的问题是一个合作的问题，是北京奥组委和技术部门合作的，也是合资企业在负责技术系统，具体票务系统是谁负责的，出现问题，具体由哪个部门负责？整个票务技术系统的花费是多少，昨天出现这样的问题，肯定带来了很大的花费，造成了多少经济的损失，这个错误应该由谁来负责，造成损失有多大？</font></p>
<p><font color="#0000ff">　　对此，容军回答说：&ldquo;我们的技术服务商是由美国ticket master公司和两家中方的合资企业。&rdquo;</font></p>
<p><font color="#0000ff">　　他表示，我认为目前这个阶段，最重要的任务是要解决问题，是要解决当前遇到的困难，尽快地拿出一个可行的实施方案，尽快地能够再次向公众实施门票的销售。至于责任的问题，我们会根据具体的问题具体分析，有关的协议条款也是规定比较明确的，但是我认为目前这个工作是放在第二位的事情，包括刚才提到的费用方面的损失，我们也需要经过评估。</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  从以上新闻中，我们不难看出这里面关于软件测试技术在WEB网站测试中的应用之不足。奥运会网络票务系统设计的最高峰值为100万次/小时并发登录，而当天的官方网站访问量达800万次/小时，就连呼叫中心的访问量也超过380万次/小时，票务系统在开始运作不到半小时就彻底瘫痪。我们可以分析一下这个事件出现的原因：</p>
<p>一、对网络访问量的估计有严重缺陷</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  大家都知道，基于B/S架构的WEB系统，在做系统测试时分功能性测试和性能测试两大方面的工作，而在做性能测试时要考虑到系统的负载测试和压力测试。为了能够避免出现系统性能由于访问量的剧增导致系统瘫痪、崩溃，一般是要进行压力测试后做网络负载均衡，此次现象的发生说明在做系统测试时没有考虑到网络访问量的突变。</p>
<p>二、没有对票务系统的服务器做有效的冗余</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在WEB系统中，需要对服务器做冗余备份，当系统的负载超过一定峰值时，必须启动备份的服务器进行负载均衡，以减少由于网络风险而带来的损失。奥运会票务系统的最大峰值负载为100万并发/小时，当系统的阀值在80万--90万次并发/小时的时候，就要启动备份服务器以缓解系统的压力。</p>
<p>三、系统的测试工作严重缺乏</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  当一个大型软件系统尤其是基于B/S架构的WEB网站，往往关注比较多的是功能上是否实现了即定的功能、是否和数据库联接、表单递交是否成功、易用性好坏、兼容性如何等等，偏偏对系统的性能测试工作准备不足或没有做足够的考虑。</p>
<p>&nbsp;&nbsp;&nbsp;  综合以上表述，我们可以看出在一个基于B/S架构的WEB网站，做系统测试时需要考虑的问题要复杂得多，也更说明性能测试在WEB系统中的重要作用。</p> <a href="http://hi.baidu.com/googic/blog/item/8c57cd95d9f23e48d0135e7c.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/googic/blog/category/%B2%E2%CA%D4">测试</a>&nbsp;<a href="http://hi.baidu.com/googic/blog/item/8c57cd95d9f23e48d0135e7c.html#comment">查看评论</a>]]></description>
        <pubDate>2007-11-06  09:59</pubDate>
        <category><![CDATA[测试]]></category>
        <author><![CDATA[googic]]></author>
		<guid>http://hi.baidu.com/googic/blog/item/8c57cd95d9f23e48d0135e7c.html</guid>
</item>

<item>
        <title><![CDATA[ESB架构笔记]]></title>
        <link><![CDATA[http://hi.baidu.com/googic/blog/item/f28bcb1b537f8df9af5133b5.html]]></link>
        <description><![CDATA[
		
		<h2><a name="DataService-1.Overview"></a>1.Overview</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据服务是专门化的Web服务，在Web服务中实际占了很大的一部分。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但在这些Web服务中，数据服务与业务服务的界限通常并不清晰；接口粒度通常为特定数据类型，容易发生更改且业务服务耦合了某个特定的数据服务；还有基础设施的重复建设。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以有了专门的数据总线。</p>
<ul>
<li><span class="nobr"><a title="Visit page outside Confluence" href="http://dev2dev.bea.com.cn/techdoc/2007/08/java-soa-data-in-soa.html" rel="nofollow" linktext="SOA中的数据,第1部分:将数据转换成信息(dev2dev)|http://dev2dev.bea.com.cn/techdoc/2007/08/java-soa-data-in-soa.html" linktype="raw" mce_href="http://dev2dev.bea.com.cn/techdoc/2007/08/java-soa-data-in-soa.html"><font color="#800080">SOA中的数据，第1部分：将数据转换成信息(dev2dev)<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></font></a></span>&#8201; </li>
    <li><span class="nobr"><a title="Visit page outside Confluence" href="http://www.ibm.com/developerworks/cn/webservices/ws-soa-infoserv2/index.html" rel="nofollow" linktext="信息服务模式,第 2 部分: 数据整合模式|http://www.ibm.com/developerworks/cn/webservices/ws-soa-infoserv2/index.html" linktype="raw" mce_href="http://www.ibm.com/developerworks/cn/webservices/ws-soa-infoserv2/index.html">信息服务模式，第 2 部分: 数据整合模式<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;，<span class="nobr"><a title="Visit page outside Confluence" href="http://www.ibm.com/developerworks/cn/webservices/ws-soa-infoserv1/index.html" rel="nofollow" linktext="第1部分:数据联合模式|http://www.ibm.com/developerworks/cn/webservices/ws-soa-infoserv1/index.html" linktype="raw" mce_href="http://www.ibm.com/developerworks/cn/webservices/ws-soa-infoserv1/index.html">第1部分：数据联合模式<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;，<span class="nobr"><a title="Visit page outside Confluence" href="http://www.ibm.com/developerworks/cn/webservices/ws-soa-infoserv3/" rel="nofollow" linktext="第 3 部分:数据清理模式|http://www.ibm.com/developerworks/cn/webservices/ws-soa-infoserv3/" linktype="raw" mce_href="http://www.ibm.com/developerworks/cn/webservices/ws-soa-infoserv3/">第 3 部分：数据清理模式<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;(IBM DW)&nbsp;&nbsp;</li>
    <li><span class="nobr"><a title="Visit page outside Confluence" href="http://www.infoq.com/articles/SOA-enterprise-data" rel="nofollow" linktext="Incorporating Enterprise Data into SOA(InfoQ)|http://www.infoq.com/articles/SOA-enterprise-data" linktype="raw" mce_href="http://www.infoq.com/articles/SOA-enterprise-data">Incorporating Enterprise Data into SOA(InfoQ)<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;</li>
</ul>
    <h2><a name="DataService-2.%E6%95%B0%E6%8D%AE%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%9C%8D%E5%8A%A1%E6%8E%A5%E5%8F%A3"></a>2.数据的基本服务接口</h2>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通过元数据定义，将一个或多个数据表组合为业务信息视图，并暴露为服务，提供CRUD操作接口和更新通知机制。<br>
&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.对外接口，除了传统的WebService接口外：</p>
    <ul>
<li>REST，轻量级面向资源接口，层次式URL定位对象，CRUD操作走HTTP原语，数据服务似乎是REST最贴切的用武之地。 </li>
        <li>JSON/POX(Plain Old XML)，尽量简化的数据传输量。 </li>
        <li>RSS/ATOM Feed，轻量级信息发布订阅格式。 </li>
        <li>Ajax，对REST/JSON的支持使得Ajax已呼之欲出。 </li>
        <li>IBM/BEA的SDO规范，虽然看上去很美，但由于数据的跨平台性，没有MS的加入等于白搭。</li>
</ul>
        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.查询语言的设计：</p>
        <ul>
<li>直接SQL </li>
            <li>JPA的JQL、Salesforce的SOQL、Facebook的FQL等自设计的面向对象的查询语言 </li>
            <li>Google Base的简单按属性匹配。</li>
</ul>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.数据更新通知机制：</p>
            <ul>
<li>SalesForce的带时间窗参数(beginTime,endTime)的服务端查询接口 </li>
                <li>客户自行实现接收通知的Web Service给服务端调用 </li>
                <li>使用<a title="Messaging" href="http://wiki.springside.org.cn/display/calvin/Messaging" linktext="跨平台的消息中间件|Messaging" linktype="raw" mce_href="/display/calvin/Messaging">跨平台的消息中间件</a>&#8201;。并进行封装屏蔽底层消息中间件的存在，只向用户提供有限的API。</li>
</ul>
                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.粗粒度接口：</p>
                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REST的"层次式定位"比单纯的"数据类型"更适合复杂的数据环境。无论是SOAP还是REST，都不应采用RPC风格与强数据类型。</p>
                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.权限规则引擎</p>
                <h2><a name="DataService-3.%E6%95%B0%E6%8D%AE%E7%9A%84%E6%95%B4%E5%90%88%E5%90%8C%E6%AD%A5%26nbsp%3B"></a>3.数据的整合同步 </h2>
                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#4d87ce"><u>数据纵向整合</u></font>，客户端真正将数据"插"到总线上，通过元数据定义他们所提供的数据库、WebService和Data Feed数据，供服务端主动进行"拉"的动作。</p>
                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比如，当多个自治的独立异构数据源中(地域分公司，并购企业)，存在核心的业务实体--主数据(如客户，订单)，进行叠加转换后提供统一的只读数据集。因为各异构数据源对相同的主数据可能不一致、不完整、可能有完全不同的表现形式，所以存在有数据抽取转换的过程。</p>
                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 整合的周期可是是定时(天/周)，或者数据源变更事件时发生。</p>
                <h2><a name="DataService-4.%E6%95%B0%E6%8D%AE%E7%9A%84%E5%BC%82%E6%9E%84%E8%81%94%E5%90%88%E8%A7%86%E5%9B%BE%26nbsp%3B"></a>4.数据的异构联合视图 </h2>
                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#4d87ce"><u>数据横向联合</u></font>将分散在位置透明的多种数据源，多个数据表中的数据，联合成一个大的有业务意义的信息视图，支持其即时联合查询。 </p>
                <h2><a name="DataService-5.%E5%8F%82%E8%80%83%E6%96%B9%E6%A1%88"></a>5.参考方案</h2>
                <ul>
<li>BEA的<span class="nobr"><a title="Visit page outside Confluence" href="http://edocs.bea.com/aldsp/docs25/index.html" rel="nofollow" linktext="AquaLogic Data Services Platform|http://edocs.bea.com/aldsp/docs25/index.html" linktype="raw" mce_href="http://edocs.bea.com/aldsp/docs25/index.html">AquaLogic Data Services Platform<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;，&nbsp;&nbsp; 偏重于横向联合的即时查询。 </li>
                    <li>IBM的<span class="nobr"><a title="Visit page outside Confluence" href="http://www-306.ibm.com/software/data/integration/information_services_director/" rel="nofollow" linktext="WebSphere Information Services Director|http://www-306.ibm.com/software/data/integration/information_services_director/" linktype="raw" mce_href="http://www-306.ibm.com/software/data/integration/information_services_director/">WebSphere Information Services Director<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;，待研究。 </li>
                    <li><span class="nobr"><a title="Visit page outside Confluence" href="http://labs.jboss.com/metamatrix/" rel="nofollow" linktext="JBoss MetraMatrix|http://labs.jboss.com/metamatrix/" linktype="raw" mce_href="http://labs.jboss.com/metamatrix/">JBoss MetraMatrix<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201; ( <span class="nobr"><a title="Visit page outside Confluence" href="http://www.infoq.com/cn/news/2007/08/jboss-metamatrix-detail" rel="nofollow" linktext="深入JBoss MetaMatrix|http://www.infoq.com/cn/news/2007/08/jboss-metamatrix-detail" linktype="raw" mce_href="http://www.infoq.com/cn/news/2007/08/jboss-metamatrix-detail">深入JBoss MetaMatrix<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;) ，类似BEA，JBoss收购后还没发布。 </li>
                    <li><span class="nobr"><a title="Visit page outside Confluence" href="http://www.apatar.com/" rel="nofollow" linktext="Apatar|http://www.apatar.com/" linktype="raw" mce_href="http://www.apatar.com/">Apatar<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;，待研究。 </li>
                    <li><span class="nobr"><a title="Visit page outside Confluence" href="http://incubator.apache.org/abdera/" rel="nofollow" linktext="Apache Abdera|http://incubator.apache.org/abdera/" linktype="raw" mce_href="http://incubator.apache.org/abdera/">Apache Abdera<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201; ATOM/APP协议的实现，<span class="nobr"><a title="Visit page outside Confluence" href="https://rome.dev.java.net/" rel="nofollow" linktext="ROME|https://rome.dev.java.net" linktype="raw" mce_href="https://rome.dev.java.net">ROME<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;希望在2.0中将其整合-- <span class="nobr"><a title="Visit page outside Confluence" href="http://www.ibm.com/developerworks/cn/xml/x-atompp3/" rel="nofollow" linktext="Abdera项目简介(IBM DW)|http://www.ibm.com/developerworks/cn/xml/x-atompp3/" linktype="raw" mce_href="http://www.ibm.com/developerworks/cn/xml/x-atompp3/">Abdera项目简介(IBM DW)<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201; </li>
</ul>
                    <h2><a name="DataService-6.GoogleBase"></a>6.Google Base</h2>
                    <p><span class="nobr"><a title="Visit page outside Confluence" href="http://code.google.com/apis/base/" rel="nofollow" linktext="Google Base|http://code.google.com/apis/base/" linktype="raw" mce_href="http://code.google.com/apis/base/">Google Base<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;是Google的公共数据库服务，大家可以使用公共对象类型或者设定自己的类型，然后使用<span class="nobr"><a title="Visit page outside Confluence" href="http://code.google.com/apis/gdata/index.html" rel="nofollow" linktext="GData API|http://code.google.com/apis/gdata/index.html" linktype="raw" mce_href="http://code.google.com/apis/gdata/index.html">GData API<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201; 对自己存放在GBase里的数据进行增删改查操作。</p>
                    <p><span class="nobr"><a title="Visit page outside Confluence" href="http://code.google.com/apis/gdata/index.html" rel="nofollow" linktext="GData|http://code.google.com/apis/gdata/index.html" linktype="raw" mce_href="http://code.google.com/apis/gdata/index.html">GData<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;系列API，可以将Google的各项数据通过RSS/ATOM扩展的数据查询读取(可按属性查询)，或通过REST版的Atom Publish Protocol进行增删改。</p>
                    <p>看看<span class="nobr"><a title="Visit page outside Confluence" href="http://www.google.com/base/api/demo/html/demo.html" rel="nofollow" linktext="GBase的Demo页面|http://www.google.com/base/api/demo/html/demo.html" linktype="raw" mce_href="http://www.google.com/base/api/demo/html/demo.html">GBase的Demo页面<sup><img class="rendericon" height="7" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="/images/icons/linkext7.gif"></sup></a></span>&#8201;，一个很REST的简单方案，另外也有Java/C#版的稍嫌冗繁的API。Google中的各项数据，如日志，邮件等，也基于GData协议提供了封装的API。</p>
                    <p>另外URL里加一个参数，还可以返回JSON格式。</p>
<br> <a href="http://hi.baidu.com/googic/blog/item/f28bcb1b537f8df9af5133b5.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/googic/blog/category/Java">Java</a>&nbsp;<a href="http://hi.baidu.com/googic/blog/item/f28bcb1b537f8df9af5133b5.html#comment">查看评论</a>]]></description>
        <pubDate>2007-10-22  09:03</pubDate>
        <category><![CDATA[Java]]></category>
        <author><![CDATA[googic]]></author>
		<guid>http://hi.baidu.com/googic/blog/item/f28bcb1b537f8df9af5133b5.html</guid>
</item>

<item>
        <title><![CDATA[高效率视频播放: 如何使用3D API 进行视频的高质量回放]]></title>
        <link><![CDATA[http://hi.baidu.com/googic/blog/item/5997d2caf9a37a45f21fe7b4.html]]></link>
        <description><![CDATA[
		
		&nbsp;&nbsp; 其实要在3D 环境播放视频并不是件困难的事情,如果你仅仅是想做一个视频纹理,那么你可以放心的做很多假设,并且让美术提供的视频都必须满足你的假设,你可以使用RGB24的格式,你可以选择让DirectShow来为你完成YUV-RGB的color space的转化,你也可以不考虑播放是不是完全流畅的,因为那仅仅是整个游戏中的一个小小的部分,没人会来关系整个部分的视频是不是流畅.
<div> </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>如果你做的是个播放器,专门用来播放视频的,那么质量问题喝兼容问题显得非常重要: </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1: </span>你要支持YUV格式,至少要支持一种: YV12. </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2: </span>你不能不能考虑播放的流畅性.,不能产生Frame drop现象.</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3: </span>必须适应Decoder出来的frame的步调,除了保证不丢帧以外,还需要保证不会有的帧在屏幕上停留时间太长,有的太短.</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4: </span>你不得不考虑性能问题,因为有些视频文件是巨大的,HD的视频1920 x 1080 这样的分辨率是非常常见的,Decoder会在解码的动作上耗费掉大量的CPU,留给backend的时间并不多..</div>
<div> </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>就以上问题,总结起来是两个: 一,YUV格式的支持.二,提供性能,保证播放流畅性. 下面我来说说一些解决方案.</div>
<div>一:YUV格式的支持.</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YUV</span>格式其实有很多种, 大类分成两类,Packed的跟plannar的.前者是YUV是挤到一个int32里的(注意这个挤字),另外一种是YUV三个分量的数据分开保存,等于三个数组.</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>我们知道用3D API中,用来保存图象的资源就是纹理,对于以上两类YUV格式,显然是第一种比较自然一些,但是必须注意的是packed的YUV格式,通常是交错的 ,比如排列方式是YUYV这样排列, 因为对视频来说,Y亮度信息明显比UV色差信号要来的重要,所以说,在4个字节中挤进去两个像素的信息,这两个像素公用一个UV值. 这种格式就称为YUYV格式. 除此之外还有其他很多对一般应用者来说可能是千奇百怪的格式. 因此,事实上packed的YUV.只是看上去比较自然,实现起来却并不是那么简单轻松.即使是比较容易实现的YUYV格式,也很难实现它的平滑滤波.</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>相反来说,对于plannar的YUV格式, 我们虽然没办法用一个纹理来模拟它,但是完全可以采用三个纹理的方式来模拟它,这种方式几乎不需要在Pixel Shader做很多特殊处理,无非就是三个纹理采样动作而已.非常幸运的是,现在大部分的解码器都是直接输出YV12格式的,在一个分辨率是MxN大小的YV12格式中,的一块数据是MxN的Y信号.接下来是一块M/2 x N/2大小的U信号,最后是M/2 x N/2的V信号,也就是说,Y信号的分辨率比UV大一倍. 这样我们可以用一个MxN跟两个M/2 x N/2纹理就可以模拟出YV12格式了.并且可以自由的使用各种纹理滤波方式.</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>解决了如何把YUV信号输入到3D API中,接下来就可以使用Pixel Shader来对采样的YUV信号进行调整,并转化成RGB信号,这个转化是非常简单的.代码如下:</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<div>sampler2D texYPlane;</div>
<div>sampler2D texUPlane;</div>
<div>sampler2D texVPlane;</div>
<div>float4 main( float2 texCoord : TEXCOORD0 , float4 fColor : COLOR) : COLOR</div>
<div>{</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float4&nbsp;&nbsp;&nbsp;&nbsp; matYUV2RGB0 = float4 (1.0 , 0.0&nbsp;&nbsp;&nbsp;&nbsp; , 1.14&nbsp;&nbsp;&nbsp; , 0.0);</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float4&nbsp;&nbsp;&nbsp;&nbsp; matYUV2RGB1 = float4 (1.0 , -0.390 , -0.58 , 0.0);</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float4&nbsp;&nbsp;&nbsp;&nbsp; matYUV2RGB2 = float4 (1.0 , 2.03&nbsp;&nbsp;&nbsp; , 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , 0.0);</span></div>
<div> </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span>输入的YUV必须加个偏移量.详细细节参见www.fourcc.org</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float4&nbsp;&nbsp;&nbsp;&nbsp; deltaYUV = float4 (-0.00&nbsp;&nbsp;&nbsp; , -0.500 , -0.500 , 0.0);</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float4 yuvColor;</span></div>
<div> </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span>对三个纹理进行采样</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float2 newTexCoord = float2(texCoord.x , texCoord.y);</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yuvColor.x&nbsp;&nbsp;&nbsp; = tex2D( texYPlane, newTexCoord ).x;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yuvColor.y&nbsp;&nbsp;&nbsp; = tex2D( texUPlane, newTexCoord ).x;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yuvColor.z&nbsp;&nbsp;&nbsp; = tex2D( texVPlane, newTexCoord ).x;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yuvColor.w = 1.0f;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yuvColor = yuvColor + deltaYUV;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //adjust color</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yuvColor = adjustColor(yuvColor);</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float4 imageColor;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //YUV </span>到RGB的转换</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imageColor.x =dot(matYUV2RGB0.xyz , yuvColor.xyz);</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imageColor.y =dot(matYUV2RGB1.xyz , yuvColor.xyz);</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imageColor.z =dot(matYUV2RGB2.xyz , yuvColor.xyz);</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imageColor.w = 1.0;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return imageColor;</span></div>
<div>}</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>关于adjustColor函数,主要是用来对对比度,饱和度等进行调节的,具体算法,在数字图象处理中都可以找到.关于详细的YUV资料,可以到www.fourcc.org上去找.</div>
<div> </div>
<div> </div>
<div>二: 如果提高播放的流畅性</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>播放的流畅性,首先要保证性能. 如果说,解码器解码一帧的时间是40ms.那么无论如何你怎么优化,视频都不会流畅.同样的,如果视频解码器解码一帧费时是25ms.那么如果是24fps为正常播放速率,那么表示留给你去绘制的时间有16ms.在这16ms内,你必须把这一帧图象下载到GPU中,并把它绘制出去,绘制其实可以和解码是异步进行的,那么下载的动作呢?在OpenGL里我们可以采用PBO来进行纹理数据异步下载,这能大大的提高纹理更新的速度.</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>另外一方面,并不是说你的更新速度足够高就能让视频看起来是流畅的,你还必须保证更新的步调和解码器输出是一致的.也就是说不能更新快,也不能更新慢了.我们可以采用两种方法来进行解码帧和绘制帧两个动作的同步.</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>第一种方法,线程锁 + 标记变量. 通常绘制和解码不是在同一个线程中的,我们可以为视频输出纹理加一个锁和标记变量,当纹理正在被解码器写入的时候,我们就lock,并在unlock的时候,设置标记变量的状态为dirty.这就等于通知了绘制线程,告诉它视频帧的数据被更新,需要绘制. 而绘制线程会在进行绘制前检测标记变量,只有标记变量是dirty的时候,才进行绘制,或者可以选择不更新画面或者等待标记变量变成dirty状态.</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>第二种方法,采用信号量. 我们可以声明一个HANDLE drawEvent, 当解码器更新完一帧数据才升起这个信号量.具体代码如下:</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp; int drawFrameThreadFunc(int)</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp; {</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; initDrawDevice();//</span>分配一个Direct3D/OpenGL的设备</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(1)</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span>其他一些逻辑.........</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WaitForSingleObject(drawEvent,200);</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drawYV12VideoTexture();</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span>其他一些逻辑.........</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closeDrawDevice();//</span>关闭设备.</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp; }</span></div>
<div> </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>这两种方法,后一种比较精确,前一种相对比较自由.并且可以和有很多动态效果的GUI结合在一起.</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>到此为止,我简单了介绍了高质量播放视频时候需要注意的一些问题,相对来说都是比较大的概括,细节上的问题还会更加的多.比如缩放滤波的质量,视频的反交错等问题都需要费很大的精力去完成.因此,做一个播放器的后端也不是那么简单的:). 如果读者有更好的方法和建议,可以通过邮件跟我联系.</div> <a href="http://hi.baidu.com/googic/blog/item/5997d2caf9a37a45f21fe7b4.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/googic/blog/category/Java">Java</a>&nbsp;<a href="http://hi.baidu.com/googic/blog/item/5997d2caf9a37a45f21fe7b4.html#comment">查看评论</a>]]></description>
        <pubDate>2007-10-22  08:59</pubDate>
        <category><![CDATA[Java]]></category>
        <author><![CDATA[googic]]></author>
		<guid>http://hi.baidu.com/googic/blog/item/5997d2caf9a37a45f21fe7b4.html</guid>
</item>

<item>
        <title><![CDATA[破解 Windows Genuine Advantage 正版验证的办法]]></title>
        <link><![CDATA[http://hi.baidu.com/googic/blog/item/287ad71b13df7cd6ad6e75f6.html]]></link>
        <description><![CDATA[
		
		<p><font color="#0000ff">方法1</font></p>
<p>步骤为：<br>
1、打开IE--“工具”--“Internet选项”。<br>
2、选择“程序”选项卡，单击“管理加载项...”按纽，找到“Windows Genuine Advantage Validation Tool”，选择“禁用”。<br>
3、关闭IE，重新启动IE，上WindowsUpdate，IE提示本页需要“Windows Genuine Advantage Validation Tool”启用，不用管它，会发现验证通过，WindowsUpdate正在查找适合本机的更新，更新成功.......</p>
<p>这里 Disable WGA Validation Check 有详细图解（english）</p>
<p> </p>
<p><font color="#0000ff">方法2</font></p>
<p>1、新建一个文本文档，然后输入：Fuck Microsoft!</p>
<p>2、另存为：data.dat</p>
<p>3、然后把这个 data.dat 属性设置为"只读"。</p>
<p>4、放到 C:\Documents and Settings\All Users\Application Data\Windows Genuine Advantage\data 里面替换原文件。</p>
<p> </p>
<p><font color="#0000ff">方法3</font></p>
<p>download Windows.Genuine.Advantage.Validation.Tool.Patch-TWK</p>
<p>1. Unzip, Unrar.<br>
2. Locate \WINDOWS\system32\LegitCheckControl.dll<br>
3. Close all iexplorer windows, run twk-winupdatepatch.exe .<br>
4. Enjoy</p>
<p> </p>
<p><font color="#0000ff">方法4</font></p>
<p>破解的方式很简单，先开 windows update 到有一个要你选「自订更新」或是<br>
「快速更新」的网页，先不要按按钮，在网址列上贴下面这段 script 按 Enter</p>
<p>javascript:void(window.g_sDisableWGACheck=’all’)</p>
<p>然后就按平常的操作使用。</p> <a href="http://hi.baidu.com/googic/blog/item/287ad71b13df7cd6ad6e75f6.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/googic/blog/category/Windows%20Xp%202003">Windows Xp 2003</a>&nbsp;<a href="http://hi.baidu.com/googic/blog/item/287ad71b13df7cd6ad6e75f6.html#comment">查看评论</a>]]></description>
        <pubDate>2007-10-18  13:12</pubDate>
        <category><![CDATA[Windows Xp 2003]]></category>
        <author><![CDATA[googic]]></author>
		<guid>http://hi.baidu.com/googic/blog/item/287ad71b13df7cd6ad6e75f6.html</guid>
</item>

<item>
        <title><![CDATA[三种Tomcat的插件比较]]></title>
        <link><![CDATA[http://hi.baidu.com/googic/blog/item/5d9e543db8b61ded3d6d97ed.html]]></link>
        <description><![CDATA[
		
		<p dir="ltr" style="MARGIN-RIGHT: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在Tomcat下开发一些项目时，不可避免的会用到针对Tomcat的插件来进行调试，目前我接触到的插件有如下三种，虽然它们都能对工程进行调试，它在一些其它功能上面却有其区别</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Myeclipse：这个是最强大的Eclipse插件，差不多什么都有，是一个一站式的解决插件。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WTP（Web Tools Platform）：是由Eclipse自己开发的插件。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TomcatPlugin（sysdeo）：最老牌的Tomcat插件,也是最好用的。</p>
<p> </p>
<ol>
<li>Myeclipse 插件对Tomcat的支持看起来应该是最好的，特点是热部署。不管是对Servlet的修改，还是对web.xml的修改都可以。却可以做到，哪个变了，就加载哪个。它可以很方便的把你的工程直接发布到Tomcat中去，或者是以war的形式发布过去。 </li>
    <li>WTP（Web Tools Platform）<br>
：相对MyEclipse于，WTP则实现了部署的透明化，Myeclipse在启动Tomcat后，要你通过myEclipse把工程部署到Tomcat下，它会对你的Tomcat目录下添加一些文件。但是WTP则对你的Tomcat不会有任何修改。<br>
但我也发现了使用WTP 部署Web工程时的一个问题，对web.xml文件的修改不会自动的被重新加载，但更改Servlet会重新加载Servlet，并且同时重新加载web.xml。<br>
也就是你想重新加载web.xml，你只有佯装修改一个Servlet，才能触发重新加载web.xml。不知道以后的版本会不会修改这点。 </li>
    <li>TomcatPlugin（sysdeo）：最老牌的tomcat插件了,相对来说在Tomcat调试领域也是最好用的了，不过它有点与WTP一样，无法自动加载web.xml变化。但它也有它的绝招，是另外两个插件不能比的。它有两种支持调试的方式： 
<ol>
<li>建立Tomcat工程，这时可以使用热部署，tomcatPlugin（sysdeo）由于它并不真正的部署工程，使用 TomcatPlugin（sysdeo）添加一个工程时，实际上在Tomcat\conf\Catalina\localhost目录下添加了一个文件，当Tomcat启动时就会加载这个工程，这时当然也可以调试。 </li>
    <li>另外一种支持调试的功能是其它两个插件没有的，比如你的工程是通过ANT布置到Tomcat下去的，你的目录结构无法满足WTP与 Myeclipse的要求，这时你没有办法来使用这两个插件来进行调度，但是使用TomcatPlugin却可以。你只要在设置window－&gt; preferences－&gt;tomcat－&gt;soure path即可。 </li>
</ol>
</li>
</ol>
    <p><br>
个人Blog:&nbsp;&nbsp;<a href="http://www.blogjava.net/itspy">http://www.blogjava.net/itspy</a></p>
    <p><br>
插件的适应环境：<br>
<br>
&nbsp;&nbsp;&nbsp; 如果没有特别的原因，应该尽量选择TomcatPlugin（sysdeo）。</p>
    <ol>
<li>如果是一个全新的项目，上级完全放权了，你可以使用myEclipse与WTP，因为它能实现热部署，调度修改代码十分方便。但它们相对Tomcat来说，一个是侵入式的，一个却是无侵入的。你可以针对这个特点来在两者之间进行选择。 </li>
        <li>如果是一个已经有一定历史积累的工程，或者是无法对目录结构进行控制的工作，这时推荐使用使用TomcatPlugin（sysdeo）。<br>
因为myEclipse与WTP对工程对目录结构都有一定的要求，因为它们要把工程部署到Tomcat上去，所以对工程目录结构上都有自己的要求。比如在哪放置WEB-INFO，在哪个目录放置源文件，并且两个插件之间的工程无法形成兼容与共享。<br>
但是TomcatPlugin（sysdeo）只是充当一个外挂来启动Tomcat，并把指定的源代码与Tomcat里面运行的项目关联起来，进行调试。所以它对目录结构没有要求，比较适应于无法对目录结构进行控制的项目，一个普通的Java工程即可以。 </li>
</ol>
        <p> </p> <a href="http://hi.baidu.com/googic/blog/item/5d9e543db8b61ded3d6d97ed.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/googic/blog/category/Java">Java</a>&nbsp;<a href="http://hi.baidu.com/googic/blog/item/5d9e543db8b61ded3d6d97ed.html#comment">查看评论</a>]]></description>
        <pubDate>2007-10-03  10:08</pubDate>
        <category><![CDATA[Java]]></category>
        <author><![CDATA[googic]]></author>
		<guid>http://hi.baidu.com/googic/blog/item/5d9e543db8b61ded3d6d97ed.html</guid>
</item>

<item>
        <title><![CDATA[运行指令的问题]]></title>
        <link><![CDATA[http://hi.baidu.com/googic/blog/item/326dcc3de719e3c59e3d6259.html]]></link>
        <description><![CDATA[
		
		chkdsk.exe-----Chkdsk磁盘检查 devmgmt.msc--- 设备管理器 <br>
regsvr32 /u *.dll----停止dll文件运行 drwtsn32------ 系统医生 <br>
rononce -p ----15秒关机 dxdiag---------检查DirectX信息 <br>
regedt32-------注册表编辑器 Msconfig.exe---系统配置实用程序 <br>
rsop.msc-------组策略结果集 mem.exe--------显示内存使用情况 <br>
regedit.exe----注册表 winchat--------XP自带局域网聊天 <br>
progman--------程序管理器 winmsd---------系统信息 <br>
perfmon.msc----计算机性能监测程序 winver---------检查Windows版本 <br>
sfc /scannow-----扫描错误并复原 taskmgr-----任务管理器（2000／xp／2003） winver---------检查Windows版本 <br>
wmimgmt.msc----打开windows管理体系结构(WMI) wupdmgr--------windows更新程序 <br>
wscript--------windows脚本宿主设置 write----------写字板 <br>
winmsd---------系统信息 wiaacmgr-------扫描仪和照相机向导 <br>
winchat--------XP自带局域网聊天 mem.exe--------显示内存使用情况 <br>
Msconfig.exe---系统配置实用程序 mplayer2-------简易widnows media player <br>
mspaint--------画图板 mstsc----------远程桌面连接 <br>
mplayer2-------媒体播放机 magnify--------放大镜实用程序 <br>
mmc------------打开控制台 mobsync--------同步命令 <br>
dxdiag---------检查DirectX信息 drwtsn32------ 系统医生 <br>
devmgmt.msc--- 设备管理器 dfrg.msc-------磁盘碎片整理程序 <br>
diskmgmt.msc---磁盘管理实用程序 dcomcnfg-------打开系统组件服务 <br>
ddeshare-------打开DDE共享设置 dvdplay--------DVD播放器 <br>
net stop messenger-----停止信使服务 notepad--------打开记事本 nslookup-------网络管理的工具向导 ntbackup-------系统备份和还原 narrator-------屏幕“讲述人” ntmsmgr.msc----移动存储管理器 ntmsoprq.msc---移动存储管理员操作请求 netstat -an----(TC)命令检查接口 syncapp--------创建一个公文包 sysedit--------系统配置编辑器 sigverif-------文件签名验证程序 sndrec32-------录音机 shrpubw--------创建共享文件夹 secpol.msc-----本地安全策略 <br>
syskey---------系统加密，一旦加密就不能解开， 保护windows xp系统的双重密码 <br>
services.msc---本地服务设置 Sndvol32-------音量控制程序 <br>
sfc.exe--------系统文件检查器 sfc /scannow---windows文件保护 <br>
tsshutdn-------60秒倒计时关机命令 tourstart------xp简介（安装完成后出现的漫游xp程序） <br>
taskmgr--------任务管理器 eventvwr-------事件查看器 <br>
eudcedit-------造字程序 explorer-------打开资源管理器 <br>
packager-------对象包装程序 perfmon.msc----计算机性能监测程序 <br>
progman--------程序管理器 regedit.exe----注册表 <br>
rsop.msc-------组策略结果集 regedt32-------注册表编辑器 <br>
rononce -p ----15秒关机 regsvr32 /u *.dll----停止dll文件运行 <br>
regsvr32 /u zipfldr.dll------取消ZIP支持 cmd.exe--------CMD命令提示符 <br>
chkdsk.exe-----Chkdsk磁盘检查 certmgr.msc----证书管理实用程序 <br>
calc-----------启动计算器 charmap--------启动字符映射表 <br>
cliconfg-------SQL SERVER 客户端网络实用程序 Clipbrd--------剪贴板查看器 <br>
conf-----------启动netmeeting compmgmt.msc---计算机管理 <br>
cleanmgr-------垃圾整理 ciadv.msc------索引服务程序 <br>
osk------------打开屏幕键盘 odbcad32-------ODBC数据源管理器 <br>
oobe/msoobe /a----检查XP是否激活 lusrmgr.msc----本机用户和组 <br>
logoff---------注销命令 iexpress-------木马捆绑工具，系统自带 <br>
Nslookup-------IP地址侦测器 fsmgmt.msc-----共享文件夹管理器 <a href="http://hi.baidu.com/googic/blog/item/326dcc3de719e3c59e3d6259.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/googic/blog/category/%B7%FE%CE%F1%C6%F7%B0%B2%C8%AB">服务器安全</a>&nbsp;<a href="http://hi.baidu.com/googic/blog/item/326dcc3de719e3c59e3d6259.html#comment">查看评论</a>]]></description>
        <pubDate>2007-08-21  07:34</pubDate>
        <category><![CDATA[服务器安全]]></category>
        <author><![CDATA[googic]]></author>
		<guid>http://hi.baidu.com/googic/blog/item/326dcc3de719e3c59e3d6259.html</guid>
</item>


</channel>
</rss>