전체 글 237

Spring boot 의 구조

이전 포스팅에서 우리는 자바 JDK 설치, 환경 변수 설정, STS 설치 및 환경 설정, 스프링 부트 프로젝트 생성, 플러그인 설치 등의 작업을 진행하였습니다. 이번에는 생성한 프로젝트에서 중요한 역할을 하는 파일들과 기존 스프링 프로젝트와의 차이점 등에 대해 가볍게 알아보는 시간을 가져보도록 하겠습니다. 스프링 부트 프로젝트 구조 1. src/main/java 기존의 스프링과 마찬가지로 클래스, 인터페이스 등 자바 파일이 들어가는 디렉터리입니다. 이전 포스팅에서 생성한 com.board 패키지 안에 BoradApplication 클래스가 생성되어 있는 것을 볼 수 있는데요, 파일을 열어보면 클래스 선언부 위에 @SpringBootAplication이 선언되어 있습니다. 이 애너테이션은 다음의 세 가지 ..

BackEnd/Java Spring 2020.05.23

Spring annotation @Component, @Configuration

Spring 프로젝트를 진행하면서 Bean으로 등록하기위해 @Component, @Configuration, @Controller … 등의 여러 어노테이션을 사용합니다. 그중에서도 @Component와 @Configuration은 사용상에 있어 차이가 있는데, 정확히 어떠한 차이로 이 어노테이션들을 구분하여 사용하는지 알아보도록 하겠습니다. Spring Bean Bean : Spring bean container에 존재하는 객체로써, default 설정으로는 싱글턴으로 존재합니다. 일반적으로 bean 으로 등록하기위해서는 다음과 같은 방법들이 존재합니다. xml 등록 레거시 방식으로, xml 방식으로 등록하는 방법입니다. 위와같이 xml에 class 경로와 id 를 직접 지정해주어 bean으로 등록해줄수..

BackEnd/Java Spring 2020.05.23

Spring IoC 컨테이너 , 빈 , 의존성 주입 개념정리

Spring IoC 컨테이너 IoC (Inversion of Control) 이름에서도 알 수 있듯 제어의 역전을 의미한다. 그렇다면 제어의 역전이 무슨 말일까? 보통 일반적인 프로그램을 작성할 때는 main 함수가 있어서 시작 부분을 자신이 컨트롤 할 수 있는데 프레임워크를 사용할 때는 main 함수에서 SpringApplication.run 을 해줄뿐 내가 작성한 코드는 따로 호출하지를 않는다. 처음 스프링 프레임워크를 사용했을때는 이 부분의 의아했었던 기억이 난다. 이 의아함을 해결해주는것이 바로 IoC 컨테이너이다. 생성하고 초기화 실행 소멸을 알아서 처리하는것이다. 어떤 요청이 들어왔을때 어떤 객체를 어떻게 조작할 것인가 를 대신 수행주는것이 이 컨테이너다. 개발자가 객체를 생성하고 작동하는 로..

BackEnd/Java Spring 2020.05.05

스프링 동작 정리-1

위 그림처럼 스프링의 대체적인 경로와 사용목적은 이렇게 된다. 하나하나 간단하게 설명을 하자면 src/main/java 에서는 보통 VO , DAO , Controller, Service 등 직접 개발자가 개발하는 주요 코드들이 동작하는곳이다. src/main/resources 는 서버가 실행될 때 필요한 파일들의 경로라고 되어있는데 예를 들자면 위의 그림과 같다. 서버가 작동할때 찍을 로그라던지 서버가 실행될때 DB를 조작하기 위한 mybatis 를 사용하기위한 설정파일 그리고 그것의 실질적인 동작을 표현하는 mappers 파일등이 여기에 들어간다. servlet-context 는 브라우저의 요청으로부터 그 요청을 처리한 controller를 이어주는 작업을 한다. 사진의 가장 아래에 component..

BackEnd/Java Spring 2020.05.05

백준 - 동전2 , 제곱수의 합

dp유형중 헷갈리는 유형을 정리해보려고 급하게 쓴다. 이런 유형들의 문제는 착각하기 쉬운게 가장 적게 사용하도록 만들라고 해서 조건에 해당하는것중에서 가장 큰거부터 골라나가면 가장 적게 사용하고 구해지겠지? 라고 착각하는것이다. 말이 이상한데 풀어말하자면 동전2 같은 경우에는 동전 종류 3개 이것들을 사용해서 합 15를 만드는데 동전을 가장 적게 사용할때를 구하는건데 동전 종류중에서 12원이 가장 크므로 12를 선택해버리면 남는 3원은 1원짜리 3개로 채워야하기 때문에 동전을 4개 써야하는데 이건 최소가 아니다. 5원동전 3개를 쓰면 해결되기 때문. 이런 오류를 범해서는 안된다. 아래는 제곱수의 합 코드 #include int main(void){ int N; int Dp[100001] = {}; sca..

알고리즘/DP 2020.04.26

나의 부족함을 돌아보며.

어제 프로그래머스에서 백엔드 채용을 위한 코딩테스트를 진행했다. 이런 글을 쓰는건 나도 참가했기 때문이다. 결과는 망했다. sql 문제만 제대로 풀고 나머진 다 끄적거리기만 하다 제대로 된 답을 내지도 못했으니까.. 맞다. 이 글은 사실 푸념할려고 쓴글이다. 사실 개발은 즐겁고 새로운 기술을 배우는것도 좋은데 알고리즘은 왜 이렇게 귀찮았을까. 학교 다닐때 알고리즘 공부라곤 학교에서 수업을 따라가고 열심히 들은것 뿐 따로 알고리즘 문제를 인터넷에서 찾아서 풀어보거나 그러지는 않았다. 하기 싫었다기보다는 해야겠다는 생각도 많고 시도도 했었지만 그 만큼 동기부여라던지 흥미를 못붙였던게 큰거겠지.. 지금은 내가 왜 그랬을까 하면서 후회하곤 한다. 그래도 후회해도 무슨 소용이 있겠는가 그것도 결국 나의 선택이였고..

잡담 2020.04.19

프로그래머스 - 네트워크

문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 정수로 표현합니다. i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 computers[..

알고리즘 2020.04.19

프로그래머스 - 다리를 지나는 트럭

문제 설명 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리 길이 bridge_length, 다리가 견딜 수 있는 무게 weight, 트럭..

알고리즘 2020.04.19

ajax 를 이용한 실시간 랭킹 반영

개인적으로 만들고 있는 프로젝트에서 조회수가 가장 높은 글 top10을 만들어주는 기능을 구현하려고 했다. 여러가지 방법들을 찾아봤지만 ajax 를 사용하는 방법이 가장 간편할 것 같아서 선택했다. setInterval 을 사용해서 ajax 의 요청을 일정주기마다 요청하는것인데 처음에 생각했을때는 많은 유저가 접속하는 상황이라던지 관리할 데이터가 크면 서버에 부하를 줄 수도 있고 setInterval 을 요청하는 주기안에 요청이 완료되지 않으면 발생할 수 있는 문제점들 때문에 잠시 고민했지만 db에서 많은 순서로 10개까지만 데이터를 가져오고 또 1분에 한번씩만 처리를 해주면 되는 기능이였기 때문에 그대로 진행하기로 했다. 서론은 여기까지하고 구현한 코드를 먼저 적어보겠다. $(function () { ..

Javascript 2020.04.16