CS 14

CS) Synchronous & Asynchronous

Synchronous & Asynchronous 처리해야할 작업들을 어떠한 흐름(시간)으로 처리할것인가에 대한 관점이다. Synchronous: 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작 Asynchronous: 시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음 Synchronous(동기) Synchronous란 함수A(caller)가 함수B(callee)의 작업 완료후 리턴을 기다린다. 이렇게 caller가 callee의 작업 완료 여부에 신경을 쓰면 Synchronous이다. Asynchronous(비동기) Asynchronous란 함수A(caller)가 함수B(callee)를 호출할때 콜백 함수를 함께 전달한다. 그후 함수B(callee)의 작업이 완료되면 콜백함..

CS 2023.02.12

CS) 프로세스와 스레드

프로세스, 스레드 프로세스란? 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 운영체제로부터 시스템 자원을 할당받으며, 자체 메모리 공간을 가지고 있다. 즉 프로세스는 서로 독립된 메모리영역(Code,Data,Stack,Heap)을 할당받는다. 각 프로세스는 별도의 주소공간에서 실행된다 따라서 하나의 프로세스가 다른 프로세스의 변수나 자료구조에 접근할수 없다.(IPC,inter-process communication을 통해 다른 프로세스의 자원에 접근 가능하긴 하다) 하나 이상의 스레드에 의해 실행되는 컴퓨터 프로그램의 인스턴스이다. 스레드란? 프로세스 내에서 실행되는 독립적인 실행 단위 병렬로 실행될수 있으며, 동일한 주소공간과 시스템 리소스(Code,Data,Heap)영역은 공유한다.(Stack영..

CS 2023.02.08

CS) Function,Predicate

Function 과 Predicate에 정의된 메서드를 알아본다. Function에 정의된 메서드 test(T t), andThen(), compose(), identity() test(T t) -> Function에 존재하는 abstract method로 하나의 argument 를 받아 boolean을 return해준다. Function f1 = x -> x + 1; Function f2 = x -> x * 2; // Apply f2 after f1 Function f4 = f1.andThen(f2); System.out.println(f4.apply(2)); // Outputs 6 // Compose f2 before f1 Function f3 = f1.compose(f2); System.out.pr..

CS 2023.02.08

CS) Functional Programming

명령형, 선언형 프로그래밍 명령형 프로그래밍이란 특정 기능을 수행하기 위해 어떻게(how)에 집중하는 방식을 의미한다. //명령형 프로그래밍의 예시 List list = Arrays.asList(1,2,3,4,5,6,7,8,9,10); int result = 0; for(int n:list){ if(n%2==0){ result +=n; } } System.out.println("result = " + result); //출력 //result = 30 선언형 프로그래밍이란 특정기능을 수행하기위해 무엇(what)에 집중하는 방식이다. //선언형 프로그래밍의 예시 List list = Arrays.asList(1,2,3,4,5,6,7,8,9,10); int result = 0; result = list.str..

CS 2023.02.08

CS) Mutable,Immutable

사전적 의미 immutable: 불변의 mutable: 변할수 있는 Immutable, Mutable Immutable이란 객체의 수정을 허용하지 않는다. 즉 이미 존재하는 객체이더라도 새로운 객체를 생성하여 재할당 한다. Mutable이란 객체가 생성된 이후 수정이 가능하며, 이미 존재하는 객체에 재할당(값 변경)한다. Immutable의 예로 String class가 존재한다. String text = "kimchi"; System.out.println("text = " + text); text = "delicious"; System.out.println("text = " + text); //result // text = kimchi // text = delicious 위 코드에서 text = "de..

CS 2023.02.08

CS) Tokenizer,Lexer,Parser

컴파일러 컴파일러란 고급언어로 작성된 프로그램을 번역해 기계어로된 프로그램을 만들어 주는 역활을 한다. 이때 구문분석 -> 최적화 -> 코드생성 -> 링킹의 과정을 거치는데, 구문분석 과정에서 소스코드는 Tokenizer, Lexer, Parser를 차례로 거친다. 이포스팅에선 구문분석에 대해 알아 보겠다. Tokenizer, Lexer Tokenizer란 어떤 구문에서 의미있는 요소들을 의미있는 단위의 토큰으로 쪼개는 역활을 한며 Lexer는 토큰의 의미를 분석하는 역활을 한다 이두역활을 합쳐 Lexical Analyze라 한다. 예를들어 ex) Age is no guarantee of maturity 라는 문장에서 'A','g','e'을 따로 보면 어떠한 의미도없지만 Age라는 하나의 조각을 보면 의..

CS 2023.02.08

CS) DOM

DOM이란? DOM이란 Document Object Model의 약자로 웹 페이지에 대한 인터페이스이다(HTML과 XML 문서의 프로그래밍 Interface). DOM은 Tree 형식의 자료구조이다. DOM을 사용하여 단순 텍스트로 구성된 HTML 문서의 내용과 구조가 객체 모델로 변환되어 다양한 프로그램에서 사용될수있다. 웹 페이지를 스크립트 또는 프로그래밍 언어들에서 사용될수 있게 연결시켜주는 역활을 담당한다 -> 즉 DOM을 통해 스크립트가 문서내의 모든 요소에 동적으로 접근이 가능하도록 한다. 여기서 문서내의 모든 요소에 동적으로 접근이 가능하다 라는 말은 -> 동적으로 문서의 객체를 생성할수 있다는 말이다. ex) JS를 통해 HTML에 없던 객체를 생성할수 있다. DOM의 생성 DOM의 개체 ..

CS 2023.02.08

CS) HTML,XML

마크업(MarkUp)이란? 마크업이란 문서 처리를 지원하기위해 문서에 추가되는 정보를 의미한다. 마크업 언어는 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지이다. 다양한 마크업 언어중 HTML 과 XML의 특징및 차이점을 알아본다. HTML이란 HTML은 Hypertext MarkUp Language의 약자이며, 웹 페이지 및 웹 응용 프로그램의 구조를 만들기 위한 표준 마크업 언어이다. 웹 페이지 및 웹 응용 프로그램의 구조를 만들기위한 표준 마크업 언어이다. HTML의 특징 구조가 단순하며 문법이 쉽다. HTML은 다른 프로그래밍 언어에 비해 단순한 구조를 가지고, 논리적이고 연산적인 요소가 없다. 플랫폼에 독립적이다 HTML 문서는 운영체제에 상관없이 웹 브라우저만 있으면 표시..

CS 2023.02.08

CS) 객체지향(OOP)

객체지향이란 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만든후 그 객체들간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 장점 코드 재사용성이 높다 상속 등을 통하여 기존의 코드를 재사용할수 있다. 코드 관리가 용이하다 코드 간의 관계를 이용해 적은 노력으로 쉽게 코드변경이 가능하다. 신뢰성이 높은 프로그래밍을 가능하게 한다. 코드의 중복제거, 제어자와 메서드를 이용해 데이터를 보호 및 올바른 값을 유지하도록하여 오동작을 방지할수 있다. 용어 클래스 클래스란 객체를 정의해 놓은것, 즉 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성된다. 객체 프로그래밍에서 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻한다. 인스턴스화 클래스로부터 객체를..

CS 2023.02.08

CS) Virtual Memory

Virtual Memory 가상메모리란 지금 당장 실행해야 되는 부분만을 메인 메모리에 저장하고 나머지 프로그램은 보조 기억장치에 둔채 동작을 하는 방법이다. 가상메모리를 사용하는 이유 우리가 1G 메모리를 사용한다 가정해보자. 이때 위사진에서 프로그램 B를 실행하는데 2G의 메모리가 필요하다고 한다면, 내컴퓨터에서 프로그램 B는 실행조차 할수없다. 이러한 상황을 해결하기위해 Virtual Memory의 개념을 사용해본다면, 프로그램 B를 시작할때 프로그램 B1만 구동하면 실행이 가능하다 라고할때 프로그램 B자체는 virtual Memory 공간에 두고 우리가 실행할때 필요한 B1만을 메인메모리로 가져와 프로그램을 실행하는것이다. 즉 실제 프로그램이 필요로하는 메모리 용량이 크다 하더라도 우리가 필요한부..

CS 2023.02.08