자바 11

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

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

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

스트림 (Stream)

스트림이란 ? https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html ​ Stream이 추가 되기 전인 Java 7 버전 까지에서는 많은 수의 데이터들을 다룰 때에 컬렉션이나 배열에 데이터를 담아 둔 후, 원하는 결과를 얻기 위해서 반복문 혹은 Iterator를 이용하는 방법 만으로 코드를 작성 해 왔습니다. package com.tistory.shanepark.stream; public class Stream01 { public static void main(String[] args) { int[] numbers = {1,2,3,4,5,6,7,8,9,10}; for(int n : numbers){ System.out.println(..

Programming/Java 2021.09.05 (1)

GAIA 알람 시스템을 만들기 위해 구축한 여러가지 모듈 소개와 과정

GAIA 알람 시스템을 만들기 위해 구축한 여러가지 모듈 소개와 과정 드디어 알람 시스템을 어느 정도 완성 했습니다. 사실 처음에는 Elastic search로 알람 기능을 구현 하려고 했지만, 이제 시간이 얼마 남지 않은 상태에서 팀 내 많은 이슈가 발생해서 쿼리부분에서 어느정도 막힌다 싶을때 급하게 Oracle 로 일단 턴 했습니다. Elastic Search를 사용하려고 elasticUtil 모듈을 만들어 Bean에 등록 했고, 그 유틸을 사용할 수 있는 나름의 Dao와 Service를 만들어서 했는데, 알람이 확인이 되면 모두 확인되었다는 update를 쳐야 하는데, '조회' 와 '등록' 단 두가지로 Elastic Search 활용을 준비하던 터라 거기에서 막혔습니다. 간단한 log 쌓기나 메시지..

Java 에서 Elastic Search 사용하기3. - 간단 검색하기

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/_search_apis.html Search APIs | Java REST Client [master] | Elastic www.elastic.co 이번에는 엘라스틱 서치를 사용하는 이유인 검색을 해 보도록 하겠습니다. 일단 작성한 코드 먼저 보여드리겠습니다. client로 search 명령을 주면 , response를 return 합니다. 해당 response는 SearchHits 라는 Iterable 구현체를 가지고 있습니다. 지네릭 타입은 SearchHit 입니다. 해당 SerarchHit에서 각각 source를 getSourceAsMap() 메서드를 통해 받고, 모두 lis..

Database/Elastic Search 2021.06.08 (1)

Java 에서 Elastic Search 사용하기 - 2. Post Request (Create)

Java 에서 Elastic Search 사용하기2. - Post Request (Create) https://shanepark.tistory.com/139 Java 에서 Elastic Search 사용하기 - Get Request org.elasticsearch elasticsearch 7.12.1 org.elasticsearch.client elasticsearch-rest-high-level-client 7.12.1 Elastic Search client로는 High level client 와 Low level client가 있습니다. low level clie.. shanepark.tistory.com 이번에는 1편에 이어 CRUD 중 첫번째인 C 를 해보겠습니다. 일단 1편에서 GET 방식을 연..

Java 에서 Elastic Search 사용하기 - 1. Get Request

org.elasticsearch elasticsearch 7.12.1 org.elasticsearch.client elasticsearch-rest-high-level-client 7.12.1 Elastic Search client로는 High level client 와 Low level client가 있습니다. low level client는 버전에 영향을 받지 않고 유연하지만, 사용하기 좀 더 어렵습니다. High level client는 Low level client를 한번 추상화 해서 사용합니다. https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high.html Java High Level REST Cl..

특정 문자 변경하는 Filter 만들기

제가 지금 준비중인 Project에서는 Markdown 문법을 지원하고 있습니다. 그런데 xss 방어용으로 등록한 lucy-xss-servlet-filter가 > 를 일괄적으로 > 로 변경해버리는 바람에 markdown 에서 많이 쓰는 문자중 하나인 '>'를 사용하지 못하는 상황이 되어 버렸습니다. lucy-xss-servlet-filter 에서 특정 문자를 제외하는 방법을 엄청 찾아봤는데 그건 없어서.. Custom Filter를 하나 더 추가 해서 Lucy 필터 다음에 위치하도록 하고, >를 모두 >로 변경하도록 해 보았습니다. CustomWrapper를 먼저 만듭니다. package best.gaia.utils.filter; import javax.servlet.http.HttpServletRequ..

Mac ) 설치되어있는 모든 자바 버전 확인하기

/usr/libexec/java_home -V 위의 명령어를 터미널에서 입력하면 됩니다. 위와 같이 설치되어 있는 모든 자바의 경로와 버전이 나옵니다. java -version 을 입력하면 지금 기본으로 사용중인 자바 버전을 확인 할 수 있습니다. Mac에서 이클립스를 사용한다면 구동용 자바 버전과 개발용 자바 버전을 따로 가지는걸 추천합니다. 2020-12 버전부터는 Eclipse에 기본적으로 jre를 내장해서 나오기 떄문에 상관 없습니다. Sql Developer는 JDK 11로 구동하는걸 추천합니다. 2020-06 이클립스는 자바 16 버전으로 실행시에 에러가 심각해서 사용할 수 없었습니다. 전자정부 프레임워크 사용시에는 JDK 8 이나 11 로 구동하면 됩니다.

IT Computer/Mac 2021.04.23

JDBC 와 MYSQL 연동하기 1) 커넥션 생성

DB와 연결해 CRUD를 하는 MVN 프로젝트를 새로 만드는 프로젝트가 숙제로 나와서 이왕 처음부터 DB도 새로만드는거 오라클은 학원에서 충분히 써보니깐 MYSQL을 한번 시도해 보려고 합니다. OJDBC의 O는 Oracle을 의미합니다. MYSQL을 쓴다면 커넥터를 MYSQL용으로 받아야합니다. mvnrepository.com/artifact/mysql/mysql-connector-java MYSQL이 아직 설치되어 있지 않거나 접속할 서버가 없다면 Mac의 경우에는 아래 튜토리얼을 따라하시면 됩니다. shanepark.tistory.com/41 mac) MYSQL 설치 및 초기설정하기 HOMEBREW 패키지 설치를 이용해 설치하는게 가장 간단합니다. [ homebrew가 설치되어있지 않다면?] sha..

반응형