GitHub

https://github.com/Choidongjun0830

전체 글 478

@RequestBody의 동작 원리와 @ModelAttribute

@RequestBody Request 메시지나 Response 메시지에 담기는 Body의 대표적인 데이터 형식은 JSON이다.@RequestBody는 JSON 형식의 데이터를 자바 객체로 변환한다. ```@Controllerpublic class UserController { @PostMapping("/users") @ResponseBody public ResponseEntity createUser(@RequestBody User user) { users.add(user); return ResponseEntity.ok(user); }}//요청 예시{ "name": "홍길동", "age": 30}->위 요청이 들어오면, @RequestBody에 의해 name은 "홍길동", ag..

Spring 2025.04.16

[프로그래머스] Lv2. 서버 증설 횟수

서버 증설 횟수문제 설명당신은 온라인 게임을 운영하고 있습니다. 같은 시간대에 게임을 이용하는 사람이 m명 늘어날 때마다 서버 1대가 추가로 필요합니다. 어느 시간대의 이용자가 m명 미만이라면, 서버 증설이 필요하지 않습니다. 어느 시간대의 이용자가 n x m명 이상 (n + 1) x m명 미만이라면 최소 n대의 증설된 서버가 운영 중이어야 합니다. 한 번 증설한 서버는 k시간 동안 운영하고 그 이후에는 반납합니다. 예를 들어, k = 5 일 때 10시에 증설한 서버는 10 ~ 15시에만 운영됩니다.하루 동안 모든 게임 이용자가 게임을 하기 위해 서버를 최소 몇 번 증설해야 하는지 알고 싶습니다. 같은 시간대에 서버를 x대 증설했다면 해당 시간대의 증설 횟수는 x회입니다.다음은 m = 3, k = 5 일..

Java 2025.04.14

SOLID 원칙

객체지향 프로그래밍이 어렵고, 기준도 잘모르겠어서 우선, SOLID 원칙을 제대로 알아가보려 한다.객체지향 프로그래밍에서 SOLID 원칙을 잘 지키면 깨끗하고, 확장성이 높으며 유지보수성이 높은 코드를 작성할 수 있다.또한, 테스트에도 용이한 코드를 작성할 수 있다.몇주간 객체지향 프로그래밍에 대해 탐구한 결과, 객체지향 프로그래밍의 장점은 재사용할 수 있는 코드, 클래스 간 분명한 역할, 객체 간의 협력으로 구현하는 코드라고 생각한다.객체를 재사용하면서 객체 간의 협력을 구현하면 일관성을 챙길 수 있다. 여기서 말하는 일관성이란, 공통의 목적을 공유할 때, 그것의 구현 방식도 같은 것이다. 일관성없는 코드를 작성했을 때는 하나의 목적을 가지는 여러 정책, 여러 방식에 대해 여러 구현 방식이 나오는 것이..

공부 2025.03.26

우테코에서의 6주차 WIL

[Facts]아스키 코드를 이용해 알파벳 숫자  2. 인터페이스의 default 메서드 -> 그러면 추상 클래스랑 머가 다르지?  [Feelings+Finding] 아스키 코드를 이용해 알파벳 숫자  저는 장기 좌표를 뷰에서 x는 알파벳으로, y를 숫자로 사용합니다. 도메인에서 사용하기 위해서는 x를 숫자로 바꿔주어야 하는데요. 페어가 아스키 코드를 이용해서 뚝딱하고 숫자로 바꾸어주었습니다. 알파벳 -> 숫자 ```int x = charArray[0] - 'a'; ```charArray에는 a1, c8처럼 사용자가 입력한 좌표가 들어있습니다.java에서 char - char는 아스키 값으로 계산해서 저 로직이 가능한 것입니다.그래서 a는 0, b는 1 ..로 나오게 됩니다. 숫자 -> 알파벳 ```S..

우테코 2025.03.25

[프로그래머스] Lv2. 완전범죄

문제 설명A도둑과 B도둑이 팀을 이루어 모든 물건을 훔치려고 합니다. 단, 각 도둑이 물건을 훔칠 때 남기는 흔적이 누적되면 경찰에 붙잡히기 때문에, 두 도둑 중 누구도 경찰에 붙잡히지 않도록 흔적을 최소화해야 합니다.물건을 훔칠 때 조건은 아래와 같습니다.물건 i를 훔칠 때,A도둑이 훔치면 info[i][0]개의 A에 대한 흔적을 남깁니다.B도둑이 훔치면 info[i][1]개의 B에 대한 흔적을 남깁니다.각 물건에 대해 A도둑과 B도둑이 남기는 흔적의 개수는 1 이상 3 이하입니다.경찰에 붙잡히는 조건은 아래와 같습니다.A도둑은 자신이 남긴 흔적의 누적 개수가 n개 이상이면 경찰에 붙잡힙니다.B도둑은 자신이 남긴 흔적의 누적 개수가 m개 이상이면 경찰에 붙잡힙니다.각 물건을 훔칠 때 생기는 흔적에 대한..

우테코에서의 5주차 WIL

[Facts]템플릿 메서드 패턴과 전략 패턴동적 메서드 탐색[Feelings+Finding]템플릿 메서드 패턴과 전략 패턴템플릿 메서드 패턴 (상속 활용)  • 상위 클래스에서 공통 구조(알고리즘)를 정의하고, 하위 클래스에서 세부 동작을 구현하는 패턴.  • Hook 메서드를 활용하면 알고리즘의 흐름을 제어 가능.  • 장점: 코드 중복 제거, 유지보수 용이  • 단점: 부모 클래스 변경 시 영향이 큼 전략 패턴 (합성 활용)  • 알고리즘을 독립적인 Strategy 인터페이스로 분리하고, 필요할 때 동적으로 변경하는 패턴.  • 클라이언트가 원하는 전략을 직접 선택해야 함.  • 장점: 유연성과 확장성 증가, 코드 중복 제거  • 단점: 클라이언트가 각 전략의 차이를 이해해야 함 Dealer와 Pla..

우테코 2025.03.17

템플릿 메서드 패턴 vs 전략 패턴

이번에 shouldDrawMore() 메서드를 효율적으로 구현하는 방법을 고민하면서 템플릿 메서드 패턴과 전략 패턴을 학습했다. 두 패턴 모두 공통된 알고리즘을 효과적으로 관리하고 확장성을 높이는 방법이지만, 사용하는 방식이 다르다. 템플릿 메서드 패턴 (Template Method Pattern) 개념 템플릿 메서드 패턴은 상속을 활용하여 알고리즘의 공통 구조를 상위 클래스에서 정의하고, 하위 클래스에서 세부 동작을 구현하는 방식이다. 구조 • 추상 클래스 (부모) • 알고리즘의 기본 흐름을 정의하는 템플릿 메서드를 제공 • 각 단계에서 호출될 추상 메서드를 선언 • 구현 클래스 (자식) • 부모가 정의한 추상 메서드를 구현하여 세부 동작을 정의 • Hook 메서드 • 템플릿 메서드의 특정 조건을 변경..

공부 2025.03.16

우테코에서의 4주차 WIL

[Facts]1. 왜 FACTORY를 사용하는지2. 순수한 가공물 (PURE FACBRICATION)3. 역할, 책임, 협력4. 상속과 조합[Feelings+Finding]1. FACTORY생성할 책임을 가지는 곳은 생성 방식을 알아야 하고, new를 통해 특정 구현체에 의존성이 생기게 된다.그래서 생성과 사용을 분리해야 한다. 사용할 때 생성하는 것이 아니라, 객체를 생성할 책임을 클라이언트로 옮겨야 좋다.그런데, 클라이언트에게도 생성할 책임을 주고 싶지 않을 때 FACTORY를 쓰는 것이다.2. 순수한 가공물어떤 행동을 추가하려고 하는데 이 행동을 책임질 만한 마땅한 도메인 개념이 없을 때는 PURE FACBRICATION을 추가예를 들어, 애플리케이션에서 DB 접근을 위한 객체 같은 개념이 이에 해..

우테코 2025.03.09

상속과 합성: 코드 재사용과 확장의 방법

프로그래밍에서 코드의 재사용과 확장을 위한 방법으로 상속(Inheritance) 과 합성(Composition) 이 있다. 두 개념 모두 기존 코드를 활용하여 새로운 기능을 추가하거나 확장하는 데 사용되지만, 그 방식과 특징은 상당히 다르다. 이 글에서는 상속과 합성의 차이점과 함께, 상속의 문제점을 합성을 통해 해결하는 방법을 살펴본다.상속(Inheritance)상속은 부모 클래스와 자식 클래스를 연결하여 부모 클래스의 코드를 재사용하는 방법이다. 상속 관계에서는 is-a 관계가 성립하며, 자식 클래스가 부모 클래스를 확장하여 새로운 기능을 추가하거나 재정의할 수 있다.상속의 특징부모 클래스의 코드를 자식 클래스에서 직접 재사용할 수 있다.부모 클래스와 자식 클래스 사이의 의존성이 컴파일 타임에 해결되..

공부 2025.03.09

우테코에서의 3주차 WIL

[Facts]1. 테스트 작성 방법2. 객체와 자료구조3. 외부 라이브러리 쓸 때 주의할 점4. Bulider 패턴5. equals()와 hashCode()[Feelings+Finding]1. 테스트 작성 방법Build-Operate-Check 패턴을 적용하여, 중복되는 부분을 메서드로 분리하여 가독성을 높일 수 있다.'테스트 당 assert 하나를 쓰자'가 아닌 '개념당 assert 문을 최소로 줄이고, 테스트 함수마다 한 개념만 테스트하자'가 더 낫다.TDD를 직접 실천해 보고 관련 서적을 읽어보니, 공감되는 부분이 많았다,,2. 객체와 자료구조히로가 추천해준 클린코드 6장을 읽어 보았습니다. 객체와 자료 구조의 차이를 이해라고, 상황에 맞는 방식을 선택하는 것이 중요하다고 느꼈습니당3. 외부 라이브..

우테코 2025.03.06
728x90