본문 바로가기

백엔드/Java86

OAuth2 승인 방식의 종류 Authorization Code Grant Type : 권한 부여 코드 승인 타입 클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용됩니다. 리소스 접근을 위한 사용자 명과 비밀번호, 권한 서버에 요청해서 받은 권한 코드를 함께 활용하여 리소스에 대한 엑세스 토큰을 받는 방식입니다. 이 방식은 Refresh Token의 사용이 가능합니다. 클라이언트가 시스템 서버에 구현되어야 합니다. Implicit Grant Type : 암시적 승인 권한 부여 코드 승인 타입과 다르게 권한 코드 교환 단계 없이 엑세스 토큰을 즉시 반환받아 이를 인증에 이용하는 방식입니다. 이 방식은 Refresh Token 을 사용할 수 없습니다. 클라이언트가 웹브라우저에서 직접 통신을하며 자바스크립트 등의 언어로 .. 2020. 5. 23.
추상 클래스와 인터페이스의 차이점 추상클래스 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우 추상클래스를 상속받은 클래스들이 공통으로 가지는 메소드와 필드가 많거나, public 이외의 접근제어자(protected, private) 사용이 필요한 경우 non-static, non-final 필드 선언이 필요한 경우. 즉, 각 인스턴스에서 state 변경을 위한 메소드를 선언할 수 있다. 인터페이스 서로 관련성이 없는 클래스들이 인터페이스를 구현하게 되는 경우에 사용한다. 예를 들어, Comparable, Cloneable 인터페이스는 여러 클래스들에서 구현되는데, 구현클래스들 간에 관련성이 없는 경우가 대부분이다. 특정 데이터 타입의 행동을 명시하고 싶은데, 어디서 그 행동이 구현되는지는 신경쓰지 않는 경우. 다중상속을 허용하고 싶.. 2020. 5. 5.
멀티스레드 환경에서의 Thread-safe 테스트 멀티스레드 환경에서의 Thread-safe 테스트 스프링 프레임워크의 기본 bean scope 는 singleton 이며, 멀티스레드 환경에서 클래스내의 멤버변수로 인한 데이터가 꼬이는 문제가 발생한다. 가능하면 멤버변수는 DI 를 하는 bean 외에는 사용하지 않는것이 정신 건강에 좋다. 또한, bean scope 를 prototype 으로 구성하면 생명주기를 스프링 프레임워크가 관리하지 않기 때문에 객체 사용이 끝나면 직접 소멸시켜줘야 한다. 그러지 않으면 스레드 락이 생겨 애플리케이션 성능에 심각한 문제가 발생한다. 아래 4개 클래스를 생성후, StaticMethodMultiThreadTest 를 실행하여 멤버변수의 위치에 따른 결과값을 테스트한다. public class Member { Strin.. 2020. 2. 16.
Jedis Pool 최적화 - JedisPool - redis connection pool (레디스 커넥션 풀) https://partners-intl.aliyun.com/help/doc-detail/98726.htm 에 있는 JedisPool optimization 영문 내용을 번역하였습니다. JedisPool optimization - ApsaraDB for Redis - Alibaba Cloud Documentation Center You can set JedisPool parameters to proper values to improve Redis performance. This topic describes how to use JedisPool and configure the resource pool parameters. This topic also describes the recommended settin.. 2020. 2. 2.
StringBuffer vs StringBuilder StringBuffer Thread-Safe 함 StringBuilder Thread-Safe 하지 않음, 단 전역변수(멤버변수)가 아닌 지역변수로 사용할 경우는 문제없음, 즉 메서드 안에서 선언하고 사용하면 안정함. StringBuffer보다 성능이 좋음 2020. 1. 27.
728x90