Day1 - 코딩테스트 풀이.String 에서 인덱스로 접근 하는 방법 => 문자열.chartAt(인덱스)Character 형식으로 변환함.문자열 비교 할때, 대소문자 상관 없다면,문자열이면 => 문자열.toUpperCase 문자이면 => Character.toUppe

REST API는 HTTP 프로토콜 위에서 동작하는 웹 기반 데이터 통신 아키텍처 스타일입니다.리소스(자원)를 URL로 식별하고, \*\*HTTP 메서드(GET, POST 등)\*\*를 통해 이를 조작합니다.REST = REpresentational State Tran
JPA에서 FetchType.LAZY로 설정된 연관 필드에 대해, 영속성 컨텍스트(Session)가 닫힌 이후에 접근할 때 발생하는 예외야.brandService.getBrandById를 호출하는 시점이 service단 @Transactional(readOnly = t

자바에서 파일, 네트워크 소켓, 데이터베이스 연결 같은 자원은 사용 후 반드시 정리(close) 해야 한다. 그렇지 않으면 메모리 누수(memory leak) 또는 리소스 잠금(locking issue) 같은 문제가 발생할 수 있다.자원을 정리하는 일반적인 방법은 tr

네트워크 통신에서 서버와 통신하려면 IP 주소가 필요하다. 도메인(호스트 이름)만으로는 통신할 수 없으며, 도메인을 실제 IP 주소로 변환해야 한다.자바에서는 InetAddress 클래스를 사용하여 도메인 이름을 IP 주소로 변환할 수 있다.소켓 통신에서 데이터를 주고

자바에서 파일이나 네트워크와 같은 외부 장치로 데이터를 읽고 쓰는 과정은 스트림(stream) 을 통해 일관되게 처리할 수 있습니다. 이 글에서는 입력 스트림의 동작 원리와 버퍼를 활용하여 성능을 최적화하는 방법에 대해 살펴보겠습니다.자바에서 read() 메소드를 사용

컴퓨터가 데이터를 저장하는 기본 원리는 이진수(0과 1) 입니다. 컴퓨터 메모리는 수많은 전구처럼 작동하는 트랜지스터로 구성되어 있으며, 이 트랜지스터는 전류가 흐르거나 흐르지 않는 두 가지 상태를 표현합니다. 이와 같이, 모든 데이터는 결국 0과 1의 조합으로 저장됩

최근 애플리케이션의 성능 최적화와 동시에 동시성 처리가 중요한 이슈로 떠오르고 있습니다.이 글에서는 스레드 생성 비용, Runnable 인터페이스의 한계, 그리고 ThreadPoolExecutor와 Future를 활용해어떻게 효율적인 비동기 작업 처리를 할 수 있는지에

멀티스레드 프로그래밍을 하다 보면 생산자-소비자 문제(Producer-Consumer Problem)를 자주 만나게 됩니다. 이 문제는 생산자가 데이터를 생성하고, 소비자가 그 데이터를 소비하는 과정에서 발생하는 동시성 문제입니다.생산자(Producer)와 소비자(Co

자바에서 동기화를 위해 synchronized 키워드를 많이 사용하지만, 몇 가지 단점이 있습니다. 이를 해결하기 위해 Lock 인터페이스와 ReentrantLock이 등장했습니다. 이번 글에서는 synchronized의 단점과 Lock의 동작 방식에 대해 쉽게 설명하

멀티스레드를 사용할 때 가장 주의해야 할 점은 여러 스레드가 공유 자원에 동시에 접근하는 것으로 인해 발생하는 동시성 문제입니다.대표적인 공유 자원은 인스턴스 필드(멤버 변수)입니다.만약 여러 스레드가 동시에 공유 자원을 읽고 수정한다면, 데이터 불일치나 예상치 못한

CPU는 매우 빠르게 연산을 수행하지만, 메모리 속도는 상대적으로 느립니다.이 문제를 해결하기 위해 캐시 메모리(Cache Memory)가 사용됩니다.메인 메모리(RAM): 용량이 크지만 CPU 입장에서 거리가 멀고 속도가 느림캐시 메모리(Cache Memory): C

Java에서 interrupt() 메서드를 사용하면 Waiting, Timed_Waiting 상태의 스레드를 직접 깨워 Runnable 상태로 만들 수 있다. 하지만 interrupt()를 호출한다고 해서 즉시 InterruptedException이 발생하는 것은 아니
프로그래밍을 하다 보면 this라는 키워드를 자주 보게 됩니다. 특히 객체지향 언어(Java, JavaScript 등)에서 this는 매우 중요한 역할을 합니다. 그렇다면 this란 정확히 무엇일까요?간단히 말해서, this는 호출된 인스턴스 메서드가 소속된 객체를 가

스레드는 생성(Create)되고, 실행(Run)되며, 종료(Terminate)되는 생명 주기를 갖습니다. 자바에서 스레드는 다양한 상태를 거치며 실행되며, 이 과정에서 여러 상태 전이를 경험합니다.자바에서 스레드는 다음과 같은 주요 상태를 가집니다.스레드가 생성되었지만
Java에서 멀티스레드를 사용할 때, Thread 클래스를 직접 상속받는 방법과 Runnable 인터페이스를 구현하는 방법이 있다. 이 두 가지 방식은 각각 장점과 단점이 있는데, 일반적으로 Runnable을 구현하는 방식이 더 추천된다. 왜 그런지 한 번 알아보자!T
Java에서 멀티스레드를 사용하려면 Thread 클래스를 상속받아 새로운 스레드를 생성할 수 있습니다. 이때 중요한 점은 start() 메서드를 호출하면 새로운 스레드가 실행되며, run() 메서드를 직접 호출하지 않는다는 점입니다. 이번 글에서는 Thread 클래스

자바(Java) 프로그램이 실행될 때 JVM(Java Virtual Machine)은 프로그램이 사용할 메모리를 여러 영역으로 나누어 관리합니다.이 중에서도 메서드 영역(Method Area), 스택 영역(Stack), 힙 영역(Heap)은 가장 중요한 메모리 공간이며

컴퓨터에서 여러 작업을 동시에 처리할 수 있는 기술은 다양합니다. 그중에서도 멀티프로세싱(Multiprocessing)과 멀티태스킹(Multitasking)은 자주 혼동되는 개념입니다. 이번 글에서는 두 개념을 쉽게 풀어서 설명하고, 프로세스와 스레드의 차이도 함께 알