일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 열거형
- 컴퓨터 활용 능력 1급
- mysql 설치 방법과 정상 작동 확인하기
- 혼자 공부하는 네트워크
- 혼자 공부하는 컴퓨터 구조 및 운영체제
- 컴퓨터 구조
- 친절한 SQL 튜닝
- 데이터모델링
- youtube review
- 클러스터형 인덱스와 보조 인덱스
- INSERT
- delete
- oracle
- 운영체제
- 뷰
- 혼자 공부하는 컴퓨터 구조 + 운영체제
- 2025-02-13
- sqld
- 이것이 오라클이다
- 리눅스 마스터 2급
- 웹 디자인 기능사
- 컴퓨터 활용 능력
- 인덱스의 개념과 장단점
- 혼자 공부하는 SQL
- gitkraken을 통한 프로젝트 올리기
- github에 새 리포지토리 추가하기
- Update
- 명령 프롬프트
- 첫 프로그래밍
- 데이터 모델링
- Today
- Total
목록전체 글 (315)
코딩 브이로그

이를 방지하기 위한 분기 예측 (branch predictoin) 기능이 있다.데이터 위험, 제어 위험 또는 구조적 위험이 발생 시 명령어 병렬 처리를 위한 파이프라이닝이 제대로 동작하지 않는다.비순차적 명령어 처리를 통해, 순차적으로 명령어를 처리할 시 발생할 수 있는 오류를 방지할 수 있다.예를 들어 3번이 맨 마지막에 처리됨으로 인해 M(100)과 M(101)의 값이 결정된 이후에 M(102)의 결괏값을 도출해낼 수 있다.

들어가며- 클럭- 코어 & 멀티 코어- 스레드 & 멀티 스레드CPU의 속도를 빠르게 만들어보자1. 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다.2. CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다.-> 클럭 신호를 빠르게 반복된다면 명령어 사이클도 빠르게 반복될 것이라는 기대를 할 수 있다. 클럭 속도- 클럭 속도: 헤르츠(Hz) 단위로 측정- 헤르츠(Hz) : 1초에 클럭이 반복되는 횟수- 클럭이 "똑-딱-" 하고 1초에 한 번 반복되면 1Hz- 클럭이 1초에 100번 반복되면 100Hz클럭 속도를 늘리면 꼭 속도가 빨라질까? 필요 이상으로 클럭을 높이면 발열이 심각해짐코어와 멀티 코어- 클럭 속도를 늘리는 방법 이외에는?- 코어 수를 늘리는 방법 ("듀얼 코어",..

정해진 흐름대로 명령어를 처리해야지! CPU 인터럽트 (잠깐만!) 명령어 사이클프로그램 속 명령어들은 일정한 주기가 반복되며 실행이 주기를 명령어 사이클이라고 함 메모리에 저장된 명령어를 실행하려면?cpu 인출 사이클: 가장 먼저 CPU로 갖고 와야 한다실행 사이클: 갖고 왔으면 실행해야 한다 명령어는 인출 - 실행 - 인출 - 실행 - ...반복되면서 실행됩니다. 그런데 CPU로 명령어를 가지고 와도 바로 실행이 불가능한 경우도 있다. 메모리의 접근이 더 필요한 경우 간접 사이클이 추가될 수 있다. 이와 같은 정해진 흐름을 끊는 것이 바로 인터럽트이다. 방해하는 신호이다. 인터럽트인터럽트 (interrupt) : 방해..

DI (Dependency Injection)- 의존성 주입 - 한 객체가 다른 객체를 사용할 때 의존성이 있다고 함- 런타임 시 의존 관계를 맺는 대상을 외부에서 결정하고 주입해 주는 것- 스프링 프레임워크는 DI 기능을 지원해주는 프레임워크DI 장점- 의존성 주입을 인터페이스 기반으로 설계하면, 코드가 유연해짐 - 느슨한 결합도 (loose coupling)- 변경에 유연해짐 - 결합도가 낮은 객체끼리는 부품을 쉽게 갈아끼울 수 있음예를 들어 A가 직접 B에 의존하도록 하기 보다는 중간에 Interface를 두어서 결합도가 느슨해지도록 하여 변화에 영향을 덜 받게 되도록 설계를 하기도 합니다.Runtime시 의존관계를 맺는 대상을 외부에서 결정하고 주입해 주는 것을 의미합니다.또한 변경에 유연해..

스프링 웹 MVC 프레임워크요청을 DispatcherServlet이 해당 요청을 받아서 HandlerMapping을 통해서 적절한 핸들러를 찾게 됩니다.여기에서 핸들러라고 하면 컨트롤러라고 이해하시면 좀 더 이해가 쉬울 것 같습니다.그리고 나서 핸들러 어댑터를 통해서 적절한 어댑터에서 컨트롤러를 시행합니다.그리고 컨트롤러는 해당 리턴 값으로 뷰 네임을 리턴하게 됩니다.그러면 DispatcherServlet이 해당 뷰 네임을 가지고 뷰 리절브를 통해서 뷰 객체를 리턴 받게 됩니다.그런 다음에 최종적으로 뷰 렌더를 통해서 응답 값을 리턴하게 됩니다.애노테이션 기반 MVC 프레임워크- DispatcherServlet- AnnotationHandlerMapping- HandlerAdapter- ViewResol..

프런트 컨트롤러 패턴- 모든 요청을 단일 handler(처리기)에서 처리하도록 하는 패턴, 그렇기 때문에 중앙 집중식 요청 처리 매커니즘을 가지고 있습니다.- 스프링 웹 MVC 프레임워크의 DispatcherServlet(프런트 컨트롤러의 역할)이 프런트 컨트롤러 패턴으로 구현돼 있음 Forward- 서블릿에서 클라이언트(웹 브라우저)를 거치지 않고 바로 다른 서블릿(또는 JSP)에게 요청하는 방식, URL주소가 달라지지 않음- Forward 방식은 서버 내부에서 일어나는 요청이기 때문에 HttpServletRequest, HttpServletResponse 객체가 새롭게 생성되지 않음(공유됨)- RequestDispatcher dispatcher = request.getRequestDispatcher(..
Reflection 소개- 힙 영역에 로드돼 있는 클래스 타입의 객체를 통해 필드/메소드/생성자를 접근 제어자와 상관 없이 사용할 수 있도록 지원하는 API (class.class, instance.getclass, class.fullname)- 컴파일 시점이 아닌 런타임 시점에 동적으로 특정 클래스의 정보를 추출해낼 수 있는 프로그래밍 기법이기도 합니다.- 주로 프레임워크 또는 라이브러리 개발 시 사용됨사용법 링크 : https://www.baeldung.com/reflections-library* 참고로 jvm의 클래스 로더는 클래스 파일에 대한 로딩이 끝나면 클래스 타입의 객체를 생성해서 메모리 힙 영역에 저장합니다.Reflection 사용하는 프레임워크/라이브러리 소개- Spring 프레임워크 (..

들어가며레지스터는 CPU 내부의 작은 임시저장장치프로그램 속 명령어 & 데이터는 실행 전후로 레지스터에 저장 CPU 내부에는 다양한 레지스터들이 있고, 각기 다른 역할을 가진다 반드시 알아야 할 레지스터1. 프로그램 카운터 : 메모리에서 가져올 명령어의 주소(메모리에서 읽어 들일 명령어의 주소) - Instruction Pointer (명령어 포인터) 라고 부르는 CPU도 있다.2. 명령어 레지스터 : 해석할 명령어 (방금 메모리에서 읽어 들일 명령어) - 제어장치가 해석3. 메모리 주소 레지스터 : 메모리의 주소를 저장 - CPU가 읽어 들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터4. 메모리 버퍼 레지스터 : 메모리와 주고받을 값 (데이터와 명령어) - CPU가 정보를 데이터 버스로 주..

ALU는 계산하는 장치제어장치는 제어 신호를 발생시키고 명령어를 해석하는 장치 ALU - 받아들이는 정보계산을 하기 위해서는 피연산자의 수행할 연산이 필요 레지스터 -> (피연산자) -> | ALU | -> (플래그) -> 플래그 레지스터제어장치 -> (제어신호) -> | | -> (결괏값) -> 레지스터 플래그 레지스터 - 음수, 0 (부가 정보가 담김), 연산 결과가 결과를 담을 레지스터에 비해 너무 클 시 오버플로우라고 하는데, 오버플로우 발생 시 이를 표시하여 나타낸다. ALU - 내보내는 정보플래그 종류의미사용 예시부호 플래그연산한 결과의 부호를 나타낸다1은 음수, 0은 양수를 의미제로 플래그연산한 결과가 0인지 여부를 나타낸다1은 0, 0은 0이 아님캐리 플래그연산 결과..
C 언어 컴파일 과정 test.c 전처리기(preprocessor) test.i 컴파일러(compiler) test.s 어셈블러(assembler) test.o 링커(linker) test.exe 전처리 과정 (preprocessor)- 본격적으로 컴파일하기 전에 처리할 작업들- 외부에 선언된 다양한 소스 코드, 라이브러리 포함- 프로그래밍의 편의를 위해 작성된 매크로 변환- 컴파일할 영역 명시 컴파일 과정 (Compiling)- 전처리가 완료 되어도 여전히 소스 코드- 전처리 완료된 소스 코드를 저급 언어(어셈블리 언어)로 변환 어셈블 과정 (assembling)- 어셈블리어를 기계어로 변환- 목적 코드(object file)를 포함하는 목적 파일이 됨 C 언어 컴파일 과정- 목적 파일 vs 실행 ..
기계어, 어셈블리어저급 언어로 변환 명령어: "학생들, 다음 주까지 과제를 제출하세요." 명령어의 구조- 연산코드: 수행할 연산- 오퍼랜드: 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치 오퍼랜드- 연산에 사용될 데이터- 연산에 사용될 데이터가 저장된 위치 (주소필드) 연산코드- 데이터 전송MOVE: 데이터를 옮겨라STORE: 메모리에 저장하라LOAD: 메모리에서 CPU로 데이터를 가져와라PUSH: 스택에 데이터를 저장하라POP: 스택의 최상단 데이터를 가져와라 - 산술/논리 연산ADD / SUBTRACT / MULTIPLY / DIVIDE : 덧셈 / 뺄셈 / 곱셈 / 나눗셈을 수행하라INCREMENT / DECREMENT : 오퍼랜드에 1을 더하라 / 오퍼랜드에 1을 빼라AND ..
https://godbolt.org Compiler Explorer godbolt.org Compiler Explorer - 고급언어를 저급언어(어셈블리어)로 변환하는 과정 참고 웹 사이트
개발자가 작성한 소스 코드 #include int main() { printf("Hello, World!"); return 0;} 고급 언어와 저급 언어 변환고급 언어 -> 저급 언어 - 고급 언어: 개발자가 이해하기 쉽게 만든 언어- 저급 언어: 컴퓨터가 이해하고 실행하는 언어 (기계어, 어셈블리어) 이진수(0과1)로 표현된 기계어십육진수(0~9, A~F)로 표현된 기계어 기계어 어셈블리어0101 -> push rbp push rbpmov rbp, rspmov DWORD PTR [rbp-4], 1 컴파일 언어와 인터프리터 언어 고급 언어 컴파일컴파일 언어 -> 저급언어 ..
0과 1밖에 모르는 컴퓨터가 어떻게 문자를 이해하고 표현할 수 있지? 이모티콘, 문자, 특수문자를 사용한다 어떻게 사용하는 것이지? 문자 집합과 인코딩- 문자 집합(character set): 컴퓨터가 이해할 수 있는 문자의 모음- 인코딩(encoding): 코드화하는 과정, 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정- 디코딩(decoding): 코드를 해석하는 과정, 0과 1로 표현된 문자 코드로 문자로 변환하는 과정 아스키 코드- 초창기 문자 집합 중 하나- 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자- 7비트로 하나의 문자 표현: 8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트(parity bit) - 간단한 인코딩 - But 한글을 포함한 다른 언어 문자, 다양..
컴퓨터는 0과 1밖에 모른다. 어떻게 3+4를 할까? 정보 단위 비트(bit): 0과 1을 표현하는 가장 작은 정보 단위 (전구로 따지자면 꺼짐, 켜짐) 총 4가지가 가능 00 01 10 11 * 3비트로는 8개가 가능 n 비트로는 2n승 가지의 정보 표현 가능 프로그램의 수많은 비트로 이루어져 있음 다만, 평소 "이 파일은 8,920,120 비트야" 라고 표현하진 않음 비트보다 더 큰 단위를 사용 - 바이트, 킬로바이트, 메가 바이트, 기가 바이트, 테라 바이트 ... 1바이트 - 8비트1킬로바이트 - 1000바이트1메가바이트 - 1000킬로바이트1기가바이트 - 1000메가바이트1테라바이트 - 1000기가바이트 워드- CPU가 한 번에 처리할 수 있는 정보의 크기 단위- 하프 워드 : 워드..