멋사/TIL 39

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

230607 8주 2일차 TIL. 빌드 자동화 도구, Maven, Gradle

Build Automation Tool 인간이 이해할 수 있는 언어인 high level language 에서 기계가 이해할 수 있는 언어인 low level language로 변환하는 과정을 컴파일이라고 한다. 그리고 여러 코드, 리소스, 외부 라이브러리 파일들은 사용자들이 쓸 수 있는 일종의 실행 파일 형태로 전달이 되어야 하는데 프로젝트 소스코드를 실행 가능한 형태로 만드는 과정을 빌드라고 한다. 이렇게 프로젝트를 하기 위해선 컴파일 이상의 많은 작업이 필요하다. 그래서 Build Automation Tool이라는 도구가 있는데 대표적으로 Gradle과 Maven이 이에 해당한다. 얘네는 Java 프로젝트를 빌드하는데 사용되는 대표적인 도구로 소스파일 컴파일, 단위 테스트, 버전관리, Jar 생성 ..

멋사/TIL 2023.06.07

230605 8주 1일차 TIL. @Controller, @RequestMapping, IOC

@Controller와 @RequestMapping 어노테이션 @Controller : 이 클래스는 컨트롤러임을 나타내는 어노테이션 @RequestMapping : 특정 요청이 발생했을 때 실행되는 메소드임을 나타내는 어노테이션 DemoController.class @Controller public class DemoController { @RequestMapping("home2") public String home() { return "home.html"; } @RequestMapping("profile") public String profile() { return "profile.html"; } @RequestMapping("blog") public String blog() { return "blog..

멋사/TIL 2023.06.05

230601 7주 3일차 TIL. 프로그래머스 배열 만들기 4

프로그래머스 배열 만들기 4 https://school.programmers.co.kr/learn/courses/30/lessons/181918 import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Solution { public int[] solution(int[] arr) { List list = new ArrayList(); int i = 0; while (i < arr.length) { if (list.isEmpty()) list.add(arr[i++]); else if (list.get(list.size() - 1) < arr[i]) list.add(arr[i++]); else if (list.get(l..

멋사/TIL 2023.06.01

230531 7주 2일차 TIL. 컬렉션, DB 대소문자 구분, JDBC, 예외처리

컬렉션 컬렉션 중에는 list가 가장 많이 사용된다고 한다. set은 자주 사용하진 않지만 중복값을 허용하지 않기 때문에 중복 제거 시 set으로 형변환을 하여 편리하게 사용할 수 있다. map은 key와 value의 쌍으로 구성된다. key는 set에 속하기 때문에 중복이 불가능하다. value는 중복이 가능하고 객체형을 받을 수 있다. list도 들어갈 수 있고 클래스도 들어갈 수 있음. JDBC란? 자바 응용 프로그램이 관계형 데이터베이스에 접속하기 위한 자바 표준 규격이다. JDBC 구조 - DriverManage : 드라이버 리스트를 저장하고 요청된 URL에 해당하는 드라이버를 애플리케이션에 제공. - Connection : 하나의 논리적 데이터베이스 트랜잭션을 나타내는 클래스 - Stateme..

멋사/TIL 2023.05.31

230526 6주 5일차 TIL. 추상클래스와 인터페이스, 제네릭, 컬렉션, 예외처리

추상 클래스와 인터페이스의 공통점과 차이점 공통점 - 추상 메서드를 포함할 수 있다 - 상속을 통해 기능을 확장하고, 다형성을 지원한다. - 클래스 간 관련성을 나타내는 용도로 사용할 수 있다. 차이점 - 추상 클래스는 추상 메서드 외에 일반 메서드, 인스턴스 변수를 포함할 수 있지만 반면 인터페이스는 추상 메서드, 디폴트 메서드, 정적 메서드, 상수만 가질 수 있다. - 추상 클래스는 단일 상속만 가능하지만 인터페이스는 다중 상속이 가능하다. - 인터페이스는 구현에 초점을 두지만 추상 클래스는 상속받아 기능을 확장하는 것에 초점을 둔다. 추상 클래스는 공통 속성을 상속하는 것이고 인터페이스는 어떠한 기능을 포함하고 싶을 때 사용하는 것이라는 설명이 가장 이해가 잘되는듯 추상 클래스 = 상속 인터페이스 ..

멋사/TIL 2023.05.26

230524 6주 3일차. 템플릿 메소드 패턴. 의존성 주입 DI

템플릿 메소드 패턴 템플릿 메소드 패턴이란?!?!?!?!? 상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에 만든다. 슈퍼클래스에서는 미리 추상 메소드 또는 오버라이드 가능한 메소드를 정의해두고 이를 활용해 코드의 기본 알고리즘을 담고 있는 템플릿 메소드를 만든다. 슈퍼클래스에서 디폴트 기능을 정의해두거나 비워뒀다가 서브클래스에서 선택적으로 오버라이드할 수 있도록 만든 메소드를 훅(hook) 메소드라고 한다. 서브클래스에서는 추상 메소드를 구현하거나, 훅 메소드를 오버라이드하는 방법을 이용해 기능의 일부를 확장한다. public abstract class Super { public void te..

멋사/TIL 2023.05.24