본문 바로가기
728x90
반응형

전체 글72

Garbage Collection JVM에서 자동으로 메모리를 관리하여 더이상 사용되지 않는 객체를 제거하고 메모리를 회수하는 매커니즘개발자가 명시적으로 메모리를 해제하지 않아도되므로 메모리 누수를 방지하고 안정성을 높임동작 원리Stop-The-WorldGC를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춤어떤 GC 알고리즘을 사용하더라도 발생하기 때문에 성능 향상을 위래 고려해야할 건 Stop-The-World를 발생시키지 않도록 하는게 아니라 시간을 최소화 시키는 것임Mark and SweepMark객체 그래프를 순회하여 참조되는 객체를 식별하고 표시참조되지 않는 객체는 가비지로 간주SweepMark 단계에서 참조되는 않은 객체를 제거하고 해당 메모리를 회수JVM .. 2025. 1. 26.
Java & Kotlin 장단점 Java장점안정성과 성숙한 생태계20년 이상의 역사를 가진 언어로 안정적이고 잘 테스트된 라이브러리와 프레임워크를 제공백엔드 개발에 최적화된 도구와 IDE가 풍부플랫폼 독립성JVM 기반으로 Write Once, Run Anyshere 철학 구현다양한 플랫폼에서 동일한 코드를 실행 가능커뮤니티와 지원방대한 커뮤니티와 풍부한 학습 자료 덕분에 문제 해결이 쉬움지속적인 업데이트로 최신 기술 지원확장성과 성능대규모 시스템 개발에 적합하며 성능이 우수대량 트랜잭션 처리나 엔터프라이즈 애플리케이션에 최적화안정적이고 명시적인 코드강타입 언어로 명확한 코딩 스타일을 유지하며 코드 가독성이 높음단점장황한 문법코드가 지나치게 장황할 수 있어 생산성이 떨어질 수 있음반복적인 boiler plate 코드가 많음모던 기능 부족.. 2025. 1. 25.
정렬 목록 안에 저장된 요소들을 특정한 순서대로 재배치하는 알고리즘정렬 시 고려사항시간 복잡도메모리 사용량안정성: 데이터의 순서가 바뀌지 않는지직렬 vs 병렬종류선택 정렬(Selection Sort)선택된 값과 나머지 데이터 중 비교하여 알맞은 자리를 찾는 알고리즘. 안정성은 보장되지 않음시간 복잡도: O(n^2)worst, average, best 모두 동일삽입 정렬(Insertion Sort)데이터 집합을 순회하면서 정렬이 필요한 요소를 뽑아내어 이를 다시 적당한 곳으로 삽입하는 알고리즘성능은 버블 정렬보다 좋음시간 복잡도: O(n^2)worst, average 동일. best 이미 정렬 되어있다면 O(n)버블 정렬(Bubble Sort)인접한 두 수를 비교하여 오름차순 or 내림차순으로 정렬. 안정성 보.. 2025. 1. 25.
함수형 프로그래밍 불변성(Immutability): 한 번 생성된 값이 변하지 않는 특성순수 함수(Pure Functions): 동일한 입력에 대해 항상 동일한 출력을 반환하고, 사이드 이펙트가 없는 함수함수의 일급 객체(First-Class Functions): 함수를 값처럼 다룰 수 있도록 하는 개념으로 함수를 변수에 할당하거나, 다른 함수의 매개변수로 전달하거나, 함수의 결과로 반환 가능고차 함수(Higher-Order Functions): 하나 이상의 함수를 인자로 취하거나 함수를 결과로 반환하는 함수재귀(Recursion): 함수가 자기 자신을 호출하여 문제를 해결하는 방법람다(Lambda): 이름이 없는 함수. 일급 객체로 취급되어 변수에 저장하거나 전달 가능Side Effect: 함수가 자신의 상태를 변경하거.. 2025. 1. 25.
헥사고날 아키텍처 포트와 어댑터 아키텍처라고도 불리며 애플리케이션의 핵심 비즈니스 로직을 외부 요소로부터 격리하는 아키텍처 패턴구성 요소도메인(내부)핵심 비즈니스 로직외부 의존성이 없는 순수한 도메인 모델포트를 통해서만 외부 통신포트(인터페이스)인바운드 포트: 애플리케이션 서비스를 외부에 노출아웃바운드 포트: 외부 서비스 사용을 위한 인터페이스어댑터(외부)주도하는 어댑터: REAT API, 웹 UI 등주도되는 어댑터: 데이터베이스, 외부 API 등장점테스트 용이성: 외부 의존성을 쉽게 모킹 가능유지보수성: 핵심 비즈니스 로직 보호유연성: 기술 스택 변경에 용이도메인 주도 설계(DDD)와 잘 어울리며 복잡한 엔터프라이즈 애플리케이션에 적합함 2025. 1. 24.
MSA & Monolithic Architecture MSA(MicroService Architecture)하나의 애플리케이션을 독립적인 서비스로 나누어 개발하고 운영하는 아키텍처특징도메인 기반 분리(각 서비스가 독립적)독립적인 배포(서비스별로 배포주기 및 확장 가능, 다른 서비스에 영향을 주지않고 복구 가능)다양한 기술 스택 사용 가능장점개발 및 배포 속도 향상확장성유지보수 용이탄력적인 기술 선택장애 격리단점복잡한 서비스 관리: 서비스간 통신, 배포 관리, 모니터링 복잡해결하기 위해 API gateway, service discovery, 중앙 로그화 등 추가적인 도구 필요서비스간 통신 비용 증가데이터 일관성 관리가 어려움: SAGA 패턴이나 이벤트 기반 아키텍처 사용운영 복잡도 증가모놀리틱 아키텍처(Monolithic Architecture)소프트웨어의.. 2025. 1. 24.
728x90
반응형