java 30

스프링부트 - SXSSF 형식으로 엑셀 다운로드 모듈만들기

개요 회사에 입사 후 기존의 엑셀 처리는 Jxls 방식으로 처리되었었다. 이 방식은 미리 템플릿을 원하는 페이지나 형식마다 따로 만들어야했고, 대용량의 데이터를 처리할 땐 너무 오래걸리거나 이로인해 거래처에서 여러번 시도하다가 동시에 Request 가 생겨 OOM 발생이 발생해 서버에 무리를 주는 상황이 발생한 경우도 있었다. 이런 리스크나 성능면에서 떨어져 poi 라이브러리에서 제공되는 sxssf 방식으로 변경업무를 진행했다. SXSSF 방식은 일정 용량을 넘어선 처리에선 자동으로 메모리를 관리해 서버에 부담이 적다는 점과 속도가 무난하다는 장점이 있다. 더 다양한 이유와 설명이 있겠으나, 자세한 점은 생략하고 본론으로 들어가겠다. 프로세스 기존의 프로세스는 EXCEL 버튼을 클릭할 경우, 페이지에서 ..

Programming/Spring 2022.01.05

프로그래머스 - 완주하지 못한 선수(JAVA)

문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예participantcompletionreturn ["leo", "kiki",..

자바 개념정리하기 - JVM, Memory, OOP

시작하며 뜬금없지만. 혼자 블로그에 글로 쓰면서 자바, 스프링의 이론이나 개념 혹은 단어의 뜻을 한번 적으면서 정리하고자 합니다.. 워낙 프로그래밍에서 쓰이는 단어들이 낯설고 익숙하지 않거나, 자주쓰이지 않지만 알고있어야하는 단어와 뜻들이 있는거같습니다. 애매하게 알고있거나, 대략 이런뜻이겠거니, 혹은 공부했지만 까먹었던걸 한번 복기하자는 의미에서 포스팅을 하게 되었습니다. JVM - Java Virtual Machine 자바 가상머신, 말 그대로 가상으로 존재하는 소프트웨어이다. 자바언어는 os에 독립적이고자 JVM을 활용해, 자바코드를 바이트 코드로 변환하고 각 os에 맞게 전달한다. 이처럼 JVM이 동작하는 몇가지 특징이나 기능들을 살펴보자면, 자바 인터프리터 (interpreter) : 자바 컴파..

Programming/JAVA 2021.12.14

스프링부트 기초 - 4. 게시판 수정,삭제

이전글 https://goodthinking.tistory.com/43 스프링부트 기초 - 3. 게시판 만들기 이전글 https://goodthinking.tistory.com/42 스프링부트 기초 - 2. CRUD 게시판 만들어보기 이전글 https://goodthinking.tistory.com/41 스프링부트 기초 - 1. 스프링부트 개요 & 프로젝트 설치 및 설정 개요 안.. goodthinking.tistory.com 이전글에서 CRUD 에서 Create , Read 를 구현했습니다. 수정 Update 먼저 수정하는 페이지를 만들어야겠죠.. resouces >templates >articles >edit.mustache 를 생성하겠습니다 코드로 첨부하니 전부 검정색으로 출력되서 그냥 제코드를 캡..

Programming/Spring 2021.12.07

스프링부트 기초 - 2. 게시판 시작해보기

이전글 https://goodthinking.tistory.com/41 스프링부트 기초 - 1. 스프링부트 개요 & 프로젝트 설치 및 설정 개요 안녕하세요. 이번에 스프링부트를 공부하면서 블로그에 정리하면 좋을것같아 찾아왔습니다. 기존에 공부할땐 노션에 정리했는데 노션이 좋긴하지만, 블로그랑 성격이 조금 달라서 포트폴 goodthinking.tistory.com 시작 이전에는 설치와 설정을 간단하게 했습니다. 이번 포스팅부터는 간단한 게시판을 통해 CRUD를 구현해보겠습니다. 먼저 Spring Boot 는 기본적으로 톰캣 서버가 내장되어있어 따로 설정이 없어도 실행이 됩니다. 프로젝트를 실행 후 src >main >resources >static 폴더에다가 index.html 을 생성합니다. 웰컴 페이지..

Programming/Spring 2021.12.02

스프링부트 기초 - 1. 스프링부트 개요 & 프로젝트 설치 및 설정

개요 안녕하세요. 이번에 스프링부트를 공부하면서 블로그에 정리하면 좋을것같아 찾아왔습니다. 기존에 공부할땐 노션에 정리했는데 노션이 좋긴하지만, 블로그랑 성격이 조금 달라서 포트폴리오처럼 남기고, 다른사람에게 피드백? 이나 보여줄 수 있는 부분이 블로그가 더 클것같아서 블로그로 정리해보도록 하겠습니다. 설치 먼저 스프링부트를 설치 하기전, IDE를 정해야하는데요 기존의 프로젝트에서 저는 Eclipse, STS 를 활용했지만, 이번에는 IntelliJ 무료 버전인 CE버전을 활용하여 해보겠습니다. IDE의 설치는 인텔리제이의 회사 젯브레인 홈페이지에서 가능하며, 저는 MAC 환경이기에 링크가 mac 입니다. https://www.jetbrains.com/ko-kr/idea/download/#section=..

Programming/Spring 2021.12.02

스프링 이미지게시판 - div 태그 contentEditable 기능

이번 포스팅은 간단하게 내가 지금 어떤 고민을 하는지 기록해두기 위해서다. 지금 나는 학원 파이널 프로젝트로 Spring framework 를 통한 웹사이트를 개발하고 있는데, 한 사이트에 이벤트(행사) 페이지를 맡아서 진행중이다. 당연히 이벤트 페이지같은 경우 이미지의 비중이 굉장히 큰만큼, 스타벅스같은 사이트처럼 이미지 위주의 페이지로 꾸며보고 싶었고, 본문내용과 이미지를 함께 쓸 수 있도록 구현해야했다. 이미지 없이 text 로만 CRUD 기능은 구현했지만, 이미지를 활용하기 위해 textarea 를 다른 방향으로 바꿔서 에디터형식? 블로그? 처럼 이미지와 텍스트를 함께 표시하고 싶었다. 그러다 찾은데 태그에 contentEditable 이라는 기능이다. 이 기능이 참 재밌는게 이 기능하나로 블로그..

Programming/Spring 2021.10.25

Spring - DI 그리고 IoC

이전에 포스팅에서 Spring의 개요중 DI 와 IoC를 언급했었다. Spring에 Core 기능이라고 할 수 있으며, 핵심 기능인 만큼 대단히 중요도가 높다고 할수있겠다. 이번 글에서는 DI 와 IoC에 대한 개념을 알아보자. Spring IOC ( Inversion Of Control ) IoC (반전제어) 란? - Inversion of Control 의 약자로 프로그램을 구동하는데 필요한 객체에 대한 생성, 변경등의 관리를 프로그램을 개발하는 사람이 아닌 프로그램을 구동하는 컨테이너에서 직접 관리하는 것을 말한다. 기존의 웹 애플리케이션에서는 소스코드의 제어권은 오로지 개발자가 직접관리하며 권한을 가지고 있었지만, Spring에서는 소스코드의 제어권을 컨테이너가 라이브러리로 제공하며 개발자는 온전..

Programming/Spring 2021.10.09

Spring 의 기본 동작순서와 구조 MVC

먼저 스프링의 기본 동작순서와 구조를 살펴보자. 1. Client : URL 로 접근하여 정보를 요청한다. 2. View : 화면단에서 보여주기 위해 요청을 전송 3. DispatcherServlet : (web.xml 에 포함, Spring에서 제공) 해당 요청을 Mapping 한 컨트롤러가 있는지 검색한다. 4. HandlerMapping : (xxx.xml 에 포함[Servlet설정파일] Spring 에서 @RequestMapping()을 통해 제공 ) 처리 요청 - Bean등록 5. Controller : (@RequestMapping(value="ex.do")) DTO(데이터 전송 객체)를 이용해 Data를 전송 6. Service : DTO를 이용해 Data를 전송 7. DAO : (Data ..

Programming/Spring 2021.10.08

Spring 의 개요

스프링의 개요 Java 언어를 사용하면 꼭 사용하게 되는 대세 프레임워크인 스프링 ! 어째서 많은 프레임워크 중 스프링을 사용하는지, 스프링이란 무엇인지 핵심개념부터 살펴보자 Spring Framework 란? 자바 오픈소스 애플리케이션 프레임워크로 간단하게 Spring 이라 불린다. 동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공하고 있으며, 공공기관의 웹 개발 시 사용을 권장하고 있는 전자정부 표준 프레임워크의 기반 기술로서 쓰인다. 가장 큰 특징은 의존성주입 (DI, Dependency Injection) 과 제어 반전(IOC, Inversion of Control) 이 있으며 그 외에도 Spring AOP, POJO 등이 존재한다. 이 특징들을 이용해 결합도를 낮추는 방식으로 어플리케이션..

Programming/Spring 2021.10.08