<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 175  文章 - 202  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    第一個(gè)Blog,記錄哈哈的生活

    常用鏈接

    留言簿(16)

    隨筆分類(lèi)

    隨筆檔案

    文章分類(lèi)

    文章檔案

    收藏夾

    Java links

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    @import url(http://www.tkk7.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

    二進(jìn)海底,龍宮那邊新多出一個(gè)海螺,進(jìn)去就是龍宮密道,里面有DOMO組員楊志豪,把他弄走,就在原地來(lái)回跑,會(huì)定期出現(xiàn)一大魚(yú)一大蝦,毆之,每次法寶加40點(diǎn)。我在這里練藍(lán)格怪衣,這個(gè)每用一次也加5點(diǎn)。
    posted @ 2014-05-10 21:21 哈哈的日子 閱讀(491) | 評(píng)論 (0)編輯 收藏
    等到符鬼很餓(能喂2個(gè)東西的時(shí)候),找到兩個(gè)相同的喂食物,比如2個(gè)獅子精【有一個(gè)“獅子吼”技能】,設(shè)此時(shí)的符鬼有一個(gè)技能是“強(qiáng)音波”,點(diǎn)擊“獅子吼”兩次,符鬼的那個(gè)技能就變成了“無(wú)” !@import url(http://www.tkk7.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

    為了成功,保存好,多來(lái)幾次!
    posted @ 2014-05-05 21:43 哈哈的日子 閱讀(432) | 評(píng)論 (0)編輯 收藏
    @import url(http://www.tkk7.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 在月河村的客棧,一直向右,到不能再右,向下一步,然后再點(diǎn)寶物就可以了。
    posted @ 2014-05-05 21:34 哈哈的日子 閱讀(498) | 評(píng)論 (0)編輯 收藏
    人成熟與不成熟跟年齡沒(méi)有關(guān)系。人成熟不成熟,就是你能不能站在對(duì)方的角度去看待事物,就是能不能把我的世界變成你的世界。這個(gè)社會(huì)有很多的成年人,還沒(méi)有脫離幼稚的行為。一點(diǎn)小事情就跟別人爭(zhēng)來(lái)爭(zhēng)去。
          人不成熟的第一個(gè)特征:就是立即要回報(bào)。
          他不懂得只有春天播種,秋天才會(huì)收獲。很多人在做任何事情的時(shí)候,剛剛付出一點(diǎn)點(diǎn),馬上就要得到回報(bào)。(學(xué)鋼琴,學(xué)英語(yǔ)等等,剛開(kāi)始就覺(jué)得難,發(fā)現(xiàn)不行,立即就要放棄。)很多人做生意,開(kāi)始沒(méi)有什么成績(jī),就想著要放棄,有的人一個(gè)月放棄,有的人三個(gè)月放棄,有的人半年放棄,有的人一年放棄,我不明白人們?yōu)槭裁摧p易放棄,但是我知道,放棄是一種習(xí)慣,一種典型失敗者的習(xí)慣。所以說(shuō)你要有眼光,要看得更遠(yuǎn)一些,眼光是用來(lái)看未來(lái)的!
          對(duì)在生活中有放棄習(xí)慣的人,有一句話(huà)一定要送給你:"成功者永不放棄,放棄者永不成功"。那為什么很多的人做事容易放棄呢?美國(guó)著名成功學(xué)大師拿破侖希爾說(shuō)過(guò):
    窮人有兩個(gè)非常典型的心態(tài):
    1、永遠(yuǎn)對(duì)機(jī)會(huì)說(shuō):"不";
    2、總想"一夜暴富"。
          今天你把什么機(jī)會(huì)都放到他的面前,他都會(huì)說(shuō)"不"。就是今天你開(kāi)飯店很成功,你把你開(kāi)飯店的成功經(jīng)驗(yàn),發(fā)自?xún)?nèi)心的告訴你的親朋好友,讓他們也去開(kāi)飯店,你能保證他們每個(gè)人都會(huì)開(kāi)飯店嗎?是不是照樣有人不干。
          所以這是窮人一個(gè)非常典型的心態(tài),他會(huì)說(shuō):"你行,我可不行?。?。一夜暴富的表現(xiàn)在于,你跟他說(shuō)任何的生意,他的第一個(gè)問(wèn)題就是"掙不掙錢(qián)",你說(shuō)"掙錢(qián)",他馬上就問(wèn)第二個(gè)問(wèn)題"容易不容易",你說(shuō)"容易",這時(shí)他跟著就問(wèn)第三個(gè)問(wèn)題"快不快",你說(shuō)"快"!這時(shí)他就說(shuō)"好,我做?。⒑呛?,你看,他就這么的幼稚!
          大家想一想,在這個(gè)世界上有沒(méi)有一種:"又掙錢(qián),又容易,又快的",沒(méi)有的,即使有也輪不到我們啊,所以說(shuō)在生活中,我們一定要懂得付出。那為什么你要付出呢?因?yàn)槟闶菫榱俗非竽愕膲?mèng)想而付出的,人就是為了希望和夢(mèng)想活著的,如果一個(gè)人沒(méi)有夢(mèng)想,沒(méi)有追求的話(huà),那一輩子也就沒(méi)有什么意義了!
          在生活中你想獲得什么,你就得先付出什么。你想獲得時(shí)間,你就得先付出時(shí)間,你想獲得金錢(qián),你得先付出金錢(qián)。你想得到愛(ài)好,你得先犧牲愛(ài)好。你想和家人有更多的時(shí)間在一起,你先得和家人少在一起。
    但是,有一點(diǎn)是明確的,你在這個(gè)項(xiàng)目中的付出,將會(huì)得到加倍的回報(bào)。就象一粒種子,你把它種下去以后,然后澆水,施肥,鋤草,殺蟲(chóng)。最后你收獲的是不是幾十倍,上百倍的回報(bào)。
          在生活中,你一定要懂得付出,你不要那么急功近利,馬上想得到回報(bào),天下沒(méi)有白吃的午餐,你輕輕松松是不可能成功的。
    一定要懂得先付出!
    人不成熟的第二個(gè)特征:就是不自律。
    不自律的主要表現(xiàn)在哪里呢?
    一、不愿改變自己:
          你要改變自己的思考方式和行為模式。你要改變你的壞習(xí)慣。其實(shí),人與人之間能力是沒(méi)有多大區(qū)別,區(qū)別在于思考方式的不同。一件事情的發(fā)生,你去問(wèn)成功者和失敗者,他們的回答是不一樣的,甚至是相違背的。
          我們今天的不成功是因?yàn)槲覀兊乃伎挤绞讲怀晒?。一個(gè)好的公式是:當(dāng)你種植一個(gè)思考的種子,你就會(huì)有行動(dòng)的收獲,當(dāng)你把行動(dòng)種植下去,你會(huì)有習(xí)慣的收獲,當(dāng)你再把習(xí)慣種植下去,你就會(huì)有個(gè)性的收獲,當(dāng)你再把個(gè)性種植下去,就會(huì)決定你的命運(yùn)。
          但是如果你種植的是一個(gè)失敗的種子,你得到的一定是失敗,如果你種植的是一個(gè)成功的種子,那么你就一定會(huì)成功。
    很多人有很多的壞習(xí)慣,如:看電視,打麻將,喝酒,泡舞廳,他們也知道這樣的習(xí)慣不好,但是他們?yōu)槭裁床辉敢飧淖兡??因?yàn)楹芏嗳藢幵溉淌苣切┎缓玫纳罘绞?,也不愿意忍受改變帶?lái)的痛苦
    二、愿意背后議論別人:
          如果在生活中,你喜歡議論別人的話(huà),有一天一定會(huì)傳回去,中國(guó)有一句古話(huà),論人是非者,定是是非人
    三、消極,抱怨:
          你在生活中喜歡那些人呢?是那些整天愁眉苦臉,整天抱怨這個(gè)抱怨哪個(gè)的人,還是喜歡那些整天開(kāi)開(kāi)心心的人。如果你在生活中是那些抱怨的,消極的人的話(huà),你一定要改變你性格中的缺陷。如果你不改變的話(huà),你是很難適應(yīng)這個(gè)社會(huì)的。你也是很難和別人合作的。
          生活當(dāng)中你要知道,你怎樣對(duì)待生活,生活也會(huì)怎樣對(duì)待你,你怎樣對(duì)待別人,別人也會(huì)怎樣對(duì)待你。所以你不要消極,抱怨。你要積極,永遠(yuǎn)的積極下去,就是那句話(huà):成功者永不抱怨,抱怨者永不成功
    人不成熟的第三個(gè)特征:經(jīng)常被情緒所左右。
    一個(gè)人成功與否,取決于五個(gè)因素:
    學(xué)會(huì)控制情緒
    健康的身體
    良好的人際關(guān)系
    時(shí)間管理
    財(cái)務(wù)管理
          如果你想成功,一定要學(xué)會(huì)管理好這五個(gè)因素,為什么把情緒放在第一位呢?把健康放在第二位呢?是因?yàn)槿绻阍購(gòu)?qiáng)的身體,如果你情緒不好,就會(huì)影響到你的身體,現(xiàn)在一個(gè)人要成功20%靠的是智商,80%靠的是情商,所以你要控制好你的情緒,情緒對(duì)人的影響是非常大的。人與人之間,不要為了一點(diǎn)點(diǎn)小事情,就暴跳如雷,這樣是不好的。
    所以在生活中,你要養(yǎng)成什么樣的心態(tài)呢?你要養(yǎng)成"三不","三多":

    不批評(píng)、不抱怨、不指責(zé);

    多鼓勵(lì)、多表?yè)P(yáng)、多贊美。

          你就會(huì)成為一個(gè)受社會(huì)大眾歡迎的人。如果你想讓你的伙伴更加的優(yōu)秀,很簡(jiǎn)單,永遠(yuǎn)的激勵(lì)和贊美他們。
          即使他們的確有毛病,那應(yīng)該怎么辦呢?這時(shí)是不是應(yīng)該給他們建議,在生活中你會(huì)發(fā)現(xiàn)有這樣一個(gè)現(xiàn)象,有人給別人建議的時(shí)候,別人能夠接受,但是有建議的時(shí)候別人就會(huì)生氣。其實(shí)建議的方式是最重要的,就是"三明治"贊美,建議,再贊美!
    想一想,你一天贊美了幾個(gè)人,有的人可能以為贊美就是吹捧,就是拍馬屁。贊美和吹捧是有區(qū)別的,贊美有四個(gè)特點(diǎn):
    1、是真誠(chéng)的
    2、是發(fā)自?xún)?nèi)心的
    3、被大眾所接受的
    4、無(wú)私的
          如果你帶有很強(qiáng)的目的性去贊美,那就是拍馬屁。當(dāng)你贊美別人時(shí)候,你要大聲的說(shuō)出來(lái),當(dāng)你想批評(píng)別人的時(shí)候,一定要咬住你的舌頭!
          人不成熟的第四個(gè)特征:不愿學(xué)習(xí),自以為是,沒(méi)有歸零心態(tài)。
          其實(shí)人和動(dòng)物之間有很多的相似之處,動(dòng)物的自我保護(hù)意識(shí)比人更強(qiáng)(嬰兒與小豬)但是,人和動(dòng)物最大的區(qū)別在于,人會(huì)學(xué)習(xí),人會(huì)思考。人是要不斷學(xué)習(xí)的,你千萬(wàn)不要把你的天賦潛能給埋沒(méi)了,一定要學(xué)習(xí),一定要有一個(gè)空杯的心態(tài)。我們象誰(shuí)去學(xué)習(xí)呢?就是直接向成功人士學(xué)習(xí)!
          你要永遠(yuǎn)學(xué)習(xí)積極正面的東西,不看,不聽(tīng)那些消極,負(fù)面的東西。一旦你吸收了那些有毒的思想,它會(huì)腐蝕你的心靈和人生    的。在這個(gè)知識(shí)經(jīng)濟(jì)的時(shí)代里,學(xué)習(xí)是你通向未來(lái)的唯一護(hù)照。在這樣一個(gè)速度,變化,危機(jī)的時(shí)代,你只有不斷的學(xué)習(xí)你才不會(huì)被這個(gè)時(shí)代所拋棄,一定要有學(xué)習(xí),歸零的心態(tài)。去看每一個(gè)人的優(yōu)點(diǎn),"三人行,必有我?guī)熞玻ⅲ?/div>
    人不成熟的第五個(gè)特征:做事情不靠信念,靠人言。
          我們說(shuō)相信是起點(diǎn),堅(jiān)持是終點(diǎn)。很多人做事不靠信念,喜歡聽(tīng)別人怎么說(shuō)。對(duì)自己所做的事業(yè),沒(méi)有100%的信心,相信和信念是兩個(gè)不同的概念,相信是看得見(jiàn)的,信念是看不見(jiàn)的。
          信念是人類(lèi)的一種態(tài)度,但是很多的人他們做事,不靠信念的,而是要聽(tīng)別人怎么說(shuō),你要登上山峰,要問(wèn)那些爬到山頂?shù)娜耍f(wàn)不能問(wèn)沒(méi)有爬過(guò)山的人。
          這里不是說(shuō)別人的建議不要去聽(tīng),你可以去參考,但是你要記住,你來(lái)做這個(gè)生意是為了實(shí)現(xiàn)你的夢(mèng)想,實(shí)現(xiàn)你自己的價(jià)值。其他的人是不會(huì)關(guān)心你的夢(mèng)想的,只有你自己關(guān)心你自己的夢(mèng)想,只有你自己關(guān)心你自己能否真正的成功。這才是最重要的!
    只要你的選擇是正確的,永遠(yuǎn)不要在乎別人怎么說(shuō),以上的人不成熟的五個(gè)特征,你們自己去對(duì)照,那一個(gè)特征是你有的,你一定要在最短的時(shí)間里改正,只要你相信你自己能夠戰(zhàn)勝自己的不成熟,你就會(huì)逐漸的成長(zhǎng),成熟起來(lái),你就會(huì)得到你想要的那種生活。你就會(huì)實(shí)現(xiàn)你時(shí)間自由、財(cái)務(wù)自由、精神自由的人生夢(mèng)想! 
    posted @ 2013-11-20 16:17 哈哈的日子 閱讀(240) | 評(píng)論 (0)編輯 收藏

    設(shè)置了 scanPeriod 之后,過(guò)了好長(zhǎng)時(shí)間,都不生效,后來(lái) debug 代碼。發(fā)現(xiàn)了下面這段。

      private volatile long mask = 0xF;
    @Override
    public FilterReply decide(Marker marker, Logger logger, Level level,
    String format, Object[] params, Throwable t) {
    if (!isStarted()) {
    return FilterReply.NEUTRAL;
    }
    // for performance reasons, skip change detection (MASK-1) times out of MASK.
    // Only once every MASK calls is change detection code executed
    // Note that MASK is a variable itself.
    if (((invocationCounter++) & mask) != mask) {
    return FilterReply.NEUTRAL;
    }
    long now = System.currentTimeMillis();
    synchronized (configurationWatchList) {
    updateMaskIfNecessary(now);
    if (changeDetected(now)) {
    // Even though reconfiguration involves resetting the loggerContext,
    // which clears the list of turbo filters including this instance, it is
    // still possible for this instance to be subsequently invoked by another
    // thread if it was already executing when the context was reset.
    disableSubsequentReconfiguration();
    detachReconfigurationToNewThread();
    }
    }
    return FilterReply.NEUTRAL;
    }
    

    這行 if (((invocationCounter++) & mask) != mask) { mask = 0xf,其實(shí)要每循環(huán) 0xf 次,也就是 15 次,才會(huì)去 check 一次是否要更新,也就是說(shuō),不管過(guò)了多久,如果沒(méi)到這 15 次,也不會(huì)去檢查是否更新配置。
    也就是說(shuō),我多打幾次 log,配置文件就生效了。

    @import url(http://www.tkk7.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
    posted @ 2013-11-12 14:25 哈哈的日子 閱讀(1615) | 評(píng)論 (0)編輯 收藏

    spring security(下簡(jiǎn)寫(xiě)為 ss)控制的安全主要有兩方面,Web 和 Method Call,這兩個(gè)方面的權(quán)限控制有比較多的相通的設(shè)計(jì),也有一些特別的功能。比如 Method Call 可以做 After Invocation 控制,而 Web 可以做 Ip 地址控制。

    這里面有兩個(gè)最基本的概念:authentication manager 和 access decision manager,前者控制認(rèn)證,后都控制鑒權(quán)。
    1. 在 ss 的認(rèn)證系統(tǒng)中,默認(rèn)的實(shí)現(xiàn)幫助我們提供了三個(gè)概念,用戶(hù)(user),角色(authority,一般存 role)和組(group),三者的關(guān)系是,組、角色與用戶(hù)都是多對(duì)多關(guān)系,組和角色間沒(méi)關(guān)系,默認(rèn)是不啟用組的。后續(xù),在 Acl 權(quán)限管理中,可以看到角色之間,是可以有包含(樹(shù)形?)關(guān)系的。
    2. 在 ss 的鑒權(quán)系統(tǒng)中,明顯會(huì)比認(rèn)證復(fù)雜得多。有 AccessDecisionManager, AccessDecisionVoter(前置), AfterInvocationProvider(后置), RoleHierarchy, SidRetrievalStrategy, LookupStrategy, PermissionGrantingStrategy, SecurityExpressionHandler, AclService, MutableAclService, AclCache 概念過(guò)多了,要一個(gè)一個(gè)解釋
    a) 中心是 AccessDecisionManager,主要負(fù)責(zé) AccessDecisionVoter 的管理,默認(rèn)提供了3種實(shí)現(xiàn):1. AffirmativeBased 如果有任何一個(gè)投票器允許訪(fǎng)問(wèn),請(qǐng)求將被立刻允許,而不管之前可能有的拒絕決定。2. ConsensusBased 多數(shù)票(允許或拒絕)決定了結(jié)果,平局的投票 和空票(全是棄權(quán)的)的結(jié)果是可配置的。3. UnanimousBased 所有的投票器必須全是允許的,否則訪(fǎng)問(wèn)將 被拒絕。
    AccessDecisionManager 在用于 Web 和 Method Call 兩種情況下,可能是不一致的,因?yàn)楣δ芤膊灰恢隆?br /> b) Method Call 除了使用 AccessDecisionManager 進(jìn)行權(quán)限判斷外,還可以增加 AfterInvocationProvider 來(lái)進(jìn)行出口數(shù)據(jù)的判斷,默認(rèn)提供了 3 種。
    1) PostInvocationAdviceProvider: 需要提供一個(gè) PostInvocationAuthorizationAdvice,默認(rèn)實(shí)現(xiàn)只有一個(gè),就是 ExpressionBasedPostInvocationAdvice,可以通過(guò) spel 來(lái)進(jìn)行權(quán)限判斷。注意 ExpressionBasedPostInvocationAdvice 中需要提供一個(gè) MethodSecurityExpressionHandler,能夠創(chuàng)建出一個(gè) MethodSecurityExpressionOperations,放到 spel context 中,供 spel function 調(diào)用,這樣的方式,在后續(xù)很常見(jiàn)。
    2) AclEntryAfterInvocationProvider 和 AclEntryAfterInvocationCollectionFilteringProvider : 這兩種都差不多,主要依賴(lài) AclService, ObjectIdentityRetrievalStrategy, SidRetrievalStrategy 來(lái)配合,檢查返回值的權(quán)限。Collection 版本的,可以把無(wú)權(quán)限的數(shù)據(jù)去掉,只留下有權(quán)限的數(shù)據(jù)。
    c) RoleHierarchy 提供了角色之間的關(guān)系,提供了兩個(gè)實(shí)現(xiàn),一個(gè)是沒(méi)關(guān)系的,直接把 user 的 role 返回,另外一個(gè)是有繼承關(guān)系的。繼承關(guān)系實(shí)現(xiàn)挺有意思的,能夠處理多級(jí)的 include 關(guān)系,比較好用。
    RoleHierarchy 的使用比較復(fù)雜,會(huì)被 AccessDecisionVoter, SidRetrievalStrategy, SecurityExpressionHandler 用到,SecurityExpressionHandler 又會(huì)被 AccessDecisionVoter 用到,所以還是有點(diǎn)兒混亂。
    具體的說(shuō) SecurityExpressionHandler 會(huì)用到 PermissionEvaluator 和 RoleHierarchy,PermissionEvaluator 的一個(gè)實(shí)現(xiàn) AclPermissionEvaluator 會(huì)用到 SidRetrievalStrategy。
    d) SidRetrievalStrategy 和 RoleHierarchy 的功能比較接近,比 RoleHierarchy 高一個(gè)抽象層次,功能上也有所區(qū)別,是從一個(gè) authentication 拿到所有相關(guān)的 Sid(包括 Role(GrantedAuthoritySid) 和 User(PrincipalSid)),而 RoleHierarchy 只包括了 Role(GrantedAuthoritySid)的繼承關(guān)系。
    e) LookupStrategy 通過(guò) ObjectIdentity 和 Sid 把相關(guān)的 Acl 查詢(xún)出來(lái)??梢栽?LookupStrategy 擴(kuò)展 Acl 和 Ace 的功能,比如在 Ace 上面加上時(shí)間的條件限制,就需要自己定義 LookupStrategy,把時(shí)間條件從數(shù)據(jù)庫(kù)查詢(xún)出來(lái),并放到自定義的 Ace 當(dāng)中。
    但這件事情非常麻煩,因?yàn)槟J(rèn)實(shí)現(xiàn)的 BasicLookupStrategy 是個(gè) Final 的類(lèi),所以只能自己直接實(shí)現(xiàn)接口,無(wú)法使用現(xiàn)有的功能。
    LookupStrategy 會(huì)生成 Acl,而最終的權(quán)限驗(yàn)證是由 Acl 完成的,如果想驗(yàn)證帶時(shí)間條件的 Ace,需要給 Acl 設(shè)置自定義的帶有檢查時(shí)間功能的 PermissionGrantingStrategy,實(shí)際上,這個(gè) PermissionGrantingStrategy 會(huì)首先設(shè)置給 LookupStrategy,LookupStrategy 在創(chuàng)建 Acl 的時(shí)候,再放到 Acl 中去。
    f) SecurityExpressionHandler 能夠執(zhí)行 spel,得到是否可以訪(fǎng)問(wèn)的結(jié)果,它的子類(lèi)都是繼承自 AbstractSecurityExpressionHandler 的,有一個(gè)非常重要的方法是 SecurityExpressionOperations createSecurityExpressionRoot(Authentication authentication, T invocation),創(chuàng)建一個(gè) SecurityExpressionOperations 放到 EvaluationContext 中去,提供 spel 中執(zhí)行的方法實(shí)現(xiàn)。比如 SecurityExpressionOperations 的一個(gè)抽象實(shí)現(xiàn) SecurityExpressionRoot 中,就包含了大量的權(quán)限驗(yàn)證方法,如 hasRole, hasPermission 等常用的功能。
    g) AclService, MutableAclService, AclCache 概念比較簡(jiǎn)單,AclService 是通過(guò) LookupStrategy 查詢(xún) Acl,自已可以查詢(xún) ObjectIdentity 的父子關(guān)聯(lián)關(guān)系,MutableAclService 提供了修改的能力,AclCache 為 AclService 提供緩存,默認(rèn)的實(shí)現(xiàn)了一個(gè) EhCacheBasedAclCache。
    3. ss 的鑒權(quán)模型 Sid, ObjectIdentity, Acl, Ace, Permission
    a) Sid: 是中心,所有的授權(quán)會(huì)關(guān)聯(lián)在 Sid 上面,Sid 和之前的 Role Base Permission 會(huì)有些相同的地方,但也明顯不同,Sid 默認(rèn)實(shí)現(xiàn)情況下,分為 GrantedAuthoritySid 和 PrincipalSid,其實(shí)就是 Role 和 User,通過(guò) SidRetrievalStrategy 拿到一個(gè) Authentication 的 Sid。
    b) ObjectIdentity: 可以理解成 Resource,就是可訪(fǎng)問(wèn)的目標(biāo)資源,有 id 和 type 兩個(gè)字段,默認(rèn)實(shí)現(xiàn)的 ObjectIdentityImpl 會(huì)直接調(diào)用目標(biāo) domainObject 的 getClass 和 getId 方法拿到兩個(gè)參數(shù)。在 PermissionEvaluator, AfterInvocationProvider 中,會(huì)用到 ObjectIdentityRetrievalStrategy 和 ObjectIdentityGenerator,ObjectIdentityRetrievalStrategy 會(huì)根據(jù) domainObject 拿到 ObjectIdentity,然后使用 Acl 進(jìn)行鑒權(quán),ObjectIdentityGenerator 會(huì)在系統(tǒng)提供的不是 domainObject,而是 type, id 的時(shí)候,拿到 ObjectIdentity,然后進(jìn)行 Acl 鑒權(quán),這兩個(gè)接口有一個(gè)共同的實(shí)現(xiàn) ObjectIdentityRetrievalStrategyImpl,如果需要在 ObjectIdentity 進(jìn)行新的抽象,需要用新的實(shí)現(xiàn),到得不同的 ObjectIdentity,比如將業(yè)務(wù)對(duì)象分類(lèi)鑒權(quán)這樣的需求。
    c) Acl, 每個(gè) ObjectIdentity 最多對(duì)應(yīng)一條 Acl,Acl 中包含了很多,包括 parental,說(shuō)明 Acl 是有繼承關(guān)系的?其實(shí)不是,呵呵,是 ObjectIdentity 有繼承關(guān)系而已。有一個(gè) ObjectIdentity,有很多 Sid,還有一個(gè)叫做 Owner 的 Sid,有從 LookupStrategy 傳過(guò)來(lái)的 PermissionGrantingStrategy,進(jìn)行實(shí)際的鑒權(quán),還有 AclAuthorizationStrategy 檢查有沒(méi)有權(quán)限進(jìn)行 Acl security check。實(shí)現(xiàn)時(shí)間條件檢查,就擴(kuò)展 PermissionGrantingStrategy。
    為什么沒(méi)有 RoleHierarchy 或是 SidRetrievalStrategy 存在呢?是因?yàn)檎{(diào)用 Acl 進(jìn)行權(quán)限檢查之前,已經(jīng)把相關(guān)的 Sid 得到了,再給 Acl 的。
    d) Ace, Permission: Ace 存儲(chǔ) Sid, Permission,提供給 Acl 鑒權(quán)用。增加時(shí)間條件的話(huà),最基本的,就是要在 Ace 中,增加時(shí)間條件字段。Permission 是用二進(jìn)制存儲(chǔ)的,但默認(rèn)實(shí)現(xiàn)的數(shù)據(jù)庫(kù)存儲(chǔ)并不是,是一個(gè)一條,存在數(shù)據(jù)庫(kù)里面的。

    好吧,概念還是非常多的,不過(guò)鑒于權(quán)限控制本身就是個(gè)復(fù)雜的話(huà)題,ss 這些設(shè)計(jì)的我覺(jué)得已經(jīng)非常好,也基本夠用了。

    @import url(http://www.tkk7.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
    posted @ 2013-11-12 14:25 哈哈的日子 閱讀(658) | 評(píng)論 (0)編輯 收藏
    Security.setProperty("ssl.SocketFactory.provider", "com.datayes.cloud.util.TrustAllSSLSocketFactory");
    package com.datayes.cloud.util;

    import javax.net.ssl.SSLContext;
    import javax.net.ssl.SSLSocketFactory;
    import javax.net.ssl.TrustManager;
    import javax.net.ssl.X509TrustManager;
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.security.KeyManagementException;
    import java.security.KeyStoreException;
    import java.security.NoSuchAlgorithmException;
    import java.security.UnrecoverableKeyException;
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;

    public class TrustAllSSLSocketFactory extends SSLSocketFactory {
        SSLContext sslContext = SSLContext.getInstance("TLS");

        public TrustAllSSLSocketFactory() throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
            TrustManager tm = new X509TrustManager() {
                public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                }

                public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                }

                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
            };
            sslContext.init(nullnew TrustManager[]{tm}, null);
        }

        @Override
        public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException {
            return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
        }


        @Override
        public Socket createSocket(String host, int port) throws IOException {
            return sslContext.getSocketFactory().createSocket(host, port);
        }

        @Override
        public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException {
            return sslContext.getSocketFactory().createSocket(host, port, localHost, localPort);
        }

        @Override
        public Socket createSocket(InetAddress host, int port) throws IOException {
            return sslContext.getSocketFactory().createSocket(host, port);
        }

        @Override
        public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {
            return sslContext.getSocketFactory().createSocket(address, port, localAddress, localPort);
        }

        @Override
        public Socket createSocket() throws IOException {
            return sslContext.getSocketFactory().createSocket();
        }

        @Override
        public String[] getDefaultCipherSuites() {
            return new String[0];
        }

        @Override
        public String[] getSupportedCipherSuites() {
            return new String[0];
        }
    }
    posted @ 2013-09-10 12:30 哈哈的日子 閱讀(1590) | 評(píng)論 (0)編輯 收藏
    主要是遇到的一些問(wèn)題吧,順便感謝一下幫助了我的人。安裝之前,聽(tīng)說(shuō)安裝正式環(huán)境的 OpenStack 挺麻煩的,所以,出發(fā)點(diǎn)就是安裝一個(gè)能測(cè)試使用的 Dev 環(huán)境就可以了,不求全,時(shí)間緊張,能用就行。所以,定位到 devstack(http://devstack.org),一鍵安裝 OpenStack

    問(wèn)題
    1. 想用 CentOS 來(lái)著,沒(méi)原因,習(xí)慣了,后來(lái)發(fā)現(xiàn),devstack 默認(rèn)支持 ubuntu,為了簡(jiǎn)單,改用 ubuntu
    2. 安裝過(guò)程中,需要大量的網(wǎng)絡(luò)下載,網(wǎng)速如果不快,挺急人的。
    3. 安裝到 stack.sh 的 191 行,會(huì)報(bào)錯(cuò) [ERROR] ./stack.sh:191 g-api did not start,這個(gè)問(wèn)題折騰了我好久,最后按照 https://answers.launchpad.net/glance/+question/231020 辦法解決了,非常感謝 Marc PINHEDE (pinhede-marc) ,但在 https://bugs.launchpad.net/devstack/+bug/1119428 里,有人說(shuō)只要修改 /etc/default/locale LANG="POSIX",就可以了,其實(shí)我兩個(gè)都改了,也不知道是哪個(gè)產(chǎn)生了作用。但,第一種方法,需要安裝到一半,失敗了,才會(huì)有提到的 /opt/stack/glance/glance/notifier/notify_kombu.py 文件,但第二種方法,剛開(kāi)始就可以嘗試,所以我如果下次安裝的話(huà),會(huì)先把第二種配置修改好,如果安裝失敗了,再使用第一種方法繼續(xù)。


    posted @ 2013-08-06 10:19 哈哈的日子 閱讀(625) | 評(píng)論 (0)編輯 收藏
    在 compile hadoop-common 的時(shí)候,提示 protobuf 出錯(cuò),查了一下,需要安裝 protobuf(是一個(gè)非 Java 的組件)
    先到 homebrew 上找到安裝 homebrew 的方法 ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
    然后不能直接 brew install protobuf,因?yàn)闀?huì)安裝 1.5.0,也沒(méi)辦法編譯過(guò)的,我試了。
    需要先 brew versions protobuf,然后 cd `brew --prefix`(我默認(rèn)的是 cd /usr/local),直接招待剛才 brew versions 出來(lái)的那個(gè) git clone 方法。
    然后再次 brew install protobuf ,就安裝  1.4.1 了,繼續(xù) maven 就沒(méi)有問(wèn)題了。
    posted @ 2013-07-24 13:24 哈哈的日子 閱讀(377) | 評(píng)論 (0)編輯 收藏
    在 .bash_profile 中增加一行 export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 就可以了。


    posted @ 2013-07-24 13:20 哈哈的日子 閱讀(389) | 評(píng)論 (0)編輯 收藏
    僅列出標(biāo)題  下一頁(yè)
    主站蜘蛛池模板: 久久亚洲精品无码aⅴ大香| 无码专区一va亚洲v专区在线| 无码国产精品一区二区免费vr | 国产自偷亚洲精品页65页| 免费在线观看黄网| 免费人成视频在线观看视频| 国产又大又粗又硬又长免费| 国产在线ts人妖免费视频| 免费日本黄色网址| 亚洲毛片网址在线观看中文字幕| ZZIJZZIJ亚洲日本少妇JIZJIZ| 久久亚洲2019中文字幕| 亚洲夜夜欢A∨一区二区三区| 国产亚洲综合久久系列| 久久久久亚洲AV成人无码| 精品亚洲国产成AV人片传媒| 亚洲精品亚洲人成在线麻豆| 亚洲电影唐人社一区二区| 亚洲一级毛片在线观| 亚洲乱码无人区卡1卡2卡3| 激情无码亚洲一区二区三区| 特级av毛片免费观看| 国产一级a毛一级a看免费人娇| 久久免费国产视频| 91久久精品国产免费直播| 成人免费一区二区无码视频| 国产一区二区三区在线观看免费| 亚洲日韩在线观看| 亚洲视频在线观看| 亚洲男人的天堂网站| 国产黄在线观看免费观看不卡| 国产精品白浆在线观看免费| 色影音免费色资源| 免费一级国产生活片| 亚洲国产精品无码专区| 91亚洲国产成人久久精品 | 亚洲色欲色欲www在线丝| 亚洲精品在线播放视频| 色综合久久精品亚洲国产| 精选影视免费在线 | 97免费人妻无码视频|