본문 바로가기

분류 전체보기

(330)
Netty의 이벤트 루프 이해하기 이벤트 루프 기반 프레임워크 동작 방식은 단일 스레드 이벤트 루프와 다중 스레드 이벤트 루프로 나눌 수 있습니다.Netty 동작 방식 이해를 위해 두 가지 차이점을 비교해보겠습니다.   단일 스레드 이벤트 루프이는 이벤트를 처리하는 스레드가 하나인 상태를 의미합니다. 이벤트 루프의 구현이 단순하고 예측 가능한 동작을 보장합니다. 하나의 스레드가 이벤트 큐에 입력된 이벤트를 처리하므로 이벤트가 발생한 순서대로 처리할 수 있습니다.단점 1 - 다중 코어 CPU를 효율적으로 사용하지 못함단점 2 - 이벤트 메서드에 처리 시간이 오래 걸리는 작업이 있는 경우 다음 이벤트 처리 지연 발생대표적인 프레임워크 -  Node.js 다중 스레드 이벤트 루프이벤트를 처리하는 스레드가 여러개입니다.  단일 스레드 이벤트 루..
JavaDoc 참고 내용 주석문을 잘 작성하는 방법은?주석문이 없어도 이해할 수 있도록 클래스, 메소드, 변수 이름을 작성한다주석문은 최소한으로 작성한다JavaDoc 주석문을 잘 작성한다(클래스 설명, 메소드 설명) JavaDoc 주석문에서 사용하는 태그들annotation설명@version 클래스나 메소드의 버전@author작성자@deprecated더이상 사용되지 않거나, 삭제될 예정@since언제 생성, 추가, 수정되었는가?@see외부 링크나 텍스트, 다른 필드나 메소드를 링크할 때 사용@linksee와 동일한 기능. 링크 제공@exception발생할 수 있는 Exception 정의 예시 /** * ObjectBox를 담기 위한 클래스 * * @author amung(amung * @since 2024.06 * @versi..
Lombok 의존성 설정 시 왜 compileOnly, annotationProcessor로 설정되는걸까? - gradle 의존성 구성 정보 알아보기 gradle 3.0의 Dependency Configurations참고로 gradle 3.0 이전 버전과의 차이는 다음과 같습니다compile → implementation / apitestCompile → testImplementationdebugCompile → debugImplementationprovided → compileOnlycompileOnly : compile 시점에만 필요한 의존성을 정의하는 데 사용. 사용하려는 라이브러리가 컴파일 타임에만 필요하고, 런타임 시점에는 필요하지 않을 때 사용합니다. compileClassPath에만 추가되어 결과적으로 build 결과물의 크기를 줄일 수 있습니다.(JAR파일에 포함되지 않기 때문). (ex)LombokruntimeOnly : 라이브러리가 ..
템플릿 메소드 패턴 만약에 여러 Controller 코드를 짜는데1.초기화 - 정해져있는 코드2.실행     - 매번 다르게 작성하는 코드3.마무리 - 정해져있는 코드라는 순서로 작성해야 한다초기화, 마무리하는 코드는 고정된 코드이고, 실행하는 코드만 다르게 작성하고 싶을 때 어떻게 할까?상속과 추상메소드를 이용하면 된다. 이를 이용한 것이 템플릿 메소드 패턴이다.템플릿 메소드 패턴의 특징1. 원하는 순서대로 코드가 실행되도록 강제할 수 있다. (아래의 execute()참고)package com.example.fw;public abstract class Controller2 { /** * 내가 가지고 있는 메소드를 호출하는데 * 어떠한 순서를 가지고 있다 * 이런 메소드를 템플릿 메소드라고 한다 ..
Scheduler 관련 내용정리 SchedulerScheduler를 사용하면 정해진 시간마다 특정 동작을 수행할 수 있다Scheduler를 구현하기 위한 대표적인 방법 2가지Spring Framework에서 제공하는 SchedulerQuartz 라이브러리1. Spring Framework에서 제공하는 Scheduler적용 시 장점:Scheduler는 기본적으로 Spring Boot에 포함되어 있기 때문에 추가적으로 Gradle에 의존성을 추가할 필요없이 Application 클래스에 @EnableScheduling를 추가하여 Scheduler를 활성화할 수 있다스케줄러를 사용하면 직접 스레드를 관리하지 않아도 된다2. Quartz 라이브러리적용 시 장점 : Spring Framework의 Scheduler보다 정교하게 Job Sched..
유효성 검사 / 데이터 검증 (Validation) Spring boot 2.3 버전부터는 starter-validation 라이브러리를 추가해야한다.Validation 관련 어노테이션- @Size : 문자의 길이 조건- @NotNull : null 값 불가- @NotEmpty : @NotNull + ""값 불가- @NotBlank : @NotEmpty + ""값 불가- @NotBlank : 값이 null인지를 체크함과 동시에 공백인지 여부도 확인해서 유효성 검사를 한다.(LocalDateTime이나 int 타입에서는 사용 불가) - @Past : 과거 날짜- @PastOrPresent : @Past + 오늘 날짜- @Future : 미래 날짜- @FutureOrPresent : @Future + 오늘 날짜 - @Pattern : 정규식을 통한 조건 - ..
MyBatis 참고사항(XML 파일 관련) Mapper interface에 어노테이션으로 쿼리를 작성하는 방식 대신XML문을 이용하여 쿼리를 수행하는 구조를 작성해보고자 함. XML 파일에 쿼리를 작성해본적은 있지만 아무것도 없는 상태에서 구조를 만드는 건 처음이라 어려움이 있다.... XML 저장 위치:저장 방법은 두 가지가 있다.1. Mapper 인터페이스가 저장된 곳에 xml 파일을 저장시킨다2. 'src/main/resources' 위치에 Mapper 인터페이스가 저장된 패키지명을 폴더 경로로 만들어준다. XML 파일 명 : XML 파일을 만들 때 정해진 규칙은 따로 없다. 그렇지만 가능하면 Mapper 인터페이스와 같은 이름을 이용하여 가독성을 높여주면 좋다. XML 파일 살펴보기 XML 도입부의 헤더와 doctype이다. 태그는 해당 ..
UML 표기법 + 는 publicgetOne은 메소드 이름괄호 안에 있는 것은 매개 변수콜론(:) 뒤에는 리턴 type   public class MathBean { public void printClassName(){ System.out.println("MathBean"); } public void printNumber(int number){ System.out.println(number); } public int getOne(){ return 1; } public int plus(int x, int y){ return x + y; }}