본문 바로가기
반응형

전체 글69

[Why?] BufferdReader 반복 생성 시 에러 1. BufferdReader를 반복문 안에서 매번 생성해서 입력받게끔 구현. 2. 입력은 한꺼번에 받게 끔 3. NumberFormatException 발생 (21번 째 줄) 4. why??? 5. but... 직접 한줄 한줄 씩 입력할 경우에는 에러 발생 X 1. 반복문 위에서 BufferdReader 객체 하나만 생성 2. 입력은 한꺼번에 받게 끔 3. 정상 작동 4. 얘는 왜? BufferdReader의 경우, 입력이 있을 때 마다 버퍼로 해당 문자를 전송한다. readLine()을 통해 문자를 읽어올 때, 버퍼에 있는 개행문자를 기준으로 읽어온다. (즉, 한줄 씩 읽어옴) 만약 반복문 마다 BufferdReader 객체를 새로 생성하면, 기존의 버퍼에 있는 값이 없어진다. 즉, 입력값을 한번에 .. 2019. 8. 30.
[Network] 포트(port)/소켓(socket) 1. Host 네트워크 주소(IP주소)가 할당된 노드를 호스트(Host)라고 한다. 스마트폰,노트북,데스크탑 등 인터넷에 연결되어 있으면 다 호스트(Host)라고 볼 수 있다. 즉 호스트끼리 데이터를 주고받는 것 정확히 말하면, 호스트 내의 다양한 프로세스들 끼리 데이터를 주고받는 것. 즉, 데이터는 프로세스레벨에서 주고받는 것 2. Port 자, 데이터는 호스트안의 프로세스 레벨에서 데이터를 주고받는다고 했다. 그러면 데이터가 네트워크를 타고 목적지 호스트에 도착했다고 끝일까? 아니다. 해당 호스트가 가지고있는 여러 프로세스 중 실제로 데이터를 받아야 하는 특정 프로세스에게 데이터를 전달해야한다. 이때 필요한 것이 포트(Port)이다. 즉, 포트(Port)란 네트워크를 통해 데이터를 주고받는 프로세스를.. 2019. 8. 24.
[Intellij] 프로그램 실행 시, 콘솔 로그에 Running 정보 뜨는 경우(Executing task '.main()'...) gradle 프로젝트 생성 후, 프로그램 실행 시 위와 같이 콘솔 로그가 보이는 경우 없애는 방법은 다음과 같다. File -> Setting -> Build, Execution, Deployment -> Build Tools -> Gradle -> Runner 에서 Delegate IDE build/run actions to Gradle 체크 해제 참고 : https://intellij-support.jetbrains.com/hc/en-us/community/posts/360003473380-Intellij-2019-1-Disable-Logging-In-Console-When-Program-Is-Running 2019. 8. 6.
[Spring] @RestControllerAdvice 서버단에서 로직을 처리하는 과정에서 발생하는 예외를 통합관리하고, 그 결과를 클라이언트에 반환해준다. 설정방법 @RestConroller가 붙어있는 api컨트롤러에서 발생하는 예외를 캐치하겠다는 의미 구현부 클래스 내부의 메서드들은 특정 Exception에 대해 처리하는 로직이 들어있다. @ExceptionHandler(CannotUpdateException.class) 는 CannotUpdateException (직접 만든 RunTimeException)이 발생했을 경우, 해당 메서드를 실행하겠다는 의미이다. @ResponseStatus 는 말그대로 응답헤더의 Http Status Code를 지정해주는 것이다. ErrorMessage는 클라이언트에게 반환하는 객체로, 예외 내용을 담고 있다. excep.. 2019. 7. 16.
[Spring] AOP 1. AOP(aspect oriented programming) 관점 지향 프로그래밍 공통된 부가기능을 따로 떼어두고 사용 기능을 핵심 로직과 공통 부가로직으로 구분 코드 밖에서 설정 OOP의 기본단위는 Class 라면, AOP의 기본단위는 Aspect 예시 : 로그인 인증, 로깅, 트랜잭션 처리 2. AOP 구성요소 aspect 공통 기능(부가 기능)을 가지는 대상 advice와 pointcut 으로 구성 pointcut(어디에서) + advice(무엇을 할 것인가) advice 공통 기능(부가 기능)을 담은 구현체 aspect의 세부 내용 예시 : 로그인 체크 기능 (SessionCheck) pointcut advice가 적용될 타겟 지정 기능 타겟 : 어떤 클래스(컨트롤러)의 어느 joinPoint.. 2019. 6. 26.
[Spring] DI (Dependency Injection) DI(Dependency Injection) 1. 객체 의존성 A객체가 B객체를 참조하고 있다면, A객체는 B객체에 의존하고 있다 (의존성을 가진다). 다음 코드의 문제점은? public class Customer { private Food food; public Customer() { this.food = new Pizza("치즈 피자"); } public void eat() { System.out.println("냠냠"); food.showRemainder(); } }Customer 객체는 Food 객체(Pizza)에 의존한다. (new Pizza("치즈 피자")) 이럴 경우, Food 객체를 변경할 경우 의존한 Customer 객체도 변경해야한다. 즉, 하나의 클래스가 바뀌면 의존한 다른 클래스까지.. 2019. 6. 24.
[Intellij] import.sql 한글 깨짐 1) file - setting - file encodings에서 다음과 같이 UTF-8로 설정 2) 그래도 안될 경우, import.sql 파일의 인코딩 타입을 x-windows-949 바꾼다. [출처 : https://kkotkkio.tistory.com/39] 2019. 6. 23.
[JPA] 지연 로딩/즉시 로딩 1. 프록시 객체 가짜 객체 지연로딩 기능을 사용하기 위해 쓰임 실제 객체에 대한 참조를 가짐 2. 지연로딩 연관된 엔티티를 실제 사용할 때 조회 answer.getQuestion().getName() 처럼 질문 엔티티를 실제 사용하는 시점에 JPA가 SQL을 호출하여 질문 엔티티를 조회한다. 설정 : @ManyToOne(fetch = FetchType.LAZY) 예제 (Test Code) 1) Answer Entity @ManyToOne의 fetch타입을 지연로딩(FetchType.LAZY)로 지정한다. 2) Answer 엔티티 조회 test코드에서 answerRepository.findById(1L)를 수행하여, 해당 answer 엔티티를 조회한다. 2_1) 지연로딩 실행 SQL sql문을 보면, 단.. 2019. 6. 20.
[Spring] Logback 사용법(gradle) 1) gradle dependency 추가 runtimeOnly 'net.rakugakibox.spring.boot:logback-access-spring-boot-starter:2.7.1' 2) application.properties logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE 3) resource 패키지 내 logback.xml 파일 생성 %d{HH:mm:ss.SSS} [%-5level] [%thread] [%logger{36}] - %m%n 4) resoure 패키지 logback-access.xml 파일 생성 %d{HH:mm:ss.SSS} [%-5level] [%thread] [%logger{36}] - %m%n 2019. 6. 18.
반응형