TIL-25.11.27

이준연·2025년 11월 27일

학습 키워드

  • 컴퓨터의 기억 방식
  • 자바 프로젝트 관리
  • 변수
  • API 명세서

컴퓨터의 기억 방식

주 기억장치 - RAM

사람은 주 기억장치로 뇌를, 컴퓨터는 RAM을 사용합니다.

  • 주 기억장치 - 메모리(RAM)의 특징**: 휘발성, 빠른 속도
    • 사람도 컴퓨터도 정보를 영구적으로 저장할 수 없습니다. 이 특징을 휘발성이라고 합니다.
    • 예를 들어, 컴퓨터에서 문서를 작성하다가 저장하지 않고 갑자기 종료되면 작업하던 내용이 모두 사라집니다.

보조 기억장치 - HDD/SSD

사람은 정보를 영구적으로 저장하기 위해 필기를 합니다. 컴퓨터도 영구적으로 정보를 저장하기 위해 하드디스크를 활용합니다.

  • 보조 기억장치의 특징: 영구저장, 느린속도
    • 보조기억장치에 저장된 정보는 영구적으로 유직되지만, 저장된 정보를 가져오기 위해서는 더 큰 비용이 소모 됩니다.
    • 주 기억장치보다 느리다는 것이 특징입니다.

컴퓨터가 메모리를 관리하는 방법

컴퓨터의 메모리는 1 바이트 단위로 주소가 매겨져 관리됩니다.

  • 바이트(Byte)
    • 컴퓨터가 데이터를 저장하고 처리하는 단위 중 하나입니다.
    • 1 바이트는 8비트로 구성되어 있습니다.
  • 비트(Bit)
    • 컴퓨터가 데이터를 저장하고 처리하는 단위 중 하나입니다.
    • 1 비트는 0 혹은 1중에서 한 개를 저장할 수 있는 공간입니다.

자바 프로젝트 관리

이름 규칙

  • 카멜케이스(camelCase🐪)
    • 대문자가 혹처럼 튀어나옵니다.
      fitstName, lastName, fullName
  • 스네이크케이스(snake_case🐍)
    • 언더스코어가 뱀처럼 이어집니다.
      first_name, last_name, full_name

패키지(폴더)

Java 프로젝트에서는 파일들의 묶음을 패키지라고 합니다.

  • 패키지(Package)는 관련된 자바 클래스들을 그룹으로 묶는 기능입니다.
  • 즉, 폴더처럼 파일(클래스)을 정리해서 관리할 수 있도록 도와주는 역할을 합니다.

패키지 이름규칙

  • Java에서 패키지명은 소문자만으로 적는 것을 권장합니다.

클래스(파일)

Java 프로젝트에서는 클래스 이름이 파일명이 됩니다.

  • Main.java 파일 안에는 Main 클래스가 존재합니다.
import chapter.NewClass; // NewClass가 어느 패키지에 속하는지 설명

public clss Main {
	
    public static void main(String[] args){
    	
        system.out.print("Hello Java!");
        new NewClass(); // 다른 파일에 있는 클래스를 사용
    }
}

임포트(import)

  • 클래스를 프로그램 시작 지점에서 활용할 때 사용되는 클래스가 어느 패키지에 속한 클래스인지 명시해 줍니다.
  • 이 작업이 필요한 이유는 하나의 프로젝트 안에서 동일한 이름을 가진 클래스가 존재할 수 있기 때문입니다.

클래스 이름규칙

클래스 이름을 작성할 때는 첫 글자 대문자 + 카멜케이스 조합으로 작성합니다.

  • 이를 파스칼케이스(Pascalcase)라고 합니다.

변수

변수란 데이터를 컴퓨터에 저장하기 위한 공간입니다.

  • 우리는 도구를 활용해 다양한 것들을 만들 수 있습니다.
  • 도구를 활용하고 보관하기 위해서 상자에 담아 관리합니다.
  • 상자에 이름을 붙여 놓으면 필요한 도구를 쉽게 찾아 사용할 수 있습니다.
  • Java도 데이터를 활용하고 보관하기 위해서 변수에 담아 관리합니다.
  • 이 데이터들은 메모리에서 관리됩니다.

변수의 구조

[자료형][변수이름][세미콜론]
int a;

변수 이름규칙

  • 가독성을 위해 카멜케이스를 권장라고 있으며, 명사 형태로 사용하는 것이 좋습니다.
  • 특수문자 또한 사용하지 않는 것이 좋습니다.

변수 활용

  • 문법: 변수 선언
    • 데이터 저장 공간을 만드는 것은 "변수를 선언한다"라고 합니다.
int a;
int b;
  • 문법: 변수에 값 할당
    • 선언된 변수에 값을 할당합니다.
int a;
a = 1;
  • 문법: 선언과 동시에 값 할당
    • 변수를 선언하면서 동시에 값을 할당해 줄 수 있습니다.
int c=2;
  • 문법: 기존 변수에 데이터 재할당
    • 변수는 재사용 될 수 있습니다.
    • 기존 변수에 값을 재할당하게 되면 값이 덮어씌워집니다.
c=3;
c=4;
c=5;
  • 문법: 변수에 변수를 할당
    • 변수에 직접 미리 선언된 변수를 할당할 수도 있습니다.
    • 데이터가 복사되어 할당됩니다.
int d=1;
int e=d;
d=10;
System.out.print(e) // 값은 1

자료형(DataType)

  • 자료형은 상자에 담을 수 있는 데이터의 크기를 결정하는 규칙입니다.
  • Java에서는 사용 빈도가 높은 자료형을 미리 정해 놓았습니다.(int, String, long, boolean)
  • 자료형으로 데이터의 크기를 표현합니다.

floatdouble형의 범위를 약이라고 표현한 이유

  • 이는 IEEE 754 부동소수점 표현 방식 때문입니다. Java의 float 과 double 은 2진수 기반의 부
    동소수점으로 저장되며 이는 10진수에서 정확한 자릿수를 보장하지 못하는 경우가 있기 때문
    입니다.

형변환(Casting)

  • 형 변환은 변수의 자료형을 다른 자료형으로 변경하는 것을 의미합니다.
  • 업캐스팅과 다운캐스팅 방식이 있습니다.

다운캐스팅

  • 큰 데이터를 작은 상자에 옮겨담는 것 입니다.
  • 큰 데이터를 작은 상자에 넣어야 하기 때문에 강제로 형 변환을 시켜야합니다.
  • 강제로 형 변환할 때는 명시적으로 변환시켜야 합니다.
  • 데이터 손실이 발생합니다.

업캐스팅

  • 작은 데이터를 큰 상자에 옮겨 담는 것 입니다.
  • 문제가 발생하지 않기 때문에 이 과정은 자동으로 변경됩니다.
  • 데이터 손실이 없습니다.

API 명세서

API 명세서에 대한 이해가 부족한 것 같아 Claude AI를 사용하여 빈 값이 들어간 API 명세서 예제를 만들고, 빈 값을 넣고 내가 이해하고 있는 부분과 개선할 부분을 확인하였다.

강점

  • HTTP 메서드와 엔드포인트, 상태 코드를 정확하게 이해하고 있다.
  • Path Parameter 사용법을 잘 알고 있다.

개선이 필요한 점

  • 에러 응답에 대한 커스텀 에러 코드의 네이밍이 관례적이지 못합니다.
  • 요청사항에 대한 에러 메시지 작성이 미흡합니다.
  • 헤더 Authorization의 인증 필요 여부와 인증의 목적의 차이점 이해가 부족합니다.

커스텀 코드 설계

✅ 해야 할 것

  • 일관된 네이밍 규칙 사용
  • 문서화 (코드표 작성 및 공유)
  • 도메인별 prefix 사용 (USER, PRODUCT, ORDER_)
  • 의미있는 이름 짓기
  • 재사용 가능하게 설계

❌ 하지 말아야 할 것

  • HTTP 상태 코드와 혼동되는 이름 (예: ERROR_404)
  • 너무 세분화 (모든 케이스마다 다른 코드)
  • 모호한 이름 (예: ERROR_001, FAILED)
  • 중복된 의미의 코드

에러 메시지 작성 능력 향상 방법

🎯 에러 메시지 작성 프레임워크

  • 에러 메시지는 3가지 요소를 담아야 합니다:
  • 공식: 무엇이 + 왜 + 어떻게
    [무엇이 잘못되었는가] + [왜 실패했는가] + [어떻게 해결하는가]

5W1H 체크리스트

인증 필요 여부 vs 인증의 목적

profile
반갑습니다!

0개의 댓글