전체 글 49

예술적인 코드 모음 (계속 업데이트)

주관적입니다.HashMap 클래스의 put() 메서드의 구현부 목적 : 튜닝. Hash 자료구조는 O(1) 성능을 목표로함. 읽고 쓰기가 빈번한 작업을 최소화할 필요있음방법 : 인스턴스 변수 읽기(접근) 1번으로 줄임.인스턴스 변수 접근 최소화하기 위해 바로 로컬 변수 (tab)에 대입.조건식을 항상 검사하므로, tab 에 table 참조변수에 저장된 주소가 대입됨. 첫 의문증 : 왜 대입문을 if문 조건식 내부에 작성했나? 밖에 있으면 안되나? 실제 Key와 Value를 저장하는 1차원 배열과 링크드 리스트로 구성된 객체 자체를 가리키기 위해 putVal() 메서드 내부에서 tab에 table 참조변수에 저장된 주소를 대입해야한다. 근데 코드 봤는데 'tab = table' 대입문이 없었다. 자세..

Java 2025.04.29

[Java] 바이트코드로 분석하는 new T()가 안되는 이유

Intro제네릭 타입 변수가 new T()로 인스턴스를 생성할 수 없는 이유를 자바의 바이트 코드 관점에서 분석해보자. 제네릭 클래스가 아닌 클래스의 new 키워드 적용new 키워드가 어떻게 생성할 클래스를 알고 있는지 확인할 코드 예제이다. 아래 코드를 컴파일 한 후 NewKeywordTest.class 클래스 파일을 만든다. package CH12_Generics_Enums_Annotation;public class NewKeywordTest { public static void main(String[] args) { String str; str = new String("HELLO TEST"); }} 'javap -v 클래스파일명' 명령어를 통해 (*.clas..

Java 2025.04.27

[커널아카데미] 백엔드 12기 5주차 - 회고 및 공부한 내용 정리

회고[커널아카데미] 백 Intro이번 주는 낯선 개념을 많이 배워서 틀을 세우는데 시간이 생각보다 오래 걸린 듯하다. 빨리 잊어버리고 바로 복습하는 것의 중요성을 느낀 주였다. # 낯설거나 어려운 개념은 자주 많이 봐서 납득당하기 자바를 배울 때 지네릭, 람다와 스트림, 입출력 부분을 깊게 공부하지 않아서 수업에서 배울 때 이해 되는 것 같다가도 천천히 다시 볼 때는 궁금증이 계속 생겼다. 특히 규칙은 받아들여야 하는데 머릿속에 들어가 있지 않으면 다음 내용을 공부하면서 왜 안될까? 라는 생각 때문에 진도 나가는데 차질이 있었다. 예시로, Ch15.입출력에서 '스트림' 자체가 모호하게 다가왔는데 계속 '입력 스트림을 통해 자바 애플리케이션으로 데이터를 가져옴.' 과 같이 주석에 작성하면서 공부를 했다..

회고 2025.04.27