JAVA로 알아보는 힙 (Heap) 자료구조

Heap Heap은 최소값 및 최대값을 최대한 빠르게 찾아내기 위해 특별히 고안된 자료 구조 입니다. 완전 이진트리(마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있는 트리의 형태)를 기본으로 하고 있으며, 그 목적에 걸맞게 두개의 타입으로 나뉩니다. Max-Heap Max-Heap 에서 root 노드의 key는 무조건 해당 노드의 자식 노드들의 key보다 크거나 같습니다. 또한 같은 속성이 모든 sub-tree 들에게도 재귀적으로 적용됩니다. 간단히 말해 Max-Heap 트리에서 자식 노드에 딸린 트리 하나 하나가 모두 Max-Heap의 조건을 만족합니다. Min-heap Min-Heap 에서는 반대로 root 노드의 키값이 모든 자식들의 키 보다 작거나 같습니다. 또한 재귀적으로 자식 트리들 하나..

Development/Problem Solving 2021.10.16
Java) POI 활용해 DB데이터 엑셀 파일로 저장하기

사용자에게 요구 데이터를 보여 주는 방법은 여러가지가 있습니다. 보통은 웹 페이지를 통해 화면을 보여주는데요, 사용자가 해당 내용을 확인하기 위해서는 항상 해당 웹 페이지에 방문 해야만 하며, 인터넷에 연결되어있어야만 한다는 제약이 생깁니다. 그래서 파일로 조회 데이터를 저장하고자 하는 수요는 반드시 생기고, 그 수요를 충족시키기 위한 여러가지 라이브러리들이 나와 있습니다. 그 대표적으로 Apache POI가 있습니다. ​ Apache POI (Poor Obfuscation Implementation) https://poi.apache.org Apache POI는 아파치 소프트웨어 재단에 의해 운영되는 오픈소스 프로젝트 입니다. 순수 자바 라이브러리로서 Microsoft Office의 Word, Powe..

Programming/Java 2021.10.15
Linux) 특정 port 사용중인 프로세스 찾아 죽이기

서론 Tomcat을 사용하다 보면 어플리케이션이 정상적으로 종료가 되지 않아서 포트가 충돌 나는 경우가 있습니다. 비단 Tomcat 만의 문제가 아니고 어떤 프로세스를 사용하던 특정 port를 점유 하고 종료되지 않은 경우가 종종 있는데요, 이럴 때 쉽게 해결하는 방법입니다. 아래는 이클립스에서 톰캣을 실행 하려 할 때, 8080 port가 이미 점유중이라는 에러 메시지 입니다. The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured. 이럴때는 프로세스를 찾아서 종료해줘야하는데요, 처음 이런 경우가 발생하면 정..

IT ⁄ Computer/Linux 2021.10.14
MacOS) Monterey Public Beta 설치하기

Monterey Monterey는 Apple이 WWDC21에서 발표한 macOS Big Sur의 차기 버전입니다. 동명의 미국 California 주의 해변가에 있는 아름다운 도시의 이름을 따왔는데요, San Francisco Bay Area에서 차로 약 2시간 거리에 있는 대표 휴양지 입니다. Bir Sur 에서도 굉장히 가깝습니다. ​ https://en.wikipedia.org/wiki/MacOS_Monterey#Release_history 사실 Monterey의 첫번째 베타버전이 출시된지는 꽤나 시간이 지났습니다. 6월 7일이니 무려 4개월 전 인데요. 첫번째 베타부터 참여하기에는 불편함이 많을 것 같아 많이 기다렸는데, 이제 출시가 꽤나 임박했다는 생각이 들어 사용하기에 크게 불편함이 없을 거라..

IT ⁄ Computer/Mac 2021.10.09
Ubuntu) 터치패드 및 트랙패드 활용하기 Fusuma

https://github.com/iberianpig/fusuma Fusuma를 사용하면 멀티 터치 제스처를 사용할 수 있습니다. 이 숨은 보석같은 어플리케이션만 설치하면 트랙패드 제스처를 활용해서, 뭔가를 줄이고 늘릴 수 있고, 쓸어 넘기기 등의 명령을 설정 하고 사용 할 수 있습니다. Fusuma(襖) 는 일본에서의 미닫이 문을 칭하는 말 입니다. 한국어로 발음하면 "후스마" 정도가 되겠네요. ​ 특징 RubyGems를 이용한 손쉬운 설치 YAML 포맷으로 제스처와 액션 설정 threshold 및 interval을 이용한 다양한 세부 설정 Threadhold는 임계점을 의미하는데요. 터치 감도를 설정한다고 생각하면 되겠습니다. 외부 터치패드 연결시 자동 인식 플러그인 시스템을 통한 제스처 확장 ​ 설..

IT ⁄ Computer/Linux 2021.10.09