분류 전체보기 129

프로세스와 스레드, 교착 상태

아래 내용은 면접을 대비한, 간단하게 정리된 프로세스와 스레드, 교착 상태에 대한 내용이다.프로세스와 스레드프로세스정의: 실행 중인 프로그램의 독립된 인스턴스이다.특징:각 프로세스는 별도의 메모리 공간과 시스템 자원을 보유한다.다른 프로세스와의 통신은 주로 IPC(Inter-Process Communication)를 통해 이루어진다.의의: 시스템 안정성과 보안을 위해 프로세스 간의 강한 격리를 제공한다.스레드정의: 하나의 프로세스 내에서 실행되는 경량 작업 단위이다.특징:동일 프로세스 내의 스레드들은 메모리 공간과 자원을 공유한다.스레드 간 전환 비용이 낮아 효율적으로 작업을 수행할 수 있다.한 프로세스 내에서 여러 스레드를 사용하여 병렬 처리가 가능하다.의의: 자원 공유와 빠른 전환을 통해 응용 프로그..

Java 의 주요 자료구조 - ArrayList & Hash Map

ArrayList의 동작 방식ArrayList는 내부적으로 배열을 사용하여 데이터를 저장하며, 그 작동 원리는 다음과 같다.내부 배열 관리데이터를 순차적으로 저장하는 배열을 사용한다.배열은 일정한 용량(Capacity)을 가지며, 초기 용량은 지정할 수 있다.용량 확장 방식add 연산 시 남은 공간이 없으면, 현재 용량의 50%를 추가하여 새로운 배열을 생성한다.이 과정에서 기존 배열의 내용을 arraycopy 메서드를 사용하여 새로운 배열로 복사한다.용량 확장 시 복사로 인한 성능 오버헤드가 발생하지만, 대부분의 삽입 연산은 평균적으로 O(1)의 시간 복잡도를 유지한다.참고로, C++의 vector는 용량을 두 배로 늘리는 방식으로 확장하는 점에서 차이가 있다.해시테이블의 작동 원리 및 충돌 해결 방법..

Article 2025.03.09

WAS 성능 최적화 전략

1. 자바 애플리케이션 성능 최적화자바 애플리케이션의 성능을 극대화하기 위해서는 아래와 같은 다양한 접근 방법을 동시에 고려해야 한다.JVM 상태 분석프로파일링 및 모니터링 도구(JVisualVM, YourKit 등)를 활용하여 애플리케이션의 런타임 상태를 분석한다. 이를 통해 병목 현상, 메모리 사용량, 스레드 동작 등을 파악할 수 있다.GC 튜닝가비지 컬렉션(GC) 로그를 분석하고, GC 옵션을 조정하여 불필요한 pause 시간을 줄인다. 상황에 따라 CMS, G1, ZGC 등 다양한 GC 방식을 테스트하여 최적의 성능을 도출한다.JVM 파라미터 조정힙 메모리 크기, 스택 크기, JIT 컴파일러 옵션 등 JVM의 다양한 파라미터를 상황에 맞게 조정하여 최적의 실행 환경을 구성한다.위와 같은 방법들을 ..

WEB BE Repo 2025.03.08

스프링이란?

스프링스프링은 자바 기반의 애플리케이션 개발을 위한 경량 프레임워크로, 모듈 간 결합도를 낮추고 유지보수를 용이하게 하는 다양한 기능을 제공한다. 스프링은 핵심 기능인 IoC(Inversion of Control)와 DI(Dependency Injection)를 중심으로 작동하며, AOP(Aspect Oriented Programming)를 비롯한 여러 부가기능을 지원한다.스프링 프레임워크의 주요 특징스프링은 다음과 같은 주요 특징을 갖고 있다:IoC와 DI를 통한 결합도 감소스프링 컨테이너는 객체의 생성, 관리, 라이프사이클을 담당함으로써 개발자가 직접 객체를 생성하고 의존성을 관리할 필요를 줄여준다. 이를 통해 컴포넌트 간의 결합도를 낮추고, 유지보수와 확장이 용이한 애플리케이션을 구현할 수 있다.I..

WEB BE Repo/Spring 2025.03.08

백엔드 개발자를 위한 HTTP 기본 지식

1. RESTful API의 개념 및 설계 원칙RESTful API는 클라이언트와 서버 간의 역할을 명확히 분리하여 각 구성 요소가 독립적으로 발전할 수 있도록 설계된 아키텍처이다. 다음의 원칙들이 핵심이다.클라이언트-서버 구조클라이언트와 서버가 서로의 구현에 영향을 받지 않고 독립적으로 변경될 수 있도록 역할을 분리한다.무상태성(Stateless)서버는 클라이언트의 상태를 저장하지 않으며, 각 요청은 독립적으로 처리된다. 실제 개발 환경에서는 세션 등을 사용해 상태를 관리하기도 하지만, REST의 기본 원칙은 무상태를 유지하는 것이다.캐시 처리 가능(Cacheable)응답 데이터는 캐시될 수 있어, 네트워크 부하를 줄이고 성능을 개선할 수 있다.일관된 인터페이스(Uniform Interface)클라이언..

면접 대비용 데이터베이스 정리

1. 관계형 데이터베이스의 정규화정규화는 데이터베이스 설계 시 데이터 중복을 최소화하고 삽입, 수정, 삭제 이상 현상을 제거하며 데이터 무결성을 유지하기 위한 일련의 과정이다. 정규화 과정을 통해 저장 공간을 효율적으로 사용하고, 일관된 데이터 관리를 보장할 수 있다.정규화의 장점데이터 중복 최소화: 동일 데이터의 반복 저장을 피하여 저장 공간을 절약한다.이상 현상 제거:삽입 이상, 수정 이상, 삭제 이상을 방지한다.데이터 무결성 유지: 데이터의 정확성과 일관성을 보장한다.저장 공간 효율적 사용: 불필요한 중복 저장을 제거하여 공간을 절약한다.정규화의 단점JOIN 연산 필요: 여러 테이블로 분리된 데이터를 조회할 때 복잡한 JOIN 연산이 필요해 성능 저하의 원인이 될 수 있다.2. 비정규화비정규화는 정..

CS Repo/DB 2025.03.07

객체지향 기초 - SOLID 원칙

개인적으로 SOLID 는 객체지향의 "기초" 라고 하기엔 너무 어렵다고 생각하지만, SOLID를 통해 객체지향 학습을 시작하는 사례가 많으니, SOLID를 이해하기 위한 흐름을 잡아 설명하도록 하겠다.1. 객체지향 프로그래밍의 기본 특성객체지향 프로그래밍은 소프트웨어 설계와 구현에 있어 효율성과 유지보수성을 높이기 위한 패러다임이다. 대표적인 네 가지 특성은 캡슐화, 상속, 다형성, 추상화이며, 각각 다음과 같이 설명할 수 있다.1.1 캡슐화캡슐화는 데이터(필드)와 그 데이터를 처리하는 메서드를 하나의 객체로 묶어, 외부에서 불필요하거나 민감한 정보에 직접 접근하지 못하도록 제한하는 개념이다. 이를 통해 객체 내부의 상태를 보호하고, 변경의 영향을 최소화할 수 있다. 1.2 상속상속은 기존의 클래스를 기..

Java 에 대하여

자바의 기본 특징자바는 객체지향 프로그래밍(OOP)에 기반하여 설계되었으며, "Write Once, Run Anywhere"라는 플랫폼 독립성을 갖는다. 이는 한 번 작성된 코드가 어떠한 운영체제에서도 동일하게 실행될 수 있음을 의미한다.JDK 구조자바 개발 환경은 JDK(Java Development Kit), JRE(Java Runtime Environment), 그리고 JVM(Java Virtual Machine)으로 구성되며, 각 계층은 다음과 같이 역할을 분담한다.1. JDKJDK는 자바 개발에 필요한 모든 도구를 포함하는 패키지이다.JDK의 주요 구성 요소는 다음과 같다.JRE: 자바 애플리케이션을 실행하기 위한 환경을 제공한다.개발 도구: 자바 컴파일러(javac), 패키징 도구(jar), ..

WEB BE Repo/JAVA 2025.03.07

Hope for the best, Prepare for the worst - 25년 3월 1주차 회고

Hope for the best, Prepare for the worst.최악의 상황이 발생할 수 있음을 인정해라.최고의 상황을 바라고 움직여라.그래야 내가 다음으로 해야 할 일이 무엇인지 보인다.스스로가 부끄럽지 않았는가?해낸 일레거시 개선방법 학습AI 역량검사 연습 및 수행AWS 정리SQLD 학습하고자 했으나, 못한 일면접 질문 답변 리스트 만들어두기DDD 완벽 정리MySQL 실행계획 학습개인 인프라 구축정신 차려라......몹시 아쉬움, 마음에 들지 않음.정신 차릴 것.감정을 분리하라.모두가 다같이 성장했다.모두의 감사도 받았다.다음을 봐야 할 때.다음으로 해야 할 것이 무엇인지, 현재 내가 해야 할 일을 놓치지 마라.D - 4투지로 달려보기.면접때 예상 질문을 대답할 수 있는 수준으로 정리하기.

개인적 공간 2025.03.07

AMI와 EC2

1. AMI (Amazon Machine Image)1) AMI의 정의AMI는 EC2 인스턴스를 실행하기 위한 템플릿이다. 운영체제, 애플리케이션, 구성 정보가 포함되어 있어, 이를 바탕으로 동일한 환경을 필요로 하는 여러 인스턴스를 쉽게 생성할 수 있다.2) 유연성과 확장성 확보AMI를 활용하면 여러 인스턴스에 동일한 이미지를 적용하여 일관된 환경을 빠르게 구성할 수 있다. 예를 들어, 사용자가 직접 만든 AMI를 Auto Scaling에 적용하면 트래픽 증가 시점을 감지해 자동으로 동일 환경의 인스턴스를 스케일 아웃할 수 있다.3) AMI 선택 시 고려 요소운영체제: Linux, Windows 등 사용하려는 운영체제가 무엇인지 확인해야 한다.리전: AMI는 리전에 따라 사용 가능한 이미지가 다를 수 ..

WEB BE Repo/AWS 2025.03.06