posts - 41, comments - 15, trackbacks - 0, articles - 1
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          2014年8月11日

          有時(shí)候在客戶端使用svg畫圖,而在服務(wù)器端需要同樣的圖片,在服務(wù)器端重新畫一遍是非常費(fèi)事的。這時(shí)候我們就可以利用已有的svg直接通過(guò)下面的類轉(zhuǎn)換成png格式。

          使用這個(gè)方法需要引用batic相關(guān)的包,maven pom文件如下:

          <!-- svg 生成png格式圖片  -->
          <dependency><groupId>batik</groupId><artifactId>batik-svggen</artifactId><version>1.6</version></dependency>        
          <dependency><groupId>batik</groupId><artifactId>batik-awt-util</artifactId><version>1.6</version></dependency>
          <dependency><groupId>batik</groupId><artifactId>batik-bridge</artifactId><version>1.6</version></dependency>
          <dependency><groupId>batik</groupId><artifactId>batik-css</artifactId><version>1.6</version></dependency>
          <dependency><groupId>batik</groupId><artifactId>batik-dom</artifactId><version>1.6</version></dependency>
          <dependency><groupId>batik</groupId><artifactId>batik-gvt</artifactId><version>1.6</version></dependency>
          <dependency><groupId>batik</groupId><artifactId>batik-parser</artifactId><version>1.6</version></dependency>
          <dependency><groupId>batik</groupId><artifactId>batik-script</artifactId><version>1.6</version></dependency>
          <dependency><groupId>batik</groupId><artifactId>batik-svg-dom</artifactId><version>1.6</version></dependency>
          <dependency><groupId>batik</groupId><artifactId>batik-transcoder</artifactId><version>1.6</version></dependency>
          <dependency><groupId>batik</groupId><artifactId>batik-util</artifactId><version>1.6</version></dependency>
          <dependency><groupId>batik</groupId><artifactId>batik-xml</artifactId><version>1.6</version></dependency>
          <!-- 此處不能使用2.9.1版本,使用2.9.1生成png會(huì)失敗 -->
          <dependency><groupId>xerces</groupId><artifactId>xercesImpl</artifactId><version>2.5.0</version></dependency>
          <dependency><groupId>xml-apis</groupId><artifactId>xmlParserAPIs</artifactId><version>2.0.2</version></dependency>
          <dependency><groupId>org.axsl.org.w3c.dom.svg</groupId><artifactId>svg-dom-java</artifactId><version>1.1</version></dependency>
          <dependency><groupId>xml-apis</groupId>    <artifactId>xml-apis</artifactId><version>2.0.0</version></dependency>
          <dependency><groupId>org.w3c.css</groupId> <artifactId>sac</artifactId>    <version>1.3</version></dependency>
          <!-- svg 生成png格式圖片結(jié)束  -->
          package com.yhb.web.util;
          import java.io.ByteArrayInputStream;
          import java.io.File;
          import java.io.FileOutputStream;
          import java.io.IOException;
          import java.io.InputStream;
          import java.io.OutputStream;
          import java.io.UnsupportedEncodingException;
          import java.net.URL;
          import org.apache.batik.transcoder.TranscoderException;
          import org.apache.batik.transcoder.TranscoderInput;
          import org.apache.batik.transcoder.TranscoderOutput;
          import org.apache.batik.transcoder.image.PNGTranscoder;
          public final class FileUtil {
          /** 
               *@Description: 將svg字符串轉(zhuǎn)換為png 
               *@Author: 
               *@param svgCode svg代碼 
               *@param pngFilePath  保存的路徑 
               *@throws IOException io異常 
               *@throws TranscoderException svg代碼異常 
              */  
          public static void convertToPng(String svgCode,String pngFilePath) throws IOException,TranscoderException{  
           
                  File file = new File (pngFilePath);  
            
                  FileOutputStream outputStream = null;  
                  try {  
                      file.createNewFile ();  
                      outputStream = new FileOutputStream (file);  
                      convertToPng (svgCode, outputStream);  
                  } finally {  
                      if (outputStream != null) {  
                          try {  
                              outputStream.close ();  
                          } catch (IOException e) {  
                              e.printStackTrace ();  
                          }  
                      }  
                  }  
              }  
          /** 
               *@Description: 將svgCode轉(zhuǎn)換成png文件,直接輸出到流中 
               *@param svgCode svg代碼 
               *@param outputStream 輸出流 
               *@throws TranscoderException 異常 
               *@throws IOException io異常 
               */  
              public static void convertToPng(String svgCode,OutputStream outputStream) throws TranscoderException,IOException{  
                  try {  
                  byte[] bytes = svgCode.getBytes ("UTF-8");  
                      PNGTranscoder t = new PNGTranscoder ();  
                      TranscoderInput input = new TranscoderInput (new ByteArrayInputStream (bytes));  
                      TranscoderOutput output = new TranscoderOutput (outputStream);  
                      t.transcode (input, output);  
                      outputStream.flush ();  
                  } finally {  
                      if (outputStream != null) {  
                          try {  
                              outputStream.close ();  
                          } catch (IOException e) {  
                              e.printStackTrace ();  
                          }  
                      }  
                  }  
              }  
          }

          posted @ 2015-10-19 15:17 yuhaibo736 閱讀(317) | 評(píng)論 (0)編輯 收藏

          方法1: 設(shè)定環(huán)境變量
          set NLS_SORT=SCHINESE_RADICAL_M ;export NLS_SORT (sh)
          or setenv NLS_SORT SCHINESE_RADICAL_M (csh)
          or regedit 
          HKLC/SOFTWARE/ORACLE/home0/NLS_SORT        (win)

          方法2: 在session中修改
          alter session set NLS_SORT='SCHINESE_RADICAL_M'

          方法3: 直接使用NLSSORT函數(shù) (推薦)
          select name,id from t
          order by NLSSORT(name,'NLS_SORT = SCHINESE_STROKE_M')

          設(shè)置NLS_SORT值:

          SCHINESE_RADICAL_M 按照部首(第一順序)、筆劃(第二順序)排序 

          SCHINESE_STROKE_M 按照筆劃(第一順序)、部首(第二順序)排序 

          SCHINESE_PINYIN_M 按照拼音排序

          posted @ 2014-08-29 14:13 yuhaibo736 閱讀(1289) | 評(píng)論 (0)編輯 收藏

              在IBATIS中,框架內(nèi)置了對(duì)OSCache的支持,如果我們想使用EHCache,則需要通過(guò)我們手工實(shí)現(xiàn)來(lái)完成二級(jí)緩存的功能機(jī)制。

              在mybatis中,開發(fā)組織只提供了一些默認(rèn)的二級(jí)緩存實(shí)現(xiàn)的機(jī)制,并沒有直接內(nèi)置的支持OSCache和EHCache等二級(jí)緩存機(jī)制,而是作為一個(gè)集成jar包來(lái)提供二級(jí)緩存的實(shí)現(xiàn),在官方網(wǎng)站上我們可以找到mybatis-ehcache-1.0.1-bundle.zip,mybatis-oscache-1.0.1-bundle.zip等ehcache和oscache提供二級(jí)緩存的獨(dú)立工具包. 這里我就拿oscache在mybatis中的使用來(lái)舉例說(shuō)明:

                 1.   將mybatis-oscache-1.0.1-bundle.zip中涉及到的jar包放入到classpath路徑下 
                       maven下可以這樣配置
                         <dependencies>  
                              
          ... 

                              <dependency> 

                                  <groupId>org.mybatis.caches</groupId> 

                                  <artifactId>mybatis-oscache</artifactId>      
                                   <version>1.0.2-SNAPSHOT</version> 

                              </dependency>             

                              <dependency>
                                  <groupId>javax.jms</groupId>
                                  <artifactId>jms</artifactId>
                                  <version>1.1</version>
                              </dependency>

                              <dependency>
                                   <groupId>opensymphony</groupId>
                                   <artifactId>oscache</artifactId>
                                   <version>2.4</version>
                                   <exclusions>       
                                         <exclusion>
                                             <groupId>com.sun.jdmk</groupId>
                                             <artifactId>jmxtools</artifactId>
                                         </exclusion>
                                     <exclusion>
                                     <groupId>com.sun.jmx</groupId>
                                     <artifactId>jmxri</artifactId>
                                 </exclusion>
                               </exclusions>
                          </dependency>

                              ... 

                          </dependencies>

                 2.   在mapper文件中的配置如下:

                       <mapper namespace="org.test.AuthMapper" >         

                           <cache  type="org.mybatis.caches.oscache.OSCache"/>

                       </mapper>
                      注意下面兩點(diǎn)
                       (a)在
          <select id="getAuth" parameterType="Map" resultType="Auth"  useCache="false">中使用useCache="false"或useCache="true"來(lái)決定是否使用二級(jí)緩存。    
                       (b)在增刪改中<insert id="insertAuth" parameterType="Auth"  flushCache="true">使用flushCache="true"或flushCache="flase"來(lái)決定對(duì)這些進(jìn)行操作后清空該xml文件中所有查詢語(yǔ)句的二級(jí)緩存。 

                 3.  在src目錄下創(chuàng)建一個(gè)oscache.properties的屬性文件,在里面指定緩存的各種屬性的設(shè)置:
                       cache.memory=true             
                       cache.path=c:\\myapp\\cache
                       cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener
                       cache.persistence.overflow.only=true
                       cache.capacity=100000

                      

          posted @ 2014-08-11 18:22 yuhaibo736 閱讀(2733) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 遂宁市| 永定县| 伊吾县| 肥城市| 民和| 宜昌市| 五峰| 肇源县| 沙坪坝区| 汾阳市| 吴忠市| 江城| 图们市| 资中县| 焉耆| 米易县| 湘乡市| 乐山市| 莱阳市| 应城市| 浮山县| 中西区| 平定县| 安宁市| 冷水江市| 奉化市| 河东区| 纳雍县| 澄迈县| 安国市| 庆阳市| 徐汇区| 孝感市| 巴塘县| 商河县| 斗六市| 阿瓦提县| 行唐县| 浦江县| 宁阳县| 巴彦县|