분류 전체보기
-
1. 목표 이번 시간에는 계산기 프로그램을 웹 애플리케이션으로 만들어보면서 웹 애플리케이션에 대해 이해를 해보도록 하겠습니다. 계산기 프로그램을 총 세 단계로 나누어서 개발해 볼 것인데요. 각 단계는 아래와 같습니다. Step1 - 사용자 요청을 메인 Thread가 처리하도록 한다. Step2 - 사용자 요청이 들어올 때마다 Thread를 새로 생성해서 사용자 요청을 처리하도록 한다. Step3 - Thread Pool을 적용해 안정적인 서비스가 가능하도록 한다. 그렇다면 만들어보기 전에 먼저 HTTP 프로토콜에 대해서 조금 알아보도록 하겠습니다. 2. HTTP 프로토콜 이해 HTTP 프로토콜은 서버와 클라이언트가 웹에서 데이터를 주고받기 위한 프로토콜(규약)입니다. HTTP를 통해서는 거의 모든 종류의..
[Spring] Part 1-4-1. 웹 애플리케이션 이해 (+계산기 프로그램 실습)1. 목표 이번 시간에는 계산기 프로그램을 웹 애플리케이션으로 만들어보면서 웹 애플리케이션에 대해 이해를 해보도록 하겠습니다. 계산기 프로그램을 총 세 단계로 나누어서 개발해 볼 것인데요. 각 단계는 아래와 같습니다. Step1 - 사용자 요청을 메인 Thread가 처리하도록 한다. Step2 - 사용자 요청이 들어올 때마다 Thread를 새로 생성해서 사용자 요청을 처리하도록 한다. Step3 - Thread Pool을 적용해 안정적인 서비스가 가능하도록 한다. 그렇다면 만들어보기 전에 먼저 HTTP 프로토콜에 대해서 조금 알아보도록 하겠습니다. 2. HTTP 프로토콜 이해 HTTP 프로토콜은 서버와 클라이언트가 웹에서 데이터를 주고받기 위한 프로토콜(규약)입니다. HTTP를 통해서는 거의 모든 종류의..
2023.01.13 -
Introduction CPU가 CPU로써 기능을 가지려면 3 종류의 기능은 반드시 갖춰야 한다. data processing(ALU) data move(load, store) flow control(branch, jump) extra... 이번 포스팅에선 3가지의 instructions을 정의해 볼 것이다. 시작에 앞서 자주 나오는 궁금증에 대해 말해보겠다. Q) memory에서 값을 가져오는데 memory를 적는 부분에 왜 register 주소($)를 사용하는가? A) $2 위치에 7000번지를 넣는다고 하고 아래와 같은 코드를 적으면 $2에 10을 더하는 것은 7000에 10을 더하여 7010번지 memory에 load하는 것과 같은 의미가 된다. 이 때의 $2를 base address라고 한다. ..
[컴퓨터구조] 5. Register(레지스터)와 Memory(메모리)Introduction CPU가 CPU로써 기능을 가지려면 3 종류의 기능은 반드시 갖춰야 한다. data processing(ALU) data move(load, store) flow control(branch, jump) extra... 이번 포스팅에선 3가지의 instructions을 정의해 볼 것이다. 시작에 앞서 자주 나오는 궁금증에 대해 말해보겠다. Q) memory에서 값을 가져오는데 memory를 적는 부분에 왜 register 주소($)를 사용하는가? A) $2 위치에 7000번지를 넣는다고 하고 아래와 같은 코드를 적으면 $2에 10을 더하는 것은 7000에 10을 더하여 7010번지 memory에 load하는 것과 같은 의미가 된다. 이 때의 $2를 base address라고 한다. ..
2023.01.11 -
Introduction Jumping up a few levels of abstraction 추상화(abstraction)의 몇가지 단계에 대해서 알아볼 것이다. Architecture(아키텍쳐): 컴퓨터를 바라보는 프로그래머(혹은 software)의 관점 instruction과 연산 위치에 의해 결정됨 Microarchitecture(마이크로아키텍쳐): hardware에서 아키텍쳐를 구현하는 방식 Assembly Language 기계가 알아먹는 기본적인 명령어(0, 1로 이루어진) 하나하나를 1:1로 symbolic하게 표현하는 언어 Instruction: commands in a computer's language Instruction이란 컴퓨터의 언어에서 사용되는 명령어이다. Assembly lan..
[컴퓨터 구조] 4. MIPS instruction set(명령어 세트)Introduction Jumping up a few levels of abstraction 추상화(abstraction)의 몇가지 단계에 대해서 알아볼 것이다. Architecture(아키텍쳐): 컴퓨터를 바라보는 프로그래머(혹은 software)의 관점 instruction과 연산 위치에 의해 결정됨 Microarchitecture(마이크로아키텍쳐): hardware에서 아키텍쳐를 구현하는 방식 Assembly Language 기계가 알아먹는 기본적인 명령어(0, 1로 이루어진) 하나하나를 1:1로 symbolic하게 표현하는 언어 Instruction: commands in a computer's language Instruction이란 컴퓨터의 언어에서 사용되는 명령어이다. Assembly lan..
2023.01.11 -
Review) performance(speed): clock frequency area(cost): 이는 design에서 줄일 수 있는 part가 있고 공정(fab)에서 줄일 수 있는 part가 있는데 데이터가 많이 들어간다고 해서 문제가 되지는 않는다. 더 중요한 문제는 fab, 즉 어떤 공정을 쓰느냐이다. power(energy) = power ∝ Vdd2 * f * CL 위 3가지의 tradeoff를 잘 고려하여 부품을 만들어야 함. 성능 지표 perf.(speed) = 1 / exec_time latency(Time to execute a program) exec_time라고도 하고, throughput이라고도 하지만 당분간은 exec_time으로 정의를 할 것이다. exec_time = sec/..
[컴퓨터 구조] 3. Performance와 CPU TimeReview) performance(speed): clock frequency area(cost): 이는 design에서 줄일 수 있는 part가 있고 공정(fab)에서 줄일 수 있는 part가 있는데 데이터가 많이 들어간다고 해서 문제가 되지는 않는다. 더 중요한 문제는 fab, 즉 어떤 공정을 쓰느냐이다. power(energy) = power ∝ Vdd2 * f * CL 위 3가지의 tradeoff를 잘 고려하여 부품을 만들어야 함. 성능 지표 perf.(speed) = 1 / exec_time latency(Time to execute a program) exec_time라고도 하고, throughput이라고도 하지만 당분간은 exec_time으로 정의를 할 것이다. exec_time = sec/..
2023.01.11 -
int a, b, c main ... a = b + c 지난 시간 내용을 정리하면 다음과 같다. 선언한 데이터들이 compiler에 의해 Main memory의 data memory(중간)에 저장된다. RISC의 경우 memory에서 ALU에 바로 전달하지 않고 중간에 register file(bank)에 저장하는 과정이 있다. 프로그램 수행 과정 연산을 하기 위해서는, compiler에 의해 data b와 data c를 각각 빈 register 공간에 저장한다. register에 있던 b, c 는 ALU에 들어가 연산을 하게 되고 그 결과가 다시 register 의 빈 공간에 저장된다. 이 결과가 register 에서 다시 data memory로 전달되어 마무리 된다. 이러한 과정처럼 단순한 instr..
[컴퓨터 구조] 2. CPU와 메모리int a, b, c main ... a = b + c 지난 시간 내용을 정리하면 다음과 같다. 선언한 데이터들이 compiler에 의해 Main memory의 data memory(중간)에 저장된다. RISC의 경우 memory에서 ALU에 바로 전달하지 않고 중간에 register file(bank)에 저장하는 과정이 있다. 프로그램 수행 과정 연산을 하기 위해서는, compiler에 의해 data b와 data c를 각각 빈 register 공간에 저장한다. register에 있던 b, c 는 ALU에 들어가 연산을 하게 되고 그 결과가 다시 register 의 빈 공간에 저장된다. 이 결과가 register 에서 다시 data memory로 전달되어 마무리 된다. 이러한 과정처럼 단순한 instr..
2023.01.11 -
Intro 컴퓨터 구조에 대해 자세히 알아보기 전 자주 사용되는 용어를 정리해 보도록 하겠습니다. 용어 instruction(명령어): 컴퓨터가 알아듣도록 컴퓨터에게 내리는 명령, 기계가 알아듣도록 하는 기본 function(기능 단위) turn left, turn right, ...(기본적인 동작부터 복잡한 동작까지 있음) 이것이 명령어 hareware: processor가 어떻게 만들어져있는지 instruction set (spec,스펙) or Instruction Set Architecture(ISA): 하드웨어가 어떻게 만들어져 있는지 말 그대로 명령어의 집합이다. 컴퓨터의 추상체 Hardware와 Software의 bridge 역할 microarchitecture ISA를 이해하고 명령어의 의도..
[컴퓨터 구조] 1. 컴퓨터 구조 시작Intro 컴퓨터 구조에 대해 자세히 알아보기 전 자주 사용되는 용어를 정리해 보도록 하겠습니다. 용어 instruction(명령어): 컴퓨터가 알아듣도록 컴퓨터에게 내리는 명령, 기계가 알아듣도록 하는 기본 function(기능 단위) turn left, turn right, ...(기본적인 동작부터 복잡한 동작까지 있음) 이것이 명령어 hareware: processor가 어떻게 만들어져있는지 instruction set (spec,스펙) or Instruction Set Architecture(ISA): 하드웨어가 어떻게 만들어져 있는지 말 그대로 명령어의 집합이다. 컴퓨터의 추상체 Hardware와 Software의 bridge 역할 microarchitecture ISA를 이해하고 명령어의 의도..
2023.01.11 -
2. 객체 지향 개념 다지기 객체 지향이란? 사실, 이 질문에 대한 정답은 존재하지 않는 것 같습니다. 그말인 즉슨, 각자 자신만의 객체 지향을 생각하는 신념(?)과 같은 것이 있을 뿐이고 프로그래밍에 정답이 없는 것과 마찬가지입니다. 하지만 중요한 점은 여러분들이 자신있는 언어에 대해서 자신만의 견해를 가지고 대답을 할 수 있는지가 중요한 것입니다. 객체지향에 한 견해에 대해 말씀드리기 전에 먼저 객체지향이 갖고 있는 4가지의 특징에 대해서 말씀드리려 합니다. 1. 추상화 (Abstraction) 2. 다형성 (Polymorphism) 3. 캡슐화 (Encapsulation) 4. 상속 (Inheritance) 이 4가지는 객체지향을 다른 패러다임과 구분짓는 중요한 특징입니다. 각각에 대해 간단한 설명..
[Spring] Part 1-3-2. 나만의 MVC 프레임워크 만들기 | 객체지향 개념 다지기 + 실습2. 객체 지향 개념 다지기 객체 지향이란? 사실, 이 질문에 대한 정답은 존재하지 않는 것 같습니다. 그말인 즉슨, 각자 자신만의 객체 지향을 생각하는 신념(?)과 같은 것이 있을 뿐이고 프로그래밍에 정답이 없는 것과 마찬가지입니다. 하지만 중요한 점은 여러분들이 자신있는 언어에 대해서 자신만의 견해를 가지고 대답을 할 수 있는지가 중요한 것입니다. 객체지향에 한 견해에 대해 말씀드리기 전에 먼저 객체지향이 갖고 있는 4가지의 특징에 대해서 말씀드리려 합니다. 1. 추상화 (Abstraction) 2. 다형성 (Polymorphism) 3. 캡슐화 (Encapsulation) 4. 상속 (Inheritance) 이 4가지는 객체지향을 다른 패러다임과 구분짓는 중요한 특징입니다. 각각에 대해 간단한 설명..
2023.01.09 -
1. 테스트코드 실습 테스트코드 실습에서는 자바 단위 테스팅 프레임워크인 JUnit5를 사용하도록 할 것입니다 JUnit5에 대해서 추가적인 학습을 원하시는 분들을 위해 아래 공식 문서 링크를 첨부해 두었습니다. JUnit 5 User Guide Although the JUnit Jupiter programming model and extension model do not support JUnit 4 features such as Rules and Runners natively, it is not expected that source code maintainers will need to update all of their existing tests, test extensions, and custo jun..
[Spring] Part 1-3-1. 나만의 MVC 프레임워크 만들기 | 테스트 코드란?1. 테스트코드 실습 테스트코드 실습에서는 자바 단위 테스팅 프레임워크인 JUnit5를 사용하도록 할 것입니다 JUnit5에 대해서 추가적인 학습을 원하시는 분들을 위해 아래 공식 문서 링크를 첨부해 두었습니다. JUnit 5 User Guide Although the JUnit Jupiter programming model and extension model do not support JUnit 4 features such as Rules and Runners natively, it is not expected that source code maintainers will need to update all of their existing tests, test extensions, and custo jun..
2023.01.09