분류 전체보기54 순차적 스트림과 병렬 스트림 우선 자바의 스트림은원본데이터를 변경하지 않는다는불변성 특징을 갖고 있어 데이터 소스 변경 없이 파이프라인 방식으로 함수형 처리를 제공하는 API임. 따로 병렬스트림으로 지정하지 않으면 기본적으로 단일 스레드로 파이프라인을 처리하는 순차 스트림(sequential stream)으로 동작함.List listOfNumbers = Arrays.asList(1, 2, 3, 4);listOfNumbers.stream().forEach(number -> System.out.println(number + " " + Thread.currentThread().getName())); 순차 스트림의 결과는 항상 예측 가능 함.리스트의 element는 항상 순서대로 출력됨.1 main2 main3 main4 main .. 2025. 5. 12. 람다식과 스트림 1. 자바 8 함수형 프로그래밍 도입 배경CPU가 단일코어에서 멀티코어로 전환되며 병렬처리가 중요해졌음. 병렬처리를 위해 불변성과 순수함수가 요구됨.javaScript, python, kotlin 등의 언어가 이미 함수형 스타일을 채택하고 있었고 자바 또한 뒤처지지 않기 위해 함수형 프로그래밍을 일부 도입하게 됨. 불변성 - 데이터가 한번 생성되면 변경되지 않음.함수형 프로그래밍은 데이터를 수정하지 않고 새로운 값을 만들어냄. 이 결과 부작용이 없고 병렬처리, 테스트가 쉬움. 순수함수 - 같은 입력에 대해 항상 같은 출력을 하며 부작용(side effect)이 없음.함수형 프로그래밍은 순수함수만을 사용하려 하여 코드의 예측 가능성과 테스트 용이성이 크게 향상됨 객체지향과 함수형은 배타적 관계가 아닌 상호.. 2025. 5. 7. 소프트웨어 개발 방법론 애자일 소프트웨어 개발 방법론 : 소프트웨어를 효율적으로 개발하기 위해 정해진 절차와 기법.요구사항 분석 - 설계 - 개발/테스트 - 구현 - 문서화 - 유지보수과정을 특정 방식에 따라 개발 하는 체계적인 접근방식. 대표적인 개발 기법으로 폭포수 모델, 프로토타입 모델, 나선형 모델, 반복적 모델이 있음.분류방법론설명고전적 방법론폭포수 모델(Waterfall)각 단계(분석 → 설계 → 구현 → 테스트)를 순차적으로 진행하는 모델 프로토타입 모델시제품(프로토타입)을 먼저 만들어 사용자 요구를 반영점진적/반복적 방법론나선형 모델폭포수 모델에 반복과 위험 분석을 추가한 모델 반복적 모델여러 번 반복하면서 점진적으로 기능을 추가애자일 계열애자일(Agile)유연하고 빠른 개발 주기, 사용자와의 소통을 강조 스크럼(Sc.. 2025. 5. 6. 클린 코드를 위한 소프트웨어 설계 원칙: DRY 원칙 DRY 원칙이란?DRY(Don't Repeat Yourself)는 소프트웨어 개발의 핵심 원칙 중 하나로, "코드 중복을 피하라"라는 간단한 개념에서 출발한다.직역하면 "자신을 반복하지 말라"는 의미로, 동일한 코드, 로직, 또는 지식이 시스템 내에서 반복되지 않도록 하는 원칙.DRY 원칙의 핵심은 모든 지식과 로직이 시스템 내에서 단 한 번만, 명확하게 표현되어야 한다는 것이다.중복된 코드가 있으면 유지보수가 어려워지고, 한 부분을 수정할 때 다른 부분도 함께 수정해야 하는 불편함이 생기기 때문. DRY 원칙이 나온 배경은DRY 원칙은 코드 중복으로 인한 유지보수 문제와 복잡성 증가를 해결하기 위해,아래 문제들을 해결하기 위해 1999년 "실용주의 프로그래머"에서 공식화되었다. 유지보수의 어려움: 코.. 2025. 5. 3. 스프링의 @Transactional Transaction정리하기에 앞서 트랜잭션이란, 데이터베이스의 상태를 변경하기 위해 수행하는 작업단위이며 다음 4가지 성질 ACID를 보장한다. Atomicity(원자성) : 전부 성공하거나, 전부 실패해야 함Consistency(일관성) : 트랜잭션 전후 데이터 일관성 유지Isolation(고립성, 격리성) : 동시에 실행되는 트랜잭션 간 간섭 없음Durability(지속성, 영속성) : 커밋된 데이터는 영구 반영 @TransactionalTransactional 어노테이션은 스프링 프레임워크에서 제공하는 어노테이션이며, JPA 사용 시 트랜잭션 처리를 위해 주로 함께 사용된다.@Transactional 어노테이션을 사용하면 스프링이 해당 메서드를 트랜잭션 범위에서 실행하도록 만든다. 다음과 같이.. 2025. 5. 2. 스프링 Bean의 scope 빈 스코프말 그대로스프링 컨테이너가 관리해 주는 객체인 스프링 빈이 존재할 수 있는 범위를 뜻하며대표적인 종류로는 싱글톤, 프로토타입, request, session, appliction 등이 있다. 빈 스코프는 왜 필요할까?객체의 생명주기를 상황에 맞게 관리하고 최적화하기 위해필요.스프링 애플리케이션은 다양한 요구사항을 처리하기 때문에,모든 객체를 무조건 하나만 생성하거나 매번 새로 생성하면 비효율적이거나 기능적으로 문제가 발생할 수 있음. 대부분의 서비스나 DAO는 상태 없이 사용되므로 하나만 생성해서 공유하는 것이 가장 효율적이다.매번 새로 만들면 메모리 낭비 + 성능 저하 발생가능.→ 메모리 효율을 위해 싱글톤 스코프 적합. 어떤 계산 로직에서 매번 다른 값 저장이 필요한 경우처럼내부에서 요청마다.. 2025. 4. 30. 이전 1 2 3 4 ··· 9 다음 반응형