반응형
목록
간단하고 쉽게/JAVA (21)
[꼼꼼한 개발자] 꼼코더
💁🏻♂️ 소개 프로그래밍 언어를 크게 고급언어와 저급언어 2가지로 분류된다. 2가지의 차이점을 정말 간단하게 알아보자! ⚱️ 고급언어 (High-Level Language) 고급언어는 사람이 이해하기 쉬운 형태로 작성된 프로그래밍 언어이다. 예) C++, Java, Ruby 등 a = 12; b = a; c = a + b; 🥉 저급언어 (Low-Level Language) 저급언어는 컴퓨터가 이해하기 쉬운 형태의 언어이다. 예) 기계어나 어셈블리어 저급언어를 사용하면 하드웨어의 세부 사항을 직접 다룰 수 있어 최적화된 프로그램을 작성할 수 있다. section .data a db 12 ; 변수 a를 12로 초기화 section .bss b resb 1 ; 변수 b를 1바이트 크기로 선언 c resb 1..
🧹 간단 요약 DIP란 구체화의 의존하지 말고 추상화의 의존하는 것. 쉽게 말해 "구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻" (자세한 내용은 아래에) 🤷🏻 DIP란?(Dependency inversion principle) DIP는 상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안 되며 양쪽 모듈 모두 추상화에 의존해야 한다는 원칙이다. 즉, 의존성은 추상화에 의존해야 하며, 세부 구현에 의존해서는 안 된다는 것을 의미한다. 쉽게 말 해 "구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻" 🙋🏻♂️ DIP에 의거한 인터페이스 의존 방법 상위 수준 모듈은 하위 수준 모듈에 의존해서는 안 된다. 두 모듈은 모두 추상화에 의존해야 한다. 추상화는 세부 구현에 의존해서는 안 된다. ..
🧹 간단 요약 ISP란 인터페이스를 작은 단위로 분리하는 것이다. 즉 인터페이스를 계속 잘게 '잘' 나누어 분리하는 것이다. '특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다' -인프런 김영한 님 강의 속 내용- (자세한 내용은 아래에) 🤷🏻 ISP란?(Interface segregation principle) ISP는 클라이언트가 필요로 하는 인터페이스를 작은 단위로 분리하고 클라이언트가 필요로 하지 않는 기능에 대한 의존성을 제거하는 것을 강조한다. 🙋🏻♂️ ISP에 의거한 인터페이스 분리방법 클라이언트가 사용하는 기능에만 포함된 작은 인터페이스를 정의해야 한다 인터페이스는 클라이언트에게 필요한 최소한의 기능만 제공해야 한다. 클라이언트는 자신이 사용하지 않는 기능에 대한..
🧹 간단 요약 OCP란 확장에는 개방되어 있어야 하고 수정에는 폐쇄되어야 한다는 원칙을 의미 즉 새로운 기능이 추가되더라도 기존 코드를 수정하지 않고 확장할 수 있어야 한다. 정말 쉽고 자세히 다시 말하자면 "인터페이스와 추상화 등을 사용하여 다형성을 적용해 기능을 확장하고 코드 변경을 최소화하는 것이 개방 폐쇄의 원칙" (자세한 내용은 아래에) 🤷🏻 OCP란?(Open-Closed Principle) OCP는 소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에 대해서는 개방되어 있어야 하고 수정에 대해서는 폐쇄되어야 한다는 원칙을 의미한다. OCP의 아이디어는 기존의 코드를 변경하지 않고도 새로운 기능을 추가할 수 있어야 한다는 것이다. 즉, 기존의 코드는 확장에 대해서 개방되어야 하며, 새로운 기능이..
🤷🏻 스택 트레이스(Stack Trace)란? - 프로그램의 실행 과정에서 호출된 메서드들의 순서와 위치 정보를 나타내는 것. 스택 트레이스는 일반적으로 예외가 발생했을 때 예외가 발생한 지점부터 호출 스택의 상위 메서드들까지의 정보를 담고 있다. 👍🏻 장점 - 스택 트레이스는 예외가 발생한 원인을 추적하고 디버깅하는 데 매우 유용하다. 예외가 발생한 위치와 호출된 메소드들의 순서를 통해 프로그램의 실행 흐름을 파악할 수 있고 이를 통해 문제의 원인을 분석하고 해결할 수 있다. ✌🏻 사용방법 (2가지) try-catch 구문 사용함 스택 트레이스는 보통 예외 객체의 printStackTrace() 메서드를 호출하여 출력할 수 있다. ex) e.printStackTrace(); try-catch 구문 사용..
🧹 간단 정리 Integer : null 값 가능 int : null 값 불가능 👀 어떨 때 사용할까? 둘의 차이점은? Integer는 null을 허용하는 참조형이기 때문에 null값이 가능하다. 반면 int는 기본형(primitive type)으로 null값을 허용하지 않는다. 따라서 null 값이 발생할 수 있는 경우에는 Integer와 같은 참조형을 사용하고 그렇지 않은 경우에는 int와 같은 기본형을 사용하는 것이 좋다.
🫨 개요 개발 공부 중 JPA 메서드 반환값을 Optional을 반환값으로 사용하는 예제를 봤다. 찾아보니 "검색된 엔티티가 없는 경우 NullPointer 예외가 발생할 수 있어. Optional을 사용하여 null 체크하는 것이 좋다."라는 걸 확인했다" @Repository public interface RoleRepository extends JpaRepository { Optional findByName(String name); } 그러나 문득 이런 생각이 들었다 "그럼 모든 메소드의 반환값을 널 체크해주면 되지 않을까? 왜 그렇게 하지 않는 걸까?" 그에 관한 답을 찾아 아래에 정리해 보았다. 🫗 반환값을 Optional로 하는 경우 일반적으로 메서드의 반환값을 Optional로 해야 하는 경..
🙋🏻♂️ 간단 정리 동기 : 순차적으로 코드를 실행하는 방식 비동기 : 동시에 여러 작업을 처리하는 방식 🫱 동기(Synchronous) 동기는 순차적으로 코드를 실행하는 방식. 즉, 어떤 작업이 끝날 때까지 다음 작업을 실행하지 않는다. 따라서 순서대로 진행되기 때문에 결괏값이 예측 가능하고, 코드가 간단하고 직관적입니다. 🤝 비동기(Asynchronous) 비동기는 동시에 여러 작업을 처리하는 방식입니다. 어떤 작업이 완료될 때까지 기다리지 않고 다음 작업을 실행합니다. 이는 병렬적으로 진행되기 때문에 결괏값이 예측하기 어렵고, 코드가 복잡해질 수 있습니다. 🧹 결론 동기와 비동기는 아래와 같은 각각의 장단점이 있다. 따라서 어떤 방식을 선택할지는 상황에 따라 다르게 결정해야 한다. 동기는 코드가 ..