Java

🌱 Java & Spring 🌱

코드로 이해하는 Red-Black Tree의 연산과 Java TreeMap에서의 구현

1. Red-Black Tree란레드 블랙 트리란 Balanced Binary-Search Tree로, 모든 노드들을 빨간 색 혹은 검은 색으로 칠해 놓았기 때문에 레드-블랙 트리라고 부른다.  위 글을 보면 Red-Black 트리라는 이름의 어원을 알 수 있다.어이 없지만, 이런 이유로 Red-Black 트리이다! 트리를 처음 고안한 논문의 저자들이 사용할 수 있었던 프린터가 만들어낸 가장 "멋진"색이기 때문이라고 한다. 레드 블랙 트리는, 이런 빨강-검정으로 트리의 노드들을 색칠하고, 색에 대한 규칙을 세워 규칙을 어기는 경우 다시 균형을 맞춰 높이를 낮춘다. 균형을 맞추는 트리들이 균형을 맞추는 이유는 트리 Depth를 줄여 빠르게 탐색하기 위해서이다! 편향된 트리를 보면 알겠지..

🌌 OOP 🌌

Law of Demeter

발표 영상 (글이 훨씬 낫습니다.) : https://youtu.be/tdXd-f7QCnE?si=PidTl2ND8x4NxvdK&t=306 디미터 법칙은 "제우스"라는 하드웨어를 만드는 프로젝트 "Project Demeter" 중 소프트웨어 엔지니어링 관점에서 고민하고 느낀 점을 토대로 기술되었다. 객체의 자율성을 높혀 직접 협력하도록 만들어, 객체간 결합도를 낮추고, 응집도를 높히는 법칙이며, 갭슐화를 위한 구체적인 지침이다. 우리는 왜 객체지향을 공부해야 할까? 좋은 객체지향 설계란 무엇일까? 그저 다들 인프런 김영한 강사님 강의를 듣고, 대한민국에서 취직이 잘 된다고 하니 자바와 스프링을 공부해야 하는걸까? 자바와 스프링을 배우다 보면 자꾸 객체지향이라는 용어가 나오니까 SOLID와 캡상추다를 줄줄줄..

🌱 Java & Spring 🌱

Java 인터페이스의 OOP적인 활용

1. 인터페이스란? 1.1 처음보는 전자레인지로 음식을 데우는 방법 위 사진은 구글에 `전자레인지`라고 검색했을 때 나오는 사진들 중 아무 사진이나 가져온 것이다. 이 전자렌지로 어제 먹고 남은 치킨을 데워달라. 할 수 있겠는가? 쉽다. 문을 열고, 치킨을 넣은 다음 문을 닫고, 아래에 시간으로 추측되는 숫자들이 적힌 다이얼을 돌리고 기다리면 따뜻하고 눅눅한 치킨이 나오게 된다. 우리는 오늘 처음 보는 이 전자레인지로 차디찬 닭고리를 데웠다. 내가 전자레인지라고 알려주지 않아도 데울 수 있었을 것이다. 어떤 원리로 음식이 데워지는가? 이에 대한 지식이 있는 사람이라면 대답할 수도 있다. 마이크로파를 이용해 데웠다. 그럼 마이크로파를 쬐면 왜 데워지는가? 마이크로파가 음식물에 있는 물 분자에 흡수되면, 물..

🌱 Java & Spring 🌱

자바의 Type에 대해

컴퓨터는 계산을 위해 태어났다. 복잡한 계산을 위해선 값과, 값을 저장할 수 있는 기능이 필요했다. 컴퓨터가 다룰 수 있는 값은 본질적으로 010101과 같은 숫자로 이루어져 있어야 하는데, 인간의 편의를 위해 단순 정수 말고도 좀 더 다양한 형식의 자료들을 연산할 필요가 있었다. 그래서 이진수로 다양한 값의 종류를 표현했는데, data의 type에 따라 저장될 공간의 크기와 형식이 다르게 되었다. 이러한 자료의 형태를 자료형이라고 부른다. 이러한 자료형은 크게 기본형과 참조형으로 나뉘게 되는데, 기본형은 말 그대로 컴퓨터가 표현할 수 있는 문자, 정수, 실수 등의 기본적인 data type이고 참조형은 내가 저장하고 싶은 데이터의 주소값을 가지고 있는 type이다. 자바에서는 보통 객체의 인스턴스가 저..

🌱 Java & Spring 🌱

Lambda & Stream의 도입 배경과 원리, 최적화 전략! 알고 쓰자!!!

람다와 스트림은 원리도 모른 채 사용되는 경우가 많다. 인텔리제이 자동완성, Chat GPT와 코파일럿이 기가 막히게 알려주는데 왜? 알아야? 하지? 싶을 수 있다. 개인적으로 그냥 달달 외워서 사용하는 것을 매우 지양하기 때문에 이번에는 최대한 사용법 보다는 도입 배경이나 원리를 중심으로 얘기해보고 싶어서 글을 써 보았다. 단순 문법은 검색하면 바로 알 수 있다. 중요한건 원리 이해를 기반으로 한 제대로 된 활용이라고 생각한다. 여기에선 도입 배경과 원리, 최적화 전략 등을 알아보자. 재미있는 이야기들이 있다. 1. Lambda Expression 1.1 람다 도입 배경 프로그래밍 언어는 생물처럼 진화한다. 어떤 방향으로 발전하던지 혹은 발전하지 않던지, 환경에 잘 어울리면 살아남고, 어울리지 않으면 ..

🌱 Java & Spring 🌱

바이트 코드를 JVM에 싸서 드셔보세요

JVM은 자바 기본서를 피면 가장 앞에 나온다. 분명 살면서 몇 번을 읽었지만, 누가 물어보면 자세히 답변이 어려운 것을 모두가 공감할 것이다. 대충 어찌어찌 해서 바이트 코드가 만들어지고, 그걸 실행 시켜서 어떤 OS 위에서도 잘 돌아가게 해주는 가상머신 아닌가..? 이런 답변만이 머릿 속을 맴돌 뿐이다.. JDK와 JRE는 봐도 봐도 헷갈리고 모호하다 이번 기회에 확실하게 알아보자. JVM과 바이트 코드가 뭐 하는 물건인지? JVM에서 말하는 컴파일과 코드를 실행 과정은 어떻게 이루어지는지? 긴 여정속에서 함께할 동료들은 어떤 친구들이 있는지? 복잡하고 아름다운 JVM의 내부 구조와 함께 한번 알아보자. 사실 가장 아래 래퍼런스들의 문서를 읽는 것이 더 도움이 될 것 같다. 1. JVM이란 무엇인가 ..

진호우!
'Java' 태그의 글 목록