資料寫入檔案

  /**
   * 產檔
   * @param filePathLocal 路徑
   * @param fileName 檔名
   * @param str內容
   * @throws IOException
   */
  public void mkFile(String filePathLocal, String fileName, String str) throws IOException {

    File file = new File(filePathLocal);
    if (!file.isDirectory()) {
      file.mkdirs();
     //資料夾權限
      file.setReadable(true, false);
      file.setExecutable(true, false);
      file.setWritable(true, false);
    }

    Path localFile = Paths.get(filePathLocal, fileName);
    BufferedWriter writer = Files.newBufferedWriter(localFile, StandardCharsets.UTF_8);
    writer.write(xml);
    writer.close();
  }

文章標籤

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

將多個檔案壓縮到一個檔

  /**
   * 壓縮檔案
   * @param filePathList 檔案列表
   * @param zipDest 壓縮檔資料夾
   * @return 壓縮檔路徑
   * @throws IOException
   */
public String batchDownLoadFile(List<String> filePathList, String zipDest) throws IOException {

    File zipFile = new File(zipDest, System.nanoTime() + ".zip");

    FileOutputStream fos = new FileOutputStream(zipFile);
    ZipOutputStream zos = new ZipOutputStream(fos);
    FileInputStream fis = null;
    
    Set<String> filePathSet = new HashSet<>(filePathList);
    
    try {
      for(String filePath: filePathSet) {
        fis = new FileInputStream(filePath);
        File file = new File(filePath);
        
        zos.putNextEntry(new ZipEntry(file.getName()));
      
        int tmp = 0;
        while((tmp = fis.read()) != -1) {
          zos.write(tmp);
        }
        zos.flush();
        fis.close();
        zos.closeEntry();
      } 
    }finally {
      zos.close();
      fos.close();
    }

    return zipFile.getPath();
  }

文章標籤

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

Q: 使用Image getInstance(final URL url)報錯 java.io.IOException: XXXXXXXX is not a recognized imageformat.

A: 確認圖檔是否為可使用格式:gif jpeg png

    /**
     * Gets an instance of an Image.
     *
     * @param filename
     *            a filename

文章標籤

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

  @GetMapping(value = { "/out" }, produces = MediaType.TEXT_HTML_VALUE)
  public String outIndex(Model model) {

    model.addAttribute("status", action.dataMap());
    return "/out";
  }

 

<select class="sml" name="action">

文章標籤

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

 @Autowired private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

 public void batchUpdate(List<User> list) {

    if(CollectionUtils.isNotEmpty(list)) {
          String sql = "INSERT INTO USER (NAME, TEL, ADDR) VALUES( :name, :tel, :addr)";
      SqlParameterSource[] batchArgs = SqlParameterSourceUtils.createBatch(list.toArray());
      nameJdbcTemplateOracle.batchUpdate(sql, batchArgs);   
    }
    
  }



@lombok.Data
public class SupStoreInfo{
  private String name;
    
  private String tel;

  private String addr;
}

文章標籤

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

XML過濾非法符號

String xml = "<?xml  version="1.0" encoding="big5"?><doc><PickFileID>123456</PickFileID></doc>"
xml.replaceAll("[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]", "")

文章標籤

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

JS OBJECT LOOP

MAP:

for (const [key, value] of prodObjMap) {
  console.log(key, value)
}

文章標籤

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

官方查詢網址:

https://app.jetstar.com/voucherbalance/index.html#/login?culture=zh-cn


文章標籤

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

來自荷蘭的citizenM世民酒店的宗旨為「為人們提供負擔得起的性價超值的服務」,在台灣唯一一家立地於台北北門。

此間特點為不貴的價格就能住到房內有好美好拍景觀窗的飯店,網美們不可錯過。
以下照片為13樓房間的景色,看看多美麗天空,一起床就能見到這樣的風景超幸福。➤AGODA比價點我
PS. 住這間飯店請選擇高樓層,不然我覺得很浪費。

來自荷蘭時尚潮流網美窗景商旅 ~ 台北世民酒店 citizenM

citizenM位在北門旁邊,捷運北門站走路約2分鐘、捷運台北車站走路約15分鐘,周邊景點有「國立臺灣博物館鐵道部」、「撫臺街洋樓」、「西門町(步行約15分鐘)」等。
我這次CHECK IN後,就沿著延平南路一路逛到西門町過完一天。所以不用怕住這裡沒地方去。

文章標籤

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

希望針對資料不同的欄位總合做比較,使用pivot來轉換

先處理原始資料,只要取deal_id和指定type的資料

select deal_id, type from History where deal_id is not null and type in (20,30)

撈出結果為

SQL1.JPG

然後希望是相同deal_id的資料可以排成一排
EX: TITLE= DEAL_ID、TYPE20、TYPE30 

select * from(
select deal_id, type from History where deal_id is not null and type in (20,30)
) -- pivot要直接接結果
pivot(
   count(type)
   for type in (20 as TWSUM,30 as THSUM) -- 翻轉欄位為type ,另外將數字結果定別名
)

SQL1.JPG

文章標籤

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

input 只能輸數字和逗號

<input  type="text" placeholder="EX:12345,23456" onchange="this.value=this.value.replace(/[^0-9,]+/g, '');" />

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

將多row的相同資料串成string

EX: 相同的DISNO有不同的CITYID,希望把他串成一個string

擷取.JPG

擷取.JPG

方法1: 使用LISTAGG  (ORACLE 11g, 有長度限制4000char)
SELECT DISNO, LISTAGG(CITYID, ',') WITHIN GROUP(ORDER BY DISNO) CITYIDS
FROM ADDR WHERE DISNO= '40230'
GROUP BY DISNO; 

方法2:  使用XMLAGG

SELECT DISNO, RTRIM(XMLAGG (XMLELEMENT (e, CITYID, ',')).EXTRACT ('//text()').getclobval(), ',') CITYIDS
FROM ADDR WHERE DISNO= '40230'
GROUP BY DISNO;
--CITYID資料PARSE成XML<e></e>模式,再進行串接

 


文章標籤

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

換行使用:<br/>

  /**
   * 抓取zip檔
   * @param fileName 檔案名稱
   * @return 處理結果 
   * <br/>msg: 內容
   * <br/>dir: 資料夾
   * @throws Exception
   */
public Rst process(String fileName) throws Exception {}

文章標籤

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

上個月最後一天

select add_months(trunc(last_day(sysdate)) ,-1) from dual

 

上個月第一天

select add_months(trunc(sysdate, 'mm') ,-1) from dual


文章標籤

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

Java 8 的 Stream API是對集合(Collection)功能的增強,能進行各種便利、高效的聚合操作(aggregate operation),或者數據操作。

同時提供順序流和並行流兩模式進行匯聚操作:

  • 並行模式:把一個內容分成多個數據塊,並用不同的線程分別處理每個數據塊的流(Fork/Join),能夠充分利用多核處理器的優勢。使用 fork/join 並行方式拆分任務和加速處理過程。
  • 順序模式:一個一個執行
  • 順序流的操作是在單線程上執行,而並行流的操作是在多線程上併發。
  • 並不是所有的問題都適合使用並行模式,考量要點:數據量、任務是否獨立、資料是否有順序
  • stream() − 為集合創建串行流;parallelStream() − 為集合創建並行流。

 Stream建構方法 

//基本數值型,目前有三種對應的包裝類型 Stream:IntStream、LongStream、DoubleStream ,可以直接套用增加效能

//Individual values
Stream stream = Stream.of("a", "b", "c");

// 2. Arrays
String [] strArray = new String[] {"a", "b", "c"};
Stream streamA = Stream.of(strArray);
Stream streamB = Arrays.stream(strArray);

IntStream.of(new int[]{1, 2, 3});
IntStream.range(1, 3);
IntStream.rangeClosed(1, 3);

// 3. Collections
List<String> list = Arrays.asList(strArray);
Stream stream = list.stream();

 Stream API操作類型 

  • intermediate operation( 中介操作 ):map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 sequential、 unordered。
    一個Stream後面可以跟隨0或多個操作,尚未真正開始Stream的遍歷,多個操作在 Terminal 操作的時候一次循環完成
  • terminal operations( 聚合操作 ):forEach、 forEachOrdered、 toArray、 reduce、 collect、 min、 max、 count、 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 iterator,真正開始Stream的遍歷
  • Short-circuiting: anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 limit

 filter:過濾,符合條件的留下 

List<String> strList = Arrays.asList("A", "B", "AA", "C");
List<String> strListAfter = strList.stream()
 .filter(x -> x.contains("A"))
 .collect(Collectors.toList());

 map:把 input Stream 的每一個元素,映射成 output Stream 的另外一個元素 

文章標籤

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