본문 바로가기

전체 글94

[모던 자바 인 액션][Java] 3.람다 표현식 많은 책과 글들을 봤지만, 사실 람다라는 개념이 조금 어려웠다. 내가 이해할 수 있는 언어로 쓰여진 글들이 없어서, 모던자바 인 액션을 공부하며 내 나름대로의 기록을 해본다. 보통 공부하는 내용들은 깃헙에 올리기는 한다. 딱 일목요연하게 정리만 된 글도 좋지만, 내가 이해한 것들을 의식의 흐름대로 정리해보기 위해서 이 글은 따로 티스토리에 박제한다. Java8 람다 람다를 한 단어로 말하자면, "익명함수"이다. 익명클래스나 익명함수를 쓰는 이유가 뭘까? 많은 블로그 글에서도 접할 수 있듯, "한번만 사용되고 버려지는", "재사용되지 않는" 코드를 사용할 때 쓰일 수 있다. Java8 이전의 버전에서는 보통 이렇게 한번 쓰고 버려지는 코드의 경우, 익명 클래스라는 방법을 통해 해결하였다. 익명 클래스의 경.. 2022. 4. 3.
[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.