본문 바로가기

Java & Kotlin33

Sync(동기)vs Async(비동기) / Blocking vs Non-blocking 목차동기 (Synchronous) & 비동기 (Asynchronous)1-1. 동기 (Synchronous)1-2. 비동기 (Asynchronous)블로킹 (Blocking) & 논블로킹 (Non-Blocking)2-1. 블로킹 (Blocking)2-2. 논블로킹 (Non-Blocking)동기&비동기 + 블로킹&논블로킹 비교3-1. Sync & Blocking3-2. Sync & Non-Blocking3-3. Async & Non-Blocking3-4. Async & Blocking결론1. 동기 (Synchronous) & 비동기 (Asynchronous)결과를 돌려주었을 때 순서와 결과에 관심이 있는지 아닌지로 판단할 수 있다.1. 동기 (Synchronous)현재 작업의 응답과 다음 작업의 요청의 타.. 2023. 3. 30.
자바의 리스트들은 어떻게 동작할까?(ArrayList, LinkedList) 목차ArrayList란?ArrayList는 어떻게 동작하는가?2-1. 생성2-2. 추가2-3. 삭제2-4. 조회LinkedList란?LinkedList는 어떻게 동작하는가?4-1. 추가4-2. 삭제4-3. 조회 결론1. ArrayList란?List 인터페이스의 구현체 배열이다.중복을 허용하고 순서를 유지하며 인덱스로 원소를 관리한다.배열기반의 리스트이며 일반 배열과 달리 동적이라 크기를 할당하지 않아도 데이터를 추가하거나 삭제할 수 있다.2. ArrayList는 어떻게 동작하는가?ArrayList의 주요 메서드인 생성, 추가, 삭제, 조회가 어떻게 동작하는지 알아보자.1. 생성생성자는 세개가 존재하지만 기본 생성자에 대해서만 간단하게 다루어 보겠다./** * Constructs an empty list .. 2023. 3. 27.
로깅에 대해 알아보자 목차로깅이란?어떻게 기록할까?로깅프레임워크결론1. 로깅이란?소프트웨어가 실행 중에 발생하는 이벤트를 기록하는 행위.소프트웨어 동작 상태를 파악하고 문제가 발생했을때 동작을 파악하고 소프트웨어 문제를 찾아내고 해결하기 위해 디자인 됨.2. 어떻게 기록할까?앞서 1번은 운영환경에서 절대로 남기면 안된다. 우린 1번이 아닌 2번을 사용한다. 1번이 안되는 이유는 여기(링크)를 살펴보자. System.out.println(”Hello”);로깅 프레임워크3. 로깅프레임워크스프린부트를 사용하면 스프링부트 로깅 라이브러리(spring-boot-starter-logging)이 포함된다.기본적으로 아래와 같은 로깅 라이브러리를 사용한다.로그 라이브러리는 Logback, Log4j, Log4j2 등등 수 많은 라이브러리가.. 2023. 3. 25.
System.out.println 메소드는 실무에서 `절대 사용하지마라.` 목차개요System.out.println 무엇인가?왜 사용해서는 안되는가?로그를 남기면 안되는 것인가?결론1. 개요프로그래밍을 처음 접하면 System.out.println(”Hello World”);같이 콘솔에 출력하는 것을 배우게 된다. 아마 모든 개발자들은 검정바탕에 'Hello World'를 다 알 것이라 생각한다. 우리는 기능 구현을 하면 원하는 값이 제대로 나오는지 확인하기 위해 출력을 하는 경우 종종 사용한다. 그러나, 실무에서 System.out.println을 절대 사용을 하면 안된다. 그 이유를 아래에서 차근차근 알아보자.2. System.out.println 무엇인가?System.out.println은 Java개발할때 디버깅 용도로 콘솔에 출력하는 메소드 중 하나다.System은 j.. 2023. 3. 21.
에러와 예외 (Checked exception vs Unchecked exception) 목차에러(error)예외(Exception)2-1. Checked Exception2-2. Unchecked Exception결론 1. 에러(error)프로그램 코드에 의해서 수습될 수 없는 심각한 오류.즉, 내가 자바 애플리케이션이 동작하는 환경에서 문제가 생긴 경우.ex) 메모리 부족, 컴퓨터 전기가 나가는 현상 등등..컴파일 에러(Compile error)컴파일할 때 발생하는 에러런타임 에러(Runtime error)실행할 때 발생하는 에러 2. 예외(Exception)프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류.즉, 내가 짠 코드가 의도한거와 다른 상황에 직면했을 경우.ex) 파일을 읽으려 했는데 없다거나, 예상하지 못한 값이 들어와 계산되는 등등..Checked ExceptionUn.. 2023. 3. 20.
인터페이스 vs 추상클래스 (자바8 이후의 변화) 목차인터페이스란?추상클래스란?interface vs abstract class결론개요자바8 이후 interface도 default 키워드를 이용해 메소드의 구현부를 가질 수 있게 되었다.따라서, 추상클래스와 인터페이스간의 차이가 모호해졌다.1. 인터페이스란?추상화된 타입으로, 메소드만을 정의하고 구현은 하지 않은 추상메소드와 상수만들 가지는 일종의 추상클래스이다.자바 8 이전에는 인터페이스의 구현부가 없었으나 이후 부터는 default 키워드를 통해 가능하다.다중 상속을 지원하며, 다른 클래스나 인터페이스가 인터페이스를 구현하여 그 인터페이스의 메소드를 각각 구현가능하다. 인터페이스를 구현하는 클래스는 반드시 인터페이스가 정의한 모든 메소드를 구현해야 한다.인터페이스를 사용하면 객체지향 프로그래밍에서 유.. 2023. 3. 14.