??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲成a人片在线观看日本,亚洲AV日韩综合一区,国产精品亚洲专区在线观看http://www.tkk7.com/dybjsun/zh-cnSat, 10 May 2025 10:20:05 GMTSat, 10 May 2025 10:20:05 GMT60Linux中Samba详细安装http://www.tkk7.com/dybjsun/archive/2012/07/08/382520.htmldybjsundybjsunSun, 08 Jul 2012 04:23:00 GMThttp://www.tkk7.com/dybjsun/archive/2012/07/08/382520.htmlhttp://www.tkk7.com/dybjsun/comments/382520.htmlhttp://www.tkk7.com/dybjsun/archive/2012/07/08/382520.html#Feedback0http://www.tkk7.com/dybjsun/comments/commentRss/382520.htmlhttp://www.tkk7.com/dybjsun/services/trackbacks/382520.html Z实现WindowsL与Linux服务器之间的资源׃n QLinux 操作pȝ提供了Samba服务QSamba服务ZU不同的操作pȝ架v了一座桥梁,使Linuxpȝ和Windowspȝ之间能够实现互相通信Qؓq泛的Linux爱好者提供了极大方便。本文简要介l如何在Linux操作pȝ上搭建Samba服务器和单配|?/span>

 

1、服务查?/span>

默认情况下,Linuxpȝ在默认安装中已经安装了Samba服务包的一部分 Qؓ了对整个q程有一个完整的了解Q在此先这部分卸蝲掉?/span> 使用命o

rpm -qa | grep samba Q默认情况下可以查询C个已l存在的包:

samba-client-3.0.33-3.7.el5

samba-common-3.0.33-3.7.el5

 

2、卸载Samba

用rpm -e 两个包卸蝲掉。对于samba-common-3.0.33-3.7.el5Q因Z其它rpm包之间存在依赖关p,所以必d参数-f?-nodepsQ?f是指强制Q?-nodeps是指不检查依赖关p,具体完整命o为:

 rpm -e samba-common-3.0.33-3.7.el5 -f --nodeps

rpm -e samba-client-3.0.33-3.7.el5 -f --nodeps

 

3、安装Samba 

用以下命令安装:

rpm -ivh samba-3.0.33-3.29.el5_6.2.i386.rpm -f --nodeps

rpm -ivh samba-client-3.0.33-3.29.el5_6.2.i386.rpm  -f --nodeps
rpm -ivh samba-common-3.0.33-3.29.el5_6.2.i386.rpm -f --nodeps

安装完成后,使用命o rpm -qa | grep samba q行查询Q发现搭建samba服务器所依赖的所有服务器都已l安装好了即可?/span>

 

4、配|smb.conf文g

Samba的配|文件一般就攑֜ /etc/samba 目录中,主配|文件名?/span> smb.conf Q文件中记录着大量的规则和׃n信息Q所以是samba服务非常重要的核心配|文Ӟ完成samba服务器搭建的大部分主要配|都在该文g中进行?/span>

Samba 服务器的工作原理是:客户端向Samba服务器发赯求,h讉K׃n目录QSamba服务器接收请求,查询smb.conf文gQ查看共享目录是否存在,以及来访者的讉K权限Q如果来访者具有相应的权限Q则允许客户端访问,最后将讉Kq程中系l的信息以及采集的用戯问行Z息存攑֜日志文g中?/span> 

W一步:修改配置文g

     首先备䆾一下samba的配|文?/span>

cd /etc/samba

mv  smb.conf smb.conf bak

然后重新创徏一个smb.conf文g

touch smb.conf

然后我们把这D写入smb.conf?/span> 

[global]

      workgroup = LinuxSir

     netbios name = LinuxSir05
     server string = Linux Samba Server TestServer
     security = share

  [linuxsir]
             path = /opt/linuxsir
            writeable = yes
                browseable = yes 

    guest ok = yes

 

注解Q?/span>

[global] q段是全局配置Q是必段写的。其中有如下的几行;

workgroup 是Windows中显C的工作l;在这里我讄的是LINUXSIR Q用大写Q;
netbios name 是在Windows中显C出来的计算机名Q?/span>
server string 是Samba服务器说明,可以自己来定义;q个不是什么重要的Q?/span>
security q是验证和登录方式,q里我们用了share Q验证方式有好多U,q是其中一U;另外一U常用的是user的验证方式;如果用share呢,是不用讄用户和密码了Q?/span>

[linuxsir] q个在Windows中显C出来是׃n的目录;
path = 可以讄要共享的目录攑֜哪里Q?/span>
writeable 是否可写Q这里我讄为可写;
browseable 是否可以览Q可以;可以览意味着Q我们在工作l下能看到共享文件夹。如果您不想昄出来Q那p|ؓ browseable=no

guest ok 匿名用户以guestw䆾是登录;

W二步:建立相应目录q授权;  

[root@localhost ~]#  mkdir -p /opt/linuxsir

[root@localhost ~]# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)

[root@localhost ~]# chown -R nobody:nobody /opt/linuxsir 

    注释Q?/span>

关于授权nobodyQ我们先用id命o查看了nobody用户的信息,发现他的用户l也是nobodyQ我们要以这个ؓ准。有些系lnobody用户lƈ非是nobody Q?/span> 

 

W三步:启动smbd和nmbd服务器;

      [root@localhost ~]# smbd

      [root@localhost ~]# nmbd



dybjsun 2012-07-08 12:23 发表评论
]]>
转发和重定向的区?/title><link>http://www.tkk7.com/dybjsun/archive/2008/10/30/237510.html</link><dc:creator>dybjsun</dc:creator><author>dybjsun</author><pubDate>Wed, 29 Oct 2008 17:23:00 GMT</pubDate><guid>http://www.tkk7.com/dybjsun/archive/2008/10/30/237510.html</guid><wfw:comment>http://www.tkk7.com/dybjsun/comments/237510.html</wfw:comment><comments>http://www.tkk7.com/dybjsun/archive/2008/10/30/237510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/dybjsun/comments/commentRss/237510.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/dybjsun/services/trackbacks/237510.html</trackback:ping><description><![CDATA[ <p> <strong>转发方式:request.getRequestDispatcher().forward(); <br /></strong> <strong>重定向方?response.sendRedirect(); <br /><br /></strong> </p>下面?span>HttpServletResponse.sendRedirect</span>Ҏ实现的请求重定向?span>RequestDispatcher.forward</span>Ҏ实现的请求{发的ȝ比较Q? <p align="left"><span>     Q?span>1</span>Q?span>RequestDispatcher.forward</span>Ҏ只能请求{发给同一?span>WEB</span>应用中的lgQ?span>HttpServletResponse.sendRedirect </span>Ҏ不仅可以重定向到当前应用E序中的其他资源Q还可以重定向到同一个站点上的其他应用程序中的资源,甚至是用绝?span>URL</span>重定向到其他站点的资源。如果传递给<span>HttpServletResponse.sendRedirect </span>Ҏ的相?span>URL</span>以?span>/</span>”开_它是相对于整?span>WEB</span>站点的根目录Q如果创?span>RequestDispatcher</span>对象时指定的相对<span>URL</span>以?span>/</span>”开_它是相对于当?span>WEB</span>应用E序的根目录?/span></p><p align="left"><span>    Q?span>2</span>Q调?span>HttpServletResponse.sendRedirect</span>Ҏ重定向的讉Kq程l束后,览器地址栏中昄?span>URL</span>会发生改变,由初始的<span>URL</span>地址变成重定向的目标<span>URL</span>Q而调?span>RequestDispatcher.forward </span>Ҏ的请求{发过E结束后Q浏览器地址栏保持初始的<span>URL</span>地址不变?/span></p><p align="left"><span>    Q?span>3</span>Q?span>HttpServletResponse.sendRedirect</span>ҎҎ览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一?span>URL</span>的访问请求,q个q程好比有个l号叫“浏览器”的人写信找张三借钱Q张三回信说没有钱,让“浏览器”去找李四借,q将李四现在的通信地址告诉l了“浏览器 ”。于是,“浏览器”又按张三提供通信地址l李四写信借钱Q李四收C后就把钱汇给了“浏览器”。可见,“浏览器”一共发Z两封信和收到了两ơ回复, “浏览器”也知道他借到的钱李四之手?span>RequestDispatcher.forward</span>Ҏ在服务器端内部将h转发l另外一个资源,览器只知道发出了请求ƈ得到了响应结果,q不知道在服务器E序内部发生了{发行为。这个过E好比Ԓ号叫“浏览器”的人写信找张三借钱Q张三没有钱Q于是张三找李四借了一些钱Q甚臌可以加上自己的一些钱Q然后再这些钱汇给了“浏览器”。可见,“浏览器”只发出了一信和收C一ơ回复,他只知道从张三那里借到了钱Qƈ不知道有一部分钱出自李四之手?/span></p><p align="left"><span>     Q?span>4</span>Q?span>RequestDispatcher.forward</span>Ҏ的调用者与被调用者之间共享相同的<span>request</span>对象?span>response</span>对象Q它们属于同一个访问请求和响应q程Q?span>HttpServletResponse.sendRedirect</span>Ҏ调用者与被调用者用各自的<span>request</span>对象?span>response</span>对象Q它们属于两个独立的讉Kh和响应过E。对于同一?span>WEB</span>应用E序的内部资源之间的跌{Q特别是跌{之前要对hq行一些前期预处理Qƈ要?span>HttpServletRequest.setAttribute</span>Ҏ传递预处理l果Q那应该?span>RequestDispatcher.forward</span>Ҏ。不?span>WEB</span>应用E序之间的重定向Q特别是要重定向到另外一?span>WEB</span>站点上的资源的情况,都应该?span>HttpServletResponse.sendRedirect</span>Ҏ?/span></p><p align="left"><span>    Q?span>5</span>Q无论是<span>RequestDispatcher.forward</span>ҎQ还?span>HttpServletResponse.sendRedirect</span>ҎQ在调用它们之前Q都不能有内容已l被实际输出C客户端。如果缓冲区中已l有了一些内容,q些内容被从缓冲区中清除?br />       <br />        怎么选择是重定向q是转发呢?通常情况下{发更快,而且能保持request内的对象Q所以他是第一选择。但是由于在转发之后Q浏览器中URL仍然指向开始页面,此时如果重蝲当前面Q开始页面将会被重新调用。如果你不想看到q样的情况,则选择转发?br />不要仅仅Z把变量传C一个页面而用session作用域,那会无故增大变量的作用域Q{发也许可以帮助你解决q个问题。?br />         重定向:以前的request中存攄变量全部失效Qƈq入一个新的request作用域。?br />         转发Q以前的request中存攄变量不会失效Q就像把两个面拼到了一赗?/span></p><img src ="http://www.tkk7.com/dybjsun/aggbug/237510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/dybjsun/" target="_blank">dybjsun</a> 2008-10-30 01:23 <a href="http://www.tkk7.com/dybjsun/archive/2008/10/30/237510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习与感?/title><link>http://www.tkk7.com/dybjsun/archive/2008/10/29/237300.html</link><dc:creator>dybjsun</dc:creator><author>dybjsun</author><pubDate>Wed, 29 Oct 2008 02:00:00 GMT</pubDate><guid>http://www.tkk7.com/dybjsun/archive/2008/10/29/237300.html</guid><wfw:comment>http://www.tkk7.com/dybjsun/comments/237300.html</wfw:comment><comments>http://www.tkk7.com/dybjsun/archive/2008/10/29/237300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/dybjsun/comments/commentRss/237300.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/dybjsun/services/trackbacks/237300.html</trackback:ping><description><![CDATA[ <p>日语刚学Q有很多问题Q请指正?br /><span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">Q.<span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">a計書の作成について</span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt"> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">  </span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">1</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">つのa計書はQつのレビュヹ{きる成果物です。不同の使用者向け、設a書に該当の内容を明aすくVであります?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo3; tab-stops: list 18.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">SD</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">の方?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt"> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">  </span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">SD</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">階段の設a書は構成設a書です。書く時に、以下の観点を注意されます?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">このa計書の使用者は</span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">MK1</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">の担当者と</span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">MK3</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">の担当者です。この設a書によって、ソヹ{は作成することができます。しかも他の問題を考慮する必要がありません?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">MK3</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">の担当者はこのa計書よりテわVa計書を作成することができます?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">このa計書の詟끗い程度、品質の要求の高低と時間に係ります。最低の要求は、すくVのクラスとメソッドにインѝェーわVパラメーѝはっきり書きなければならなくて、簡単な処理フロヹ{書きます。しかもa語は曖昧な意呟끌あることができません?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">このa計書を書く時、きっと先にクラわVメソッドの一覧を作成して、且つ根拠を書き出します。また?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">FD</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">の設a書のすくVの機能を全部含ます?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">a計書を書く時、条理があって、入力から出力ま?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">1</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">つのわVップずつを説明します。一飛た끮ロジックがあることができません?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">a語は分かり易くなって、多性があることができません。且つレビュヹ{易いために多くの細い炏V注意します?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 21pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo3; tab-stops: list 18.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">BD</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">の方面。これらは近?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">FJ</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Dѝ</span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">BD</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">a計書から習いました。間違いの場所を指摘してください?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l3 level2 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">BD</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">階段の設a書は基本設a書です。ユヹ{Q例えばQ本製品の用者)の立場からこの設a書を作成します。ユヹ{のすくVの需要に寑ֿして、説明を行います?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l3 level2 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">゗テムのソフトウェア、ハヹ{ウェアの規模性と複雑性に対して、設a書に対応することがあるかどうか?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l3 level2 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">゗テムの拡弉|、設a書に対応することがあるかどうか?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l3 level2 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用された技術の複雑性と難しくに対して、製品の高い品質のために、設a書に対応することがあるかどうか?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l3 level2 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">性能とセキュリティなど方面、設a書に対応することがあるかどうか?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l3 level2 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">この製品はどれくらいの時間をѝことができます。設a書に対応することがあるかどうか?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l3 level2 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">ユーザの需要が曖昧の場合、設a書に対応することがあるかどうか。そして増えるまたは減らす作業量、複雑性などに対して、考えることがあるかどうか?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l3 level2 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">a語は分かり易くなって、多性があることができません。設a書を書く時、どのようにレビューし易いと考えます?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 21pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo3; tab-stops: list 18.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">FD</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">の方面?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo4; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">FD</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">階段の設a書は機能設a書です。主に基本設a書を対応して、コミ냔ューѝ上でどのように実現します?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo4; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">基本a計書と構成a計書の間すくVの設aは能a計書の内容だと思います。この設a書は開のҎです。内容必ずは合理的と正しいです?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo4; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">a語は分かり易くなって、多性があることができません。且つレビュヹ{易いために多くの細い炏V注意します?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">Q.<span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">レビューについて</span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">a計書では、プロジェクトと会社の規約によって?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">Excel</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版文書または</span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">Word</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版文書があります?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">Excel</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版の文書は分かり易くて、しかしレビューに役立ちません?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">Word</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版の文書はレビュヹ{役立って、しかし分かることは苦労しています?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">a計書の難しい程度と会社のデヹ{によって、予定するバッグ数を定します?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">a計書を書きiわった後に、自己レビュヹ{て、向かうしレビュヹ{ることが必要です?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">レビュー前に、本回のレビュー観点を明します?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">レビューの時に、担当者はa計書を読むんで、レビュDは問題を指摘します。問のѝプによって、分します?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">レビューiわったから、レビュー結果報告書と結果分析報告を作成します。指摘されたバッグ、バッグの原因、予定するバッグ数によって、分析して、見解を提出します。また、もう一回レビュヹ{必要かどうかとレビュD炏V定します。合aするバッグ数は予定するバッグ数より大きくまたはなく場合、管理者はこの問題を重視する必要があります?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">レビューi果報告書とi果分析報告によって、管理者はa計書の品質と担当者の問題を見ます?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">Q.<span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">プロジェクト理について?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">オフ゗アので、プロジェクト内宏V明確にしなければなりません。明しない作業があることができません?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">プロジェクトの開発の中で?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">2</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">つの表を保守する必要があります。問一覧表と作業一覧表です?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">それぞれのデヹ{を取得します。例えばQ新規開?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">1k</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">わVップ当たり各階段の指標、レビュヹ{バッグ数{?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">MK2</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">MK3</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">CT</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA">ST</span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">それぞれのテわV観点を明しました。テわVされる内宏VソーわV構成設a書、機能設a書、基本設a書です?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">R票で進捗情報を表Cします?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l2 level2 lfo2; tab-stops: list 39.0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA; mso-bidi-font-family: 'QS 明朝'"> <span style="mso-list: Ignore">?span style="FONT: 7pt 'Times New Roman'">      </span></span> </span> <span style="FONT-SIZE: 9pt; FONT-FAMILY: 'QS 明朝'; mso-fareast-language: JA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">プロジェクト会議に問をa録して、次の会議にすべての問題を確認します?/span> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt"> <span lang="EN-US" style="FONT-SIZE: 9pt; mso-fareast-font-family: 'QS 明朝'; mso-fareast-language: JA"> <o:p> </o:p> </span> </p> <p> </p> <img src ="http://www.tkk7.com/dybjsun/aggbug/237300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/dybjsun/" target="_blank">dybjsun</a> 2008-10-29 10:00 <a href="http://www.tkk7.com/dybjsun/archive/2008/10/29/237300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何q行评审Q?/title><link>http://www.tkk7.com/dybjsun/archive/2008/03/05/183979.html</link><dc:creator>dybjsun</dc:creator><author>dybjsun</author><pubDate>Wed, 05 Mar 2008 06:50:00 GMT</pubDate><guid>http://www.tkk7.com/dybjsun/archive/2008/03/05/183979.html</guid><wfw:comment>http://www.tkk7.com/dybjsun/comments/183979.html</wfw:comment><comments>http://www.tkk7.com/dybjsun/archive/2008/03/05/183979.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/dybjsun/comments/commentRss/183979.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/dybjsun/services/trackbacks/183979.html</trackback:ping><description><![CDATA[  本h最q在日本参加了一个富士通本部的软g开发,在如何进行RQ)QIQhQ遇C问题Q不知道如何开展,也不能保证RQ)QIQL质量。目前采取的{略是在REVIEW之前Q将CHECKLIST写下来,表明哪些需要评审,q要辑ֈ什么要求?q将此CHECKLIST发给全组Q补充完善。同时规定一些指标,比如每一|要发现多少个错Q达不到则证明评审没辑ֈ预计的质量?br />  富士通的员工在对每个文档评审Ӟ会逐词逐句的查看,q找出问题,q对每次更新留下记录Q以备查看。能够做C丝不苟,q点我觉得是我们与日本员工的最大区别。现在发玎ͼ当提交一定的产物之前Q一定要Ҏ交的产物q行REVIEWQ检查它的质量,要逐词逐句的查看,力求扑և所有的问题。在查的q程中,不能放过一丝的l节Q不能以为很单,且一直在做的事,很熟悉,不需要很仔细的看。一定要在心中认己是个新手,要逐词逐句的理解每句的含义。只有这P才能保证提交的物是一个合格的产品Q才能与客户之间建立良好的合作关pR?br /><img src ="http://www.tkk7.com/dybjsun/aggbug/183979.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/dybjsun/" target="_blank">dybjsun</a> 2008-03-05 14:50 <a href="http://www.tkk7.com/dybjsun/archive/2008/03/05/183979.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat启动分析http://www.tkk7.com/dybjsun/archive/2008/01/10/174216.htmldybjsundybjsunThu, 10 Jan 2008 03:24:00 GMThttp://www.tkk7.com/dybjsun/archive/2008/01/10/174216.htmlhttp://www.tkk7.com/dybjsun/comments/174216.htmlhttp://www.tkk7.com/dybjsun/archive/2008/01/10/174216.html#Feedback0http://www.tkk7.com/dybjsun/comments/commentRss/174216.htmlhttp://www.tkk7.com/dybjsun/services/trackbacks/174216.html1 - Tomcat Server的组成部?

1.1 - Server

A Server element represents the entire Catalina servlet container. (Singleton)

1.2 - Service

A Service element represents the combination of one or more Connector components that share a single Engine
Service是这样一个集合:它由一个或者多个Connectorl成Q以及一个EngineQ负责处理所有Connector所获得的客戯?br />

1.3 - Connector

一个Connector在某个指定端口上侦听客戯求,q将获得的请求交lEngine来处理,从Engine处获得回应ƈq回客户
TOMCAT有两个典型的ConnectorQ一个直接侦听来自browser的httphQ一个侦听来自其它WebServer的请?br />Coyote Http/1.1 Connector 在端?080处侦听来自客户browser的httph
Coyote JK2 Connector 在端?009处侦听来自其它WebServer(Apache)的servlet/jsp代理h

1.4 - Engine

The Engine element represents the entire request processing machinery associated with a particular Service
It receives and processes all requests from one or more Connectors
and returns the completed response to the Connector for ultimate transmission back to the client
Engine下可以配|多个虚拟主机Virtual HostQ每个虚拟主机都有一个域?br />当Engine获得一个请求时Q它把该h匚w到某个Host上,然后把该h交给该Host来处?br />Engine有一个默认虚拟主机,当请求无法匹配到M一个Host上的时候,交l该默认Host来处?br />

1.5 - Host

 

代表一个Virtual HostQ虚拟主机,每个虚拟L和某个网l域名Domain Name相匹?br />每个虚拟L下都可以部v(deploy)一个或者多个Web AppQ每个Web App对应于一个ContextQ有一个Context path
当Host获得一个请求时Q将把该h匚w到某个Context上,然后把该h交给该Context来处?br />匚w的方法是“最长匹配”,所以一个path==""的Context成Host的默认Context
所有无法和其它Context的\径名匚w的请求都最l和该默认Context匚w

1.6 - Context

一个Context对应于一个Web ApplicationQ一个Web Application׃个或者多个Servletl成
Context在创建的时候将Ҏ配置文g$CATALINA_HOME/conf/web.xml?WEBAPP_HOME/WEB-INF/web.xml载入Servletc?br />当Context获得hӞ在自己的映表(mapping table)中寻扄匚w的Servletc?br />如果扑ֈQ则执行该类Q获得请求的回应Qƈq回

2 - Tomcat Server的结构图01-startup.gif

3 - 配置文g$CATALINA_HOME/conf/server.xml的说?

该文件描qC如何启动Tomcat Server

 

4 - Context的部|配|文件web.xml的说?

一个Context对应于一个Web AppQ每个Web App是由一个或者多个servletl成?br />当一个Web App被初始化的时候,它将用自qClassLoader对象载入“部|配|文件web.xml”中定义的每个servletc?br />它首先蝲入在$CATALINA_HOME/conf/web.xml中部|的servletc?br />然后载入在自qWeb App根目录下的WEB-INF/web.xml中部|的servletc?br />web.xml文g有两部分Qservletcd义和servlet映射定义
每个被蝲入的servletc都有一个名字,且被填入该Context的映表(mapping table)中,和某UURL PATTERN对应
当该Context获得hӞ查询mapping tableQ找到被h的servletQƈ执行以获得请求回?br />

分析一下所有的Context׃n的web.xml文gQ在其中定义的servlet被所有的Web App载入

 

5 - Tomcat Server处理一个httph的过E?

假设来自客户的请求ؓQ?br />http://localhost:8080/wsota/wsota_index.jsp

1) h被发送到本机端口8080Q被在那里侦听的Coyote HTTP/1.1 Connector获得
2) Connector把该h交给它所在的Service的Engine来处理,q等待来自Engine的回?br />3) Engine获得hlocalhost/wsota/wsota_index.jspQ匹配它所拥有的所有虚拟主机Host
4) Engine匚w到名为localhost的HostQ即使匹配不C把请求交l该Host处理Q因Host被定义ؓ该Engine的默认主机)
5) localhost Host获得h/wsota/wsota_index.jspQ匹配它所拥有的所有Context
6) Host匚w到\径ؓ/wsota的ContextQ如果匹配不到就把该h交给路径名ؓ""的Contextd理)
7) path="/wsota"的Context获得h/wsota_index.jspQ在它的mapping table中寻扑֯应的servlet
8) Context匚w到URL PATTERN?.jsp的servletQ对应于JspServletc?br />9) 构造HttpServletRequest对象和HttpServletResponse对象Q作为参数调用JspServlet的doGet或doPostҎ
10)Context把执行完了之后的HttpServletResponse对象q回lHost
11)Host把HttpServletResponse对象q回lEngine
12)Engine把HttpServletResponse对象q回lConnector
13)Connector把HttpServletResponse对象q回l客户browser

<!----------------------------------------------------------------------------------------------->


<web-app>


<!-- 概述Q?br /> 该文件是所有的WEB APPq的部|配|文Ӟ
每当一个WEB APP被DEPLOYQ该文g都将先被处理Q然后才是WEB APP自己?WEB-INF/web.xml
-->



<!-- +-------------------------+ -->
<!-- | servletcd义部? | -->
<!-- +-------------------------+ -->



<!-- DefaultServlet
当用LHTTPh无法匚wM一个servlet的时候,该servlet被执?br /> URL PATTERN MAPPING : /
-->

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>


<!-- InvokerServlet
处理一个WEB APP中的匿名servlet
当一个servlet被编写ƈ~译攑օ/WEB-INF/classes/中,却没有在/WEB-INF/web.xml中定义的时?br /> 该servlet被调用,把匿名servlet映射?servlet/ClassName的Ş?br /> URL PATTERN MAPPING : /servlet/*
-->

<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>


<!-- JspServlet
当请求的是一个JSP面的时候(*.jspQ该servlet被调?br /> 它是一个JSP~译器,请求的JSP面~译成ؓservlet再执?br /> URL PATTERN MAPPING : *.jsp
-->

<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>logVerbosityLevel</param-name>
<param-value>WARNING</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>



<!-- +---------------------------+ -->
<!-- | servlet映射定义部分 | -->
<!-- +---------------------------+ -->


<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>


<!-- +------------------------+ -->
<!-- | 其它部分Q略d | -->
<!-- +------------------------+ -->

... ... ... ...

</web-app>


<!----------------------------------------------------------------------------------------------->

<!----------------------------------------------------------------------------------------------->



<!-- 启动Server
在端?005处等待关闭命?br /> 如果接受?SHUTDOWN"字符串则关闭服务?br /> -->

<Server port="8005" shutdown="SHUTDOWN" debug="0">


<!-- Listener ???
目前没有看到q里
-->

<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>


<!-- Global JNDI resources ???
目前没有看到q里Q先略去
-->

<GlobalNamingResources>
... ... ... ...
</GlobalNamingResources>


<!-- Tomcat的Standalone Service
Service是一lConnector的集?br /> 它们q一个Engine来处理所有Connector收到的请?br /> -->

<Service name="Tomcat-Standalone">


<!-- Coyote HTTP/1.1 Connector
className : 该Connector的实现类是org.apache.coyote.tomcat4.CoyoteConnector
port : 在端口号8080处侦听来自客户browser的HTTP1.1h
minProcessors : 该Connector先创?个线E等待客戯求,每个h׃个线E负?br /> maxProcessors : 当现有的U程不够服务客户hӞ若线EL不75个,则创建新U程来处理请?br /> acceptCount : 当现有线E已l达到最大数75Ӟ为客戯求排?br /> 当队列中h数超q?00Ӟ后来的请求返回Connection refused错误
redirectport : 当客戯求是httpsӞ把该h转发到端?443?br /> 其它属性略
-->

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080"
minProcessors="5" maxProcessors="75" acceptCount="100"
enableLookups="true"
redirectPort="8443"
debug="0"
connectionTimeout="20000"
useURIValidationHack="false"
disableUploadTimeout="true" />


<!-- Engine用来处理Connector收到的Httph
它将匚wh和自q虚拟LQƈ把请求{交给对应的Host来处?br /> 默认虚拟L是localhost
-->

<Engine name="Standalone" defaultHost="localhost" debug="0">


<!-- 日志c,目前没有看到Q略d -->

<Logger className="org.apache.catalina.logger.FileLogger" .../>

<!-- RealmQ目前没有看刎ͼ略去?-->

<Realm className="org.apache.catalina.realm.UserDatabaseRealm" .../>


<!-- 虚拟Llocalhost
appBase : 该虚拟主机的根目录是webapps/
它将匚wh和自qContext的\径,q把h转交l对应的Context来处?br /> -->

<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">


<!-- 日志c,目前没有看到Q略d -->

<Logger className="org.apache.catalina.logger.FileLogger" .../>


<!-- ContextQ对应于一个Web App
path : 该Context的\径名?"Q故该Context是该Host的默认Context
docBase : 该Context的根目录是webapps/mycontext/
-->

<Context path="" docBase="mycontext" debug="0"/>


<!-- 另外一个ContextQ\径名?wsota -->

<Context path="/wsota" docBase="wsotaProject" debug="0"/>


</Host>

</Engine>

</Service>

</Server>


<!----------------------------------------------------------------------------------------------->


dybjsun 2008-01-10 11:24 发表评论
]]>
全文搜烦 lucene使用与优?/title><link>http://www.tkk7.com/dybjsun/archive/2008/01/09/174065.html</link><dc:creator>dybjsun</dc:creator><author>dybjsun</author><pubDate>Wed, 09 Jan 2008 09:17:00 GMT</pubDate><guid>http://www.tkk7.com/dybjsun/archive/2008/01/09/174065.html</guid><wfw:comment>http://www.tkk7.com/dybjsun/comments/174065.html</wfw:comment><comments>http://www.tkk7.com/dybjsun/archive/2008/01/09/174065.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/dybjsun/comments/commentRss/174065.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/dybjsun/services/trackbacks/174065.html</trackback:ping><description><![CDATA[1 lucene?br />1.1 什么是lucene<br />Lucene是一个全文搜索框Ӟ而不是应用品。因此它q不像www.baidu.com 或者google Desktop那么拿来p用,它只是提供了一U工兯你能实现q些产品?br /><br />1.2 lucene能做什?br />要回{这个问题,先要了解lucene的本质。实际上lucene的功能很单一Q说到底Q就是你l它若干个字W串Q然后它Z提供一个全文搜索服务,告诉你你要搜索的关键词出现在哪里。知道了q个本质Q你可以发挥想象做MW合q个条g的事情了。你可以把站内新闻都索引了,做个资料库;你可以把一个数据库表的若干个字D늃引v来,那就不用再担心因为?like%”而锁表了Q你也可以写个自q搜烦引擎…?br /><br />1.3 你该不该选择lucene<br />下面l出一些测试数据,如果你觉得可以接受,那么可以选择?br />试一Q?50万记录,300M左右文本Q生成烦?80M左右Q?00U程下^均处理时?00ms?br />试二:37000记录Q烦引数据库中的两个varchar字段Q烦引文?.6MQ?00U程下^均处理时?.5ms?br /><br />2 lucene的工作方?br />lucene提供的服务实际包含两部分Q一入一出。所谓入是写入,卛_你提供的源(本质是字W串Q写入烦引或者将其从索引中删除;所谓出是读出,卛_用户提供全文搜烦服务Q让用户可以通过关键词定位源?br /><br />2.1写入程<br />源字W串首先l过analyzer处理Q包括:分词Q分成一个个单词Q去除stopwordQ可选)?br />源中需要的信息加入Document的各个Field中,q把需要烦引的Field索引hQ把需要存储的Field存储h?br />烦引写入存储器Q存储器可以是内存或盘?br /><br />2.2d程<br />用户提供搜烦关键词,l过analyzer处理?br />对处理后的关键词搜烦索引扑և对应的Document?br />用户Ҏ需要从扑ֈ的Document中提取需要的Field?br /><br />3 一些需要知道的概念<br />lucene用到一些概念,了解它们的含义,有利于下面的讲解?br /><br />3.1 analyzer<br />Analyzer 是分析器Q它的作用是把一个字W串按某U规则划分成一个个词语Qƈ去除其中的无效词语,q里说的无效词语是指英文中的“of”?“the”,中文中的 “的”、“地”等词语Q这些词语在文章中大量出玎ͼ但是本n不包含什么关键信息,L有利于羃烦引文件、提高效率、提高命中率?br />分词的规则千变万化,但目的只有一个:按语义划分。这点在英文中比较容易实玎ͼ因ؓ英文本n是以单词ؓ单位的,已经用空格分开Q而中文则必须以某U方法将q成一片的句子划分成一个个词语。具体划分方法下面再详细介绍Q这里只需了解分析器的概念卛_?br /><br />3.2 document<br />用户提供的源是一条条记录Q它们可以是文本文g、字W串或者数据库表的一条记录等{。一条记录经q烦引之后,是以一个Document的Ş式存储在索引文g中的。用戯行搜索,也是以Document列表的Ş式返回?br /><br />3.3 field<br />一个Document可以包含多个信息域,例如一文章可以包含“标题”、“正文”、“最后修Ҏ间”等信息域,q些信息域就是通过Field在Document中存储的?br />Field有两个属性可选:存储和烦引。通过存储属性你可以控制是否对这个Fieldq行存储Q通过索引属性你可以控制是否对该Fieldq行索引。这看v来似乎有些废话,事实上对q两个属性的正确l合很重要,下面举例说明Q?br />q是以刚才的文章Z子,我们需要对标题和正文进行全文搜索,所以我们要把烦引属性设|ؓ真,同时我们希望能直接从搜烦l果中提取文章标题,所以我们把标题域的存储属性设|ؓ真,但是׃正文域太大了Q我们ؓ了羃烦引文件大,正文域的存储属性设|ؓ假,当需要时再直接读取文Ӟ我们只是希望能从搜烦解果中提取最后修Ҏ_不需要对它进行搜索,所以我们把最后修Ҏ间域的存储属性设|ؓ真,索引属性设|ؓ假。上面的三个域涵盖了两个属性的三种l合Q还有一U全为假的没有用刎ͼ事实上Field不允怽那么讄Q因为既不存储又不烦引的域是没有意义的?br /><br />3.4 term<br />term是搜索的最单位,它表C文档的一个词语,term׃部分l成Q它表示的词语和q个词语所出现的field?br /><br />3.5 tocken<br />tocken是term的一ơ出玎ͼ它包含trem文本和相应的h偏移Q以及一个类型字W串。一句话中可以出现多ơ相同的词语Q它们都用同一个term表示Q但是用不同的tockenQ每个tocken标记该词语出现的地方?br /><br />3.6 segment<br />d索引时ƈ不是每个document都马上添加到同一个烦引文Ӟ它们首先被写入到不同的小文gQ然后再合ƈ成一个大索引文gQ这里每个小文g都是一个segment?br /><br />4 lucene的结?br />lucene包括core和sandbox两部分,其中core是luceneE_的核心部分,sandbox包含了一些附加功能,例如highlighter、各U分析器?br />Lucene core有七个包QanalysisQdocumentQindexQqueryParserQsearchQstoreQutil?br />4.1 analysis<br />Analysis包含一些内建的分析器,例如按空白字W分词的WhitespaceAnalyzerQ添加了stopwrodqo的StopAnalyzerQ最常用的StandardAnalyzer?br />4.2 document<br />Document包含文的数据结构,例如Documentcd义了存储文的数据结构,Fieldcd义了Document的一个域?br />4.3 index<br />Index 包含了烦引的dc,例如对烦引文件的segmentq行写、合q、优化的IndexWritercd对烦引进行读取和删除操作的?IndexReaderc,q里要注意的是不要被IndexReaderq个名字误导Q以为它是烦引文件的dc,实际上删除烦引也是由它完成,  IndexWriter只关心如何将索引写入一个个segmentQƈ它们合q优化;IndexReader则关注烦引文件中各个文的组lŞ式?br />4.4 queryParser<br />QueryParser 包含了解析查询语句的c,lucene的查询语句和sql语句有点cMQ有各种保留字,按照一定的语法可以l成各种查询?Lucene有很多种 Queryc,它们都承自QueryQ执行各U特D的查询QQueryParser的作用就是解析查询语句,按顺序调用各U?QuerycL扑ևl果?br />4.5 search<br />Search包含了从索引中搜索结果的各种c,例如刚才说的各种Queryc,包括TermQuery、BooleanQuery{就在这个包里?br />4.6 store<br />Store包含了烦引的存储c,例如Directory定义了烦引文件的存储l构QFSDirectory为存储在文g中的索引QRAMDirectory为存储在内存中的索引QMmapDirectoryZ用内存映的索引?br />4.7 util<br />Util包含一些公共工LQ例如时间和字符串之间的转换工具?br /><br />5 如何建烦?br />5.1 最单的能完成烦引的代码片断<br /><br />IndexWriter writer = new IndexWriter(?data/index/? new StandardAnalyzer(), true);<br />Document doc = new Document();<br />doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.TOKENIZED));<br />doc.add(new Field("content", "lucene works well", Field.Store.YES, Field.Index.TOKENIZED));<br />writer.addDocument(doc);<br />writer.optimize();<br />writer.close();<br /><br />下面我们分析一下这D代码?br />首先我们创徏了一个writerQƈ指定存放索引的目录ؓ?data/index”,使用的分析器为StandardAnalyzerQ第三个参数说明如果已经有烦引文件在索引目录下,我们覆盖它们?br />然后我们新徏一个document?br />我们向documentd一个fieldQ名字是“title”,内容是“lucene introduction”,对它q行存储q烦引?br />再添加一个名字是“content”的fieldQ内Ҏ“lucene works well”,也是存储q烦引?br />然后我们这个文档添加到索引中,如果有多个文档,可以重复上面的操作,创徏documentq添加?br />d完所有documentQ我们对索引q行优化Q优化主要是多个segment合ƈC个,有利于提高烦引速度?br />随后writer关闭Q这点很重要?br /><br />对,创徏索引p么简单!<br />当然你可能修改上面的代码获得更具个性化的服务?br /><br />5.2 烦引直接写在内?br />你需要首先创Z个RAMDirectoryQƈ其传给writerQ代码如下:<br /><br />Directory dir = new RAMDirectory();<br />IndexWriter writer = new IndexWriter(dir, new StandardAnalyzer(), true);<br />Document doc = new Document();<br />doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.TOKENIZED));<br />doc.add(new Field("content", "lucene works well", Field.Store.YES, Field.Index.TOKENIZED));<br />writer.addDocument(doc);<br />writer.optimize();<br />writer.close();<br /><br />5.3 索引文本文g<br />如果你想把纯文本文g索引hQ而不惌己将它们d字符串创建fieldQ你可以用下面的代码创徏fieldQ?br /><br />Field field = new Field("content", new FileReader(file));<br /><br />q里的file是该文本文件。该构造函数实际上是读L件内容,q对其进行烦引,但不存储?br /><br />6 如何l护索引<br />索引的维护操作都是由IndexReadercL供?br /><br />6.1 如何删除索引<br />lucene提供了两U从索引中删除document的方法,一U是<br /><br />void deleteDocument(int docNum)<br /><br />q种Ҏ是根据document在烦引中的编h删除Q每个document加进索引后都会有个唯一~号Q所以根据编号删除是一U精删除,但是q个~号是烦引的内部l构Q一般我们不会知道某个文件的~号到底是几Q所以用处不大。另一U是<br /><br />void deleteDocuments(Term term)<br /><br />q种Ҏ实际上是首先Ҏ参数term执行一个搜索操作,然后把搜索到的结果批量删除了。我们可以通过q个Ҏ提供一个严格的查询条gQ达到删除指定document的目的?br />下面l出一个例子:<br /><br />Directory dir = FSDirectory.getDirectory(PATH, false);<br />IndexReader reader = IndexReader.open(dir);<br />Term term = new Term(field, key);<br />reader.deleteDocuments(term);<br />reader.close();<br /><br />6.2 如何更新索引<br />luceneq没有提供专门的索引更新ҎQ我们需要先相应的document删除Q然后再新的document加入索引。例如:<br /><br />Directory dir = FSDirectory.getDirectory(PATH, false);<br />IndexReader reader = IndexReader.open(dir);<br />Term term = new Term(“title? “lucene introduction?;<br />reader.deleteDocuments(term);<br />reader.close();<br /><br />IndexWriter writer = new IndexWriter(dir, new StandardAnalyzer(), true);<br />Document doc = new Document();<br />doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.TOKENIZED));<br />doc.add(new Field("content", "lucene is funny", Field.Store.YES, Field.Index.TOKENIZED));<br />writer.addDocument(doc);<br />writer.optimize();<br />writer.close();<br /><br /><br />7 如何搜烦<br />lucene 的搜索相当强大,它提供了很多辅助查询c,每个c都l承自Queryc,各自完成一U特D的查询Q你可以像搭U木一样将它们Ll合使用Q完成一些复杂操作;另外luceneq提供了Sortcdl果q行排序Q提供了Filtercd查询条gq行限制。你或许会不自觉地拿它跟SQL语句q行比较Q?“lucene能执行and、or、order by、where、like ?xx%’操作吗Q”回{是Q“当然没问题Q?br /><br />7.1 各种各样的Query<br />下面我们看看lucene到底允许我们q行哪些查询操作Q?br /><br />7.1.1 TermQuery<br />首先介绍最基本的查询,如果你想执行一个这L查询Q“在content域中包含‘lucene’的document”,那么你可以用TermQueryQ?br /><br />Term t = new Term("content", " lucene";<br />Query query = new TermQuery(t);<br /><br />7.1.2 BooleanQuery<br />如果你想q么查询Q“在content域中包含java或perl的document”,那么你可以徏立两个TermQueryq把它们用BooleanQueryq接hQ?br /><br />TermQuery termQuery1 = new TermQuery(new Term("content", "java");<br />TermQuery termQuery 2 = new TermQuery(new Term("content", "perl");<br />BooleanQuery booleanQuery = new BooleanQuery();<br />booleanQuery.add(termQuery 1, BooleanClause.Occur.SHOULD);<br />booleanQuery.add(termQuery 2, BooleanClause.Occur.SHOULD);<br /><br />7.1.3 WildcardQuery<br />如果你想Ҏ单词q行通配W查询,你可以用WildcardQueryQ通配W包括?’匹配一个Q意字W和?’匹配零个或多个L字符Q例如你搜烦’use*’,你可能找到’useful’或者’useless’:<br /><br />Query query = new WildcardQuery(new Term("content", "use*");<br /><br />7.1.4 PhraseQuery<br />你可能对中日关系比较感兴,x䏀中’和‘日’挨得比较近Q?个字的距dQ的文章Q超q这个距ȝ不予考虑Q你可以Q?br /><br />PhraseQuery query = new PhraseQuery();<br />query.setSlop(5);<br />query.add(new Term("content ", “中?);<br />query.add(new Term(“content? “日?);<br /><br />那么它可能搜到“中日合作……”、“中方和日方……”,但是搜不到“中国某高层领导说日本欠扁”?br /><br />7.1.5 PrefixQuery<br />如果你想搜以‘中’开头的词语Q你可以用PrefixQueryQ?br /><br />PrefixQuery query = new PrefixQuery(new Term("content ", "?);<br /><br />7.1.6 FuzzyQuery<br />FuzzyQuery用来搜烦怼的termQ用Levenshtein法。假设你x索跟‘wuzza’相似的词语Q你可以Q?br /><br />Query query = new FuzzyQuery(new Term("content", "wuzza");<br /><br />你可能得到‘fuzzy’和‘wuzzy’?br /><br />7.1.7 RangeQuery<br />另一个常用的Query是RangeQueryQ你也许x索时间域?0060101?0060130之间的documentQ你可以用RangeQueryQ?br /><br />RangeQuery query = new RangeQuery(new Term(“time? ?0060101?, new Term(“time? ?0060130?, true);<br /><br />最后的true表示用闭合区间?br /><br />7.2 QueryParser<br />看了q么多QueryQ你可能会问Q“不会让我自q合各UQuery吧,太麻烦了Q”当然不会,lucene提供了一U类gSQL语句的查询语句,我们姑且叫它lucene语句Q通过它,你可以把各种查询一句话搞定Qlucene会自动把它们查分成小块交l相应Query执行。下面我们对应每U?Query演示一下:<br />TermQuery可以用“field:key”方式,例如“content:lucene”?br />BooleanQuery中‘与’用?’,‘或’用?’,例如“content:java contenterl”?br />WildcardQuery仍然用?’和?’,例如“content:use*”?br />PhraseQuery用‘~’,例如“content:"中日"~5”?br />PrefixQuery用?’,例如“中*”?br />FuzzyQuery用‘~’,例如“content: wuzza ~”?br />RangeQuery用‘[]’或‘{}’,前者表C闭区间Q后者表C开区间Q例如“time:[20060101 TO 20060130]”,注意TO区分大小写?br />你可以Q意组合query stringQ完成复杂操作,例如“标题或正文包括luceneQƈ且时间在20060101?0060130之间的文章”可以表CZؓQ? (title:lucene content:lucene) +time:[20060101 TO 20060130]”。代码如下:<br /><br />Directory dir = FSDirectory.getDirectory(PATH, false);<br />IndexSearcher is = new IndexSearcher(dir);<br />QueryParser parser = new QueryParser("content", new StandardAnalyzer());<br />Query query = parser.parse("+(title:lucene content:lucene) +time:[20060101 TO 20060130]";<br />Hits hits = is.search(query);<br />for (int i = 0; i < hits.length(); i++)<br />{<br />Document doc = hits.doc(i);<br />System.out.println(doc.get("title");<br />}<br />is.close();<br /><br />首先我们创徏一个在指定文g目录上的IndexSearcher?br />然后创徏一个用StandardAnalyzer作ؓ分析器的QueryParserQ它默认搜烦的域是content?br />接着我们用QueryParser来parse查询字串Q生成一个Query?br />然后利用q个QueryL扄果,l果以Hits的Ş式返回?br />q个Hits对象包含一个列表,我们挨个把它的内ҎC出来?br /><br />7.3 Filter<br />filter 的作用就是限制只查询索引的某个子集,它的作用有点像SQL语句里的whereQ但又有区别Q它不是正规查询的一部分Q只是对数据源进行预处理Q然后交l查询语句。注意它执行的是预处理,而不是对查询l果q行qoQ所以用filter的代h很大的,它可能会使一ơ查询耗时提高一癑ր?br />最常用的filter是RangeFilter和QueryFilter。RangeFilter是设定只搜烦指定范围内的索引QQueryFilter是在上次查询的结果中搜烦?br />Filter的用非常简单,你只需创徏一个filter实例Q然后把它传lsearcher。l上面的例子Q查询“时间在20060101?0060130之间的文章”除了将限制写在query string中,你还可以写在RangeFilter中:<br /><br />Directory dir = FSDirectory.getDirectory(PATH, false);<br />IndexSearcher is = new IndexSearcher(dir);<br />QueryParser parser = new QueryParser("content", new StandardAnalyzer());<br />Query query = parser.parse("title:lucene content:lucene";<br />RangeFilter filter = new RangeFilter("time", "20060101", "20060230", true, true);<br />Hits hits = is.search(query, filter);<br />for (int i = 0; i < hits.length(); i++)<br />{<br />Document doc = hits.doc(i);<br />System.out.println(doc.get("title");<br />}<br />is.close();<br /><br />7.4 Sort<br />有时你想要一个排好序的结果集Q就像SQL语句的“order by”,lucene能做刎ͼ通过Sort?br />Sort sort = new Sort(“time?; //相当于SQL的“order by time?br />Sort sort = new Sort(“time? true); // 相当于SQL的“order by time desc?br />下面是一个完整的例子Q?br /><br />Directory dir = FSDirectory.getDirectory(PATH, false);<br />IndexSearcher is = new IndexSearcher(dir);<br />QueryParser parser = new QueryParser("content", new StandardAnalyzer());<br />Query query = parser.parse("title:lucene content:lucene";<br />RangeFilter filter = new RangeFilter("time", "20060101", "20060230", true, true);<br />Sort sort = new Sort(“time?;<br />Hits hits = is.search(query, filter, sort);<br />for (int i = 0; i < hits.length(); i++)<br />{<br />Document doc = hits.doc(i);<br />System.out.println(doc.get("title");<br />}<br />is.close();<br /><br />8 分析?br />在前面的概念介绍中我们已l知道了分析器的作用Q就是把句子按照语义切分成一个个词语。英文切分已l有了很成熟的分析器Q?StandardAnalyzerQ很多情况下StandardAnalyzer是个不错的选择。甚至你会发现StandardAnalyzer也能对中文进行分词?br />但是我们的焦Ҏ中文分词QStandardAnalyzer能支持中文分词吗Q实践证明是可以的,但是效果q不好,搜烦“如果?会把“牛奶不如果汁好喝”也搜烦出来Q而且索引文g很大。那么我们手头上q有什么分析器可以使用呢?core里面没有Q我们可以在sandbox里面扑ֈ两个Q?ChineseAnalyzer和CJKAnalyzer。但是它们同样都有分词不准的问题。相比之下用StandardAnalyzer和?ChineseAnalyzer建立索引旉差不多,索引文g大小也差不多QCJKAnalyzer表现会差些,索引文g大且耗时比较ѝ?br />要解决问题,首先分析一下这三个分析器的分词方式。StandardAnalyzer和ChineseAnalyzer都是把句子按单个字切分,也就是说  “牛奶不如果汁好喝”会被它们切分成“牛 ??????喝”;而CJKAnalyzer则会切分成“牛?奶不 不如 如果 果汁 汁好好喝”。这也就解释了ؓ什么搜索“果汁”都能匹配这个句子?br />以上分词的缺点至有两个Q匹配不准确和烦引文件大。我们的目标是将上面的句子分解成 “牛?不如 果汁好喝”。这里的关键是语义识别Q我们如何识别“牛奶”是一个词而“奶不”不是词语?我们很自然会惛_Z词库的分词法Q也是我们先得C个词库,里面列D了大部分词语Q我们把句子按某U方式切分,当得到的词语与词库中的项匚wӞ我们pU切分是正确的。这样切词的q程p{变成匚w的过E,而匹配的方式最单的有正向最大匹配和逆向最大匹配两U,说白了就是一个从句子开头向后进行匹配,一个从句子末尾向前q行匚w。基于词库的分词词库非常重要Q词库的定w直接影响搜烦l果Q在相同词库的前提下Q据说逆向最大匹配优于正向最大匹配?br />当然q有别的分词ҎQ这本n是一个学U,我这里也没有深入研究。回到具体应用,我们的目标是能找到成熟的、现成的分词工具Q避免重新发明R轮。经q网上搜索,用的比较多的是中U院?ICTCLAS和一个不开放源码但是免费的JE-Analysis。ICTCLAS有个问题是它是一个动态链接库Q?java调用需要本地方法调用,不方便也有安全隐患,而且口碑也确实不大好。JE-Analysis效果q不错,当然也会有分词不准的地方Q相比比较方便放心?br /><br />9 性能优化<br />一直到q里Q我们还是在讨论怎么样lucene跑v来,完成指定d。利用前面说的也实能完成大部分功能。但是测试表明lucene的性能q不是很好,在大数据量大q发的条件下甚至会有半分钟返回的情况。另外大数据量的数据初始化徏立烦引也是一个十分耗时的过E。那么如何提高lucene的性能呢?下面从优化创建烦引性能和优化搜索性能两方面介l?br /><br />9.1 优化创徏索引性能<br />q方面的优化途径比较有限QIndexWriter提供了一些接口可以控制徏立烦引的操作Q另外我们可以先烦引写入RAMDirectoryQ再扚w写入FSDirectoryQ不怎样Q目的都是尽量少的文件IOQ因为创建烦引的最大瓶颈在于磁盘IO。另外选择一个较好的分析器也能提高一些性能?br /><br />9.1.1 通过讄IndexWriter的参C化烦引徏?br />setMaxBufferedDocs(int maxBufferedDocs)<br />控制写入一个新的segment前内存中保存的document的数目,讄较大的数目可以加快徏索引速度Q默认ؓ10?br />setMaxMergeDocs(int maxMergeDocs)<br />控制一个segment中可以保存的最大document数目QD有利于q加索引的速度Q默认Integer.MAX_VALUEQ无需修改?br />setMergeFactor(int mergeFactor)<br />控制多个segment合ƈ的频率,D大时建立索引速度较快Q默认是10Q可以在建立索引时设|ؓ100?br /><br />9.1.2 通过RAMDirectory~写提高性能<br />我们可以先把索引写入RAMDirectoryQ达C定数量时再批量写qFSDirectoryQ减磁盘IOơ数?br /><br />FSDirectory fsDir = FSDirectory.getDirectory("/data/index", true);<br />RAMDirectory ramDir = new RAMDirectory();<br />IndexWriter fsWriter = new IndexWriter(fsDir, new StandardAnalyzer(), true);<br />IndexWriter ramWriter = new IndexWriter(ramDir, new StandardAnalyzer(), true);<br />while (there are documents to index)<br />{<br />... create Document ...<br />ramWriter.addDocument(doc);<br />if (condition for flushing memory to disk has been met)<br />{<br />fsWriter.addIndexes(new Directory[] { ramDir });<br />ramWriter.close();<br />ramWriter = new IndexWriter(ramDir, new StandardAnalyzer(), true);<br />}<br />}<br /><br />9.1.3 选择较好的分析器<br />q个优化主要是对盘I间的优化,可以烦引文件减将q一半,相同试数据下由600M减少?80M。但是对旉q没有什么帮助,甚至会需要更长时_因ؓ较好的分析器需要匹配词库,会消耗更多cpuQ测试数据用StandardAnalyzer耗时133分钟Q用MMAnalyzer耗时150分钟?br /><br />9.2 优化搜烦性能<br />虽然建立索引的操作非常耗时Q但是那毕竟只在最初创建时才需要,qx只是量的维护操作,更何况这些可以放C个后台进E处理,q不影响用户搜烦。我们创建烦引的目的是l用h索,所以搜索的性能才是我们最兛_的。下面就来探讨一下如何提高搜索性能?br /><br />9.2.1 烦引放入内?br />q是一个最直观的想法,因ؓ内存比磁盘快很多。Lucene提供了RAMDirectory可以在内存中容纳索引Q?br /><br />Directory fsDir = FSDirectory.getDirectory(?data/index/? false);<br />Directory ramDir = new RAMDirectory(fsDir);<br />Searcher searcher = new IndexSearcher(ramDir);<br /><br />但是实践证明RAMDirectory和FSDirectory速度差不多,当数据量很小时两者都非常快,当数据量较大Ӟ索引文g400MQRAMDirectory甚至比FSDirectoryq要慢一点,q确实让人出乎意料?br />而且lucene的搜索非常耗内存,即ɞ?00M的烦引文件蝲入内存,在运行一D|间后都会out of memoryQ所以个入内存的作用q不大?br /><br />9.2.2 优化旉范围限制<br />既然载入内存q不能提高效率,一定有其它瓉Q经q测试发现最大的瓉居然是时间范围限Ӟ那么我们可以怎样使时间范围限制的代h最呢Q?br />当需要搜索指定时间范围内的结果时Q可以:<br />1、用RangeQueryQ设|范_但是RangeQuery的实现实际上是将旉范围内的旉点展开Q组成一个个BooleanClause加入刊W?BooleanQuery中查询,因此旉范围不可能设|太大,l测试,范围过一个月׃?BooleanQuery.TooManyClausesQ可以通过讄 BooleanQuery.setMaxClauseCount (int maxClauseCount)扩大Q但是扩大也是有限的Qƈ且随着maxClauseCount扩大Q占用内存也扩大<br />2、用 RangeFilter代替RangeQueryQ经试速度不会比RangeQuery慢,但是仍然有性能瓉Q查询的90%以上旉耗费在?RangeFilterQ研I其源码发现RangeFilter实际上是首先遍历所有烦引,生成一个BitSetQ标记每个documentQ在旉范围内的标记为trueQ不在的标记为falseQ然后将l果传递给Searcher查找Q这是十分耗时的?br />3、进一步提高性能Q这个又有两个思\Q?br />a、缓存Filterl果。既然RangeFilter的执行是在搜索之前,那么它的输入都是一定的Q就是IndexReaderQ而?IndexReader是由Directory军_的,所以可以认为RangeFilter的结果是p围的上下限决定的Q也是由具体的  RangeFilter对象军_Q所以我们只要以RangeFilter对象为键Q将filterl果BitSet~存h卛_。lucene API 已经提供了一个CachingWrapperFiltercd装了Filter及其l果Q所以具体实施v来我们可?cache CachingWrapperFilter对象Q需要注意的是,不要被CachingWrapperFilter的名字及其说明误|  CachingWrapperFilter看v来是有缓存功能,但的~存是针对同一个filter的,也就是在你用同一个filterqo不同  IndexReaderӞ它可以帮你缓存不同IndexReader的结果,而我们的需求恰恰相反,我们是用不同filterqo同一个?IndexReaderQ所以只能把它作Z个封装类?br />b、降低时间精度。研IFilter的工作原理可以看出,它每ơ工作都是遍历整个烦引的Q所以时间粒度越大,Ҏ快Q搜索时间越短,在不影响功能的情况下Q时间精度越低越好,有时甚至牺牲一点精度也值得Q当然最好的情况是根本不作时间限制?br />下面针对上面的两个思\演示一下优化结果(都采?00U程随机关键词随x间范_Q?br />W一l,旉_ֺ为秒Q?br />方式 直接用RangeFilter 使用cache 不用filter<br />q_每个U程耗时 10s 1s 300ms<br /><br />W二l,旉_ֺ为天<br />方式 直接用RangeFilter 使用cache 不用filter<br />q_每个U程耗时 900ms 360ms 300ms<br /><br />׃上数据可以得出结论:<br />1?量降低旉_ֺQ将_ֺq换成天带来的性能提高甚至比用cacheq好Q最好不使用filter?br />2?在不能降低时间精度的情况下,使用cache能带?0倍左右的性能提高?br /><br />9.2.3 使用更好的分析器<br />q个跟创建烦引优化道理差不多Q烦引文件小了搜索自然会加快。当然这个提高也是有限的。较好的分析器相对于最差的分析器对性能的提升在20%以下?br /><br />10 一些经?br /><br />10.1关键词区分大写<br />or AND TO{关键词是区分大写的,lucene只认大写的,写的当做普通单词?br /><br />10.2 d互斥?br />同一时刻只能有一个对索引的写操作Q在写的同时可以q行搜烦<br /><br />10.3 文g?br />在写索引的过E中退出将在tmp目录留下一个lock文gQ以后的写操作无法q行Q可以将其手工删?br /><br />10.4 旉格式<br />lucene只支持一U时间格式yyMMddHHmmssQ所以你传一个yy-MM-dd HH:mm:ss的时间给lucene它是不会当作旉来处理的<br /><br />10.5 讄boost<br />有些时候在搜烦时某个字D늚权重需要大一些,例如你可能认为标题中出现关键词的文章比正文中出现关键词的文章更有价|你可以把标题的boost讄的更大,那么搜烦l果会优先显C标题中出现关键词的文章Q没有用排序的前题下)。用方法:<br />Field. setBoost(float boost);默认值是1.0Q也是说要增加权重的需要设|得?大?br /><br /><img src ="http://www.tkk7.com/dybjsun/aggbug/174065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/dybjsun/" target="_blank">dybjsun</a> 2008-01-09 17:17 <a href="http://www.tkk7.com/dybjsun/archive/2008/01/09/174065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4jhttp://www.tkk7.com/dybjsun/archive/2007/12/24/170000.htmldybjsundybjsunMon, 24 Dec 2007 03:46:00 GMThttp://www.tkk7.com/dybjsun/archive/2007/12/24/170000.htmlhttp://www.tkk7.com/dybjsun/comments/170000.htmlhttp://www.tkk7.com/dybjsun/archive/2007/12/24/170000.html#Feedback0http://www.tkk7.com/dybjsun/comments/commentRss/170000.htmlhttp://www.tkk7.com/dybjsun/services/trackbacks/170000.html
Log4j是Apache的一个开放源代码目Q通过使用Log4jQ我们可以控制日志信息输送的目的地是控制台、文件、GUIlg、甚x套接口服务器、NT的事件记录器、UNIX Syslog守护q程{;我们也可以控制每一条日志的输出格式Q通过定义每一条日志信息的U别Q我们能够更加细致地控制日志的生成过E。最令h感兴的是Q这些可以通过一个配|文件来灉|地进行配|,而不需要修改应用的代码?br />
此外Q通过Log4j其他语言接口Q您可以在C、C++?Net、PL/SQLE序中用Log4jQ其语法和用法与在JavaE序中一P使得多语a分布式系l得C个统一一致的日志lg模块。而且Q通过使用各种W三Ҏ展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中?br />
说明Q下面分Z部分Q第一部分讲解如何配置log4jQ第二部分ؓ对log4j.properties配置文g中的各个属性的讲解Q第三部分ؓ?log4j的详l讲解,如果只想配置上log4jQ那么只需要看前两个部分就可以Q如果想对log4j深入了解Q则q需看第三部分?br />
一、Log4j配置

W一步:加入log4j-1.2.8.jar到lib下?br />
W二步:在CLASSPATH下徏立log4j.properties。内容如下:

1 log4j.rootCategory=INFO, stdout , R

2

3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender

4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

5 log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

6

7 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

8 log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log

9 log4j.appender.R.layout=org.apache.log4j.PatternLayout

10 log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

11

12 log4j.logger.com.neusoft=DEBUG

13 log4j.logger.com.opensymphony.oscache=ERROR

14 log4j.logger.net.sf.navigator=ERROR

15 log4j.logger.org.apache.commons=ERROR

16 log4j.logger.org.apache.struts=WARN

17 log4j.logger.org.displaytag=ERROR

18 log4j.logger.org.springframework=DEBUG

19 log4j.logger.com.ibatis.db=WARN

20 log4j.logger.org.apache.velocity=FATAL

21

22 log4j.logger.com.canoo.webtest=WARN

23

24 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN

25 log4j.logger.org.hibernate=DEBUG

26 log4j.logger.org.logicalcobwebs=WARN

W三步:相应的修改其中属性,修改之前必ȝ道这些都是干什么的Q在W二部分讲解?br />
W四步:在要输出日志的类中加入相兌句:

定义属性:protected final Log log = LogFactory.getLog(getClass());

在相应的Ҏ中:

if (log.isDebugEnabled())

{

log.debug(“System ?.?;

}

二、Log4j说明

1 log4j.rootCategory=INFO, stdout , R

此句为将{为INFO的日志信息输出到stdout和Rq两个目的地Qstdout和R的定义在下面的代码,可以L起名。等U可分ؓOFF?FATAL、ERROR、WARN、INFO、DEBUG、ALLQ如果配|OFF则不打出M信息Q如果配|ؓINFOq样只显CINFO, WARN, ERROR的log信息Q而DEBUG信息不会被显C,具体讲解可参照第三部分定义配|文件中的logger?br />
3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender

此句为定义名为stdout的输出端是哪U类型,可以?br />
org.apache.log4j.ConsoleAppenderQ控制台Q,

org.apache.log4j.FileAppenderQ文ӞQ?br />
org.apache.log4j.DailyRollingFileAppenderQ每天生一个日志文ӞQ?br />
org.apache.log4j.RollingFileAppenderQ文件大到达指定尺寸的时候生一个新的文Ӟ

org.apache.log4j.WriterAppenderQ将日志信息以流格式发送到L指定的地方)

具体讲解可参照第三部分定义配|文件中的Appender?br />
4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

此句为定义名为stdout的输出端的layout是哪U类型,可以?br />
org.apache.log4j.HTMLLayoutQ以HTML表格形式布局Q,

org.apache.log4j.PatternLayoutQ可以灵zd指定布局模式Q,

org.apache.log4j.SimpleLayoutQ包含日志信息的U别和信息字W串Q,

org.apache.log4j.TTCCLayoutQ包含日志生的旉、线E、类别等{信息)

具体讲解可参照第三部分定义配|文件中的Layout?br />
5 log4j.appender.stdout.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n

如果使用pattern布局p指定的打C息的具体格式ConversionPatternQ打印参数如下:

%m 输出代码中指定的消息

%p 输出优先U,即DEBUGQINFOQWARNQERRORQFATAL

%r 输出自应用启动到输出该log信息耗费的毫U数

%c 输出所属的cȝQ通常是所在类的全?br />
%t 输出产生该日志事件的U程?br />
%n 输出一个回车换行符QWindowsq_为“rn”,Unixq_为“n?br />
%d 输出日志旉点的日期或时_默认格式为ISO8601Q也可以在其后指定格式,比如Q?d{yyyy MMM dd HH:mm:ss,SSS}Q输出类|2002q?0?8?22Q?0Q?8Q?21

%l 输出日志事g的发生位|,包括cȝ名、发生的U程Q以及在代码中的行数?br />
[QC]是log信息的开_可以ZQ意字W,一般ؓ目U?br />
输出的信?br />
[TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy'

具体讲解可参照第三部分定义配|文件中的格式化日志信息?br />
7 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

此句与第3行一栗定义名为R的输出端的类型ؓ每天产生一个日志文件?br />
8 log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log

此句为定义名为R的输出端的文件名为D:\\Tomcat 5.5\\logs\\qc.log

可以自行修改?br />
9 log4j.appender.R.layout=org.apache.log4j.PatternLayout

与第4行相同?br />
10 log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

与第5行相同?br />
12 log4j.logger.com. neusoft =DEBUG

指定com.neusoft包下的所有类的等UؓDEBUG?br />
可以把com.neusoft改ؓ自己目所用的包名?br />
13 log4j.logger.com.opensymphony.oscache=ERROR

14 log4j.logger.net.sf.navigator=ERROR

q两句是把这两个包下出现的错误的{设ؓERRORQ如果项目中没有配置EHCacheQ则不需要这两句?br />
15 log4j.logger.org.apache.commons=ERROR

16 log4j.logger.org.apache.struts=WARN

q两句是struts的包?br />
17 log4j.logger.org.displaytag=ERROR

q句是displaytag的包。(QC问题列表面所用)

18 log4j.logger.org.springframework=DEBUG

此句为Spring的包?br />
24 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN

25 log4j.logger.org.hibernate=DEBUG

此两句是hibernate的包?br />
以上q些包的讄可根据项目的实际情况而自行定制?br />
三、log4j详解

1、定义配|文?br />
Log4j支持两种配置文g格式Q一U是XML格式的文Ӟ一U是JavaҎ文件log4j.propertiesQ键=|。下面将介绍使用log4j.properties文g作ؓ配置文g的方?

①、配|根Logger

Logger 负责处理日志记录的大部分操作?br />
其语法ؓQ?br />
log4j.rootLogger = [ level ] , appenderName, appenderName, ?br />
其中Qlevel 是日志记录的优先U,分ؓOFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的别。Log4j只用四个别,优先U从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的U别Q您可以控制到应用程序中相应U别的日志信息的开兟뀂比如在q里定义了INFOU别Q只有等于及高于q个U别的才q行处理Q则应用E序中所有DEBUGU别的日志信息将不被打印出来。ALL:打印所有的日志QOFFQ关闭所有的日志输出?appenderName是指定日志信息输出到哪个地斏V可同时指定多个输出目的地?br />
②、配|日志信息输出目的地 Appender

Appender 负责控制日志记录操作的输出?br />
其语法ؓQ?br />
log4j.appender.appenderName = fully.qualified.name.of.appender.class

log4j.appender.appenderName.option1 = value1

?br />
log4j.appender.appenderName.optionN = valueN

q里的appenderName为在①里定义的,可Q意v名?br />
其中QLog4j提供的appender有以下几U:

org.apache.log4j.ConsoleAppenderQ控制台Q,

org.apache.log4j.FileAppenderQ文ӞQ?br />
org.apache.log4j.DailyRollingFileAppenderQ每天生一个日志文ӞQ?br />
org.apache.log4j.RollingFileAppenderQ文件大到达指定尺寸的时候生一个新的文ӞQ可通过 log4j.appender.R.MaxFileSize=100KB讄文g大小Q还可通过 log4j.appender.R.MaxBackupIndex=1讄Z存一个备份文件?br />
org.apache.log4j.WriterAppenderQ将日志信息以流格式发送到L指定的地方)

例如Qlog4j.appender.stdout=org.apache.log4j.ConsoleAppender

定义一个名为stdout的输出目的地QConsoleAppender为控制台?br />
③、配|日志信息的格式Q布局QLayout

Layout 负责格式化Appender的输出?br />
其语法ؓQ?br />
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

log4j.appender.appenderName.layout.option1 = value1

?br />
log4j.appender.appenderName.layout.optionN = valueN

其中QLog4j提供的layout有以下几U:

org.apache.log4j.HTMLLayoutQ以HTML表格形式布局Q,

org.apache.log4j.PatternLayoutQ可以灵zd指定布局模式Q,

org.apache.log4j.SimpleLayoutQ包含日志信息的U别和信息字W串Q,

org.apache.log4j.TTCCLayoutQ包含日志生的旉、线E、类别等{信息)

2、格式化日志信息

Log4J采用cMC语言中的printf函数的打印格式格式化日志信息Q打印参数如下:

%m 输出代码中指定的消息

%p 输出优先U,即DEBUGQINFOQWARNQERRORQFATAL

%r 输出自应用启动到输出该log信息耗费的毫U数

%c 输出所属的cȝQ通常是所在类的全?br />
%t 输出产生该日志事件的U程?br />
%n 输出一个回车换行符QWindowsq_为“rn”,Unixq_为“n?br />
%d 输出日志旉点的日期或时_默认格式为ISO8601Q也可以在其后指定格式,比如Q?d{yyyy MMM dd HH:mm:ss,SSS}Q输出类|2002q?0?8?22Q?0Q?8Q?21

%l 输出日志事g的发生位|,包括cȝ名、发生的U程Q以及在代码中的行数?br />
3、在代码中用Log4j

我们在需要输出日志信息的cM做如下的三个工作Q?br />
1、导入所有需的commongs-loggingc:

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

2、在自己的类中定义一个org.apache.commons.logging.LogcȝU有静态类成员Q?br />
private final Log log = LogFactory.getLog(getClass());

LogFactory.getLog()Ҏ的参C用的是当前类的class?br />
3、用org.apache.commons.logging.Logcȝ成员Ҏ输出日志信息Q?br />
if (log.isDebugEnabled())

{

log.debug("111");

}

if (log.isInfoEnabled())

{

log.info("222");

}

if (log.isWarnEnabled())

{

log.warn("333");

}

if (log.isErrorEnabled())

{

log.error("444");

}

if (log.isFatalEnabled())

{

log.fatal("555")

}


dybjsun 2007-12-24 11:46 发表评论
]]>
常见软g试的技?/title><link>http://www.tkk7.com/dybjsun/archive/2007/12/06/165716.html</link><dc:creator>dybjsun</dc:creator><author>dybjsun</author><pubDate>Thu, 06 Dec 2007 01:33:00 GMT</pubDate><guid>http://www.tkk7.com/dybjsun/archive/2007/12/06/165716.html</guid><wfw:comment>http://www.tkk7.com/dybjsun/comments/165716.html</wfw:comment><comments>http://www.tkk7.com/dybjsun/archive/2007/12/06/165716.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/dybjsun/comments/commentRss/165716.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/dybjsun/services/trackbacks/165716.html</trackback:ping><description><![CDATA[软g试虽然辛苦Q但是掌握了一定的技巧之后将使你事半功倍?br /><br />  (1) 边界试Q测试用戯入框中的数值的最大数和最数Q以及ؓI时的情c?br /><br />  (2) 非法试Q例如在输入数字的地方输入字母?br /><br />  (3) 跟踪试Q跟t一条数据的程,保证数据的正性?br /><br />  (4) 在开始测试时应保证数据的正确性,然后在从pȝ中找出各UBUG?br /><br />  (5) 接口试Q程序往往在接口的地方很容易发生错误,要在此模块测试勿掉以d?br /><br />  (6) 代码重用试Q在开发过E中有些模块功能几乎相同Q程序员在重用代码时可能忘记在原有代码上修改或修改不全面Q而造成的错误?br /><br />  (7) H发事g试Q服务器上可能发生意外情늚试?br /><br />  (8) 外界环境试Q有些系l在开发时依赖于另外一个系l?当另外一个系l发生错误时, q个pȝ所受到的媄响的情况?br /><br />  (9) 在程序员刚修复Bug之后的地?再找一找,往往E序员只修复报告出来的缺陯不去考虑别的功能在修Ҏ可能会重新造成错误?br /><br />  (10) 认真做好试记录在做完一天的试记录之后,W二天再ҎW一天的试记录重复试你会发现有未修正的错误?br /><br />  (11) 文字试Q如果在pȝ中有用词不当的地方,我想q是不应该的?br /><br />  (12) pȝ兼容试Q例如有些程序在IE6能运行正常,到IE5下不能运行。有些程序在WIN2000下能q行Q而到WIN98却不能运行。像一些很特别的用户去使用pȝQ你很有可能发现BUG?br /><br />  (13) 用户的易用性测试,往往用户的需求是不断的变化的Q而其中的一部䆾变化的原因,是有用户操作上不方便引v的?br /><br />  软g试是Y件开发中的重中之重,没有一点可以马虎的Q在目理q程Q我的是每个q程的每一个环节都要进行测试,保证pȝ在每个阶D可以控制。因Y件测试中考虑的问题基本上是项目管理中考虑的问题?br /><br />  我认为在目理中考虑的一些问题应该是在Y件测试时有些体现Q体现的内容是Y件测试的一些侧重点Q具体说QY件测试是事务性的Q而项目管理是{略性,一些策略性的东西必须在一些事务性的事务上来实现?br /><br />  软g试是一门新兴的行业Q现在Y件测试在我国的地位虽说还不是很高Q但q几q却是逐渐转好Q国内对软g试的重视程度也慢慢高v来了。大家如果对IT有兴的话,不烦了解一下,怿也会有所感悟的。我q常在|上看一些Y件测试方面的文章或技巧,q对我的成长也是具大的。大家有旉不烦M下北大测试的|站Q那里面有很多软g试技巧和行业新闻Q对我启发很多?img src ="http://www.tkk7.com/dybjsun/aggbug/165716.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/dybjsun/" target="_blank">dybjsun</a> 2007-12-06 09:33 <a href="http://www.tkk7.com/dybjsun/archive/2007/12/06/165716.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>理中的点点滴滴http://www.tkk7.com/dybjsun/archive/2007/11/30/164392.htmldybjsundybjsunFri, 30 Nov 2007 12:25:00 GMThttp://www.tkk7.com/dybjsun/archive/2007/11/30/164392.htmlhttp://www.tkk7.com/dybjsun/comments/164392.htmlhttp://www.tkk7.com/dybjsun/archive/2007/11/30/164392.html#Feedback0http://www.tkk7.com/dybjsun/comments/commentRss/164392.htmlhttp://www.tkk7.com/dybjsun/services/trackbacks/164392.html  2、不时间是否充I必要的流E必ȝ历,必要的物证据必L?br />  3、要基本的、简单的问题避免Q就一定要应该做的做到实处。如果短斤少两,用不了多久,问题׃出现?br />  4、一个管理者最主要的职能是理Q组l组员走必要的流E是重中之重。衡量一个优U的管理者的一点就是,在这些过E中Q这个管理者担当了什么的角色?

dybjsun 2007-11-30 20:25 发表评论
]]>
怎样在linux下修攚w认登陆模?/title><link>http://www.tkk7.com/dybjsun/archive/2007/11/29/163963.html</link><dc:creator>dybjsun</dc:creator><author>dybjsun</author><pubDate>Thu, 29 Nov 2007 04:32:00 GMT</pubDate><guid>http://www.tkk7.com/dybjsun/archive/2007/11/29/163963.html</guid><wfw:comment>http://www.tkk7.com/dybjsun/comments/163963.html</wfw:comment><comments>http://www.tkk7.com/dybjsun/archive/2007/11/29/163963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/dybjsun/comments/commentRss/163963.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/dybjsun/services/trackbacks/163963.html</trackback:ping><description><![CDATA[?a name="baidusnap1"></a>命o行或者XQwindows下修?etc/inittab文gQ代码如下:<br />.......<br /># Default runlevel. The runlevels used by RHS are:<br />#    0 - halt (Do NOT set initdefault to this)<br />#    1 - Single user mode<br />#    2 - Multiuser, without NFS (The same as 3, if you do not have networking)<br />#    3 - Full multiuser mode<br />#    4 - unused<br />#    5 - X11<br />#    6 - reboot (Do NOT set initdefault to this)<br />#<br />id:5:initdefault:<br />........<br />3为命令行Q?为XQWindows<img src ="http://www.tkk7.com/dybjsun/aggbug/163963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/dybjsun/" target="_blank">dybjsun</a> 2007-11-29 12:32 <a href="http://www.tkk7.com/dybjsun/archive/2007/11/29/163963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://lswqn.com" target="_blank">tsƵ</a>| <a href="http://zgjzysfc.com" target="_blank">츾avҹ벻</a>| <a href="http://jaubus.com" target="_blank">벻Ļ18</a>| <a href="http://badabg.com" target="_blank">ձѴ߹ۿ</a>| <a href="http://ganbadei.com" target="_blank">Ѹþ</a>| <a href="http://5aa6.com" target="_blank">avר߹ۿ </a>| <a href="http://yongyihongze.com" target="_blank">avһ</a>| <a href="http://9v9av.com" target="_blank">С˵ͼƬ</a>| <a href="http://612662.com" target="_blank">AVƬɫ߹ۿ߳</a>| <a href="http://jiezinet.com" target="_blank">һaƬɫëƬ</a>| <a href="http://smalody.com" target="_blank">ŮëƬƵ</a>| <a href="http://xbooktxt.com" target="_blank">2021߹ۿƵƷ</a>| <a href="http://rushiruhua.com" target="_blank">Ƶַѹۿ</a>| <a href="http://w7768.com" target="_blank">avƬ߹ۿ</a>| <a href="http://888-28.com" target="_blank">ëƬһ</a>| <a href="http://2030188.com" target="_blank">պ˳ۺ</a>| <a href="http://93qsgy.com" target="_blank">һҺ</a>| <a href="http://ninggelang.com" target="_blank">޹Ʒ߹ۿ</a>| <a href="http://180xiu.com" target="_blank">ٸ69XXX</a>| <a href="http://jiezinet.com" target="_blank">þùƷۺ</a>| <a href="http://abc17171.com" target="_blank">һþaþþƷ</a>| <a href="http://xsxdsb.com" target="_blank">޾Ʒվ߹ۿ޹</a>| <a href="http://www-01313.com" target="_blank">ѿaɫƬ</a>| <a href="http://pengkaimjg.com" target="_blank">߲˳Ƶ߹ۿ</a>| <a href="http://srvz83.com" target="_blank">97ȫѹۿ</a>| <a href="http://wwwfafa98.com" target="_blank">24СʱƵ</a>| <a href="http://rhacu.com" target="_blank">99Ʒѹۿ</a>| <a href="http://www-2236444.com" target="_blank">þùƷ2020m3u8</a>| <a href="http://3x79.com" target="_blank">AëƬƵ߲</a>| <a href="http://eeussdd.com" target="_blank">þerƷѹۿ8</a>| <a href="http://maomaopao.com" target="_blank">ƵѲ</a>| <a href="http://2266511.com" target="_blank">һ߹ۿƵ</a>| <a href="http://zhaosifuwang.com" target="_blank">èѹۿ˳վ</a>| <a href="http://yanhx.com" target="_blank">¼ҳ</a>| <a href="http://295301.com" target="_blank">һɫƬѹۿ</a>| <a href="http://606059.com" target="_blank">ŮƵѹۿվ</a>| <a href="http://yy6090qpgdy.com" target="_blank">Ʒ888</a>| <a href="http://xx2e.com" target="_blank">йڵëƬѸ</a>| <a href="http://99999pp.com" target="_blank">һƵ</a>| <a href="http://jipiao020.com" target="_blank">91ڹӰ</a>| <a href="http://hbtelong.com" target="_blank">69Ƶ߹ۿ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>