Operation System 운영체제(OS)는 어플리케이션 프로그램의 실행을 제어하는 소프트웨어이다. 프로그램은 소프트웨어이다. 하지만, 소프트웨어는 프로그램이 아니다. 프로그램은 독자적으로 실행될 수 있는 소프트웨어이기 때문에 소프트웨어 보단 작은 개념이라고 본다. 여기서 독자적으로 실행된다는 말은 Main Function의 유무이며, OS는 Main Function이 없다. 따라서 독자적으로 실행되는 프로그램이 아니다. OS의 또 다른 정의로는 프로그램과 하드웨어 사이의 인터페이스라고 한다. 그 이유는 응용 프로그램(Application Program)에서 하드웨어를 직접 제어하지 않도록 하기 위함이다. 당장 우리가 사용하는 어플리케이션에서 하드웨어 자원을 직접 관리하지 않는 것을 떠올려 보자. 즉..
* 해당 글은 김영한 강사님의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 보고 간단하게 정리한 글입니다.(자세한 내용은 강의가 최곱니다. 강의 사세요) 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 - 인프런 JPA 를 공부하고 책을 보며 어려웠던 내용을 위주로 먼저 보았습니다. 옆에서 1:1 과외해주는 것 같이 생생하고 이해 잘되는 설명, 예제(코드)가 너무 좋았습니다. 어느 것 하나 애매함없이 모두 www.inflearn.com @Entity @Entity가 붙은 클래스는 JPA가 관리하는 엔티티라고 하며, JPA를 통해서 테이블과 매핑할 클래스는 반드시 이 어노테이션을 붙여야 한다. 어노테이션 사용 시 주의할 점은 아래와 같다. 기본 생성자는 필수다. final 클래스, enum, int..
Intro 불변 객체란 객체 생성 이후, 내부의 상태가 변하지 않는 객체이다. 많은 책이나 블로그 글에서 이러한 불변 객체를 사용하는 것에는 큰 이점이 있다고 한다. 그 이유는 굉장히 다양하고 많으며 대부분의 경우 불변 객체로 만드는 것이 좋다. 다음은 불변 객체를 사용하는 이유를 나열한 것이다. Thread Safe 하여 병렬 프로그래밍에 유용하고, 동기화를 고려하지 않아도 된다. 실패 원자적인(Failure Atomic) 메서드를 만들 수 있다. 예외가 발생하더라도 메서드 호출 이전의 상태를 유지하기 때문이다. Cache나 Map, Set등의 요소로 활용하기 좋다. 부수 효과(Side Effect)를 피해 오류 가능성을 낮출 수 있다. 순수 함수들로 구성되있으며, 객체의 상태가 유지되기 때문이다. 가..
WebConfig _WebConfig_는 웹 구성에 대해 지정하는 내용이 담겨있는 설정 파일을 말한다. _WebConfig_는 구현체이고 _WebMvcConfigure_ 인터페이스를 구현하여 작성할 수 있다. 이 _WebConfig_를 다루면 좋은 점은 Controller 단으로 오기 전이나 오고난 후, 혹은 그 사이에 인터셉터를 두는 등 다양한 방식으로 커스텀하는 것이 가능하다. 주로 자주 사용하는 것은 _View Controller_, _interceptors_, _ArgumentResolvers_인데, 어떤 방식으로 내 입맛에 맞도록 다룰 수 있는 지 한번 살펴보자. View Controller _View Controller_는 URL 매핑을 간단하게 처리할 수 있도록 한다. 사용함으로써 얻을 수 ..
Spring에서 DB에 쿼리를 날리기 위해서 _jdbcTemplate_을 사용하곤 했다. 누군가가 쿼리 편하게 작성하라고 만들었구나 정도로 생각했었다. 하지만, 공부를 하다보니 이 이름에는 정말 크나큰 의미가 있다는 것을 알게 되었고 그 구조에 또 한번 감탄하게 되었다. 이제부터, _jdbcTemplate_라는 객체 지향적으로 DB에 접근할 수 있는 API가 어떻게 만들어졌는지 정리해보고자 한다. 그전에 알아야 하는 개념인 응집도와 결합도에 대해 먼저 살펴보자. 높은 응집도(high cohesion) 높은 응집도란 하나의 모듈, 클래스가 하나의 책임, 관심사에 집중되어 있다는 것이다. 그 외의 관련 없는 책임은 얽혀있지 않다. 이는 클래스 레벨 뿐만이 아니라 패키지나 컴포넌트 등의 영역에서도 마찬가지로 ..
스프링의 기본 예외 처리 방법 Spring은 에러 처리를 위해 기본적으로 _BasicErrorConroller_를 구현해 두었다. 그래서 만약 별도로 에러에 관련된 설정을 해두지 않는다면, WAS에서 _/error_로 에러 요청을 다시 보낸다. 그 흐름은 아래와 같다. _WAS(톰캣)_ ➡️ _필터_ ➡️ _서블릿(DispatcherServlet)_ ➡️ _인터셉터_ ➡️ _컨트롤러_ ➡️ _예외 발생_ ➡️ _인터셉터_ ➡️ _서블릿(DispatcherServlet)_ ➡️ _필터_ ➡️ _WAS(톰캣)_ ➡️ _서블릿(DispatcherServlet)_ ➡️ _인터셉터_ ➡️ _컨트롤러(BasicErrorController)_ 중요한 점은 에러를 처리하기 위해 _WAS_로 갔다가 다시한번 컨트롤러를 ..
공부한 내용 [Spring] Dispatcher-Servlet의 동작 과정을 알아보자. Dispatcher - Servlet이란? Dispatcher Servlet에 앞서, _Servlet_이란 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 뜻한다. 자바의 Servlet은 웹 서버의 성능을 향상시키기 devrepo.tistory.com 소감 _Dispatcher-Servlet_의 자세한 동작 방식, 그리고 코드에 대해 알아볼 수 있어 좋았다.
공부한 내용 [객체지향설계] 좋은 객체에 대한 설계 클래스와 객체 흔히들 붕어빵과 붕어빵 틀, 설계도와 건물과 같은 식으로 클래스와 객체를 설명해왔다. 나 역시 비슷한 수준으로 클래스와 와 객체에 대해 이해하고 있을 뿐이었다. 다만, 그러 devrepo.tistory.com 소감 불변 객체의 중요성과 객체와 클래스의 관계에 대해 알게되었다.
공부한 내용 [Java] 객체 지향 설계 5원칙(SOLID)이란? SOLID 원칙이란? 객체지향 프로그래밍에 있어 반드시 알아야 하는 SOLID 원칙은 자기 자신 클래스 내부의 응집도는 높이고, 타 클래스와의 결합도는 낮추는 것에 초점을 둔다. 이는 클래스에게 독 devrepo.tistory.com [객체지향설계] 객체지향 생활체조 원칙 지키려고 노력하기 객체지향 생활 체조 9원칙 '소트윅스 앤솔러지'라는 책에서는 객체지향 프로그래밍을 보다 잘 하기 위해서 9가지 원칙을 제시한다. 지금까지 공부하고, 직접 사용해본 경험을 바탕으로 각 규칙 devrepo.tistory.com 소감 객체 지향적으로 코드를 작성하는 방법을 공부하고 지금까지 작성했던 코드 작성 방식을 많이 고칠 수 있어 좋았다.
공부한 내용 [Java] 일급 컬렉션과 사용해야 하는 이유에 대하여 일급 컬렉션이란(First Class Collection) 🔲 일급 컬렉션 : Collection을 Wrapping하면서, 그 외 다른 멤버 변수는 없는 상태를 말한다. public class GameRanking { private Map ranks; public GameRanking(Map ranks) { this.ranks = r devrepo.tistory.com 소감 일급 컬렉션이 중요한 이유와 어떤 때에 사용할 수 있는 지 알게되었다.