본문 바로가기

내일배움캠프 4기 스프링/내배캠 TIL📘

01. 25 TIL

728x90

1. 심화 프로젝트

발표

추가기능 구현 : 개인적으로 해볼 것

  • 검색 기능
    • 키워드 검색 : 페이징 목록 조회를 할때 검색 키워드를 입력해 검색하는 기능을 추가해보세요.
    • 판매자 검색 : 페이징 목록 조회를 할때 판매자명으로 검색하는 기능을 추가해보세요.
  • 포인트 기능
    • 포인트 조회 : 고객과 판매자는 포인트를 가진다. (최초 회원가입시 기본포인트 제공)
    • 상품 포인트 가격 : 상품들이 모두 포인트 가격을 가진다.
    • 포인트 결재 : 고객은 판매자의 상품을 구매할때 가격만큼 포인트가 차감된다.
    • 포인트 수신 : 판매자는 고객이 구매한 상품판매가 완료되면 포인트를 수신한다.
    • 포인트 추가 : 운영자는 고객 또는 판매자에게 포인트를 추가해준다.
  • 고객-판매자 대화 기능
    • 대화방 생성 : 판매가 시작될때 대화방이 생성된다.
    • 대화 메세지 전송기능 : 고객과 판매자가 판매건에 대한 대화를 나눈다.
    • 대화방 메세지 목록 조회 : 고객과 판매자가 나눈 대화목록을 조회할 수 있다.
    • 대화방 종료 : 판매가 완료될때 대화방이 중지되고 더이상 메세지 전송이 불가능하다.
  • 대용량 데이터 생성 및 테스트 후 개선
    • 성능측정 : DB에 대용량 데이터를 넣어보고 검색 및 페이징 쿼리 수행시간을 측정해보세요.
    • 성능개선 : 기능을 개선해서 검색 및 페이징 쿼리 수행시간을 단축시켜 보세요.

처음 접해보는 용어

1. 레디스 -> DB

2. 웹 소켓 -> 채팅 기능 구현에 필요

2. 코딩 테스트 입문

최댓값 만들기(2) : 테스트 케이스에서 값을 찾는 데 어려움을 겪었다.

테스트 케이스 7번의 경우를 통해 원소 범위의 중요성 및 초기화 값 설정의 중요성을 이해할 수 있었다.

8,9 번 해결 시도

1) 리스트를 생성하여 곱하기 결과를 모두 저장하고 그 중 최댓값을 스트림으로 추출하는 방법

return answerArray.stream().max(Comparator.comparing(x-> x)).orElseThrow();

결과 : 컴파일 에러

*Comparator 클래스

https://st-lab.tistory.com/243

 

자바 [JAVA] - Comparable 과 Comparator의 이해

아마 이 글을 찾아 오신 분들 대개는 Comparable과 Comparator의 차이가 무엇인지 모르거나 궁금해서 찾아오셨을 것이다. 사실 알고보면 두 개는 그렇게 어렵지 않으나 아무래도 자바를 학습하면서 객

st-lab.tistory.com

2) 구글링의 도움을 받아.. 원소를 크기순으로 정렬한 뒤, 가장 작은 값의 곱과 가장 큰 값의 곱을 비교하여 그 중 큰 값을 반환하는 메서드 작성 ~ 성공했지만, 아무래도 스스로 풀었다고 말하긴 어렵다.

3. 선발대 & 후발대 학습

1) JPA 연관관계 매핑 에러 잡기

2) 자바 - 객체 지향 프로그래밍 복습

-> 상속

- 생성자와 초기화 블럭은 상속되지 않고, 멤버만 상속된다

- 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다

- 자식 클래스는 하나의 부모 클래스에게만 상속받을 수 있다

( 상속받고 난 자식 클래스를 다시 상속한 손주 클래스의 방식으로 여러 상속 구현 가능 )

- 하나의 부모 클래스는 여러 자식 클래스에게 상속할 수 있다

 

-> 다형성

부모 클래스를 상속받은 자식 클래스 타입 객체가 부모 클래스 타입의 객체로도 사용되기도 하고, 자식 클래스 타입의 객체로도 모두 사용되는 다양한 상황이 가능한 것을 다형성으로 정의한다

하지만, 부모 클래스 타입 객체는 자식 클래스 타입 인스턴스로 사용할 수 없다

ex) Parrot parrot = new Bird(); (X) -> Bird bird = new Parrot(); or Parrot parrot = new Parrot(); (O)

+ 오버로딩 vs 오버라이딩

(1) 오버로딩(재정의)

한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것

- 메서드 이름이 같아야 한다

- 매개변수의 개수 또는 타입이 같아야 한다

+ 오버로딩된 메서드의 반환 타입은 아무 상관없다(오로지 매개변수로 오버로딩 여부를 구별할 수 있다)

(2) 오버라이딩(덮어쓰기)

부모 클래스의 메서드를 상속받은 후 자식 클래스에서 그 내용을 변경해 사용하는 것

- 오버라디딩 될 메서드는 부모 클래스의 해당 메서드와 이름, 매개변수, 반환타입이 같아야 한다 ~ 메서드 시그니처가 같아야 한다

 

-> 추상화

* 추상 클래스의 미구현된 부분은 오버라이딩으로 꼭 구현해야 한다

* 추상 클래스는 그 자체로는 객체 생성을 할 수 없지만, 자식 클래스에서 미완성 부분을 전부 오버라이딩했다면, 추상 클래스 타입으로 객체 생성이 가능하다 + 다형성

* 인터페이스를 구현(Implement)한 클래스는 인터페이스의 메서드와 그 클래스의 메서드의 기능이 항상 같다 ~

인터페이스의 미구현 메서드(추상메서드)를 구현한 클래스에서 오버라이딩해야 하므로

* 인터페이스를 구현받아 클래스의 기능이 다 구현이 되었다면, 인터페이스 타입으로 해당클래스의 객체 생성이 가능해진다. + 다형성

추상 클래스는 추상 메서드, 생성자, 필드, 일반 메서드를 모두 포함할 수 있으나, 인터페이스는 추상 메서드와 상수만 포함할 수 있다.

 

3) Getter/ Setter

-> setter : 클래스의 객체를 활용해 값을 저장하므로, 작성 시 별도의 반환타입은 없다.

-> getter : 클래스 안의 인스턴스에 할당되어 있는 값을 접근자 메서드를 통해 조회하는 것

4. CS 특강 학습

내배캠 독스에 새로 생긴 CS 특강 정리란을 통해 유용한 깃허브를 여럿 알게 되었다. 이를 꾸준하게 보면서 다가올 면접에 대비하자

 

즐겨찾기한 레포지토리 : https://github.com/ksundong/backend-interview-question

 

GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질

백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문, 인터넷 참고한 질문(CC BY-NC) - GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문,

github.com

5. SQL 남은 강의 학습

프로젝트 시작 전, 제대로 듣지 못한 남은 SQL강의를 학습했다.

 

계속 거슬렸던 오류 : 권한을 제대로 읽지 못하는 오류

구글에 나와있는 방법으로 해결이 되긴 하지만, 다른 프로그램을 구동할 때 영향을 끼치는 바람에 새로운 방법을 찾았다.

MySQL workbench 8.0.20으로 실행하면 문제없이 진행 가능하다.

 

참고

https://www.youtube.com/watch?v=iNvYsGKelYs

Youtube 코딩애플, "index가 뭔지 설명해보세요"

 

728x90