로그 레벨은 로그 메시지에 포함된 메시지의 중요성과 긴급성에 대한 대략적인 정보라고 할 수 있다. 치명적인 정도에 따른 순서는 다음과 같다. FATAL ERROR WARN INFO DEBUG TRACE FATAL 응용 프로그램의 중요한 비즈니스 기능 중 하나가 더 이상 작동하지 않는 상태에 진입했을 때 혹은 전체 프로그램이 비즈니스 기능을 수행하지 않을 때 알려주는 로그 수준이다. 데이터베이스와 같은 중요한 저장소에 연결할 수 없는 경우 이에 해당된다. ERROR 응용 프로그램이 하나 이상의 기능이 제대로 작동않아 일부 기능이 올바르지 않게 작동하지 않을 때 사용한다. WARN 예기치 않은 일이 발생했음을 나타내는 로그 레벨이지만, 응용 프로그램이 실패했다는 것을 의미하지는 않는다. 예기치 않은 상황에서..
REST는 Representational State Transfer의 약자로 아키텍처 스타일이다. 아키텍처 스타일은 반복되는 문제 상황을 해결하는 도구이다. 이와 유사한 말로 아키텍처 패턴이 있는데 이는 반복되는 아키텍처 디자인을 의미한다. REST는 웹 서비스에서 자주 사용되는 HTTP 위에서 느슨하게 결합되는 애플리케이션 설계를 위한 스타일이다. REST 제약 조건 REST 아키텍처는 6가지 제약조건으로 구성된다. 1. Uniform Interface 2. Client-Server 3. Stateless 4. Casheable 5. Layered System 6. Code on demand (선택) 이 제약조건을 따르는 API를 RESTful API라고 한다. Uniform Interface 인터페이..
@SpringBootApplication spring initializr로 프로젝트를 생성하고 스프링부트 프로젝트를 하다보면 메인 메서드위에 @SpringBootApplication이라는 어노테이션을 볼수 있다. @SpringBootApplication은 스프링부트를 설정하는 클래스인 것을 의미하고, 스프링은 이 어노테이션이 달린 클래스가 위치하는 패키지를 베이스 패지키로 간주한다. 스프링의 중요한 기능 중 하나는 의존성 주입 컨테이너이다. 스프링은 베이스 패키지를 기준으로 하위 패키지에서 자바빈을 찾아 스프링 의존성 주입 컨테이너 오브젝트 ApplicationContext에 등록하고 사용한다. @Component @Component는 스프링에게 자바빈으로 등록할 클래스를 알려준다. @ComponentS..
JSON은 속성-값의 쌍으로 오브젝트를 표현하는 문자열이다. 오브젝트는 메모리에 할당된 일종의 데이터이다. JSON에는 Javascript라는 말이 있는데 자바스크립트 언어로부터 파생되어 자바스크립트의 오브젝트를 생성하는 형식과 같아 이런 이름이 붙여졌다. https://sdardew-valley.tistory.com/entry/TIL-%EC%A7%81%EB%A0%AC%ED%99%94%EB%9E%80 [TIL] 직렬화란? 공부를 하는 도중에 직렬화란 말이 많이 나와서 정리해본다. 🌱 직렬화(Serialization)? 메모리에 있는 객체를 바이트 스트림으로 바꾸는 것이다. 🌱 직렬화를 하는 이유? 디스크에 저장을 하거나 sdardew-valley.tistory.com 위의 글을 보면 직렬화와 역직렬화라는..
개발을 하다보면 프론트엔드와 백엔드가 구분되어있는 것을 확인할 수 있다. 이를 Decoupled Architecture이라고한다. Decoupled Architecture를 알아보기 전에 전통적인 웹사이트 아키텍처를 이해해야 한다. 전통적인 아키텍처 - Monolithic Architecture Monolithic Architecture의 구조는 아래와 같다. 이 구조는 많은 기능이 동일한 코드베이스 내에 있다. 이 구조에서는 동일한 코드베이스 내에 있는 기능을 통해서 작업을 처리하게 된다. 코드베이스란? 특정 소프트웨어 시스템, 응용 소프트웨어, 소프트웨어 구성 요소를 빌드하기 위해 사용되는 소스 코드의 모임 따라서 이런 단일 소프트웨어는 백엔드 로직과 웹 사이트 프론트엔드 렌더링까지 모두 담당하게 된..
다형성 다형성 다양한 타입의 객체가 같은 메시지를 통해 다양한 방식으로 동작하는 것 다른 언어에서는 메서드 오버로딩, 서브타이핑 등으로 다형성을 지원한다. Go에는 서브타이핑, 오버로딩이 없다. 대신 Go에서는 인터페이스를 통하여 다형성을 지원한다. 오버로딩 같은 이름의 함수이지만 매개 변수 등의 signature를 다르게 하여 정의한 것 서브타이핑 상위 타입을 하위 타입으로 대체할 수 있는 것 인터페이스는 메서드 signature의 묶음이다. Go는 이런 메서드에 따른 동작에 따라서 인터페이스와 is-a 관계를 형성한다. is-a 상속 관계이다. "그랜저는 자동차이다"는 is-a 관계이다. 그랜저는 자동차의 속성을 모두 가지고 있다. has-a 소유 관계이다. "자동차는 바퀴를 가지고 있다"는 is-a..
@Qualifier을 사용하여 조건을 추가했을 때 문자열의 오타를 잡아주지 못하기 때문에 의도했던 대로 적용이 되지 않을 수도 있다. 이를 위해서 따로 annotation을 만드는 방법이 있다. 1. Annotation 클래스를 생성한다 2. 클래스를 작성한다 @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented @Qualifier("mainDiscountPolicy") public @interface MainDiscountPolicy { } ..
"expected single matching bean but found *"빈을 주입할 때 여러개의 빈이 조회가 되면 에러가 발생한다. 해결 방법은 3가지가 있다. @Autowired 필드명 @Qualifier @Primary @Autowired 필드명 @Autowired에서 여러 빈이 매칭되면, 필드의 이름으로 매칭한다. 변경전 코드에서 DiscountPolicy가 여러개 매칭되어 문제가 발생하였다. DiscountPolicy의 필드명 discountPolicy를 매칭할 빈의 이름으로 변경을 해준다면 문제가 해결된다. @Qualifier @Qualifier은 구분할 수 있는 조건을 하나 더 추가하는 방법이다. 겹쳐지는 빈들 대상으로 @Qualifier을 사용하여 추가적인 이름을 붙여 준다. 필드 앞에..
1. IntelliJ의 Preferences에 들어간다 맥으로 ⌘ , 을 누르면 바로 preferences에 들어갈 수 있다. 2. Plugins에 들어가서 Lombok을 설치한다 설치가 되면 Installed에 Lombok이 있다. 3. Enable annotation processing을 킨다 4. [Apply] 버튼을 누른 다음 [OK] 버튼을 누른다 IntelliJ에서 Apply 버튼을 꼭!! 눌러주도록 한다. 롬복을 적용한 결과 확인하기 @Component @RequiredArgsConstructor // final 변수를 사용하여 생성자를 생성 public class OrderServiceImpl implements OrderService { private final MemberReposito..
싱글톤 패턴 싱글톤 패턴을 따르는 클래스는, 생성자가 여러번 호출되어도 실제로 생성되는 객체는 하나이고, 생성된 하나의 객체가 호출되는 패턴이다. 파이썬의 모듈은 싱글톤이고 자바에서는 생성자를 private으로 선언하여 구현할 수 있다. class Singleton { private static Singleton instance; private Singleton(){ } public static Singleton getInstance(){ if(instance=null){ instance=new Singleton(); } return instance; } public void call() { System.out.println("싱글톤 객체 호출"); } } 자바에서 구현한 싱글톤 패턴의 클래스이다. 특징..
- Total
- Today
- Yesterday
- solidity
- Kotlin
- postman tests
- git
- 코딩테스트
- Squash and merge
- hashcode
- java
- python3
- postman collection
- DGS Framework
- 1차 인터뷰
- 코틀린
- postman
- Kotlin In Action
- 주생성자
- graphql
- string
- 네이버 2022 공채
- pm.test
- 2차 인터뷰
- github
- Basic Type
- Python
- 확장 함수
- downTo
- pm.expect
- squash merge
- mysql
- go 특징
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |