본문 바로가기

전체 글

(101)
CORS Cross-Origin Resource Sharing 이란 다른 출처의 자원을 공유할 수 있도록 설정하는 권한 체제입니다. Same Origin 이란 Same Origin이란 Sheme, Host, Port 넘버를 체크하여 이가 일치하는것을 의미합니다. Same Origin이 아닐경우 정보 접근에 제한을 두는 것을 SOP(Same Origin Policy)라 합니다. 현상 Angular 와 Spring boot로 개발하던 도중 아래와 같은 에러가 발생하였습니다. 이를 해결하는 방법을 살펴보겠습니다. 1. Spring에서 CORS는 HTTP Header를 통해 요청하는 도메인의 출처를 확인하고 허용하는 방식으로 진행합니다. 이때 설정해야하는 부분은 크게 두부분입니다. 1) WebSecurityConfigu..
equals, hashCode java 에서 동등 비교를 할때 == 이나 equals 를 사용합니다. override 하지 않고 사용한 equals 는 ==과 동일한 역할을 수행합니다. 즉, 주소값을 비교하게 됩니다. 이는 Object 클래스의 equals를 보시면 알 수 있습니다. 따라서 객체의 내용이 같은지 비교하기 위해선 equals를 override하여 재정의해줍니다. equals를 사용하려면 반드시 hashCode()를 함께 Override하여야 합니다. equals만 사용해서 두객체를 같다고 정의해두어도 Collection 계열의 객체에선 같다고 판단하지 않기 때문입니다. HashSet, HashMap과 같은 Collection 계열에서는 hash를 사용하여 동등비교를 수행합니다. equals 와 hashCode를 사용할 ..
Refresh Token Access Token은 일반적으로 유효기간이 있습니다. 유효기간이 만료되게 되면 사용자는 새로운 인증과정을 거쳐야하는 불편함이 있습니다. 이럴때 사용하는것이 'Refresh Token' 입니다. 이에 대한 표준 문서는 아래와 같습니다. tools.ietf.org/html/rfc6749 RFC 6749 - The OAuth 2.0 Authorization Framework [Docs] [txt|pdf] [draft-ietf-oaut...] [Tracker] [Diff1] [Diff2] [IPR] [Errata] Updated by: 8252 PROPOSED STANDARD Errata Exist Internet Engineering Task Force (IETF) D. Hardt, Ed. Request ..
Postman - Bearer 오늘은 Postman에서 token을 사용할 때 token 값을 Header에 넣는 방법에 대해 살펴보겠습니다. 저는 5.5.5 버전을 사용하고 있는데 Bearer 로 인증하는 방식이 기본적으로 제공되어 있지 않았습니다. 그래서 오늘 이 글에서는 bearer 로 인증하는 방식을 작성하도록 하겠습니다. 사실 글을 쓰기에는 너무 간단하긴 하지만 기록하고 기억하기 위해 글을 남깁니다.. 위 그림처럼 Header 의 값에 Key로 Authorization을 입력해주고 value로 인증 토큰을 입력해주면 됩니다. 이때 value에 작성할 토큰 값 앞에 Bearer 를 붙여주기만 하면 Bearer 로 인증할 수 있습니다!
최소신장트리 최소신장트리(Minimum Spanning Tree, MST) 신장트리(Spanning Tree)란 그래프의 모든 노드를 포함하고, 모든 노드가 서로 연결되어 있고, 트리의 속성을 만족하는 그래프를 뜻합니다. 최소신장트리(MST)란 신장트리 가운데 노드 가중치의 합이 최소인 신장트리를 뜻합니다. 노드 사이를 잇는 거리/비용 등을 최소로 하는 그래프를 의미합니다. MST 를 찾아내는 기법에는 크루스칼 알고리즘, 프림 알고리즘이 있습니다.
Optional Java 8버전에서 도입된 Optional에 대해 살펴보겠습니다. 공식 문서에 따르면 반환값이 '없음'을 나타내는 것이 주목적인 라이브러리입니다. orElse() 또한 orElseThrow() 를 사용하여 객체에 값이 없을 경우 이를 처리해주는 방식으로 사용해야합니다. Optional은 필드에 사용할 목적으로 만들어진 것이 아니기 때문에 Optional은 필드로 사용하지 않아야 합니다. orElse Optional 객체가 비어있는 것과 무관하게 반드시 실행됩니다. orElseGet Optional 객체가 비어있으면 실행합니다. 기본 값을 주고자 할 때 사용합니다. orElseThrow Optional 객체가 비어있다면 예외를 던집니다. Java8에서는 매개변수가 필요했지만 Java10에서는 매개변수가 필..
String, StringBuilder, StringBuffer String과 StringBuffer, StringBuilder의 차이점은 String은 immutable(불변), StringBuffer는 mutable(변함)하다는 점입니다. String String 객체는 생성시 할당된 할당된 메모리 공간이 변하지 않습니다. 문자열 연산 -> "a" + "b" 새로운 String 객체를 만들고 새 String 객체에 연결된 문자열을 저장 후 그 객체 참조하도록 합니다. 즉, String 클래스 객체는 Heap 메모리 영역에 생성되며 생성된 객체 내부 내용을 변화시킬 수 없습니다. String 객체는 이러한 이유로 문자열 연산이 많은 경우, 그 성능이 좋지 않습니다. 하지만, Immutable 객체는 동기화에 신경쓰지 않아도 되기때문에(Thread-safe) 내부 데..
Cloud 클라우드 서버를 무심결에 사용하다가 이 서버가 물리적으로 존재하는건가? 하는 의문이 생겼습니다. 오늘 글은 이에 대해 정리해보려합니다. Cloud Computing 이는 인터넷을 통해 서비스 형태로 서버, 스토리지, 네트워크 등을 제공받아 이용하는 방식을 의미합니다. AWS와 같이 프리티어로 1년간 무상제공하는 곳이 있기도 하지만 대부분 사용하려면 돈을 지불해야합니다. 클라우드 서비스는 크게 IaaS, PaaS, SaaS로 나눌 수 있습니다. IaaS Infrastructure as a Service. Infra 자원 서비스 PaaS Platform as a Service. 개발에 필요한 환경을 서비스 SaaS Sofware as a Service. 소프트웨어 서비스 이런 구분 기준으로 사용자가 다뤄야하..