자바의 Queue, Stack, Deque1. Queue• 시간 순서상 먼저 저장한 데이터가 먼저 출력되는 선입선출(FIFO, First In First Out) 형식으로 데이터를 저장하는 자료구조• 대기열이라고도 함. • 큐의 뒤(Rear)에 데이터를 추가하는 것을 enqueue, 큐의 앞(Front)에서 데이터를 꺼내는 것을 dequeue라고 함.• 자바의 컬렉션에 Queue는 인터페이스만 존재하고 구현체는 LinkedList를 사용함. - enqueue 메소드 - add(value) : value를 맨 뒤에 넣음. 성공하면 true, 실패하면 예외 발생. - offer(value) : value를 맨 뒤에 넣음. 성공하면 true, 실패하면 false 반환. ..
자바의 배열과 리스트1. 배열(Array)• 번호와 그 번호에 대응하는 데이터들로 이루어진 자료 구조 • 같은 종류의 데이터들이 메모리에 순차적으로 저장됨.• 선언시 length를 정함. • 랜덤 액세스가 가능 - ※ 랜덤 액세스(Random Access)란? - 집합 내 요소의 수와 관계 없이 임의의 데이터에 바로 접근하는 기능. - 데이터에 접근하기 위해 순차적으로 조사하지 않고도 저장 장치로부터 정보의 특정 부분을 직접 검색할 수 있는 접근 방법. - 배열의 주소는 첫 인덱스의 주소를 배열의 주소로 함. - 배열은 데이터를 순차적으로 저장하고, 이 데이터들의 자료형이 모두 같기 때문에 첫 인덱스의 메모리 주소만 알면 특정 인덱스의 주소도 바로 알..
자료구조와 알고리즘1. 자료구조 (Data Structure)• 데이터를 저장하고 관리하는 방식• 데이터를 체계적으로 저장하여 메모리를 효율적으로 사용할 수 있게 하고, 빠르고 안정적으로 데이터를 처리할 수 있게 도와줌.• 알고리즘과 긴밀한 관계 - 특정 알고리즘을 구현하기 위해 꼭 사용해야 하는 자료구조가 있음. - 어떤 자료구조를 선택하는지에 따라 알고리즘이 달라질 수 있음. 2. 알고리즘 (Algorithm)• 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법• 자주 쓰이는 문제 해결 방법을 패턴화하고 이름을 붙인 것 - ex) BFS, DFS, Binary Search, Dijkstra 등 • 한 문제를 해결할 수 있는 알고리즘은 다양함. - 각 문제에 적합한 알..
부팅 과정 • BIOS → MBR → (Partition Boot Sector) → Boot Loader → Kernel → init 1. BIOS (Basic Input Output System) • 컴퓨터에는 전원이 꺼져도 날아가지 않고(비휘발성), 수정 불가능한 ROM이라는 저장 장치가 있음. • ROM은 보통 메인보드에 납땜되어 있음. • ROM 안에는 BIOS가 들어있음. • BIOS란 컴퓨터 부팅 시 처음 실행되는 프로그램. • CPU, RAM, 제어장치, 주변장치 등이 잘 연결되어 있는지 등을 확인하고, 확인되었으면 다음 단계, 확인되지 않았으면 오류를 출력해주는 작업을 함. - 이를 POST(Power On Self Test)라고 함. • 이후, 사용자가 BIOS 설정을 들어가기 위해 설정..
환경 변수 환경 변수 • 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임 • 실행 파일을 실행시킬 때 필요한 경로를 생략할 수 있게 해주는 PATH 변수가 대표적 • 사용자 개인에게만 적용할 환경 변수를 위해서는 개인 프로필 설정 파일인 ~/.profile 에 설정 • 전체 사용자에게 적용할 환경 변수를 위해서는 /etc/environment 에 설정 • /etc/environment 파일도 다른 프로필 파일 등과 마찬가지로 셸이 시작될 때 자동으로 실행되어 설정이 적용됨. - 즉, /etc/environment 파일 변경 후 재로그인하여야 설정이 적용 • 전체 설정이 먼저 진행되고 개인 설정이 진행되므로 두 설정이 겹친다면 개인 설정으로 덮어써짐. 이 글은 유튜브 뉴렉처 리눅스..
리눅스 셸 설정 셸 (Shell) • 셸은 사용자와 운영체제 커널을 이어주는 인터페이스 프로그램. • 셸도 프로그램이므로 한 가지만 존재하는 것이 아니라 여러 종류의 셸이 존재하고, 이들은 기본적인 기능은 비슷하지만 설정이나 제공하는 기능에서 조금의 차이가 있음. 현재 사용 중인 셸 확인 echo $SHELL 현재 설치되어 있는 셸 확인 cat /etc/shells 계정의 기본 셸 • 계정마다 기본으로 어떤 셸을 사용할 것인지에 대해 설정할 수 있음. • 사용자 기본 셸 확인 grep [사용자 이름] /etc/passwd • 사용자 기본 셸 설정 chsh -s [셸 경로] [사용자 이름] 로그인 셸과 비로그인 셸 • 셸은 로그인 셸과 비로그인 셸로 나눌 수 있음. • 로그인 셸 - 로그인하여 사용하는 셸..
리눅스 런레벨 런레벨(Runlevel) • 윈도우에는 안전 모드라는 기능이 있음. - 일반 모드는 모든 서비스를 다 제공하는 반면, 안전 모드는 운영 체제에 문제가 있는 부분 등을 고치기 위해 필요한 최소한의 서비스만을 제공 • 리눅스에도 시스템 관리를 위해 제공하는 서비스를 제한하여 부팅할 수 있는 기능이 존재. - 이를 런레벨이라고 함. • 예전엔 메모리 용량이 작았기 때문에 항상 모든 서비스를 제공하는 것이 부담이었고, 필요에 따라 필요없는 서비스는 실행하지 않는 것이 효율적이었음. • 리눅스 배포판 종류에 따라 조금씩 다름. - 리눅스 기본 규격(Linux Standard Base, LSB) 기준으로 설명 런레벨 이름 설명 0 Off 리눅스 종료 1 Single-user mode 단일 사용자 모드..
리눅스 명령어 만들기 리눅스 명령어의 구분 • 사용자는 리눅스 셸을 통해 명령어를 내려 리눅스 운영체제의 기능을 수행함. • 리눅스 셸의 명령어는 쉽게 내부 명령어와 외부 명령어로 구분할 수 있음. - 내부 명령어 : 셸에 내장된 명령어. 셸 프로그램 자체가 갖고 있는 명령어로 cd , echo 등이 있음. - 외부 명령어 : 셸에 내장된 명령어가 아닌 모든 명령어는 파일 형태로 존재함. 외부 명령어는 실행 파일 형태로 존재하여 사용자가 명령어를 입력할 때마다 해당 실행 파일이 실행되는 원리임. • type 명령어를 통해 확인할 수 있음. - 내부 명령어의 경우 셸 내장 명령어라고 출력됨. - 외부 명령어의 경우 해당 명령어 파일의 경로가 출력됨. 환경 변수 PATH • 리눅스에서 실행 파일을 실행하기 ..