멋사 40

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

[Intellij] no suitable driver found for jdbc 오류

인텔리제이에서 db 연결을 위해 sqlite-jdbc.jar 파일을 추가했는데 계속 db 연결이 안되고 no suitable driver found for jdbc 오류가 발생했다. 프로젝트를 잘못 만든게 문제인가 싶어서 스프링 프로젝트로 진행하고 있던걸 JavaFX 프로젝트로 다시 생성하고 코드 복붙한담에 File - Project Structure - Libraries에서 다운받은 jar 파일을 추가해주고 다시 실행해보았는데 또 같은 오류가 발생했다... (참고로 jar 파일 추가할 때 main 부분에 추가해주었다.) 근데 처음 추가했을 때 External Libraries 목록에 추가한 jar 파일이 보이지 않았다 근데 여러번 올렸다 내렸다 해서 성공했다는 사람들이 있어서 다시 같은 작업을 반복했더..

멋사 2023.05.31

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