CS 지식

    블록, 논 블록, 동기, 비동기

    블록, 논 블록, 동기, 비동기

    쉽게 헷갈리는 블록 논 블록 / 동기 비동기 관련해서 나름의 정리를 해봤다. 무조건 적으로 이게 맞다기 보단 이렇지 않을까 하는 추측성 내용도 있기 때문에 매우 매우 주관적이다. 블록, 논 블록 vs 동기, 비동기 제어권을 넘긴다는 설명이 많아서 '어떤 제어권을 넘긴다는 거지? ' 생각해본 결과 스레드는 아니라 생각해서 프로세스의 제어권을 넘긴다고 가정했다. 결과 블록, 논 블록은 프로세스 제어권을 리턴하는 것으로 끝나기 때문에 함수의 결과를 기다리지 않지만 동기 비동기는 함수의 결과를 계속 확인하거나 콜백 함수로 받는다. 추상적인 개념 동기, 비동기가 추상적이라한 이유는 다음과 같다. 순차적으로 일어나는 것은 동기, 동시에 일어나는 것은 비동기라고 구분하지만, A 스레드가 B스레드를 관찰하는 행위(결과..

    Monolithic vs MicroService(MSA)

    Monolithic vs MicroService(MSA)

    Monolithic Monolithic이란 '한 덩어리로 뭉친', '하나의 구조로 된' 의미를 가지고 있다. 프로젝트 하나가 하나의 아키텍처로 뭉쳐진 구조를 뜻한다. 기존에 하나의 서버를 두고 그 서버 내에서 모든 작업을 처리하는 구조로 생각하면 편하다. Monolithic 구조의 장점 작은 규모의 프로젝트 개발 시 효율적 배포와 테스트가 간편(하나의 패키지로 묶여 있기 때문) 단점 확장의 어려움(대형 프로젝트 개발 시 확장성에서 문제가 생긴다) 하나의 서비스가 다른 서비스와 문제를 일으킬 수 있다 배포 시 모든 서비스가 중단됨 MicroService Monolithic와 반대대는 개념 전체 서비스를 잘게 나누어 이루어진 구조 하나의 애플리케이션을 기능별로 패키 징하여 여러 개의 작은 애플리케이션으로 나..

    인스턴스변수의 재할당

    인스턴스변수의 재할당

    평화로운 월요일 이력서를 제출하고 쉬고 있던 찰나에 개발자 방에 이런 질문이 올라왔다. 질문 클래스 안에서 재할당이 왜 안 되나요? 어 저거? 처음 봤을 땐 코틀린이라 생각해 전역 변수 immutable 한 변수를 변경하려고 해서 오류가 떴구나 생각했다. 근데 자바네? 토론 처음 저 문제를 봤을 때 접근제어자가 없어서 default 접근제어자가 문제라고 생각했다. 다시 생각해보니 어차피 클래스 내부에서 동작되는 건데 접근제어자 필요 없잖아.... 다른 개발자 친구랑 저 문제에 대해서 토론을 해봤는데 일단 메모리 관련 문제인 건 확신했다. 뭐가 안되면 대부분 메모리 때문이니까 이 와중 잊고 있던 사실, 전역 변수는 C, 자바는 클래스 변수, 인스턴스 변수, 지역변수 일단 해결책은 클래스의 인스턴스 변수를 ..

    객체와 클래스, 인스턴스

    정의 먼저 위키백과를 찾아보자 위키백과에선 세 분야에서의 객체에 대해 설명하고 있다. 객체지향 프로그래밍만 보면 된다는 것에 감사하자 컴퓨터 과학에서 객체 또는 오브젝트(object)는 클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며, 변수, 자료 구조, 함수 또는 메서드가 될 수 있다. 프로그래밍 언어는 변수를 이용해 객체에 접근하므로 객체와 변수라는 용어는 종종 함께 사용된다. 그러나 메모리가 할당되기 전까지 객체는 존재하지 않는다. 절차적 프로그래밍에서 하나의 객체는 자료나 명령을 포함할 수 있지만 두 가지를 동시에 포함하지는 않는다. (명령은 프로시저나 함수의 형태를 가진다). 객체지향 프로그래밍에서 객..