내일배움캠프TIL 24

스프링 이란

스프링!! 이해라도 해보자!!! 스프링이란?스프링은 특정 기술이 아니라 여러가지 기술의 모음이라고 생각하면 된다.스프링이라는 단어는 맥락에 따라 스프링 DI 컨테이너 기술, 스프링 프레임워크, 스프링 부트 나 프레임워크등을 모두 포함한 스프링 생태계로 사용 될 수있다.  스프링 프레임 워크핵심기술: 스프링 DI 컨테이너, AOP, 이벤트웹기술: 스프링 MVC, 스프링 WebFlux데이터 접근 기술: 트랜잭션,JDBC,ORM지원,XML지원기술 통합: 캐쉬,이메일,원격접근,스케줄링테스트: 스프링 기반 테스트 지원언어: 코틀린, 그루비 스프링 부트스프링을 편리하게 사용하도록 지원, 대부분 기본으로 사용단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를..

TIL 2024.05.20

정적 컨테츠, MVC, API

정적 컨테츠, MVC , API 이해라도 해보자!!!   드디어 스프링에 입문을 하게 되었다.스프링을 마주한 소감은 아직 생각했던거보다 훨씬 이해가 안된다.자바에서는 클래스와 상속을 이해하였을 때부터 자바에 재미를 붙이고 있어서 스프링을 배우는 것도 즐거울 거 같았다.그런데 아직 잘 모르겠다 자바를 할 때는 구조가 어렵다는 생각은 잘 안들었는데.. 스프링은 아직 실행되는 구조를 잘 모르겠다. 그래서 나의 성격성 구조를 이해하지 못하고 실행이 된다해도 만족 할 수 없기 때문에 가장 간단한 구조부터 하나씩 이해하려 노력하려 한다.정적 컨테츠정적인 콘텐츠 즉, 이미 완성이 되어있는 HTML과 같은 문서를 브라우저로 전달합니다. MVC MVC란 Model-View-Controller의 약자로, 소프트웨어 디자인..

TIL 2024.05.16

팀프로젝트 KPT

Keep - 현재 만족하고 있는 부분팀원 전체가 상대를 존중하는 마인드가 기본값으로 적용되어 있습니다.모르는 부분, 잘 안되는 부분, 프로젝트의 방향성을 꾸준히 소통해가며 전체적인 프로젝트의 퀼리티를 높일 수 있었다.맡은 부분을 어떻게든 열심히 다 해주시는 것이 좋았습니다.자유로운 식사시간수강생 상태를 입력 받는 부분을 NPE 고려해 짤 수 있어서 좋았다.해결할 사항이 있을 때 서로 의견 제시나 공유가 부담없이 잘 되어 좋았습니다.Exception을 따로 던지지 않고, 예외가 일어나는 부분을 따로 case로 빼서 처리하는 부분이 좋았다.수강생 관련 일부 메서드들이 코드 재사용성이 좋아 실제로 재사용을 많이 했습니다.끝까지 포기하지 않고 기능구현에 성공해낸 점Problem - 불편하게 느끼는 부분불편했다기..

TIL 2024.05.13

Enum 이해하기

enum!!! 이해라도 해보자Enumd이 필요한 이유String 타입은 어떤 문자열이든 입력 할 수 있기 때문에 문제가 발생할 상황이 많다.이 문제를 타입 안전성 부족 문제 라고 부른다.1. 값의 제한 부족: String으로 상태나 카테고리를 표현하면 잘못된 문자열을 실수로 입력할 가능성이 있다.(오타)2. 컴파일 시 오류 감지 불가: 이러한 잘못된 값은 컴파일 시에는 감지되지 않고, 런타임에서만 문제가 발견된다(디버깅 어려움)이런 문제를 해결하려면 특정 범위로 값을 제한해야한다.  예를 들어 어떤 머세드에서 String을 변수로 받는다면 어떤 문자열이든 받을 수 있기 때문에 자바 문법 관점에서는 어떤 문제도 없다.Enumd이란타입 안전 열거형 패턴 - Type-Safe Enum Patternenum(e..

TIL 2024.05.09

상속과 오버라이딩(Overriding)

오버라이딩!! 이해라도 해보자!! 필요한 이유부모 타입의 기능을 자식에서는 다르게 재정의 하고 싶을 수 있기 때문!! 오버라이딩이란부모에게서 상속 받은 기능을 자식이 재정의 하는 것을 메서드 오버라이딩(Overriding)이라 한다. 사용방법package extends1.overriding;public class Car {public void move() {System.out.println("차를 이동합니다.");}public void openDoor() {System.out.println("문을 엽니다.");}}부모클래스(Car)package extends1.overriding;public class ElectricCar extends Car {@Overridepublic void move() {Sys..

TIL 2024.04.30

인터페이스

인터페이스!!! 조금이라도 이해해보자!!! 인터페이스자바는 순수 추상 클래스(모든 메서드가 추상인 클래스) 를 더 편리하게 사용 할 수있는 인터페이스라는 기능을 제공한다.● 인터페이스의 메서드는 모두 `public` , `abstract` 이다. -> 굳이 적지않아도 자동으로 적용됨●메서드에 `public abstract` 를 생략할 수 있다. 참고로 생략이 권장된다. ●인터페이스는 다중 구현(다중 상속)을 지원한다. -->  인터페이스의 존재이유 사용방법public interface InterfaceAnimal { void sound(); void move();}public abstract 키워드 생략이 가능하다.인터페이스는 `class` 대신에 `interface` 로 선언하면 된다. `sound()..

TIL 2024.04.29

추상클래스

추상클래스!!! 이해라도 해보자!!! 추상클래스이름 그대로 추상적인 개념을 제공하는 클래스 이기 때문에 실체인 인스턴스가 존재하지 않는다.상속을 목적으로 사용하고 부모클래스 역할을 담당한다. 사용방법ex)abstract class AbstractAnimal {...}클래스를 선언할 때 앞에 abstract 키워드를 붙여준다.추상 클래스는 기존 클래스와 같다. 다만 new AbstractAnimal() 와 같이 직접 인스턴스를 생성하지 못하는 제약이 추간된 것이다. 추상 메서드이름 그대로 추상적인 개념을 제공하는 메서드 이기 때문에 실체가 존재하지 않고, 메서드 바디가 없다.상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 부모 클래스에 정의할 수 있다. 사용방법public abstract void s..

TIL 2024.04.27

상속 정복하기

상속!! 이해라도 해보자 개인과제로 계산기를 만들다 상속 관계를 만드는 곳에서 완전 막혀버렸다. 활용 할 수 없다는 것은 아직 손에 익숙하지 않기 때문일 수도 있지만, 내가 생각하기에는 이해가 부족하다!! 주말시간을 활용해 한번 이해해 보자. 상속이 필요한 이유 전기차와 가솔린차는 자동차(Car) 의 구체적인 개념이다. 반대로 자동차(Car)는 전기차와 가솔린차를 포함하는 추상적인 개념이다 . 그래서인지 잘 보면 둘의 공통 기능이 보인다. 바로 이동( `move()` )이다. 전기차든 가솔린차든 주유하는 방식이 다른 것이지 이동하는 것은 똑같다. 이런 경우 상속 관계를 사용하는 것이 효과적 이다. 상속관계상속은 객체 지향 프로그래밍의 핵심 요소 중 하나이다. 기존 클래스의 필드와 매서드를 새로운 클래스에..

TIL 2024.04.27

계산기 만들기

계산기를 프로그래밍 해보자 우선 과정을 거치때 마다 commit을 해주기 위해 인텔리제이와 깃허브를 연동해보자.  세팅에서 깃허브를 찾아준뒤 연동한다. 연동은 성공했지만 작은 문제가 생겼다.문제점깃허브의 default 는메인에 연결되어 있는데 나의 깃은 master 브런치에 연결되어 있어 커밋&푸쉬를 할때마다 브런치가 계속 생성되고 있다는 점, git checkout main 을 해도 main에 접근하지 못한 다는 점 해결법우선 해결을 하기 위해선 원인을 알아야 하기에 튜터님에게 질문을 해 보았다. 튜터님께서 왜 문제가 생긴지 이유를 설명해 주셨다.  이유: 지금 main으로 접근하지 못하는 이유가 깃허브에서는 main이라는 이름의 브렌치에 git init이 되어있고, 나는 master란 이름의 브런치에..

TIL 2024.04.26

별찍기 (하드버전)

그간 수많은 별찍기 경험으로 생각해낸 모양다이아몬드 가능하지 않을까? 라고 생각하던중 다른분이 백준에서 다이아몬드 문제를 발견하셨다.그래서 바로 도전하러 갔다.사실 별찍기를 하는게 크게 도움이 될까? 생각했는데 이번에 프로젝트 하면서 유동적인 변수를 함수로 만들 때이중 포문을 이해하고 있었더니 내가 원하는걸 바로 머릿속에 그릴 수 있다는 장점이 있었다.그래서 별찍기도 한번씩 감을 잃어 갈때 쯤 꼭 해봐야겠단 생각이 들었다.package practice.backjun.loop;import java.util.Scanner;public class Star4 { public static void main(String[] args) { Scanner scanner = new Scanner(Sys..