HttpServletResponse res;
//Cache-Control HTTP1.1
//Pragma Expires HTTP1.0

res.setHeader( "Pragma", "no-cache" );  //與Cache-Control: no-cache相同,會被Cache-Control覆蓋
res.addHeader( "Cache-Control", "must-revalidate" ); 
res.addHeader( "Cache-Control", "no-cache" );  //發request向server確認是否取得新資料
res.addHeader( "Cache-Control", "no-store" );   //完全不Cache
res.setDateHeader("Expires", 0);  //CACHE過期時間,與Cache-Control: max-age相同,會被Cache-Control覆蓋

 

被Cache資料,可以從DevTool看到 from disk cache的字樣,以及max-age存活時間
如果程式調整了資料沒有改變,建議先來確定瀏覽器的狀況

aaa.JPG

 

 

參考資料:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Caching_FAQ#Cache_validation

文章標籤

咪卡恰比 發表在 痞客邦 留言(0) 人氣()

SQL(ORACLE用) - 取得EMAIL異常資料

其他判斷就再自己加,這邊是這次有想到的一些條件

--如果有英文@,._-符號以外的資料, 搜尋出來
select id
from (
select id, nvl(length(regexp_replace(contactor_email,'[a-zA-Z0-9@,._\-]','')),0) as emailLen
from t_member
)
where emailLen>0

--如果是null, 搜尋出來
select id
from t_member
where (contactor_email is null or length(TRIM(contactor_email))=0)

--如果不含@, 搜尋出來
select id 
from t_member
where contactor_email not like '%@%'

文章標籤

咪卡恰比 發表在 痞客邦 留言(0) 人氣()

改寫的時候,遇到 java.io.IOException: Bad file descriptor 錯誤,
發現是因為InputStream沒有好好處理完就做close()了,

針對緩衝部分還是要注意一下

 

File thisFile= new File("file's src ");

/*
1. use Files.newInputStream() 
Opens a file, returning an input stream to read from the file. 
The stream will not be buffered, and is not required to support the mark or reset methods.
*/
InputStream is = Files.newInputStream(thisFile.toPath());

/*
2. get byte[]
*/
File thisFile= new File("file's src ");
InputStream thisFileIs = null;
try{
  ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  thisFileIs = new FileInputStream(thisFile);
  byte[] thisFileIsByte = new byte[1024];  
  int len = 0;  
  while ((len = thisFileIs .read(thisFileIsByte )) != -1) {
    outStream.write(thisFileIsByte , 0, len);  
  }  
  byte[] in_b = outStream.toByteArray();
}catch(IOException e){
} finally {  
  if(thisFileIs != null) {  
    try{  
      thisFileIs.close();
    }catch(IOException e) {
    }  
  }  
}

上述等同

InputStream thisFileIs = null;
try{
  thisFileIs = new FileInputStream(thisFile);
  byte[] in_b = IOUtils.toByteArray(new FileInputStream(thisFile));  //這行
}catch(IOException e){
} finally {  
  if(thisFileIs != null) {  
    try{  
      thisFileIs.close();
    }catch(IOException e) {
    }  
  }  
}

 

 

文章標籤

咪卡恰比 發表在 痞客邦 留言(0) 人氣()

最近在操作時間習慣用 Calendar (java.util.Calendar)

https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html

 

//--

Calendar now = Calendar.getInstance(); //初始取得現在時間

//Get DATA
int month = now.get(Calendar.MONTH) + 1; //取月份 - 月份是從0開始,+1成為一般人了解的月份


//Set DATA
now.set(Calendar.MONTH, 0);  //設定時間至指定月份(1月)
now.set(Calendar.DAY_OF_MONTH, 1); //設定時間至1個月的第幾天(1日)


//Calculation DATA
now.add(Calendar.MONTH, 7);   //加減月份(加7個月)
now.add(Calendar.MONTH, -7);  //加減月份(減7個月)


//時間設為一天的最後一秒
        public Calendar setDayTimeToLastSec(Calendar calendar) {
                calendar.set(11, 23);
                calendar.set(12, 59);
                calendar.set(13, 59);
                calendar.set(14, 999);
                return calendar;
        }

//時間設為一天的開始
        public Calendar setDayTimeToFirSec(Calendar calendar) {
                calendar.set(11, 0);
                calendar.set(12, 0);
                calendar.set(13, 0);
                calendar.set(14, 0);
                return calendar;
        }

//上個月的最後一天
        public Calendar getLMLD() {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_MONTH, 1);  //設為這個月第一天
        cal.add(Calendar.DATE, -1); //倒回一天 = 上個月最後一天
                return cal;
        //時間在此略過處理
        }

 


文章標籤

咪卡恰比 發表在 痞客邦 留言(0) 人氣()

再下SQL的時候使用query.setDate,發現傳入值Parameter有帶時、分、秒,但搜尋結果不如預期,查了一下發現忽略了一個很基本的東西

query.setDate 會自動過濾時分秒
條件有時分秒的時候,要使用query.setTimestamp

另外:java.sql.Date是有日期。java.util.Date包含時間部分的


文章標籤

咪卡恰比 發表在 痞客邦 留言(0) 人氣()

寫HQL的時候做運算發生傳回型態的錯誤

SELECT (round((PRD.Price-PRD.Cost)/PRD.Price, 3)*100) AS profit
FROM product PRD

HQL大概是上面這樣,然後回報下方問題。查了一下 應該是

「BigDecimal調用時,當傳入值的小數位數 大於設定的BigDecimal小數位數時,報出錯誤」

這樣的問題。

java.lang.ArithmeticException: Rounding necessary
        at java.math.BigDecimal.commonNeedIncrement(Unknown Source)
        at java.math.BigDecimal.needIncrement(Unknown Source)
        at java.math.BigDecimal.divideAndRound(Unknown Source)
        at java.math.BigDecimal.setScale(Unknown Source)
        at java.math.BigDecimal.toBigIntegerExact(Unknown Source)
        at org.hibernate.type.descriptor.java.BigIntegerTypeDescriptor.wrap(BigIntegerTypeDescriptor.java:105)
        at org.hibernate.type.descriptor.java.BigIntegerTypeDescriptor.wrap(BigIntegerTypeDescriptor.java:36)

如果是用SQLQuery的話

.addScalar("profit",  StandardBasicTypes.BIG_DECIMAL)

應該就可以了,

文章標籤

咪卡恰比 發表在 痞客邦 留言(0) 人氣()

  • bootstrap v4
    <nav aria-label="breadcrumb">
      <ol class="breadcrumb">
        <li class="breadcrumb-item"><a href="#">Home</a></li>
        <li class="breadcrumb-item"><a href="#">Library</a></li>
        <li class="breadcrumb-item active" aria-current="page">Data</li>
      </ol>
    </nav>
  • bootstrap v3
    <ol class="breadcrumb">
      <li><a href="#">Home</a></li>
      <li><a href="#">Library</a></li>
      <li class="active">Data</li>
    </ol>

文章標籤

咪卡恰比 發表在 痞客邦 留言(0) 人氣()