DEVELOPER B 🌱

    [페이지 교체 알고리즘] - Least Recently Used Algorithm(LRU)

    [페이지 교체 알고리즘] - Least Recently Used Algorithm(LRU)

    # 페이지 교체 알고리즘 (Paging Algorithm) 페이징(Paging) : 프로세스가 사용하는 메모리 공간을 잘게 나눠 비연속적으로 실제 메모리에 할당하는 메모리 관리 기법입니다. 다시 말해, 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애 외부 단편화가 발생하지 않게 하는 메모리 관리 기법입니다. 프레임(Frame) : 물리적 메모리(물리 메모리)를 일정한 크기로 나눈 블록 페이지(Page) : 논리적 메모리(가상 메모리)를 일정한 크기로 나눈 블록 페이지 테이블(Page Table) : 하나의 프로세스는 하나의 테이블 페이지를 가지며, 프로세스의 페이지 정보를 저장하고 있습니다. 페이지 부재(Page Fault) : 페이지 테이블 변환 과정에서 매핑 데이터를 찾지 못..

    [DS] 자료구조란? 선형(Linear) / 비선형(NonLinear)

    [DS] 자료구조란? 선형(Linear) / 비선형(NonLinear)

    자료구조(Data Structure)란? 자료구조란 말 그대로 자료를 담는 구조입니다. 다만 단순히 공간만을 말하는 것이 아니라 그 자료를 관리 및 연산하는 것까지 포함해 자료구조로 봅니다. 즉, 자료구조란 데이터를 저장하고 관리하는 방식, 방법이라고 볼 수 있습니다. 외부에서 입력된 자료(데이터)는 사용하기 위해서 저장 공간이 필요합니다. 그리고 그 자료를 필요에 따라 읽거나 쓰고, 삽입하거나 삭제하고, 수많은 입력 데이터 중 원하는 데이터를 탐색하는 등의 연산을 합니다. 자료구조란 결국 이 저장공간과 지원되는 연산들이라고 볼 수 있습니다. 지원되는 연산에 따라 다양한 자료 구조가 있으며 적절한 자료구조를 사용하는 것은 보다 나은 알고리즘을 사용할 수 있게 만듭니다. 자료구조는 크게 선형(Linear)..

    [Java] 변수의 명명 규칙과 표기법

    [Java] 변수의 명명 규칙과 표기법

    # 변수의 명명 규칙 프로그래밍에서 사용하는 모든 이름을 식별자(identifier)라고 하며 식별자는 같은 영역 내에서 서로 식별 될 수 있어야 합니다. 변수의 이름 역시 식별자로 다음과 같은 규칙을 지키며 서로 구분될 수 있게끔 이름을 지어야 합니다. 기본적으로 문자로 이루어지며 추가적으로 숫자와 특수문자 '_' 와 '$'를 이름에 사용할 수 있습니다. int apple; // 문자 int apple1;// 문자 + 숫자 int _apple;// '_' + 문자 int $apple;// '$' + 문자 int _$apple1;// '_' + '$' + 문자 + 숫자 숫자로 시작해서는 안됩니다. 시작은 무조건 문자 또는 '_' 또는 '$'만 가능합니다. int banana10;// 가능 int 10ba..

    [Java] 자바 언어의 특징

    [Java] 자바 언어의 특징

    최근 '자바의 정석' 책을 보다가 자바 언어의 특징을 보고, 좋은 내용인 것 같아 기억하기 위해서 따로 적어두기로 했다. 1. 운영 체제에 독립적이다 기존의 언어는 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운영체제에 적용하기 위해서는 많은 노력이 필요하였지만, 자바에서는 더 이상 그런 노력을 하지 않아도 된다. 이것은 일종의 에뮬레이터인 자바가상머신(JVM)을 통해서 가능한 것인데, 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이어서 썬에서는 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM..

    [Java] 변수의 원시 타입과 래퍼 클래스(Primitive Type & Wrapper Class)

    [Java] 변수의 원시 타입과 래퍼 클래스(Primitive Type & Wrapper Class)

    자바 코드를 보면 종종 변수가 같은 정수형인데도 어느 곳에서는 int를 사용하고 다른 곳에선 Integer를 사용하는 것을 볼 수 있습니다. 왜 같은 형인데도 표기 방법이 다를까요? 이것은 변수의 원시 타입(Primitive Type)과 래퍼 클래스(Wrapper Class)의 관계로 알 수 있습니다. # 원시 타입 (Primitive Type) • 기본형이라고도 부르며, 실제 연산에 사용되는 변수로 모두 8 종류가 있습니다. (byte, short, int...) • 기본형은 반드시 사용하기 전에 선언되어야 합니다. • OS에 따라 자료형의 길이가 변하지 않습니다. • 비객체 타입으로, null 값을 가질 수 없습니다. 여기서 중요한 것은 Primitive Type은 비객체 타입이라는 건데요. 프로그램..

    [Git] Git이란? (feat. Git과 Github의 차이)

    [Git] Git이란? (feat. Git과 Github의 차이)

    1. 깃(Git)이란? 형상 관리 도구(Configuration Management Tool)이면서 분산 버전 관리 시스템(Distributed Vesrion Control System, DVCS)의 한 종류. 쉽게 말하면, 프로그램의 소스 및 파일의 변경 사항을 추적하면서 관리하며(→ 형상 관리 도구) 동시에 프로그램의 소스 및 파일을 여러 곳(개발에 참여하는 PC, 저장소 등)에 분산해서 저장해 관리하는 툴로, 프로그램의 버전 관리 및 협업에 편리함을 제공해준다. 한마디로 깃이란 프로그램 소스 및 파일의 이력을 분산으로 관리하는 툴로 프로그램의 버전 관리 및 협업에 이용된다. 2. 깃(GIT)은 왜 필요할까? (상황1) 오랜만에 뜯어본 코드에서 내가 개발했던 기능의 코드가 어느 순간 수정이 되어있었다..

    [Spring] 스프링 부트(Spring Boot)란?

    [Spring] 스프링 부트(Spring Boot)란?

    항상 스프링 이야기에 따라 붙는 스프링 부트란 무엇일까요? 오늘은 스프링 부트(Spring Boot)에 대해서 정리해보았습니다. 1. 스프링 부트(Spring Boot)란? "Spring Boot helps you to create stand-alone, production-grade Spring-based applications that you can 'just run'." "스프링 부트는 당신이 독립적이며 생산적인 수준의 스프링 기반 애플리케이션을 만들 수 있도록 도와줍니다. 당신은 "그저 실행"만 하세요" 스프링 부트 래퍼런스에서 스프링 부트 소개글에 제일 앞에 써있는 문장입니다. 좀 더 의미가 와닿게 의역을 더했지만, 어쨌든 저 한문장이 스프링 부트를 가장 잘 표현하는 문장이라 생각합니다. 스프링..

    [Spring] 스프링(Spring)이란?

    [Spring] 스프링(Spring)이란?

    스프링(Spring)이라는 단어는 웹 개발을 공부해봤다면 한번 쯤은 꼭 들어봤을 만큼 유명합니다. 또한 스프링과 함께 스프링 부트(Spring Boot) 묶여 자주 언급되곤 합니다. 스프링에서 공부한 내용을 포스팅하기에 앞서, 누군가 저에게 "스프링이 도대체 뭐야? 스프링 부트는 또 뭐고?" 라고 물어본다면 정확하게 스프링이 무엇이고 스프링 부트가 무엇이라고 대답하지 못하겠다는 생각이 들었습니다. 그래서 두 개의 포스팅에 걸쳐서 스프링과 스프링 부트에 대해 알아보고 정리해보기로 했습니다. 1. 스프링(Spring)이란? "자바 언어를 기반으로 엔터프라이즈 개발을 위한 경량형 오픈소스 프레임워크" 1-1. 프레임워크(Framework) 사실 스프링은 '스프링 프레임워크'가 좀 더 정확한 용어입니다. 즉, ..