Java 5

테스트가 무거운 건 의지 문제가 아니라 설계 문제다

레이어트 아키텍처의 함정과 도메인 중심 설계로의 탈출 이 글에서 얻어갈 것들테스트가 무거운 이유가 의지 문제가 아니라 설계 문제라는 것레이어드 아키텍처가 Fat Service 와 Anemic Domain Model을 만들기 쉬운 구조적 이유이 문제가 코드 수준을 넘어 팀 협업과 생산성에 어떤 영향을 주는지의존성 역전(DIP)을 통해 외부 기술을 분리하는 실전 흐름Mock과 Fack 테스트의 차이와 언제 무엇을 써야 하는지Spring Context 없이도 가능한 순수 Java 단위 테스트 구조이 내용이 클린 아키텍처, 헥사고날 아키텍처와와 어떻게 연결되는지 큰 그림1. 레이어드 아키텍처는 왜 기본이 되었을까?Sprig 기반 프로젝트를 시작하면 대부분 자연스럽게 다음 구조를 사용한다.Controller ..

객체지향 2026.03.16

[JAVA] staic 과 final

staic과 final 은 둘 다 java에서 사용되는 키워드로 서로 다른 목적과 역할을 가지고 있습니다.static 이란?  정적 키워드로, 참조를 고정해 줍니다. 참조를 고정해 주기 위해서는 해당 객체가 없어지거나 재생성되면 안 되겠죠?그래서 gc 가 발생하는 힙이 아니라 메타스페이스에 할당을 해서 객체를 유지시켜 줍니다. 클래스가 로드될 때 메모리에 메타스페이스에 할당돼서 프로그램 시작부터 종료까지 남아있습니다. 즉 메모리가 항상 상주하고 있는 영역입니다.때문에 인스턴스 생성 없이도 접근 가능하면 모든 인스턴스에 공유됩니다. 즉 공용 데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메서드를 선언하고자 할 때 사용합니다.static 변수를 선언하면 클래스 로딩 시점에 메모리에 할당되고 모든 객체에서..

JAVA 2024.10.29

백준 11049 행렬 곱셈 순서 [JAVA]

해당 문제는 dp 문제로 규칙만 찾으면 쉽게 풀 수 있는 문제다.생각보다 어려웠다.풀이를 참고하여 풀었지만 너무 어려웠던 만큼 복습을 해보도록 하자문제크기가 N×M인 행렬 A와 M×K인 B를 곱할 때 필요한 곱셈 연산의 수는 총 N×M×K번이다. 행렬 N개를 곱하는데 필요한 곱셈 연산의 수는 행렬을 곱하는 순서에 따라 달라지게 된다.예를 들어, A의 크기가 5×3이고, B의 크기가 3 ×2, C의 크기가 2 ×6인 경우에 행렬의 곱 ABC를 구하는 경우를 생각해 보자.AB를 먼저 곱하고 C를 곱하는 경우 (AB)C에 필요한 곱셈 연산의 수는 5×3×2 + 5×2×6 = 30 + 60 = 90번이다.BC를 먼저 곱하고 A를 곱하는 경우 A(BC)에 필요한 곱셈 연산의 수는 3×2×6 + 5×3×6 = 36..

알고리즘 2024.10.17

백준 2579 계단 오르기 [JAVA]

https://www.acmicpc.net/problem/2579문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다.예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다.계단 오르는 데는 다음과 같은 규칙이 있다.계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다.연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다.마지막 도..

알고리즘 2024.09.30

[자바정렬] Arrays.sort() Collections.sort()

1차원 배열 오름차순 정렬// 1차원 배열 오름차순 Sortint[] nums = { 2, 4, 9, 8};Arrays.sort(nums);System.out.println(Arrays.toString(nums));//결과 [2, 4, 8, 9] 1차원 배열 내림차순 정렬 (for문 활용)// 1차원 배열 내림차순 Sort   int[] nums = { 2, 4, 9, 8};        Arrays.sort(nums);        for(int i=0; i   1차원 배열 Stream 정렬 // 1차원 배열 내림차순 Sort   int[] nums = { 2, 4, 9, 8};   int[] descNums = Arrays.stream(nums)                   .boxed().sor..

알고리즘 2024.08.06