전체 글 107

SaaS (Software as a Service) ?

SaaS (Software as a Service)는 사용자가 소프트웨어를 설치하지 않고 직접 인터텟에서 사용가능한 소프트웨어를 말한다.구글의 엑셀시트나, 넷플릭스, 깃헙 그리고 흔히 이런저런 광고가 많은 설치없이 바로 할 수 있는 웹게임 같은것도 SaaS라고 할 수 있다.그렇다면 요즘 SaaS가 많이 쓰이고 있는 이유는 무엇이 있을까?우선 이는 요즘 AWS등의 클라우드컴퓨팅의 대세와도 크게 연관이 있다. 수평적 확장이 유연하고 자유로운 클라우드환경과 잘맞는 SaaS가 유용하다고 할 수 있다. 특징 1.초기비용이 낮다사는 형식이 아니라, 구독형식이기 때문에 초기 비용이 낮지만, 장기적으로 사용할 경우 오히려 더 비싸질 수 있다. 2.접근성이 좋다설치하지 않기 때문에 인터넷만 된다면, 어디서든, 그리고 다..

개발공부 2024.11.28

리플렉션 (Reflection)

자바에서는 크게 컴파일타임 -> 런타임 이런식으로 동작을 나눌 수 있다.이때 런타임에 클래스, 메서드, 필드 등의 정보를 동적으로 확인하고 조작할 수 있는 기능을 리플렉션 이라고 한다.주로 java.lang.reflect 패키지에 포함된 클래스와 인터페이스를 통해 제공된다.이를 활용하면 컴파일 시간에 알 수 없는 객체나 클래스의 구조를 런타임에 확인하고 조작할 수 있다. 리플렉션의 주요 기능1.클래스의 정보 탐색- 클래스 이름, 패키지 이름, 수퍼 클래스, 구현 인터페이스 등을 확인 가능.2.필드, 메서드, 생성자 접근- 클래스의 필드, 메서드, 생성자 정보를 가져오고 수정하거나 호출 가능. 3.객체 생성- 클래스의 생성자를 사용하여 객체를 동적으로 생성할 수 있음.4.접근제어 무시- private 접근..

언어/Java 2024.11.26

예외처리 Exception Handling

Spring에서의 예외처리(Exception Handling) 메커니즘 > 프로그램의 비정상적 종료를 막기위해, 예외가 발생한 시점부터 예외처리기가 호출되고 처리되는 과정 예외처리는 3가지 부분으로 나뉜다.1.예외를 발생시키는 과정(throwing) / 2.예외 전파(propagation)  / 3.예외를 처리하는 과정(handling) 1.예외 발생 (Throwing Exception)- 일반적으로 코드 실행 중 예기치 않은 상황이 발생 했을 때 throw 키워드를 사용하여 예외를 발생시킴- 자바에서는 예외를 나타내는 클래스들이 있으며, 예외가 발생한 상황에 따라 적절한 예외 클래스를 선택하여 예외를 발생시킴- 프로그램 실행중 예외가 발생하면 JVM은 해당 예외를 발생시킨 메서드의 호출스택정보를 스택추..

Spring & Boot 2024.11.25

ConcurrentHashMap

Concurrent의 영어 뜻은 돌시발생의, 일치하는, 경쟁상대 등이 있다.즉 동시성을 지닌 해쉬맵이라고 보면 된다.여러 스레드에서 공유해도 안전성을 보장한다는 것이다. 멀티스레드 환경에서 동시성과 성능을 모두 고려하여 설계되었다. 특징1) 멀티스레드 안전 (Thread-Safe)ConcurrentHashMap은 멀티스레드 환경에서 동기화 문제 없이 안전하게 사용할 수 있습니다.내부적으로 동기화를 통해 데이터를 보호하며, 읽기/쓰기 작업을 효율적으로 처리합니다.2) 높은 성능synchronized를 사용하여 전체 맵을 잠그는 대신, 세분화된 잠금(Lock Striping)을 사용합니다.자바 8 이전에는 세그먼트(Segment)라는 구조로 나누어 락을 관리했으며, 자바 8부터는 CAS(Compare-And..

언어/Java 2024.11.23

Optional 옵셔널

Optional 클래스는 자바8부터 도입된 기능으로, 널 포인터 예외(NullPointerException)를 방지하고 더 명시적이고 안정적으로 널값을 다룰 수 있게 해준다. Optional은 널 값을 가질 수 있는 객체를 표현하는 컨테이너이다. 이는 널 값을 가질 수도 있고, 아닐 수도 있다는 것을 나타낸다.이를 사용하면 다음과 같은 3가지 구체적인 장점이 있다. 장점1.널 포인터 예외(NullPointerException)를 방지2.가독성 증가, 및 안정적인 API설계3.다양한 함수를 사용 가능 (filter, map 등) 주의점1.반환값으로 사용하고, 클래스필드에 Optional 사용 자제 (메모리 오버헤드 발생 가능성있음)2.값이 항상 존재할 경우 불필요하게 사용할 필요가 없음3.값을 꺼내는 Op..

언어/Java 2024.11.22

애자일 선언 (Agile Manifesto)

2001년에 소프트웨어 개발자 그룹이 공동으로 작성, 소프트웨어 개발에서의 효율성과 유연성을 강조하는 철학적 원칙과 가치를 명시한 문서로, 정해진 틀에 맞춰서 개발하는 것이 아니라 그때 그때 융통성 있게 대응하며 최선의 결과물을 내는 것을 목표로 하는 것이다.애자일 선언의 4가지 핵심 가치프로세스와 도구보다 개인과 상호작용을 중시합니다.개발의 핵심은 사람이며, 도구와 프로세스는 이를 돕기 위한 수단일 뿐입니다.포괄적인 문서화보다 작동하는 소프트웨어를 중시합니다.문서화보다 중요한 것은 실제로 잘 작동하는 소프트웨어입니다.계약 협상보다 고객과의 협력을 중시합니다.고객과의 협력 및 소통을 통해 더 나은 결과를 도출합니다.계획을 따르기보다 변화에 대응하는 것을 중시합니다.변화는 필연적이므로, 계획을 고수하기보다..

DispatcherServlet 디스패처서블릿

DispatcherServlet 이란?Spring MVC의 핵심 구성요소로, 프론트 컨트롤러(Front Controller) 역할을 한다. 이 Servlet은 모든 HTTP 요청을 중앙에서 제어하고, 요청에 따라 알맞은 핸들러(Controller)를 호출하여 응답하는, Spring MVC에서 Front부분과의 통신에서 핵심적인 역할을 한다. 쉽게 말하면 서버로 들어온 요청을 핸들러매핑에 가져다줘서 어떤 컨트롤러가 처리할지 찾아주게하고, 어떤 응답들을 내보내야하는지?에 대하여 응답을 생성하는 프론트부분쪽의 일을 통제하는 역할을 한다고 볼 수 있다.   DispatcherServlet은 역할의 분리와, 유연성을 위해 2개의 계층구조로 작동한다.아래의 그림에서,1.Servlet WebApplicationCon..

Spring & Boot 2024.11.20

자바 컴파일 과정

자바의 컴파일 과정에 대해 개략적으로 살펴보면 다음과 같다. 1.개발자가 코드를 작성하여 .java 파일을 만듬2.자바컴파일러에 의해 .java파일이 .class파일(바이트코드)로 변환3.클래스 로더에 의해 jvm의 메모리에 .class파일과 각종 라이브러리 적재4.jvm이 올려진 파일 실행 (필요하면 네이티브메소드 호출)5.실행결과출력 이 과정을 자세히 살펴보자. 1. 소스 코드 작성개발자는 .java 확장자를 가진 Java 소스 코드를 작성예: HelloWorld.javapublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); }} 2. 자바 컴파일러..

언어/Java 2024.11.19