Programming🧑💻
-
변수와 포인터Programming🧑💻/Cpp 2025. 1. 30. 23:48
변수 선언변수를 선언하면 해당 변수의 값을 저장하기 위한 메모리를 할당한다.이때 얼만큼의 메모리를 할당할지는 변수의 타입에 따라 결정된다.예를 들어 일반적으로 int 타입의 경우에는 4byte를 char 타입의 경우 1byte를 할당한다.2025.01.30 - [Programming🧑💻/Cpp] - 변수와 포인터시스템 내부적으로 룩업 테이블이라는 것을 가지고 있으며 해당 테이블에는 변수명, 변수 타입, 메모리 시작 주소를 가지고 있다.변수를 선언한 다음에 `a = 5` 명령어가 실행되면 내부적으로는 룩업 테이블에서 변수명 a에 대응하는 메모리 시작 주소를 찾아가서 5라는 값을 저장한다.포인터란?다른 변수의 주소를 값으로 저장하는 변수변수를 선언하는 이유는 숫자나 문자와 같은 특정한 '값'을 저장하기..
-
타입은 왜 중요할까?Programming🧑💻 2025. 1. 29. 23:48
프로그래밍 언어는 변수 선언시 타입 명시 유무에 따라 크게 두 가지로 나눌 수 있습니다. JavaScript나 Python같은 스크립트 언어들은 변수 선언 시 타입을 명시하지 않아도 되며, 런타임에 타입이 결정되는 동적 타입 시스템을 사용합니다. 반면 C나 Rust와 같은 언어들은 변수 선언 시 타입을 명시적으로 지정해야 하며, 컴파일 타임 이전에 타입이 결정되는 정적 타입 시스템을 채택하고 있습니다. 그렇다면 왜 C나 Rust와 같은 언어들은 변수 선언 시 타입을 명시해야 할까요? 이는 타입 지정을 통해 개발자가 데이터를 표현하는 데 필요한 메모리를 직접 제어할 수 있도록 하기 위함입니다. 컴퓨터는 모든 데이터를 0과 1의 나열로 표현합니다. 각 자리에는 0 또는 1만이 올 수 있으며, 이러한 값들의 ..
-
차근 차근 살펴보는 GitProgramming🧑💻/Git & Github 2024. 4. 28. 16:41
변경사항을 추적하자프로젝트를 진행해 나가며 코드의 양이 점점 많아 지면어느 순간 내가 무언가를 바꿨는데 뭘 바꿨는지 기억이 나지 않는 상황이 벌어집니다. 이와 관련된 상황들을 예방하기 위해서는 버전 관리를 해야합니다.그리고 git은 각 ‘커밋’(코드 덩어리)을 세이브 포인트로 하여 , 이들을 비교하며 무엇이 추가되었고 빠졌는지 변경점을 쉽게 알 수 있도록 도와주는 친구 입니다. 예를 들어 첫번째 커밋(코드 덩어리)에서는 파란색으로 보이는 사과 아이콘을 빨간색으로 바꾼다면 Git은 이 변경사항을 인지하고 이 변경점들을 바탕으로 새로운 커밋(코드덩어리)를 만들 수 있게 해줍니다. 개인이나 팀 내부에서 가지고 있는 룰에 따라 기준에 충족하는 코드의 변경사항이 생기는 경우 이를 커밋(별도의 커밋으로 만들어 놓으..
-
DTO(Data Transfer Objects)를 왜 쓸까?Programming🧑💻/Spring 2023. 8. 21. 15:52
DTO를 사용하는 이유 DTO(Data Transfer Objects)는 개발할 소프트웨어의 아키텍처가 계층화되어 있어서 각 레이어 간의 데이터의 교환이 필요하거나 외부 시스템과의 상호작용이 있는 경우 데이터를 주고받는 것을 용이하게 만들기 위해 사용하는 데이터 전송용 객체이다. 엔티티를 직접 사용하여 정보를 전달할 수 있지만 추후 기술할 이점들 때문에 DTO를 사용한다. 일단 이해를 위해서 다음과 같은 상황을 가정해 보자. 당신은 장난감 가게를 운영하고 있으며 다양한 장난감을 보유하고 있으며 장난감이라는 각 객체는 상품명, 가격, 제조일자, 제조국, 보증기간 등 다양한 정보를 가지고 있다. 이때 장난감이라는 객체는 변하지 않지만 이 객체를 어디서(계층)에서 다루냐에 따라서 장난감이라는 객체에 대해 필요..
-
JPA에서 엔티티 식별자를 사용하는 이유Programming🧑💻/JPA 2023. 8. 19. 01:23
일반적으로 서비스 이용자와 서비스 제공자 간의 요청과 응답의 흐름은 다음과 같다. 이용자가 서비스에 글 보기, 댓글 조회하기와 같은 서비스를 이용하기 위하여 요청을 보내면 제공자는 이용자의 요청을 식별하고 이에 해당하는 응답을 제공하기 위해 필요한 데이터(글, 댓글)를 데이터베이스로부터 조회한다. 조회한 데이터를 서비스의 특성에 맞게 가공하여(몇 개까지 보여줄 건지, 어떻게 보여줄 건지) 사용자에게 전달한다. 또한 이용자가 글이나 댓글을 작성하기와 같은 요청을 보내면 제공자는 이용자에게 전달받은 데이터를 사전에 설계한 데이터베이스 설계에 맞게 저장하고 이에 대한 결과를 사용자에게 전달한다. 즉 서비스 이용자와 제공자 간의 요청, 응답 흐름에서 서비스와 데이터베이스 간의 통신이 필요하다. 서비스와 데이터베..
-
[Spring] 스프링 필터와 필터 체인Programming🧑💻/Spring 2023. 3. 27. 14:42
스프링 어플리케이션 요청과 응답 흐름 웹 어플리케이션의 구성 웹 어플리케이션을 개발한다는 것은 클라이언트의 요청을 받아 서버에서 여러 동작을 통해 동적으로 만들어낸 응답을 내준다. 여기서 응답을 처리하고 정해진 동작을 하는 요소들을 웹 컴포넌트라고 한다. 웹 컴포넌트들은 독립적으로 있지 않고 컨테이너 안에서 관리된다. 컨테이너는 클라이언트의 요청을 받으면 해당 요청을 처리할 웹 컴포넌트를 지정해 주는 역할을 하며, 웹컴포넌트들의 전반적인 생명주기(초기화 - 동작 - 제거)를 관리한다. 자바에서의 웹 어플리케이션 자바에서는 웹 컴포넌트를 서블릿이라고 하며, 서블릿을 관리하는 컨테이너를 서블릿 컨테이너라고 한다. Tomact은 서블릿 컨테이너의 일종이다. 스프링 더하기 서블릿 컨테이너로는 구현가능한 동작의 ..
-
[JAVA] NPE : 널포인트 ExceptionProgramming🧑💻/Java 2023. 3. 16. 22:09
Null Point Exception이 뭔데?자바는 null이라고 부르는 특별한 타입의 값을 허용하는데, null은 참조변수가 아무값도 참조하고 있지 않은 상태를 나타낸다.String a = null;String type과 같이 참조형의 변수에 값을 할당하면 할당된 값은 변수가 가리키고 있는 힙상의 메모리의 주소를 의미한다. 따라서 null이 할당되게 되면 해당 참조 변수는 실제로는 아무곳도 가리키지 않는 상태로 값이 없는 상태가 된다. 이 Null 값은 NullPointerException을 터뜨려서 자바 개발자들를 괴롭히는 골치 아픈 녀석으로 주의하지 않으면 자주 만나게 된다. NullPointerException은 프로그램이 실행중에 null값인 변수에 접근을 시도하면 터지는 예외이다. Null 참..
-
[JAVA] 컴퓨터와 자바 메모리에 대한 이해Programming🧑💻/Java 2023. 3. 7. 12:52
컴퓨터 메모리 컴퓨터 메모리는 두가지 종류로 구분된다. 비휘발성 기억 장치 : 전원 공급이 없어도 저장된 데이터를 유지한다. (컴퓨터가 종료되어도 데이터가 저장되어 있음) ex)HDD,SDD휘발성 기억 장치 : 데이터 유지를 위해서는 지속적인 전원 공급이 필요하다. (컴퓨터 종료시 데이터가 휘발) ex)RAM 메인 메모리CPU는 HDD, SDD 같은 비휘발성 기억장치보다 RAM으로 되어 있는 메인 메모리에 빠른 접근이 가능하다.메인 메모리 상에는 현재 실행중인 어플리케이션과 관련된 데이터들이 저장된다. 어플리케이션 실행시, 종류 직전 후에 다시 실행하는 것보다 컴퓨터 종료 후 다시 실행하는 것이 조금 더 오래 걸리는 이유는 메인 메모리가 캐시 또는 버퍼의 역할을 하기 때문에 어플리케이션 실행에 필요한 일..