본문 바로가기

공부66

[Java] JVM의 구조 JVM의 구조 JVM(Java Virtual Machine) 자바가상머신 Java 프로그램을 실행할 수 있는 가상머신 Java 파일을 compile 하는 과정을 거치면, Byte 코드로 이루어진 class 파일이 만들어진다. JVM 은 해당 바이트 코드를 읽으면서 필요한 부분에 대해 메모리에 올리는 작업을 하게 된다. JVM내부에서도 여러가지 구조가 나뉘어져있는데, 각각은 다음과 같은 역할을 한다. Class Loader Byte 코드(클래스파일) 을 읽어 메모리에 올리는 역할을 한다. 메모리 스택, Heap, 메서드 영역으로 나뉘어진다. 스택 영역 : 메서드 호출을 스택프레임이라고 부르는 블럭으로 쌓는다. Heap : 객체를 저장한다. 메서드 영역 : 클래스 수준의 정보를 저장한다. (Class 의 이.. 2022. 3. 16.
2021.12.29 CleanCode 일지 #1. 단항함수 작성 CleanCode 책의 3장 함수 챕터에 보면, 함수의 인수에 대한 얘기가 나온다. 가장 이상적인 함수는 인수를 0개 가지는 함수이며, 차선은 인수를 1개 가지는 함수다. 오늘 javascript 에서 함수 하나를 작성했는데, 내가 년도와 학기의 데이터를 넘기면, 그에 해당하는 강의의 시작종료일을 가지고 와야하는 기능을 하는 함수였다. 년도와 학기 두개 파라미터를 넘기는 함수를 작성하려고 하다가, 이 두 인수를 모두 포함할 수 있는 객체를 넘겼다. (객체 안에 접근해 년도와 학기정보를 가져올 수 있다.) 즉, getDate(year, semester) 와 같이 2개 인수를 가지는 함수를 작성하지 않고, getDate(schDateInfo) 와 같이 함수를 작성하였다. 대단한 뭔가를 한 건 아니지만, 사실.. 2021. 12. 30.
서론. CleanCode 기록 시작 블로그에 장황하게 하겠다고 다짐한 프로젝트나 공부계획 등이 일이나 체계적인 계획의 부재(ㅎㅎ)로 인해 시작도 전에 중단(...)이 된 것들이 꽤 많은 것 같다. 요즘에 Effective Java 와 Clean Code 라는 책을 읽고 있다. CleanCode는 사실은 10챕터인가 까지 읽었긴 했다. 뻔한 얘기도 있는가 반면 정말 이런 부분들까지 신경쓰면 훨씬 더 깔끔한 코드가 될 수 있겠다는 생각이 들었다. 오늘부터 CleanCode 일지를 써보려고 한다. 매일매일은 아니고, 내 스스로가 좀 더 좋은 코드를 작성한 것 같다고 느낀 날만. 클린코드에 관심이 있어서 책을 읽는 것 까지는 좋은데, 이걸 읽는데서만 그치는 게 아니라 스스로 좋은 코드를 작성하는 습관을 들여야 진짜 독서를 한 보람(?)이 있을 것.. 2021. 12. 29.
Spring DI 와 IoC 의존성(Dependency) 어떤 객체가 생성되기 위해 다른 객체가 꼭 필요한 관계를 의존관계라고 함. 한 클래스가 바뀔 때, 다른 클래스에도 영향이 있다. 주로 new라는 키워드를 통해 의존관계가 생성된다. class CoffeeMachine{ private Water water = new Water(); } CoffeeMachine 클래스가 Water라는 클래스의 객체를 만들고 있음. (CoffeeMachine는 Water에 의존) Water가 아닌, HotWater 객체를 사용하고 싶어도, 코드를 변경하지 않는 이상은 바꿀 수 없음. 의존성 주입(Dependency Injection) new 를 통해 직접 만들어주지 않고 객체에 의존성을 주입해주는 것. class CoffeeMachine{ priv.. 2021. 12. 23.
AWS - 1. 공부시작 생활코딩 AWS 강의 시청 AWS 에서 프리티어로 EC2 인스턴스 하나를 만들었다. 우분투에 아파치 설치 후 포트개방까지 실습. 해보고 싶은 것 이것저것 설치하고 공부해볼 예정이다. AWS 의 EC2는 Elastic Compute Cloud의 약자로, 컴퓨터를 통째로 빌려주는 임대서비스라고 할 수 있다. sudo apt update; sudo apt install apache2;인바운드 규칙안에 http포트 (80번) 개방해 주어음. 유의할 점은 중지 후 시작을 하게 되면 IP주소가 변경되므로 이 점을 주의할 것. 2021. 4. 28.
이펙티브 자바 4장 규칙14. public 클래스 안에는 public 필드를 두지 말고 접근자 메서드를 사용하라 Public 클래스의 경우 선언된 패키지 밖에서도 사용가능한 클래스에는 접근자 메서드를 제공하라. 그래야만 클래스 내부 표현을 자유로이 수정 가능하게 됌 하지만, immutable 필드의 경우 필드를 외부로 공개한다고 해도 심각성이 좀 덜할 순 있음 그래도 그럴 필요가 있는지는 의문 Package-Private 클래스나 private중첩 클래스의 경우 데이터 필드를 공개하더라도 잘못은 아님. 되려 더 깔끔한 코드가 될 수도 있음. 결론적으로, 되도록 필드를 외부로 공개하는 행위는 하지 않는 것이 좋다는 것. 2021. 3. 14.