목록분류 전체보기 (169)
코디잉
자바 기본 문법을 공부하다 보면 ‘리터럴(Literal)’이라는 용어를 접하게 된다.이번 글에서는 리터럴의 개념과 자바에서 리터럴의 타입이 어떻게 결정되는지를 정리해본다. 🔤 리터럴(Literal)이란? 리터럴(Literal)은 코드에 개발자가 직접 작성한 고정된 값 을 의미한다. int a = 100;boolean b = true;String c = "Hello";위 코드에서 100, true, "Hello"와 같이코드에 직접 작성된 값들이 모두 리터럴이다. 리터럴 자체는 변하지 않는다. 🤔 “값은 바뀔 수 있는 거 아닌가?” 여기서 이런 의문이 든다. '리터럴 자체는 변하지 않는다고?그런데 값은 바뀌잖아?" int a = 100;a = 200;위 코드를 보면 a의 값이 바뀌었으니리터럴도 바뀐 것처..
자바에서 지역 변수는 반드시 초기화한 후에 사용해야 한다. 이 규칙은 자바를 처음 배울 때부터 자주 들었지만,왜 이렇게까지 엄격하게 제한하는지 깊이 생각해보지 않고 넘어갔다.초기화하지 않은 변수를 사용하면 어떻게 되고, 왜 자바에서는 이를 허용하지 않을까? ❗ 초기화하지 않은 지역변수 사용자바에서는 초기화하지 않은 지역변수를 읽거나 사용하려고 하면 컴파일 에러가 발생한다.int local;System.out.println(local); // 컴파일 에러java: variable local might not have been initialized🤔 왜 이런 에러가 발생하는 걸까?자바 컴파일러는 지역 변수가 사용되기 전에 반드시 초기화되었다고 확실하게 판단할 수 없는 경우,코드 실행 자체를 허용하지 않는다..
자바 프로그램의 컴파일과 실행 과정자바 프로그램은 컴파일 단계와 실행 단계를 거쳐서 실행된다.그동안 이 흐름을 막연하게 알고 있었는데, 다시 공부하고 정리하면서 IDE가 가려주던 실행 과정을 더 명확히 이해할 수 있었다. 🔄 전체 흐름자바 소스 코드(Hello.java)는 javac 컴파일러를 통해 바이트코드 파일(Hello.class)로 컴파일된다.이후 java 명령을 실행하면 운영체제가 JVM 프로세스를 실행하고, JVM은 Hello.class 파일을 로드하여 내부에서 실행한다. 즉, 자바 프로그램을 실행한다는 것은.class 파일을 직접 실행하는 것이 아니라JVM을 실행하고 그 안에서 class 파일을 실행하는 것을 의미한다. 🛠️ 컴파일 단계 (javac)자바 소스 코드는 javac 컴..
👩💻 나는,올해로 백엔드 개발 경력 1년 차를 넘긴 개발자로, 그동안 풀스택 개발을 경험했지만, 현재는 운영 업무를 맡고 있다. 마음 한켠에는 "기본기가 부족하다"는 생각이 늘 있었고, 여러 곳에서 많이 볼 수 있는 TDD, Redis, Kafka, 대용량 트래픽 처리, 아키텍처 설계 같은 주제들을 직접 경험해 보고 싶었다. 🤔 시작 전 고민 & 항해 Lite 선택 이유 퇴근 후 집에 오면 "공부해야지"라는 생각은 가득했지만, 막상 실행으로 옮기는 건 쉽지 않았다. 공부할 건 정말정말 많고, 어떤 것부터 시작해야 할지도 막막했다. 예전부터 항해 플러스를 해볼까 고민했지만, 직장과 병행하기엔 빡세 보이는 커리큘럼과 금액 때문에 망설여졌다..ㅎㅎ 그러던 중 퇴근 후 + 주말에 유연하게 참여할 수 있는..
🧐 9주차 과제 Kafka 도입: 결제 성공 후 처리 로직을 Kafka 메시지 기반으로 비동기 처리하도록 개선 🙋♀️ 고민했던 부분 기존 ApplicationEvent → Kafka 기반 구조로 리팩토링 ◾ 기존에는 @TransactionalEventListener(phase = AFTER_COMMIT) 기반으로 비동기 이벤트를 처리했음 ◾ Kafka를 도입하여, 이벤트들을 Kafka 메시지로 발행하고 별도 Consumer에서 처리하도록 구조 변경 ◽ 발행: ReservationService.pay() 성공 시 PaymentSuccessMessage Kafka로 전송 ◽ 소비: PaymentSuccessKafkaConsumer.consume()에서 메시지 수신 후 랭킹/토큰/내역 순..
📘 책: 『혼자 공부하는 컴퓨터 구조+운영체제』🗓️ 기간: 3주차📍 범위: Chapter 06 ~ Chapter 08💾 Chapter 06 | 메모리와 캐시 메모리 6-1. RAM의 특징과 종류✅ RAM (Random Access Memory)실행할 프로그램의 명령어와 데이터가 저장되는 메모리휘발성: 전원이 꺼지면 데이터가 사라짐비휘발성 메모리 예시: 하드디스크, SSD, CD-ROM, USB 등RAM 용량이 클수록 더 많은 프로그램을 동시에 빠르게 실행하는데 유리📚 RAM의 종류종류설명특징DRAM (Dynamic RAM)일반적인 RAM- 주기적으로 새로 저장 필요- 소비전력이 비교적 낮고, 저렴- 집적도 높아서 대용량으로 설계하기 용이SRAM (Static RAM)캐시 메모리에 사용- 시간..
🧐 8주차 과제 1. Application Event: 이벤트를 활용하여 트랜잭션과 관심사를 분리하기 2. Asynchronous Design: 대기열 기능에 대해 Redis 기반의 설계를 진행 3. feedback - RedisReservationRankingManager 상수값 외부 설정으로 빼기 4. feedback - redis 분산락 TTL 충분히 길게 줘서 중복실행 확률 낮추기 🙋♀️ 고민했던 부분① Event 활용하여 트랜잭션과 관심사 분리◾ 기존에는 모든 로직이 ReservationService.pay() 내에 포함되어 있어, 핵심로직과 부가로직이 혼재된 구조였다. ◽ 핵심 로직: 대기열 토큰 검증, 포인트 사용, 좌석 상태 변경 ◽ 부가 로직: 예매율 랭킹 갱신..
📘 책: 『혼자 공부하는 컴퓨터 구조+운영체제』🗓️ 기간: 2주차📍 범위: Chapter 05 🚀 Chapter 04 | CPU 성능 향상 기법✅ CPU 성능을 높이는 방법클럭 속도 ⬆️코어 수 ⬆️ 스레드 수 ⬆️ 🕐 클럭(Clock)CPU 내부에서 작동 타이밍을 맞춰주는 전기 신호클럭 속도 ↑ → 명령어 사이클 반복 속도 ↑ → 연산 속도 ↑하지만, 발열 등의 문제로 인해 무작정 높이기엔 한계가 존재🧩 코어(Core)명령어를 실행하는 부품하나의 CPU 안에 여러 개의 코어가 탑재된 경우 → 멀티코어 CPU코어 수가 많다고 무조건 성능이 오르지는 않음!각 코어에 연산 작업이 잘 분배되는게 중요하다.🧵 스레드(Thread)하드웨어 스레드하나의 코어가 동시에 처리하는 명령어 단위하나의 코어..
📘 책: 『혼자 공부하는 컴퓨터 구조+운영체제』🗓️ 기간: 2주차📍 범위: Chapter 04 🔍 Chapter 04 | CPU의 작동 원리4-1) ALU와 제어장치🧮 CPU의 주요 구성 요소ALU (산술논리연산장치): 계산 담당레지스터: CPU 내부의 임시 저장 공간제어장치: 명령어를 해석하고 제어 신호를 보냄🔧 ALU (연산 장치)레지스터로부터 피연산자, 제어장치로부터 제어신호를 전달받음산술/논리 연산 수행 후 결과 + 플래그를 출력결과는 레지스터에, 플래그는 플래그 레지스터에 저장플래그 종류: 부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 플래그 등📡 제어장치명령어 해석 및 제어 신호 생성컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기적 신호CPU 제조사..
📘 책: 『혼자 공부하는 컴퓨터 구조+운영체제』🗓️ 기간: 1주차📍 범위: Chapter 01 ~ Chapter 03 🧠 Chapter 01 | 컴퓨터 구조 시작하기 ✅ 컴퓨터란?명령어를 처리하는 기계컴퓨터 구조는 크게 2가지로 구성됨컴퓨터가 이해하는 정보: 데이터, 명령어컴퓨터의 4대 핵심 부품:CPU (중앙처리장치)메모리 (주기억장치)보조기억장치입출력장치🔧 CPU컴퓨터의 두뇌 역할명령어를 읽고 → 해석하고 → 실행주요 구성 요소ALU (산술논리연산장치)레지스터제어장치💾 메모리 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 한다.휘발성: 전원 꺼지면 데이터 사라짐가격 ↑, 저장용량 ↓🗃️ 보조기억장치비휘발성 저장장치전원이 꺼져..