본문 바로가기

CS study/java

(22)
[JVM]Java 21과 JVM, 새로운 GraalVM을 사용하는 이유에 대해 Java 21을 사용하며 GraalVM이 생겼다고 한다. 이는 기존의 JVM 구조의 한계점을 극복하기 위해서인데, 다음과 같이 이해하면 좋을 것 같아 내용을 정리하였다. https://mangkyu.tistory.com/301 [Java] Hotspot VM의 한계(JIT, Just-In-Time 컴파일러)와 이를 극복하기 위한 GraalVM의 등장이번에는 Hotspot VM의 한계와 이를 극복하기 위한 GraalVM에 대해 알아보도록 하겠습니다. 1. Hotspot VM과 JIT 컴파일러(Just-In-Time Compiler) [ C 언어의 동작 방식 ] C, C++, GoLang, Rust 등과 같은 컴파일 언어는mangkyu.tistory.com 망나니 개발자님의 블로그를 많이 참조하였다. 정말..
예시를 통해 알아보는 Java의 Call by Value, Call by Reference 개념 개요 java에서는 call by value로 jvm이 동작하고, c++등에서는 call by reference로 참조에 의한 복사로 객체들이 생성되고 동작된다고 한다. (물론, 최신 트렌드에서는 이를 적당히 합하여 사용한다. 원론적인 이야기이다.) 오늘은 이 개념에 대해 의의와 실제 동작 과정에서 어떻게 이루어지는지 알아볼 것이다. 한 눈에 보는 두 개념의 차이 요약 : 참조에 의한 호출은 그냥 무조건 메모리 주소 자체를 참조하는 거고, 값에 의한 호출은 그 값의 복사본을 만들어서(만들때 원본을 참조) 운영한다는 차이이다. Call by reference : 원본 데이터 자체를 직접 조작. Call by value : 원본 데이터를 보호하면서 독립적인 복사본을 통해 작업을 수행. call by valu..
URI/URL/URN, Restful 원칙 개요 기존 개념의 추가 정의 시간이다. 알고는 있었지만 명확하게 설명하지 못했던 내용들을 다시 복기하고, 정리하고자 한다. Restful을 설명하기 전에, 헷갈렸던 URI/URL부터 짚고 넘어가 보자. URI/URL/URN 1. URI (Uniform Resource Identifier) 정의: URI는 인터넷에서 자원을 식별하는 데 사용되는 문자열이다. '자원'은 웹 페이지, 문서, 이미지, 파일, 그리고 백엔드에서 자주 사용하는 API Endpoint 를 포함하는 개념이다. 기능: URI는 특정 자원을 식별하고, 해당 자원이 어떻게 접근될 수 있는지에 대한 정보를 제공한다. 종류: URI에는 두 가지 주요 형태가 있다. URL (Uniform Resource Locator) URN (Uniform R..
SOLID 5원칙에 대해 java에서 항상 나오던 기본 원칙 중 하나인 SOLID를 예시를 들어 설명하고자 한다. 개념 자체는 알고 있지만 구체적인 예시를 떠올려 보다 생각나 포스팅하였다. SRP(Single Responsibility Principle) : 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다는 원칙. 개인적으로 비교적 가장 쉬운 개념이라 생각이 든다. 객체지향적으로 만들어진 모든 Class들은 각각의 역할에 맞는 메서드, 변수, 책임 등을 가져야 한다. 로그인 클래스가 존재한다면 이 클래스는 로그인에 관련된 기능만을 가져야 한다. 수정, 삭제, 확장 역시도 로그인에 관련된 내용일 것이다. OCP(Open - Closed Principle) 개방 - 폐쇄 원칙 기능의 개방(확장)에는 열려 있고, 변경에는 닫혀..
[해시 테이블].. equals와 hashcode를 사용한 객체 비교 탐구(유익) 장장 3.5시간동안 고민하고 찾아봤던 나의 기록을 정리하고자 한다. 알고리즘 문제를 풀던 도중, 의문이 생겨 레퍼런스를 조사하고 정리한 내용이다. 가장 큰 의문의 시발점은 다음과 같았다. "기본형 및 String은 ==나 equals로 참 거짓을 판단할 수 있는데, 내가 만든 Class 객체들도 이걸 사용할 수 있을까?" 결론부터 말하자면 가능하다. Object에서 기본적으로 지원하는 equals 메서드를 자체적으로 Override하면 된다. HashSet -> HashMap -> contains~() -> getNode() -> equals and Hash을 통해 비교하기 때문 내가 궁금했던 HashSet이나 HashMap의 자료구조에서 사용하는 contains도 결국에는 equals와 hashcode..
[Java] 인터페이스와 추상 메서드, 일반 메서드 추상클래스가 생긴 이유가 뭘까? 추상 클래스는 자체적으로 인스턴스로 구현할 수 없다. = 인스턴스로 구현하고 싶다면 하위 클래스가 상속(extend) 추상적인 부분을 Override로 구현해야 한다! 상속을 받는데, 내 하위 클래스가 이 기능(메서드)를 가지게 하고 싶다. 근데 무슨 기능인지는 잘 모르지만.. 어쨌든 구현해야 한다!! 아마도 일반 메서드와 가장 큰 차이라고 생각한다. 그럼 구현하지도 못할 메서드를 도대체 왜 사용하는 걸까? 추상 클래스가 있는 이유는 여러 가지다. 공통 로직 중복 제거 상속을 받는 하위 클래스들이 공통으로 사용하는 로직이나 속성을 한 곳에서 관리할 수 있다. = 추상 메서드를 상속받는 하위 클래스들은, 추상클래스의 메서드를 공통으로 가지게 된다. 템플릿 제공 추상 클래스에..