??xml version="1.0" encoding="utf-8" standalone="yes"?>国产在线观看一区二区三区,亚洲精品视频在线观看网站,天堂a中文在线http://www.aygfsteel.com/RoyPayne/Q敲L想的键盘,滑动灉|的鼠?好男儿志在四斏V?/description>zh-cnSun, 18 May 2025 20:37:21 GMTSun, 18 May 2025 20:37:21 GMT60Microsoft SQL Server 2008 基本安装说明http://www.aygfsteel.com/RoyPayne/archive/2013/09/27/404540.htmlRoyPayneRoyPayneFri, 27 Sep 2013 05:27:00 GMThttp://www.aygfsteel.com/RoyPayne/archive/2013/09/27/404540.htmlhttp://www.aygfsteel.com/RoyPayne/comments/404540.htmlhttp://www.aygfsteel.com/RoyPayne/archive/2013/09/27/404540.html#Feedback0http://www.aygfsteel.com/RoyPayne/comments/commentRss/404540.htmlhttp://www.aygfsteel.com/RoyPayne/services/trackbacks/404540.html

Microsoft SQL Server 2008 基本安装说明

安装SQL2008的过E与SQL2005的程序基本一?只不q在安装的过E中部分选项有所改变,当然如果只熟悉SQL2000安装的同志来说则是一个革命性的变动,

一、安装前的准?br style="margin: 0px; padding: 0px;" />1. 需?Net Framework 3.5Q若在Vista或更高的OS上需?.5 SP1的支持(在SQL2008安装的前会自动更新安装)
2. 需要Widnows PowerShell的支?WPS是一个功能非常强大的Shell应用Q命令与DOX/UNIX兼容q支持直接调?NET模块做行命o~辑Q是非常值得深入研究的工P在SQL2008安装时会自动更新安装Q?br style="margin: 0px; padding: 0px;" />3. 需要确保Windows Installer的成功启动,需?.5以上版本Q需要检查服务启动状态service.msc)
4. 需要MDAC2.8 sp1的支持(XP以上pȝ中已集成Q?br style="margin: 0px; padding: 0px;" />5. 若机器上已经安装Visual studio 2008则需要VS 2008 sp1以上版本的支持(需要自׃MS的网站上下蝲安装http://www.microsoft.com/downloads/details.aspx?familyid=FBEE1648-7106-44A7-9649-6D9F6D58056E&displaylang=enQ?/p>

 

二、安装配|过E?br style="margin: 0px; padding: 0px;" />1.q行SQL Server安装中心Q选择"安装"选项Q在新的电脑上安装SQL2008可以直接选择“全新SQL Server独立安装或向现有安装功能"Q将会安装一个默认SQL实列Q如下图

2.功能选择Q对于只安装数据库服务器来说Q功能的选择上可以按实际工作需要来制定Q本Z般选择Q数据库引擎服务、客L工具q接、SQL Server 联机丛书、管理工P基本、管理工P完整
     其中数据库引擎服务是SQL数据库的核心服务QAnalysis及Reporting服务可按部v要求安装Q这两个服务可能需要IIS的支持。如下图


3.实列讄Q可直接选择默认实例q行安装Q或则若同一台服务器中有多个数据服务实列可按不同实列名进行安装。如?/p>


4.服务器配|,服务器配|主要是服务启动帐户的配|,服务的帐户名推荐使用NT AUTHORITY\SYSTEM的系l帐Pq指定当前选择服务的启动类型,如图

5.数据库引擎配|,在当前配|中主要讄SQLd验证模式及̎户密码,与SQL的数据存储目录,w䆾验证模式推荐使用混合模式q行验证Q在安装q程中内|的SQL Serverpȝ理员帐?sa)的密码比较特D,SQL2008对SA的密码强度要求相Ҏ较高Q需要有大小写字母、数字及W号l成Q否则将不允怽l箋安装。在"指定Sql Server理?中最好指定本机的pȝ理员administrator。如?/p>


 

分类: SQL 杂文


RoyPayne 2013-09-27 13:27 发表评论
]]>
如何查看览器的cookiehttp://www.aygfsteel.com/RoyPayne/archive/2013/01/28/394818.htmlRoyPayneRoyPayneSun, 27 Jan 2013 22:54:00 GMThttp://www.aygfsteel.com/RoyPayne/archive/2013/01/28/394818.htmlhttp://www.aygfsteel.com/RoyPayne/comments/394818.htmlhttp://www.aygfsteel.com/RoyPayne/archive/2013/01/28/394818.html#Feedback1http://www.aygfsteel.com/RoyPayne/comments/commentRss/394818.htmlhttp://www.aygfsteel.com/RoyPayne/services/trackbacks/394818.htmlh览器的cookie:
       依次点击讄--高选项--内容讄--cookies--选择“昄cookies和其他网站数据按钮就可以看到?br />
firefox:
      依次点开FF览器工具选项Q?工具》选项》隐U》在历史选项框中选择“使用自定义历史记录设|?#8221; q入后,再选择“昄Cookies”.出来一个对话框Q里面就是FF记录的所有Cookie。其g也可以很方便查看到?/span>






RoyPayne 2013-01-28 06:54 发表评论
]]>
~写多线EJava应用中的死锁问题http://www.aygfsteel.com/RoyPayne/archive/2012/12/10/392713.htmlRoyPayneRoyPayneMon, 10 Dec 2012 02:54:00 GMThttp://www.aygfsteel.com/RoyPayne/archive/2012/12/10/392713.htmlhttp://www.aygfsteel.com/RoyPayne/comments/392713.htmlhttp://www.aygfsteel.com/RoyPayne/archive/2012/12/10/392713.html#Feedback0http://www.aygfsteel.com/RoyPayne/comments/commentRss/392713.htmlhttp://www.aygfsteel.com/RoyPayne/services/trackbacks/392713.html      死锁是一个经典的多线E问题,因ؓ不同的线E都在等待那些根本不可能被释攄锁,
从而导致所有的工作都无法完成。假设有两个U程Q分别代表两个饥饿的人,他们必须׃n刀叉ƈ轮流吃饭?/div>
他们都需要获得两个锁Q共享刀和共享叉的锁。假如线E?"A" 获得了刀Q而线E?"B" 获得了叉?/div>
U程 A ׃q入d状态来{待获得叉,而线E?B 则阻塞来{待 A 所拥有的刀?br />      
      让所有的U程按照同样的顺序获得一l锁。这U方法消除了 X ?Y 的拥有者分别等待对方的资源的问题?/div>
  多个锁l成一lƈ攑ֈ同一个锁下。前面死锁的例子中,可以创徏一个银器对象的锁。于是在获得刀或叉之前都必获得这个银器的锁?/div>
  那些不会阻塞的可获得资源用变量标志出来。当某个U程获得银器对象的锁Ӟ可以通过查变量来判断是否整个银器集合中的对象锁都可获得。如果是Q它可以获得相关的锁,否则Q就要释放掉银器q个锁ƈE后再尝试?/div>
  最重要的是Q在~写代码前认真仔l地设计整个pȝ。多U程是困隄Q在开始编E之前详l设计系l能够帮助你避免难以发现死锁的问题?/div>


RoyPayne 2012-12-10 10:54 发表评论
]]>jquery取checkbox选中的?/title><link>http://www.aygfsteel.com/RoyPayne/archive/2012/03/02/371115.html</link><dc:creator>RoyPayne</dc:creator><author>RoyPayne</author><pubDate>Fri, 02 Mar 2012 01:40:00 GMT</pubDate><guid>http://www.aygfsteel.com/RoyPayne/archive/2012/03/02/371115.html</guid><wfw:comment>http://www.aygfsteel.com/RoyPayne/comments/371115.html</wfw:comment><comments>http://www.aygfsteel.com/RoyPayne/archive/2012/03/02/371115.html#Feedback</comments><slash:comments>21</slash:comments><wfw:commentRss>http://www.aygfsteel.com/RoyPayne/comments/commentRss/371115.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/RoyPayne/services/trackbacks/371115.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; "><!</span><span style="color: #FF00FF; ">DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; "><</span><span style="color: #800000; ">html</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /> </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />  </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">></span><span style="color: #000000; "> New Document </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />  </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">meta </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="Generator"</span><span style="color: #FF0000; "> content</span><span style="color: #0000FF; ">="EditPlus"</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />  </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">meta </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="Author"</span><span style="color: #FF0000; "> content</span><span style="color: #0000FF; ">=""</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />  </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">meta </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="Keywords"</span><span style="color: #FF0000; "> content</span><span style="color: #0000FF; ">=""</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />  </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">meta </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="Description"</span><span style="color: #FF0000; "> content</span><span style="color: #0000FF; ">=""</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /> </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">script </span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="text/javascript"</span><span style="color: #FF0000; "> src</span><span style="color: #0000FF; ">="jquery.js"</span><span style="color: #0000FF; ">></</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">script </span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="text/javascript"</span><span style="color: #0000FF; ">></span><span style="background-color: #F5F5F5; color: #000000; "><br /><br />        </span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #F5F5F5; color: #000000; "> go() {<br />            </span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; "> str</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">""</span><span style="background-color: #F5F5F5; color: #000000; ">;<br />            $(</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">input[name='checkbox']:checkbox</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">).each(</span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #F5F5F5; color: #000000; ">(){ <br />                </span><span style="background-color: #F5F5F5; color: #0000FF; ">if</span><span style="background-color: #F5F5F5; color: #000000; ">($(</span><span style="background-color: #F5F5F5; color: #0000FF; ">this</span><span style="background-color: #F5F5F5; color: #000000; ">).attr(</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">checked</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">)){<br />                    str </span><span style="background-color: #F5F5F5; color: #000000; ">+=</span><span style="background-color: #F5F5F5; color: #000000; "> $(</span><span style="background-color: #F5F5F5; color: #0000FF; ">this</span><span style="background-color: #F5F5F5; color: #000000; ">).val()</span><span style="background-color: #F5F5F5; color: #000000; ">+</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">,</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; "><br />                }<br />            })<br />            </span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">alert(str);</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #000000; ">            str.split(</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">,</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">);<br />            alert(str[</span><span style="background-color: #F5F5F5; color: #000000; ">0</span><span style="background-color: #F5F5F5; color: #000000; ">]);<br />        }<br />    </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /> </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">body</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />  </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">div</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">input </span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="text"</span><span style="color: #FF0000; "> id</span><span style="color: #0000FF; ">="content"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="111"</span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">input </span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="checkbox"</span><span style="color: #FF0000; "> name</span><span style="color: #0000FF; ">="checkbox"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="1"</span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">input </span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="checkbox"</span><span style="color: #FF0000; "> name</span><span style="color: #0000FF; ">="checkbox"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="2"</span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">input </span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="checkbox"</span><span style="color: #FF0000; "> name</span><span style="color: #0000FF; ">="checkbox"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="3"</span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">input </span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="checkbox"</span><span style="color: #FF0000; "> name</span><span style="color: #0000FF; ">="checkbox"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="4"</span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">input </span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="checkbox"</span><span style="color: #FF0000; "> name</span><span style="color: #0000FF; ">="checkbox"</span><span style="color: #FF0000; "> value</span><span style="color: #0000FF; ">="5"</span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">input </span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="button"</span><span style="color: #FF0000; "> id</span><span style="color: #0000FF; ">="test"</span><span style="color: #FF0000; "> onclick</span><span style="color: #0000FF; ">="go();"</span><span style="color: #0000FF; ">/></span><span style="color: #000000; "><br />  </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">div</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /> </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">body</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; "></</span><span style="color: #800000; ">html</span><span style="color: #0000FF; ">></span></div><img src ="http://www.aygfsteel.com/RoyPayne/aggbug/371115.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/RoyPayne/" target="_blank">RoyPayne</a> 2012-03-02 09:40 <a href="http://www.aygfsteel.com/RoyPayne/archive/2012/03/02/371115.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XFire WebService开发快速v?/title><link>http://www.aygfsteel.com/RoyPayne/archive/2012/02/01/369160.html</link><dc:creator>RoyPayne</dc:creator><author>RoyPayne</author><pubDate>Wed, 01 Feb 2012 06:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/RoyPayne/archive/2012/02/01/369160.html</guid><wfw:comment>http://www.aygfsteel.com/RoyPayne/comments/369160.html</wfw:comment><comments>http://www.aygfsteel.com/RoyPayne/archive/2012/02/01/369160.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/RoyPayne/comments/commentRss/369160.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/RoyPayne/services/trackbacks/369160.html</trackback:ping><description><![CDATA[<div><span style="color: #555555; font-family: 宋体; font-size: 20px; font-weight: bold; line-height: 20px; background-color: #ffffff; ">XFire WebService开发快速v?br /><br /><br /></span><div><a >http://lavasoft.blog.51cto.com/62575/105956/</a></div></div><img src ="http://www.aygfsteel.com/RoyPayne/aggbug/369160.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/RoyPayne/" target="_blank">RoyPayne</a> 2012-02-01 14:50 <a href="http://www.aygfsteel.com/RoyPayne/archive/2012/02/01/369160.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp+oracle实现单的分页http://www.aygfsteel.com/RoyPayne/archive/2012/01/31/369073.htmlRoyPayneRoyPayneTue, 31 Jan 2012 05:25:00 GMThttp://www.aygfsteel.com/RoyPayne/archive/2012/01/31/369073.htmlhttp://www.aygfsteel.com/RoyPayne/comments/369073.htmlhttp://www.aygfsteel.com/RoyPayne/archive/2012/01/31/369073.html#Feedback2http://www.aygfsteel.com/RoyPayne/comments/commentRss/369073.htmlhttp://www.aygfsteel.com/RoyPayne/services/trackbacks/369073.html/*==================================================...  阅读全文

RoyPayne 2012-01-31 13:25 发表评论
]]>
Hibernate n+1问题http://www.aygfsteel.com/RoyPayne/archive/2012/01/30/369017.htmlRoyPayneRoyPayneMon, 30 Jan 2012 06:20:00 GMThttp://www.aygfsteel.com/RoyPayne/archive/2012/01/30/369017.htmlhttp://www.aygfsteel.com/RoyPayne/comments/369017.htmlhttp://www.aygfsteel.com/RoyPayne/archive/2012/01/30/369017.html#Feedback1http://www.aygfsteel.com/RoyPayne/comments/commentRss/369017.htmlhttp://www.aygfsteel.com/RoyPayne/services/trackbacks/369017.html

在Session的缓存中存放的是怺兌的对象图。默认情况下Q当Hibernate从数据库中加载Customer对象Ӟ会同时加载所有关联的 Order对象。以Customer和OrdercMؓ例,假定ORDERS表的CUSTOMER_ID外键允许为null

以下Session的find()Ҏ用于到数据库中检索所有的Customer对象Q?nbsp;

List customerLists=session.find("from Customer as c"); 

q行以上find()ҎӞHibernate先查询CUSTOMERS表中所有的记录Q然后根据每条记录的IDQ到ORDERS表中查询有参照关pȝ记录QHibernate依ơ执行以下select语句Q?nbsp;

select * from CUSTOMERS; 
select * from ORDERS where CUSTOMER_ID=1; 
select * from ORDERS where CUSTOMER_ID=2; 
select * from ORDERS where CUSTOMER_ID=3; 
select * from ORDERS where CUSTOMER_ID=4; 

通过以上5条select语句QHibernate最后加载了4个Customer对象?个Order对象Q在内存中Ş成了一q关联的对象?


Hibernate在检索与Customer兌的Order对象Ӟ使用了默认的立即索策略。这U检索策略存在两大不I 

Q?Q? select语句的数目太多,需要频J的讉K数据库,会媄响检索性能。如果需要查询n个Customer对象Q那么必L行n+1ơselect查询?句。这是l典的n+1ơselect查询问题。这U检索策略没有利用SQL的连接查询功能,例如以上5条select语句完全可以通过以下1?select语句来完成: 

select * from CUSTOMERS left outer join ORDERS 
on CUSTOMERS.ID=ORDERS.CUSTOMER_ID 

以上select语句使用了SQL的左外连接查询功能,能够在一条select语句中查询出CUSTOMERS表的所有记录,以及匚w的ORDERS表的记录?nbsp;

Q?Q在应用逻辑只需要访问Customer对象Q而不需要访问Order对象的场合,加蝲Order对象完全是多余的操作Q这些多余的Order对象白白费了许多内存空间?nbsp;
Z解决以上问题Q?span color="#ff0000" style="color: #ff0000;">Hibernate提供了其他两U检索策略:延迟索策略和q切左外q接索策略。gq检索策略能避免多余加蝲应用E序不需要访问的兌对象Q迫切左外连接检索策略则充分利用了SQL的外q接查询功能Q能够减select语句的数目?/span>


Ҏ据库讉Kq是必须考虑性能问题的, 在设定了1 对多q种关系之后Q?查询׃出现传说中的n +1 问题?nbsp;
1 Q? 对多Q在1 方,查找得到了n 个对象, 那么又需要将n 个对象关联的集合取出Q于是本来的一条sql查询变成了n +1 ?nbsp;
2Q多? Q在多方Q查询得Cm个对象,那么也会m个对象对应的1 方的对象取出Q?也变成了m+1

怎么解决n +1 问题Q?nbsp;
1 Qlazy=trueQ?hibernate3开始已l默认是lazy=true了;lazy=true时不会立L询关联对象,只有当需要关联对象(讉K其属性,非id字段Q时才会发生查询动作?nbsp;

2Q二U缓存, 在对象更斎ͼ删除Q添加相对于查询要少得多Ӟ 二~存的应用将不怕n +1 问题Q因为即使第一ơ查询很慢,之后直接~存命中也是很快的?nbsp;
不同解决ҎQ不同的思\Q第二条却刚好又利用了n +1 ?/span>

3) 当然你也可以讑֮fetch=join(annotation : @ManyToOne() @Fetch(FetchMode.JOIN))



RoyPayne 2012-01-30 14:20 发表评论
]]>spring security 权限控制http://www.aygfsteel.com/RoyPayne/archive/2012/01/20/368785.htmlRoyPayneRoyPayneFri, 20 Jan 2012 02:41:00 GMThttp://www.aygfsteel.com/RoyPayne/archive/2012/01/20/368785.htmlhttp://www.aygfsteel.com/RoyPayne/comments/368785.htmlhttp://www.aygfsteel.com/RoyPayne/archive/2012/01/20/368785.html#Feedback1http://www.aygfsteel.com/RoyPayne/comments/commentRss/368785.htmlhttp://www.aygfsteel.com/RoyPayne/services/trackbacks/368785.html1. 在web.xml文g中加入Filter声明 
<!-- Spring security Filter -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

q个Filter会拦截所有的URLhQƈ且对q些URLhq行Spring Security的验证?nbsp;

注意QspringSecurityFilterChainq个名称是由命名I间默认创徏的用于处理web安全的一个内部的bean的id。所以你在你的Spring配置文g中,不应该再使用q个id作ؓ你的bean?nbsp;

与Acegi的配|不同,Acegi需要自行声明一个Spring的bean来作为Filter的实玎ͼ而用Spring Security后,无需再额外定义beanQ而是使用<http>元素q行配置?nbsp;

通过扩展Spring Security的默认实现来q行用户和权限的理 

事实上,Spring Security提供?个认证的接口Q分别用于模拟用户和权限Q以及读取用户和权限的操作方法。这两个接口分别是:UserDetails和UserDetailsService?nbsp;

public interface UserDetails extends Serializable {
    
    GrantedAuthority[] getAuthorities();

    String getPassword();

    String getUsername();

    boolean isAccountNonExpired();

    boolean isAccountNonLocked();

    boolean isCredentialsNonExpired();

    boolean isEnabled();
}

public interface UserDetailsService {
    UserDetails loadUserByUsername(String username)
        throws UsernameNotFoundException, DataAccessException;
}

非常清楚Q一个接口用于模拟用P另外一个用于模拟读取用Lq程。所以我们可以通过实现q两个接口,来完成用数据库对用户和权限q行理的需求。在q里Q我给Z个用Hibernate来定义用户和权限之间关系的示例?nbsp;


RoyPayne 2012-01-20 10:41 发表评论
]]>
Spring中Quartz的配|?/title><link>http://www.aygfsteel.com/RoyPayne/archive/2012/01/19/368757.html</link><dc:creator>RoyPayne</dc:creator><author>RoyPayne</author><pubDate>Thu, 19 Jan 2012 06:53:00 GMT</pubDate><guid>http://www.aygfsteel.com/RoyPayne/archive/2012/01/19/368757.html</guid><wfw:comment>http://www.aygfsteel.com/RoyPayne/comments/368757.html</wfw:comment><comments>http://www.aygfsteel.com/RoyPayne/archive/2012/01/19/368757.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/RoyPayne/comments/commentRss/368757.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/RoyPayne/services/trackbacks/368757.html</trackback:ping><description><![CDATA[     摘要: Quartz是一个强大的企业UQ务调度框ӞSpring中承ƈ化了QuartzQ下面就看看在Spring中怎样配置QuartzQ?nbsp; <a href='http://www.aygfsteel.com/RoyPayne/archive/2012/01/19/368757.html'>阅读全文</a><img src ="http://www.aygfsteel.com/RoyPayne/aggbug/368757.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/RoyPayne/" target="_blank">RoyPayne</a> 2012-01-19 14:53 <a href="http://www.aygfsteel.com/RoyPayne/archive/2012/01/19/368757.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2-拦截?权限控制http://www.aygfsteel.com/RoyPayne/archive/2012/01/17/368664.htmlRoyPayneRoyPayneTue, 17 Jan 2012 08:35:00 GMThttp://www.aygfsteel.com/RoyPayne/archive/2012/01/17/368664.htmlhttp://www.aygfsteel.com/RoyPayne/comments/368664.htmlhttp://www.aygfsteel.com/RoyPayne/archive/2012/01/17/368664.html#Feedback0http://www.aygfsteel.com/RoyPayne/comments/commentRss/368664.htmlhttp://www.aygfsteel.com/RoyPayne/services/trackbacks/368664.htmlinterceptҎ有ActionInvocation对象Q可以获取当前的Actionh?br />
public class AuthorityInterceptor extends AbstractInterceptor {
    private static final long serialVersionUID = 1L; 
    private Logger LOG = Logger.getLogger(AuthorityInterceptor.class.getName()); 
    
    private AuthorityUtil authorityUtil;
    
    public String intercept(ActionInvocation invocation) throws Exception {
        if (authorityUtil == null) {
            authorityUtil = new AuthorityUtil();
        }
        
        //获取当前用户所有的权限
        List<OperatorPurviewDO> operatorPurviews = getCurrentOperatorPurviews();
        
        //获取当前操作的url
        String currentUrl = getCurrentUrl(); 
        
         //如果是超U管理员或有当前url的权限,那么直接q回?/span>
        if (OperatorUtil.getIsSuperAdmin() ||(OperatorUtil.getLoginName()!=null&&authorityUtil.checkUrl(operatorPurviews, currentUrl))){
             return invocation.invoke();
        }
         
        if (!OperatorUtil.getIsSuperAdmin()&&operatorPurviews.size()==0) {
            LOG.info("此用?" + OperatorUtil.getLoginName() + " 没有M角色Q没有权限执行Q何功?); 
            return "loginErr"; 
        }   
            return "authorityErr";
    }

2.struts2.xml 配置interceptor

  2.1 定义自定义拦截器
<interceptor name="authorityInterceptor" class="com.wasu.eis.authority.AuthorityInterceptor" /> 
  2.2 加上struts2默认拦截器,形成拦截器栈
            <interceptor-stack name="eisManagerBasicStack">
                <interceptor-ref name="exception"/>
                <interceptor-ref name="alias"/>
                <interceptor-ref name="servletConfig"/>
                <interceptor-ref name="prepare"/>
                <interceptor-ref name="i18n"/>
                <interceptor-ref name="chain"/>
                <interceptor-ref name="debugging"/>
                <interceptor-ref name="profiling"/>
                <interceptor-ref name="scopedModelDriven"/>
                <interceptor-ref name="modelDriven"/>
                <interceptor-ref name="checkbox"/>
                <interceptor-ref name="staticParams"/>
                <interceptor-ref name ="fileUploadStack" /> 
                <interceptor-ref name="params">
                  <param name="excludeParams">dojo\..*</param>
                </interceptor-ref>
                <interceptor-ref name="conversionError"/>
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
                <interceptor-ref name="workflow">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
            </interceptor-stack>
            
            <interceptor-stack name="authorityInterceptorStack">
                <interceptor-ref name="authorityInterceptor" />
                <interceptor-ref name="eisManagerBasicStack" />
            </interceptor-stack>

3.讄为缺省的拦截?br />
<default-interceptor-ref name="authorityInterceptorStack"/>


RoyPayne 2012-01-17 16:35 发表评论
]]>
վ֩ģ壺 | ˰| | | | Ī| | | | ں| | | | | ɽ| | üɽ| | | ͩ| ɽ| | ˮ| ɽ| ƽ| | | ¹| բ| | | | ̳| | ʡ| | | | Ȩ| | ʻ|