분류 전체보기 86

230627 11주 2일차 TIL. 관점 지향 프로그래밍 AOP

AOP란? 핵심 기능을 실행하는데 반드시 필요하지는 않지만, 여러 핵심 기능에 걸쳐 동일하게 작동하는 기능이 있다. 예를 들어 한 메소드가 실행하는데 걸리는 시간을 구하는 기능이라던지, 메소드의 반환값을 저장하는 기능 등이 이에 해당한다. 이렇게 서로 다른 비즈니스 로직이 공통적으로 가졌으면 하는 기능을 횡단 관심 또는 횡단 관점이라고 한다. 관점 지향 프로그래밍은 이러한 횡단 관심사들에 초점을 맞추는 개발 패러다임의 일종이다 핵심 관점은 비즈니스 로직을 말한다. 보안, 로깅, DB는 핵심 기능은 아니지만 단순 목적을 위해 소스코드를 여러 곳에 중복 작성해야 한다. 횡단 관점은 이런 관심사 분리를 통해 중복 코드 작성을 줄일 수 있게 해준다. spring-boot-stater-aop 관심사 분리를 하고 ..

멋사/TIL 2023.06.27

230626 11주 1일차 TIL. 그래프, Validation,

그래프 그래프는 아이템들과 이들 사이의 연결 관계를 표현한 자료구조로 M:N 관계 표현 시 많이 사용된다. 정점 : 그래프의 데이터가 담긴 부분 간선 : 정점간의 연결관계 인접하다는 것은 정점과 정점을 연결하는 간선이 존재한다는 것을 의미한다. 차수 : 한 정점을 기준으로 정점에 연결된 간선의 개수 정점을 통해 연결되는 간선들을 순서대로 나열한 것을 경로라고 함. 그래프 종류 무향 그래프 양쪽 정점에서 간선을 통해 서로에게 도달 가능한 그래프. 유향 그래프 한 정점에서 다른 정점으로는 도달 가능하지만 반대는 불가능한 그래프 가중치 그래프 간선에 값이 추가된 형태로 해당 간선을 택할 때 비용을 표현하는 경우 사용한다. 순환 그래프 시작한 정점에서 끝나는 경로를 사이클이라고 할 때 이런 순환 구조를 가진 그..

멋사/TIL 2023.06.26

230620 10주 2일차 TIL. LinkedList, 직렬화, REST

LinkedList 연결 리스트는 여러 자료를 저장하기 위한 자료구조의 일종으로 자료를 저장할 때 다음 자료의 위치를 같이 저장한다. 가장 기본적인 연결 리스트는 데이터를 저장하기 위한 노드들과 첫번째 노드를 가리키기 위한 필드로 이뤄져 있다. 노드는 데이터를 저장하는 데이터 필드와, 다음 노드의 위치를 저장하기 위한 링크 필드를 갖고 있다. private static class Node { private int data;// 자료 저장 private Node link;// 다음 자료의 위치 저장 } add public void add(int data) { // 1. start == null (LinkedList가 비어있을 때) if (start == null) start = new Node(data);..

멋사/TIL 2023.06.20

230619 10주 1일차 TIL. Queue, HTTP

Queue 큐는 대기열이라는 의미를 갖고 있음. 스택과는 다르게 선입선출 자료구조이다. 가장 먼저 추가된 자료가 먼저 나옴. FIFO 스택은 입출력이 한 방향이었기 떄문에 top 변수를 사용해야 했음. but queue는 입출력이 다른 곳에서 이뤄지기 때문에 데이터의 첫부분과 끝부분을 가리키는 변수가 필요. 앞부분을 가리키는 front와 끝부분을 가리키는 rear를 사용. deQueue할 땐 front 하나 증가. enQueue할 땐 rear 하나 증가 isEmpty() ⇒ front == rear일 경우 queue의 문제점! 앞부분의 공간이 비었지만 front와 rear가 계속 뒤로 이동하며 queue가 꽉찼다고 인식하게 됨! ⇒ 잘못된 포화 상태 인식이라고 함. 그래서 원형 큐를 사용하는 방안을 도입..

멋사/TIL 2023.06.19

230614 TIL. Spring Streotypes (Beans)

Spring Streotypes org.sprinframework.stereotype 패키지에는 Bean 객체로 등록하기 위한 다양한 annotation이 존재한다. @Controller, @Service, @Repository, @Componenet 등등.. 표기된 어노테이션을 보고 해당 클래스가 프로젝트에서 어떤 역할을 맡고 있는지 판단할 수 있고 각 클래스가 담당하는 역할을 개념적으로 구분할 수 있다. Streotypes의 주된 목적은 구현적 의미보다는 개념적인 의미의 역할 구분이다. @Component 서비스의 주된 흐름에서 속하지 않는 애들한테 붙여준다. Controller, Service, Repository가 아닌 평범한 Bean 객체 표현 시 사용.. 가장 기초가 되는 어노테이션으로 @Co..

멋사/TIL 2023.06.14

230613 TIL. 후위표기법, DFS, MyBatis

후위표기법 postfix 후위표기법이란 연산자를 피연산자 두개의 뒤쪽에 표기해 수식을 표현하는 방식이다. 숫자를 앞에 기호를 뒤에 표기한다. 연산자를 만났을 때 직전 두개의 숫자를 가지고 계산하면 된다. 1. 숫자 만나면 스택에 push. 2. 연산자 만나면 pop 두번한 결과 가지고 계산. (이 때 먼저 pop된 숫자가 오른쪽 피연산자) 3. 계산 결과를 다시 스택에 push. ex) 5 + 3 * 1 일 경우 --> 5 3 1 * + --> 5 (3 1 *) + --> 5 3 + => 8 public void solution() throws IOException { // 입력 처리 BufferedReader reader = new BufferedReader(new InputStreamReader(Sy..

멋사/TIL 2023.06.13

230612 TIL. Stack, Call Stack, 괄호 검사, lombok

Stack 스택은 물건을 쌓아올린 형태의 자료구조이다. 마지막에 추가된 자료가 먼저 나오는 후입선출 자료구조이다. => LIFO (Last In First Out) 스택의 기본 기능 - 데이터 추가 (push) - 데이터 회수 (pop) - 스택이 비어있는지 확인 (isEmpty) - 제일 위의 데이터 확인 (peek) Call Stack stack 자료구조를 활용해 프로그래밍 언어의 함수 호출 및 복귀 순서를 관리한다. 함수 또는 메소드 호출 시 마지막 수행 위치를 Stack에 저장한다. 스택 내부에 함수 실행을 위해 필요한 데이터와, 함수 호출 시 마지막 수행 위치 등을 저장한다. 재귀적 함수 호출로 인해 Call Stack의 최상단이 JVM의 Heap에 도달하게 되면 StackOverflow가 발생..

멋사/TIL 2023.06.12

230609 8주 4일차 TIL. @PathVariable, Thymeleaf th:, @{}

@PathVariable 경로상의 변수를 매개변수에 할당할 때 사용하는 어노테이션 @GetMappin("/{id}") public String readOne(@PathVariable("id") Long id, Model model) { ... } 경로 : http://localhost:8080/1 => id = 1 경로 : http://localhost:8080/25 => id = 25 th: 일반적인 HTML 요소의 속성에 'th:' 를 추가해주면 해당 속성은 Thymeleaf가 동적으로 할당한다. ex) th:class, th:action, th:href @{} @{/{변수} (변수=변수값)} 동적 경로를 표현하는 방법을 제공하기 위한 Thymeelaf 문법이다. 타임리프가 url 관련된 값을 사용 ..

멋사/TIL 2023.06.11