전체 글

CS

gdb로 register와 memory 변화 확인하기

1. gdb를 실행할 파일을 만들어준다. 나는 다음과 같은 코드의 파일을 만들어 줬다 2. 컴파일 gcc -m32 -g -o ex1 ex1.c gdb 를 이용하기 위해서는 -g 옵션을 추가해줘야함! 3. gdb 실행 gdb ex1 set disassembly-flavor intel : intel의 어셈블리 코드 문법을 사용하겠다는 명령어 disassemble main : main 함수의 어셈블리 코드를 보는 명령어 display register : 해당 register의 메모리값을 출력해달라는 명령어 b *0x804841c : 해당 주소에 breakpoint를 걸겠다는 명령어 (여기선 main의 첫번째 instruction주소를 사용함) r : 프로그램 수행!하는 명령어 ni : 다음 instructio..

CS

어셈블리어 / ASM code

CPU 는 instruction(명령어)를 fetch, interpret, execute 한다. - Fetch : 메모리상에 존재하는 명령어를 CPU로 가져옴 - Interpret : 가져온 명령어를 CPU가 해석 - Execute : 해석된 명령어대로 CPU가 실행 cpu 의 execution cylce은 다음과 같다 . - 다음 instruction(명령어)를 메모리에서 가져온다. (pointed by eip) - eip를 업데이트한다. - fetch된 instruction을 실행한다. ... (반복) 레지스터란 ? - CPU안에 있는 저장 가능한 공간 (휘발성) - CPU가 사용하는 저장 공간중에 가장 빠른 저장공간 💻 어셈블리 레지스터 1. eip : Instruction Pointer (명령 포..

Server/Spring boot

인텔리제이로 스프링 부트 시작하기

방학동안 스프링 부트 공부를 하긴 했는데, 전체적인 정리가 필요해 보여 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책으로 공부해보려고 한다 🤩🤩 아는 내용이라고 휘리릭 넘어가지 않는 것이 나의 목표 .. 꼼꼼히 공부해보겠다 !! 👩🏻‍💻 스프링 부트 프로젝트 만들기 start.spring.io를 이용해 프로젝트를 만드는 방법도 있지만, 이번에는 인텔리제이에서 new project를 다음과 같이 gradle로 만들어줬다. ( Artifact : 프로젝트 이름 ) 의존성 주입이 필요하면 직접 할거라 그냥 넘어가줬다. > build.gradle의 코드가 무슨 역할을 하는지, 의존성 추가가 필요하면 어떻게 해야하는지 알아보기 위함 ! 👩🏻‍💻 build.gradle 구경하기 만들어진 프로젝트의 build...

CS

Instruction & Register

컴퓨터 프로그램은 수많은 Instruction으로 이루어져 있다고 할 수 있다. 개발자가 프로그래밍 언어로 작성한 코드들은 assembly어로 컴파일 되어 OS로 전달되고, OS는 전달 받은 명령을 한줄 한줄 순서대로 읽으며 그 계산을 CPU의 여러 register에게 맡긴다. ✏️ Register PC(Program Counter) - 다음에 반입할 명령어의 주소를 저장. (명령어를 반입할 주소) IR(Instruction Register) - PC에 저장되어 있는 주소에 접근하여 현재 수행할 명령어를 가져와 저장. (반입한 명령어) PSW(Program status word) - 지금 실행되고 있는 프로그램이 OS 커널인지, 사용자 프로그램인지 구분하는 상태 코드를 저장. 그에 따라 CPU가 접근할 ..

뚝딱뚝딱/Java

[Error] java.util.NoSuchElementException: No value present

validation 로직을 테스트하는 도중 아래과 같은 에러를 마주쳤다^^; 이 것은 ! ! 존재하지 않는 ! memberId로 member를 조회할 경우 값이 없기 때문에 나타나는 현상이다. -> get() 메서드 코드를 보면 자바에서는 Optional.get()을 사용했을 때 값이 없다면 No value present 메세지가 출력하는 걸 알 수 있다. ✏️ 해결 1 그래서 Optional 객체에 저장된 값이 null이면 get()메서드를 사용했을 때 No value present 예외가 발생하므로 get()을 호출하기 전에 isPresent() 메서드를 사용하여 Optional 객체에 저장된 값이 null인지 아닌지를 먼저 확인하는 것이 좋다구 한다 ~.~ public Member findMembe..

뚝딱뚝딱/깃-허브

[Git][GitHub] 정복하기!!!!!!!!!!!!!!

umc에서 프로젝트 시작하기 전에 들으면 좋을 강의를 제공해주셨다! https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-%EA%B9%83-%EA%B9%83%EB%A6%B0%EC%9D%B4%EC%BD%94%EC%8A%A4# 코딩은 실전이다! - Git알못을 위한 깃린이코스(Git, Github 실습위주) - 인프런 | 강의 Git, Github 어디서부터 시작할지 막막하셨죠?🧐 가장 쉬운 이해로 소개하는 초급 Git부터 중급 Git 활용 및 협업까지의 All-in-One 코스입니다., - 강의 소개 | 인프런... www.inflearn.com 짜잔.. umc 최고..... > 깃 / 깃허브는 다르다! 깃 : 버전 관리 프로그램 (로컬 local) 깃허브 : 원격에서..

허지렁이
Read me