[Spring 핵심 원리 이해] 4. 싱글톤 컨테이너
·
Spring
이전 글에서 우린 스프링 컨테이너가 어떻게 스프링 빈을 관리하고 사용하는지 알아보았다. 스프링 컨테이너의 상속 관계와 스프링 빈을 조회하는 방법이 중심 내용이었다.  이번 시간에는 싱글톤 컨테이너에 대해 알아보는 시간을 갖도록 하겠다.  1. 싱글톤 패턴이란? AppConfig와 같이 DI 컨테이너는 사용자의 요청을 처리하는 역할을 수행한다. 그런데 요청하는 클라이언트가 하나가 아니라 여럿이라면 어떨까? 현재 우리가 작성한 AppConfig는 요청이 일어날 때 마다 객체를 새로 생성하고 있다. 요청의 양이 많아지면 더 많은 객체를 생성해야 하기 때문에 효율적이지 않아 보인다.반환되는 클래스의 인스턴스를 1개만 생성하도록 해 그 참조값을 반환 값으로 줄 수 있다면 더 효율적이지 않을까? 이것이 싱글톤 패턴..
[알고리즘] DP 알고리즘 (동적 계획 알고리즘, 플로이드 알고리즘)
·
알고리즘
DP 알고리즘이란 무엇인가? DP 알고리즘이란 Dynamic Programming 알고리즘, 즉 동적 계획 알고리즘을 의미한다.  DP 알고리즘은 입력크기가 작은 부분 문제들을 해결한 후 그 해들을 이용해 보다 큰 크기의 부분 문제들을 해결해 나간다. 그리고 결국은 원래 주어진 입력의 문제를 해결하는 것이 DP 알고리즘의 목표인 것이다.  그런데 언뜻 보면 DP 알고리즘은 분할 정복 알고리즘과 비슷해보인다.  분할 정복 알고리즘 또한 주어진 문제를 부분으로 나누고부분해의 합을 통해 원래 주어진 입력 값의 해를 구하는 알고리즘이기 때문일 것이다. 하지만 분할 정복 알고리즘과 DP 알고리즘은 차이점을 가지고 있다.  분할 정복 알고리즘은 이렇게 입력 문제 A를 더 이상 나눌 수 없는 D,E,F,G로 나누고,..
[Spring 핵심 원리 이해] 3. 스프링 컨테이너와 스프링 빈
·
Spring
저번 시간에 애플리케이션 전체의 구성하는 AppConfig가 어떻게 제어의 역전과 의존관계 주입을 할 수 있는지그리고 스프링을 이용한 스프링 컨테이너와 스프링빈으로 AppConfig를 어떻게 활용할 수 있는지 알아보았다. 이번 시간에는 스프링 컨테이너와 스프링 빈에 대해서 조금 더 알아보도록 하자! 1. 스프링 컨테이너 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 이런 코드를 통해서 우리는 OrderApp과 MemberApp에 스프링 컨테이너를 활용했었다. 이 중 ApplicationContext를 우리는 스프링 컨테이너라고 한다. 그런데 ApplicationContext와 A..
[운영체제]1-2 운영체제의 태동
·
운영체제
지난 포스팅에서 운영체제가 무엇인지 알기 위해 운영체제의 개념에 대해 알아보았다. 그럼 이 운영체제는 어떻게 생겨나게 된 것일까?  1.  고정 프로그램 컴퓨터 시대 - 1940 년대이 당시 컴퓨터는 현재 우리가 사용하는 컴퓨터와는 상당히 다른 모습을 가지고 있다.이 시기는 소프트웨어라는 개념 자체가 존재하지 않고 컴퓨터의 모든 기능을 하드웨어로 만들었다. 이때의 컴퓨터는 단지 실행하고자 하는 하나의 작업을 수행하는 기계에 불과했다.  어떤 작업(이제 작업을 프로그램이라 부르겠다)을 기게에 심고 나면, 그 컴퓨터는 그 작업만을 수행할 수 있었다.즉 하나의 기계는 하나의 기능만을 수행할 수 있었던 것이다. 그렇기에 새로운 기능을 구축하는 일은 매우 어려운 일이었다. 당연히 CPU와 메모리의 개념이 분리되지..
[Spring 핵심 원리 이해] 2. 객체 지향 원리 적용
·
Spring
해당 포스팅은 https://camuscoding.tistory.com/6 [Spring 핵심 원리 이해] 1. 예제 만들기해당 포스팅은 인프런에서 강의중이신 김영한 선생님의 스프링 강의를 듣고 복습하는 목적으로 작성되었습니다.https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%Bcamuscoding.tistory.com이전 포스팅과 연결됩니다! + 역시나 김영한 선생님의 강의를 복습하는 용도입니다.저번 포스팅때 주문과 할인 도메인까지 함께 만들어 보았습니다. 이번 포스팅에는 우리가 지금까지 작성했던 코드가 어떤 문제점을 가지고 있는지 그리고 이 코드들을 스프링을 활용해..
[Spring 핵심 원리 이해] 1. 예제 만들기
·
Spring
해당 포스팅은 인프런에서 강의중이신 김영한 선생님의 스프링 강의를 듣고 복습하는 목적으로 작성되었습니다.https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8 스프링 핵심 원리 - 기본편 강의 | 김영한 - 인프런김영한 | 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보www.inflearn.com  인텔리제이 및 스프링 부트 설치는 생략하겠습니다!1. 비즈니스 요구사항 설계먼저 어떤 프로젝트를 만들 것인지 요구..
[운영체제] 1-1 운영체제 개념
·
운영체제
운영체제(Operating System)란 무엇일까? 운영체제는 실체가 있는 '소프트웨어'로 컴퓨터를 관리하는 특별한 기능의 코드 집합 혹은 프로그램이다.  운영체제의 정의 사용자와 컴퓨터 하드웨어 사이에서 중계 역할을 하면서, 프로그램의 실행을 관리하고 제어하는 소프트웨어컴퓨터가 켜질 때 메모리에 적재되어 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 소프트웨어운영체제는 컴퓨터의 자원을 독점적으로 관리하는 특별한 소프트웨어이를 다시 풀어 써보면 운영체제는 우리가 전원을 켜면 가장 먼저 만나도록 약속된 소프트웨어이다. 예를 들어 윈도우, 리눅스, 맥 OS 등등 다양한 운영체제가 존재할 것이다. 그리고 이 소프트웨어는 사용자가 컴퓨터를 '잘'사용할 수 있도록 돕는다. 그리고 이를 위해 운영체제..
[운영체제] 0. 운영체제 공부 시작
·
운영체제
컴퓨팅 분야에서 프로그래머(programmer)는 컴퓨터 프로그래밍을 하는 사람이다. (위키백과)  좋은 프로그래머는 어떻게 될 수 있을까? 어떤 공부를 해야할까? 이런 질문들을 던지던 중 결국 좋은 프로그래머가 되려면 컴퓨터를 잘 이해하는 것이 가장 중요하다는 생각이 들었다. 하지만 학교에서 운영체제를 비롯한 컴퓨터구조, 컴퓨터 네트워크, 자료구조 등등..이런 주요 CS 수업을 들었음에도 CS 지식들이 머리 속에서 정리되지 않고 있다고 느껴졌다. 그래서 다시 기본적인 CS 공부를 시작해보려고 한다. 그 시작은 운영체제이다.  앞으로 포스팅 될 운영체제 글들은  https://www.booksr.co.kr/product/%EB%AA%85%ED%92%88-%EC%9A%B4%EC%98%81%EC%B2%B4%..