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

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

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

    Tom Xu

     

    2013年2月24日

    sql 語法 stuff

    1、作用
    刪除指定長度的字符,并在指定的起點處插入另一組字符。

    2、語法
    STUFF ( character_expression , start , length ,character_expression )

    3、示例
    以下示例在第一個字符串 abcdef 中刪除從第 2 個位置(字符 b)開始的三個字符,然后在刪除的起始位置插入第二個字符串,從而創建并返回一個字符串SELECT STUFF('abcdef', 2, 3, 'ijklmn')
    GO

    下面是結果集
    aijklmnef

    4、參數
    character_expression
    一個字符數據表達式。character_expression 可以是常量、變量,也可以是字符列或二進制數據列。

    start
    一個整數值,指定刪除和插入的開始位置。如果 start 或 length 為負,則返回空字符串。如果 start 比第一個 character_expression長,則返回空字符串。start 可以是 bigint 類型。

    length
    一個整數,指定要刪除的字符數。如果 length 比第一個 character_expression長,則最多刪除到最后一個 character_expression 中的最后一個字符。length 可以是 bigint 類型。

    5、返回類型
    如果 character_expression 是受支持的字符數據類型,則返回字符數據。如果 character_expression 是一個受支持的 binary 數據類型,則返回二進制數據。

    6、備注
    如果結果值大于返回類型支持的最大值,則產生錯誤。
    (資料來源于網絡)

    posted @ 2013-02-24 11:21 Tom Xu 閱讀(247) | 評論 (0)編輯 收藏

    2012年11月4日

    Spring 學習筆記(實例化方式 spring bean作用域 spring依賴注入 spring自動掃描 spring和struts整合步驟)

     
    spring bean 實例化的方式
            1.默認情況下是調用bean對象的默認構造函數來示例話bean
            2.調用工廠的靜態方法來實例化bean
                    <bean id="bean實例name" class="工廠類" factory-method="工廠的靜態方法"></bean>
            3.調用工廠方法來實例化bean
                     <bean id="工廠實例name" class="工廠類"  class="工廠類名">
                     <bean id="bean實例name" factory-name="工廠實例name",factory-method="工廠的非靜態方法">
    spring bean 的作用域 (可以使用scope="singleton/prototype/request/session/global session"來配置)
            1.默認作用域(singleton)情況下:
            bean的實例化是在容器實例化(被主動申請加載)時就實例化
            將lazy-init="true" (延遲初始化) 不會再容器實例化實例化bean (不建議使用)
            用init-method="methodName" 可以指定bean被實例化時調用的方法
            用destory-method="methodName" 可以制定容器調用close方法后bean執行的方法
             2.配置prototype(原型)作用域:
           bean的實例化是在調用getBean方法時被實例化的
           每次調用一個getBean方法都回返回一個新的對象

    Spring Dependency Injection(Spring的依賴注入)
           1.使用映射的方式注入
    <bean id="personDao" class="接口實現類路徑"></bean>   
    <bean id="persionService" class="接口實現的類路徑">
        <property name="personDao" ref="personDao"></property>   <!--反射賦值-->    
        <property name="name"  value="tom test!!!!!!!!"></property> <!--為基本類型賦值-->
                <property name="name"  value="100"></property> <!--為基本類型賦值-->
    </bean>
           2.使用內部bean 的方式注入
            <bean id="persionService" class="實現的類路徑">
                 <property name="persionDao">
                        <bean  class="dao實現路徑"/>
                 </property>
            </bean>
          3.集合類型的注入
                      <bean id="personService" class="實現類路徑">
                         <property name="sets">
                            <set>                                                                    <!--此處可以為list-->
                                    <value>一個value</value>
                                    <value>兩個value</value>
                            </set>
                             <map>
                                     <entry key="key-1" value="value-1"/>
                                    <entry key="key-2" value="value-2"/>
      <entry key="key-3" value="value-3"/>
                             </map>
                         </property>
                       </bean> 
          4.使用構造器參數注入(調用特定的構造函數)
                 如果PersonServiceBean中的有構造函數PersonServiceBean(PersonDao personDao,String name){}
                    <bean id="personDao11111111" class="類實現路徑"><bean>
                    <bean id="personService" class="類實現路徑">
                        <constructor-arg index="0" type="自定義type類的路徑" ref="personDao111111">
                        <constructor-arg index="1" type="基本類型可以省去......"  value="111111111">
                    </bean>       
          5.使用Field注入(用于注解的方式)
            屬性的值注入
            @Resource private PersonDao personDao;     /* 先找到 容器中的 bean的對應名稱進行匹配,若無,找類型匹配 */   
             屬性的set方法注入
            @Resource
            public void setXXX(Object object){}     

    Spring 自動掃描和管理(掃描的方式去自動管理組建)
    引入類配置<context:component-scan base-package>
                     @Service @ Resposity
              通過class 類名首字母小寫 @Service("對象名")來獲得,也可以  @scope("prototype") 來設置初始化類的屬性
             可以在方法名上面@PostConstruct 可以制定初始化方法
             可以在方法名上面@PreDestory 可以在bean實例被摧毀之前執行的方法。

    Spring和Struts2的整合
    1.找到Struts2-Spring-plugin-.XX.jar包和Spring.jar包 加入到web項目的lib包下
    2.配置WEB-INF/web.xml文件,加入與struts整合的監聽器
         <!-- 
       <context-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:beans.xml</param-value>
    </context-param>
         -->
        <!-- 若applicationContext.xml文件不在WEB-INF 下則需要將將路徑放入上面參數中-->
    <listener>
               <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
            
    3.在struts.xml文件中加入spring常量(structs中對象的創建叫給spring)
         <constant name="struts.objectFactory" value="spring"/>    
        <action class="loginAction" name="loginAction_*"  method="{1}">
              <result name="success" type="redirect">index.jsp</result> 
       </action>

    4.創建applicationContext.xml文件,文件可以放在web-inf目錄下,這樣可以不用在1中加入context的配置
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">           
        <bean id="loginAction" class="xxxxxxxxxxxxxxxxxxxxxxx" scope="prototype"/>
    </beans>
    注意:(1)struts2中需要加入prototype(原型)的配置,這樣才能滿足struts2為每次請求創建一個對象的服務方式  
              (2)此處的id 名需要與3中的class同名

    posted @ 2012-11-04 22:43 Tom Xu 閱讀(2372) | 評論 (0)編輯 收藏

    可重復性讀寫鎖 顯式鎖 隱式鎖 線程進程同步讀寫同步(ReentrantReadWriteLock Lock Synchronized )

    ReentrantReadWriteLock的特性

    1.公平性和非公平性獲取鎖:

        支持按照公平的原則獲取鎖,即讀寫線程按照最長等待時間分配鎖

        若構造為非公平性的,則按照先到先得的順序,但是有讀線程想獲取鎖時,該順序被打破

    2.重復獲得鎖:讀線程可以重復的獲取鎖,盡管當前讀線程占用

    3.鎖降級:

        可以將write lock 的等級降為 read lock ,順序是:先獲得WriteLock再獲得ReadLock,然后釋放WriteLock,這時候線程將保持Readlock的持 有。

       反過來ReadLock想要升級為WriteLock則不可能

    4.中斷鎖的獲?。鹤x鎖和寫鎖的獲取期間都允許被中斷

    5.Condition 類的支持:該支持僅僅就寫操作而言,若readLock(0.newCondition() 將會throws UnsupprotedoperationException

    6.可監測性:這個類支持操作是否對鎖的獲取還是競爭,只是為檢測系統狀態,而不是為了同步而設計的。


    顯式鎖(Lock)和隱式鎖(Synchronized)的不同點,括號注明隱式鎖與重復讀寫鎖(ReentrantReadWriteLock)的區別

    1.不能主動中斷正在試圖獲得鎖的線程  (顯式寫操作鎖可以主動的掛起讀操作鎖,進行寫操作)

    2.試圖獲得鎖時不能設置超時

    3.在對象內部鎖只有一個并且內部鎖只有一個單一的條件,可能不夠用(顯示鎖可以有多個,不斷重復的對讀寫操作加鎖)


    對ReentrantReadWriteLock類測試

       1.讀/寫操作的鎖多線程測試 : 單獨的讀操作和寫操作何以完成讀或寫的同步

       2.讀操作所和寫操作鎖多線程測試 :  能同步 (必需操作類中將 ReentrantReadWriteLock聲明為static的成員變量)

       3.讀操作進程和寫操作進程間測試:不支持進程間的同步

    posted @ 2012-11-04 22:37 Tom Xu 閱讀(1848) | 評論 (0)編輯 收藏

    2012年10月26日

    線程和進程 對文件鎖的操作(RandomAccessFile MappedByteBuffer FileLock)

         摘要: 文件鎖 線程和進程操作文件鎖 文件映射 同步  閱讀全文

    posted @ 2012-10-26 18:34 Tom Xu 閱讀(4197) | 評論 (1)編輯 收藏

    僅列出標題  

    導航

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 我要看免费的毛片| 一级做a毛片免费视频| 免费国产黄网站在线观看视频| 久久久久亚洲AV无码专区桃色| 国产精品亚洲av色欲三区| 成年女人永久免费观看片| 亚洲精品无码专区| 国产高清在线免费视频| 亚洲国产成人精品无码区二本| 国产精品成人免费视频网站京东| 亚洲综合婷婷久久| 久久夜色精品国产噜噜噜亚洲AV| 久久久99精品免费观看| 亚洲第一成年人网站| 免费无码肉片在线观看| 亚洲精品无码专区| 国产乱辈通伦影片在线播放亚洲| 中文字幕无线码免费人妻| 久久久久亚洲AV无码网站| 性色av无码免费一区二区三区| 亚洲av无码一区二区三区人妖| 99免费观看视频| 国产成人精品日本亚洲网址| 一个人免费视频观看在线www| 最新中文字幕免费视频| 亚洲欧美在线x视频| 久久91亚洲人成电影网站| 全部一级一级毛片免费看| 德国女人一级毛片免费| 亚洲综合网美国十次| 无人在线观看免费高清视频 | 亚洲成av人片一区二区三区| 美女扒开屁股让男人桶爽免费| 亚洲综合伊人久久综合| 人妻丰满熟妇无码区免费| 亚洲欧美日韩一区二区三区| 国产精品亚洲综合一区| 91在线视频免费播放| av成人免费电影| 亚洲精品免费网站| 久久久久亚洲爆乳少妇无|