전체 글 234

싱글톤 패턴이란?

싱글톤 패턴은 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 싱글톤 패턴은 private 생성자를 사용해서, 외부 클래스에서 임의로 new 키워드를 통해 객체 생성 하는 것을 막는다. 싱글톤 패턴을 적용한 서비스를 한번 구현해보자. 자기 자신을 내부에 private으로 가지고 있다. static은 클래스 레벨에 존재하기 때문에 단 하나만 존재하기 때문에 선언한다. private 생성자를 이용하여 다른 클래스에서 singletonservice를 부르려는 것을 막는다. 하지만 이러한 구현을 일일이 할 필요없이 스프링 컨테이너를 쓰면 객체를 싱글톤으로 만들어 관리해준다. 기존에 있는 객체를 재활용하여 성능 향상한다는 장점이 있다. [싱글톤 패턴의 단점] 싱글톤 패턴을 구현하는 코드 자..

백엔드/스프링 2022.01.23

싱글톤이란?

싱글톤은 객체 인스턴스가 자바 JVM에 하나만 존재해야 하는 상태를 의미합니다. 왜 웹 어플리케이션에 싱글톤 패턴이 필요할까? 스프링은 주로 기업용 온라인 서비스를 지원하려고 만들어졌습니다. 스프링 애플리케이션은 주로 웹 애플리케이션 입니다. 웹 어플리케이션은 보통 여러 고객이 동시에 요청합니다. 스프링이 없는 DI 컨테이너의 경우 웹 서비스에서 여러 사람이 요청하면, 서비스 객체를 각각마다 생성하여 반환해야 합니다. 즉 계속 요청할때마다 객체를 만들어야 하여 비효율적입니다. 그래서 만들어진 것이 해당 객체가 딱 1개만 생성되고 공유하도록 설계하면 된다라는 개념 → 싱글톤 패턴입니다.

백엔드/스프링 2022.01.23

백준 15686 - 치킨 배달 / C++

[문제] https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net [풀이] C++ next permutation 이용(조합), 시뮬레이션 [코드] #include using namespace std; #define X first #define Y second int board[55][55]; int n,m; vector chicken; vector house; int main(void) { ios::sync_with_stdio(0)..

알고리즘/풀이 2022.01.23

백준 - 12100번 2048 (Easy) / C++

[문제] https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net [풀이] 시뮬레이션 + 90,180,270,360도 회전 알고리즘 [코드] #include using namespace std; int board1[21][21]; int board2[21][21]; int n; void rotate(){ int tmp[21][21]; for(int i=0; i

알고리즘/풀이 2022.01.23

백준 18808 - 스티커 붙이기 / C++

[문제] https://www.acmicpc.net/problem/18808 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net [풀이] 시뮬레이션 + 회전 알고리즘 [코드] #include using namespace std; int n, m, k; int note[42][42]; int r, c; int paper[12][12]; // paper를 90도 회전하는 함수 void rotate(){ int tmp[12][12]; for(int i = 0; i < r; i++) for(int j = 0; j < c; ..

알고리즘/풀이 2022.01.23

TIL / 2022-01-21 - 대외활동

[한 것] UMC 앱 개발 프로젝트를 한창 진행 중(~ing) 앱 개발 프로젝트에서 쪽지 기능 추가(각 유저의 방 확인 API) BUT 오류 발생 SQLD 자격증 2단원 풀기 완료 백준 15683번(감시) 풀기 완료 [배운 것] JPA에서 최신순 게시글 하나 가져오기 쿼리를 단순히 레포지토리에서 FirstBy로 가져올 수 있음을 알게 되었다. 그리고 DB 기본 용어 (SQL, DDL, DML, DCL, TCL) 를 복습 차원에서 공부하게 되었다. [느낀점] 하루에 해야할게 너무 많은 것 같다. 포기하지 말자. [할 것] SQLD 자격증 풀기 스프링 스터디 강의 듣기

etc/TIL 2022.01.22