Gson? - 자바 객체 JSON 변환할 때 사용할 수 있는 자바 라이브러리 간단한 사용법 import com.google.gson.Gson; // Java object class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } // Serializing Java object to JSON User user = new User("John Doe", 30); Gson gson = new Gson(); Stri..
분류 전체보기
728x90
싱글톤을 사용하는 이유? 만약 수십~ 수백만건의 요청이 발생하는 서비스에서 기존에 요청마다 인스턴스를 만드는 멀티톤 방식대로 동작하게 둔다면, 초당 생성되는 컨테이너 객체수를 메모리가 견디지 못하고(OOM 발생) 서비스는 큰 장애를 발생시키고 먹통이되고 말것이다. 그러므로 단일 인스턴스를 가지는 싱글톤 패턴을 적용해야한다. 싱글톤 패턴으로 구현하는 경우, 효율적인 메모리 사용이 가능하다. 하지만 공유자원을 동시접근 하는 경우, 동시성 문제가 발생할 수 있기 때문에 이를 유의해서 설계해야만 한다. 순수 java 코드로 싱글톤 패턴을 적용하기에는 실질적인 문제점들이 존재합니다. 싱글톤 패턴을 구현하기 위한 코드가 늘어남 인스턴스를 반환해주는 구현 클래스를 직접 참조해야 하므로 DIP를 위반한다. (OCP 원..
Overloading ? 메서드의 매개변수의 유형과 개수를 다르게 하면서 같은 이름의 메서드를 가지는 것 즉, 확장의 개념이다. void student(String s) -> void student(String s, String person) Overriding? 상위 클래스가 가지고 있는 메서드를 하위 클래스에서 재정의해서 사용하는 것을 오버라이딩이라고 한다. 상속을 하다 보면 하위 클래스에서 똑같은 메서드를 구현하지만 변형이 필요할 때가 있다. 즉, 재정의의 개념이다. //부모 클래스 class Person { public String name; public int age; public void info() { System.out.println("이름은 "+name+", 나이는 "+age+"살"); ..
Spring Framework에서 사용할 수 있는 주석(annotation)에는 다음과 같은 것들이 있습니다 @Component 어노테이션은 Spring Framework에서 사용되는 어노테이션입니다. @Component 어노테이션은 기본적으로 스프링 빈(Bean)이라는 개념에 대한 어노테이션입니다. 스프링 빈은 스프링 컨테이너(Spring Container)에 의해 관리되는 객체입니다. 스프링 컨테이너는 스프링 빈을 생성, 관리하며, 스프링 빈을 주입(Injection)하여 의존성 관계를 관리합니다.@Component 어노테이션을 사용하면, 스프링 빈으로 인식할 수 있도록 할 수 있습니다. @Repository 어노테이션은 Spring Framework에서 사용되는 어노테이션입니다. @Repositor..
Multi Thread ? 일반적으로 하나의 프로세스는 하나의 스레드를 가지고 작업을 수행하게 됩니다. 하지만 멀티 스레드(multi thread)란 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미합니다. Single Thread? 하나의 프로세스에서 오직 하나의 스레드로만 실행한다. 그렇기 때문에, 하나의 레지스터와 스택으로 표현이 가능하다. 병렬적 처리: 멀티 쓰레드는 여러 쓰레드가 동시에 작업을 수행하여 병렬적으로 처리할 수 있습니다. 싱글 쓰레드는 한 번에 한 작업만 처리할 수 있습니다. 자원 공유: 멀티 쓰레드는 공유 메모리를 통해 자원을 공유할 수 있습니다. 싱글 쓰레드는 각각의 작업이 독립적으로 처리되므로 자원을 공유할 수 없습니다. 오류 영향 범위: 멀티 쓰레드..
Index를 생성하는 이유? 인덱스는 데이터베이스에서 테이블의 검색 성능을 높여주는 방법입니다. 관계형 데이터베이스에서는 B+Tree구조로 된 index를 사용하여 검색 속도를 향상시킵니다. 특히 select ~ where 쿼리처럼 특정 데이터를 찾을 때 빠른 속도로 검색할 수 있게 해 줍니다. 중복이 높은 값은 인덱스를 생성하지 않는 것이 크게 의미가 없습니다. 왜냐하면 인덱스의 이점보다 추가 저장공간이나 데이터 수정에 대한 성능 저하가 더 크기 때문입니다. 인덱스는 테이블 크기의 10% 정도의 저장 공간을 차지합니다. '클러스터형 인덱스'와 '보조 인덱스' Clustering index : 특정 컬럼을 기본키로 지정하면 자동으로 인덱스가 생성되고 테이블 자체가 정렬된 인덱스가 됩니다. (컬럼을 기본키..
Spring Security? Spring Security는 Java 애플리케이션에서 인증(authentication)과 권한 부여(authorization)을 제공하는 프레임워크입니다. 이 프레임워크는 애플리케이션에서 사용자의 인증 정보를 검사하고, 권한에 따라 접근을 제어할 수 있도록 해줍니다. Spring Security는 민감한 정보를 보호하고 CSRF(Cross-Site Request Forgery) 및 SQL 주입 공격과 같은 일반적인 보안 위협으로부터 보호하는 기능뿐만 아니라 인증, 권한 부여 및 액세스 제어를 포함한 광범위한 보안 기능을 제공합니다. Spring Security를 사용하면 특정 URL 패턴, 메서드 호출 또는 개별 웹 페이지에 대한 보안 규칙을 정의하여 애플리케이션을 쉽..
OPP의 한계? - 여러 클래스에 로깅이나 보안 및 트랜잭션 등 공통된 기능들이 흩어져 존재한다는 점입니다. 이렇게 어플리케이션 전반에 걸쳐 흩어져있는 공통되는 부가 기능들을 관심사라고 합니다. AOP? 관점 지향 프로그래밍으로 불리며 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누고 그 관점을 기준으로 각각 모듈화 하겠다는 의미입니다. 핵심적인 관점 : 적용하고자 하는 핵심 비즈니스 로직 부가적인 관점 : 로직에 필요한 부가적인 것들 DB연결 및 로깅 등 트랜잭션 관리와 같은 부분이 바로 부가 기능 모듈이며, 이를 Aspect라고 합니다. 핵심 비즈니스 로직을 담고 있지는 않지만 어플리케이션에 부가됨으로써 의미를 갖는 특별한 모듈입니다. AOP는 핵심 비즈니스 로직과 부가 기능 Aspect..
728x90