본문 바로가기

공부 기록/영상 후기

(184)
[10분 테코톡] 카프카의 탐색 알고리즘 https://youtu.be/By77aC9Oe3Q - 탐색 알고리즘 : 그래프의 모든 정점들을 특정한 순서에 따라 방문하는 알고리즘 그래프 - 정점과 간선으로 구성된, 한정된 자료구조 - 각각의 지점을 정점, 정점과 정점의 연결을 간선이라고 한다. DFS(깊이 우선 탐색) - 가장 직관적이고 구현하기 쉬운 탐색 방법 - 현재 정점과 연결된 정점들을 하나씩 갈 수 있는지 검사하고, 특정 정점으로 갈 수 있다면 그 정점에 가서 같은 행위를 반복한다. - 같은 정점을 다시 방문하지 않도록 정점에 방문했다는 것을 표시해준다. - 재귀 함수를 통해 구현한다. - 단점 : 재귀 함수를 이용하기 때문에 함수 호출 비용이 추가로 들어가며, 재귀 깊이가 지나치게 깊어지면 메모리 비용을 예측하기 어렵다. 최단 경로를 알..
네이버의 MongoDB 활용 사례 및 Cloud DB 소개 : MongoDB X NAVER Cloud 2021 Online Conference https://youtu.be/V_Zs1BmAFoI 네이버 클라우드에서 몽고 디비는 주요 서비스의 주요 기능 DB로 사용되고 있다. 또한 다양한 목적으로 다양한 서비스에서 사용하고 있다. 네이버에서 MongoDB가 확산되는 이유 Issue - 개인화 영역의 방대한 데이터 처리 필요(data size, traffic) - 조회에 대한 다양한 조건 필요(secondary index) - 데이터 및 트래픽의 분산 처리 및 조회 성능을 극대화할 DB 필요 ===> Scale out Issue - 네이버 내 다양한 서비스에서 유사한 기능 필요(multi platform) - 개발 resource의 과다 투입 및 서비스 간 type 일치 문제 - 유연한 스키마를 제공하고 secondary index를 제공하는 DB..
코딩테스트에서 많이 사용되는 dynamic programming(다이나믹 프로그래밍, 동적 계획법)의 개념과 언제 어떻게 사용할 수 있는지 두 가지 예제를 통해 살펴봅니다~ https://youtu.be/GtqHli8HIqk Optimization problem - 문제를 해결하는 최적의 답을 찾아야 하는 문제 - optimal solution은 하나 이상일 수 있다. - maximum 혹은 minimum value를 가지는 솔루션을 찾는 문제들이 주를 이룬다. - ex) 가장 빨리 도착하는 경로의 소요 시간은? 언제 주식을 사고 팔 때 가장 수익이 높은지? 다이나믹 프로그래밍(DP, Dynamic programming) - optimization problem을 해결하는 전략 중 하나 - subproblem(s)의 optimal solution(s)을 활용해서 문제의 optimal solution을 찾는 방식 - 겹치는(overlapping) subproblems은 한 번..
divide and conquer, 분할정복이라고 하죠~ 개념과 동작 방식을 설명하구요, merge sort를 통해 divide & conquer가 어떻게 동작하는지 살펴봅니다~ https://youtu.be/aj3vw_KDmxc 분할 정복(Divide and Conquer) - 어떤 문제를 유사한 형태를 가지는 더 작은 크기의 서브 문제들로 나눈 후 이들을 재귀적으로 같은 방식으로 해결한 뒤 각 서브 문제들을 해결한 결과를 활용하여 원래 문제를 해결하는 방식 - 병합 정렬, 퀵 정렬, 이진 탐색 등에 사용된다. - divide : 문제를 작은 크기의 서브 문제들로 나눈다. - conquer : 서브 문제들을 동일하게 재귀적인 방식으로 해결하고, 만약 더이상 나눌 수 없다면 직접 해결한다. - combine : 서브 문제들의 솔루션을 합쳐서 원래 문제의 솔루션을 만든다.
스프링 부트 2.0 Day 31. Redis 사용하기 https://www.youtube.com/live/7kpjnBsmuvg?feature=share https://hub.docker.com/_/redis/ redis - Official Image | Docker Hub Quick reference Supported tags and respective Dockerfile links 7.2-rc2, 7.2-rc, 7.2-rc2-bullseye, 7.2-rc-bullseye 7.2-rc2-alpine, 7.2-rc-alpine, 7.2-rc2-alpine3.18, 7.2-rc-alpine3.18 7.0.11, 7.0, 7, latest, 7.0.11-bullseye, 7.0-bullseye, 7-bullseye, bullse hub.docker.com htt..
[10분 테코톡] 리차드의 @Transactional https://youtu.be/taAp_u83MwA 트랜잭션 : DB에 모두 저장되거나, 모두 저장되지 않는 작업의 단위 - 작업 단위를 묶어주지 않았을 경우, 서로 다른 커넥션을 사용하는 경우 => 개별 작업으로 처리됨 - 작업 단위를 트랜잭션으로 묶었을 경우 => 전부 반영 또는 미반영 AOP의 등장 트랜잭션의 시작 -> {관심사 로직 수행} -> 커밋 또는 롤백 프록시 객체의 도입 => 타겟 객체를 상속해서 재정의한 클래스 - 선언적 트랜잭션 관리 => @Transactional - 프로그래밍 방식 트랜잭션 관리 => 코드로 직접 작성하는 방식 요약 - 빈 생성 시, @Transactional 어노테이션이 있으면 프록시 객체가 빈으로 등록된다. - 스프링이 제공하는 선언적 트랜잭션 관리를 통해 서비..
ㄷㄷㄷ: Domain Driven Design과 적용 사례공유 / if(kakao)2022 https://youtu.be/4QHvTeeTsj0 레거시 서버 - 모놀리식 - 기술 부채 - 유지보수의 어려움 - 기능의 고착화 Domain Driven Design(도메인 주도 설계) - 도메인의 모델과 로직에 집중 - 유비쿼터스 랭귀지, 보편적 언어 사용 => 업무 용어 통일 - 소프트웨어 엔티티와 도메인 간 개념의 일치 Bounded Context : 범위를 구분해놓은 하위 도메인 개념 Context Map : Bounded Context 간의 관계를 보여준다. Aggregate : 라이프사이클이 같은 도메인을 한데 모아놓은 집합 DDD의 대표적인 아키텍처 - Layered Architecture : User Interface > Application > Domain > Infrastructure..
DDD (Domain-Driven Design)시작하기 https://youtu.be/td5VRmxntmw 도메인 ---(추상화)---> 모델 ---(실체화)---> 소프트웨어 도메인 모델 : 도메인 개념을 추상화한 것. 도메인을 이해하기 위한 개념 모델. 개발을 위해서는 구현 모델 필요 도메인 오브젝트 : 도메인 모델을 소프트웨어에서 동작할 수 있도록 나타낸 것 DDD란? 모델이 그 가치를 잊지 않고, 소프트웨어 개발에 기여하도록 도메인을 잘 표현한 모델을 만들고, 개발을 하면서도 변화를 반영할 수 있도록 하는 것