본문 바로가기

IT 지식51

[데이터베이스] JSON과 XML XML (Extensible Markup Language) HTML과 유사한 마크업 언어이다. 기계는 물론 사람도 읽기 편한 구조로 되어있다. HTML이 데이터를 보여주기 위해 개발되었다면, XML은 데이터의 저장과 전달을 위해 만들어졌다. HTML과 달리 XML의 태그는 미리 정의되어 있지 않고, 개발자가 임의로 정의할 수 있다. JSON (JavaScript Object Notation) 데이터를 쉽게 저장하고 전달하기 위해 만들어진 데이터 교환 표준. 자바 스크립트를 기반으로 확장하여 만들어졌다. 그래서 자바스크립트의 객체 표기법을 따른다. XML의 대안으로서 더 쉽게 데이터를 저장하고 전달하기 위해 개발되었다. 텍스트 기반 언어이기에 모든 프로그래밍 언어에서 읽고 사용할 수 있다. 즉, 프로그래밍.. 2021. 4. 6.
[알고리즘] 정렬 알고리즘 1) 버블 정렬 시작 5 3 2 1 4 1회차 3 2 1 4 5 2회차 2 1 3 4 5 3회차 1 2 3 4 5 4회차 1 2 3 4 5 가장 기본적인 정렬 중 하나이다. 인접한 i번째 키와 i+1번째 키를 비교하여 교환한다. 즉 1, 2번째 키를 비교하고, 2,3번째 키를 비교하여 정렬한다. 이러한 방식은 자연스럽게 가장 큰 값을 가장 뒤로 정렬하게 된다. 시간복잡도는 평균과 최악 모두 n^2 으로 같으며, 사용 메모리는 n이다. public class HelloWorld{ public static void main(String []args){ int[] nums = {2, 3, 6, 1, 4, 9, 10}; for(int i=0; i 2021. 4. 5.
[컴퓨터 구조] RAM 종류 RAM (Random Access Memory)는 CPU의 연산에 이용되는 데이터를 저장한다. 종종 '주기억장치'라고도 부른다. RAM의 단어를 풀어쓰면 Random Access(임의 접근) 메모리인데, 임의접근이란 임의의 주소가 주어질 때 어떤 작업이든 똑같은 시간으로 접근이 가능하다는 뜻으로, 랜덤으로 접근한다는 이야기가 아니다. 풀어 쓰면 메모리의 주소만 알고 이를 지정하면 특별한 지연 없이 바로 접근할 수 있다는 말이다. RAM은 휘발성 메모리로 전원이 차단되면 내용이 지워지는 특성이 있다. 하지만 이 지워지는 시간은 RAM에 따라 약간의 차이가 존재한다. SRAM (Static RAM)의 경우에는 전원이 차단됨과 동시에 모든 메모리가 지워진다. 그에 반해 DRAM은 몇 분이 지나서 메모리가 지워.. 2021. 4. 3.
[소프트웨어공학] 블랙홀과 화이트홀 블랙홀은 자료의 입력만 있는 데이터를 의미한다. 화이트 홀은 자료의 출력만 있는 데이터를 의미한다. 2021. 4. 3.
[웹 프로그래밍] HTTP Method HTTP Method 중 시험이나 면접에 자주 출제되는 질문은 GET 과 post의 차이, 그리고 PUT과 PETCH의 차이이다. GET vs POST GET 과 post는 요청에서 사용된다. 그러나 세부적으로 보면 GET은 조회 기능 이용시, POST는 등록 기능 사용시 사용된다. 이유라면 방식의 차이 때문이다. GET 은 URL뒤에 데이터를 추가해서 서버에 요청하는 방식을 사용한다. 이러한 방식은 빠른 데이터 로딩이 가능하지만, 아무래도 전송하는 정보가 눈에 보일 수 있어 보안에 취약하다. 그리고 URL의 전송 가능한 데이터의 길이 제한이 존재한다. http://www.사이트명.com/하위디렉터리?variable1=값&variable2=값... 또한 실수로 새로고침을 누를 경우 다시 한 번 요청이 되.. 2021. 4. 2.
[웹 프로그래밍] 쿠키, 세션, 캐시 HTTP는 브라우저를 통해 사용자와 서버가 통신하는 프로토콜이다. 그러나 HTTP는 연결 상태를 유지하지 않는 비연결적 프로토콜이라는 특징을 가지고 있다. 즉, 사용자가 요청한 데이터를 서버가 전송한 후, 연결이 종료된다. 이러한 점은 당연히 서버 입장에서는 전산 자원을 아낄 수 있어 좋겠지만 이후 추가적인 요청을 처리할 수 없다는 단점이 존재할 수 밖에 없다. 그래서 연결을 지속하기 위해 쿠키와 세션이 사용된다. 쿠키와 세션의 큰 차이점은 어디에 저장하느냐이다. 쿠키는 기본적으로 브라우저에, 즉 클라이언트 측에 저장되고, 세션은 서버에 저장된다. 쿠키는 클라이언트가 웹서버에 접속할 때 생성되는 로그인 정보와 사이트의 정보를 담은 임시 파일이다. 즉, 방문기록이기도 한데 웹서버는 이를 통해 사용자의 정보.. 2021. 4. 2.
[운영체제] 멀티 프로세스와 멀티 쓰레드 멀티 프로세스와 멀티 쓰레드 모두 두 개 이상의 일을 동시에 처리하는 병렬 동작을 지원한다. 프로세스는 메모리에 올라와 실행되고 있는 프로그램이다. 그리고 쓰레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름이다. 즉, 쓰레드는 프로세스 내에 포함되어 있다. 흔히 프로세스와 쓰레드를 은행에 비유하곤 한다. 컴퓨터가 은행이라면, 전국에서 영업중인 은행의 지점들은 프로세스이고, 각 은행 내에서 고객들을 받는 창구들이 쓰레드인 것이다. 프로세스는 각자의 고유한 메모리를 갖는다. 즉, 독립적으로 동작한다. 그에 반해 쓰레드는 동일 프로세스 내의 쓰레드들이 메모리를 공유한다. 이로 인해 시간 자원의 손실이 줄지만, 하나의 쓰레드가 메모리를 망가뜨린다면 해당 메모리를 공유하는 다른 쓰레드들도 동시에 망가질 수 있.. 2021. 4. 2.
[자료구조] 스택, 큐, 트리, 힙 스택 모든 원소들의 삽입과 삭제가 한쪽 끝에서만 이루어진다. 한쪽 끝에서 이루어지기에 가장 마지막에 입력된 원소가 가장 처음으로 제거된다. 즉, 후입선출 (LIFO, Last In First Out)이 이루어진다. 웹사이트 방문기록, 실행 취소, 함수 호출 등, 가장 마지막에 실행한 것을 가장 처음으로 가져와야 할 때 사용된다. 큐 한 쪽 끝에서는 삭제가, 다른 한 쪽에서는 삽입이 일어난다. 즉 삭제와 삽입이 되는 구간이 다르기 때문에 가장 먼저 삽입된 원소가 가장 처음 제거된다. 즉, 선입선출 (FIFO, First In First Out)이 이루어진다. 종류로는 선형 큐와 원형 큐가 있는데, 선형 큐는 정해진 사이즈의 끝에 도달하면 더 이상 추가가 불가능하지만 원형 큐는 가능하다. BFS 알고리즘, .. 2021. 4. 2.
[자료구조] 자바의 List, Set, Map 자바의 컬렉션은 크게 세 가지로 나뉜다. 리스트, 셋, 맵이 바로 그것들이다. List는 데이터를 순서에 맞게 일렬로 구성한다. 이로 인해 인덱스가 부여되고, 인덱스로 검색을 할 수 있기에 순서가 중요하다. 또한 중복을 허용한다. List의 클래스로 사용되는 대표적인 두 가지는 ArrayList와 LinkedList가 있다. ArrayList는 평범한 리스트라고 볼 수 있다. 단방향 포인터 구조이고, 순차적인 접근이 좋기 때문에 검색이 빠르다. LinkedList는 양방향 포인터 구조이기에 데이터의 삽입과 삭제가 빠르다. 단, 검색이 느린 경향이 있다. Set은 데이터의 중복을 허용하지 않으며 순서가 중요하지 않은 리스트이다. Set의 클래스로 사용되는 대표적인 세 가지는 HashSet, LinkedHa.. 2021. 4. 2.
[JAVA & JavaScript] 자바와 자바 스크립트 아무것도 모르던 대학교 새내기 시절에는, C를 발전시켜 C++을 만들고, C++을 발전시켜 C#을 만든 것처럼 자바 스크립트가 자바를 발전시켜 만든 언어인줄 알았다. '자바 스크립트'의 이름 때문이었던 것으로 기억한다. 하지만 자바와 자바 스크립트는 사실 이름만 비슷할 뿐이다. 왜 굳이 이름 앞에 '자바'를 붙여서 사람을 헷갈리게 만드나 싶을 정도로 전혀 다른 언어이다. 자바는 일반적인 프로그래밍 언어이다. 하지만 자바 스크립트는 웹에서의 상호작용과 애니메이션을 만들기 위해 개발된 언어이다. 인터넷 초창기 시절 사람들은 넷스케이프라는 브라우저를 자주 사용했다. 당시 넷스케이프의 개발자인 '브렌던 아이크'가 사용자의 입력을 받아 컴퓨터에게 상호작용하는 명령을 내릴 수 있는 프로그래밍 언어를 개발했는데, 이.. 2021. 3. 30.
[논문] DenseNet arxiv.org/pdf/1608.06993.pdf 0. Abstract 최근의 연구는 컨볼루션 네트워크가 입력쪽 계층과 출력쪽 계층간 더 짧은 연결을 포함할 경우 훨씬 더 깊고, 더 정확하고, 더 효율적으로 훈련할 수 있다는 것을 보여주었다. 본 논문에서는 이러한 관찰을 수용하고 각 레이어를 피드포워드 방식으로 다른 모든 레이어에 연결하는 밀도 컨볼루션 네트워크 (DenseNet)을 소개한다. L 레이어를 사용하는 기존의 컨볼루션 네트워크는 각 레이어와 후속 레이어 사이의 L 연결을 가지지만 해당 네트워크는 L(L+1) 2 직접 연결을 가진다. 각 레이어에 대해, 모든 선행 레이어의 형상 맵이 입력으로 사용되며, 자체 형상 맵은 모든 후속 레이어에 대한 입력으로 사용된다. DenseNet은 몇 가지 이.. 2021. 3. 7.
[논문] ResNet arxiv.org/pdf/1512.03385.pdf 0. Abstract 어려운 DNN의 훈련을 위해 Residual leraning 프레임워클르 제시했다. 참조되지 않은 함수를 학습하는 대신 레이어 입력을 참조하여 레이어를 Residual function으로 재구성한다. 이러한 Residual 네트워크는 최적화가 쉽고 깊이를 증가시켜도 정확도를 얻을 수 있다. VGGNet보다 8개 깊지만 복잡성을 낮춘 152개의 Residual Layer로 이루어진 Residual nets로 ImageNet의 데이터셋을 평가했다. Residual Net의 앙상블은 3.57%의 오류를 테스트 셋에서 달성했다. 이 결과로 ILSVRC 2015 분류 과제에서 1위를 차지했고, 논문에서는 100과 1000개의 레이어를 가진 .. 2021. 3. 2.