예림언니와 페어 프로그래밍으로 테스트 코드를 작성하던 중 멘토님께서 알려주신 Prameterized Test를 적용해 보기로 했다. 사용자 이름에 1자 ~ 30자 제한이 있는 상황에서, 사용자 이름이 범위를 초과해 실패하는 테스트를 짜려고 @ValueSource(strings = {"", "a".repeat(31)})를 썼는데, @ValueSource에는 "a".repeat(31)와 같은 메서드는 사용할 수 없었다. 일단은 @ValueSource(strings = {"a", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"})로 사용을 했는데, 아무리 생각해도 이 문제를 해결할 수 있는 기능이 있을 것 같다는 강한 직감이 왔다..😂😂 그리고 ├─ 이름을 2 ~ 30자 범위를 초과 입력해 유저 ..

알고리즘 스터디 중에 2차원 배열로 나타나 있는 좌표들 중에 3가지 좌표를 선택해 어떤 처리를 하고 정답을 구하는 문제를 풀던 중, 경우의 수를 구할 때 조합 방법으로 문제를 푸니까 오답이 나왔다.. 그리고 순열 방식으로 바꿨더니 정답이 나왔다! 왜일까?!?! 결론은 내가 푼 방식이 모든 경우를 구할 수 없다는 것이였다!! 그 이유는 선택해야하는 것이 2차원 배열의 형태이기 때문..! 혹시 무슨 말인지 이해가 안가는 사람들은 아래의 글을 읽으면 이해할 수 있을 것이라고 믿는댜.. Q. 1에서 4까지의 숫자 중에 2가지 수를 구하는 경우의 수? 방법1) 직접해보기 →총 6가지 경우가 나온다! 방법2) 조합의 갯수를 구하는 알고리즘 이용 (nCr = n-1Cr-1 + n-1Cr) import java.uti..

❓ 로깅, 왜 필요한데? 버그에 대한 유용한 정보 제공 프로그램 성능에 관한 통계와 정보 제공 💁🏻♀️ 그냥 println으로 로깅하면 안되나요? 상황별로 로그를 조정, 처리 ❌ 로그를 별도로 저장 ❌ 대량의 로그를 print하면 성능↓ 🔎 로깅 프레임워크 java,util.logging Apache Commons logging Log4J Logback SLF4J (Simple Logging Facade for Java) ✔️ SLF4J : 로깅 라이브러리들을 추상화해 놓은 것 (퍼사드 패턴 사용) : SLF4J의 구상체로 Logback, Log4J2 등을 사용할 수 있음 💡 Logback과 Log4J2와 같은 로깅 프레임워크를 번갈아 싶을 때, 코드를 바꾸지 않기 위해서 나온 것 🔎 로그 레벨 : 어..
시스템 설계를 어느정도 마쳤다면, 이 설계가 요구사항(시스템 용량, 성능 요구사항)에 부합하는지 개략적인 규모를 추정해야 한다! (ex. Query Per Second, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수) 일단, 규모 확장성을 표현하는 데 필요한 것들을 알아보자 🔎 2의 제곱수 데이터는 2진수로 표현되어 있기 때문에 데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지 알아야 함! 데이터의 최소 단위 = 1바이트 = 8비트 = 아스키 문자 하나가 차지하는 메모리 크기 2의 X제곱 축약형 10 1KB 20 1MB 30 1GM 40 1TB 50 1PB 🔎 응답지연 값 : 응답을 지연 시키는 연산들과 지연 시간을 알아야 함! 캐시 참조 → 뮤텍스 락/언락 → 주 메모리 참조 → Zip..
📌 (결론부터!) 시스템 규모 확장을 위한 기법들웹 계층은 무상태 계층으로모든 계층에 다중화 도입가능한 한 많은 데이터를 캐시할 것여러 데이터 센터를 지원할 것정적 콘텐츠는 CDN을 통해 서비스할 것데이터 계층은 샤딩을 통해 그 규모를 확장할 것각 계층은 독립적인 서비스로 분할할 것시스템을 지속적으로 모니터링하고, 자동화 도구들을 활용할 것 단일 서버🙋🏻♀️ 단일 서버에서 사용자 요청이 처리되는 과정?1️⃣ DNS를 통해 도메인 주소를 IP주소로 변환2️⃣ IP주소로 HTTP 요청3️⃣ 서버에서 요청에 대한 응답으로 JSON, HTML을 제공 ---- 서비스 규모가 확장된다면 일반적으로 그 다음은? ----> 웹/모바일 트래픽을 처리하는 서버(웹 계층)와 데이터베이스 서버(데이터 계층)를 분..

📎 스프링 공식 문서 Core Technologies :: Spring Framework Foremost amongst these is the Spring Framework’s Inversion of Control (IoC) container. A thorough treatment of the Spring Framework’s IoC container is closely followed by comprehensive coverage of Spring’s Aspect-Oriented Programming (AOP) technologi docs.spring.io 1️⃣ 의존성 2️⃣ IoC 3️⃣ DDD 4️⃣ ApplicationContext 5️⃣ Dependency Injection 1️⃣ 의존성 - ..

Domain Driven Design : 도메인 주도 설계 ❓도메인 - 사용자가 어플리케이션을 사용하는 대상 영역 - 주로 비즈니스 그자체 (ex. 주문관리, 금융) 도메인의 복잡성을 해소하기 위해 모델을 만듬 ❔ 모델(도메인 요소) Domain Element Status/Behavior Entity, Value Object(VO), Aggregate Status and Bahavior Data Transfer Object(DTO) Status only Sevice, Repository Behavior only - Entity 다른 엔티티와 구별할 수 있는 식별자를 가지고 있음 (개별성) 시간에 따라 상태가 변경 - VO(Value Object) 각 속성이 개별적으로 변화하지 않고 그 자체로 고유한 불변..

https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net dp[a][b] -> 기준점에서 (a,b) 점까지의 구간합 import java.util.*; public class Main { public static int N, M; public static int[][] table; public static int[][] dp; public static void dynamic(int x1, int y1, int ..