[JAVA] JVM 메모리 구조와 가비지 컬렉션 #1
2022. 1. 16. 19:30
Computer Science/JAVA
면접때 자주 나오는 질문 하나인 JVM 메모리 구조와 가비지 컬렉선에 대해 알아보도록 하자! 우선 JVM의 메모리 구조를 설명하기 위해서는 JVM이 무엇인지 알아야 하고, 자바의 3대 구성요소에 대해 알아야 한다. 자바의 3대 구성 요소 - JDK(Java Development Kit): JRE에서 제공하는 실행 환경과 자바 개발에 필요한 여러가지 명령어와 컴파일러를 포함하는 소프트웨어 - JRE(Java Runtime Enviroment): 자바 소프트웨어를 실행하기 위한 소프트웨어. 클래스 라이브러리, 로더 클래스, JVM을 포함한다. - JVM(Java Virtual Machine): 자바 바이트 코드를 해석하고 실행하는 가상 머신 자바 바이트 코드란? 사용자 언어인 자바와 기계어 사이의 중간 언어..
[Web] REST vs RESTful vs REST API(RESTful API)
2021. 12. 31. 00:49
Computer Science/Web programming
REST REpresentational State Transfer 네트워크 상에서 client와 server 사이의 통신 방식 중 하나이다. URI와 HTTP를 이용한 통신 목적의 아키텍처 스타일 아키텍처? (제약조건을 모두 만족하는 시스템) 아키텍처 스타일이므로 아키텍처 제작 시 사용되는 가이드의 의미로 사용되며 명확히 준수해야 하는 표준은 없다! 여기서 REST는 URI와 HTTP를 이용한 통신 목적의 아키텍처 스타일이라고 했는데, 평소에 URI과 URL의 차이를 헷갈리고 있었기 때문에 한번 짚고 넘어가려고 한다! 💡 URI와 URL의 차이점? URI : 특정 리소스를 식별하는 통합 자원 식별자를 의미. 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스 URL : 흔히 ..
[Web] DTO와 VO의 차이
2021. 12. 17. 14:59
Computer Science/Web programming
스프링을 공부하면서 VO가 있다는 것은 알았지만, DTO만 사용했기 때문에 DTO와 VO의 차이가 무엇인지에 대해 궁금했다. 생각이 난 김에 DTO와 VO의 차이에 대해 간단히 알아보려고 한다. DTO와 VO를 혼용해서 쓰는 경우가 많다. → 왜? core J2EE Patterns이라는 책에서 데이터 전달용 객체를 VO로 정의하다가 TO (현재는 데이터를 의미하는 D를 붙여 DTO로 사용)로 바꾸었기 때문 DTO (Data Transfer Object) 데이터 전달용 계층 간 데이터 교환을 위해 사용하는 객체. DTO에 데이터를 담아 전달한다. 데이터를 담은 private변수들과 이 변수들을 조작할 수 있는 getter&setter 메서드로 구성되어 있다. -> 다른 로직들은 담고 있지 않다! 왜? 순수..
[Web] Spring의 AOP, Interceptor, Filter
2021. 12. 14. 18:06
Computer Science/Web programming
1. AOP (Aspect Oriented Programming) 관점 지향 프로그래밍 Spring에서 각각의 로직들은 비지니스 로직과 부가기능으로 구성된다. 어떤 로직을 기준으로 1) 핵심적인 관점 2) 부가적인 관점으로 관점을 나누어 각각을 모듈화 하겠다는 것! 핵심적인 관점 == 핵심 비지니스 로직 부가적인 관점 == 핵심 로직을 실행하기 위한 부가적인 기능들 (데이터베이스 연결, 로깅, 트랜잭션 처리, 데이터 보호를 위한 암호화, 일괄적인 예외 처리 등) 각각의 로직들에서 계속 반복되어 쓰여지는 코드들 == 흩어진 관심사 (= 횡단 관심사 / 주로 부가기능) 이러한 반복된 코드들을 모듈로 만들어 놓으면 개발 속도가 빨라지고, 유지보수성도 향상됨 이와 같이 흩어진 관심사들을 Aspect로 모듈화 하..