목록Computer Science (10)
채널오렌지 THE I.O.T

MVC패턴은 아키텍쳐를 설계하기 위한디자인 패턴이다. 디자인 패턴이란 소프트웨어 설계에서 상황에 따라 자주 쓰이는 설계 방법을 정리한 코딩 방법론이다. MVC는 Model, View, Controller의 약자로 애플리케이션을 세 역할로 구분한 패턴이다. Model 데이터 저장하는 컴포넌트 View UI 컴포넌트 Controller Model과 View를 중개하고 사용자의 요청을 처리하는 컴포넌트 위는 Spring MVC다. 백엔드의 기본적인 프레임워크라 할 수 있고 웹 서버와 연관되어 개발이 편하고 깔끔하다. 이 내용은 Spring를 다루고 공부할때 다시 보도록 해야겠다.

객체지향 프로그래밍을 OOP (Object-Oriented Programming)이라 한다. 현실 세계에 존재하는 사물들을 객체라 하고 프로그램 설계에 반영하는 기법이다. 특징 추상화 필요한 정보을 중심으로 간소화 한다. 불필요한 부분은 숨기고 인터페이스와 구현을 분리시킨다. 캡슐화 객체에 필요한 메소드와 데이터를 그룹화 시킨다. 정보 은닉하여 외부의 데이터 접근을 막는다. 상속 중복되는 코드의 재사용을 위해 상위 클래스의 기능을 하위 클래스가 사용할수 있게 한다. 다형성 변수와 메소드를 상황에 따라 다른 결과를 내게한다. Overriding 부모 클래스 메서드를 자식클래스에서 재정의 Overloading 한 클래스에서 메소드를 이름만 같고 파라미터와 자료형을 다르게 한다. 객체지향 vs 절차지향 객체지..

Queue 자료구조는 시간 순서로 먼저 넣은 데이터가 먼저 나오는 FIFO 저장방식이다. enqueue O(1) / dequeue O(1) Priority queue는 순서 상관없이 우선순위가 높은 데이터가 먼저 나온다. Heap은 우선순위큐의 구현과 일치하며 완전이진트리다. 트리는 대개 Linked list다. 그런데 Heap은 트리지만 array 기반이다. 이유는 새 node는 힙의 마지막 위치에 추가해야 하는데 그 과정이 array 기반이 편하기 때문이다. Heap 구현 array의 0번째 index는 편의를 위해 사용하지 않는다, 완전이진트리의 특성을 활용하여 array의 index만으로 부모 자식간의 관계를 정의한다. n번째 node에서 left choild node = 2n / right ch..

Linked List는 Node 구조체다. Node는 데이터 값과 다음 Node의 address를 저장한다. 이 리스트는 물리적인 메모리상에선 비연속적으로 저장되나 Node가 다음 Node의 주소를 가리킴으로써 논리적 연속성을 가진 자료구조다. 또, 데이터가 추가 되는 시점에서 메모리를 할당하여 좀 더 효율적으로 사용할 수 있는 장점이 있다. 논리적 연속성 Array는 메모리 상에서 순차적으로 저장하여 연속성을 유지한다. Linked List는 메모리상에선 비연속적이므로 메모리 사용이 자유로운 대신, Next address를 추가적으로 저장하므로 데이터 하나당 차지하는 메모리가 더 커진다. 데이터 삽입/삭제 O(1) Array에서 중간에 데이터를 삽입/사제하면 해당 인덱스 뒤의 모든 원소들은 shift를..

네트워크 네트워크는 정보와 자원 공유를 위해 링크로 연결된 노드의 집합이다. 컴퓨터가 통신망에서 그물처럼 연결된 체계라 할 수 있다. 인터넷 전 세계를 연결하는 국제 정보 통신망으로, 디지털기기로 연결되어 사람들이 정보를 공유할 수 있는 공간이다. 네트워크들의 네트워크라고 할 수 있다. 웹 웹은 인터넷 공간에서 제공하는 서비스다. 인터넷과 달리 브라우저에서만 엑세스 할 수 있다. 멀티미디어 정보를 Hypertext로 연결하여 제공한다.

이제 시험기간에다가 졸작 발표가 눈앞에 와서 아무것도 하기 싫지만.. 그 핑계로 쉬기에는 내 양심이 찔려 조금씩이라도 공부하기로 했다.. 블록은 "함수 호출"이다. Block 호출된 함수가 자신의 할 일을 끝낼 때까지 호출한 함수한테 retrun하지 않음. Non-Block 호출된 함수가 바로 return 하여 호출한 함수가 일할 수 있음. 동기는 "함께" 다. Synchronous 호출한 함수가 호출된 함수의 수행 결과와 종료까지 신경 쓴다. Asynchronous 호출한 함수가 호출된 함수의 수행 결과와 종료를 신경 쓰지 않는다. 원래 예시를 만들려고 했는데 재밌는 예시를 찾았다. 이보다 재밌게 만들려고 해 봤자 너무 베끼는 것 같아서.. 그리고 이를 참고하면 쉽게 이해될 것 같아서 링크를 남긴다. ..

HTTP HTTP(HyperText Transfer Protocol)는 웹 사이트에서 인터넷 초기부터 사용했던 프로토콜(데이터 교환방식 규칙)이다. 웹 서핑시 서버에서 브라우저로 데이터를 전송할 때 많이 사용된다. 텍스트 교환이며 암호화 되지않아 내용이 쉽게 노출될 수 있다. HTTPS HTTPS(HyperText Transfer Protocol Secure) 프로토콜은 HTTP에 Secure 이름이 붙어서 짐작가능한데, HTTP 프로토콜의 정보가 암호화되지 않는 점을 해결한 프로토콜이다. 해결방법은 공개키 암호화를 사용하며 SSL이라는 보안 소켓 계층을 통하여 데이터 도난을 막았다. SSL은 서버와 브라우저 사이에 암호화된 연결을 만든다. 그리고 TLS(전송 계층 보안) 프로토콜을 통해서 무결성을 제공..

아마 가장 많이 사용하는 용어중 하나인 프레임워크와 라이브러리. 그렇게 많이 사용하는 만큼 누가 이 둘의 차이를 묻는다면 어... 슬프게도 대답이 안 나온다. 아마 나는 지금까지 나는 용어를 알았던 거지 숙지를 못했던 것이다.. 프레임워크 Framework는 애플리케이션을 만들때 필요한 구조를 갖추고 있어 흔히 뼈대라 부른다. 개발자는 이 프레임 워크 위에 코드를 올리면 프로그램이 동작하므로 로직에만 집중할 수 있도록 한다. 많은 개발자들이 다 다른 방식으로 코딩하며 설계하면 관리에 혼동을 가지므로 프레임워크에 따라 개발하면 시스템의 일관성을 유지하고 통합하는데 큰 도움을 준다. 한마디로 프레임워크라는 맞춰진 틀에 내가 코드를 얹어 개발하는 것. 대표적으로 프론트엔드의 Angular(JavaScript)..

무언가 컴퓨터 관련돼서 학습할 때 지겹도록 나오는 단어인데 정작 저 둘을 설명하라고 하면 모르겠다. 개념이 추상화된 느낌.. 그래서 알아보았다. API Application Programming Interface API란 단어를 분해해보면 Application은 응용 프로그램이란 뜻이다. 한국에서 애플리케이션을 아이폰의 성공으로 모바일 전용 소프트웨어라고 흔히 부르지만 실제론 컴퓨터와 스마트폰의 프로그램 둘다 같은 애플리케이션이다. 그리고 프로그램은 운영체제인 시스템 프로그램과 시스템 프로그램을 이용하여 새로 만들고 응용한 프로그램인 응용 프로그램(애플리케이션)으로 나뉘고 있다. 그리고 Interface는 컴퓨터 시스템끼리 정보를 교환하는 공유 경계를 말한다. 즉, API는 응용 프로그램에서 데이터를 주..

유명한 비유가 있다. Git은 커피고 Github는 커피숍이다. Git은 버전 관리 시스템(VCS : Version Control System)이다. 여기서, VCS는 일어난 어떤 변화를 시간에 따라 기록하여 필요할때 그 시점의 버전을 불러오는 시스템을 뜻한다. Control이므로 통제에 가깝다. Github는 클라우드 기반 호스팅 서비스로 git Repository를 관리한다. 클라우드 서버에 소스를 올리고 프로젝트를 만들어 여러 명이 참여하며 협업할 수 있다. 즉, Git은 커피고 Github는 Git이라는 커피로 서비스를 하는 커피숍이다.