| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 최소신장트리
- 소프트웨어개발
- 플로이드워셜
- 2의 보수
- 정처기
- DECIMAL
- MSA
- BFS
- 백준
- 슬라이딩윈도우
- query
- 비트
- prim
- Producer
- 고정 소수점
- MST
- 바이트
- 유니코드
- 투포인터
- kruskal
- 아스키 코드
- cqrs
- 메시지 큐
- consumer
- 부동 소수점
- command
- 비동기 처리
- UTF-8
- Today
- Total
목록전체 글 (15)
munjji 님의 블로그
CQRS란?CQRS는 Command Query Responsibility Segregation의 약자- Command: 데이터를 변경하는 작업- Query: 데이터를 조회하는 작업이 둘의 책임을 분리하는 패턴이다. 보통 우리가 처음 만드는 서비스는 이런 형태이다.@PostMapping("/orders")public Order createOrder(...) { ... }@GetMapping("/orders/{id}")public Order getOrder(...) { ... } 즉, 같은 도메인 모델과 같은 저장소를 기준으로 "쓰기"와 "읽기"를 같이 처리한다.그런데 서비스가 커지면 문제가 발생한다.쓰기 로직은 검증, 트랜잭션, 정합성이 중요읽기 로직은 속도, 조인 최적화, 캐싱이 중요둘이 요구사항이 완전..
요즘 claude code를 적극 활용해서 개인 프로젝트를 진행하고 있는데,사용자의 요청사항을 처리할 때 표현되는 작업 단계의 언어에 대한 궁금증이 생겼다.내가 만난 단어들만 해도 cooking, noodling, baking 등 귀여운 단어들이 많아서 GPT를 통해 정리해보았다! 🧠 1. 사고 / 아이디어 생성 단계 (Thinking & Ideation)기본 사고Thinking : 일반적인 사고Pondering : 깊이 고민Ideating : 아이디어 생성점진적 형성Brewing : 서서히 아이디어 형성 중Percolating : 점점 명확해지는 상태Germinating : 아이디어가 막 싹트는 상태Hatching : 구체적인 아이디어가 나오기 직전가벼운 탐색 (Claude가 자주 쓰는 느낌)Noo..
투 포인터, 슬라이딩 윈도우 이 두 가지는 코딩테스트에서 자주 출제되는 핵심 패턴이지만 헷갈리기 쉽다.둘 다 배열이나 문자열에서 연속된 구간을 다룰 때 주로 사용한다. 결론부터 말하자면투포인터는 구간을 "늘렸다 줄였다" 하며 조건에 만족하는 것을 찾는다.슬라이딩 윈도우는 구간의 크기를 "고정하고 민다"투포인터 (Two Pointer)란?투포인터는 말 그대로 포인터 2개를 사용하는 방법이다.left, right 두 개의 포인터로 구간을 조절한다. 핵심은조건에 따라서 늘리거나(right++) 줄이거나(left++) 조절을 통해 조건을 만족하는 지 확인한다.투포인터를 언제 쓰냐?연속 부분합이 어떤 조건을 만족하는지 찾기정렬된 배열에서 두 수의 합 찾기특정 조건을 만족하는 가장 짧은/가장 긴 구간 찾기투포인터 ..
구조적 방법정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론이다.복잡한 문제를 다루기 위해 분할과 정복 원리를 적용한다.정보공학 방법론정보 시스템의 개발을 위해 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료 중심의 방법론이다.데이터베이스 설계를 위한 데이터 모델링으로 개체 관계도(ERD)를 사용한다.컴포넌트 기반(CBD) 방법론기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론이다.분석 단계에서 사용자 요구사항 정의서가 산출된다.소프트웨어 재사용의 이점개발 시간과 비용 단축소프트웨어 품질 향상소프트웨어 개발의 생산성 향상시스템 명세, 설계, 코드 등 문서 공유소프트웨어 재사용 방법합성 중심 : 전자 칩과 같은..
개념적 설계(정보 모델링, 개념화)정보의 구조를 얻기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정이다.개념 스키마 모델링과 트랜잭션 모델링을 병행 수행한다.논리적 설계(데이터 모델링)자료를 특정 DBMS가 지원하는 논리적 자료 구조로 변환시키는 과정이다.트랜잭션의 인터페이스를 설계한다.개념 스키마를 평가 및 정제한다.물리적 설계논리적 구조로 표현된 데이터를 물리적 구조의 데이터로 변환하는 과정이다.데이터베이스 파일의 저장 구조 및 액세스 경로를 결정한다.저장 레코드의 형식, 순서, 접근 경로, 조회가 집중되는 레코드와 같은 정보를 사용한다.데이터 모델에 표시할 요소구조(Structure): 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질을 표현함연산(Operatio..
자료 구조의 분리선형 구조 : 배열, 선형 리스트, 스택, 큐, 데크비선형 구조 : 트리, 그래프스택(Stack)리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조이다.가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO) 방식으로 자료를 처리한다.스택의 응용 분야인터럽트의 처리수식 계산 및 수식 표기법서브루틴 호출 및 복귀 주소 저장스택의 삽입(Push)과 삭제(Pop)PUSH : 스택에 자료를 입력하는 명령POP : 스택에서 자료를 출력하는 명령방향/무방향 그래프의 최대 간선 수무방향 그래프의 최대 간선 수 : n(n-1)/2방향 그래프의 최대 간선 수 : n(n-1)트리(Tree)정점(Node, 노드)과 선분(Branch, 가지)을 이용해 사이클을 이루지 않도록 구성한..
소프트웨어 공학의 기본 원칙현대적인 프로그래밍 기술을 계속으로 적용해야 한다.개발된 소프트웨어의 품질이 유지되도록 지속적으로 검증해야 한다.소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록을 유지해야 한다.폭포수 모형(Waterfall)이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 다음 단계를 진행하는 개발 방법론이다.보헴이 제시한 고전적 생명 주기 모형이다.요구사항을 반영하기 어렵다.나선형 모형(Spiral)나선을 따라 돌듯이 점진적으로 완벽한 최종 소프트웨어를 개발하는 것이다.계획 수립 -> 위험 분석 -> 개발 및 검증 -> 고객 평가 과정이 반복적으로 수행된다.애자일 모형의 주요 방법론스크럼(Scrum)XP(eXtreme Programming)기능 중심 개발(FDD; Fe..
동기와 비동기 처리의 차이에 대해서 이전 포스트에 작성해두었지만, 간략하게 회원가입 예제로 정리해보고 시작해보자.동기public String signUpSync(String email, String name) { // 모든 작업이 순서대로 끝나야 다음으로 넘어감 User user = db.save(email, name); // 1단계: DB 저장 (300ms) emailService.sendWelcome(email); // 2단계: 이메일 발송 (3000ms) imageService.setDefaultProfile(user); // 3단계: 프로필 설정 (1000ms) crmService.register(user); // 4..
비동기를 이해하기 위해 가장 먼저 이해해야 할 건 동기(Synchronous)와 비동기(Asychronous)의 차이다.동기 vs 비동기 처리동기(Synchronous)란?코드가 위에서 아래로 순서대로 실행되고, 앞 작업이 완전히 끝나야 다음 작업이 시작된다.console.log("1. 커피 주문");sleep(3000); // 3초 대기 (커피 만드는 중)console.log("2. 커피 받음");console.log("3. 자리 착석");// 출력 순서: 1 → (3초 대기) → 2 → 3 직관적이고 코드 흐름을 따라가기 쉽다. 하지만 sleep(3000) 동안 프로그램 전체가 멈춰있다. 이 상태를 블로킹(Blocking) 이라고 한다.왜 블로킹이 문제인가?혼자 쓰는 프로그램이라면 사실 큰 문제가 없..
1️⃣ 연결된 영역 찾기 (Connected Component)특징상하좌우로 연결된 것덩어리 개수 세기예시 문제백준 1012 유기농 배추백준 2667 단지번호붙이기백준 4963 섬의 개수예시 맵1 1 0 01 0 0 10 0 1 1BFS로 탐색하면덩어리 1: (0,0),(0,1),(1,0)덩어리 2: (1,3),(2,2),(2,3)➡️ 덩어리 수 = 2코드 패턴if (map[i][j] == 1 && !visited[i][j]) { bfs(i,j); count++;} 2️⃣ 최단 거리 문제 BFS는 가중치 없는 그래프에서 최단 거리를 구할 때 사용특징몇 번 이동해야 하는지최단 거리예시 문제백준 2178 미로 탐색백준 1697 숨바꼭질백준 7576 토마토예시S 0 01 1 00 0 EBFS는S →..