ALU와 제어장치 ALU 계산하는 장치 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아들임 플래그 연산 결과에 대한 부가 정보 ( 양수인지 음수인지 따로 내보내는 값) 결과를 담을 레지스터에 비해 결과가 클 때 플래그 레지스터로 담김 제어장치 제어 신호를 발생 시키고 명령어를 해석하는 장치 받아들이는 정보 - 클럭, 명령어 레지스터, 플래그 레지스터 내보내는 정보 - 제어신호(To 레지스터, ALU. 메모리, 입출력장치 CS지식 쌓기 2023.12.29
명령어와 주소 지정방식 명령어 (연산코드(명령어) + 오퍼랜드(데이터)) 오퍼랜드 연산에 사용될 데이터 연산에 사용될 데이터가 사용된 위치 *(주소필드) 오퍼랜드는 0개일 수도, 여러 개 일 수도 있음 연산코드 데이터 전송 move(데이터를 옮겨라), store(메모리에 저장하라) 등등 산술/논리 연산 add, and, or 등등 제어 흐름 변경 jump(특정 주소로 실행순서를 옮겨라) halt(프로그램의 실행을 멈춰라) 등 입출력 제어유효 주소 - 연산에 사용할 데이터가 저장된 위치 위치를 명시하는 이유 - 바로 명시하면 크기가 작지만 메모리 주소를 명시하면 큰 메모리도 불러올 수 있음 명령어 주소 지정 방식 연산에 사용할 데이터가 저장된 위치를 찾는 방법 유효 주소를 찾는 방법 즉시 주소 지정 방식 연산에 사용될 데이터를 .. CS지식 쌓기 2023.12.29
고급언어, 저급언어 고급언어 개발자가 이해하기 쉽게 만든 언어 저급언어 컴퓨터가 이해하고 실행하는 언어 기계어 - 이진수, 십육진수로 표현 어셈블리어 - 0과 1로 이루어진 기계어를 읽기 편한 상태로 한 번 바꿔준 언어 컴파일 언어 컴파일러를 통해 저급언어로 변환, 목적 코드(저급언어) 생성 한번에 코드를 훑어서 저급언어로 변환 오류가 있으면 실행안됨 인터프리트 언어 한줄씩 읽어 변환 소스코드 전체가 변환될 때까지 기다릴 필요 없음 오류가 있으면 그 직전까지는 실행됨 CS지식 쌓기 2023.12.29
정보단위, 인코딩 비트 : 0과 1 1024씩 묶은 단위는 따로 있다 워드(word) CPU사 한 번에 처리할 수 있는 정보의 크기 단위 하프 워드 : 워드의 절반 크기 풀 워드 : 워드 크기 더블 워드 : 워드의 두 배 크기 이진법 0과 1로 수를 표현하는 방법 숫자가 1을 넘어가는 시점에 자리 올림 음수를 표현하기 위한 방법 - 보수 값의 0과 1을 뒤집고 1 더하기 플래그 레지스터에 양수나 음수를 표시됨 십육진법 숫자가 15를 넘어가는 시점에 자리올림 10부터 A, B, C… 16이 10 / 17이 11 쉬움이진수 → 십육진수 변환 아래와 같이 이진수를 네자리로 나눠서 변환하면 반대로도 문자집합과 인코딩 문자집합 컴퓨터가 이해할 수 있는 문자의 모음 인코딩 코드화하는 과정 문자를 0과 1로 표현된 문자 코드로, 문자.. CS지식 쌓기 2023.12.29
컴퓨터 구조 컴퓨터가 이해하는 정보 데이터 숫자,문자,이미지 등 정적인 정보 컴퓨터와 주고받는/내부에 저장된 정보를 데이터라 통칭 명령어 컴퓨터는 명령어를 처리하는 기계 컴퓨터를 실질적으로 움직이는 정보 데이터는 명령어를 위한 일종의 재료 컴퓨터의 네 가지 핵심 부품 메인보드 - 아래 네가지를 꼽는 곳 CPU 메모리에 저장된 명령어를 읽어 들이고, 해석하고 실행하는 부품 내부구성 ALU(산술논리연산장치) - 계산기 레지스터 - CPU 내부의 작은 저장장치 제어장치 - 제어 신호를 내보내고, 명령어를 해석하는 장치 제어신호 - 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호 실행순서 메모리의 명령어를 읽어 들여 레지스터로 가져옴 제어 장치로 보내서 명령어를 해석 ALU에서 계산해서 결과값을 레지스터에 저장 최종적인.. CS지식 쌓기 2023.12.29
로깅이란? 로깅이란? @Slf4j @slf4j로 서버에서 일어나는 일들을 기록하는 어노테이션이다. 코드에서 System.out.println으로 결과를 확인 하는 것은 서버에 큰 무리를 준다고 한다. 로깅을 실제 코드에서 적용해보면 이렇게 log.info();로 사용할 수 있다. 결과값은 아래 사진처럼 기존에 toString형식으로만 나오는게 아니라 어디서 실행됐고 언제 실행됐는지 볼 수 있다. [Spring Boot] 스프링부트 (IntelliJ)/Spring boot 2023.12.22
Lombok(롬복) 사용하기 (리팩토링) DTO를 작성할 때 getter, setter, 생성자, tostring 등 쓸일이 많다. 하지만 여러 개의 DTO를 작성할 때마다 작성하기엔 시간이 오래걸린다. 물론 eclipse로 쓸때는 단축키로 빨리 칠 수는 있지만 롬복의 어노테이션을 사용하면 더 빠르게 작성하고, 유지보수성도 올라간다. 필드부만 입력하면 나머지는 자동으로 작성해주기 때문에 수정사항이 있더라도 필드부만 고쳐주면 나머지는 자동으로 고쳐지기 때문에 편리하다. 리팩토링이란? 기존의 코드를 개선하여 재구성하는 것을 의미함 build.gradle 파일의 dependencies에 드래그 친 부분을 추가해준다. 그 후 우측 상단에 gradle 새로고침 버튼(load gradle change을 눌러준다. 이렇게 하고 DTO를 바꿔봤더니 이런 오류.. [Spring Boot] 스프링부트 (IntelliJ)/Spring boot 2023.12.22
JPA 웹으로 연동하여 사용해보기 JPA는 지속적으로 공부해야 할 것 같아서 공부하는 것들을 그때그때 추가로 게시글을 작성할 예정이다. 스프링부트 프로젝트를 만들 때 h2를 연동했었다. src - main - resource - application.properties파일에 spring.h2.console.enabled=true 를 추가한다. 이는 h2 데이터베이스 콘솔을 활성화 하는 코드이다. http://localhost:8080/h2-console로 h2 데이터 베이스에 접속 할 수 있다. 물론 학습용이고 보안상으로는 안좋다고 한다. 서버를 실행하고 위 URL에 접속하면 이런 인터페이스가 보일텐데 위와 같이 두고 JDBC URL에다가 인텔리제이 콘솔창에서 JDBC를 검색하면 위와 같이 뜰 것이다. 해당 드래그 쳐져있는 부분과 같은 .. [Spring Boot] 스프링부트 (IntelliJ)/Spring boot 2023.12.22
JPA란? - Java Persistence API - 자바 진영의 ORM 기술 표준 - JPA는 기존에 우리가 직접 썼던 JDBC API를 날렸던걸 대신 사용하여 데이터를 주고받는다. API - Application Programming interface 정해진 인터페이스로 프로그래밍하여 프로그램을 만들 수 있는 도구 ORM이란? - Object-relational mapping (객체 관계 매핑) - 객체는 객체대로 설계 - 관계형 데이터베이스는 관계형 데이터베이스대로 설계 - ORM 프레임워크가 중간에서 매핑 - 대중적인 언어에는 대부분 ORM 기술이 존재 JPA를 사용하는 이유 1. 생산성이 좋아진다. - 저장 : jpa.persist(member) - 조회 : Member member = jpa.find(.. [Spring Boot] 스프링부트 (IntelliJ)/JPA 2023.12.19
[IntelliJ/인텔리제이] Cannot resolve parameter names for constructor public... https://ryudotori.tistory.com/16 form으로 데이터 주고 받기 HTML로 form 태그안에 화면을 만들고, DTO와 컨트롤러를 이용해서 데이터를 주고 받는 내용을 해보았다. form태그란? - 아래 코드가 HTML 코드이다. form태그는 하나의 울타리라고 생각하면 되는데 그 ryudotori.tistory.com 위 게시글을 진행하다보니 생긴 오류이다 java.lang.IllegalStateException: Cannot resolve parameter names for constructor public cohttp://m.example.firstproject.dto.ArticleForm(java.lang.String,java.lang.String) 파라미터값을 못받아온다는 .. [Spring Boot] 스프링부트 (IntelliJ)/오류메모 2023.12.19