Java 13

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)

람다식 (Lambda Expression)

람다식 (Lambda Expression) ​ Lambda는 2014년 3월 18일에 발표한 java 8에서 추가된 대표적인 기능입니다. 자바에 대한 함수형 언어의 기능 요구가 끊임없이 있어 왔고, 객체지향언어인 자바가 함수형 언어의 기능까지 갖추게 하는 일은 쉽지 않았을 테지만 그 어려운 일을 똑똑한 개발자들이 해준 덕분에 우리는 이 좋은 기능을 사용 할 수 있게 되었습니다. ​ 람다식이란? 람다는 간단하게 말해서 메서드를 하나의 식으로 표현 한 것입니다. 람다식은 함수를 간략하면서도 명확한 식으로 포현할 수 있게 해줍니다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없기 때문에 람다식을 "익명함수" 라고 부릅니다. 객체지향 언어인 자바에서는 method라는 용어를 사용하는데요, 특정 클래스..

Programming/Java 2021.08.29 (1)

java로 작성해보는 정렬 알고리즘과 성능 비교

java로 작성해보는 정렬 알고리즘과 성능 비교 얼마전 정렬 알고리즘을 손 코딩 해 볼 기회가 있었습니다. 갑자기 눈앞에 정렬 알고리즘을 손코딩 해야 하는데, 제한시간도 있다 보니 잠시동안 고민이 되었습니다. 당장에 간단하게 작성할 수 있는 버블정렬을 선택해 다른 문제 풀이에 쓸 시간을 조금 더 벌 것인가 아니면 자바를 처음 배울때 직접 구현해보려다가 못했던 퀵정렬을 한번 작성해 볼 것인가. 결론부터 말하자면 안전한 길을 택했습니다. 솔직히 버블정렬의 쉬운 난이도에도 불구하고 항상 실제로 코드를 구동해보고 테스트 하기 전 까지는 맞는지 문제가 있는지 확신이 서지 않았습니다. ​ ​ 과거로 돌아가, 학원에서 초급 자바시간에 정렬에 대해 배우는 기회가 있었습니다. 선택, 버블, 삽입 정렬에 대해서 간단하게 ..

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..

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 연동하기 8) log4jdbc 적용하기

기존에 oracle에서 쓰던 설정을 그대로 가져왔더니 log4 설정이 제대로 먹히지 않았습니다. 그래서 몇가지 수정이 필요했습니다. 1. pom.xml 에 dependency 추가 org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4 1.16 위의 log4jdbc를 사용합니다. 2. 데이터베이스 접속 정보 수정 #driverClassName=com.mysql.cj.jdbc.Driver driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy #url=jdbc:mysql://localhost:3306/jsp url=jdbc:log4jdbc:mysql://localhost:3306/jsp 위의 주석 처리된 부분들이 각각 log4jdbc 적..

JDBC 와 MYSQL 연동하기 7) MyBatis 적용하기

Mybatis란? Mybatis는 Java Persistence Framework 입니다. SQL 문장을 XML 혹은 어노테이션을 이용해 Object에 저장하도록 해줍니다. ORM ( Object Relational Mapping) 혹은 Sql Mapper Framework 로 불립니다. Transaction 도 관리해주며, class loader 형태로 접근(절대경로)합니다. Ibatis가 발전해 MyBatis가 되었는데요, Apache Project 팀에서 google code 팀으로 이동하며 명칭이 변경되었습니다. MyBatis와 Ibatis는 몇가지 차이점이 있습니다. - IBatis는 JDK 1.4 에서 사용이 가능합니다. MyBatis로 넘어오며 요구사항이 JDK 1.5 이상으로 바뀌었습니다...

JDBC 와 MYSQL 연동하기 6) MVC 패턴 적용하기

1. 필요한 VO(Value Object) 객체를 제일 먼저 만들어 줬습니다. package kr.or.ddit.vo; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @Data @EqualsAndHashCode(of="al_id") @ToString public class AlbaVO { private String al_id; private String al_name; private Integer al_age; private String al_zip; private String al_addr1; private String al_addr2; private String al_hp; private String gr_co..

JDBC 와 MYSQL 연동하기 5) FrontController 패턴 적용하기

@Controller 와 @RequestMapping 어노테이션을 이용한 FrontController 패턴을 적용해 보았습니다. 1. 적용하기 앞서 FrontController 패키지가 준비 되어 있어야 합니다. github.com/Shane-Park/jspClass/tree/master/alba/alba/src/main/java/kr/or/ddit/mvc Shane-Park/jspClass jsp class tomcat . Contribute to Shane-Park/jspClass development by creating an account on GitHub. github.com 위의 링크에서 해당 패키지 코드들을 다운받을 수 있습니다. 2. web.xml에 해당 컨트롤러를 등록해주어야 합니다. F..

JDBC 와 MYSQL 연동하기 4) 서블릿으로 출력하기

이번에는 서블릿을 만들어서 MYSQL에서 읽어온 데이터를 브라우저에서 출력해보도록 하겠습니다. shanepark.tistory.com/78 JDBC 와 MYSQL 연동하기 3) 커넥션 팩토리 패턴 적용하기 이제부터는 2) 번에서 했던 코드를 커넥션을 팩토리 패턴을 이용해 받아오도록 해보겠습니다. 코드는 거의 동일한데 커넥션을 받아온다는 것만 다릅니다. 제일 먼저 Resource 소스 폴더에 dbinfo.prop shanepark.tistory.com 위의 3번 예제의 코드를 서블릿으로 만들었습니다. 어노테이션(@WebServlet)을 통한 맵핑은 Servlet 3.0 이후부터 가능합니다. 출력할 내용에 한글이 포함되어 있다면, charset을 설정해주지 않으면 한글이 깨져서 나옵니다. 그외 전체 코드는 ..

반응형