Spring을 공부하며 TIL노트 작성하는 페이지 입니다.
1.Spring을 배우는 이유?
컴퓨터는 데이터를 저장하는 기억장치와 데이터를 연산하는 CPU, 그리고 입력·출력을 담당하는 장치들로 구성된다.기억장치는 크게 주기억장치와 보조기억장치로 나뉘며, 입력장치에는 키보드와 마우스, 출력장치에는 모니터와 스피커 등이 있다.오늘 알아볼 내용은 이중 기억장치,

정수형태의 자료형에는 byte, short, int, long이 있다.뒤로 갈수록 값의 범위와 메모리 크기가 증가한다.그렇다면 왜 사람들은 long대신 int를 많이 사용할까? 그 이유는 크기가 커질수록 메모리 사용량이 증가하기 때문이다. 간단히 계산해보면 int는 4
오늘은 웹 검색이나 AI의 도움없이 정수 계산기를 만들어보는 연습과정을 거쳤다. 1.값 입력받기 첫번째로, Scanner 객체를 생성하여 사용자가 원하는 값을 받을 수 있게 설정했다. 그 뒤, 입력받은 값을 int형으로 변환시키기 위해 nextInt()를 사용하여
SRP(- OCP(- LSP(- ISP(- DIP(SRP를 설명하는 가장 간단한 문장이다. 그렇다면 책임이라는게 도대체 뭘 말하는걸까?클래스가 가지는 책임은 일종의 역할을 부여받는것과 같다. 즉, 클래스가 여러개의 역할을 수행하고 있다면 이는 SRP를 위반한것이다.유지
목차 객체 지향 프로그래밍(OOP)란 캡슐화 상속 추상화 다형성
목차 컬렉션 제네릭 컬렉션 자바에서 컬렉션(Collection)은 여려 개의 데이터를 쉽고 효율적으로 저장하기 위한 객체들의 모음이다. 컬렉션을 사용하는 이유 제네릭
목차 익명 클래스 람다(Lambda) 람다 사용시 주의사항 람다식을 매개변수로 전달하기
목차 스트림(Stream)이란 for문과 스트림의 차이점 스트림을 활용한 예시 스트림(Stream)이란 자바의 스트림이란 for문과 비슷하게 데이터를 반복적으로 처리하기 위한 기능이다. 스트림의 사전적 정의인 '흐르다', '개울'처럼 자바에서도 데이터를 하나씩 흘려보내며 처리한다는 의미로 스트림이라고 이름 붙어졌다. 스트림의 특징 원본 데이터를 변경하지...
목차 쓰레드(Thread)란 싱글쓰레드 멀티쓰레드 join()에 대하여 Runnabble 인터페이스 활용하기 쓰레드(Thread)란 쓰레드란 프로그램(프로세스) 내에서 실제 작업을 수행하는 하나의 실행 단위이다. 쓰레드에는 싱글 쓰레드와 멀티 쓰레드가 있다. 이에 대한 비유로 프로세스를 식당으로 쓰레드를 직원으로 비유하자면, 싱글 쓰레드는 한명의 직원이 ...
파일 구조 Cal(계산인터페이스) CalResult(계산결과게터세터) ResultCollection(결과저장인터페이스) Main Cal, ResultCollection 인터페이스 CalResult 계산 결과는 제네릭으로 저장하여 좀 더 유동적으로 동작할 수 있도록
목차 fianl 상수(Constant) 불변객체(Immutable Object) final final은 값 변경불가 또는 참조 변경불가를 의미하며 어디에 붙이냐에 따라 그 역할이 다르다. 1. 변수에서의 final 변수에서의 final은 변수의 값을 한번만 설정할 수 있으며, 그 후 변경할 수 없다. 2.클래스에서의 final 클래스에 final을...
목차 -API란? -REST API란? API란 API는 Applicatoin Programming Interface의 약자로서, 서로 다른 프로그램(애플리케이션)이 정해진 방식으로 소통할 수 있도록 제공되는 규칙 또는 인터페이스이다. API의 사용 예시로는 맛집
스프링 프로젝트 구조 스프링은 역할에 따라 코드를 분리한다. 보통 Controller, Service, Entity, Repository 이렇게 4개의 코드로 분리하는데, 이 구조를 레이어드 아키텍처(계층형 아키텍처)라고 부른다. 역할에 따라 코드를 분리하는 이유

목차API 식별하기(- API 명세서 만들어보기(- Postman 에서 검증해보기(URL: https://place-api.map.kakao.com/places/panel3/1479300828카카오맵 서버의 ‘/1479300828’ 경로에 요청을 보낸다.Me

오늘은 Git을 사용한 협업을 경험해보기 위해서, 리포지토리를 만들고 PR을 만들어보는 학습을 했다.목차내 저장소 만들기 (Clone) & 계획 짜기(- 나만의 작업 공간 만들기 (Branch)(- Markdown 파일로 자기소개 작성하기(- 풀리퀘스트 만들기(Pull
목차문제설명(- 입출력예시(- 구현코드(- 테스트케이스(- 트러블슈팅(오늘은 알고리즘 공부를 하며, 코딩문제를 풀어보는 시간을 가져보았다.음악 테스트 응시자의 패턴3명의 음악 테스트 응시자들이 음계 맞추기 시험을 봅니다. 각 응시자들은 자신만의 패턴으로 답을 찍어서 문

업로드중..

목차큐의 특징(- 큐 응용 예시(큐(Queue)이란 데이터를 차곡차곡 쌓아 올리는 데이터 관리 방식이다. FIFO(First in First Out)구조또한 큐은 Java에서 제공하는 내장 자료구조를 사용하여 구현없이 사용이 가능하다.선입선출단방향 접근 방식구현이 간단
목차알고리즘 문제(- 코드 작성(게임 개발사에서 새로운 게임의 업데이트 패치를 준비하고 있습니다. 각 패치 항목은 테스트 완료도가 100%일 때 게임에 적용될 수 있습니다. 각 패치 항목의 테스트 진행 속도는 서로 다르며, 뒤에 있는 패치가 앞에 있는 패치보다 먼저 테
목차수정 및 추가 기능트러블 슈팅, 회고@FunctionalInterfacepublic interface Cal{ double cal(double x, double y);}계산 결과는 제네릭으로 저장하여 좀 더 유동적으로 동작할 수 있도록 구현하였다.첫번째로 계산

목차트리의 개념 및 용어(- 이진트리(트리(Tree)는 부모와 자식관계로 데이터를 저장하는 계층형 자료구조이다.트리라는 이름에 맞게, 나무가 뿌리를 뻗어나가는 구조와 같다.트리는 노드와 간선으로 이루어져 있다. 노드는 변수 간선은 변수끼리 이어주는 선이라고 생각하면 편
목차HTTP란?(- HTTP 구조(- HTTP로 데이터 전송 방법(HTTP(HyperText Transfer Protocol)는 클라이언트와 서버간에 데이터를 주고받기 위해 만든 통신 규약이다.여기서 HyperText는 문서간 연결(하이퍼링크) 기능을 가진 텍스트를 의
목차 정렬 정렬 정렬
선택정렬(- 버블정렬(- 삽입정렬(- 병합정렬(- 퀵 정렬(- 힙 정렬(- 셸 정렬(선택 정렬(Selection Sort)는 가장 작은값을 찾아 현재 위치와 교환하는 방식이다.교환 횟수가 적다비교 횟수가 많다데이터가 많으면 성능이 떨어진다이런식으로 동작하는데, 전체 배
123
목차SQL 데이터 계산하기(- 데이터 범주 연산하기(- 쿼리 결과 정렬하기(\+ : 더하기\- : 빼기\* : 곱하기/ : 나누기SUM : 합계AVG : 평균여러번의 쿼리를 사용할 필요 없이, Group by 카테고리를 지정하여 연산이 가능하다.연산한 쿼리문을 Orde
목차

목차 그래프의 개념 및 용어 그래프 표현 방법 그래프의 개념 및 용어 그래프(Graph)는 점(Node)와 선(Edge)을 이용하여 객체관의 관계를 표현하는 비선형 자료구조이다. 그래프 표현 방법 여러번의 쿼리를 사용할 필요 없이, Group by 카테고리를 지정

목차클래스(- 객체(클래스는 객체를 생성하기 위한 설계도이다. 데이터를 나타내는 필드와 기능을 나타내는 메서드의 집합으로 이루어져있다.쉽게 비유하자면, 붕어빵의 틀이라고 생각하면 좋다.붕어빵틀이 있다면, 붕어빵을 만들 수 있다. 하지만, 붕어빵틀이 있다고 하더라도 붕어
인터페이스

목차서블릿의 문제점MVC 패턴ThymeleafSSR, CSR초기의 웹 애플리케이션은 Servlet 하나가 모든 역할을 담당했다.위와 같이 코드를 작성하면, 굉장히 간단한 코드임에도 불구하고 복잡한 코드가 된다.낮은 응집도(Low Cohesion): 하나의 클래스가 요청
목차트랜잭션ACID트랜잭션(Transaction)은 DB에서 하나의 작업을 수행하기 위한 논리적인 작업 단위를 의미한다.예를 들어서, A가 B에게 10만원을 송금하는 작업을 DB에서 처리한다고 가정해보자.이 두 작업은 반드시 함께 수행되거나 아예 수행되지 않아야 한다.

목차
Spring은 어노테이션을 기반으로 하는 프레임워크이기 때문에, 자주 사용하는 필수 어노테이션에 대해 숙지하는것이 중요하다. 오늘은 직접 CRUD코드를 구현하며, 자주 사용했던 어노테이션이 무엇이 있는지, 또한 어떤 역할을 하는지를 정리해보았다.REST API 개발 시
IoC란 제어의 역전이라는 뜻이다. 말 그대로 제어의 흐름이 바뀐것이다.기존의 객체 지향 프로그래밍에서는 객체가 필요한 다른객체를 직접 생성하였다.예를 들어, 위 코드에서는 OrderService내부에서 PaymentService를 생성하고 관리하게 된다. 이를 정방향
IoC Container과 Bean에 대하여 Bean에 대한 설명은 어제 작성했던 IoC/DI의 설명에서 이어진다. IoC는 개발자가 생성하는 객체를 스프링에서 대신 생성해 주는 것이다. 여기서, 스프링이 관리하는 객체를 바로 Bean이라고 한다. 또한, 이 Bea

이런식으로 Kakao와 Naver 두개의 결재 서비스를 구현하고 싶을때, Bean을 2개 이상 등록한다고 가정해보자.이 경우엔 PayService를 의존성 주입(DI) 하게 될때, Bean이 2개 이상 존재하기 때문에 에러가 발생하게 된다.이와 같이 2개 이상의 Bea

임시내용
인증이란 사용자가 누구인지를 확인하는 절차이다.보통 Spring에서는 DB에 등록된 사용자와 일치하는지를 증명하는 과정이다.웹사이트에서 ID,PWD를 입력하여 로그인하는것, 스마트폰 잠금을 FACEID같은 방식으로 해제하는것 등이 전부 인증에 해당된다.즉, 인증이란 쉽


쇼핑몰을 관리하는 관리자 백오피스 프로젝트의 개발이 완료되었습니다.본 프로젝트에서는 통일된 내부 코드를 구현하는 과정, Git을 사용한 협업과정 등을 중점으로 개발하였습니다.엔티티는 관리자,고객,주문,상품,리뷰 5가지로 구현되어 있습니다.보안은 HttpSession을

목차필터의 정의필터 구현하기필터를 사용하는 이유Spring에서의 필터는 말 그대로 들어온것(요청, 응답)을 걸러주는 거름망을 하는 역할이다.Postman을 사용한다 가정했을때, 필터의 동작순서를 간단하게 나타내면 다음과 같다.필터를 구현하는 방법은 많지만 보통 Once

Gradle에서는 위 이미지에 써져있는 jjwt부분을 추가해주면 된다.JwtUtil의 코드같은 경우 제공해주는 기본 코드만 복사 붙여넣기 해주면 되어 간단하다.필요하다면, 프로젝트에 맞게 Secret Key, 토큰 만료 시간, claim 정도만 설정하면 된다.집중해야되
오늘은 일부러 에러를 만들어놓은 코드를 리팩토링 및 개선하는 과제를 풀어보았다.Git허브 주소첫번째로 실행부터 막혔었다.그 이유는, 경로에 resource/application.yml이 존재하지 않아, jwt의 key를 가져올 수 없었기 때문이었다.이를 해결한 후, 다
Spring에선 웹을 개발할 때, 요청들을 반복적으로 처리해야하는 경우가 존재한다. 예를 들어, 모든 요청 로그 남기기 인증/인가 구현하기 요청이 들어올때, 요청 시간을 측정하기 서비스 로직 실행 전후에 검증작업 수행하기 등의 기능들이 존재한다. 하지만, 이를 각각 컨트롤러와 서비스 내에 구현하는것은 복잡하고 가시성도 떨어지고 한번 수정하면 해당 로직이...
보통 N+1문제가 발생하는 경우는 연관관계가 복잡한 데이터를 루프하며 접근할때 자주 발생한다.N+1이 발생할때 생기는 문제는 다음과 같다.단일로 요청하는데 수십개의 쿼리가 실행되어 DB에 부하발생트래픽이 많을수록 병목 가능성 증가캐싱이 어렵고, 요청이 많아질수록 응답시
1
목차
예산설정하기 AWS에서 가장 중요한것은 예산 설정이다. 호기심에 AWS를 만져봤다가 요금폭탄을 맞는 경우가 종종 있으므로 이를 방지하기 위해 예산 설정을 해주는것이 좋다. 우선은 AWS에 로그인하여 검색창에 budgets를 입력한다. 맨 위에 있는 budgets에 들어가서 예산생성을 누르고 자신의 예산에 맞게끔 설정해주면 된다. AWS에서 기본으로 지...

목차

목차
커머스 결제 시스템 프로젝트포인트 시스템을 도입한 결제 시스템을 구축하고, 실제로 AWS에 배포까지 해보는 프로젝트입니다.프로젝트의 주요 포인트는 결제시의 데이터 무결성 보장 및 멱등성에 관련된 문제들을 어떻게 해결하는지 입니다.

목차
목차
목차
목차
목차