목록분류 전체보기 (350)
Welcome! Everything is fine.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bpj5a8/btsFnZfvlZA/6d3SOqn83m8t5STzmvwFaK/img.png)
트리(Tree)란? 트리는 비선형 자료구조 중 하나로, 나무를 거꾸로 뒤집어 놓은 듯한 모양으로 인해 트리(Tree)라고 불린다. 마치 회사 조직도나 가계도처럼 생긴 트리는 계층적 구조를 잘 표현할 수 있다. 트리는 그래프의 일종으로 노드(Node)와 간선(Edge)으로 이루어져 있다. 트리에서 사용하는 용어는 다음과 같다. 루트 노드(root node) : 부모노드가 없는 노드 부모 노드(parent node) : 루트 노드 방향으로 연결된 노드 자식 노드(child node) : 루트 노드의 반대 방향으로 연결된 노드 단말 노드(leaf node) : 자식 노드가 없는 노드 형제 노드(sibling node) : 부모 노드가 같은 노드 레벨(level) : 루트노드로부터 노드의 상대적 위치를 의미 높..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/SDH6g/btsE0rrLJsc/ZNAeDLkliJ7wTF8l1E1VJK/img.png)
이번 주는 기술 면접에서 많이 물어본다는 Array와 LinkedList의 특징과 차이점에 대해 정리해보았다. 같은 선형 자료구조이면서 정적 자료구조(Array)와 동적 자료구조(LinkedList)로 나뉘어서 자주 나오는 질문이 아닐까 싶다! Array 배열(Array)은 메모리 상에 원소를 연속하게 배치한 자료구조이다. 특징을 간단히 정리하자면 다음과 같다. 인덱스를 사용해 값에 바로 접근 가능하다. 배열의 크기는 한 번 선언하면 줄이거나 늘릴수 없다. (따라서 배열을 확장하기 위해서는 기존 배열의 내용을 새로운 배열에 복사하는 식으로 확장해야한다.) 새로운 값을 삽입하거나 삭제하기가 비효적이고 어렵다. (임의의 위치에 있는 원소를 추가/제거하는 시간 복잡도 O(N)) 데이터를 조회하는 연산이 많을 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/czKTS5/btsE0pFUzgS/nifAHKIWvh9XOu32qPKrsK/img.png)
스택(Stack)스택은 한쪽 끝에서만 데이터를 넣고 뺄 수 있는 자료구조이다. 다시 말해 후입선출(LIFO, Last-In-First-Out) 구조로, 왼쪽 그림과 같이 가장 마지막에 들어간 데이터가 가장 먼저 나오는 자료구조이다. 쌓아올려진 팬케이크를 생각하면 쉽다. 가장 위에 있는 팬케이크 먼저 없어질 것이다. 이 외에도 웹 페이지에서 뒤로가기 버튼을 눌렀을 때, 문서를 작성하다가 Ctrl+Z를 눌렀을 때 등 스택이 활용되는 상황이 많다. 스택에서 데이터가 추가/제거되는 곳을 top이라고 한다.스택 메서드 Object pop() : 맨 위에 저장된 객체를 꺼내서 반환한다. Object push(Object item) : 새로운 객체를 맨 위에 저장한다. Object peek() : 맨 위에 있는 데이..
하드 드라이브에 보관되어있던 프로그램을 실행시키면 프로그램이 메모리에 올라온다. 이때 프로그램은 실행 중인 프로그램, 즉 프로세스가 된다. 이렇게 메모리에 올라온 프로세스를 CPU에서 가져다가 사용하는 것이다. 다시 말하자면, 프로세스들이 메모리에 저장되어있다가 하나씩 CPU로 가서 실행된다는 것이다. 이때, 어떤 프로세스에 CPU와 메모리를 할당할지 결정해주는 것이 스케줄러의 역할이다. 스케줄러의 종류에는 장기 스케줄러, 단기 스케줄러, 중기 스케줄러 3가지가 있다. 장기 스케줄러(Long-term Scheduler) = 작업 스케줄러(Job Scheduler) 디스크와 메모리 사이의 스케줄링을 관리함. 현대 운영체제에서는 장기 스케줄러 없이 바로 준비큐에 넣어줌. 어떤 프로세스를 준비큐에 삽입할지 결..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b8Qn6Y/btsEGNIgm2N/ScIMv6VF0hD07mKucWFrPK/img.png)
이번주 질문 중 하나인 RESTful API. 과연 RESTful API란 무엇일까? RESTful API를 검색해보면 가장 상단에 있는 AWS 사이트에서 다음과 같이 설명하고 있다. 하지만 너무 간단한 설명이다. RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스입니다. 스크롤을 좀 더 내려 들어간 IBM 사이트에서는 다음과 같이 설명하고 있다. 그러니까 REST가 뭔지 알려줘야지... REST API는 REST(REpresentational State Transfer) 아키텍처 스타일의 디자인 원칙을 준수하는 API입니다. 이러한 이유로 REST API를 RESTful API라고도 합니다. REST의 뜻도 모르고, 심지어는 API의 개념도 머릿속..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cw7m22/btsEytbCAW4/TH8nnNABNQwufspVWN0IZk/img.png)
자바에서 배열을 복사하기 위한 방법은 다음과 같다. 메서드를 사용하는 것이 for문보다 더 빠르다고 하니 메서드를 배워보자! for문 Arrays.copyOf() Arrays.copyOfRange() Arrays.copyOf(원본_배열, 복사할_길이) Arrays.copyOf()는 배열의 길이를 지정해 복사할 수 있는 메서드이다. 배열의 처음부터 length 길이만큼의 요소를 복사해 새로운 배열을 생성한다. int[] array = {1, 2, 3, 4, 5}; int[] copy = Arrays.copyOf(array, 3); // {1, 2, 3} Arrays.copyOfRange(원본_배열, 시작_인덱스, 끝_인덱스) Arrays.copyOfRange()는 시작 인덱스와 끝 인덱스를 정해 배열의 일..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bA65jc/btsEuAvBv5U/P8naBw0GjLisEjIC3Cbmw0/img.png)
TCP(Transmission Control Protocol) TCP는 패킷 전송을 제어해(패킷의 순서가 올바르게 전달되는지, 패킷이 유실되지는 않는지 등) 신뢰성을 보장하며 데이터를 전송할 때 사용하는 프로토콜이다. 통신을 시작하거나 종료할 때도 수신측에 미리 물어본 후에 패킷의 전송 순서를 정해 통신을 시작한다. 이러한 과정을 3-way handshaking과 4-way handshaking이라고 한다. 자세한 특징은 다음 설명과 같다. 1. 3-way handshaking을 통해 연결 설정, 4-way handshaking을 통해 연결 해제 TCP 연결을 생성하면 SYN과 ACK(Positive Acknowledge) 혹은 NAK(Negative Acknowlede)라는 패킷을 주고받는다. SYN은..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bbGPZh/btsEooaH5B3/Nx65UGfj2YGMUB1QEXBVj0/img.png)
OSI 7 Layer OSI(Open System Interconnection) 7 계층이란 1977년에 국제표준화기구(ISO)가 정의한 국제 통신 표준 규약이다. 통신의 접속에서부터 완료까지의 과정을 7단계로 구분한 것을 말한다. 그러나 실제로 인터넷에서 흔히 사용되는 모델은 TCP/IP 4계층이다. OSI 7계층은 서로 다른 컴퓨터들이 데이터를 주고받을 수 있도록 표준화된 규칙을 말하며, 이를 통해 통신이 일어나는 과정을 단계별로 파악할 수 있다. 다음은 OSI 7계층과 TCP/IP 4계층의 순서를 비교한 그림이다. OSI 7계층의 송수신 과정을 간단하게 그림으로 보면 다음과 같이 진행된다.보낼 때는 각 계층을 지나면서 헤더가 붙고, 받을 때는 다시 각 계층을 거치며 헤더가 제거된다. 각 계층에 대한..