[모던 자바 인 액션] Chapter 4 | 스트림 소개
·
Backend
Chapter 4. 스트림 소개컬렉션데이터를 그룹화하고 처리컬렉션 내에서 완벽한 연산은 아직 지원하지 않음4.1 스트림이란 무엇인가?스트림을 간단히 알아보자선언형으로 컬렉션 데이터를 처리할 수 있다.루프와 if 조건문 등의 제어 블록을 사용할 필요가 없다.멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다.여러 빌딩 블록 연산을 연결해서 복잡한 데이터 처리 파이프라인을 만들 수 있다.filter 메서드의 결과는 sorted 메서드로, sorted 메서드의 결과는 map 메서드로, map 메서드의 결과는 collect로 연결된다.스트림을 사용하지 않은 코드 (자바7)List lowCaloricDishes = new ArrayList();for(Dish dish: menu) { ..
[모던 자바 인 액션] Chapter 3 | 람다 표현식
·
Backend
Chapter 3. 람다 표현식3.1 람다란 무엇인가?람다 표현식메서드로 전달할 수 있는 익명 함수를 단순화한 것이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있음람다의 특징익명함수메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부름전달람다 표현식을 메서드 인수로 전달하거나 변수로 저장 가능간결성람다 코드 예시기존 코드Comparator byWeight = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); }}람다를 이용한 코드Comparator byWeight = (Apple a1,..
[모던 자바 인 액션] Chapter 2 | 동작 파라미터화 코드 전달하기
·
Backend
2.0 동작 파라미터화 간보기 아직 어떻게 실행할 것인지 결정하지 않은 코드 블록자주 바뀌는 요구사항에 효과적으로 대응할 수 있음 2.1 변화하는 요구사항 대응하기녹색 사과 필터링// filterApplesByColor(List inventory) 함수 내부if (GREEN.equals(apple.getColor())) { result.add(apple);}근데 만약 녹색 사과 말고 빨간 사과도 필터링하고 싶다면?메서드를 복제해서 빨간 사과 전용 메서드를 만든다⇒ 거의 비슷한 코드가 반복 존재한다면 그 코드를 추상화한다.색을 파라미터화// filterApplesByColor(List inventory, Color color) 함수 내부if (apple.getColor().equals(color)) ..
[DDD] Domain Driven Design 실습 - java
·
Backend
📋 미션 목록 1-1MoneyBigDecimal amount + Currency 필드 / 음수 금지 (compact constructor 검증) / 정적 팩토리 krw(long won) / isPositive() 메서드1-2CardNumber숫자 16자리(\d{16})만 허용 / masked() — 첫 4자리 + 가운데 마스킹 + 마지막 4자리1-3PaymentStatusString "PENDING"/"PAID"/"REFUNDED" → enum으로 변경2Payment생성자 (orderId, Money, CardNumber) → PENDING으로 시작 / pay() PENDING→PAID + paidAt 기록 / refund() PAID→REFUNDED / 잘못된 상태 전이 시 IllegalStateEx..
[DDD] Domain Driven Design 기초
·
Backend
1. 우리가 흔히 짜는 코드의 문제 Anemic Domain Model (빈약한 도메인 모델)Order 클래스를 열어보면 필드와 getter/setter밖에 없음. 즉 데이터 컨테이너(DTO)일 뿐, "주문은 어떻게 행동하는가"에 대한 로직이 전혀 없음.본질적으로 객체지향이 아니라 절차지향임. 데이터는 객체에, 로직은 서비스에 분리되어 있으니까.Martin Fowler가 'Anti-pattern'이라고 명시적으로 말한 패턴임.Fat Service (뚱뚱한 서비스)모든 비즈니스 로직이 OrderService로 몰림. 한 메서드가 수백 줄, 클래스가 수천 줄까지 자라남.트랜잭션 시작 -> 검증 -> 계산 -> 외부 호출 -> 상태 변경 -> 저장이 한 메서드 안에 다 들어있음.결과적으로 무엇이 비즈니스 규칙..
[AI·SW 마에스트로] 17기 합격 후기
·
AI·SW 마에스트로
AI·SW 마에스트로 서울센터 17기에 합격했다!!! 1차 - 서류 전형, 2차 - 1차 코딩테스트, 3차 - 2차 코딩테스트, 4차 - 심층면접의 과정을 거쳐 합격하게 되어서,기록해두면 소마를 준비하시는 분들께도, 미래의 나에게도 도움이 많이 될 것 같아 후기를 써보게 되었다! 서류전형서류 전형은 필수 2문항 선택 1문항이었고, 아래와 같았다. 1. (*필수) [자기소개] AI 및 SW분야의 전문성을 키우기 위해 몰입했던 경험과 도전이 무엇인지, 또한 이러한 성장과정을 통해 얻은 배움은 무엇인지를 서술하여 주시기 바랍니다.(최소 400자, 최대 1000자 입력가능)2. (*필수) [연수계획서] AI·SW마에스트로 과정 참여를 통해 어떠한 프로젝트를 수행하고 싶은가요? 해당 프로젝트를 수행하기 위한 계..
[Git/GitHub] 협업 초보자를 위한 Git/GitHub 첫 사용법!
·
카테고리 없음
이번 UMC 9기에 운영진을 맡게 되면서 협업이 처음인 동아리원들을 위해 원디랑 깃/깃허브 미미나를 준비해봤다!준비하며 정리했던 내용들을 아래 작성 후 마지막에 미미나 후기를 짧게 써보겠다!! 1. 깃(Git)과 깃허브(GitHub) 관계Git 이란?Git은 분산 버전 관리 시스템(DVCS)으로, 파일의 변경 이력을 추적하고 여러 사람과 협력하여 작업할 수 있도록 돕는 도구이다.Git을 사용하면 프로젝트의 소스 코드나 문서 등의 변화를 기록하고, 언제든지 과거의 특정 시점으로 되돌릴 수 있다.또한, 분산 저장소를 기반으로 하기 때문에, 모든 사용자는 프로젝트의 전체 히스토리를 로컬에 저장하고 있어 인터넷 연결 없이도 작업이 가능합니다. GitHub란?GitHub는 Git을 기반으로 한 웹 호스팅 서비스로..
[BOJ/Python] 2211번: 네트워크 복구 | 다익스트라 알고리즘
·
Program Solving/Python
https://www.acmicpc.net/problem/2211 문제N(1 ≤ N ≤ 1,000)개의 컴퓨터로 구성된 네트워크가 있다. 이들 중 몇 개의 컴퓨터들은 서로 네트워크 연결이 되어 있어 서로 다른 두 컴퓨터 간 통신이 가능하도록 되어 있다. 통신을 할 때에는 서로 직접 연결되어 있는 회선을 이용할 수도 있으며, 회선과 다른 컴퓨터를 거쳐서 통신을 할 수도 있다.각 컴퓨터들과 회선은 그 성능이 차이가 날 수 있다. 따라서 각각의 직접 연결되어 있는 회선을 이용해서 통신을 하는데 걸리는 시간이 서로 다를 수 있다. 심지어는 직접 연결되어 있는 회선이 오히려 더 느려서, 다른 컴퓨터를 통해서 통신을 하는 것이 더 유리할 수도 있다. 직접 연결되어 있는 회선을 사용할 경우에는 그 회선을 이용해서 통..
[BOJ/Python] 18223번: 민준이와 마산 그리고 건우 | 다익스트라 알고리즘
·
Program Solving/Python
https://www.acmicpc.net/problem/18223 문제종강을 맞은 민준이는 고향인 마산으로 내려갈 계획을 짜고 있었다. 늘 그랬듯, 마산으로 갈 버스를 예약하려던 순간 민준이는 집으로 가는 다른 방법이 떠올랐다. 그것은 직접 지도를 보고 고향으로 가는 가장 짧은 길을 찾는 것이다.그때, 먼저 고향으로 내려갔던 친구인 건우에게 연락이 왔다. 건우는 고향으로 내려가던 중 알 수 없는 일에 휘말려 외딴곳에 혼자 남겨지게 되었다. 건우는 유일한 구세주인 민준이에게 도움을 청한 것이었다. 그러나 마산의 남자인 민준이에게는 마산이 먼저였다. 민준이는 처량한 건우를 무시한 채 고향으로 떠나려고 했지만, 만약 고향으로 가는 길에 건우가 있다면 겸사겸사 도움을 줄 수 있을 것 같았다.지도는 양방향 그래..
[BOJ/Python] 4963번: 섬의 개수 | 플러드 필
·
Program Solving/Python
https://www.acmicpc.net/problem/4963 문제정사각형으로 이루어져 있는 섬과 바다 지도가 주어진다. 섬의 개수를 세는 프로그램을 작성하시오.한 정사각형과 가로, 세로 또는 대각선으로 연결되어 있는 사각형은 걸어갈 수 있는 사각형이다. 두 정사각형이 같은 섬에 있으려면, 한 정사각형에서 다른 정사각형으로 걸어서 갈 수 있는 경로가 있어야 한다. 지도는 바다로 둘러싸여 있으며, 지도 밖으로 나갈 수 없다. 입력입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다.둘째 줄부터 h개 줄에는 지도가 주어진다. 1은 땅, 0은 바다이다.입력의 마지막 줄에는 0이 두 개 주어진다..