TIL 44

면접 피드백, 추가 공부할 것 정리

객체지향 프로그래밍네가지 특징 - 캡슐화- 추상화- 상속- 다형성다섯가지 원칙 (SOLID)- 단일 책임 원칙- 개방 폐쇄 원칙- 리스코프 치환 원칙- 인터페이스 분리 원칙- 의존관계 역전 원칙  RESTful한 API를 설계하는 장점URL로 해당하는 자원을 표현하고메소드로는 행동을 표현한다협업, 클라이언트의 입장에서 규격이 정해져있어 용이하다+ 단점은?+ 어떤 메소드로 이뤄져 있는지 Setter 사용 지양 이유필드가 많아지는 경우 객체의 상태 변화를 추적하기 어려움불변성 RDBMS, NoSQL+차이점 정리+장단점 정리 이번 과정 목표 한번씩 정리할것Java 코드가 실행되는 과정을 설명할 수 있다JVM 구조를 정리할 수 있다코드와 메모리를 연관 지어 설명할 수 있다스트림의 이해와 스트림의 사용법 익히기O..

TIL 2024.08.30

Cannot add or update a child row: a foreign key constraint fails Error

https://github.com/everydayspring/spring-jpa-scheduler GitHub - everydayspring/spring-jpa-schedulerContribute to everydayspring/spring-jpa-scheduler development by creating an account on GitHub.github.com 프로젝트 진행중 새로운 Entity 추가 후 발생한 에러 새로운 테이블을 생성할 때 참조받는 테이블의 데이터가 이미 삽입되어 있어서 발생한 오류였다 전체 테이블을 drop하고 재실행 하니 오류가 나지 않았다

TIL 2024.08.29

프로그래머스 알고리즘 문제풀이 달리기 경주 (시간 초과)

https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음 작성한 코드import java.util.*;class Solution { public String[] solution(String[] players, String[] callings) { List list = Arrays.asList(players); for(String calling : callings) { int index ..

TIL 2024.08.28

면접 준비

RESTful한 API를 설계하는 장점은?- HTTP Method를 사용한다(GET, PUT, POST, DELETE 등)- HTTP 프로토콜의 표준을 최대한 활용하기 때문에 HTTP의 추가적인 장점을 함께 가져갈 수 있다- HTTP에서는 Stateless 즉, server가 client의 상태를 유지하고 있지 않기 때문에 응답과 요청이 독립적이고, 서버의 확장성이 높다- client의 요청에 세션, 쿠키 등의 방법으로 상태를 유지한다 적절한 관심사 분리가 필요한 이유는?- 프로그램의 유연성을 높일 수 있다 Setter를 무분별하게 사용하면 안되는 이유는?- DTO 같은 경우 전송 객체이기 때문에 데이터가 변경되지 않는다는 것이 보장되어야 한다, 이러한 경우에 Setter의 사용은 굉장히 위험하다  No..

TIL 2024.08.26

프로그래머스 알고리즘 문제풀이 햄버거 만들기 (시간 초과)

https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제가 길게 적혀있긴 하지만 로직적으로 복잡한 문제는 아니다.문제는 시간초과class Solution { public int solution(int[] ingredient) { int answer = 0; StringBuilder sb = new StringBuilder(); for(int n : ingredient) { sb.append..

TIL 2024.08.22

Java 메모리 영역

JVM 메모리 공간 (Runtime Data Area) MethodJVM이 동작해서 클래스가 로딩될 때 생성Static 영역이라고도 함프로그램이 실행중이라면 어디서든 언제든 접근 가능Class와 Interface에 대한 runtime 상수 풀, 멤버 변수, Static 변수, final, Constructor, MethodStack원시 자료형, 지역변수, 매개변수LIFOThread별로 생성됨Method가 호출 될 때 메모리에 할당, 종료시 삭제Heap참조 자료형, 인스턴스, 배열메모리 정리는 가비지 컬렉터에 의해 이뤄짐

TIL 2024.08.21

오버로딩 (Overloading), 오버라이딩 (Overriding)

오버로딩 (Overloading) : 과적하다 메소드명은 동일하지만 매개변수의 갯수나 타입이 다름public void eat() { System.out.println("냠냠");}void eat(String str) { System.out.println(str + "냠냠");}String eat(String str, int num) { System.out.println(num); System.out.println(str + "냠냠"); return "배불러";}void eat(int num) { System.out.println(num);} 오버라이딩 (Overriding) : 재정의부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의메소드명, 매개변수, 반환 값이 모두 같음

TIL 2024.08.21

Spring의 세가지 키워드 IoC, PSA, AOP

IoC (Inversion of Control) : 제어의 역전강한 결합을 약한 결합으로 변경한다강한 결합이란? 개발자가 직접 생성하는 방식의존성 주입을 통해 강한 결합을 약한 결합으로 바꿀 수 있다 https://everyday-spring.com/583 IoC와 DIIoC (Inversion of Control) : 제어의 역전, 설계원칙DI (Dependency Injection) : 의존성 주입, 디자인패턴 비슷한 기능을 하는 객체로 변경을 하는 경우!강하게 결합되어 있다면 의존하는 객체의 코드도 수정everyday-spring.com PSA (Portable Service Abstraction) : 휴대용(?) 서비스 추상화서비스를 추상화하여 복잡한 로직은 숨기면서 개발자에게 편의를 제공한다@T..

TIL 2024.08.19