CS 지식23 MVC vs MVVM MVC vs MVVM 아키텍처 패턴이란? 소프트웨어 시스템의 기본 구조와 그러한 구조 및 시스템을 만드는 분야 각 구조는 소프트웨어 요소, 이들 간의 관계, 요소와 관계의 속성으로 구성 시스템 및 개발 프롲게트의 청사진 역할을 하며 설계 팀이 실행하는 데 필요한 작업을 제시함 MVC 패턴 MVC 패턴은 Model + View + Controller를 합친 용어입니다. Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분입니다. View : 사용자에게 보여지는 UI 부분입니다. Controller : 사용자의 입력을 받고 처리하는 부분입니다. 순서 사용자들의 입력이 Controller에 들어오게 됩니다. Controller는 사용자의 입력을 확인하고, Model을 업데이트 합니다. C.. CS 지식/개발 상식 2023. 2. 9. 함수형 프로그래밍(Functional Programming) 함수형 프로그래밍 함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나입니다. 함수형 프로그래밍 언어의 종류에는 대표적으로 Scala(스칼라), Haskell(하스켈), Clojure(클로저) 등이 있습니다. Javascript, Java, Python, Kotlin 등에서도 함수형 프로그래밍 문법을 사용할 수 있습니다. 선언형 프로그래밍 패러다임을 따르고 있습니다. 선언형 프로그래밍은 WHAT(무엇을 할 지) 을 중요시 하고, 명령형 프로그래밍은 HOW(어떻게 할 지) 를 중요시 합니다. 함수형 프로그래밍 장단점 장점 순수 함수를 이용하기 때문에 함수에서 함수로 전달되는 상태만 있을 뿐, 전역 상태 자체가 존재하지 않습니다. -> 외부.. CS 지식/개발 상식 2023. 2. 6. Git 과 Github GIT 과 GITHUB "GIT 과 GITHUB는 커피와 카페 같은 관계이다" -노마드 코더- GIT 이란? 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. 소프트웨어 개발에서 소스 코드 관리에 주로 사용되지만 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다. GIT의 특징 Git 홈페이지 에서 Git의 특징을 다음과 같이 6가지로 정의한다. Branching and Merging 사용자는 메인 코드에서 가지를 생성하여 독립성을 유지한 채로 개발을 진행할 수 있다. 이는 다양한 코드를 개발 또는 테스트 해 볼 수 있는 환경을 제공해준다. Small and Fast Git은 대부분 로컬에서 진행되는 만큼 매.. CS 지식/개발 상식 2023. 2. 2. 애자일 (Agile) 애자일 (Agile) 애자일이란? 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하여 지속적으로 제공하기 위한 소프트웨어 개발 방식 고객의 요구에 민첩하게 대응하고, 그때 그때 주어지는 문제를 해결해 나가는 방법론 종류: 스크럼(Scrum), 익스트림 프로그래밍(XP), 칸반(Kanban) 애자일 방법론은 소프트웨어 개발에 필요한 작업을 알려주는 규정이 아니라, 협업을 바라보는 관점이고, 우리가 무엇을 어떻게 만들지에 관해 선택하게 하는 가치 체계이다. 폭포수 vs 애자일 폭포수 모델 선형 순차 모델 각 단계는 병행 수행되지 않고 순차 수행됨 폭포수 모델 장점 이해하기 쉬움( 단순한 선형 모델) 체계적 문서화가능 ( 단계별로 정형화된 접근 방법) 프로젝트 진행 상황 명확히 파악 가능 폭포수 .. CS 지식/개발 상식 2023. 1. 26. RESTful API란? RESTful이란? -> REST 원리를 따르는 시스템을 RESTful하다고 말한다. RESTful의 목적 -> 이해하기 쉽고, 사용하기 쉬운 REST API를 만들기 위해 사용된다. REST란? -> Representational State Transfer의 약자로, 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것이다. -> REST는 일반적으로 HTTP 프로토콜을 사용하기 때문에 웹의 장점을 활용할 수 있는 아키텍처 스타일이다. -> 네트워크 상에서 client와 server간의 통신 방식 중 하나이다. -> HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것. REST의 장점 1. HTTP 프로토콜의 인프라를 그.. CS 지식/개발 상식 2023. 1. 26. OOP(객체 지향 프로그래밍) OOP OOP란? OOP란 Object Oriented Programming의 약자로, 객체 지향 프로그래밍이다. 객체 지향 프로그래밍은 우리가 실생활에서 사용하는 모든 것을 객체라고 하며, 객체 지향 프로그래밍은 프로그램 구현에 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 의미한다. 객체는 클래스라는 틀에서 생겨난 실체(instance)이다. 따라서 객체 지향 프로그램은 객체와 객체 간의 연결로 되어 있으며 각각의 객체안에 자료구조와 알고리즘이 들어있다. 절차 지향 vs 객체 지향 절차 지향 vs 객체 지향 출처 : https://velog.io/@1205kjw/6.1.2-%EC%A0%88%EC%B0%A8%EC%A7%80%ED%9.. CS 지식/개발 상식 2023. 1. 26. MST - Kruskal MST Kruskal MST MST란, Minimum Spanning Tree의 약자로, 최소 신장 트리라는 뜻을 가진 알고리즘을 의미한다. 해당 그래프에서 모든 point들이 edge들로 연결된다고 가정했을 때, 가중치가 가장 짧은 방법을 구하는 알고리즘이다. ex) Kruskal(크루스칼) 알고리즘, Prim(프림) 알고리즘 Kruskal(크루스칼) Kruskal이란, MST의 종류 중 하나로, 모든 정점을 최소 비용으로 연결하는 방법을 구하는 알고리즘이다. 그래프의 간선들의 가중치를 오름차순으로 정렬한다. 정렬된 간선 리스트에서 사이클을 형성하지 않는 간선을 선택한다. 해당 간선을 MST의 집합에 추가한다.ex) 백준의 1197번, 1922번, 1647번... 자바로 구현한 Kruskal 알고리즘 .. CS 지식/자료구조_알고리즘 2022. 7. 4. Tree Tree Tree(트리) 데이터들을 나무를 뒤집은 형태로 저장한다. 부모와 자식 노드들로 이루어진다. 차수 : 어떠한 노드가 가지고 있는 자식 노드들의 개수 이진 트리 : 차수가 2인 트리 ex) 인덱스 트리 : 자식 노드들의 구간 합이 부모 노드에 저장된 값 정렬 상태를 유지할 수 있다. Heap 구조의 트리이다. (저장된 값 중 최소/최대 값을 리턴하고, 나머지를 정렬하여 저장한다.) 시간복잡도 : 트리의 높이만큼 걸린다. O(Log(N)) KEY WORD : 이진 트리, 노드, 부모 노드, 자식 노드, O(Log(N)) CS 지식/자료구조_알고리즘 2022. 6. 24. Stack vs Queue Stack vs Queue Stack(스택) FILO(First In Last Out) 구조로 이루어진 자료구조이다. 데이터를 삽입(push) 할 때, 자료구조의 맨 뒤에 붙게 되고, 데이터를 호출(pop) 할 때, 자료구조의 맨 뒤의 값이 빠져나오게 된다. ex) 웹 브라우저의 방문기록 KEY WORD : FILO Queue(큐) FIFO(First In First Out) 구조로 이루어진 자료구조이다. 데이터를 삽입(add) 할 때, 자료구조의 맨 뒤에 붙게 되고, 데이터를 호출(poll) 할 때, 자료구조의 맨 앞의 값이 빠져나오게 된다. ex) 선착순 시스템 KEY WORD : FIFO CS 지식/자료구조_알고리즘 2022. 6. 24. Array vs LinkedList Array vs LinkedList Array(배열) 데이터들을 옆으로 나란하게 저장한다. 메모리 내의 연속된 주소에 저장한다. 사용하기 전 미리 할당을 받아 사용한다. -> 할당된 공간 사용하지 않는 경우, 메모리 자원 부족할 수 있다. -> 할당된 공간보다 더 필요한 경우, 새로 만들어 복사해야 한다. 값의 입출력 용이, 중간에 값 삽입/삭제 불편 속도가 빠르다. ex) 한 학급의 학생들의 키 (학급에 학생을 삽입/삭제 할 경우가 많지 않기 때문이다.) KEY WORD : 정적 할당, 연속 저장 LinkedList(연결리스트) 저장된 값과 다음 값을 연결하면서 값들을 저장한다. 필요한 만큼 할당 받아서 연결한다. 데이터 중간에 삽입/삭제가 용이하다. 물리적 속도가 느리다. ex) 도서관리 프로그램 (.. CS 지식/자료구조_알고리즘 2022. 6. 24. SHA-256 암호화 SHA-256은 Secure Hash Algorithm 의 약자로 256비트로 구성되어 64자리 문자열을 반환한다. 단방향 암호화 방식을 사용하기 때문에 복호화가 불가능합니다. 그로 인해 속도가 빠르다. 사용 예시로는 비밀번호 확인과정이 있다. Java에서 SHA-256을 사용하기 위해서는 MessageDigest를 사용해야 한다. MessageDigest.getInstance(""SHA-256")을 사용하여 SHA-256을 사용한다 선언한다. update 메소드를 이용하여 객체에 원하는 문자열을 바이트의 형식으로 넣는다. digest 메소드를 호출하면 그 값을 가져올 수 있다. import java.io.BufferedReader; import java.io.IOException; import java.. CS 지식/암호학_보안 2022. 1. 21. 이전 1 2 다음 💲 추천 글