분류 전체보기

    [TIL] Day 1

    오늘(8월 2일)부터 그토록 고대하던 데브 코스를 시작했다. 교육과정 소개 중 눈길을 끌었던 것들이 많이 있었다. 그중 하나인 TIL을 오늘부터 작성해보려고 한다. 개인적으로 TIL은 꾸준함이 굉장히 중요하다고 생각하다. 지금은 이렇게 밤늦게라도 작성하지만, 나중에 나는 나태해질 수 있으니 이 글을 보고 정신 차려 12월까지 쭈욱 진행해나갔으면 좋겠다. TIL이란? Today I Learned의 약자로 오늘 내가 공부하거나 배운 것을 기록하는 용도다. 강의를 들으면서 나에게 부족하고 추가로 공부해야 할 필요성을 느낀 부분을 중점으로 적겠습니다. TIL 1. Build Tool 현재 사용하는 Framework가 나오기 전까지 개발자분들은 직접 코드를 빌드하고 실행시켰다고 한다. 이것은 매우 불편하고 귀찮은..

    [Java] Solid란?

    Solid를 쓰는 이유? 객체지향 설계가 더 쉬워지고, 유지보수와 확장도 쉬워짐 1. SRP(Single Responsibility Principle) : 단일 책임 원칙 "어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다." - 하나의 객체가 하나의 책임을 갖는 것 - 즉, 하나의 객체가 자신이 할 수 있는 것과 해야 하는 것만 수행할 수 있도록 설계되어야 한다! SRP를 지켜야 하는 이유 응집도와 결합도 관점에서 접근해야 한다. 응집도 - 한 프로그램 요소가 얼마나 뭉쳐있는가를 나타내는 척도. - 응집도가 높은 클래스는 하나의 책임에 집중하고, 독립성이 높아져 재사용이나 기능의 수정, 유지보수가 용이하다. 결합도 - 클래스 간의 상호 의존 정도. - 결합도가 낮으면 클래스간의 상호 의존성이 ..

    [Git] 로컬 파일 강제로 덮어쓰기

    다른 환경에서 작업을 하고 Git에 push를 하면 기존에 사용하던 환경에서는 다시 pull을 받아와야 한다. 나는 이전까지 기존에 사용하던 폴더를 삭제하고 다시 clone을 하는 불편한 방식을 사용했었다. 하지만, 단 2개의 명령어로 깃에 올라가 있는 마지막 커밋으로 현재 환경에 덮어쓸 수 있다. git fetch --all git reset --hard origin/master 이 두 개의 명령어만 치면 덮어쓰기 완료! 추가로 현재 사용하는 브랜치가 master 브랜치가 아니라면 현재 사용하고 있는 브랜치명을 master 대신 입력하면 된다.

    2021년 상반기 회고록

    작년에 다니던 기업을 그만두었을 때가 딱 지금에서 1년 전이다 그때는 금방 취업되겠지~~ 라는 마음으로 당차게 기업을 뛰쳐나왔었는데 1년 동안 적게는 수십 개, 많게는 100개 넘게 서류를 썼고 결과는 아직 백수다!! 작년 하반기에는 메이저 금융, 은행, 기업들 서류를 꽤나 괜찮게 통과했기 때문에 '아 난 괜찮은 사람이다'라는 생각을 했다. 서류를 통과해도 항상 코딩 테스트라는 벽이 있었기 때문에 면접을 많이 보지는 못했다. 하지만, 코딩 테스트가 준비되어 있지 않은 상태여서 거의 다 떨어졌다. 떨어질 때마다 '아 나는 아직 준비한 지 얼마 안 됐으니 괜찮아!'라는 자기만족의 위로를 계속 해왔던 것 같다. 그렇게 준비하던 중 올해 초반 드디어 코테를 통과하는 경우도 있었다. 하지만... 면접에서 처참한 ..

    [Java] 다형성, 캐스팅, 추상 클래스, 추상 메서드

    다형성이란? 동일한 타입을 사용하지만 다양한 결과가 나오는 성질 실행 도중에 어떤 객체를 필드로 사용하느냐에 따라 결과가 달라짐 자동 형변환을 이용해 필드값을 변경하면 메서드를 수정 안 해도 다양한 결과를 얻을 수 있음 ex) 컴퓨터는 저장소, 그래픽 카드 등의 객체를 보유하고 있다. 하지만, 사용하면서 부품을 교체해가면서 사용한다. 새로운 부품은 기존과 동일하지만 실행 결과는 더 좋게 나온다. 캐스팅(Casting) : 강제 타입 변환 부모 타입을 자식 타입으로 변환하는 것 자식 타입이 부모 타입으로 자동 형변환한 후, 본래 타입으로 변환할 때 본인의 필드나 메서드 사용이 가능해짐 추상 클래스 클래스들의 공통 특성을 추출해 선언한 클래스 실체 클래스와 상속 관계 추상 클래스가 부모, 실체 클래스가 자식..

    [Java] 상속, final, 자동 형변환

    상속이란? 부모 클래스의 필드와 메서드를 자식 클래스에게 물려주는 것 필드와 메서드를 재사용해 코드의 중복 줄여줌 부모 클래스만 수정하면 상속받는 자식 클래스도 영향받기 때문에 수정 횟수도 최소화됨 부모 클래스에서 private로 필드나 메서드를 선언하면 상속이 불가능함 부모 클래스와 자식 클래스가 다른 패키지에 존재하면 기본 접근 제한으로 선언된 필드와 메서드는 상속 대상에서 제외됨 자식 객체 생성 시 부모 객체가 먼저 생성된다. 부모 생성자는 자식 생성자의 제일 첫 줄에서 호출된다.(아래의 super()) class BJ { String name; BJ(String name) { this.name = name; } } class Temp extends BJ { int num; Temp(String n..

    [Java] 객체지향 프로그래밍(OOP)이란?

    객체지향 프로그래밍이란? 부품에 해당하는 객체들을 먼저 만들고, 프로그램을 객체로 구성하는 것 프로그램 규모가 커지면서 생각한 해결책이 '프로그램을 작게 나눠서 만들고, 합치자!'이다. 각각의 객체는 맡은 작은 기능을 수행하고, 서로 협력해 큰 규모의 프로그램이 되는 것이다. 이 과정에서 굉장히 많은 객체가 존재할 수 있기 때문에 객체를 서로 구분해야 한다. 결국, 각 객체들에게 기능을 제공하는데 어떤 책임을 부여하고 어떻게 협력을 할지 정하는 것이 객체지향 프로그래밍이다! 객체란? 자신의 속성을 가지고 있고 다른 친구들과 식별 가능한 것으로 작은 기능을 수행한다. 프로그램을 만들 때 객체를 서로 구분해야 하는데, type(형)으로 구분한다. 타입을 만든다는 것은 클래스를 만드는 것과 같다. ex) St..

    [Java] Java의 메모리 구조, NullPointerException, String

    메모리 사용 영역 1. 메서드 영역 코드에서 사용되는 클래스들을 클래스 로더로 읽음 정적(static) 변수, 정적 메서드 JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역 2. 힙 영역 객체와 배열이 생성되는 영역 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조 참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 쓰레기로 취급하고, JVM은 GC를 실행시켜 힙 영역에서 자동으로 제거함 3. 스택 영역 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당됨 메서드를 호출할 때마다 프레임을 추가(push)하고 메소드가 종료되면 해당 프레임을 제거(pop)하는 동작을 수행한다. 기본 타입 변수는 스택 영역에 직접 값을 가지고 있지만, 참조 타입 변수는 값이 아니라 힙 영역이나 메소드 ..