분류 전체보기
확장 가능한 json 형식
익숙하게 사용했던 패턴이지만 표준인 줄 모르고 넘어갔던 내용을 스프링의 API 작성을 공부하던 중에 다시 보게되어 확실히 정리하기위해 포스팅함 Django의 Serailizer에 many=True 옵션을 주는 경우 + Spring에서 @RestController를 사용해 Entity를 그대로 반환하는 경우 API의 response를 보면 아래와 같이 []배열 형태로 Json이 반환된다. [ { "id": 1, "name": "newhello", "address": null, "orders": [] }, { "id": 2, "name": "member1", "address": { "city": "서울", "street": "test", "zipcode": "1234" }, "orders": [] }, { ..
[운영체제] Ch1. 서론
운영체제(공룡책)을 읽고 정리한 글입니다. 운영체제란? 컴퓨터 하드웨어를 관리하는 소프트웨어이다. 또한 응용 프로그램을 위한 기반을 제공하며 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중재자 역할을 수행한다. 운영체제는 IOT를 포함하는 자동차와 스마트홈 기기에서 스마트폰, PC, 클라우드 컴퓨팅 환경까지 어느 곳에나 존재한다. 전체 컴퓨터 시스템은 크게 위 사진처럼 분류할 수 있다. 하드웨어, 운영체제, 응용 프로그램 및 사용자. 운영체제의 역할은 사용자와 시스템 두 관점에 따라 나뉠 수 있다. 사용자 관점 사용자는 일반적으로 노트북, 모니터, 키보드, 마우드 등으로 구성된 PC 앞에서 작업한다. 이러한 시스템은 한 사용자가 자원을 독점하도록 설계되었으며, 시스템의 목표는 사용자가 수행하는 작업의 효율을..
마이크로서비스를 위한 git branch 생성 자동화
서비스 branch 간의 의존성을 최소한으로 하고, 하나의 branch를 하나의 개별적인 레포지토리처럼 사용할 수 있는 branch 생성, 병합 전략을 만들어 보았다. 잘못된 점이나 추가할 사항이 있다면 가감없이 피드백 부탁드립니다! 먼저 일반적인 Branch 명명 규칙을 알아보자 1. Master Branch 레포지토리를 새로 만들면 가장 먼저 만들어지는 브랜치 Release(배포) 할 수 있는 브랜치의 이력을 관리하기 위한 최상위 브랜치로 사용된다. 즉시 배포 가능한 상태만을 관리한다. 2. Dev Branch 다음 출시 버전을 개발하는 브랜치 Master에서 분기되어 기능 개발을 위한 브랜치들을 병합하기 위해 사용한다. 일반적인 모놀리식 아키텍처에서는 이 브랜치를 기반으로 개발이 진행된다. 기능 개..
[프로그래머스] 다리를 지나는 트럭(C++) level2
Queue를 사용하는 문제이다. 문제에서 주어진 대로 트럭이 다리를 지나가는 과정을 구현하면 된다. 현재 차례의 트럭이 다리의 최대 무게 때문에 못 지나가는 경우, 무게가 0인 트럭을 지나가게 하도록 대체 할 수 있다. 핵심 while 문 내부 코드 분석 if(weightSum + now_weight
[프로그래머스] level2 순위 검색 (Python)
입력이 50,000이고, 쿼리가 100,000이다. 쿼리가 10만이라서 쿼리에 대한 답은 log 시간복잡도가 필요할거라고 감을 잡았다. 그리고 "java backend junior pizza 150" 위와 같은 문자열이 들어오면 - and - and - and - 1000 - and - and - and pizza 1000 - and - and junior and - 1000 ... 이러한 쿼리의 답에 모두 속하게 된다 그래서 각 info마다 어떤 쿼리의 답이 될 지 모르기 때문에 모든 쿼리에 대한 경우의 수를 모두 구해야겠다고 생각했다. _info = [i.split(' ') for i in info] _query = [] for q in query: a = q.split(' and ') la = a[..
[Docker] 이미지와 레이어(layer) 구조
도커의 이미지는 컨테이너를 만드는 '압축파일'이라고 생각하면 이해가 편하다. 도커 이미지는 도커 컨테이너를 만들기 위한 모든 정보를 가지고 있다. 한 번 만들어지면 이미지 내의 정보는 절대 변하지 않으며, 이미지를 통해서 컨테이너가 만들어진다. 이미지는 컨테이너를 만들어도 사라지지 않으며 여러 개의 컨테이너를 만들 수 있다. 도커 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 보통 용량이 수백MB이다. 처음 컨테이너를 만들기 위해서 이미지를 다운로드하는 건 당연히 그럴 수 있다. 그런데 이미지의 불변성 때문에 현재 이미지에 수정사항이 생겨 파일을 단 하나 추가된 이미지를 새로 다운로드한다고 가정하자. 기존 이미지에 파일 하나 추가했다고 수백MB를 다시 다운받는다면 매우 비효율적일 수 ..
[JPA] Java Persistence API
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 초급자를 위해 준비한 [백엔드, 웹 개발] 강의입니다. JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자 www.inflearn.com 김영한 님의 자바 ORM 표준 JPA 프로그래밍 강좌를 듣고 정리한 내용입니다. ORM이란? Object Relational Mapping(객체 관계 매핑) 객체는 객체대로 설계한다. 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다. ORM 프레임워크가 중간에서 매핑한다. 대중적인 언어에는 대부분 ORM 기술이 존재한다. JPA의 동작 JPA가 JAVA 애플리케이션에서 어떤 순서로 동작하는지 간단하게 알아볼 ..
[컴퓨터 구조] 다중 프로세서 시스템 #2
[컴퓨터 구조] 다중 프로세서 시스템 #1 MIMD 조직의 다중프로세서 구조에 대해서 알아보자. MIMD의 밀결합 방식이란? 주기억장치가 어느 한 프로세서에 속하지 않고, 모든 프로세서들에 의해 공유되는 방식을 의미한다. 프로세서는 분 hyeo-noo.tistory.com MIMD의 소결합 방식이란? 프로세서들이 기억장치를 공유하지 않고, 각 프로세서가 자신의 기억장치를 별도로 가지고 있는 방식이다. 소결합 방식을 사용하는 다중 프로세서 시스템을 분산-기억장치 시스템 구조라고 부르겠다. 분산-기억장치 시스템 분산-기억장치 시스템의 특징은 다음과 같다. 각 프로세서가 자신의 기억장치를 별도로 가지고 있기 때문에, 프로세서가 실행할 프로그램이 컴파일 단계에서부터 별도로 작성되어 각 프로세서의 기억장치로 적재..
[컴퓨터 구조] 다중 프로세서 시스템 #1
MIMD 조직의 다중프로세서 구조에 대해서 알아보자. MIMD의 밀결합 방식이란? 주기억장치가 어느 한 프로세서에 속하지 않고, 모든 프로세서들에 의해 공유되는 방식을 의미한다. 프로세서는 분산되어있지만 기억장치를 공유하기 때문에 각각의 프로세서가 기억장치라는 매개체를 통해서 밀접하게 연관되어 있다는 뜻의 밀결합 방식이라고 생각된다. 밀결합 방식을 사용하는 다중 프로세서 시스템을 공유-기억장치 시스템 구조라고 부르겠다. 공유-기억장치 시스템 이 시스템의 장점은 다음과 같다. 프로세서들이 공통으로 사용하는 데이터들이 공유 기억장치에 저장되므로, 별도의 프로세서 간 통신 메커니즘이 필요하지 않다. 프로그램 실행시간 동안에 각 프로세서들이 처리할 작업들을 동적으로 균등하게 할당할 수 있기 때문에, 프로세서 이..
[백준 14867] 물통 (C++)
14867번: 물통 표준 입력으로 물통 A의 용량을 나타내는 정수 a(1 ≤ a B로 물 이동 B->A로 물이동 현재 상태로부터 총 6가지의 상태로 변화할 수 있다. 하지만 bfs의 특성상 다음 상태가 이미 나온적..