[데이터베이스] - 데이터베이스 기본 개념 (Basic Concept of Database)
·
💻 Computer Science/데이터베이스
데이터베이스의 필요성 현대 사회에서 중요한 가치 판단의 기준이 되는 "정보"는 매우 중요하다. 정보란 데이터(data)를 의사 결정에 유용하게 활용할 수 있도록 처리하여 체계적으로 조직한 결과물을 말한다. 그렇다면 "데이터"란 무엇인가? 데이터는 현실 세계에서 관찰되거나 측정하여 수집한 사실이나 값을 의미한다. 자료라고 불리기도 한다. 데이터에서 정보를 추출하는 과정 또는 방법을 "정보 처리"라고 하는데, 결국 이 정보 처리가 얼마나 잘 진행되는지가 중요한 것이다. 좋은 정보를 얻기 위해서는 정확한 데이터를 많이 수집해야 하며 수집한 데이터를 체계적으로 저장했다가 필요할 때 바로 사용할 수 있어야 한다. 이를 위한 수단을 정보 시스템이라고 하는데, 정보 시스템에서 데이터를 저장하고 필요할 때 제공하는 핵..
[WSL/Ubuntu] - 자바(Java) 개발 환경 설정
·
🛠 Tool/개발 환경 세팅
WSL, Ubuntu 환경에서 자바를 설치하고 실행하는 방법을 알아보도록 하겠습니다. java / javajdk 설치 (1) 가장 먼저 WSL 시스템을 최신화합니다. sudo apt update sudo apt upgrade (2) java를 설치합니다. (java 11을 다운로드하겠습니다.) sudo apt install openjdk-11-jdk (3) java 버전을 확인합니다. java --version 만약 위의 명령어가 실행되지 않고 다음 에러를 내뱉는다면 java가 제대로 설치되지 않은 것입니다. # Command 'java' not found, but can be installed with: Linux 환경변수 설정 java가 성공적으로 설치가 되었다면, 다음은 환경변수를 간단히 설정해야 ..
[운영체제] - 운영체제 개요 (Introduction of Operating System)
·
💻 Computer Science/운영체제
컴퓨터는 데이터(Data)를 처리하고, 그 처리한 결과를 출력하거나 저장한다. 이때, 데이터를 처리하는 결과를 "정보(Informaton)"이라고 한다. 컴퓨터는 크게 하드웨어와 소프트웨어로 구성되는데, 소프트웨어는 하드웨어에 명령을 내려 작업을 수행하여 데이터를 가치 있는 정보로 변환한다. 운영체제 정의운영체제란 컴퓨터 전체를 관리하고 운영하는 소프트웨어로, 컴퓨터를 관리하기 위한 기본적인 규칙과 절차를 규정하여 컴퓨터 내의 모든 하드웨어와 응용 프로그램을 관리한다. 컴퓨터 전원을 켜면 가장 먼저 실행되는 프로그램이며 사용자나 응용 프로그램들은 운영체제를 통해서만 컴퓨터 자원에 접근 가능하다. 운영체제는 주로 다음의 역할들을 수행한다.자원 관리: 운영체제는 컴퓨터 자원을 응용 프로그램에 적절히 나누어주..
[이산수학] - Theme 05. 집합
·
📝 Software Mathematics/이산수학
이산수학의 가장 기초되는 집합에 대해서 공부합니다. 이산수학 포스팅 시리즈나 추후에 다룰 해석학 포스팅 시리즈를 잘 이해하기 위해서는 집합의 이해는 매우 필수적입니다. 이 포스팅에서 다루는 집합 내용의 난이도는 높지 않지만 꼼꼼하게 학습하시길 바랍니다. 집합의 개념 집합은 수학의 모든 분야에서 가장 기초가 되는 개념입니다. 수학의 모든 기초가 될 뿐 아니라 일상생활에서도 많이 사용되는 개념입니다. 집합을 정의하면 다음과 같습니다. 💡 (정의) 집합 공통적인 성질을 가진 객체들의 모임으로, 대문자 $A, \ B, \ C, \cdots$으로 표시한다. 그 집합을 구성하는 객체를 원소라고 하며 소문자 $a, \ b, \ c, \cdots$으로 표시한다. “$x$가 집합 $S$의 원소이다”는 $x \in S$로..
[자료구조] - 해시 테이블과 해싱 (Hash Table & Hashing)
·
💻 Computer Science/자료구조-알고리즘
해싱은 "탐색 알고리즘"에 대한 공부를 전제로 합니다. 선형 탐색, 이진 탐색 등 탐색 알고리즘에 대해서 잘 알지 못한다면 이번 포스팅의 이해가 쉽지 않을 것입니다. 그렇기에 해시 알고리즘을 공부하기 전 탐색 알고리즘을 먼저 공부하고 그 후에 이 포스팅을 읽으시는 것을 추천합니다. (탐색 알고리즘 공부하기)해싱 개요탐색 알고리즘을 공부하면 배우는 "선형 탐색"이나 "이진 탐색"과 같은 방법들은 어떤 데이터가 어떤 인덱스에 있는지에 대한 정보를 전혀 알지 못할 때 진행하는 방식이며, 키를 저장된 키값과 반복적으로 비교하는 방식으로 탐색합니다. 이러한 방식은 아주 빨라야 $O(\log n)$의 시간 복잡도를 가집니다. 이 정도 시간 복잡도만 가지더라도 괜찮지만 더욱 빠른 탐색을 필요로 하는 경우, 더욱 빠른..
[알고리즘] - 탐색 알고리즘 (Searching Algorithm)
·
💻 Computer Science/자료구조-알고리즘
탐색 알고리즘 개요여러 개의 자료 중 원하는 자료를 찾는 작업을 탐색이라고 합니다. 탐색은 컴퓨터 프로그램에서 가장 많이 사용하는 작업이며 또한 많은 시간이 요구되는 작업이기에 효율적으로 하는 것이 중요합니다. 탐색 알고리즘을 구현하기 위해 사용되는 자료구조는 매우 다양합니다. 그 중 배열을 사용하여 자료를 저장하고 찾는 방식이 가장 기초적이나, 탐색 성능을 높이기 위해서는 "이진 탐색 트리"와 같은 더 나은 방식을 사용하기도 합니다. 탐색 알고리즘의 기초 단위는 "항목"입니다. 이 항목은 간단한 숫자일 수도, 구조체가 될 수도 있습니다. 항목 안에는 항목과 항목을 구별하는 "키(Key)"가 존재하며 이를 "탐색 키(Search Key)"라고 합니다. 탐색은 바로 "탐색 키와 데이터로 이루어진 여러 항목..
[알고리즘] - 정렬 알고리즘 (Sorting Algorithm)
·
💻 Computer Science/자료구조-알고리즘
정렬 알고리즘 개요 데이터를 특정한 조건에 따라 일정한 순서가 되도록 나열하는 것을 정렬이라고 합니다. 정렬 알고리즘은 프로그래밍에 있어 가장 기초적이며 또한 매우 중요한 알고리즘입니다. 정렬 알고리즘은 자료를 탐색함에 있어 필수적입니다. 정렬 알고리즘을 사용할 때, 정렬시켜야 하는 대상을 "레코드(Record)"라고 부르고 레코드는 "필드(Field)"라고 하는 단위로 나누어지니다. 이때 레코드와 레코드를 식별해주는 필드를 "키(Key)"라고 부릅니다. 정렬 알고리즘 종류 현재까지 개발된 정렬 알고리즘은 매우 많으나, 모든 경우에서 최적의 성능을 보이는 알고리즘은 존재하지 않습니다. 즉, 상황에 맞는 알고리즘을 택하여 사용해야 합니다. 이때 효율을 평가하는 기준은 정렬을 위해 필요한 "비교 연산의 횟수..
loading