콜백함수함수를 변수처럼 사용하는 개념분기문으로 다른 로직을 담긴 함수들을 선언하여 처리하기 어려운 상황에 유용void make_donut(func f){ //.. f(); //..}make_donut 함수를 사용하고 싶은 프로그래머는 자신이 정의한 현지화 함수를 전달위의 함수 변수를 콜백 함수라고 함일반적으로 인자로 사용되는 콜백 함수는 호출되는 함수를 사용하는 개발자가 작성따라서 콜백함수를 호출하는 것은 보통 다른 모듈 혹은 스레드 비동기 콜백콜백 함수의 처리 속도가 오래걸리는 상황인데 이를 기다려줄 수 없다면?// 호출 스레드make_donut(formed_D); // 아래 작업을 기다려줄 수 없을 때 -> 비동기 콜백함수를 사용하기something_important(); // 기다려..
분류 전체보기
yml 파일 생성 중에 모델을 아직 만들지 않았을 경우 에러 발생-> 더미로 에러 발생 안하게 하면서 수정 url -> subscription -> subscriptionssubscriptions 하나만으로 '사용자 구독한 블로그 목록을 요청'/blogs/subscriptions구독 해지 요청 -> 사용자가 특정 블로그 구독 해지 요청 url에 버전을 넣는게 좋을까 고민 -> 상위호환성 하위호환성url로 호환성을 챙기는게 좋은 것 같지 않는 의견api가 많으면 복잡성이 많아짐프로토콜 버퍼 상위호환성 하위호환성논쟁이 있는 영역 블로그 상태메시지 생성에서 id인자는 사용자 아이디로 필요가 없을 것블로그 인증 -> body에 url 으로 요청 상태 코드 관한 고민201 코드 같은 것은 쓰면 좋음4045..
개요운영체제 목적운영체제 없이 프로그램 실행은 가능자동 적재 및 멀티 태스킹 지원프로세스 목적프로그램 동시 실행하기 위해프로세스는 상황정보 저장된 구조체임운영체제는 이 상황정보를 통해 스레드를 효율적으로 할당스레드 목적가용 cpu를 최대한 이용하고자 프로세스 진입함수를 추가로 생성하여 스레드 활용운영체제가 스레드 할당하며 프로세스 일시 중지 및 재시작 가능코루틴 목적동기 프로그래밍으로 비동기 가능하도록코루틴 정의로 함수의 실행 일시 중지 및 재시작 가능 CPUcpu는 메모리에서 명령어를 가져오고 명령어를 실행하는 작업만 할 수 있음 운영체제프로그램을 자동으로 적재, 멀티태스킹을 실현 해주는 역할을 함운영체제가 없어도 cpu가 프로그램을 실행하도록 할 수 있지만 적절한 메모리 영역 찾기, pc 레지스..
비동기 논의- https://hyeon9mak.github.io/why-occurs-deadlock-from-select-query/- https://happy-coding-day.tistory.com/299- https://happy-coding-day.tistory.com/299 # 레이어드 아키텍처 vs 헥사고날 아키텍처 비교- 레이어드 아키텍처에서 무리한 DIP를 추구하려고 하면- 퍼시스턴스 레이어의 메서드를 추가할 때도- 비스니스 레이어 먼저 봐야하는 복잡함이 있음- 헥사고날-> 포트 인 아웃이 많음- 기능을 찾을 때 포트먼저 봄- 퍼시턴스 어댑터를 먼저 보지 않음 - 무신사 집중 채용 중 -> 써보기 .. - 반버논 도메인주도 설계 핵심-> 얇은 책 추천 - 도메인 vs 성능 고민 - 성..
7장 - 서비스도메인 서비스가 무엇인지?스프링에서 서비스는 왜 서비스인지?서비스 컴포넌트에 추가적으로 기대하는 역할이나 책임은 무엇인지? 서비스의 컴포넌트의 역할 크게 3가지1 도메인 객체를 불러오기2 도메인 객체나 도메인 서비스에 일을 위임하기3 도메인 객체의 변경 사항을 저장하기 스프링에서의 Service @Service의 자바독 요약@Service는 에릭 에반스의 DDD에서 영감을 받아 만들어진 애너테이션서비스는 J2EE 패턴 중 하나인 비즈니스 서비스 파사드처럼 사용될 수 있음 DDD (도메인 주도 설계)DDD에서 정의하는 '서비스'란? -> 연산을 위한 컴포넌트DDD에서의 서비스 컴포넌트 (에릭에반스가 한 말)자신의 본거지를 엔티티나 값객체에서 찾지 못하는 중요한 연산이 있다. 일부는 본질..
개발 방식- 거친 도메인 모델링 > 도메인 탐구(요구사항 파악) > 시퀀스/상태 다이어그램 > api 문서 (OAS spec) ... 도메인 개발 API 개발오늘도 여러분의 API는 안녕하신가요?https://www.inflearn.com/course/lecture?courseSlug=%EC%9D%B8%ED%94%84%EC%BD%982023-%EB%8B%A4%EC%8B%9C%EB%B3%B4%EA%B8%B0&unitId=177892&tab=curriculum- 클린 아키텍처 구조에서 애플리케이션 레이어를 얇게, 프리젠테이션과 도메인 레이어를 두겁게 지향- API 기능 빨리 만들어서 배포해보기 1. 도메인 모델링 해오기 - 너무 만약에라는 가정을 너무 많이 하진 않기.. 2. AC 조건 (리스트 따로..
5장 순환참조두개 이상의 객체나 컴포넌트가 서로를 참조함으로써 의존관계에 사이클이 생기는 상황@Data class Team { private long id; private String name; private List members;} @Data class Member { private long id; private String name; private Team myTeam;}팀과 팀원의 관계를 표시한 클래스 -> 순환참조임양방향 매핑JPA Entity의 양방향 매핑은 순환참조다. 순환참조의 문제점 무한루프순환참조가 있다는 것은 무한 루프가 발생할 수 있다는 것임. 시스템 복잡도순환참조는 시스템의 복잡도를 높임. (의존성 전이 등..
// 2250년, 인류는 지구 뿐 아니라 여러 행성을 다니며 살고 있다.// 이 행성 간을 빨리 오가기 위해 새롭게 터널을 구축하려 한다.// 행성은 (x, y, z) 좌표로 주어진다.// 행성1: (x1, y1, z1), 행성2: (x2, y2, z2)// 이 때 행성간 터널 연결 비용은 min(|x1-x2|, |y1-y2|, |z1-z2|) 로 계산한다.// n 개의 행성 사이를 n-1 개의 터널로 연결하는데 드는 최소 비용을 구하는 프로그램을 작성하세요.// 입출력 예시// 입력:// data = {{11, -15, -15}, {14, -5, -15}, {-1, -1, -5}, {10, -4, -1}, {19, -4, 19}}// 출력: 4import java.util.Arrays;import ja..
[프림 알고리즘]시작 노드에서 출발해 인접 노드를 확인하면서 트리를 확장하는 노드 중심 알고리즘. 인접 리스트를 사용하기 때문에 노드 간의 연결을 효율적으로 확인하기 위해 양방향 간선을 저장.- **임의의 노드에서 시작**- 연결된 노드들의 간선 중 **낮은 가중치를 갖는 간선 선택**- **간선의 개수가 많을 때** 크루스칼 보다 유리- O(ElogV)- PriorityQueue 와 visited 배열 사용- 간선 수가 노드 수 -1 되면 전체 계산이 된 것 착안해서 계산cf) 크루스칼, 프림 모두무방향 그래프를 대상-> 크루스칼은 간선 중심 알고리즘이기 때문에 간선 단방향 저장/** * 기존 답안이나, 잘못 설명된 것이 많은 것 같아서 의아한 점은 주석으로 남김 */// 프림 알고리즘public cl..
[크루스칼 알고리즘]간선을 가중치 순으로 오름차순 정렬하고, 사이클을 검사하면서 최소 신장 트리를 구성하는 간선 중심 알고리즘.간선을 양방향으로 저장할 필요 없이 단방향만 저장해도 충분.사이클 체크 방법 -> 유니온 파인드주로 간선 수가 적을 때 사용O(ElogE) -> 간선 만큼의 정렬 복잡도를 따라감cf) 크루스칼, 프림 모두무방향 그래프를 대상-> 프림은 노드 중심 알고리즘이기 때문에 간선 양방향 저장public class Main { static int parents[]; public static int example(int[][] data, int v, int e) { int weightSum = 0; parents = new int[v + 1]; ..