본문 바로가기

Java16

POI #1 [ POIFSFileSystem vs OPCPackage ] OLE와 OOXML 문서 표준 규격에 따르면 여러가지 문서들이 즐비해 있겠지만 가장 많은 비중을 차지하는 두가지 포맷에 (OLE와 OOXML) 관련하여 정리하겠습니다. POI에서 위에 명시된 두개의 파일 포맷을 읽어 들이기 위해서 사용하는 두가지 라이브러리가 있는데요. OLE (97~2003) - POIFSFileSystem OOXML - OPCPackage 크게 두개로 나뉘고 OLE의 Stream을 읽어 들인다와 OOXML 내부의 xml + 여러 파일을 읽어 들이는데 차이가 있습니다. 그러면 내부를 좀 더 살펴 보겠습니다. 두개 파일의 차이점이 확연히 들어납니다. 어떻게 보면 OLE 파일이 더 간단한것 같지만 위에서와 같이 하드디스크 용량을 따진다면 OOXML이 더 효율적일 것 입니다. 왼쪽에 나타나는.. 2020. 6. 29.
POI #0 Java에서 ms계열 혹은 hwp 파일 등을 읽어 들일때 파서를 많이 찾으시는데요. 대표적으로 POI 라이브러리를 사용해서 파싱을 할 수 있습니다. Apache에서 관리하는 무료 라이브러리이며 현재 4.1 버전이 최신으로 업데이트 되어 있습니다. 간단하게 Excel파일을 만들거나 여러가지 문서를 읽어 들일때 사용하면 됩니다. 주로 OLE 포맷이나 OOXML 파일 포맷들을 읽어 들일때 ms 포맷 말고 여러가지 포맷등도 지원합니다. 2020. 6. 26.
java #2 [HashMap, ConcurrentHashMap] 쓰레드에 더 유용하게 사용하는 자료구조 Dao 객체를 만들어서 사용하는게 더 나은 방법이 될 수도 있겠지만 자료구조를 잘 활용하는 것이 때로는 더 적은 리소스로 더 나은 성능을 만들수 있다고 믿습니다. 그중에서도 HashMap과 ConcurrentHashMap은 이름이 비슷하지만 사용시에 확연히 다른 모습을 보여줍니다. HashMap의 특징을 먼저 보겠습니다. null을 key 값으로 허용합니다. 중복을 허용하지 않습니다. 순서나 동기화를 보장하지 않습니다. ConcurrentHashMap의 특징을 보겠습니다. null을 허용하지 않습니다. 중복을 허용하지 않습니다. 순서는 보장하지 않지만 동기성은 보장합니다. 위와 같이 보았을때 스레드 상에서 ConcurrentHashMap을 사용하면 더 좋은 효과를 .. 2020. 6. 26.
java #1 [concat, +, StringBuffer, StringBuilder] String과 String 자체를 이어붙일때에는 사실 두개의 String중 하나의 길이가 늘어나는 것이 아니라 새로운 String이 메모리 영역에 생성이 됩니다. 이로인해서 String을 가지고 작업할 때 조심해야합니다. 퍼포먼스 상에서 가장 빠른건 +와 , StringBuilder입니다. (java 1.5버전 부턴 +와 StringBuilder가 동일) 사실 java 1.5이전의 버전을 사용하시는 분이면 + 사용을 비추하는 이유는 +와 concat이 동일하게 동작하기 때문입니다. 사실 String을 재 조합할때에 java는 새로운 인스턴스를 만들어 우리에게 재공합니다. (concat의 경우) 그러기에 메모리 소비를 가장 많이 줄이려면 StringBuffer나 StringBuilder를 사용해야 하는데 .. 2020. 6. 23.