전체 글 103

2. 자바 명령어 도구(javac, java)

JDK는 cmd에서 사용가능한 몇가지 명령 도구를 가지고 있다. 자바 컴파일러 javac, 자바 가상 기계 java 명령어가 있다. test 패키지에 Mainclass.java 하나 들어있는 상황이라고 치자 Mainclass.java 파일에는 hello word를 출력하는 자바 코드가 작성되어 있는데 패키지 선언이 안된 경우 -> default pakage 패키지 선언이 된 경우 package pac1; 위 두 가지 경우가 있을 수 있다. 1. 패키지 선언이 안된 경우 컴파일 방법 javac (클래스명).java 으로 컴파일 하고 실행하는 경우 (따로 패키지를 만들지 않는 경우) 1) 컴파일 cd C:\Users\MoonJH\Desktop\comback\src\test javac Mainclass.jav..

Java 2022.01.17

1. JVM, JDK, JRE

1) 바이트 코드파일 CPU가 이해할 수 있는 언어가 바이너리 코드라면 가상머신(자바에선 JVM)이 읽는 언어를 바이트 코드파일이라한다. 자바 소프파일을 컴파일러 (javac)에 의해 바이트 코드파일(.class)을 만든다. 2) JVM JVM은 바이트 코드 파일을 CPU가 읽을 수 있는 완전한 기계어인 바이너리 파일로 만들어준다. 그리고 CPU로 명령을 한줄 씩 로드해 명령을 실행시킨다. ※ 자바가 한번 작성되면 CPU나 운영체제 상관없이 어디서나 실행할 수 있는 이유는? 개발자에 의해 만들어진 .java소스 파일은 컴파일러 .javac로 .class의 바이트 코드파일을 만든다. 이 바이트 코드파일은 JVM이 해석을 하게 된다. JVM은 바이트 코드를 한줄 씩 읽어서 해석한 후 실행하게 된다. JVM은..

Java 2022.01.17

부산 공연 조회 서비스 (프로젝트)

부산 지역 공연 조회 서비스 0. Member 및 기여도 201610600 김동균: 20% 201811710 문윤식: 40% 201811713 문정훈: 40% 1. Background 코로나19로 인해 현재 공연계는 매우 어려운 실정에 처하여 있다. 특히, 중 극장 및 소 극장과 같이 작은 규모의 극장과 객단들은 집단 폐업 및 실업이 이뤄지고 있음이 현실이다. 생업을 위협받고 있는 이들은 대안으로 온라인 공연을 여는 등의 노력을 하고 있지만 이전에 비해 크게 나아지지 않았다. 마찬가지로 관객들 또한 오프라인 공연에 목마른 상태이기도 하다. 하지만 위드 코로나와 함께 다시 공연이 확대되고 있는 추세이며, 이는 침체된 공연계에 활력을 불어넣을 수 있는 기회이다. 이렇게 어려운 공연계에 조금이나마 도움을 보태..

10. Threading

1. Programs, Processes, and Threads 1) Threading 하나의 프로스에서 여러개 단위의 실행(작업의 실행)을 생성하고 관리하는 기법이다. CPU는 멀티 코어로 여러 개의 코어로 이루어질 수 있다. processor는 CPU와 같다. 하나의 processor에 여러개의 코어가 있다면 각각의 코어에 각각 다른 process의 thread가 병렬로 실행될 수 있다. ※ 병렬 처리 여러 작업이 동시에 실행되는 것이다. Threading을 이해하기 위해 CPU인 processor는 1개의 코어만 가진다고 가정, 한 process는 여러 개의 스레드로 동작할 수 있다. 위 가정에서 processor는 process안의 thread를 병렬로 처리할 수 없다. 2) Binaries 컴파..

8. Pipeline이란

Multy Cycle Design을 이용해 pipeline을 통해 processor의 성능을 개선시키는 방법에 대해 정리하겠습니다. Pipelining (1) Pipelining이란 동시에 여려개의 명령어를 overlapped하여 실행하는 방법을 말합니다. 프로세스에서 pipeline은 전체 프로세스를 여러 stage로 나누어 동시에 여러개의 명령어가 서로 다른 stage상에 위치하게 함으로써 동시에 여러 명령어를 처리하는 방식을 말합니다. ● 장점 단위 시간당 처리되는 명령어의 수를 높힙니다. 이는 instructino throghput을 높이는 것과 같은 의미입니다. 그리고 datapath 상에 resource인 functional unit의 사용역시 개선 시킬 수 있습니다. ● 단점 stage를 나..

7. Pipeline에서 데이터 처리

1. single core 5-stage pipeline MIPS processor에서 Data forwarding 기술이 적용되지 않았을 때, 아래 명령어들이 어떻게 실행되는지 정리 cycle 명령어 1 2 3 4 5 6 7 8 1 add r3, r2, r1 IF ID EX MEM WB 2 sub r4, r3, r5 IF ID EX MEM WB 3 add r6, r3, r5 IF ID EX MEM WB 4 add r7, r3, r5 IF ID EX MEM WB 위 4가지 명령어를 차례로 명령어1, 명령어2, 명령어3, 명령어4라고 하겠습니다.! ● Datapath, Control의 개념 프로세서는 datapath와 control로 구성되어 있습니다. 그 중 datapath는 말 그대로 데이터가 흘러가는..

5. CPI 계산과 CPU time 구하기

1) 프로그램 A를 실행 했을 때, CPI는 얼마인가? ● Performance 컴퓨터를 사용하는 사용자 입장에서는 작업을 시작하고 종료하기 까지의 시간 (response time)이 중요할 것입니다. 이런 관점에서 Performance를 논할 때 이와 관련된 척도를 정리해야합니다. ● 성능의 척도 clock cycle 컴퓨터는 하드웨어적으로 명령어의 이벤트가 발생되는 시점을 결정하는데 이것을 clock 신호라 합니다. clock cycle 이란 일정한 속도를 가지고 동작하는 프로세스의 clock의 한 주기동안의 시간을 의미합니다. clock period clock 주기란 clock 사이클에서 한 주기가 도는데 걸리는 시간을 의미하며 이는 clock frequency(clock speed)와 역수 관계입..

13. Context API

1. Context API란 hooks로 리액트 컴포넌트를 만들 때 state들이 많아지면 그 state들을 하나의 묶음으로 관리하기 위해 userReducer를 사용하여 state들을 관리하는 방법을 이전에 정리하였다. 이전 장에서 Tictactoe를 만들 때 상위 컴포넌트에서 하위 컴포넌트를 만들고 하위 컴포넌트에서 상위 컴포넌트의 state(useReducer로 관리 되는 state)들의 값에 접근(접근 또는 변경) 하기 위해 상위 부모 컴포넌트의 dispatch 함수를 하위 컴포넌트로 전달해줘야했다. 만약 하위 컴포넌트 상속 관계가 계속 된다면 상위 컴포넌트의 dispatch와 같은 프로퍼티(또는 함수)들을 수작업으로 하위 컴포넌트들에게 계속 전달해줘야하는 불편함이 있었다. 이것을 해결해주는 방법..

c언어 배열 끝에 '\0'

c언어에서 1) 만약 char a[] ="abc"; 이렇게 저장하면 실제 a는 a[2]을 만들지 않고 null문자를 포함해 a[3]를 만든다. 즉 a배열은 a[3] = "abc\0"; 이게 된다. 2) char* a = "abc"; 이것 역시 마찬가지로 "abc(\0)"을 뜻한다. 3) 만약 char a[2] ="abc"; 이렇게 저장하면 a[0] = 'a'; a[1] ='b'; a[2] ='c'; 이렇게 저장하지만 printf(“%s\n”, a); 출력을 해보면 #include int main() { char a[3] = "abc"; printf("%s\n", a); } 위와 같이 abc가 뜨나 %s 자체가 null까지 읽어야하는데 null이 없는 문자열을 출력하므로 abc 끝에 저렇게 된다. 따라서 ..

잡지식 2021.12.12

12. 틱택토: useReducer

더보기 예제는 인프런의 제로초, "조현영"님의 강의를 들으면서 공부한 내용입니다. 1. useReducer 1) useReducer 사용 코드 리액트에 hooks가 생기기면서 useEffect, useState 등을 사용하는데 state가 많아지면 관리가 어려워지고 틱택토 예시에서는 Table에서 Tr 컴포넌트를 거쳐 Td 컴포넌트로 Table의 state를 전달해야하는데 이렇게 많은 state를 전달하기엔 비효율적이다. useReducer를 사용하면 state를 한 번에 작성할 수 있고 관리하기가 쉬워진다. useReducer를 사용하여 state를 관리하면 state의 변경 방법 등이 존재하는데 아래에서 소개함 아래 코드는 useReducer를 통해 주석처리로 선언한 state를 한번에 묶어서 선언한..