Tom Xu

           

          2012年10月26日

          sql 語法 stuff

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

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

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

          下面是結(jié)果集
          aijklmnef

          4、參數(shù)
          character_expression
          一個字符數(shù)據(jù)表達(dá)式。character_expression 可以是常量、變量,也可以是字符列或二進(jìn)制數(shù)據(jù)列。

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

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

          5、返回類型
          如果 character_expression 是受支持的字符數(shù)據(jù)類型,則返回字符數(shù)據(jù)。如果 character_expression 是一個受支持的 binary 數(shù)據(jù)類型,則返回二進(jìn)制數(shù)據(jù)。

          6、備注
          如果結(jié)果值大于返回類型支持的最大值,則產(chǎn)生錯誤。
          (資料來源于網(wǎng)絡(luò))

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

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

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

          Spring Dependency Injection(Spring的依賴注入)
                 1.使用映射的方式注入
          <bean id="personDao" class="接口實(shí)現(xiàn)類路徑"></bean>   
          <bean id="persionService" class="接口實(shí)現(xiàn)的類路徑">
              <property name="personDao" ref="personDao"></property>   <!--反射賦值-->    
              <property name="name"  value="tom test!!!!!!!!"></property> <!--為基本類型賦值-->
                      <property name="name"  value="100"></property> <!--為基本類型賦值-->
          </bean>
                 2.使用內(nèi)部bean 的方式注入
                  <bean id="persionService" class="實(shí)現(xiàn)的類路徑">
                       <property name="persionDao">
                              <bean  class="dao實(shí)現(xiàn)路徑"/>
                       </property>
                  </bean>
                3.集合類型的注入
                            <bean id="personService" class="實(shí)現(xiàn)類路徑">
                               <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.使用構(gòu)造器參數(shù)注入(調(diào)用特定的構(gòu)造函數(shù))
                       如果PersonServiceBean中的有構(gòu)造函數(shù)PersonServiceBean(PersonDao personDao,String name){}
                          <bean id="personDao11111111" class="類實(shí)現(xiàn)路徑"><bean>
                          <bean id="personService" class="類實(shí)現(xiàn)路徑">
                              <constructor-arg index="0" type="自定義type類的路徑" ref="personDao111111">
                              <constructor-arg index="1" type="基本類型可以省去......"  value="111111111">
                          </bean>       
                5.使用Field注入(用于注解的方式)
                  屬性的值注入
                  @Resource private PersonDao personDao;     /* 先找到 容器中的 bean的對應(yīng)名稱進(jìn)行匹配,若無,找類型匹配 */   
                   屬性的set方法注入
                  @Resource
                  public void setXXX(Object object){}     

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

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

          4.創(chuàng)建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為每次請求創(chuàng)建一個對象的服務(wù)方式  
                    (2)此處的id 名需要與3中的class同名

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

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

          ReentrantReadWriteLock的特性

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

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

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

          2.重復(fù)獲得鎖:讀線程可以重復(fù)的獲取鎖,盡管當(dāng)前讀線程占用

          3.鎖降級:

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

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

          4.中斷鎖的獲取:讀鎖和寫鎖的獲取期間都允許被中斷

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

          6.可監(jiān)測性:這個類支持操作是否對鎖的獲取還是競爭,只是為檢測系統(tǒng)狀態(tài),而不是為了同步而設(shè)計的。


          顯式鎖(Lock)和隱式鎖(Synchronized)的不同點(diǎn),括號注明隱式鎖與重復(fù)讀寫鎖(ReentrantReadWriteLock)的區(qū)別

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

          2.試圖獲得鎖時不能設(shè)置超時

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


          對ReentrantReadWriteLock類測試

             1.讀/寫操作的鎖多線程測試 : 單獨(dú)的讀操作和寫操作何以完成讀或?qū)懙耐?/p>

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

             3.讀操作進(jìn)程和寫操作進(jìn)程間測試:不支持進(jìn)程間的同步

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

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

               摘要: 文件鎖 線程和進(jìn)程操作文件鎖 文件映射 同步  閱讀全文

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

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 吉首市| 江川县| 乌拉特中旗| 安顺市| 德庆县| 大石桥市| 肇庆市| 教育| 周口市| 潮州市| 建始县| 潢川县| 丰城市| 徐州市| 长子县| 定西市| 民勤县| 伊川县| 呼和浩特市| 宜春市| 太谷县| 宽城| 安岳县| 瓦房店市| 潼关县| 长海县| 化州市| 汉中市| 龙南县| 宜川县| 嘉荫县| 富源县| 鄂尔多斯市| 周口市| 酒泉市| 墨玉县| 皋兰县| 花莲市| 牙克石市| 博罗县| 通城县|